@dodopayments/better-auth 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +585 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/hooks/customer.d.ts +5 -0
- package/dist/hooks/customer.d.ts.map +1 -0
- package/dist/index.cjs +15379 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1162 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15373 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/checkout.d.ts +304 -0
- package/dist/plugins/checkout.d.ts.map +1 -0
- package/dist/plugins/portal.d.ts +218 -0
- package/dist/plugins/portal.d.ts.map +1 -0
- package/dist/plugins/webhooks.d.ts +45 -0
- package/dist/plugins/webhooks.d.ts.map +1 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../node_modules/uncrypto/dist/crypto.web.mjs","../../../node_modules/better-call/dist/index.js","../../../node_modules/better-auth/dist/shared/better-auth.DdzSJf-n.mjs","../../../node_modules/better-auth/dist/shared/better-auth.CW6D9eSx.mjs","../../../node_modules/better-auth/dist/shared/better-auth.8zoxzg-F.mjs","../../../node_modules/@better-auth/utils/dist/base64.mjs","../../../node_modules/@better-auth/utils/dist/hex.mjs","../../../node_modules/@better-auth/utils/dist/hmac.mjs","../../../node_modules/better-auth/dist/shared/better-auth.tB5eU6EY.mjs","../../../node_modules/better-auth/dist/shared/better-auth.VTXNLFMT.mjs","../../../node_modules/@better-auth/utils/dist/binary.mjs","../../../node_modules/better-auth/dist/cookies/index.mjs","../../../node_modules/@better-auth/utils/dist/random.mjs","../../../node_modules/@better-auth/utils/dist/hash.mjs","../../../node_modules/jose/dist/webapi/lib/buffer_utils.js","../../../node_modules/jose/dist/webapi/lib/base64.js","../../../node_modules/jose/dist/webapi/util/base64url.js","../../../node_modules/jose/dist/webapi/util/errors.js","../../../node_modules/jose/dist/webapi/lib/crypto_key.js","../../../node_modules/jose/dist/webapi/lib/invalid_key_input.js","../../../node_modules/jose/dist/webapi/lib/is_key_like.js","../../../node_modules/jose/dist/webapi/lib/is_disjoint.js","../../../node_modules/jose/dist/webapi/lib/is_object.js","../../../node_modules/jose/dist/webapi/lib/check_key_length.js","../../../node_modules/jose/dist/webapi/lib/jwk_to_key.js","../../../node_modules/jose/dist/webapi/key/import.js","../../../node_modules/jose/dist/webapi/lib/validate_crit.js","../../../node_modules/jose/dist/webapi/lib/validate_algorithms.js","../../../node_modules/jose/dist/webapi/lib/is_jwk.js","../../../node_modules/jose/dist/webapi/lib/normalize_key.js","../../../node_modules/jose/dist/webapi/lib/check_key_type.js","../../../node_modules/jose/dist/webapi/lib/subtle_dsa.js","../../../node_modules/jose/dist/webapi/lib/get_sign_verify_key.js","../../../node_modules/jose/dist/webapi/lib/verify.js","../../../node_modules/jose/dist/webapi/jws/flattened/verify.js","../../../node_modules/jose/dist/webapi/jws/compact/verify.js","../../../node_modules/jose/dist/webapi/lib/epoch.js","../../../node_modules/jose/dist/webapi/lib/secs.js","../../../node_modules/jose/dist/webapi/lib/jwt_claims_set.js","../../../node_modules/jose/dist/webapi/jwt/verify.js","../../../node_modules/jose/dist/webapi/lib/sign.js","../../../node_modules/jose/dist/webapi/jws/flattened/sign.js","../../../node_modules/jose/dist/webapi/jws/compact/sign.js","../../../node_modules/jose/dist/webapi/jwt/sign.js","../../../node_modules/jose/dist/webapi/jwks/local.js","../../../node_modules/jose/dist/webapi/jwks/remote.js","../../../node_modules/jose/dist/webapi/util/decode_protected_header.js","../../../node_modules/jose/dist/webapi/util/decode_jwt.js","../../../node_modules/better-auth/dist/shared/better-auth.B4Qoxdgc.mjs","../../../node_modules/better-auth/dist/shared/better-auth.DPBqdYQ3.mjs","../../../node_modules/better-auth/dist/shared/better-auth.Cqykj82J.mjs","../../../node_modules/@better-fetch/fetch/dist/index.js","../../../node_modules/better-auth/dist/shared/better-auth.DufyW0qf.mjs","../../../node_modules/better-auth/dist/social-providers/index.mjs","../../../node_modules/better-auth/dist/shared/better-auth.BUPPRXfK.mjs","../../../node_modules/better-auth/dist/shared/better-auth.Cc72UxUH.mjs","../../../node_modules/better-auth/dist/shared/better-auth.DDEbWX-S.mjs","../../../node_modules/better-auth/dist/shared/better-auth.cM0Fc3LZ.mjs","../src/hooks/customer.ts","../src/client.ts","../../../node_modules/better-auth/dist/shared/better-auth.ffWeg50w.mjs","../../../node_modules/better-auth/dist/plugins/access/index.mjs","../../../node_modules/better-auth/dist/plugins/organization/access/index.mjs","../../../node_modules/better-auth/dist/shared/better-auth.OuYYTHC7.mjs","../../../node_modules/better-auth/dist/shared/better-auth.xcRi-2W1.mjs","../../../node_modules/better-auth/dist/shared/better-auth.fsvwNeUx.mjs","../src/plugins/portal.ts","../../../node_modules/dodopayments/version.mjs","../../../node_modules/dodopayments/error.mjs","../../../node_modules/dodopayments/_shims/registry.mjs","../../../node_modules/dodopayments/_shims/MultipartBody.mjs","../../../node_modules/dodopayments/_shims/web-runtime.mjs","../../../node_modules/dodopayments/_shims/index.mjs","../../../node_modules/dodopayments/uploads.mjs","../../../node_modules/dodopayments/core.mjs","../../../node_modules/dodopayments/pagination.mjs","../../../node_modules/dodopayments/resource.mjs","../../../node_modules/dodopayments/resources/addons.mjs","../../../node_modules/dodopayments/resources/brands.mjs","../../../node_modules/dodopayments/resources/customers/customer-portal.mjs","../../../node_modules/dodopayments/resources/customers/customers.mjs","../../../node_modules/dodopayments/resources/discounts.mjs","../../../node_modules/dodopayments/resources/disputes.mjs","../../../node_modules/dodopayments/resources/invoices/payments.mjs","../../../node_modules/dodopayments/resources/invoices/invoices.mjs","../../../node_modules/dodopayments/resources/license-key-instances.mjs","../../../node_modules/dodopayments/resources/license-keys.mjs","../../../node_modules/dodopayments/resources/licenses.mjs","../../../node_modules/dodopayments/resources/misc.mjs","../../../node_modules/dodopayments/resources/payments.mjs","../../../node_modules/dodopayments/resources/payouts.mjs","../../../node_modules/dodopayments/resources/products/images.mjs","../../../node_modules/dodopayments/resources/products/products.mjs","../../../node_modules/dodopayments/resources/refunds.mjs","../../../node_modules/dodopayments/resources/subscriptions.mjs","../../../node_modules/dodopayments/resources/webhook-events.mjs","../../../node_modules/dodopayments/index.mjs","../../core/dist/checkout/checkout.js","../src/plugins/checkout.ts","../../core/dist/schemas/webhook.js","../../../node_modules/standardwebhooks/dist/timing_safe_equal.js","../../../node_modules/@stablelib/base64/lib/base64.js","../../../node_modules/fast-sha256/sha256.js","../../../node_modules/standardwebhooks/dist/index.js","../../core/dist/webhook/webhook.js","../src/plugins/webhooks.ts","../src/index.ts"],"sourcesContent":["const webCrypto = globalThis.crypto;\nconst subtle = webCrypto.subtle;\nconst randomUUID = () => {\n return webCrypto.randomUUID();\n};\nconst getRandomValues = (array) => {\n return webCrypto.getRandomValues(array);\n};\nconst _crypto = {\n randomUUID,\n getRandomValues,\n subtle\n};\n\nexport { _crypto as default, getRandomValues, randomUUID, subtle };\n","// src/error.ts\nvar _statusCode = {\n OK: 200,\n CREATED: 201,\n ACCEPTED: 202,\n NO_CONTENT: 204,\n MULTIPLE_CHOICES: 300,\n MOVED_PERMANENTLY: 301,\n FOUND: 302,\n SEE_OTHER: 303,\n NOT_MODIFIED: 304,\n TEMPORARY_REDIRECT: 307,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n PAYMENT_REQUIRED: 402,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n METHOD_NOT_ALLOWED: 405,\n NOT_ACCEPTABLE: 406,\n PROXY_AUTHENTICATION_REQUIRED: 407,\n REQUEST_TIMEOUT: 408,\n CONFLICT: 409,\n GONE: 410,\n LENGTH_REQUIRED: 411,\n PRECONDITION_FAILED: 412,\n PAYLOAD_TOO_LARGE: 413,\n URI_TOO_LONG: 414,\n UNSUPPORTED_MEDIA_TYPE: 415,\n RANGE_NOT_SATISFIABLE: 416,\n EXPECTATION_FAILED: 417,\n \"I'M_A_TEAPOT\": 418,\n MISDIRECTED_REQUEST: 421,\n UNPROCESSABLE_ENTITY: 422,\n LOCKED: 423,\n FAILED_DEPENDENCY: 424,\n TOO_EARLY: 425,\n UPGRADE_REQUIRED: 426,\n PRECONDITION_REQUIRED: 428,\n TOO_MANY_REQUESTS: 429,\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\n INTERNAL_SERVER_ERROR: 500,\n NOT_IMPLEMENTED: 501,\n BAD_GATEWAY: 502,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n HTTP_VERSION_NOT_SUPPORTED: 505,\n VARIANT_ALSO_NEGOTIATES: 506,\n INSUFFICIENT_STORAGE: 507,\n LOOP_DETECTED: 508,\n NOT_EXTENDED: 510,\n NETWORK_AUTHENTICATION_REQUIRED: 511\n};\nvar APIError = class extends Error {\n constructor(status = \"INTERNAL_SERVER_ERROR\", body = void 0, headers = {}, statusCode = typeof status === \"number\" ? status : _statusCode[status]) {\n super(body?.message);\n this.status = status;\n this.body = body;\n this.headers = headers;\n this.statusCode = statusCode;\n this.name = \"APIError\";\n this.status = status;\n this.headers = headers;\n this.statusCode = statusCode;\n this.body = body ? {\n code: body?.message?.toUpperCase().replace(/ /g, \"_\").replace(/[^A-Z0-9_]/g, \"\"),\n ...body\n } : void 0;\n this.stack = \"\";\n }\n};\n\n// src/utils.ts\nasync function getBody(request) {\n const contentType = request.headers.get(\"content-type\") || \"\";\n if (!request.body) {\n return void 0;\n }\n if (contentType.includes(\"application/json\")) {\n return await request.json();\n }\n if (contentType.includes(\"application/x-www-form-urlencoded\")) {\n const formData = await request.formData();\n const result = {};\n formData.forEach((value, key) => {\n result[key] = value.toString();\n });\n return result;\n }\n if (contentType.includes(\"multipart/form-data\")) {\n const formData = await request.formData();\n const result = {};\n formData.forEach((value, key) => {\n result[key] = value;\n });\n return result;\n }\n if (contentType.includes(\"text/plain\")) {\n return await request.text();\n }\n if (contentType.includes(\"application/octet-stream\")) {\n return await request.arrayBuffer();\n }\n if (contentType.includes(\"application/pdf\") || contentType.includes(\"image/\") || contentType.includes(\"video/\")) {\n const blob = await request.blob();\n return blob;\n }\n if (contentType.includes(\"application/stream\") || request.body instanceof ReadableStream) {\n return request.body;\n }\n return await request.text();\n}\nfunction isAPIError(error) {\n return error instanceof APIError || error?.name === \"APIError\";\n}\nfunction tryDecode(str) {\n try {\n return str.includes(\"%\") ? decodeURIComponent(str) : str;\n } catch {\n return str;\n }\n}\n\n// src/to-response.ts\nfunction isJSONSerializable(value) {\n if (value === void 0) {\n return false;\n }\n const t = typeof value;\n if (t === \"string\" || t === \"number\" || t === \"boolean\" || t === null) {\n return true;\n }\n if (t !== \"object\") {\n return false;\n }\n if (Array.isArray(value)) {\n return true;\n }\n if (value.buffer) {\n return false;\n }\n return value.constructor && value.constructor.name === \"Object\" || typeof value.toJSON === \"function\";\n}\nfunction toResponse(data, init) {\n if (data instanceof Response) {\n if (init?.headers instanceof Headers) {\n init.headers.forEach((value, key) => {\n data.headers.set(key, value);\n });\n }\n return data;\n }\n if (data?._flag === \"json\") {\n const routerResponse = data.routerResponse;\n if (routerResponse instanceof Response) {\n return routerResponse;\n }\n return toResponse(data.body, {\n headers: data.headers,\n status: data.status\n });\n }\n if (isAPIError(data)) {\n return toResponse(data.body, {\n status: data.statusCode,\n statusText: data.status.toString(),\n headers: init?.headers || data.headers\n });\n }\n let body = data;\n let headers = new Headers(init?.headers);\n if (!data) {\n if (data === null) {\n body = JSON.stringify(null);\n }\n headers.set(\"content-type\", \"application/json\");\n } else if (typeof data === \"string\") {\n body = data;\n headers.set(\"Content-Type\", \"text/plain\");\n } else if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n body = data;\n headers.set(\"Content-Type\", \"application/octet-stream\");\n } else if (data instanceof Blob) {\n body = data;\n headers.set(\"Content-Type\", data.type || \"application/octet-stream\");\n } else if (data instanceof FormData) {\n body = data;\n } else if (data instanceof URLSearchParams) {\n body = data;\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\n } else if (data instanceof ReadableStream) {\n body = data;\n headers.set(\"Content-Type\", \"application/octet-stream\");\n } else if (isJSONSerializable(data)) {\n body = JSON.stringify(data, (key, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n });\n headers.set(\"Content-Type\", \"application/json\");\n }\n return new Response(body, {\n ...init,\n headers\n });\n}\n\n// src/validator.ts\nasync function runValidation(options, context = {}) {\n let request = {\n body: context.body,\n query: context.query\n };\n if (options.body) {\n const result = await options.body[\"~standard\"].validate(context.body);\n if (result.issues) {\n return {\n data: null,\n error: fromError(result.issues, \"body\")\n };\n }\n request.body = result.value;\n }\n if (options.query) {\n const result = await options.query[\"~standard\"].validate(context.query);\n if (result.issues) {\n return {\n data: null,\n error: fromError(result.issues, \"query\")\n };\n }\n request.query = result.value;\n }\n if (options.requireHeaders && !context.headers) {\n return {\n data: null,\n error: { message: \"Headers is required\" }\n };\n }\n if (options.requireRequest && !context.request) {\n return {\n data: null,\n error: { message: \"Request is required\" }\n };\n }\n return {\n data: request,\n error: null\n };\n}\nfunction fromError(error, validating) {\n const errorMessages = [];\n for (const issue of error) {\n const message = issue.message;\n errorMessages.push(message);\n }\n return {\n message: `Invalid ${validating} parameters`\n };\n}\n\n// src/crypto.ts\nimport { subtle } from \"uncrypto\";\nvar algorithm = { name: \"HMAC\", hash: \"SHA-256\" };\nvar getCryptoKey = async (secret) => {\n const secretBuf = typeof secret === \"string\" ? new TextEncoder().encode(secret) : secret;\n return await subtle.importKey(\"raw\", secretBuf, algorithm, false, [\"sign\", \"verify\"]);\n};\nvar verifySignature = async (base64Signature, value, secret) => {\n try {\n const signatureBinStr = atob(base64Signature);\n const signature = new Uint8Array(signatureBinStr.length);\n for (let i = 0, len = signatureBinStr.length; i < len; i++) {\n signature[i] = signatureBinStr.charCodeAt(i);\n }\n return await subtle.verify(algorithm, secret, signature, new TextEncoder().encode(value));\n } catch (e) {\n return false;\n }\n};\nvar makeSignature = async (value, secret) => {\n const key = await getCryptoKey(secret);\n const signature = await subtle.sign(algorithm.name, key, new TextEncoder().encode(value));\n return btoa(String.fromCharCode(...new Uint8Array(signature)));\n};\nvar signCookieValue = async (value, secret) => {\n const signature = await makeSignature(value, secret);\n value = `${value}.${signature}`;\n value = encodeURIComponent(value);\n return value;\n};\n\n// src/cookies.ts\nvar getCookieKey = (key, prefix) => {\n let finalKey = key;\n if (prefix) {\n if (prefix === \"secure\") {\n finalKey = \"__Secure-\" + key;\n } else if (prefix === \"host\") {\n finalKey = \"__Host-\" + key;\n } else {\n return void 0;\n }\n }\n return finalKey;\n};\nfunction parseCookies(str) {\n if (typeof str !== \"string\") {\n throw new TypeError(\"argument str must be a string\");\n }\n const cookies = /* @__PURE__ */ new Map();\n let index = 0;\n while (index < str.length) {\n const eqIdx = str.indexOf(\"=\", index);\n if (eqIdx === -1) {\n break;\n }\n let endIdx = str.indexOf(\";\", index);\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n const key = str.slice(index, eqIdx).trim();\n if (!cookies.has(key)) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n if (val.codePointAt(0) === 34) {\n val = val.slice(1, -1);\n }\n cookies.set(key, tryDecode(val));\n }\n index = endIdx + 1;\n }\n return cookies;\n}\nvar _serialize = (key, value, opt = {}) => {\n let cookie;\n if (opt?.prefix === \"secure\") {\n cookie = `${`__Secure-${key}`}=${value}`;\n } else if (opt?.prefix === \"host\") {\n cookie = `${`__Host-${key}`}=${value}`;\n } else {\n cookie = `${key}=${value}`;\n }\n if (key.startsWith(\"__Secure-\") && !opt.secure) {\n opt.secure = true;\n }\n if (key.startsWith(\"__Host-\")) {\n if (!opt.secure) {\n opt.secure = true;\n }\n if (opt.path !== \"/\") {\n opt.path = \"/\";\n }\n if (opt.domain) {\n opt.domain = void 0;\n }\n }\n if (opt && typeof opt.maxAge === \"number\" && opt.maxAge >= 0) {\n if (opt.maxAge > 3456e4) {\n throw new Error(\n \"Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.\"\n );\n }\n cookie += `; Max-Age=${Math.floor(opt.maxAge)}`;\n }\n if (opt.domain && opt.prefix !== \"host\") {\n cookie += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n cookie += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (opt.expires.getTime() - Date.now() > 3456e7) {\n throw new Error(\n \"Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.\"\n );\n }\n cookie += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) {\n cookie += \"; HttpOnly\";\n }\n if (opt.secure) {\n cookie += \"; Secure\";\n }\n if (opt.sameSite) {\n cookie += `; SameSite=${opt.sameSite.charAt(0).toUpperCase() + opt.sameSite.slice(1)}`;\n }\n if (opt.partitioned) {\n if (!opt.secure) {\n opt.secure = true;\n }\n cookie += \"; Partitioned\";\n }\n return cookie;\n};\nvar serializeCookie = (key, value, opt) => {\n value = encodeURIComponent(value);\n return _serialize(key, value, opt);\n};\nvar serializeSignedCookie = async (key, value, secret, opt) => {\n value = await signCookieValue(value, secret);\n return _serialize(key, value, opt);\n};\n\n// src/context.ts\nvar createInternalContext = async (context, {\n options,\n path\n}) => {\n const headers = new Headers();\n const { data, error } = await runValidation(options, context);\n if (error) {\n throw new APIError(400, {\n message: error.message,\n code: \"VALIDATION_ERROR\"\n });\n }\n const requestHeaders = \"headers\" in context ? context.headers instanceof Headers ? context.headers : new Headers(context.headers) : \"request\" in context && context.request instanceof Request ? context.request.headers : null;\n const requestCookies = requestHeaders?.get(\"cookie\");\n const parsedCookies = requestCookies ? parseCookies(requestCookies) : void 0;\n const internalContext = {\n ...context,\n body: data.body,\n query: data.query,\n path: context.path || path,\n context: \"context\" in context && context.context ? context.context : {},\n returned: void 0,\n headers: context?.headers,\n request: context?.request,\n params: \"params\" in context ? context.params : void 0,\n method: context.method,\n setHeader: (key, value) => {\n headers.set(key, value);\n },\n getHeader: (key) => {\n if (!requestHeaders) return null;\n return requestHeaders.get(key);\n },\n getCookie: (key, prefix) => {\n const finalKey = getCookieKey(key, prefix);\n if (!finalKey) {\n return null;\n }\n return parsedCookies?.get(finalKey) || null;\n },\n getSignedCookie: async (key, secret, prefix) => {\n const finalKey = getCookieKey(key, prefix);\n if (!finalKey) {\n return null;\n }\n const value = parsedCookies?.get(finalKey);\n if (!value) {\n return null;\n }\n const signatureStartPos = value.lastIndexOf(\".\");\n if (signatureStartPos < 1) {\n return null;\n }\n const signedValue = value.substring(0, signatureStartPos);\n const signature = value.substring(signatureStartPos + 1);\n if (signature.length !== 44 || !signature.endsWith(\"=\")) {\n return null;\n }\n const secretKey = await getCryptoKey(secret);\n const isVerified = await verifySignature(signature, signedValue, secretKey);\n return isVerified ? signedValue : false;\n },\n setCookie: (key, value, options2) => {\n const cookie = serializeCookie(key, value, options2);\n headers.append(\"set-cookie\", cookie);\n return cookie;\n },\n setSignedCookie: async (key, value, secret, options2) => {\n const cookie = await serializeSignedCookie(key, value, secret, options2);\n headers.append(\"set-cookie\", cookie);\n return cookie;\n },\n redirect: (url) => {\n headers.set(\"location\", url);\n return new APIError(\"FOUND\", void 0, headers);\n },\n error: (status, body, headers2) => {\n return new APIError(status, body, headers2);\n },\n json: (json, routerResponse) => {\n if (!context.asResponse) {\n return json;\n }\n return {\n body: routerResponse?.body || json,\n routerResponse,\n _flag: \"json\"\n };\n },\n responseHeaders: headers\n };\n for (const middleware of options.use || []) {\n const response = await middleware({\n ...internalContext,\n returnHeaders: true,\n asResponse: false\n });\n if (response.response) {\n Object.assign(internalContext.context, response.response);\n }\n if (response.headers) {\n response.headers.forEach((value, key) => {\n internalContext.responseHeaders.set(key, value);\n });\n }\n }\n return internalContext;\n};\n\n// src/middleware.ts\nfunction createMiddleware(optionsOrHandler, handler) {\n const internalHandler = async (inputCtx) => {\n const context = inputCtx;\n const _handler = typeof optionsOrHandler === \"function\" ? optionsOrHandler : handler;\n const options = typeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n const internalContext = await createInternalContext(context, {\n options,\n path: \"/\"\n });\n if (!_handler) {\n throw new Error(\"handler must be defined\");\n }\n const response = await _handler(internalContext);\n const headers = internalContext.responseHeaders;\n return context.returnHeaders ? {\n headers,\n response\n } : response;\n };\n internalHandler.options = typeof optionsOrHandler === \"function\" ? {} : optionsOrHandler;\n return internalHandler;\n}\ncreateMiddleware.create = (opts) => {\n function fn(optionsOrHandler, handler) {\n if (typeof optionsOrHandler === \"function\") {\n return createMiddleware(\n {\n use: opts?.use\n },\n optionsOrHandler\n );\n }\n if (!handler) {\n throw new Error(\"Middleware handler is required\");\n }\n const middleware = createMiddleware(\n {\n ...optionsOrHandler,\n method: \"*\",\n use: [...opts?.use || [], ...optionsOrHandler.use || []]\n },\n handler\n );\n return middleware;\n }\n return fn;\n};\n\n// src/endpoint.ts\nvar createEndpoint2 = (path, options, handler) => {\n const internalHandler = async (...inputCtx) => {\n const context = inputCtx[0] || {};\n const internalContext = await createInternalContext(context, {\n options,\n path\n });\n const response = await handler(internalContext).catch(async (e) => {\n if (isAPIError(e)) {\n const onAPIError = options.onAPIError;\n if (onAPIError) {\n await onAPIError(e);\n }\n if (context.asResponse) {\n return e;\n }\n }\n throw e;\n });\n const headers = internalContext.responseHeaders;\n return context.asResponse ? toResponse(response, {\n headers\n }) : context.returnHeaders ? {\n headers,\n response\n } : response;\n };\n internalHandler.options = options;\n internalHandler.path = path;\n return internalHandler;\n};\ncreateEndpoint2.create = (opts) => {\n return (path, options, handler) => {\n return createEndpoint2(\n path,\n {\n ...options,\n use: [...options?.use || [], ...opts?.use || []]\n },\n handler\n );\n };\n};\n\n// src/router.ts\nimport { createRouter as createRou3Router, addRoute, findRoute, findAllRoutes } from \"rou3\";\n\n// node_modules/.pnpm/zod@3.24.1/node_modules/zod/lib/index.mjs\nvar util;\n(function(util2) {\n util2.assertEqual = (val) => val;\n function assertIs(_arg) {\n }\n util2.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util2.assertNever = assertNever;\n util2.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util2.getValidEnumValues = (obj) => {\n const validKeys = util2.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util2.objectValues(filtered);\n };\n util2.objectValues = (obj) => {\n return util2.objectKeys(obj).map(function(e) {\n return obj[e];\n });\n };\n util2.objectKeys = typeof Object.keys === \"function\" ? (obj) => Object.keys(obj) : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util2.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return void 0;\n };\n util2.isInteger = typeof Number.isInteger === \"function\" ? (val) => Number.isInteger(val) : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => typeof val === \"string\" ? `'${val}'` : val).join(separator);\n }\n util2.joinValues = joinValues;\n util2.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function(objectUtil2) {\n objectUtil2.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second\n // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nvar ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\"\n]);\nvar getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\nvar ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\"\n]);\nvar ZodError = class _ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n } else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n } else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n } else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n } else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof _ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n};\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\nvar errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n } else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n } else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n } else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n } else {\n util.assertNever(issue.validation);\n }\n } else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n } else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nvar overrideErrorMap = errorMap;\nfunction getErrorMap() {\n return overrideErrorMap;\n}\nvar makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...issueData.path || []];\n const fullIssue = {\n ...issueData,\n path: fullPath\n };\n if (issueData.message !== void 0) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps.filter((m) => !!m).slice().reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage\n };\n};\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n // contextual error map is first priority\n ctx.schemaErrorMap,\n // then schema-bound map if available\n overrideMap,\n // then global override map\n overrideMap === errorMap ? void 0 : errorMap\n // then global default map\n ].filter((x) => !!x)\n });\n ctx.common.issues.push(issue);\n}\nvar ParseStatus = class _ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value\n });\n }\n return _ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n};\nvar INVALID = Object.freeze({\n status: \"aborted\"\n});\nvar DIRTY = (value) => ({ status: \"dirty\", value });\nvar OK = (value) => ({ status: \"valid\", value });\nvar isAborted = (x) => x.status === \"aborted\";\nvar isDirty = (x) => x.status === \"dirty\";\nvar isValid = (x) => x.status === \"valid\";\nvar isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nvar errorUtil;\n(function(errorUtil2) {\n errorUtil2.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil2.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\nvar _ZodEnum_cache;\nvar _ZodNativeEnum_cache;\nvar ParseInputLazyPath = class {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n } else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n};\nvar handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n } else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n }\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap: errorMap2, invalid_type_error, required_error, description } = params;\n if (errorMap2 && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap2)\n return { errorMap: errorMap2, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nvar ZodType = class {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n };\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n }\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n var _a, _b;\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n };\n } catch (err) {\n if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n } else if (typeof message === \"function\") {\n return message(val);\n } else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val)\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n } else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement }\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data)\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform }\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def)\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(void 0).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n};\nvar cuidRegex = /^c[^\\s-]{8,}$/i;\nvar cuid2Regex = /^[0-9a-z]+$/;\nvar ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\nvar uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nvar nanoidRegex = /^[a-z0-9_-]{21}$/i;\nvar jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nvar durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\nvar emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\nvar _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nvar emojiRegex;\nvar ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nvar ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\nvar ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nvar ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\nvar base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\nvar base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\nvar dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nvar dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n } else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n const base64 = header.replace(/-/g, \"+\").replace(/_/g, \"/\").padEnd(header.length + (4 - header.length % 4) % 4, \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n } catch (_a) {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nvar ZodString = class _ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = void 0;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n } else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n }\n status.dirty();\n }\n } else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n } catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n } else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n } else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n } else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message)\n });\n }\n _addCheck(check) {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message)\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex,\n ...errorUtil.errToObj(message)\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message)\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value,\n ...errorUtil.errToObj(message)\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value,\n ...errorUtil.errToObj(message)\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message)\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message)\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message)\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }]\n });\n }\n toLowerCase() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }]\n });\n }\n toUpperCase() {\n return new _ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }]\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n};\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params)\n });\n};\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / Math.pow(10, decCount);\n}\nvar ZodNumber = class _ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n let ctx = void 0;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new _ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new _ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message)\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message)\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message)\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message)\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || ch.kind === \"multipleOf\" && util.isInteger(ch.value));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n } else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n } else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n};\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params)\n });\n};\nvar ZodBigInt = class _ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n } catch (_a) {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = void 0;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new _ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new _ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n};\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params)\n });\n};\nvar ZodBoolean = class extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params)\n });\n};\nvar ZodDate = class _ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_date\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = void 0;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime())\n };\n }\n _addCheck(check) {\n return new _ZodDate({\n ...this._def,\n checks: [...this._def.checks, check]\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n};\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params)\n });\n};\nvar ZodSymbol = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params)\n });\n};\nvar ZodUndefined = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params)\n });\n};\nvar ZodNull = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params)\n });\n};\nvar ZodAny = class extends ZodType {\n constructor() {\n super(...arguments);\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n};\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params)\n });\n};\nvar ZodUnknown = class extends ZodType {\n constructor() {\n super(...arguments);\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n};\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params)\n });\n};\nvar ZodNever = class extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType\n });\n return INVALID;\n }\n};\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params)\n });\n};\nvar ZodVoid = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n};\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params)\n });\n};\nvar ZodArray = class _ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: tooSmall ? def.exactLength.value : void 0,\n maximum: tooBig ? def.exactLength.value : void 0,\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result2) => {\n return ParseStatus.mergeArray(status, result2);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new _ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) }\n });\n }\n max(maxLength, message) {\n return new _ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) }\n });\n }\n length(len, message) {\n return new _ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) }\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n};\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params)\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape\n });\n } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element)\n });\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n } else {\n return schema;\n }\n}\nvar ZodObject = class _ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n this.nonstrict = this.passthrough;\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return this._cached = { shape, keys };\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx2 = this._getOrReturnCtx(input);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx2.parsedType\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] }\n });\n }\n } else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys\n });\n status.dirty();\n }\n } else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n } else {\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(\n new ParseInputLazyPath(ctx, value, ctx.path, key)\n //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve().then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet\n });\n }\n return syncPairs;\n }).then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...message !== void 0 ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError\n };\n return {\n message: defaultError\n };\n }\n } : {}\n });\n }\n strip() {\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new _ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new _ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation\n })\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new _ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape()\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new _ZodObject({\n ...this._def,\n catchall: index\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => shape\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => shape\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n } else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => newShape\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n } else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new _ZodObject({\n ...this._def,\n shape: () => newShape\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n};\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nvar ZodUnion = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n }),\n ctx: childCtx\n };\n })).then(handleResults);\n } else {\n let dirty = void 0;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n });\n if (result.status === \"valid\") {\n return result;\n } else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues2) => new ZodError(issues2));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n};\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params)\n });\n};\nvar getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n } else if (type instanceof ZodLiteral) {\n return [type.value];\n } else if (type instanceof ZodEnum) {\n return type.options;\n } else if (type instanceof ZodNativeEnum) {\n return util.objectValues(type.enum);\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n } else if (type instanceof ZodUndefined) {\n return [void 0];\n } else if (type instanceof ZodNull) {\n return [null];\n } else if (type instanceof ZodOptional) {\n return [void 0, ...getDiscriminator(type.unwrap())];\n } else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n } else {\n return [];\n }\n};\nvar ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator]\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n const optionsMap = /* @__PURE__ */ new Map();\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new _ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params)\n });\n }\n};\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n } else {\n return { valid: false };\n }\n}\nvar ZodIntersection = class extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n })\n ]).then(([left, right]) => handleParsed(left, right));\n } else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }));\n }\n }\n};\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left,\n right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params)\n });\n};\nvar ZodTuple = class _ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n status.dirty();\n }\n const items = [...ctx.data].map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n }).filter((x) => !!x);\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n } else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new _ZodTuple({\n ...this._def,\n rest\n });\n }\n};\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params)\n });\n};\nvar ZodRecord = class _ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new _ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third)\n });\n }\n return new _ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second)\n });\n }\n};\nvar ZodMap = class extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"]))\n };\n });\n if (ctx.common.async) {\n const finalMap = /* @__PURE__ */ new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n } else {\n const finalMap = /* @__PURE__ */ new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n};\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params)\n });\n};\nvar ZodSet = class _ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements2) {\n const parsedSet = /* @__PURE__ */ new Set();\n for (const element of elements2) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements2) => finalizeSet(elements2));\n } else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new _ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) }\n });\n }\n max(maxSize, message) {\n return new _ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) }\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n};\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params)\n });\n};\nvar ZodFunction = class _ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error\n }\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error\n }\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n const me = this;\n return OK(async function(...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n } else {\n const me = this;\n return OK(function(...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new _ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create())\n });\n }\n returns(returnType) {\n return new _ZodFunction({\n ...this._def,\n returns: returnType\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new _ZodFunction({\n args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params)\n });\n }\n};\nvar ZodLazy = class extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n};\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params)\n });\n};\nvar ZodLiteral = class extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n};\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params)\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params)\n });\n}\nvar ZodEnum = class _ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return _ZodEnum.create(values, {\n ...this._def,\n ...newDef\n });\n }\n exclude(values, newDef = this._def) {\n return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef\n });\n }\n};\n_ZodEnum_cache = /* @__PURE__ */ new WeakMap();\nZodEnum.create = createZodEnum;\nvar ZodNativeEnum = class extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n};\n_ZodNativeEnum_cache = /* @__PURE__ */ new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params)\n });\n};\nvar ZodPromise = class extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap\n });\n }));\n }\n};\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params)\n });\n};\nvar ZodEffects = class extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n } else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n }\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed2) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed2,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n } else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n};\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params)\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params)\n });\n};\nvar ZodOptional = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(void 0);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n};\nvar ZodNullable = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params)\n });\n};\nvar ZodDefault = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n};\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params)\n });\n};\nvar ZodCatch = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n }\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx\n }\n });\n if (isAsync(result)) {\n return result.then((result2) => {\n return {\n status: \"valid\",\n value: result2.status === \"valid\" ? result2.value : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n });\n } else {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n};\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params)\n });\n};\nvar ZodNaN = class extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n};\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params)\n });\n};\nvar BRAND = Symbol(\"zod_brand\");\nvar ZodBranded = class extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n unwrap() {\n return this._def.type;\n }\n};\nvar ZodPipeline = class _ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n } else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n };\n return handleAsync();\n } else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value\n };\n } else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n }\n static create(a, b) {\n return new _ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n });\n }\n};\nvar ZodReadonly = class extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n};\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params)\n });\n};\nvar late = {\n object: ZodObject.lazycreate\n};\nvar ZodFirstPartyTypeKind;\n(function(ZodFirstPartyTypeKind2) {\n ZodFirstPartyTypeKind2[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind2[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind2[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind2[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind2[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind2[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind2[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind2[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind2[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind2[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind2[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind2[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind2[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind2[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind2[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind2[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind2[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind2[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind2[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind2[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind2[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind2[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind2[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind2[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind2[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind2[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind2[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind2[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind2[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind2[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind2[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind2[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind2[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind2[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind2[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind2[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nvar stringType = ZodString.create;\nvar numberType = ZodNumber.create;\nvar nanType = ZodNaN.create;\nvar bigIntType = ZodBigInt.create;\nvar booleanType = ZodBoolean.create;\nvar dateType = ZodDate.create;\nvar symbolType = ZodSymbol.create;\nvar undefinedType = ZodUndefined.create;\nvar nullType = ZodNull.create;\nvar anyType = ZodAny.create;\nvar unknownType = ZodUnknown.create;\nvar neverType = ZodNever.create;\nvar voidType = ZodVoid.create;\nvar arrayType = ZodArray.create;\nvar objectType = ZodObject.create;\nvar strictObjectType = ZodObject.strictCreate;\nvar unionType = ZodUnion.create;\nvar discriminatedUnionType = ZodDiscriminatedUnion.create;\nvar intersectionType = ZodIntersection.create;\nvar tupleType = ZodTuple.create;\nvar recordType = ZodRecord.create;\nvar mapType = ZodMap.create;\nvar setType = ZodSet.create;\nvar functionType = ZodFunction.create;\nvar lazyType = ZodLazy.create;\nvar literalType = ZodLiteral.create;\nvar enumType = ZodEnum.create;\nvar nativeEnumType = ZodNativeEnum.create;\nvar promiseType = ZodPromise.create;\nvar effectsType = ZodEffects.create;\nvar optionalType = ZodOptional.create;\nvar nullableType = ZodNullable.create;\nvar preprocessType = ZodEffects.createWithPreprocess;\nvar pipelineType = ZodPipeline.create;\n\n// src/openapi.ts\nvar paths = {};\nfunction getTypeFromZodType(zodType) {\n switch (zodType.constructor.name) {\n case \"ZodString\":\n return \"string\";\n case \"ZodNumber\":\n return \"number\";\n case \"ZodBoolean\":\n return \"boolean\";\n case \"ZodObject\":\n return \"object\";\n case \"ZodArray\":\n return \"array\";\n default:\n return \"string\";\n }\n}\nfunction getParameters(options) {\n const parameters = [];\n if (options.metadata?.openapi?.parameters) {\n parameters.push(...options.metadata.openapi.parameters);\n return parameters;\n }\n if (options.query instanceof ZodObject) {\n Object.entries(options.query.shape).forEach(([key, value]) => {\n if (value instanceof ZodType) {\n parameters.push({\n name: key,\n in: \"query\",\n schema: {\n type: getTypeFromZodType(value),\n ...\"minLength\" in value && value.minLength ? {\n minLength: value.minLength\n } : {},\n description: value.description\n }\n });\n }\n });\n }\n return parameters;\n}\nfunction getRequestBody(options) {\n if (options.metadata?.openapi?.requestBody) {\n return options.metadata.openapi.requestBody;\n }\n if (!options.body) return void 0;\n if (options.body instanceof ZodObject || options.body instanceof ZodOptional) {\n const shape = options.body.shape;\n if (!shape) return void 0;\n const properties = {};\n const required = [];\n Object.entries(shape).forEach(([key, value]) => {\n if (value instanceof ZodType) {\n properties[key] = {\n type: getTypeFromZodType(value),\n description: value.description\n };\n if (!(value instanceof ZodOptional)) {\n required.push(key);\n }\n }\n });\n return {\n required: options.body instanceof ZodOptional ? false : options.body ? true : false,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties,\n required\n }\n }\n }\n };\n }\n return void 0;\n}\nfunction getResponse(responses) {\n return {\n \"400\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n },\n required: [\"message\"]\n }\n }\n },\n description: \"Bad Request. Usually due to missing parameters, or invalid parameters.\"\n },\n \"401\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n },\n required: [\"message\"]\n }\n }\n },\n description: \"Unauthorized. Due to missing or invalid authentication.\"\n },\n \"403\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n }\n }\n }\n },\n description: \"Forbidden. You do not have permission to access this resource or to perform this action.\"\n },\n \"404\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n }\n }\n }\n },\n description: \"Not Found. The requested resource was not found.\"\n },\n \"429\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n }\n }\n }\n },\n description: \"Too Many Requests. You have exceeded the rate limit. Try again later.\"\n },\n \"500\": {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\"\n }\n }\n }\n }\n },\n description: \"Internal Server Error. This is a problem with the server that you cannot fix.\"\n },\n ...responses\n };\n}\nasync function generator(endpoints, config) {\n const components = {\n schemas: {}\n };\n Object.entries(endpoints).forEach(([_, value]) => {\n const options = value.options;\n if (options.metadata?.SERVER_ONLY) return;\n if (options.method === \"GET\") {\n paths[value.path] = {\n get: {\n tags: [\"Default\", ...options.metadata?.openapi?.tags || []],\n description: options.metadata?.openapi?.description,\n operationId: options.metadata?.openapi?.operationId,\n security: [\n {\n bearerAuth: []\n }\n ],\n parameters: getParameters(options),\n responses: getResponse(options.metadata?.openapi?.responses)\n }\n };\n }\n if (options.method === \"POST\") {\n const body = getRequestBody(options);\n paths[value.path] = {\n post: {\n tags: [\"Default\", ...options.metadata?.openapi?.tags || []],\n description: options.metadata?.openapi?.description,\n operationId: options.metadata?.openapi?.operationId,\n security: [\n {\n bearerAuth: []\n }\n ],\n parameters: getParameters(options),\n ...body ? { requestBody: body } : {\n requestBody: {\n //set body none\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {}\n }\n }\n }\n }\n },\n responses: getResponse(options.metadata?.openapi?.responses)\n }\n };\n }\n });\n const res = {\n openapi: \"3.1.1\",\n info: {\n title: \"Better Auth\",\n description: \"API Reference for your Better Auth Instance\",\n version: \"1.1.0\"\n },\n components,\n security: [\n {\n apiKeyCookie: []\n }\n ],\n servers: [\n {\n url: config?.url\n }\n ],\n tags: [\n {\n name: \"Default\",\n description: \"Default endpoints that are included with Better Auth by default. These endpoints are not part of any plugin.\"\n }\n ],\n paths\n };\n return res;\n}\nvar getHTML = (apiReference, config) => `<!doctype html>\n<html>\n <head>\n <title>Scalar API Reference</title>\n <meta charset=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1\" />\n </head>\n <body>\n <script\n id=\"api-reference\"\n type=\"application/json\">\n ${JSON.stringify(apiReference)}\n </script>\n\t <script>\n var configuration = {\n\t \tfavicon: ${config?.logo ? `data:image/svg+xml;utf8,${encodeURIComponent(config.logo)}` : void 0} ,\n\t \ttheme: ${config?.theme || \"saturn\"},\n metaData: {\n\t\t\ttitle: ${config?.title || \"Open API Reference\"},\n\t\t\tdescription: ${config?.description || \"Better Call Open API\"},\n\t\t}\n }\n document.getElementById('api-reference').dataset.configuration =\n JSON.stringify(configuration)\n </script>\n\t <script src=\"https://cdn.jsdelivr.net/npm/@scalar/api-reference\"></script>\n </body>\n</html>`;\n\n// src/router.ts\nvar createRouter = (endpoints, config) => {\n if (!config?.openapi?.disabled) {\n const openapi = {\n path: \"/api/reference\",\n ...config?.openapi\n };\n endpoints[\"openapi\"] = createEndpoint2(\n openapi.path,\n {\n method: \"GET\"\n },\n async (c) => {\n const schema = await generator(endpoints);\n return new Response(getHTML(schema, openapi.scalar), {\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n );\n }\n const router = createRou3Router();\n const middlewareRouter = createRou3Router();\n for (const endpoint of Object.values(endpoints)) {\n if (!endpoint.options) {\n continue;\n }\n if (endpoint.options?.metadata?.SERVER_ONLY) continue;\n const methods = Array.isArray(endpoint.options?.method) ? endpoint.options.method : [endpoint.options?.method];\n for (const method of methods) {\n addRoute(router, method, endpoint.path, endpoint);\n }\n }\n if (config?.routerMiddleware?.length) {\n for (const { path, middleware } of config.routerMiddleware) {\n addRoute(middlewareRouter, \"*\", path, middleware);\n }\n }\n const processRequest = async (request) => {\n const url = new URL(request.url);\n const path = config?.basePath ? url.pathname.split(config.basePath).reduce((acc, curr, index) => {\n if (index !== 0) {\n if (index > 1) {\n acc.push(`${config.basePath}${curr}`);\n } else {\n acc.push(curr);\n }\n }\n return acc;\n }, []).join(\"\") : url.pathname;\n if (!path?.length) {\n return new Response(null, { status: 404, statusText: \"Not Found\" });\n }\n const route = findRoute(router, request.method, path);\n if (!route?.data) {\n return new Response(null, { status: 404, statusText: \"Not Found\" });\n }\n const query = {};\n url.searchParams.forEach((value, key) => {\n if (key in query) {\n if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [query[key], value];\n }\n } else {\n query[key] = value;\n }\n });\n const handler = route.data;\n const context = {\n path,\n method: request.method,\n headers: request.headers,\n params: route.params ? JSON.parse(JSON.stringify(route.params)) : {},\n request,\n body: handler.options.disableBody ? void 0 : await getBody(handler.options.cloneRequest ? request.clone() : request),\n query,\n _flag: \"router\",\n asResponse: true,\n context: config?.routerContext\n };\n try {\n const middlewareRoutes = findAllRoutes(middlewareRouter, \"*\", path);\n if (middlewareRoutes?.length) {\n for (const { data: middleware, params } of middlewareRoutes) {\n const res = await middleware({\n ...context,\n params,\n asResponse: false\n });\n if (res instanceof Response) return res;\n }\n }\n const response = await handler(context);\n return response;\n } catch (error) {\n if (isAPIError(error)) {\n return toResponse(error);\n }\n console.error(`# SERVER_ERROR: `, error);\n return new Response(null, {\n status: 500,\n statusText: \"Internal Server Error\"\n });\n }\n };\n return {\n handler: async (request) => {\n const onReq = await config?.onRequest?.(request);\n if (onReq instanceof Response) {\n return onReq;\n }\n const req = onReq instanceof Request ? onReq : request;\n const res = await processRequest(req);\n const onRes = await config?.onResponse?.(res);\n if (onRes instanceof Response) {\n return onRes;\n }\n return res;\n },\n endpoints\n };\n};\nexport {\n APIError,\n _statusCode,\n createEndpoint2 as createEndpoint,\n createInternalContext,\n createMiddleware,\n createRouter,\n generator,\n getCookieKey,\n getHTML,\n parseCookies,\n serializeCookie,\n serializeSignedCookie,\n toResponse\n};\n//# sourceMappingURL=index.js.map","class BetterAuthError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = \"BetterAuthError\";\n this.message = message;\n this.cause = cause;\n this.stack = \"\";\n }\n}\nclass MissingDependencyError extends BetterAuthError {\n constructor(pkgName) {\n super(\n `The package \"${pkgName}\" is required. Make sure it is installed.`,\n pkgName\n );\n }\n}\n\nexport { BetterAuthError as B, MissingDependencyError as M };\n","const getDate = (span, unit = \"ms\") => {\n return new Date(Date.now() + (unit === \"sec\" ? span * 1e3 : span));\n};\n\nexport { getDate as g };\n","const _envShim = /* @__PURE__ */ Object.create(null);\nconst _getEnv = (useShim) => globalThis.process?.env || //@ts-expect-error\nglobalThis.Deno?.env.toObject() || //@ts-expect-error\nglobalThis.__env__ || (useShim ? _envShim : globalThis);\nconst env = new Proxy(_envShim, {\n get(_, prop) {\n const env2 = _getEnv();\n return env2[prop] ?? _envShim[prop];\n },\n has(_, prop) {\n const env2 = _getEnv();\n return prop in env2 || prop in _envShim;\n },\n set(_, prop, value) {\n const env2 = _getEnv(true);\n env2[prop] = value;\n return true;\n },\n deleteProperty(_, prop) {\n if (!prop) {\n return false;\n }\n const env2 = _getEnv(true);\n delete env2[prop];\n return true;\n },\n ownKeys() {\n const env2 = _getEnv(true);\n return Object.keys(env2);\n }\n});\nfunction toBoolean(val) {\n return val ? val !== \"false\" : false;\n}\nconst nodeENV = typeof process !== \"undefined\" && process.env && process.env.NODE_ENV || \"\";\nconst isProduction = nodeENV === \"production\";\nconst isDevelopment = nodeENV === \"dev\" || nodeENV === \"development\";\nconst isTest = nodeENV === \"test\" || toBoolean(env.TEST);\n\nexport { isProduction as a, isDevelopment as b, env as e, isTest as i };\n","function getAlphabet(urlSafe) {\n return urlSafe ? \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\" : \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n}\nfunction base64Encode(data, alphabet, padding) {\n let result = \"\";\n let buffer = 0;\n let shift = 0;\n for (const byte of data) {\n buffer = buffer << 8 | byte;\n shift += 8;\n while (shift >= 6) {\n shift -= 6;\n result += alphabet[buffer >> shift & 63];\n }\n }\n if (shift > 0) {\n result += alphabet[buffer << 6 - shift & 63];\n }\n if (padding) {\n const padCount = (4 - result.length % 4) % 4;\n result += \"=\".repeat(padCount);\n }\n return result;\n}\nfunction base64Decode(data, alphabet) {\n const decodeMap = /* @__PURE__ */ new Map();\n for (let i = 0; i < alphabet.length; i++) {\n decodeMap.set(alphabet[i], i);\n }\n const result = [];\n let buffer = 0;\n let bitsCollected = 0;\n for (const char of data) {\n if (char === \"=\")\n break;\n const value = decodeMap.get(char);\n if (value === void 0) {\n throw new Error(`Invalid Base64 character: ${char}`);\n }\n buffer = buffer << 6 | value;\n bitsCollected += 6;\n if (bitsCollected >= 8) {\n bitsCollected -= 8;\n result.push(buffer >> bitsCollected & 255);\n }\n }\n return Uint8Array.from(result);\n}\nconst base64 = {\n encode(data, options = {}) {\n const alphabet = getAlphabet(false);\n const buffer = typeof data === \"string\" ? new TextEncoder().encode(data) : new Uint8Array(data);\n return base64Encode(buffer, alphabet, options.padding ?? true);\n },\n decode(data) {\n if (typeof data !== \"string\") {\n data = new TextDecoder().decode(data);\n }\n const urlSafe = data.includes(\"-\") || data.includes(\"_\");\n const alphabet = getAlphabet(urlSafe);\n return base64Decode(data, alphabet);\n }\n};\nconst base64Url = {\n encode(data, options = {}) {\n const alphabet = getAlphabet(true);\n const buffer = typeof data === \"string\" ? new TextEncoder().encode(data) : new Uint8Array(data);\n return base64Encode(buffer, alphabet, options.padding ?? true);\n },\n decode(data) {\n const urlSafe = data.includes(\"-\") || data.includes(\"_\");\n const alphabet = getAlphabet(urlSafe);\n return base64Decode(data, alphabet);\n }\n};\n\nexport { base64, base64Url };\n","const hexadecimal = \"0123456789abcdef\";\nconst hex = {\n encode: (data) => {\n if (typeof data === \"string\") {\n data = new TextEncoder().encode(data);\n }\n if (data.byteLength === 0) {\n return \"\";\n }\n const buffer = new Uint8Array(data);\n let result = \"\";\n for (const byte of buffer) {\n result += byte.toString(16).padStart(2, \"0\");\n }\n return result;\n },\n decode: (data) => {\n if (!data) {\n return \"\";\n }\n if (typeof data === \"string\") {\n if (data.length % 2 !== 0) {\n throw new Error(\"Invalid hexadecimal string\");\n }\n if (!new RegExp(`^[${hexadecimal}]+$`).test(data)) {\n throw new Error(\"Invalid hexadecimal string\");\n }\n const result = new Uint8Array(data.length / 2);\n for (let i = 0; i < data.length; i += 2) {\n result[i / 2] = parseInt(data.slice(i, i + 2), 16);\n }\n return new TextDecoder().decode(result);\n }\n return new TextDecoder().decode(data);\n }\n};\n\nexport { hex };\n","import { subtle } from 'uncrypto';\nimport { hex } from './hex.mjs';\nimport { base64Url, base64 } from './base64.mjs';\n\nconst createHMAC = (algorithm = \"SHA-256\", encoding = \"none\") => {\n const hmac = {\n importKey: async (key, keyUsage) => {\n return subtle.importKey(\n \"raw\",\n typeof key === \"string\" ? new TextEncoder().encode(key) : key,\n { name: \"HMAC\", hash: { name: algorithm } },\n false,\n [keyUsage]\n );\n },\n sign: async (hmacKey, data) => {\n if (typeof hmacKey === \"string\") {\n hmacKey = await hmac.importKey(hmacKey, \"sign\");\n }\n const signature = await subtle.sign(\n \"HMAC\",\n hmacKey,\n typeof data === \"string\" ? new TextEncoder().encode(data) : data\n );\n if (encoding === \"hex\") {\n return hex.encode(signature);\n }\n if (encoding === \"base64\" || encoding === \"base64url\" || encoding === \"base64urlnopad\") {\n return base64Url.encode(signature, {\n padding: encoding !== \"base64urlnopad\"\n });\n }\n return signature;\n },\n verify: async (hmacKey, data, signature) => {\n if (typeof hmacKey === \"string\") {\n hmacKey = await hmac.importKey(hmacKey, \"verify\");\n }\n if (encoding === \"hex\") {\n signature = hex.decode(signature);\n }\n if (encoding === \"base64\" || encoding === \"base64url\" || encoding === \"base64urlnopad\") {\n signature = await base64.decode(signature);\n }\n return subtle.verify(\n \"HMAC\",\n hmacKey,\n typeof signature === \"string\" ? new TextEncoder().encode(signature) : signature,\n typeof data === \"string\" ? new TextEncoder().encode(data) : data\n );\n }\n };\n return hmac;\n};\n\nexport { createHMAC };\n","function safeJSONParse(data) {\n function reviver(_, value) {\n if (typeof value === \"string\") {\n const iso8601Regex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n if (iso8601Regex.test(value)) {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return date;\n }\n }\n }\n return value;\n }\n try {\n return JSON.parse(data, reviver);\n } catch {\n return null;\n }\n}\n\nexport { safeJSONParse as s };\n","import { e as env } from './better-auth.8zoxzg-F.mjs';\nimport { B as BetterAuthError } from './better-auth.DdzSJf-n.mjs';\n\nfunction checkHasPath(url) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.pathname !== \"/\";\n } catch (error) {\n throw new BetterAuthError(\n `Invalid base URL: ${url}. Please provide a valid base URL.`\n );\n }\n}\nfunction withPath(url, path = \"/api/auth\") {\n const hasPath = checkHasPath(url);\n if (hasPath) {\n return url;\n }\n path = path.startsWith(\"/\") ? path : `/${path}`;\n return `${url.replace(/\\/+$/, \"\")}${path}`;\n}\nfunction getBaseURL(url, path, request) {\n if (url) {\n return withPath(url, path);\n }\n const fromEnv = env.BETTER_AUTH_URL || env.NEXT_PUBLIC_BETTER_AUTH_URL || env.PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_AUTH_URL || (env.BASE_URL !== \"/\" ? env.BASE_URL : void 0);\n if (fromEnv) {\n return withPath(fromEnv, path);\n }\n const fromRequest = request?.headers.get(\"x-forwarded-host\");\n const fromRequestProto = request?.headers.get(\"x-forwarded-proto\");\n if (fromRequest && fromRequestProto) {\n return withPath(`${fromRequestProto}://${fromRequest}`, path);\n }\n if (request) {\n const url2 = getOrigin(request.url);\n if (!url2) {\n throw new BetterAuthError(\n \"Could not get origin from request. Please provide a valid base URL.\"\n );\n }\n return withPath(url2, path);\n }\n if (typeof window !== \"undefined\" && window.location) {\n return withPath(window.location.origin, path);\n }\n return void 0;\n}\nfunction getOrigin(url) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.origin;\n } catch (error) {\n return null;\n }\n}\nfunction getProtocol(url) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.protocol;\n } catch (error) {\n return null;\n }\n}\nfunction getHost(url) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.host;\n } catch (error) {\n return url;\n }\n}\n\nexport { getBaseURL as a, getHost as b, getProtocol as c, getOrigin as g };\n","const decoders = /* @__PURE__ */ new Map();\nconst encoder = new TextEncoder();\nconst binary = {\n decode: (data, encoding = \"utf-8\") => {\n if (!decoders.has(encoding)) {\n decoders.set(encoding, new TextDecoder(encoding));\n }\n const decoder = decoders.get(encoding);\n return decoder.decode(data);\n },\n encode: encoder.encode\n};\n\nexport { binary };\n","import { B as BetterAuthError } from '../shared/better-auth.DdzSJf-n.mjs';\nimport { g as getDate } from '../shared/better-auth.CW6D9eSx.mjs';\nimport { a as isProduction, e as env } from '../shared/better-auth.8zoxzg-F.mjs';\nimport { base64Url } from '@better-auth/utils/base64';\nimport { createHMAC } from '@better-auth/utils/hmac';\nimport { s as safeJSONParse } from '../shared/better-auth.tB5eU6EY.mjs';\nimport { a as getBaseURL } from '../shared/better-auth.VTXNLFMT.mjs';\nimport { binary } from '@better-auth/utils/binary';\n\nconst createTime = (value, format) => {\n const toMilliseconds = () => {\n switch (format) {\n case \"ms\":\n return value;\n case \"s\":\n return value * 1e3;\n case \"m\":\n return value * 1e3 * 60;\n case \"h\":\n return value * 1e3 * 60 * 60;\n case \"d\":\n return value * 1e3 * 60 * 60 * 24;\n case \"w\":\n return value * 1e3 * 60 * 60 * 24 * 7;\n case \"y\":\n return value * 1e3 * 60 * 60 * 24 * 365;\n }\n };\n const time = {\n t: `${value}${format}`,\n value,\n tFormat: format,\n toMilliseconds,\n toSeconds: () => time.toMilliseconds() / 1e3,\n toMinutes: () => time.toSeconds() / 60,\n toHours: () => time.toMinutes() / 60,\n toDays: () => time.toHours() / 24,\n toWeeks: () => time.toDays() / 7,\n toYears: () => time.toDays() / 365,\n getDate: () => new Date(Date.now() + time.toMilliseconds()),\n add: (other) => {\n const otherMs = typeof other === \"string\" ? parseTime(other).toMilliseconds() : other.toMilliseconds();\n return createTime(time.toMilliseconds() + otherMs, \"ms\");\n },\n subtract: (other) => {\n const otherMs = typeof other === \"string\" ? parseTime(other).toMilliseconds() : other.toMilliseconds();\n return createTime(time.toMilliseconds() - otherMs, \"ms\");\n },\n multiply: (factor) => createTime(time.toMilliseconds() * factor, \"ms\"),\n divide: (divisor) => createTime(time.toMilliseconds() / divisor, \"ms\"),\n equals: (other) => {\n const otherMs = typeof other === \"string\" ? parseTime(other).toMilliseconds() : other.toMilliseconds();\n return time.toMilliseconds() === otherMs;\n },\n lessThan: (other) => {\n const otherMs = typeof other === \"string\" ? parseTime(other).toMilliseconds() : other.toMilliseconds();\n return time.toMilliseconds() < otherMs;\n },\n greaterThan: (other) => {\n const otherMs = typeof other === \"string\" ? parseTime(other).toMilliseconds() : other.toMilliseconds();\n return time.toMilliseconds() > otherMs;\n },\n format: (pattern) => {\n const date = time.getDate();\n return pattern.replace(/YYYY|MM|DD|HH|mm|ss/g, (match) => {\n switch (match) {\n case \"YYYY\":\n return date.getFullYear().toString();\n case \"MM\":\n return (date.getMonth() + 1).toString().padStart(2, \"0\");\n case \"DD\":\n return date.getDate().toString().padStart(2, \"0\");\n case \"HH\":\n return date.getHours().toString().padStart(2, \"0\");\n case \"mm\":\n return date.getMinutes().toString().padStart(2, \"0\");\n case \"ss\":\n return date.getSeconds().toString().padStart(2, \"0\");\n default:\n return match;\n }\n });\n },\n fromNow: () => {\n const ms = time.toMilliseconds();\n if (ms < 0) return time.ago();\n if (ms < 1e3) return \"in a few seconds\";\n if (ms < 6e4) return `in ${Math.round(ms / 1e3)} seconds`;\n if (ms < 36e5) return `in ${Math.round(ms / 6e4)} minutes`;\n if (ms < 864e5) return `in ${Math.round(ms / 36e5)} hours`;\n if (ms < 6048e5) return `in ${Math.round(ms / 864e5)} days`;\n if (ms < 26298e5) return `in ${Math.round(ms / 6048e5)} weeks`;\n if (ms < 315576e5) return `in ${Math.round(ms / 26298e5)} months`;\n return `in ${Math.round(ms / 315576e5)} years`;\n },\n ago: () => {\n const ms = -time.toMilliseconds();\n if (ms < 0) return time.fromNow();\n if (ms < 1e3) return \"a few seconds ago\";\n if (ms < 6e4) return `${Math.round(ms / 1e3)} seconds ago`;\n if (ms < 36e5) return `${Math.round(ms / 6e4)} minutes ago`;\n if (ms < 864e5) return `${Math.round(ms / 36e5)} hours ago`;\n if (ms < 6048e5) return `${Math.round(ms / 864e5)} days ago`;\n if (ms < 26298e5) return `${Math.round(ms / 6048e5)} weeks ago`;\n if (ms < 315576e5) return `${Math.round(ms / 26298e5)} months ago`;\n return `${Math.round(ms / 315576e5)} years ago`;\n }\n };\n return time;\n};\nconst parseTime = (time) => {\n const match = time.match(/^(\\d+)(ms|s|m|h|d|w|y)$/);\n if (!match) throw new Error(\"Invalid time format\");\n return createTime(parseInt(match[1]), match[2]);\n};\n\nfunction parseSetCookieHeader(setCookie) {\n const cookies = /* @__PURE__ */ new Map();\n const cookieArray = setCookie.split(\", \");\n cookieArray.forEach((cookieString) => {\n const parts = cookieString.split(\";\").map((part) => part.trim());\n const [nameValue, ...attributes] = parts;\n const [name, ...valueParts] = nameValue.split(\"=\");\n const value = valueParts.join(\"=\");\n if (!name || value === void 0) {\n return;\n }\n const attrObj = { value };\n attributes.forEach((attribute) => {\n const [attrName, ...attrValueParts] = attribute.split(\"=\");\n const attrValue = attrValueParts.join(\"=\");\n const normalizedAttrName = attrName.trim().toLowerCase();\n switch (normalizedAttrName) {\n case \"max-age\":\n attrObj[\"max-age\"] = attrValue ? parseInt(attrValue.trim(), 10) : void 0;\n break;\n case \"expires\":\n attrObj.expires = attrValue ? new Date(attrValue.trim()) : void 0;\n break;\n case \"domain\":\n attrObj.domain = attrValue ? attrValue.trim() : void 0;\n break;\n case \"path\":\n attrObj.path = attrValue ? attrValue.trim() : void 0;\n break;\n case \"secure\":\n attrObj.secure = true;\n break;\n case \"httponly\":\n attrObj.httponly = true;\n break;\n case \"samesite\":\n attrObj.samesite = attrValue ? attrValue.trim().toLowerCase() : void 0;\n break;\n default:\n attrObj[normalizedAttrName] = attrValue ? attrValue.trim() : true;\n break;\n }\n });\n cookies.set(name, attrObj);\n });\n return cookies;\n}\nfunction setCookieToHeader(headers) {\n return (context) => {\n const setCookieHeader = context.response.headers.get(\"set-cookie\");\n if (!setCookieHeader) {\n return;\n }\n const cookieMap = /* @__PURE__ */ new Map();\n const existingCookiesHeader = headers.get(\"cookie\") || \"\";\n existingCookiesHeader.split(\";\").forEach((cookie) => {\n const [name, ...rest] = cookie.trim().split(\"=\");\n if (name && rest.length > 0) {\n cookieMap.set(name, rest.join(\"=\"));\n }\n });\n const setCookieHeaders = setCookieHeader.split(\",\");\n setCookieHeaders.forEach((header) => {\n const cookies = parseSetCookieHeader(header);\n cookies.forEach((value, name) => {\n cookieMap.set(name, value.value);\n });\n });\n const updatedCookies = Array.from(cookieMap.entries()).map(([name, value]) => `${name}=${value}`).join(\"; \");\n headers.set(\"cookie\", updatedCookies);\n };\n}\n\nfunction createCookieGetter(options) {\n const secure = options.advanced?.useSecureCookies !== void 0 ? options.advanced?.useSecureCookies : options.baseURL !== void 0 ? options.baseURL.startsWith(\"https://\") ? true : false : isProduction;\n const secureCookiePrefix = secure ? \"__Secure-\" : \"\";\n const crossSubdomainEnabled = !!options.advanced?.crossSubDomainCookies?.enabled;\n const domain = crossSubdomainEnabled ? options.advanced?.crossSubDomainCookies?.domain || (options.baseURL ? new URL(options.baseURL).hostname : void 0) : void 0;\n if (crossSubdomainEnabled && !domain) {\n throw new BetterAuthError(\n \"baseURL is required when crossSubdomainCookies are enabled\"\n );\n }\n function createCookie(cookieName, overrideAttributes = {}) {\n const prefix = options.advanced?.cookiePrefix || \"better-auth\";\n const name = options.advanced?.cookies?.[cookieName]?.name || `${prefix}.${cookieName}`;\n const attributes = options.advanced?.cookies?.[cookieName]?.attributes;\n return {\n name: `${secureCookiePrefix}${name}`,\n attributes: {\n secure: !!secureCookiePrefix,\n sameSite: \"lax\",\n path: \"/\",\n httpOnly: true,\n ...crossSubdomainEnabled ? { domain } : {},\n ...options.advanced?.defaultCookieAttributes,\n ...overrideAttributes,\n ...attributes\n }\n };\n }\n return createCookie;\n}\nfunction getCookies(options) {\n const createCookie = createCookieGetter(options);\n const sessionMaxAge = options.session?.expiresIn || createTime(7, \"d\").toSeconds();\n const sessionToken = createCookie(\"session_token\", {\n maxAge: sessionMaxAge\n });\n const sessionData = createCookie(\"session_data\", {\n maxAge: options.session?.cookieCache?.maxAge || 60 * 5\n });\n const dontRememberToken = createCookie(\"dont_remember\");\n return {\n sessionToken: {\n name: sessionToken.name,\n options: sessionToken.attributes\n },\n /**\n * This cookie is used to store the session data in the cookie\n * This is useful for when you want to cache the session in the cookie\n */\n sessionData: {\n name: sessionData.name,\n options: sessionData.attributes\n },\n dontRememberToken: {\n name: dontRememberToken.name,\n options: dontRememberToken.attributes\n }\n };\n}\nasync function setCookieCache(ctx, session) {\n const shouldStoreSessionDataInCookie = ctx.context.options.session?.cookieCache?.enabled;\n if (shouldStoreSessionDataInCookie) {\n const filteredSession = Object.entries(session.session).reduce(\n (acc, [key, value]) => {\n const fieldConfig = ctx.context.options.session?.additionalFields?.[key];\n if (!fieldConfig || fieldConfig.returned !== false) {\n acc[key] = value;\n }\n return acc;\n },\n {}\n );\n const sessionData = { session: filteredSession, user: session.user };\n const data = base64Url.encode(\n JSON.stringify({\n session: sessionData,\n expiresAt: getDate(\n ctx.context.authCookies.sessionData.options.maxAge || 60,\n \"sec\"\n ).getTime(),\n signature: await createHMAC(\"SHA-256\", \"base64urlnopad\").sign(\n ctx.context.secret,\n JSON.stringify({\n ...sessionData,\n expiresAt: getDate(\n ctx.context.authCookies.sessionData.options.maxAge || 60,\n \"sec\"\n ).getTime()\n })\n )\n }),\n {\n padding: false\n }\n );\n if (data.length > 4093) {\n throw new BetterAuthError(\n \"Session data is too large to store in the cookie. Please disable session cookie caching or reduce the size of the session data\"\n );\n }\n ctx.setCookie(\n ctx.context.authCookies.sessionData.name,\n data,\n ctx.context.authCookies.sessionData.options\n );\n }\n}\nasync function setSessionCookie(ctx, session, dontRememberMe, overrides) {\n const dontRememberMeCookie = await ctx.getSignedCookie(\n ctx.context.authCookies.dontRememberToken.name,\n ctx.context.secret\n );\n dontRememberMe = dontRememberMe !== void 0 ? dontRememberMe : !!dontRememberMeCookie;\n const options = ctx.context.authCookies.sessionToken.options;\n const maxAge = dontRememberMe ? void 0 : ctx.context.sessionConfig.expiresIn;\n await ctx.setSignedCookie(\n ctx.context.authCookies.sessionToken.name,\n session.session.token,\n ctx.context.secret,\n {\n ...options,\n maxAge,\n ...overrides\n }\n );\n if (dontRememberMe) {\n await ctx.setSignedCookie(\n ctx.context.authCookies.dontRememberToken.name,\n \"true\",\n ctx.context.secret,\n ctx.context.authCookies.dontRememberToken.options\n );\n }\n await setCookieCache(ctx, session);\n ctx.context.setNewSession(session);\n if (ctx.context.options.secondaryStorage) {\n await ctx.context.secondaryStorage?.set(\n session.session.token,\n JSON.stringify({\n user: session.user,\n session: session.session\n }),\n Math.floor(\n (new Date(session.session.expiresAt).getTime() - Date.now()) / 1e3\n )\n );\n }\n}\nfunction deleteSessionCookie(ctx, skipDontRememberMe) {\n ctx.setCookie(ctx.context.authCookies.sessionToken.name, \"\", {\n ...ctx.context.authCookies.sessionToken.options,\n maxAge: 0\n });\n ctx.setCookie(ctx.context.authCookies.sessionData.name, \"\", {\n ...ctx.context.authCookies.sessionData.options,\n maxAge: 0\n });\n if (!skipDontRememberMe) {\n ctx.setCookie(ctx.context.authCookies.dontRememberToken.name, \"\", {\n ...ctx.context.authCookies.dontRememberToken.options,\n maxAge: 0\n });\n }\n}\nfunction parseCookies(cookieHeader) {\n const cookies = cookieHeader.split(\"; \");\n const cookieMap = /* @__PURE__ */ new Map();\n cookies.forEach((cookie) => {\n const [name, value] = cookie.split(\"=\");\n cookieMap.set(name, value);\n });\n return cookieMap;\n}\nconst getSessionCookie = (request, config) => {\n if (config?.cookiePrefix) {\n if (config.cookieName) {\n config.cookiePrefix = `${config.cookiePrefix}-`;\n } else {\n config.cookiePrefix = `${config.cookiePrefix}.`;\n }\n }\n const headers = \"headers\" in request ? request.headers : request;\n const req = request instanceof Request ? request : void 0;\n getBaseURL(req?.url, config?.path, req);\n const cookies = headers.get(\"cookie\");\n if (!cookies) {\n return null;\n }\n const { cookieName = \"session_token\", cookiePrefix = \"better-auth.\" } = config || {};\n const name = `${cookiePrefix}${cookieName}`;\n const secureCookieName = `__Secure-${name}`;\n const parsedCookie = parseCookies(cookies);\n const sessionToken = parsedCookie.get(name) || parsedCookie.get(secureCookieName);\n if (sessionToken) {\n return sessionToken;\n }\n return null;\n};\nconst getCookieCache = async (request, config) => {\n const headers = request instanceof Headers ? request : request.headers;\n const cookies = headers.get(\"cookie\");\n if (!cookies) {\n return null;\n }\n const { cookieName = \"session_data\", cookiePrefix = \"better-auth\" } = config || {};\n const name = config?.isSecure !== void 0 ? config.isSecure ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}` : isProduction ? `__Secure-${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}`;\n const parsedCookie = parseCookies(cookies);\n const sessionData = parsedCookie.get(name);\n if (sessionData) {\n const sessionDataPayload = safeJSONParse(binary.decode(base64Url.decode(sessionData)));\n if (!sessionDataPayload) {\n return null;\n }\n const secret = config?.secret || env.BETTER_AUTH_SECRET;\n if (!secret) {\n throw new BetterAuthError(\n \"getCookieCache requires a secret to be provided. Either pass it as an option or set the BETTER_AUTH_SECRET environment variable\"\n );\n }\n const isValid = await createHMAC(\"SHA-256\", \"base64urlnopad\").verify(\n secret,\n JSON.stringify({\n ...sessionDataPayload.session,\n expiresAt: sessionDataPayload.expiresAt\n }),\n sessionDataPayload.signature\n );\n if (!isValid) {\n return null;\n }\n return sessionDataPayload.session;\n }\n return null;\n};\n\nexport { createCookieGetter, deleteSessionCookie, getCookieCache, getCookies, getSessionCookie, parseCookies, parseSetCookieHeader, setCookieCache, setCookieToHeader, setSessionCookie };\n","import { getRandomValues } from 'uncrypto';\n\nfunction expandAlphabet(alphabet) {\n switch (alphabet) {\n case \"a-z\":\n return \"abcdefghijklmnopqrstuvwxyz\";\n case \"A-Z\":\n return \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n case \"0-9\":\n return \"0123456789\";\n case \"-_\":\n return \"-_\";\n default:\n throw new Error(`Unsupported alphabet: ${alphabet}`);\n }\n}\nfunction createRandomStringGenerator(...baseAlphabets) {\n const baseCharSet = baseAlphabets.map(expandAlphabet).join(\"\");\n if (baseCharSet.length === 0) {\n throw new Error(\n \"No valid characters provided for random string generation.\"\n );\n }\n const baseCharSetLength = baseCharSet.length;\n return (length, ...alphabets) => {\n if (length <= 0) {\n throw new Error(\"Length must be a positive integer.\");\n }\n let charSet = baseCharSet;\n let charSetLength = baseCharSetLength;\n if (alphabets.length > 0) {\n charSet = alphabets.map(expandAlphabet).join(\"\");\n charSetLength = charSet.length;\n }\n const maxValid = Math.floor(256 / charSetLength) * charSetLength;\n const buf = new Uint8Array(length * 2);\n const bufLength = buf.length;\n let result = \"\";\n let bufIndex = bufLength;\n let rand;\n while (result.length < length) {\n if (bufIndex >= bufLength) {\n getRandomValues(buf);\n bufIndex = 0;\n }\n rand = buf[bufIndex++];\n if (rand < maxValid) {\n result += charSet[rand % charSetLength];\n }\n }\n return result;\n };\n}\n\nexport { createRandomStringGenerator };\n","import { subtle } from 'uncrypto';\nimport { base64Url, base64 } from './base64.mjs';\n\nfunction createHash(algorithm, encoding) {\n return {\n digest: async (input) => {\n const encoder = new TextEncoder();\n const data = typeof input === \"string\" ? encoder.encode(input) : input;\n const hashBuffer = await subtle.digest(algorithm, data);\n if (encoding === \"hex\") {\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n return hashHex;\n }\n if (encoding === \"base64\" || encoding === \"base64url\" || encoding === \"base64urlnopad\") {\n if (encoding.includes(\"url\")) {\n return base64Url.encode(hashBuffer, {\n padding: encoding !== \"base64urlnopad\"\n });\n }\n const hashBase64 = base64.encode(hashBuffer);\n return hashBase64;\n }\n return hashBuffer;\n }\n };\n}\n\nexport { createHash };\n","export const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\n","export function encodeBase64(input) {\n if (Uint8Array.prototype.toBase64) {\n return input.toBase64();\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < input.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n}\nexport function decodeBase64(encoded) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(encoded);\n }\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nimport { encodeBase64, decodeBase64 } from '../lib/base64.js';\nexport function decode(input) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), {\n alphabet: 'base64url',\n });\n }\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n}\nexport function encode(input) {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n if (Uint8Array.prototype.toBase64) {\n return unencoded.toBase64({ alphabet: 'base64url', omitPadding: true });\n }\n return encodeBase64(unencoded).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","export class JOSEError extends Error {\n static code = 'ERR_JOSE_GENERIC';\n code = 'ERR_JOSE_GENERIC';\n constructor(message, options) {\n super(message, options);\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n static code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n claim;\n reason;\n payload;\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JWTExpired extends JOSEError {\n static code = 'ERR_JWT_EXPIRED';\n code = 'ERR_JWT_EXPIRED';\n claim;\n reason;\n payload;\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n static code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n}\nexport class JOSENotSupported extends JOSEError {\n static code = 'ERR_JOSE_NOT_SUPPORTED';\n code = 'ERR_JOSE_NOT_SUPPORTED';\n}\nexport class JWEDecryptionFailed extends JOSEError {\n static code = 'ERR_JWE_DECRYPTION_FAILED';\n code = 'ERR_JWE_DECRYPTION_FAILED';\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n }\n}\nexport class JWEInvalid extends JOSEError {\n static code = 'ERR_JWE_INVALID';\n code = 'ERR_JWE_INVALID';\n}\nexport class JWSInvalid extends JOSEError {\n static code = 'ERR_JWS_INVALID';\n code = 'ERR_JWS_INVALID';\n}\nexport class JWTInvalid extends JOSEError {\n static code = 'ERR_JWT_INVALID';\n code = 'ERR_JWT_INVALID';\n}\nexport class JWKInvalid extends JOSEError {\n static code = 'ERR_JWK_INVALID';\n code = 'ERR_JWK_INVALID';\n}\nexport class JWKSInvalid extends JOSEError {\n static code = 'ERR_JWKS_INVALID';\n code = 'ERR_JWKS_INVALID';\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n static code = 'ERR_JWKS_NO_MATCHING_KEY';\n code = 'ERR_JWKS_NO_MATCHING_KEY';\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n [Symbol.asyncIterator];\n static code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n }\n}\nexport class JWKSTimeout extends JOSEError {\n static code = 'ERR_JWKS_TIMEOUT';\n code = 'ERR_JWKS_TIMEOUT';\n constructor(message = 'request timed out', options) {\n super(message, options);\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n static code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n }\n}\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usage) {\n if (usage && !key.usages.includes(usage)) {\n throw new TypeError(`CryptoKey does not support this operation, its usages must include ${usage}.`);\n }\n}\nexport function checkSigCryptoKey(key, alg, usage) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'Ed25519':\n case 'EdDSA': {\n if (!isAlgorithm(key.algorithm, 'Ed25519'))\n throw unusable('Ed25519');\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usage);\n}\nexport function checkEncCryptoKey(key, alg, usage) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n break;\n default:\n throw unusable('ECDH or X25519');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usage);\n}\n","function message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","export function assertCryptoKey(key) {\n if (!isCryptoKey(key)) {\n throw new Error('CryptoKey instance expected');\n }\n}\nexport function isCryptoKey(key) {\n return key?.[Symbol.toStringTag] === 'CryptoKey';\n}\nexport function isKeyObject(key) {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n}\nexport default (key) => {\n return isCryptoKey(key) || isKeyObject(key);\n};\n","export default (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default (input) => {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n};\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'Ed25519':\n case 'EdDSA':\n algorithm = { name: 'Ed25519' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nexport default async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, algorithm, jwk.ext ?? (jwk.d ? false : true), jwk.key_ops ?? keyUsages);\n};\n","import { decode as decodeBase64URL } from '../util/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../lib/asn1.js';\nimport toCryptoKey from '../lib/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg, options) {\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n let ext;\n alg ??= jwk.alg;\n ext ??= options?.extractable ?? jwk.ext;\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if ('oth' in jwk && jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return toCryptoKey({ ...jwk, alg, ext });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js';\nexport default (Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) => {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n};\n","export default (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n return key.kty === 'oct' && typeof key.k === 'string';\n}\n","import { isJWK } from './is_jwk.js';\nimport { decode } from '../util/base64url.js';\nimport importJWK from './jwk_to_key.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nlet cache;\nconst handleJWK = async (key, jwk, alg, freeze = false) => {\n cache ||= new WeakMap();\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst handleKeyObject = (keyObject, alg) => {\n cache ||= new WeakMap();\n let cached = cache.get(keyObject);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const isPublic = keyObject.type === 'public';\n const extractable = isPublic ? true : false;\n let cryptoKey;\n if (keyObject.asymmetricKeyType === 'x25519') {\n switch (alg) {\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n break;\n default:\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : ['deriveBits']);\n }\n if (keyObject.asymmetricKeyType === 'ed25519') {\n if (alg !== 'EdDSA' && alg !== 'Ed25519') {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n isPublic ? 'verify' : 'sign',\n ]);\n }\n if (keyObject.asymmetricKeyType === 'rsa') {\n let hash;\n switch (alg) {\n case 'RSA-OAEP':\n hash = 'SHA-1';\n break;\n case 'RS256':\n case 'PS256':\n case 'RSA-OAEP-256':\n hash = 'SHA-256';\n break;\n case 'RS384':\n case 'PS384':\n case 'RSA-OAEP-384':\n hash = 'SHA-384';\n break;\n case 'RS512':\n case 'PS512':\n case 'RSA-OAEP-512':\n hash = 'SHA-512';\n break;\n default:\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (alg.startsWith('RSA-OAEP')) {\n return keyObject.toCryptoKey({\n name: 'RSA-OAEP',\n hash,\n }, extractable, isPublic ? ['encrypt'] : ['decrypt']);\n }\n cryptoKey = keyObject.toCryptoKey({\n name: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n hash,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (keyObject.asymmetricKeyType === 'ec') {\n const nist = new Map([\n ['prime256v1', 'P-256'],\n ['secp384r1', 'P-384'],\n ['secp521r1', 'P-521'],\n ]);\n const namedCurve = nist.get(keyObject.asymmetricKeyDetails?.namedCurve);\n if (!namedCurve) {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (alg === 'ES256' && namedCurve === 'P-256') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg === 'ES384' && namedCurve === 'P-384') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg === 'ES512' && namedCurve === 'P-521') {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDSA',\n namedCurve,\n }, extractable, [isPublic ? 'verify' : 'sign']);\n }\n if (alg.startsWith('ECDH-ES')) {\n cryptoKey = keyObject.toCryptoKey({\n name: 'ECDH',\n namedCurve,\n }, extractable, isPublic ? [] : ['deriveBits']);\n }\n }\n if (!cryptoKey) {\n throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n }\n if (!cached) {\n cache.set(keyObject, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nexport default async (key, alg) => {\n if (key instanceof Uint8Array) {\n return key;\n }\n if (isCryptoKey(key)) {\n return key;\n }\n if (isKeyObject(key)) {\n if (key.type === 'secret') {\n return key.export();\n }\n if ('toCryptoKey' in key && typeof key.toCryptoKey === 'function') {\n try {\n return handleKeyObject(key, alg);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n }\n }\n let jwk = key.export({ format: 'jwk' });\n return handleJWK(key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k) {\n return decode(key.k);\n }\n return handleJWK(key, key, alg, true);\n }\n throw new Error('unreachable');\n};\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike from './is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined) {\n let expected;\n switch (usage) {\n case 'sign':\n case 'verify':\n expected = 'sig';\n break;\n case 'encrypt':\n case 'decrypt':\n expected = 'enc';\n break;\n }\n if (key.use !== expected) {\n throw new TypeError(`Invalid key for this operation, its \"use\" must be \"${expected}\" when present`);\n }\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, its \"alg\" must be \"${alg}\" when present`);\n }\n if (Array.isArray(key.key_ops)) {\n let expectedKeyOp;\n switch (true) {\n case usage === 'sign' || usage === 'verify':\n case alg === 'dir':\n case alg.includes('CBC-HS'):\n expectedKeyOp = usage;\n break;\n case alg.startsWith('PBES2'):\n expectedKeyOp = 'deriveBits';\n break;\n case /^A\\d{3}(?:GCM)?(?:KW)?$/.test(alg):\n if (!alg.includes('GCM') && alg.endsWith('KW')) {\n expectedKeyOp = usage === 'encrypt' ? 'wrapKey' : 'unwrapKey';\n }\n else {\n expectedKeyOp = usage;\n }\n break;\n case usage === 'encrypt' && alg.startsWith('RSA'):\n expectedKeyOp = 'wrapKey';\n break;\n case usage === 'decrypt':\n expectedKeyOp = alg.startsWith('RSA') ? 'unwrapKey' : 'deriveBits';\n break;\n }\n if (expectedKeyOp && key.key_ops?.includes?.(expectedKeyOp) === false) {\n throw new TypeError(`Invalid key for this operation, its \"key_ops\" must include \"${expectedKeyOp}\" when present`);\n }\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage) => {\n if (key instanceof Uint8Array)\n return;\n if (jwk.isJWK(key)) {\n if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key', 'Uint8Array'));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n if (jwk.isJWK(key)) {\n switch (usage) {\n case 'decrypt':\n case 'sign':\n if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'encrypt':\n case 'verify':\n if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (key.type === 'public') {\n switch (usage) {\n case 'sign':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n case 'decrypt':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n default:\n break;\n }\n }\n if (key.type === 'private') {\n switch (usage) {\n case 'verify':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n case 'encrypt':\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n default:\n break;\n }\n }\n};\nexport default (alg, key, usage) => {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A(?:128|192|256)(?:GCM)?(?:KW)?$/.test(alg) ||\n /^A(?:128|192|256)CBC-HS(?:256|384|512)$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage);\n }\n else {\n asymmetricTypeCheck(alg, key, usage);\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default (alg, algorithm) => {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: parseInt(alg.slice(-3), 10) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'Ed25519':\n case 'EdDSA':\n return { name: 'Ed25519' };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n};\n","import { checkSigCryptoKey } from './crypto_key.js';\nimport invalidKeyInput from './invalid_key_input.js';\nexport default async (alg, key, usage) => {\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n checkSigCryptoKey(key, alg, usage);\n return key;\n};\n","import subtleAlgorithm from './subtle_dsa.js';\nimport checkKeyLength from './check_key_length.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nexport default async (alg, key, signature, data) => {\n const cryptoKey = await getVerifyKey(alg, key, 'verify');\n checkKeyLength(alg, cryptoKey);\n const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n try {\n return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n }\n catch {\n return false;\n }\n};\n","import { decode as b64u } from '../../util/base64url.js';\nimport verify from '../../lib/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport checkKeyType from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nimport normalizeKey from '../../lib/normalize_key.js';\nexport async function flattenedVerify(jws, key, options) {\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = b64u(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n }\n checkKeyType(alg, key, 'verify');\n const data = concat(encoder.encode(jws.protected ?? ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n let signature;\n try {\n signature = b64u(jws.signature);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the signature');\n }\n const k = await normalizeKey(key, alg);\n const verified = await verify(alg, k, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n try {\n payload = b64u(jws.payload);\n }\n catch {\n throw new JWSInvalid('Failed to base64url decode the payload');\n }\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key: k };\n }\n return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nimport { encoder } from './buffer_utils.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nconst normalizeTyp = (value) => {\n if (value.includes('/')) {\n return value.toLowerCase();\n }\n return `application/${value.toLowerCase()}`;\n};\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport function validateClaimsSet(protectedHeader, encodedPayload, options = {}) {\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n }\n const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n const presenceCheck = [...requiredClaims];\n if (maxTokenAge !== undefined)\n presenceCheck.push('iat');\n if (audience !== undefined)\n presenceCheck.push('aud');\n if (subject !== undefined)\n presenceCheck.push('sub');\n if (issuer !== undefined)\n presenceCheck.push('iss');\n for (const claim of new Set(presenceCheck.reverse())) {\n if (!(claim in payload)) {\n throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n }\n }\n if (issuer &&\n !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n }\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n }\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n }\n }\n if (maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n }\n }\n return payload;\n}\nexport class JWTClaimsBuilder {\n #payload;\n constructor(payload) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this.#payload = structuredClone(payload);\n }\n data() {\n return encoder.encode(JSON.stringify(this.#payload));\n }\n get iss() {\n return this.#payload.iss;\n }\n set iss(value) {\n this.#payload.iss = value;\n }\n get sub() {\n return this.#payload.sub;\n }\n set sub(value) {\n this.#payload.sub = value;\n }\n get aud() {\n return this.#payload.aud;\n }\n set aud(value) {\n this.#payload.aud = value;\n }\n set jti(value) {\n this.#payload.jti = value;\n }\n set nbf(value) {\n if (typeof value === 'number') {\n this.#payload.nbf = validateInput('setNotBefore', value);\n }\n else if (value instanceof Date) {\n this.#payload.nbf = validateInput('setNotBefore', epoch(value));\n }\n else {\n this.#payload.nbf = epoch(new Date()) + secs(value);\n }\n }\n set exp(value) {\n if (typeof value === 'number') {\n this.#payload.exp = validateInput('setExpirationTime', value);\n }\n else if (value instanceof Date) {\n this.#payload.exp = validateInput('setExpirationTime', epoch(value));\n }\n else {\n this.#payload.exp = epoch(new Date()) + secs(value);\n }\n }\n set iat(value) {\n if (typeof value === 'undefined') {\n this.#payload.iat = epoch(new Date());\n }\n else if (value instanceof Date) {\n this.#payload.iat = validateInput('setIssuedAt', epoch(value));\n }\n else if (typeof value === 'string') {\n this.#payload.iat = validateInput('setIssuedAt', epoch(new Date()) + secs(value));\n }\n else {\n this.#payload.iat = validateInput('setIssuedAt', value);\n }\n }\n}\n","import { compactVerify } from '../jws/compact/verify.js';\nimport { validateClaimsSet } from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n const verified = await compactVerify(jwt, key, options);\n if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import subtleAlgorithm from './subtle_dsa.js';\nimport checkKeyLength from './check_key_length.js';\nimport getSignKey from './get_sign_verify_key.js';\nexport default async (alg, key, data) => {\n const cryptoKey = await getSignKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\n","import { encode as b64u } from '../../util/base64url.js';\nimport sign from '../../lib/sign.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport checkKeyType from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport normalizeKey from '../../lib/normalize_key.js';\nexport class FlattenedSign {\n #payload;\n #protectedHeader;\n #unprotectedHeader;\n constructor(payload) {\n if (!(payload instanceof Uint8Array)) {\n throw new TypeError('payload must be an instance of Uint8Array');\n }\n this.#payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this.#protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this.#protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this.#unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this.#unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this.#protectedHeader && !this.#unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this.#protectedHeader,\n ...this.#unprotectedHeader,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this.#protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this.#protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyType(alg, key, 'sign');\n let payload = this.#payload;\n if (b64) {\n payload = encoder.encode(b64u(payload));\n }\n let protectedHeader;\n if (this.#protectedHeader) {\n protectedHeader = encoder.encode(b64u(JSON.stringify(this.#protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const k = await normalizeKey(key, alg);\n const signature = await sign(alg, k, data);\n const jws = {\n signature: b64u(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this.#unprotectedHeader) {\n jws.header = this.#unprotectedHeader;\n }\n if (this.#protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n","import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n #flattened;\n constructor(payload) {\n this.#flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this.#flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this.#flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n","import { CompactSign } from '../jws/compact/sign.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { JWTClaimsBuilder } from '../lib/jwt_claims_set.js';\nexport class SignJWT {\n #protectedHeader;\n #jwt;\n constructor(payload = {}) {\n this.#jwt = new JWTClaimsBuilder(payload);\n }\n setIssuer(issuer) {\n this.#jwt.iss = issuer;\n return this;\n }\n setSubject(subject) {\n this.#jwt.sub = subject;\n return this;\n }\n setAudience(audience) {\n this.#jwt.aud = audience;\n return this;\n }\n setJti(jwtId) {\n this.#jwt.jti = jwtId;\n return this;\n }\n setNotBefore(input) {\n this.#jwt.nbf = input;\n return this;\n }\n setExpirationTime(input) {\n this.#jwt.exp = input;\n return this;\n }\n setIssuedAt(input) {\n this.#jwt.iat = input;\n return this;\n }\n setProtectedHeader(protectedHeader) {\n this.#protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(this.#jwt.data());\n sig.setProtectedHeader(this.#protectedHeader);\n if (Array.isArray(this.#protectedHeader?.crit) &&\n this.#protectedHeader.crit.includes('b64') &&\n this.#protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n","import { importJWK } from '../key/import.js';\nimport { JWKSInvalid, JOSENotSupported, JWKSNoMatchingKey, JWKSMultipleMatchingKeys, } from '../util/errors.js';\nimport isObject from '../lib/is_object.js';\nfunction getKtyFromAlg(alg) {\n switch (typeof alg === 'string' && alg.slice(0, 2)) {\n case 'RS':\n case 'PS':\n return 'RSA';\n case 'ES':\n return 'EC';\n case 'Ed':\n return 'OKP';\n default:\n throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n }\n}\nfunction isJWKSLike(jwks) {\n return (jwks &&\n typeof jwks === 'object' &&\n Array.isArray(jwks.keys) &&\n jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n return isObject(key);\n}\nclass LocalJWKSet {\n #jwks;\n #cached = new WeakMap();\n constructor(jwks) {\n if (!isJWKSLike(jwks)) {\n throw new JWKSInvalid('JSON Web Key Set malformed');\n }\n this.#jwks = structuredClone(jwks);\n }\n jwks() {\n return this.#jwks;\n }\n async getKey(protectedHeader, token) {\n const { alg, kid } = { ...protectedHeader, ...token?.header };\n const kty = getKtyFromAlg(alg);\n const candidates = this.#jwks.keys.filter((jwk) => {\n let candidate = kty === jwk.kty;\n if (candidate && typeof kid === 'string') {\n candidate = kid === jwk.kid;\n }\n if (candidate && typeof jwk.alg === 'string') {\n candidate = alg === jwk.alg;\n }\n if (candidate && typeof jwk.use === 'string') {\n candidate = jwk.use === 'sig';\n }\n if (candidate && Array.isArray(jwk.key_ops)) {\n candidate = jwk.key_ops.includes('verify');\n }\n if (candidate) {\n switch (alg) {\n case 'ES256':\n candidate = jwk.crv === 'P-256';\n break;\n case 'ES384':\n candidate = jwk.crv === 'P-384';\n break;\n case 'ES512':\n candidate = jwk.crv === 'P-521';\n break;\n case 'Ed25519':\n case 'EdDSA':\n candidate = jwk.crv === 'Ed25519';\n break;\n }\n }\n return candidate;\n });\n const { 0: jwk, length } = candidates;\n if (length === 0) {\n throw new JWKSNoMatchingKey();\n }\n if (length !== 1) {\n const error = new JWKSMultipleMatchingKeys();\n const _cached = this.#cached;\n error[Symbol.asyncIterator] = async function* () {\n for (const jwk of candidates) {\n try {\n yield await importWithAlgCache(_cached, jwk, alg);\n }\n catch { }\n }\n };\n throw error;\n }\n return importWithAlgCache(this.#cached, jwk, alg);\n }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n if (cached[alg] === undefined) {\n const key = await importJWK({ ...jwk, ext: true }, alg);\n if (key instanceof Uint8Array || key.type !== 'public') {\n throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n }\n cached[alg] = key;\n }\n return cached[alg];\n}\nexport function createLocalJWKSet(jwks) {\n const set = new LocalJWKSet(jwks);\n const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(localJWKSet, {\n jwks: {\n value: () => structuredClone(set.jwks()),\n enumerable: false,\n configurable: false,\n writable: false,\n },\n });\n return localJWKSet;\n}\n","import { JOSEError, JWKSNoMatchingKey, JWKSTimeout } from '../util/errors.js';\nimport { createLocalJWKSet } from './local.js';\nimport isObject from '../lib/is_object.js';\nfunction isCloudflareWorkers() {\n return (typeof WebSocketPair !== 'undefined' ||\n (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n const NAME = 'jose';\n const VERSION = 'v6.0.12';\n USER_AGENT = `${NAME}/${VERSION}`;\n}\nexport const customFetch = Symbol();\nasync function fetchJwks(url, headers, signal, fetchImpl = fetch) {\n const response = await fetchImpl(url, {\n method: 'GET',\n signal,\n redirect: 'manual',\n headers,\n }).catch((err) => {\n if (err.name === 'TimeoutError') {\n throw new JWKSTimeout();\n }\n throw err;\n });\n if (response.status !== 200) {\n throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n }\n try {\n return await response.json();\n }\n catch {\n throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n }\n}\nexport const jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n if (typeof input !== 'object' || input === null) {\n return false;\n }\n if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n return false;\n }\n if (!('jwks' in input) ||\n !isObject(input.jwks) ||\n !Array.isArray(input.jwks.keys) ||\n !Array.prototype.every.call(input.jwks.keys, isObject)) {\n return false;\n }\n return true;\n}\nclass RemoteJWKSet {\n #url;\n #timeoutDuration;\n #cooldownDuration;\n #cacheMaxAge;\n #jwksTimestamp;\n #pendingFetch;\n #headers;\n #customFetch;\n #local;\n #cache;\n constructor(url, options) {\n if (!(url instanceof URL)) {\n throw new TypeError('url must be an instance of URL');\n }\n this.#url = new URL(url.href);\n this.#timeoutDuration =\n typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n this.#cooldownDuration =\n typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n this.#cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n this.#headers = new Headers(options?.headers);\n if (USER_AGENT && !this.#headers.has('User-Agent')) {\n this.#headers.set('User-Agent', USER_AGENT);\n }\n if (!this.#headers.has('accept')) {\n this.#headers.set('accept', 'application/json');\n this.#headers.append('accept', 'application/jwk-set+json');\n }\n this.#customFetch = options?.[customFetch];\n if (options?.[jwksCache] !== undefined) {\n this.#cache = options?.[jwksCache];\n if (isFreshJwksCache(options?.[jwksCache], this.#cacheMaxAge)) {\n this.#jwksTimestamp = this.#cache.uat;\n this.#local = createLocalJWKSet(this.#cache.jwks);\n }\n }\n }\n pendingFetch() {\n return !!this.#pendingFetch;\n }\n coolingDown() {\n return typeof this.#jwksTimestamp === 'number'\n ? Date.now() < this.#jwksTimestamp + this.#cooldownDuration\n : false;\n }\n fresh() {\n return typeof this.#jwksTimestamp === 'number'\n ? Date.now() < this.#jwksTimestamp + this.#cacheMaxAge\n : false;\n }\n jwks() {\n return this.#local?.jwks();\n }\n async getKey(protectedHeader, token) {\n if (!this.#local || !this.fresh()) {\n await this.reload();\n }\n try {\n return await this.#local(protectedHeader, token);\n }\n catch (err) {\n if (err instanceof JWKSNoMatchingKey) {\n if (this.coolingDown() === false) {\n await this.reload();\n return this.#local(protectedHeader, token);\n }\n }\n throw err;\n }\n }\n async reload() {\n if (this.#pendingFetch && isCloudflareWorkers()) {\n this.#pendingFetch = undefined;\n }\n this.#pendingFetch ||= fetchJwks(this.#url.href, this.#headers, AbortSignal.timeout(this.#timeoutDuration), this.#customFetch)\n .then((json) => {\n this.#local = createLocalJWKSet(json);\n if (this.#cache) {\n this.#cache.uat = Date.now();\n this.#cache.jwks = json;\n }\n this.#jwksTimestamp = Date.now();\n this.#pendingFetch = undefined;\n })\n .catch((err) => {\n this.#pendingFetch = undefined;\n throw err;\n });\n await this.#pendingFetch;\n }\n}\nexport function createRemoteJWKSet(url, options) {\n const set = new RemoteJWKSet(url, options);\n const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n Object.defineProperties(remoteJWKSet, {\n coolingDown: {\n get: () => set.coolingDown(),\n enumerable: true,\n configurable: false,\n },\n fresh: {\n get: () => set.fresh(),\n enumerable: true,\n configurable: false,\n },\n reload: {\n value: () => set.reload(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n reloading: {\n get: () => set.pendingFetch(),\n enumerable: true,\n configurable: false,\n },\n jwks: {\n value: () => set.jwks(),\n enumerable: true,\n configurable: false,\n writable: false,\n },\n });\n return remoteJWKSet;\n}\n","import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport isObject from '../lib/is_object.js';\nexport function decodeProtectedHeader(token) {\n let protectedB64u;\n if (typeof token === 'string') {\n const parts = token.split('.');\n if (parts.length === 3 || parts.length === 5) {\n ;\n [protectedB64u] = parts;\n }\n }\n else if (typeof token === 'object' && token) {\n if ('protected' in token) {\n protectedB64u = token.protected;\n }\n else {\n throw new TypeError('Token does not contain a Protected Header');\n }\n }\n try {\n if (typeof protectedB64u !== 'string' || !protectedB64u) {\n throw new Error();\n }\n const result = JSON.parse(decoder.decode(b64u(protectedB64u)));\n if (!isObject(result)) {\n throw new Error();\n }\n return result;\n }\n catch {\n throw new TypeError('Invalid Token or Protected Header formatting');\n }\n}\n","import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport isObject from '../lib/is_object.js';\nimport { JWTInvalid } from './errors.js';\nexport function decodeJwt(jwt) {\n if (typeof jwt !== 'string')\n throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n const { 1: payload, length } = jwt.split('.');\n if (length === 5)\n throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n if (length !== 3)\n throw new JWTInvalid('Invalid JWT');\n if (!payload)\n throw new JWTInvalid('JWTs must contain a payload');\n let decoded;\n try {\n decoded = b64u(payload);\n }\n catch {\n throw new JWTInvalid('Failed to base64url decode the payload');\n }\n let result;\n try {\n result = JSON.parse(decoder.decode(decoded));\n }\n catch {\n throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n }\n if (!isObject(result))\n throw new JWTInvalid('Invalid JWT Claims Set');\n return result;\n}\n","import { createRandomStringGenerator } from '@better-auth/utils/random';\n\nconst generateRandomString = createRandomStringGenerator(\n \"a-z\",\n \"0-9\",\n \"A-Z\",\n \"-_\"\n);\n\nexport { generateRandomString as g };\n","import { z } from 'zod';\nimport { APIError } from 'better-call';\nimport '@better-auth/utils/hash';\nimport '@noble/ciphers/chacha';\nimport '@noble/ciphers/utils';\nimport '@noble/ciphers/webcrypto';\nimport '@better-auth/utils/base64';\nimport 'jose';\nimport '@noble/hashes/scrypt';\nimport '@better-auth/utils';\nimport '@better-auth/utils/hex';\nimport '@noble/hashes/utils';\nimport { g as generateRandomString } from './better-auth.B4Qoxdgc.mjs';\n\nasync function generateState(c, link) {\n const callbackURL = c.body?.callbackURL || c.context.options.baseURL;\n if (!callbackURL) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"callbackURL is required\"\n });\n }\n const codeVerifier = generateRandomString(128);\n const state = generateRandomString(32);\n const data = JSON.stringify({\n callbackURL,\n codeVerifier,\n errorURL: c.body?.errorCallbackURL,\n newUserURL: c.body?.newUserCallbackURL,\n link,\n /**\n * This is the actual expiry time of the state\n */\n expiresAt: Date.now() + 10 * 60 * 1e3,\n requestSignUp: c.body?.requestSignUp\n });\n const expiresAt = /* @__PURE__ */ new Date();\n expiresAt.setMinutes(expiresAt.getMinutes() + 10);\n const verification = await c.context.internalAdapter.createVerificationValue(\n {\n value: data,\n identifier: state,\n expiresAt\n },\n c\n );\n if (!verification) {\n c.context.logger.error(\n \"Unable to create verification. Make sure the database adapter is properly working and there is a verification table in the database\"\n );\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Unable to create verification\"\n });\n }\n return {\n state: verification.identifier,\n codeVerifier\n };\n}\nasync function parseState(c) {\n const state = c.query.state || c.body.state;\n const data = await c.context.internalAdapter.findVerificationValue(state);\n if (!data) {\n c.context.logger.error(\"State Mismatch. Verification not found\", {\n state\n });\n const errorURL = c.context.options.onAPIError?.errorURL || `${c.context.baseURL}/error`;\n throw c.redirect(`${errorURL}?error=please_restart_the_process`);\n }\n const parsedData = z.object({\n callbackURL: z.string(),\n codeVerifier: z.string(),\n errorURL: z.string().optional(),\n newUserURL: z.string().optional(),\n expiresAt: z.number(),\n link: z.object({\n email: z.string(),\n userId: z.coerce.string()\n }).optional(),\n requestSignUp: z.boolean().optional()\n }).parse(JSON.parse(data.value));\n if (!parsedData.errorURL) {\n parsedData.errorURL = `${c.context.baseURL}/error`;\n }\n if (parsedData.expiresAt < Date.now()) {\n await c.context.internalAdapter.deleteVerificationValue(data.id);\n const errorURL = c.context.options.onAPIError?.errorURL || `${c.context.baseURL}/error`;\n throw c.redirect(`${errorURL}?error=please_restart_the_process`);\n }\n await c.context.internalAdapter.deleteVerificationValue(data.id);\n return parsedData;\n}\n\nexport { generateState as g, parseState as p };\n","const levels = [\"info\", \"success\", \"warn\", \"error\", \"debug\"];\nfunction shouldPublishLog(currentLogLevel, logLevel) {\n return levels.indexOf(logLevel) <= levels.indexOf(currentLogLevel);\n}\nconst colors = {\n reset: \"\\x1B[0m\",\n bright: \"\\x1B[1m\",\n dim: \"\\x1B[2m\",\n fg: {\n red: \"\\x1B[31m\",\n green: \"\\x1B[32m\",\n yellow: \"\\x1B[33m\",\n blue: \"\\x1B[34m\",\n magenta: \"\\x1B[35m\"}};\nconst levelColors = {\n info: colors.fg.blue,\n success: colors.fg.green,\n warn: colors.fg.yellow,\n error: colors.fg.red,\n debug: colors.fg.magenta\n};\nconst formatMessage = (level, message) => {\n const timestamp = (/* @__PURE__ */ new Date()).toISOString();\n return `${colors.dim}${timestamp}${colors.reset} ${levelColors[level]}${level.toUpperCase()}${colors.reset} ${colors.bright}[Better Auth]:${colors.reset} ${message}`;\n};\nconst createLogger = (options) => {\n const enabled = options?.disabled !== true;\n const logLevel = options?.level ?? \"error\";\n const LogFunc = (level, message, args = []) => {\n if (!enabled || !shouldPublishLog(logLevel, level)) {\n return;\n }\n const formattedMessage = formatMessage(level, message);\n if (!options || typeof options.log !== \"function\") {\n if (level === \"error\") {\n console.error(formattedMessage, ...args);\n } else if (level === \"warn\") {\n console.warn(formattedMessage, ...args);\n } else {\n console.log(formattedMessage, ...args);\n }\n return;\n }\n options.log(level === \"success\" ? \"info\" : level, message, ...args);\n };\n return Object.fromEntries(\n levels.map((level) => [\n level,\n (...[message, ...args]) => LogFunc(level, message, args)\n ])\n );\n};\nconst logger = createLogger();\n\nexport { levels as a, createLogger as c, logger as l, shouldPublishLog as s };\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/error.ts\nvar BetterFetchError = class extends Error {\n constructor(status, statusText, error) {\n super(statusText || status.toString(), {\n cause: error\n });\n this.status = status;\n this.statusText = statusText;\n this.error = error;\n }\n};\n\n// src/plugins.ts\nvar initializePlugins = async (url, options) => {\n var _a, _b, _c, _d, _e, _f;\n let opts = options || {};\n const hooks = {\n onRequest: [options == null ? void 0 : options.onRequest],\n onResponse: [options == null ? void 0 : options.onResponse],\n onSuccess: [options == null ? void 0 : options.onSuccess],\n onError: [options == null ? void 0 : options.onError],\n onRetry: [options == null ? void 0 : options.onRetry]\n };\n if (!options || !(options == null ? void 0 : options.plugins)) {\n return {\n url,\n options: opts,\n hooks\n };\n }\n for (const plugin of (options == null ? void 0 : options.plugins) || []) {\n if (plugin.init) {\n const pluginRes = await ((_a = plugin.init) == null ? void 0 : _a.call(plugin, url.toString(), options));\n opts = pluginRes.options || opts;\n url = pluginRes.url;\n }\n hooks.onRequest.push((_b = plugin.hooks) == null ? void 0 : _b.onRequest);\n hooks.onResponse.push((_c = plugin.hooks) == null ? void 0 : _c.onResponse);\n hooks.onSuccess.push((_d = plugin.hooks) == null ? void 0 : _d.onSuccess);\n hooks.onError.push((_e = plugin.hooks) == null ? void 0 : _e.onError);\n hooks.onRetry.push((_f = plugin.hooks) == null ? void 0 : _f.onRetry);\n }\n return {\n url,\n options: opts,\n hooks\n };\n};\n\n// src/retry.ts\nvar LinearRetryStrategy = class {\n constructor(options) {\n this.options = options;\n }\n shouldAttemptRetry(attempt, response) {\n if (this.options.shouldRetry) {\n return Promise.resolve(\n attempt < this.options.attempts && this.options.shouldRetry(response)\n );\n }\n return Promise.resolve(attempt < this.options.attempts);\n }\n getDelay() {\n return this.options.delay;\n }\n};\nvar ExponentialRetryStrategy = class {\n constructor(options) {\n this.options = options;\n }\n shouldAttemptRetry(attempt, response) {\n if (this.options.shouldRetry) {\n return Promise.resolve(\n attempt < this.options.attempts && this.options.shouldRetry(response)\n );\n }\n return Promise.resolve(attempt < this.options.attempts);\n }\n getDelay(attempt) {\n const delay = Math.min(\n this.options.maxDelay,\n this.options.baseDelay * 2 ** attempt\n );\n return delay;\n }\n};\nfunction createRetryStrategy(options) {\n if (typeof options === \"number\") {\n return new LinearRetryStrategy({\n type: \"linear\",\n attempts: options,\n delay: 1e3\n });\n }\n switch (options.type) {\n case \"linear\":\n return new LinearRetryStrategy(options);\n case \"exponential\":\n return new ExponentialRetryStrategy(options);\n default:\n throw new Error(\"Invalid retry strategy\");\n }\n}\n\n// src/auth.ts\nvar getAuthHeader = async (options) => {\n const headers = {};\n const getValue = async (value) => typeof value === \"function\" ? await value() : value;\n if (options == null ? void 0 : options.auth) {\n if (options.auth.type === \"Bearer\") {\n const token = await getValue(options.auth.token);\n if (!token) {\n return headers;\n }\n headers[\"authorization\"] = `Bearer ${token}`;\n } else if (options.auth.type === \"Basic\") {\n const username = getValue(options.auth.username);\n const password = getValue(options.auth.password);\n if (!username || !password) {\n return headers;\n }\n headers[\"authorization\"] = `Basic ${btoa(`${username}:${password}`)}`;\n } else if (options.auth.type === \"Custom\") {\n const value = getValue(options.auth.value);\n if (!value) {\n return headers;\n }\n headers[\"authorization\"] = `${getValue(options.auth.prefix)} ${value}`;\n }\n }\n return headers;\n};\n\n// src/utils.ts\nvar JSON_RE = /^application\\/(?:[\\w!#$%&*.^`~-]*\\+)?json(;.+)?$/i;\nfunction detectResponseType(request) {\n const _contentType = request.headers.get(\"content-type\");\n const textTypes = /* @__PURE__ */ new Set([\n \"image/svg\",\n \"application/xml\",\n \"application/xhtml\",\n \"application/html\"\n ]);\n if (!_contentType) {\n return \"json\";\n }\n const contentType = _contentType.split(\";\").shift() || \"\";\n if (JSON_RE.test(contentType)) {\n return \"json\";\n }\n if (textTypes.has(contentType) || contentType.startsWith(\"text/\")) {\n return \"text\";\n }\n return \"blob\";\n}\nfunction isJSONParsable(value) {\n try {\n JSON.parse(value);\n return true;\n } catch (error) {\n return false;\n }\n}\nfunction isJSONSerializable(value) {\n if (value === void 0) {\n return false;\n }\n const t = typeof value;\n if (t === \"string\" || t === \"number\" || t === \"boolean\" || t === null) {\n return true;\n }\n if (t !== \"object\") {\n return false;\n }\n if (Array.isArray(value)) {\n return true;\n }\n if (value.buffer) {\n return false;\n }\n return value.constructor && value.constructor.name === \"Object\" || typeof value.toJSON === \"function\";\n}\nfunction jsonParse(text) {\n try {\n return JSON.parse(text);\n } catch (error) {\n return text;\n }\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction getFetch(options) {\n if (options == null ? void 0 : options.customFetchImpl) {\n return options.customFetchImpl;\n }\n if (typeof globalThis !== \"undefined\" && isFunction(globalThis.fetch)) {\n return globalThis.fetch;\n }\n if (typeof window !== \"undefined\" && isFunction(window.fetch)) {\n return window.fetch;\n }\n throw new Error(\"No fetch implementation found\");\n}\nfunction isPayloadMethod(method) {\n if (!method) {\n return false;\n }\n const payloadMethod = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"];\n return payloadMethod.includes(method.toUpperCase());\n}\nfunction isRouteMethod(method) {\n const routeMethod = [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"];\n if (!method) {\n return false;\n }\n return routeMethod.includes(method.toUpperCase());\n}\nasync function getHeaders(opts) {\n const headers = new Headers(opts == null ? void 0 : opts.headers);\n const authHeader = await getAuthHeader(opts);\n for (const [key, value] of Object.entries(authHeader || {})) {\n headers.set(key, value);\n }\n if (!headers.has(\"content-type\")) {\n const t = detectContentType(opts == null ? void 0 : opts.body);\n if (t) {\n headers.set(\"content-type\", t);\n }\n }\n return headers;\n}\nfunction getURL(url, options) {\n if (url.startsWith(\"@\")) {\n const m = url.toString().split(\"@\")[1].split(\"/\")[0];\n if (methods.includes(m)) {\n url = url.replace(`@${m}/`, \"/\");\n }\n }\n let _url;\n try {\n if (url.startsWith(\"http\")) {\n _url = url;\n } else {\n let baseURL = options == null ? void 0 : options.baseURL;\n if (baseURL && !(baseURL == null ? void 0 : baseURL.endsWith(\"/\"))) {\n baseURL = baseURL + \"/\";\n }\n if (url.startsWith(\"/\")) {\n _url = new URL(url.substring(1), baseURL);\n } else {\n _url = new URL(url, options == null ? void 0 : options.baseURL);\n }\n }\n } catch (e) {\n if (e instanceof TypeError) {\n if (!(options == null ? void 0 : options.baseURL)) {\n throw TypeError(\n `Invalid URL ${url}. Are you passing in a relative url but not setting the baseURL?`\n );\n }\n throw TypeError(\n `Invalid URL ${url}. Please validate that you are passing the correct input.`\n );\n }\n throw e;\n }\n if (options == null ? void 0 : options.params) {\n if (Array.isArray(options == null ? void 0 : options.params)) {\n const params = (options == null ? void 0 : options.params) ? Array.isArray(options.params) ? `/${options.params.join(\"/\")}` : `/${Object.values(options.params).join(\"/\")}` : \"\";\n _url = _url.toString().split(\"/:\")[0];\n _url = `${_url.toString()}${params}`;\n } else {\n for (const [key, value] of Object.entries(options == null ? void 0 : options.params)) {\n _url = _url.toString().replace(`:${key}`, String(value));\n }\n }\n }\n const __url = new URL(_url);\n const queryParams = options == null ? void 0 : options.query;\n if (queryParams) {\n for (const [key, value] of Object.entries(queryParams)) {\n __url.searchParams.append(key, String(value));\n }\n }\n return __url;\n}\nfunction detectContentType(body) {\n if (isJSONSerializable(body)) {\n return \"application/json\";\n }\n return null;\n}\nfunction getBody(options) {\n if (!(options == null ? void 0 : options.body)) {\n return null;\n }\n const headers = new Headers(options == null ? void 0 : options.headers);\n if (isJSONSerializable(options.body) && !headers.has(\"content-type\")) {\n for (const [key, value] of Object.entries(options == null ? void 0 : options.body)) {\n if (value instanceof Date) {\n options.body[key] = value.toISOString();\n }\n }\n return JSON.stringify(options.body);\n }\n return options.body;\n}\nfunction getMethod(url, options) {\n var _a;\n if (options == null ? void 0 : options.method) {\n return options.method.toUpperCase();\n }\n if (url.startsWith(\"@\")) {\n const pMethod = (_a = url.split(\"@\")[1]) == null ? void 0 : _a.split(\"/\")[0];\n if (!methods.includes(pMethod)) {\n return (options == null ? void 0 : options.body) ? \"POST\" : \"GET\";\n }\n return pMethod.toUpperCase();\n }\n return (options == null ? void 0 : options.body) ? \"POST\" : \"GET\";\n}\nfunction getTimeout(options, controller) {\n let abortTimeout;\n if (!(options == null ? void 0 : options.signal) && (options == null ? void 0 : options.timeout)) {\n abortTimeout = setTimeout(() => controller == null ? void 0 : controller.abort(), options == null ? void 0 : options.timeout);\n }\n return {\n abortTimeout,\n clearTimeout: () => {\n if (abortTimeout) {\n clearTimeout(abortTimeout);\n }\n }\n };\n}\nfunction bodyParser(data, responseType) {\n if (responseType === \"json\") {\n return JSON.parse(data);\n }\n return data;\n}\nvar ValidationError = class _ValidationError extends Error {\n constructor(issues, message) {\n super(message || JSON.stringify(issues, null, 2));\n this.issues = issues;\n Object.setPrototypeOf(this, _ValidationError.prototype);\n }\n};\nasync function parseStandardSchema(schema, input) {\n let result = await schema[\"~standard\"].validate(input);\n if (result.issues) {\n throw new ValidationError(result.issues);\n }\n return result.value;\n}\n\n// src/create-fetch/schema.ts\nvar methods = [\"get\", \"post\", \"put\", \"patch\", \"delete\"];\nvar createSchema = (schema, config) => {\n return {\n schema,\n config\n };\n};\n\n// src/create-fetch/index.ts\nvar applySchemaPlugin = (config) => ({\n id: \"apply-schema\",\n name: \"Apply Schema\",\n version: \"1.0.0\",\n async init(url, options) {\n var _a, _b, _c, _d;\n const schema = ((_b = (_a = config.plugins) == null ? void 0 : _a.find(\n (plugin) => {\n var _a2;\n return ((_a2 = plugin.schema) == null ? void 0 : _a2.config) ? url.startsWith(plugin.schema.config.baseURL || \"\") || url.startsWith(plugin.schema.config.prefix || \"\") : false;\n }\n )) == null ? void 0 : _b.schema) || config.schema;\n if (schema) {\n let urlKey = url;\n if ((_c = schema.config) == null ? void 0 : _c.prefix) {\n if (urlKey.startsWith(schema.config.prefix)) {\n urlKey = urlKey.replace(schema.config.prefix, \"\");\n if (schema.config.baseURL) {\n url = url.replace(schema.config.prefix, schema.config.baseURL);\n }\n }\n }\n if ((_d = schema.config) == null ? void 0 : _d.baseURL) {\n if (urlKey.startsWith(schema.config.baseURL)) {\n urlKey = urlKey.replace(schema.config.baseURL, \"\");\n }\n }\n const keySchema = schema.schema[urlKey];\n if (keySchema) {\n let opts = __spreadProps(__spreadValues({}, options), {\n method: keySchema.method,\n output: keySchema.output\n });\n if (!(options == null ? void 0 : options.disableValidation)) {\n opts = __spreadProps(__spreadValues({}, opts), {\n body: keySchema.input ? await parseStandardSchema(keySchema.input, options == null ? void 0 : options.body) : options == null ? void 0 : options.body,\n params: keySchema.params ? await parseStandardSchema(keySchema.params, options == null ? void 0 : options.params) : options == null ? void 0 : options.params,\n query: keySchema.query ? await parseStandardSchema(keySchema.query, options == null ? void 0 : options.query) : options == null ? void 0 : options.query\n });\n }\n return {\n url,\n options: opts\n };\n }\n }\n return {\n url,\n options\n };\n }\n});\nvar createFetch = (config) => {\n async function $fetch(url, options) {\n const opts = __spreadProps(__spreadValues(__spreadValues({}, config), options), {\n plugins: [...(config == null ? void 0 : config.plugins) || [], applySchemaPlugin(config || {})]\n });\n if (config == null ? void 0 : config.catchAllError) {\n try {\n return await betterFetch(url, opts);\n } catch (error) {\n return {\n data: null,\n error: {\n status: 500,\n statusText: \"Fetch Error\",\n message: \"Fetch related error. Captured by catchAllError option. See error property for more details.\",\n error\n }\n };\n }\n }\n return await betterFetch(url, opts);\n }\n return $fetch;\n};\n\n// src/url.ts\nfunction getURL2(url, option) {\n let { baseURL, params, query } = option || {\n query: {},\n params: {},\n baseURL: \"\"\n };\n let basePath = url.startsWith(\"http\") ? url.split(\"/\").slice(0, 3).join(\"/\") : baseURL || \"\";\n if (url.startsWith(\"@\")) {\n const m = url.toString().split(\"@\")[1].split(\"/\")[0];\n if (methods.includes(m)) {\n url = url.replace(`@${m}/`, \"/\");\n }\n }\n if (!basePath.endsWith(\"/\")) basePath += \"/\";\n let [path, urlQuery] = url.replace(basePath, \"\").split(\"?\");\n const queryParams = new URLSearchParams(urlQuery);\n for (const [key, value] of Object.entries(query || {})) {\n if (value == null) continue;\n queryParams.set(key, String(value));\n }\n if (params) {\n if (Array.isArray(params)) {\n const paramPaths = path.split(\"/\").filter((p) => p.startsWith(\":\"));\n for (const [index, key] of paramPaths.entries()) {\n const value = params[index];\n path = path.replace(key, value);\n }\n } else {\n for (const [key, value] of Object.entries(params)) {\n path = path.replace(`:${key}`, String(value));\n }\n }\n }\n path = path.split(\"/\").map(encodeURIComponent).join(\"/\");\n if (path.startsWith(\"/\")) path = path.slice(1);\n let queryParamString = queryParams.toString();\n queryParamString = queryParamString.length > 0 ? `?${queryParamString}`.replace(/\\+/g, \"%20\") : \"\";\n if (!basePath.startsWith(\"http\")) {\n return `${basePath}${path}${queryParamString}`;\n }\n const _url = new URL(`${path}${queryParamString}`, basePath);\n return _url;\n}\n\n// src/fetch.ts\nvar betterFetch = async (url, options) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const {\n hooks,\n url: __url,\n options: opts\n } = await initializePlugins(url, options);\n const fetch = getFetch(opts);\n const controller = new AbortController();\n const signal = (_a = opts.signal) != null ? _a : controller.signal;\n const _url = getURL2(__url, opts);\n const body = getBody(opts);\n const headers = await getHeaders(opts);\n const method = getMethod(__url, opts);\n let context = __spreadProps(__spreadValues({}, opts), {\n url: _url,\n headers,\n body,\n method,\n signal\n });\n for (const onRequest of hooks.onRequest) {\n if (onRequest) {\n const res = await onRequest(context);\n if (res instanceof Object) {\n context = res;\n }\n }\n }\n if (\"pipeTo\" in context && typeof context.pipeTo === \"function\" || typeof ((_b = options == null ? void 0 : options.body) == null ? void 0 : _b.pipe) === \"function\") {\n if (!(\"duplex\" in context)) {\n context.duplex = \"half\";\n }\n }\n const { clearTimeout: clearTimeout2 } = getTimeout(opts, controller);\n let response = await fetch(context.url, context);\n clearTimeout2();\n const responseContext = {\n response,\n request: context\n };\n for (const onResponse of hooks.onResponse) {\n if (onResponse) {\n const r = await onResponse(__spreadProps(__spreadValues({}, responseContext), {\n response: ((_c = options == null ? void 0 : options.hookOptions) == null ? void 0 : _c.cloneResponse) ? response.clone() : response\n }));\n if (r instanceof Response) {\n response = r;\n } else if (r instanceof Object) {\n response = r.response;\n }\n }\n }\n if (response.ok) {\n const hasBody = context.method !== \"HEAD\";\n if (!hasBody) {\n return {\n data: \"\",\n error: null\n };\n }\n const responseType = detectResponseType(response);\n const successContext = {\n data: \"\",\n response,\n request: context\n };\n if (responseType === \"json\" || responseType === \"text\") {\n const text = await response.text();\n const parser2 = (_d = context.jsonParser) != null ? _d : jsonParse;\n const data = await parser2(text);\n successContext.data = data;\n } else {\n successContext.data = await response[responseType]();\n }\n if (context == null ? void 0 : context.output) {\n if (context.output && !context.disableValidation) {\n successContext.data = await parseStandardSchema(\n context.output,\n successContext.data\n );\n }\n }\n for (const onSuccess of hooks.onSuccess) {\n if (onSuccess) {\n await onSuccess(__spreadProps(__spreadValues({}, successContext), {\n response: ((_e = options == null ? void 0 : options.hookOptions) == null ? void 0 : _e.cloneResponse) ? response.clone() : response\n }));\n }\n }\n if (options == null ? void 0 : options.throw) {\n return successContext.data;\n }\n return {\n data: successContext.data,\n error: null\n };\n }\n const parser = (_f = options == null ? void 0 : options.jsonParser) != null ? _f : jsonParse;\n const responseText = await response.text();\n const isJSONResponse = isJSONParsable(responseText);\n const errorObject = isJSONResponse ? await parser(responseText) : null;\n const errorContext = {\n response,\n responseText,\n request: context,\n error: __spreadProps(__spreadValues({}, errorObject), {\n status: response.status,\n statusText: response.statusText\n })\n };\n for (const onError of hooks.onError) {\n if (onError) {\n await onError(__spreadProps(__spreadValues({}, errorContext), {\n response: ((_g = options == null ? void 0 : options.hookOptions) == null ? void 0 : _g.cloneResponse) ? response.clone() : response\n }));\n }\n }\n if (options == null ? void 0 : options.retry) {\n const retryStrategy = createRetryStrategy(options.retry);\n const _retryAttempt = (_h = options.retryAttempt) != null ? _h : 0;\n if (await retryStrategy.shouldAttemptRetry(_retryAttempt, response)) {\n for (const onRetry of hooks.onRetry) {\n if (onRetry) {\n await onRetry(responseContext);\n }\n }\n const delay = retryStrategy.getDelay(_retryAttempt);\n await new Promise((resolve) => setTimeout(resolve, delay));\n return await betterFetch(url, __spreadProps(__spreadValues({}, options), {\n retryAttempt: _retryAttempt + 1\n }));\n }\n }\n if (options == null ? void 0 : options.throw) {\n throw new BetterFetchError(\n response.status,\n response.statusText,\n isJSONResponse ? errorObject : responseText\n );\n }\n return {\n data: null,\n error: __spreadProps(__spreadValues({}, errorObject), {\n status: response.status,\n statusText: response.statusText\n })\n };\n};\nexport {\n BetterFetchError,\n ValidationError,\n applySchemaPlugin,\n betterFetch,\n bodyParser,\n createFetch,\n createRetryStrategy,\n createSchema,\n detectContentType,\n detectResponseType,\n getBody,\n getFetch,\n getHeaders,\n getMethod,\n getTimeout,\n getURL,\n initializePlugins,\n isFunction,\n isJSONParsable,\n isJSONSerializable,\n isPayloadMethod,\n isRouteMethod,\n jsonParse,\n methods,\n parseStandardSchema\n};\n//# sourceMappingURL=index.js.map","import { base64Url } from '@better-auth/utils/base64';\nimport { betterFetch } from '@better-fetch/fetch';\nimport { jwtVerify } from 'jose';\nimport { g as getDate } from './better-auth.CW6D9eSx.mjs';\nimport { createHash } from '@better-auth/utils/hash';\n\nasync function generateCodeChallenge(codeVerifier) {\n const codeChallengeBytes = await createHash(\"SHA-256\").digest(codeVerifier);\n return base64Url.encode(new Uint8Array(codeChallengeBytes), {\n padding: false\n });\n}\nfunction getOAuth2Tokens(data) {\n return {\n tokenType: data.token_type,\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n accessTokenExpiresAt: data.expires_in ? getDate(data.expires_in, \"sec\") : void 0,\n scopes: data?.scope ? typeof data.scope === \"string\" ? data.scope.split(\" \") : data.scope : [],\n idToken: data.id_token\n };\n}\nconst encodeOAuthParameter = (value) => encodeURIComponent(value).replace(/%20/g, \"+\");\n\nasync function createAuthorizationURL({\n id,\n options,\n authorizationEndpoint,\n state,\n codeVerifier,\n scopes,\n claims,\n redirectURI,\n duration,\n prompt,\n accessType,\n responseType,\n display,\n loginHint,\n hd,\n responseMode,\n additionalParams,\n scopeJoiner\n}) {\n const url = new URL(authorizationEndpoint);\n url.searchParams.set(\"response_type\", responseType || \"code\");\n url.searchParams.set(\"client_id\", options.clientId);\n url.searchParams.set(\"state\", state);\n url.searchParams.set(\"scope\", scopes.join(scopeJoiner || \" \"));\n url.searchParams.set(\"redirect_uri\", options.redirectURI || redirectURI);\n duration && url.searchParams.set(\"duration\", duration);\n display && url.searchParams.set(\"display\", display);\n loginHint && url.searchParams.set(\"login_hint\", loginHint);\n prompt && url.searchParams.set(\"prompt\", prompt);\n hd && url.searchParams.set(\"hd\", hd);\n accessType && url.searchParams.set(\"access_type\", accessType);\n responseMode && url.searchParams.set(\"response_mode\", responseMode);\n if (codeVerifier) {\n const codeChallenge = await generateCodeChallenge(codeVerifier);\n url.searchParams.set(\"code_challenge_method\", \"S256\");\n url.searchParams.set(\"code_challenge\", codeChallenge);\n }\n if (claims) {\n const claimsObj = claims.reduce(\n (acc, claim) => {\n acc[claim] = null;\n return acc;\n },\n {}\n );\n url.searchParams.set(\n \"claims\",\n JSON.stringify({\n id_token: { email: null, email_verified: null, ...claimsObj }\n })\n );\n }\n if (additionalParams) {\n Object.entries(additionalParams).forEach(([key, value]) => {\n url.searchParams.set(key, value);\n });\n }\n return url;\n}\n\nasync function validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint,\n authentication,\n deviceId,\n headers\n}) {\n const body = new URLSearchParams();\n const requestHeaders = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n accept: \"application/json\",\n \"user-agent\": \"better-auth\",\n ...headers\n };\n body.set(\"grant_type\", \"authorization_code\");\n body.set(\"code\", code);\n codeVerifier && body.set(\"code_verifier\", codeVerifier);\n options.clientKey && body.set(\"client_key\", options.clientKey);\n deviceId && body.set(\"device_id\", deviceId);\n body.set(\"redirect_uri\", options.redirectURI || redirectURI);\n if (authentication === \"basic\") {\n const encodedCredentials = base64Url.encode(\n `${options.clientId}:${options.clientSecret}`\n );\n requestHeaders[\"authorization\"] = `Basic ${encodedCredentials}`;\n } else {\n body.set(\"client_id\", options.clientId);\n body.set(\"client_secret\", options.clientSecret);\n }\n const { data, error } = await betterFetch(tokenEndpoint, {\n method: \"POST\",\n body,\n headers: requestHeaders\n });\n if (error) {\n throw error;\n }\n const tokens = getOAuth2Tokens(data);\n return tokens;\n}\nasync function validateToken(token, jwksEndpoint) {\n const { data, error } = await betterFetch(jwksEndpoint, {\n method: \"GET\",\n headers: {\n accept: \"application/json\",\n \"user-agent\": \"better-auth\"\n }\n });\n if (error) {\n throw error;\n }\n const keys = data[\"keys\"];\n const header = JSON.parse(atob(token.split(\".\")[0]));\n const key = keys.find((key2) => key2.kid === header.kid);\n if (!key) {\n throw new Error(\"Key not found\");\n }\n const verified = await jwtVerify(token, key);\n return verified;\n}\n\nasync function refreshAccessToken({\n refreshToken,\n options,\n tokenEndpoint,\n authentication,\n extraParams,\n grantType = \"refresh_token\"\n}) {\n const body = new URLSearchParams();\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n accept: \"application/json\"\n };\n body.set(\"grant_type\", grantType);\n body.set(\"refresh_token\", refreshToken);\n if (authentication === \"basic\") {\n const encodedCredentials = base64Url.encode(\n `${options.clientId}:${options.clientSecret}`\n );\n headers[\"authorization\"] = `Basic ${encodedCredentials}`;\n } else {\n body.set(\"client_id\", options.clientId);\n body.set(\"client_secret\", options.clientSecret);\n }\n if (extraParams) {\n for (const [key, value] of Object.entries(extraParams)) {\n body.set(key, value);\n }\n }\n const { data, error } = await betterFetch(tokenEndpoint, {\n method: \"POST\",\n body,\n headers\n });\n if (error) {\n throw error;\n }\n const tokens = {\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n tokenType: data.token_type,\n scopes: data.scope?.split(\" \"),\n idToken: data.id_token\n };\n if (data.expires_in) {\n const now = /* @__PURE__ */ new Date();\n tokens.accessTokenExpiresAt = new Date(\n now.getTime() + data.expires_in * 1e3\n );\n }\n return tokens;\n}\n\nexport { validateToken as a, getOAuth2Tokens as b, createAuthorizationURL as c, encodeOAuthParameter as e, generateCodeChallenge as g, refreshAccessToken as r, validateAuthorizationCode as v };\n","import { betterFetch } from '@better-fetch/fetch';\nimport { APIError } from 'better-call';\nimport { decodeJwt, decodeProtectedHeader, jwtVerify, importJWK, createRemoteJWKSet } from 'jose';\nimport { r as refreshAccessToken, v as validateAuthorizationCode, c as createAuthorizationURL, b as getOAuth2Tokens, g as generateCodeChallenge } from '../shared/better-auth.DufyW0qf.mjs';\nimport '@better-auth/utils/hash';\nimport { base64 } from '@better-auth/utils/base64';\nimport { z } from 'zod';\nimport '@noble/ciphers/chacha';\nimport '@noble/ciphers/utils';\nimport '@noble/ciphers/webcrypto';\nimport '@noble/hashes/scrypt';\nimport '@better-auth/utils';\nimport '@better-auth/utils/hex';\nimport '@noble/hashes/utils';\nimport '../shared/better-auth.B4Qoxdgc.mjs';\nimport { B as BetterAuthError } from '../shared/better-auth.DdzSJf-n.mjs';\nimport { l as logger } from '../shared/better-auth.Cqykj82J.mjs';\nimport '@better-auth/utils/random';\nimport '../shared/better-auth.CW6D9eSx.mjs';\n\nconst apple = (options) => {\n const tokenEndpoint = \"https://appleid.apple.com/auth/token\";\n return {\n id: \"apple\",\n name: \"Apple\",\n async createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scope = options.disableDefaultScope ? [] : [\"email\", \"name\"];\n options.scope && _scope.push(...options.scope);\n scopes && _scope.push(...scopes);\n const url = await createAuthorizationURL({\n id: \"apple\",\n options,\n authorizationEndpoint: \"https://appleid.apple.com/auth/authorize\",\n scopes: _scope,\n state,\n redirectURI,\n responseMode: \"form_post\",\n responseType: \"code id_token\"\n });\n return url;\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint\n });\n },\n async verifyIdToken(token, nonce) {\n if (options.disableIdTokenSignIn) {\n return false;\n }\n if (options.verifyIdToken) {\n return options.verifyIdToken(token, nonce);\n }\n const decodedHeader = decodeProtectedHeader(token);\n const { kid, alg: jwtAlg } = decodedHeader;\n if (!kid || !jwtAlg) return false;\n const publicKey = await getApplePublicKey(kid);\n const { payload: jwtClaims } = await jwtVerify(token, publicKey, {\n algorithms: [jwtAlg],\n issuer: \"https://appleid.apple.com\",\n audience: options.appBundleIdentifier || options.clientId,\n maxTokenAge: \"1h\"\n });\n [\"email_verified\", \"is_private_email\"].forEach((field) => {\n if (jwtClaims[field] !== void 0) {\n jwtClaims[field] = Boolean(jwtClaims[field]);\n }\n });\n if (nonce && jwtClaims.nonce !== nonce) {\n return false;\n }\n return !!jwtClaims;\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://appleid.apple.com/auth/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n if (!token.idToken) {\n return null;\n }\n const profile = decodeJwt(token.idToken);\n if (!profile) {\n return null;\n }\n const name = token.user ? `${token.user.name?.firstName} ${token.user.name?.lastName}` : profile.name || profile.email;\n const emailVerified = typeof profile.email_verified === \"boolean\" ? profile.email_verified : profile.email_verified === \"true\";\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.sub,\n name,\n emailVerified,\n email: profile.email,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\nconst getApplePublicKey = async (kid) => {\n const APPLE_BASE_URL = \"https://appleid.apple.com\";\n const JWKS_APPLE_URI = \"/auth/keys\";\n const { data } = await betterFetch(`${APPLE_BASE_URL}${JWKS_APPLE_URI}`);\n if (!data?.keys) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Keys not found\"\n });\n }\n const jwk = data.keys.find((key) => key.kid === kid);\n if (!jwk) {\n throw new Error(`JWK with kid ${kid} not found`);\n }\n return await importJWK(jwk, jwk.alg);\n};\n\nconst discord = (options) => {\n return {\n id: \"discord\",\n name: \"Discord\",\n createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"identify\", \"email\"];\n scopes && _scopes.push(...scopes);\n options.scope && _scopes.push(...options.scope);\n return new URL(\n `https://discord.com/api/oauth2/authorize?scope=${_scopes.join(\n \"+\"\n )}&response_type=code&client_id=${options.clientId}&redirect_uri=${encodeURIComponent(\n options.redirectURI || redirectURI\n )}&state=${state}&prompt=${options.prompt || \"none\"}`\n );\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint: \"https://discord.com/api/oauth2/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://discord.com/api/oauth2/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://discord.com/api/users/@me\",\n {\n headers: {\n authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n if (profile.avatar === null) {\n const defaultAvatarNumber = profile.discriminator === \"0\" ? Number(BigInt(profile.id) >> BigInt(22)) % 6 : parseInt(profile.discriminator) % 5;\n profile.image_url = `https://cdn.discordapp.com/embed/avatars/${defaultAvatarNumber}.png`;\n } else {\n const format = profile.avatar.startsWith(\"a_\") ? \"gif\" : \"png\";\n profile.image_url = `https://cdn.discordapp.com/avatars/${profile.id}/${profile.avatar}.${format}`;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id,\n name: profile.global_name || profile.username || \"\",\n email: profile.email,\n emailVerified: profile.verified,\n image: profile.image_url,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst facebook = (options) => {\n return {\n id: \"facebook\",\n name: \"Facebook\",\n async createAuthorizationURL({ state, scopes, redirectURI, loginHint }) {\n const _scopes = options.disableDefaultScope ? [] : [\"email\", \"public_profile\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return await createAuthorizationURL({\n id: \"facebook\",\n options,\n authorizationEndpoint: \"https://www.facebook.com/v21.0/dialog/oauth\",\n scopes: _scopes,\n state,\n redirectURI,\n loginHint,\n additionalParams: options.configId ? {\n config_id: options.configId\n } : {}\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint: \"https://graph.facebook.com/oauth/access_token\"\n });\n },\n async verifyIdToken(token, nonce) {\n if (options.disableIdTokenSignIn) {\n return false;\n }\n if (options.verifyIdToken) {\n return options.verifyIdToken(token, nonce);\n }\n if (token.split(\".\").length) {\n try {\n const { payload: jwtClaims } = await jwtVerify(\n token,\n createRemoteJWKSet(\n new URL(\"https://www.facebook.com/.well-known/oauth/openid/jwks\")\n ),\n {\n algorithms: [\"RS256\"],\n audience: options.clientId,\n issuer: \"https://www.facebook.com\"\n }\n );\n if (nonce && jwtClaims.nonce !== nonce) {\n return false;\n }\n return !!jwtClaims;\n } catch (error) {\n return false;\n }\n }\n return true;\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://graph.facebook.com/v18.0/oauth/access_token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n if (token.idToken) {\n const profile2 = decodeJwt(token.idToken);\n const user = {\n id: profile2.sub,\n name: profile2.name,\n email: profile2.email,\n picture: {\n data: {\n url: profile2.picture,\n height: 100,\n width: 100,\n is_silhouette: false\n }\n }\n };\n const userMap2 = await options.mapProfileToUser?.({\n ...user,\n email_verified: true\n });\n return {\n user: {\n ...user,\n emailVerified: true,\n ...userMap2\n },\n data: profile2\n };\n }\n const fields = [\n \"id\",\n \"name\",\n \"email\",\n \"picture\",\n ...options?.fields || []\n ];\n const { data: profile, error } = await betterFetch(\n \"https://graph.facebook.com/me?fields=\" + fields.join(\",\"),\n {\n auth: {\n type: \"Bearer\",\n token: token.accessToken\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id,\n name: profile.name,\n email: profile.email,\n image: profile.picture.data.url,\n emailVerified: profile.email_verified,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst github = (options) => {\n const tokenEndpoint = \"https://github.com/login/oauth/access_token\";\n return {\n id: \"github\",\n name: \"GitHub\",\n createAuthorizationURL({ state, scopes, loginHint, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"read:user\", \"user:email\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"github\",\n options,\n authorizationEndpoint: \"https://github.com/login/oauth/authorize\",\n scopes: _scopes,\n state,\n redirectURI,\n loginHint,\n prompt: options.prompt\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://github.com/login/oauth/access_token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://api.github.com/user\",\n {\n headers: {\n \"User-Agent\": \"better-auth\",\n authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const { data: emails } = await betterFetch(\"https://api.github.com/user/emails\", {\n headers: {\n Authorization: `Bearer ${token.accessToken}`,\n \"User-Agent\": \"better-auth\"\n }\n });\n if (!profile.email && emails) {\n profile.email = (emails.find((e) => e.primary) ?? emails[0])?.email;\n }\n const emailVerified = emails?.find((e) => e.email === profile.email)?.verified ?? false;\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id.toString(),\n name: profile.name || profile.login,\n email: profile.email,\n image: profile.avatar_url,\n emailVerified,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst google = (options) => {\n return {\n id: \"google\",\n name: \"Google\",\n async createAuthorizationURL({\n state,\n scopes,\n codeVerifier,\n redirectURI,\n loginHint,\n display\n }) {\n if (!options.clientId || !options.clientSecret) {\n logger.error(\n \"Client Id and Client Secret is required for Google. Make sure to provide them in the options.\"\n );\n throw new BetterAuthError(\"CLIENT_ID_AND_SECRET_REQUIRED\");\n }\n if (!codeVerifier) {\n throw new BetterAuthError(\"codeVerifier is required for Google\");\n }\n const _scopes = options.disableDefaultScope ? [] : [\"email\", \"profile\", \"openid\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n const url = await createAuthorizationURL({\n id: \"google\",\n options,\n authorizationEndpoint: \"https://accounts.google.com/o/oauth2/auth\",\n scopes: _scopes,\n state,\n codeVerifier,\n redirectURI,\n prompt: options.prompt,\n accessType: options.accessType,\n display: display || options.display,\n loginHint,\n hd: options.hd,\n additionalParams: {\n include_granted_scopes: \"true\"\n }\n });\n return url;\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint: \"https://oauth2.googleapis.com/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://www.googleapis.com/oauth2/v4/token\"\n });\n },\n async verifyIdToken(token, nonce) {\n if (options.disableIdTokenSignIn) {\n return false;\n }\n if (options.verifyIdToken) {\n return options.verifyIdToken(token, nonce);\n }\n const googlePublicKeyUrl = `https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=${token}`;\n const { data: tokenInfo } = await betterFetch(googlePublicKeyUrl);\n if (!tokenInfo) {\n return false;\n }\n const isValid = tokenInfo.aud === options.clientId && (tokenInfo.iss === \"https://accounts.google.com\" || tokenInfo.iss === \"accounts.google.com\");\n return isValid;\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n if (!token.idToken) {\n return null;\n }\n const user = decodeJwt(token.idToken);\n const userMap = await options.mapProfileToUser?.(user);\n return {\n user: {\n id: user.sub,\n name: user.name,\n email: user.email,\n image: user.picture,\n emailVerified: user.email_verified,\n ...userMap\n },\n data: user\n };\n },\n options\n };\n};\n\nconst huggingface = (options) => {\n return {\n id: \"huggingface\",\n name: \"Hugging Face\",\n createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"openid\", \"profile\", \"email\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"huggingface\",\n options,\n authorizationEndpoint: \"https://huggingface.co/oauth/authorize\",\n scopes: _scopes,\n state,\n codeVerifier,\n redirectURI\n });\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint: \"https://huggingface.co/oauth/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://huggingface.co/oauth/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://huggingface.co/oauth/userinfo\",\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.sub,\n name: profile.name || profile.preferred_username,\n email: profile.email,\n image: profile.picture,\n emailVerified: profile.email_verified ?? false,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst microsoft = (options) => {\n const tenant = options.tenantId || \"common\";\n const authorizationEndpoint = `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/authorize`;\n const tokenEndpoint = `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/token`;\n return {\n id: \"microsoft\",\n name: \"Microsoft EntraID\",\n createAuthorizationURL(data) {\n const scopes = options.disableDefaultScope ? [] : [\"openid\", \"profile\", \"email\", \"User.Read\", \"offline_access\"];\n options.scope && scopes.push(...options.scope);\n data.scopes && scopes.push(...data.scopes);\n return createAuthorizationURL({\n id: \"microsoft\",\n options,\n authorizationEndpoint,\n state: data.state,\n codeVerifier: data.codeVerifier,\n scopes,\n redirectURI: data.redirectURI,\n prompt: options.prompt\n });\n },\n validateAuthorizationCode({ code, codeVerifier, redirectURI }) {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n if (!token.idToken) {\n return null;\n }\n const user = decodeJwt(token.idToken);\n const profilePhotoSize = options.profilePhotoSize || 48;\n await betterFetch(\n `https://graph.microsoft.com/v1.0/me/photos/${profilePhotoSize}x${profilePhotoSize}/$value`,\n {\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n },\n async onResponse(context) {\n if (options.disableProfilePhoto || !context.response.ok) {\n return;\n }\n try {\n const response = context.response.clone();\n const pictureBuffer = await response.arrayBuffer();\n const pictureBase64 = base64.encode(pictureBuffer);\n user.picture = `data:image/jpeg;base64, ${pictureBase64}`;\n } catch (e) {\n logger.error(\n e && typeof e === \"object\" && \"name\" in e ? e.name : \"\",\n e\n );\n }\n }\n }\n );\n const userMap = await options.mapProfileToUser?.(user);\n return {\n user: {\n id: user.sub,\n name: user.name,\n email: user.email,\n image: user.picture,\n emailVerified: true,\n ...userMap\n },\n data: user\n };\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n const scopes = options.disableDefaultScope ? [] : [\"openid\", \"profile\", \"email\", \"User.Read\", \"offline_access\"];\n options.scope && scopes.push(...options.scope);\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientSecret: options.clientSecret\n },\n extraParams: {\n scope: scopes.join(\" \")\n // Include the scopes in request to microsoft\n },\n tokenEndpoint\n });\n },\n options\n };\n};\n\nconst spotify = (options) => {\n return {\n id: \"spotify\",\n name: \"Spotify\",\n createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"user-read-email\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"spotify\",\n options,\n authorizationEndpoint: \"https://accounts.spotify.com/authorize\",\n scopes: _scopes,\n state,\n codeVerifier,\n redirectURI\n });\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint: \"https://accounts.spotify.com/api/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://accounts.spotify.com/api/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://api.spotify.com/v1/me\",\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id,\n name: profile.display_name,\n email: profile.email,\n image: profile.images[0]?.url,\n emailVerified: false,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst twitch = (options) => {\n return {\n id: \"twitch\",\n name: \"Twitch\",\n createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"user:read:email\", \"openid\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"twitch\",\n redirectURI,\n options,\n authorizationEndpoint: \"https://id.twitch.tv/oauth2/authorize\",\n scopes: _scopes,\n state,\n claims: options.claims || [\n \"email\",\n \"email_verified\",\n \"preferred_username\",\n \"picture\"\n ]\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint: \"https://id.twitch.tv/oauth2/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://id.twitch.tv/oauth2/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const idToken = token.idToken;\n if (!idToken) {\n logger.error(\"No idToken found in token\");\n return null;\n }\n const profile = decodeJwt(idToken);\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.sub,\n name: profile.preferred_username,\n email: profile.email,\n image: profile.picture,\n emailVerified: false,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst twitter = (options) => {\n return {\n id: \"twitter\",\n name: \"Twitter\",\n createAuthorizationURL(data) {\n const _scopes = options.disableDefaultScope ? [] : [\"users.read\", \"tweet.read\", \"offline.access\", \"users.email\"];\n options.scope && _scopes.push(...options.scope);\n data.scopes && _scopes.push(...data.scopes);\n return createAuthorizationURL({\n id: \"twitter\",\n options,\n authorizationEndpoint: \"https://x.com/i/oauth2/authorize\",\n scopes: _scopes,\n state: data.state,\n codeVerifier: data.codeVerifier,\n redirectURI: data.redirectURI\n });\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n authentication: \"basic\",\n redirectURI,\n options,\n tokenEndpoint: \"https://api.x.com/2/oauth2/token\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://api.x.com/2/oauth2/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error: profileError } = await betterFetch(\n \"https://api.x.com/2/users/me?user.fields=profile_image_url\",\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (profileError) {\n return null;\n }\n const { data: emailData, error: emailError } = await betterFetch(\"https://api.x.com/2/users/me?user.fields=confirmed_email\", {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n });\n let emailVerified = false;\n if (!emailError && emailData?.data?.confirmed_email) {\n profile.data.email = emailData.data.confirmed_email;\n emailVerified = true;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.data.id,\n name: profile.data.name,\n email: profile.data.email || profile.data.username || null,\n image: profile.data.profile_image_url,\n emailVerified,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst dropbox = (options) => {\n const tokenEndpoint = \"https://api.dropboxapi.com/oauth2/token\";\n return {\n id: \"dropbox\",\n name: \"Dropbox\",\n createAuthorizationURL: async ({\n state,\n scopes,\n codeVerifier,\n redirectURI\n }) => {\n const _scopes = options.disableDefaultScope ? [] : [\"account_info.read\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return await createAuthorizationURL({\n id: \"dropbox\",\n options,\n authorizationEndpoint: \"https://www.dropbox.com/oauth2/authorize\",\n scopes: _scopes,\n state,\n redirectURI,\n codeVerifier\n });\n },\n validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {\n return await validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI,\n options,\n tokenEndpoint\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://api.dropbox.com/oauth2/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://api.dropboxapi.com/2/users/get_current_account\",\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.account_id,\n name: profile.name?.display_name,\n email: profile.email,\n emailVerified: profile.email_verified || false,\n image: profile.profile_photo_url,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst linkedin = (options) => {\n const authorizationEndpoint = \"https://www.linkedin.com/oauth/v2/authorization\";\n const tokenEndpoint = \"https://www.linkedin.com/oauth/v2/accessToken\";\n return {\n id: \"linkedin\",\n name: \"Linkedin\",\n createAuthorizationURL: async ({\n state,\n scopes,\n redirectURI,\n loginHint\n }) => {\n const _scopes = options.disableDefaultScope ? [] : [\"profile\", \"email\", \"openid\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return await createAuthorizationURL({\n id: \"linkedin\",\n options,\n authorizationEndpoint,\n scopes: _scopes,\n state,\n loginHint,\n redirectURI\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return await validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://api.linkedin.com/v2/userinfo\",\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.sub,\n name: profile.name,\n email: profile.email,\n emailVerified: profile.email_verified || false,\n image: profile.picture,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst cleanDoubleSlashes = (input = \"\") => {\n return input.split(\"://\").map((str) => str.replace(/\\/{2,}/g, \"/\")).join(\"://\");\n};\nconst issuerToEndpoints = (issuer) => {\n let baseUrl = issuer || \"https://gitlab.com\";\n return {\n authorizationEndpoint: cleanDoubleSlashes(`${baseUrl}/oauth/authorize`),\n tokenEndpoint: cleanDoubleSlashes(`${baseUrl}/oauth/token`),\n userinfoEndpoint: cleanDoubleSlashes(`${baseUrl}/api/v4/user`)\n };\n};\nconst gitlab = (options) => {\n const { authorizationEndpoint, tokenEndpoint, userinfoEndpoint } = issuerToEndpoints(options.issuer);\n const issuerId = \"gitlab\";\n const issuerName = \"Gitlab\";\n return {\n id: issuerId,\n name: issuerName,\n createAuthorizationURL: async ({\n state,\n scopes,\n codeVerifier,\n loginHint,\n redirectURI\n }) => {\n const _scopes = options.disableDefaultScope ? [] : [\"read_user\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return await createAuthorizationURL({\n id: issuerId,\n options,\n authorizationEndpoint,\n scopes: _scopes,\n state,\n redirectURI,\n codeVerifier,\n loginHint\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI, codeVerifier }) => {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n codeVerifier,\n tokenEndpoint\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://gitlab.com/oauth/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n userinfoEndpoint,\n { headers: { authorization: `Bearer ${token.accessToken}` } }\n );\n if (error || profile.state !== \"active\" || profile.locked) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id.toString(),\n name: profile.name ?? profile.username,\n email: profile.email,\n image: profile.avatar_url,\n emailVerified: true,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst tiktok = (options) => {\n return {\n id: \"tiktok\",\n name: \"TikTok\",\n createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"user.info.profile\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return new URL(\n `https://www.tiktok.com/v2/auth/authorize?scope=${_scopes.join(\n \",\"\n )}&response_type=code&client_key=${options.clientKey}&client_secret=${options.clientSecret}&redirect_uri=${encodeURIComponent(\n options.redirectURI || redirectURI\n )}&state=${state}`\n );\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI: options.redirectURI || redirectURI,\n options,\n tokenEndpoint: \"https://open.tiktokapis.com/v2/oauth/token/\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://open.tiktokapis.com/v2/oauth/token/\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const fields = [\n \"open_id\",\n \"avatar_large_url\",\n \"display_name\",\n \"username\"\n ];\n const { data: profile, error } = await betterFetch(\n `https://open.tiktokapis.com/v2/user/info/?fields=${fields.join(\",\")}`,\n {\n headers: {\n authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n return {\n user: {\n email: profile.data.user.email || profile.data.user.username,\n id: profile.data.user.open_id,\n name: profile.data.user.display_name || profile.data.user.username,\n image: profile.data.user.avatar_large_url,\n /** @note Tiktok does not provide emailVerified or even email*/\n emailVerified: profile.data.user.email ? true : false\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst reddit = (options) => {\n return {\n id: \"reddit\",\n name: \"Reddit\",\n createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"identity\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"reddit\",\n options,\n authorizationEndpoint: \"https://www.reddit.com/api/v1/authorize\",\n scopes: _scopes,\n state,\n redirectURI,\n duration: options.duration\n });\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n code,\n redirect_uri: options.redirectURI || redirectURI\n });\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n accept: \"text/plain\",\n \"user-agent\": \"better-auth\",\n Authorization: `Basic ${base64.encode(\n `${options.clientId}:${options.clientSecret}`\n )}`\n };\n const { data, error } = await betterFetch(\n \"https://www.reddit.com/api/v1/access_token\",\n {\n method: \"POST\",\n headers,\n body: body.toString()\n }\n );\n if (error) {\n throw error;\n }\n return getOAuth2Tokens(data);\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://www.reddit.com/api/v1/access_token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://oauth.reddit.com/api/v1/me\",\n {\n headers: {\n Authorization: `Bearer ${token.accessToken}`,\n \"User-Agent\": \"better-auth\"\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id,\n name: profile.name,\n email: profile.oauth_client_id,\n emailVerified: profile.has_verified_email,\n image: profile.icon_img?.split(\"?\")[0],\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst roblox = (options) => {\n return {\n id: \"roblox\",\n name: \"Roblox\",\n createAuthorizationURL({ state, scopes, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"openid\", \"profile\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return new URL(\n `https://apis.roblox.com/oauth/v1/authorize?scope=${_scopes.join(\n \"+\"\n )}&response_type=code&client_id=${options.clientId}&redirect_uri=${encodeURIComponent(\n options.redirectURI || redirectURI\n )}&state=${state}&prompt=${options.prompt || \"select_account+consent\"}`\n );\n },\n validateAuthorizationCode: async ({ code, redirectURI }) => {\n return validateAuthorizationCode({\n code,\n redirectURI: options.redirectURI || redirectURI,\n options,\n tokenEndpoint: \"https://apis.roblox.com/oauth/v1/token\",\n authentication: \"post\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://apis.roblox.com/oauth/v1/token\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://apis.roblox.com/oauth/v1/userinfo\",\n {\n headers: {\n authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.sub,\n name: profile.nickname || profile.preferred_username || \"\",\n image: profile.picture,\n email: profile.preferred_username || null,\n // Roblox does not provide email\n emailVerified: true,\n ...userMap\n },\n data: {\n ...profile\n }\n };\n },\n options\n };\n};\n\nvar LANG = /* @__PURE__ */ ((LANG2) => {\n LANG2[LANG2[\"RUS\"] = 0] = \"RUS\";\n LANG2[LANG2[\"UKR\"] = 1] = \"UKR\";\n LANG2[LANG2[\"ENG\"] = 3] = \"ENG\";\n LANG2[LANG2[\"SPA\"] = 4] = \"SPA\";\n LANG2[LANG2[\"GERMAN\"] = 6] = \"GERMAN\";\n LANG2[LANG2[\"POL\"] = 15] = \"POL\";\n LANG2[LANG2[\"FRA\"] = 16] = \"FRA\";\n LANG2[LANG2[\"TURKEY\"] = 82] = \"TURKEY\";\n return LANG2;\n})(LANG || {});\nconst vk = (options) => {\n return {\n id: \"vk\",\n name: \"VK\",\n async createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {\n const _scopes = options.disableDefaultScope ? [] : [\"email\", \"phone\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n const authorizationEndpoint = \"https://id.vk.com/authorize\";\n return createAuthorizationURL({\n id: \"vk\",\n options,\n authorizationEndpoint,\n scopes: _scopes,\n state,\n redirectURI,\n codeVerifier\n });\n },\n validateAuthorizationCode: async ({\n code,\n codeVerifier,\n redirectURI,\n deviceId\n }) => {\n return validateAuthorizationCode({\n code,\n codeVerifier,\n redirectURI: options.redirectURI || redirectURI,\n options,\n deviceId,\n tokenEndpoint: \"https://id.vk.com/oauth2/auth\"\n });\n },\n refreshAccessToken: options.refreshAccessToken ? options.refreshAccessToken : async (refreshToken) => {\n return refreshAccessToken({\n refreshToken,\n options: {\n clientId: options.clientId,\n clientKey: options.clientKey,\n clientSecret: options.clientSecret\n },\n tokenEndpoint: \"https://id.vk.com/oauth2/auth\"\n });\n },\n async getUserInfo(data) {\n if (options.getUserInfo) {\n return options.getUserInfo(data);\n }\n if (!data.accessToken) {\n return null;\n }\n const formBody = new URLSearchParams({\n access_token: data.accessToken,\n client_id: options.clientId\n }).toString();\n const { data: profile, error } = await betterFetch(\n \"https://id.vk.com/oauth2/user_info\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n body: formBody\n }\n );\n if (error) {\n return null;\n }\n if (!profile.user.email) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.user.user_id,\n first_name: profile.user.first_name,\n last_name: profile.user.last_name,\n email: profile.user.email,\n image: profile.user.avatar,\n /** @note VK does not provide emailVerified*/\n emailVerified: !!profile.user.email,\n birthday: profile.user.birthday,\n sex: profile.user.sex,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst kick = (options) => {\n return {\n id: \"kick\",\n name: \"Kick\",\n createAuthorizationURL({ state, scopes, redirectURI, codeVerifier }) {\n const _scopes = options.disableDefaultScope ? [] : [\"user:read\"];\n options.scope && _scopes.push(...options.scope);\n scopes && _scopes.push(...scopes);\n return createAuthorizationURL({\n id: \"kick\",\n redirectURI,\n options,\n authorizationEndpoint: \"https://id.kick.com/oauth/authorize\",\n scopes: _scopes,\n codeVerifier,\n state\n });\n },\n async validateAuthorizationCode({ code, redirectURI, codeVerifier }) {\n return validateAuthorizationCode({\n code,\n redirectURI,\n options,\n tokenEndpoint: \"https://id.kick.com/oauth/token\",\n codeVerifier\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data, error } = await betterFetch(\"https://api.kick.com/public/v1/users\", {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${token.accessToken}`\n }\n });\n if (error) {\n return null;\n }\n const profile = data.data[0];\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.user_id,\n name: profile.name,\n email: profile.email,\n image: profile.profile_picture,\n emailVerified: true,\n ...userMap\n },\n data: profile\n };\n },\n options\n };\n};\n\nconst zoom = (userOptions) => {\n const options = {\n pkce: true,\n ...userOptions\n };\n return {\n id: \"zoom\",\n name: \"Zoom\",\n createAuthorizationURL: async ({ state, redirectURI, codeVerifier }) => {\n const params = new URLSearchParams({\n response_type: \"code\",\n redirect_uri: options.redirectURI ? options.redirectURI : redirectURI,\n client_id: options.clientId,\n state\n });\n if (options.pkce) {\n const codeChallenge = await generateCodeChallenge(codeVerifier);\n params.set(\"code_challenge_method\", \"S256\");\n params.set(\"code_challenge\", codeChallenge);\n }\n const url = new URL(\"https://zoom.us/oauth/authorize\");\n url.search = params.toString();\n return url;\n },\n validateAuthorizationCode: async ({ code, redirectURI, codeVerifier }) => {\n return validateAuthorizationCode({\n code,\n redirectURI: options.redirectURI || redirectURI,\n codeVerifier,\n options,\n tokenEndpoint: \"https://zoom.us/oauth/token\",\n authentication: \"post\"\n });\n },\n async getUserInfo(token) {\n if (options.getUserInfo) {\n return options.getUserInfo(token);\n }\n const { data: profile, error } = await betterFetch(\n \"https://api.zoom.us/v2/users/me\",\n {\n headers: {\n authorization: `Bearer ${token.accessToken}`\n }\n }\n );\n if (error) {\n return null;\n }\n const userMap = await options.mapProfileToUser?.(profile);\n return {\n user: {\n id: profile.id,\n name: profile.display_name,\n image: profile.pic_url,\n email: profile.email,\n emailVerified: Boolean(profile.verified),\n ...userMap\n },\n data: {\n ...profile\n }\n };\n }\n };\n};\n\nconst socialProviders = {\n apple,\n discord,\n facebook,\n github,\n microsoft,\n google,\n huggingface,\n spotify,\n twitch,\n twitter,\n dropbox,\n kick,\n linkedin,\n gitlab,\n tiktok,\n reddit,\n roblox,\n vk,\n zoom\n};\nconst socialProviderList = Object.keys(socialProviders);\nconst SocialProviderListEnum = z.enum(socialProviderList).or(z.string());\n\nexport { LANG, SocialProviderListEnum, apple, discord, dropbox, facebook, getApplePublicKey, github, gitlab, google, huggingface, kick, linkedin, microsoft, reddit, roblox, socialProviderList, socialProviders, spotify, tiktok, twitch, twitter, vk, zoom };\n","import { createRandomStringGenerator } from '@better-auth/utils/random';\n\nconst generateId = (size) => {\n return createRandomStringGenerator(\"a-z\", \"A-Z\", \"0-9\")(size || 32);\n};\n\nexport { generateId as g };\n","import { z } from 'zod';\nimport { APIError } from 'better-call';\n\nconst accountSchema = z.object({\n id: z.string(),\n providerId: z.string(),\n accountId: z.string(),\n userId: z.coerce.string(),\n accessToken: z.string().nullish(),\n refreshToken: z.string().nullish(),\n idToken: z.string().nullish(),\n /**\n * Access token expires at\n */\n accessTokenExpiresAt: z.date().nullish(),\n /**\n * Refresh token expires at\n */\n refreshTokenExpiresAt: z.date().nullish(),\n /**\n * The scopes that the user has authorized\n */\n scope: z.string().nullish(),\n /**\n * Password is only stored in the credential provider\n */\n password: z.string().nullish(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n updatedAt: z.date().default(() => /* @__PURE__ */ new Date())\n});\nconst userSchema = z.object({\n id: z.string(),\n email: z.string().transform((val) => val.toLowerCase()),\n emailVerified: z.boolean().default(false),\n name: z.string(),\n image: z.string().nullish(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n updatedAt: z.date().default(() => /* @__PURE__ */ new Date())\n});\nconst sessionSchema = z.object({\n id: z.string(),\n userId: z.coerce.string(),\n expiresAt: z.date(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n updatedAt: z.date().default(() => /* @__PURE__ */ new Date()),\n token: z.string(),\n ipAddress: z.string().nullish(),\n userAgent: z.string().nullish()\n});\nconst verificationSchema = z.object({\n id: z.string(),\n value: z.string(),\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n updatedAt: z.date().default(() => /* @__PURE__ */ new Date()),\n expiresAt: z.date(),\n identifier: z.string()\n});\nfunction parseOutputData(data, schema) {\n const fields = schema.fields;\n const parsedData = {};\n for (const key in data) {\n const field = fields[key];\n if (!field) {\n parsedData[key] = data[key];\n continue;\n }\n if (field.returned === false) {\n continue;\n }\n parsedData[key] = data[key];\n }\n return parsedData;\n}\nfunction getAllFields(options, table) {\n let schema = {\n ...table === \"user\" ? options.user?.additionalFields : {},\n ...table === \"session\" ? options.session?.additionalFields : {}\n };\n for (const plugin of options.plugins || []) {\n if (plugin.schema && plugin.schema[table]) {\n schema = {\n ...schema,\n ...plugin.schema[table].fields\n };\n }\n }\n return schema;\n}\nfunction parseUserOutput(options, user) {\n const schema = getAllFields(options, \"user\");\n return parseOutputData(user, { fields: schema });\n}\nfunction parseAccountOutput(options, account) {\n const schema = getAllFields(options, \"account\");\n return parseOutputData(account, { fields: schema });\n}\nfunction parseSessionOutput(options, session) {\n const schema = getAllFields(options, \"session\");\n return parseOutputData(session, { fields: schema });\n}\nfunction parseInputData(data, schema) {\n const action = schema.action || \"create\";\n const fields = schema.fields;\n const parsedData = {};\n for (const key in fields) {\n if (key in data) {\n if (fields[key].input === false) {\n if (fields[key].defaultValue) {\n parsedData[key] = fields[key].defaultValue;\n continue;\n }\n continue;\n }\n if (fields[key].validator?.input && data[key] !== void 0) {\n parsedData[key] = fields[key].validator.input.parse(data[key]);\n continue;\n }\n if (fields[key].transform?.input && data[key] !== void 0) {\n parsedData[key] = fields[key].transform?.input(data[key]);\n continue;\n }\n parsedData[key] = data[key];\n continue;\n }\n if (fields[key].defaultValue && action === \"create\") {\n parsedData[key] = fields[key].defaultValue;\n continue;\n }\n if (fields[key].required && action === \"create\") {\n throw new APIError(\"BAD_REQUEST\", {\n message: `${key} is required`\n });\n }\n }\n return parsedData;\n}\nfunction parseUserInput(options, user, action) {\n const schema = getAllFields(options, \"user\");\n return parseInputData(user || {}, { fields: schema, action });\n}\nfunction parseAdditionalUserInput(options, user) {\n const schema = getAllFields(options, \"user\");\n return parseInputData(user || {}, { fields: schema });\n}\nfunction parseAccountInput(options, account) {\n const schema = getAllFields(options, \"account\");\n return parseInputData(account, { fields: schema });\n}\nfunction parseSessionInput(options, session) {\n const schema = getAllFields(options, \"session\");\n return parseInputData(session, { fields: schema });\n}\nfunction mergeSchema(schema, newSchema) {\n if (!newSchema) {\n return schema;\n }\n for (const table in newSchema) {\n const newModelName = newSchema[table]?.modelName;\n if (newModelName) {\n schema[table].modelName = newModelName;\n }\n for (const field in schema[table].fields) {\n const newField = newSchema[table]?.fields?.[field];\n if (!newField) {\n continue;\n }\n schema[table].fields[field].fieldName = newField;\n }\n }\n return schema;\n}\n\nexport { accountSchema as a, parseUserOutput as b, parseAccountOutput as c, parseSessionOutput as d, parseInputData as e, parseUserInput as f, getAllFields as g, parseAdditionalUserInput as h, parseAccountInput as i, parseSessionInput as j, mergeSchema as m, parseOutputData as p, sessionSchema as s, userSchema as u, verificationSchema as v };\n","import { SignJWT } from 'jose';\n\nasync function signJWT(payload, secret, expiresIn = 3600) {\n const jwt = await new SignJWT(payload).setProtectedHeader({ alg: \"HS256\" }).setIssuedAt().setExpirationTime(Math.floor(Date.now() / 1e3) + expiresIn).sign(new TextEncoder().encode(secret));\n return jwt;\n}\n\nexport { signJWT as s };\n","import { z } from 'zod';\nimport { deleteSessionCookie, setSessionCookie, setCookieCache } from '../cookies/index.mjs';\nimport { createMiddleware, createEndpoint, APIError } from 'better-call';\nimport '@better-auth/utils/random';\nimport { g as generateState, p as parseState } from './better-auth.DPBqdYQ3.mjs';\nimport { l as logger } from './better-auth.Cqykj82J.mjs';\nimport { SocialProviderListEnum } from '../social-providers/index.mjs';\nimport { s as safeJSONParse } from './better-auth.tB5eU6EY.mjs';\nimport { g as getDate } from './better-auth.CW6D9eSx.mjs';\nimport { g as generateId } from './better-auth.BUPPRXfK.mjs';\nimport '@better-auth/utils/hash';\nimport '@noble/ciphers/chacha';\nimport '@noble/ciphers/utils';\nimport '@noble/ciphers/webcrypto';\nimport { base64 } from '@better-auth/utils/base64';\nimport { jwtVerify } from 'jose';\nimport '@noble/hashes/scrypt';\nimport '@better-auth/utils';\nimport '@better-auth/utils/hex';\nimport '@noble/hashes/utils';\nimport { g as generateRandomString } from './better-auth.B4Qoxdgc.mjs';\nimport { f as parseUserInput } from './better-auth.Cc72UxUH.mjs';\nimport { b as isDevelopment } from './better-auth.8zoxzg-F.mjs';\nimport { createHMAC } from '@better-auth/utils/hmac';\nimport { binary } from '@better-auth/utils/binary';\nimport '@better-fetch/fetch';\nimport 'defu';\nimport { s as signJWT } from './better-auth.DDEbWX-S.mjs';\nimport { b as getHost, c as getProtocol, g as getOrigin } from './better-auth.VTXNLFMT.mjs';\nimport { JWTExpired } from 'jose/errors';\n\nconst optionsMiddleware = createMiddleware(async () => {\n return {};\n});\nconst createAuthMiddleware = createMiddleware.create({\n use: [\n optionsMiddleware,\n /**\n * Only use for post hooks\n */\n createMiddleware(async () => {\n return {};\n })\n ]\n});\nconst createAuthEndpoint = createEndpoint.create({\n use: [optionsMiddleware]\n});\n\nfunction escapeRegExpChar(char) {\n if (char === \"-\" || char === \"^\" || char === \"$\" || char === \"+\" || char === \".\" || char === \"(\" || char === \")\" || char === \"|\" || char === \"[\" || char === \"]\" || char === \"{\" || char === \"}\" || char === \"*\" || char === \"?\" || char === \"\\\\\") {\n return `\\\\${char}`;\n } else {\n return char;\n }\n}\nfunction escapeRegExpString(str) {\n let result = \"\";\n for (let i = 0; i < str.length; i++) {\n result += escapeRegExpChar(str[i]);\n }\n return result;\n}\nfunction transform(pattern, separator = true) {\n if (Array.isArray(pattern)) {\n let regExpPatterns = pattern.map((p) => `^${transform(p, separator)}$`);\n return `(?:${regExpPatterns.join(\"|\")})`;\n }\n let separatorSplitter = \"\";\n let separatorMatcher = \"\";\n let wildcard = \".\";\n if (separator === true) {\n separatorSplitter = \"/\";\n separatorMatcher = \"[/\\\\\\\\]\";\n wildcard = \"[^/\\\\\\\\]\";\n } else if (separator) {\n separatorSplitter = separator;\n separatorMatcher = escapeRegExpString(separatorSplitter);\n if (separatorMatcher.length > 1) {\n separatorMatcher = `(?:${separatorMatcher})`;\n wildcard = `((?!${separatorMatcher}).)`;\n } else {\n wildcard = `[^${separatorMatcher}]`;\n }\n }\n let requiredSeparator = separator ? `${separatorMatcher}+?` : \"\";\n let optionalSeparator = separator ? `${separatorMatcher}*?` : \"\";\n let segments = separator ? pattern.split(separatorSplitter) : [pattern];\n let result = \"\";\n for (let s = 0; s < segments.length; s++) {\n let segment = segments[s];\n let nextSegment = segments[s + 1];\n let currentSeparator = \"\";\n if (!segment && s > 0) {\n continue;\n }\n if (separator) {\n if (s === segments.length - 1) {\n currentSeparator = optionalSeparator;\n } else if (nextSegment !== \"**\") {\n currentSeparator = requiredSeparator;\n } else {\n currentSeparator = \"\";\n }\n }\n if (separator && segment === \"**\") {\n if (currentSeparator) {\n result += s === 0 ? \"\" : currentSeparator;\n result += `(?:${wildcard}*?${currentSeparator})*?`;\n }\n continue;\n }\n for (let c = 0; c < segment.length; c++) {\n let char = segment[c];\n if (char === \"\\\\\") {\n if (c < segment.length - 1) {\n result += escapeRegExpChar(segment[c + 1]);\n c++;\n }\n } else if (char === \"?\") {\n result += wildcard;\n } else if (char === \"*\") {\n result += `${wildcard}*?`;\n } else {\n result += escapeRegExpChar(char);\n }\n }\n result += currentSeparator;\n }\n return result;\n}\nfunction isMatch(regexp, sample) {\n if (typeof sample !== \"string\") {\n throw new TypeError(`Sample must be a string, but ${typeof sample} given`);\n }\n return regexp.test(sample);\n}\nfunction wildcardMatch(pattern, options) {\n if (typeof pattern !== \"string\" && !Array.isArray(pattern)) {\n throw new TypeError(\n `The first argument must be a single pattern string or an array of patterns, but ${typeof pattern} given`\n );\n }\n if (typeof options === \"string\" || typeof options === \"boolean\") {\n options = { separator: options };\n }\n if (arguments.length === 2 && !(typeof options === \"undefined\" || typeof options === \"object\" && options !== null && !Array.isArray(options))) {\n throw new TypeError(\n `The second argument must be an options object or a string/boolean separator, but ${typeof options} given`\n );\n }\n options = options || {};\n if (options.separator === \"\\\\\") {\n throw new Error(\n \"\\\\ is not a valid separator because it is used for escaping. Try setting the separator to `true` instead\"\n );\n }\n let regexpPattern = transform(pattern, options.separator);\n let regexp = new RegExp(`^${regexpPattern}$`, options.flags);\n let fn = isMatch.bind(null, regexp);\n fn.options = options;\n fn.pattern = pattern;\n fn.regexp = regexp;\n return fn;\n}\n\nconst originCheckMiddleware = createAuthMiddleware(async (ctx) => {\n if (ctx.request?.method !== \"POST\" || !ctx.request) {\n return;\n }\n const { body, query, context } = ctx;\n const originHeader = ctx.headers?.get(\"origin\") || ctx.headers?.get(\"referer\") || \"\";\n const callbackURL = body?.callbackURL || query?.callbackURL;\n const redirectURL = body?.redirectTo;\n const errorCallbackURL = body?.errorCallbackURL;\n const newUserCallbackURL = body?.newUserCallbackURL;\n const trustedOrigins = Array.isArray(context.options.trustedOrigins) ? context.trustedOrigins : [\n ...context.trustedOrigins,\n ...await context.options.trustedOrigins?.(ctx.request) || []\n ];\n const usesCookies = ctx.headers?.has(\"cookie\");\n const matchesPattern = (url, pattern) => {\n if (url.startsWith(\"/\")) {\n return false;\n }\n if (pattern.includes(\"*\")) {\n return wildcardMatch(pattern)(getHost(url));\n }\n const protocol = getProtocol(url);\n return protocol === \"http:\" || protocol === \"https:\" || !protocol ? pattern === getOrigin(url) : url.startsWith(pattern);\n };\n const validateURL = (url, label) => {\n if (!url) {\n return;\n }\n const isTrustedOrigin = trustedOrigins.some(\n (origin) => matchesPattern(url, origin) || url?.startsWith(\"/\") && label !== \"origin\" && /^\\/(?!\\/|\\\\|%2f|%5c)[\\w\\-.\\+/@]*(?:\\?[\\w\\-.\\+/=&%@]*)?$/.test(url)\n );\n if (!isTrustedOrigin) {\n ctx.context.logger.error(`Invalid ${label}: ${url}`);\n ctx.context.logger.info(\n `If it's a valid URL, please add ${url} to trustedOrigins in your auth config\n`,\n `Current list of trustedOrigins: ${trustedOrigins}`\n );\n throw new APIError(\"FORBIDDEN\", { message: `Invalid ${label}` });\n }\n };\n if (usesCookies && !ctx.context.options.advanced?.disableCSRFCheck) {\n validateURL(originHeader, \"origin\");\n }\n callbackURL && validateURL(callbackURL, \"callbackURL\");\n redirectURL && validateURL(redirectURL, \"redirectURL\");\n errorCallbackURL && validateURL(errorCallbackURL, \"errorCallbackURL\");\n newUserCallbackURL && validateURL(newUserCallbackURL, \"newUserCallbackURL\");\n});\nconst originCheck = (getValue) => createAuthMiddleware(async (ctx) => {\n if (!ctx.request) {\n return;\n }\n const { context } = ctx;\n const callbackURL = getValue(ctx);\n const trustedOrigins = Array.isArray(\n context.options.trustedOrigins\n ) ? context.trustedOrigins : [\n ...context.trustedOrigins,\n ...await context.options.trustedOrigins?.(ctx.request) || []\n ];\n const matchesPattern = (url, pattern) => {\n if (url.startsWith(\"/\")) {\n return false;\n }\n if (pattern.includes(\"*\")) {\n return wildcardMatch(pattern)(getHost(url));\n }\n const protocol = getProtocol(url);\n return protocol === \"http:\" || protocol === \"https:\" || !protocol ? pattern === getOrigin(url) : url.startsWith(pattern);\n };\n const validateURL = (url, label) => {\n if (!url) {\n return;\n }\n const isTrustedOrigin = trustedOrigins.some(\n (origin) => matchesPattern(url, origin) || url?.startsWith(\"/\") && label !== \"origin\" && /^\\/(?!\\/|\\\\|%2f|%5c)[\\w\\-.\\+/@]*(?:\\?[\\w\\-.\\+/=&%@]*)?$/.test(\n url\n )\n );\n if (!isTrustedOrigin) {\n ctx.context.logger.error(`Invalid ${label}: ${url}`);\n ctx.context.logger.info(\n `If it's a valid URL, please add ${url} to trustedOrigins in your auth config\n`,\n `Current list of trustedOrigins: ${trustedOrigins}`\n );\n throw new APIError(\"FORBIDDEN\", { message: `Invalid ${label}` });\n }\n };\n const callbacks = Array.isArray(callbackURL) ? callbackURL : [callbackURL];\n for (const url of callbacks) {\n validateURL(url, \"callbackURL\");\n }\n});\n\nconst BASE_ERROR_CODES = {\n USER_NOT_FOUND: \"User not found\",\n FAILED_TO_CREATE_USER: \"Failed to create user\",\n FAILED_TO_CREATE_SESSION: \"Failed to create session\",\n FAILED_TO_UPDATE_USER: \"Failed to update user\",\n FAILED_TO_GET_SESSION: \"Failed to get session\",\n INVALID_PASSWORD: \"Invalid password\",\n INVALID_EMAIL: \"Invalid email\",\n INVALID_EMAIL_OR_PASSWORD: \"Invalid email or password\",\n SOCIAL_ACCOUNT_ALREADY_LINKED: \"Social account already linked\",\n PROVIDER_NOT_FOUND: \"Provider not found\",\n INVALID_TOKEN: \"invalid token\",\n ID_TOKEN_NOT_SUPPORTED: \"id_token not supported\",\n FAILED_TO_GET_USER_INFO: \"Failed to get user info\",\n USER_EMAIL_NOT_FOUND: \"User email not found\",\n EMAIL_NOT_VERIFIED: \"Email not verified\",\n PASSWORD_TOO_SHORT: \"Password too short\",\n PASSWORD_TOO_LONG: \"Password too long\",\n USER_ALREADY_EXISTS: \"User already exists\",\n EMAIL_CAN_NOT_BE_UPDATED: \"Email can not be updated\",\n CREDENTIAL_ACCOUNT_NOT_FOUND: \"Credential account not found\",\n SESSION_EXPIRED: \"Session expired. Re-authenticate to perform this action.\",\n FAILED_TO_UNLINK_LAST_ACCOUNT: \"You can't unlink your last account\",\n ACCOUNT_NOT_FOUND: \"Account not found\",\n USER_ALREADY_HAS_PASSWORD: \"User already has a password. Provide that to delete the account.\"\n};\n\nconst getSession = () => createAuthEndpoint(\n \"/get-session\",\n {\n method: \"GET\",\n query: z.optional(\n z.object({\n /**\n * If cookie cache is enabled, it will disable the cache\n * and fetch the session from the database\n */\n disableCookieCache: z.optional(\n z.boolean({\n description: \"Disable cookie cache and fetch session from database\"\n }).or(z.string().transform((v) => v === \"true\"))\n ).optional(),\n disableRefresh: z.boolean({\n description: \"Disable session refresh. Useful for checking session status, without updating the session\"\n }).or(z.string().transform((v) => v === \"true\")).optional()\n })\n ),\n requireHeaders: true,\n metadata: {\n openapi: {\n description: \"Get the current session\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n session: {\n $ref: \"#/components/schemas/Session\"\n },\n user: {\n $ref: \"#/components/schemas/User\"\n }\n },\n required: [\"session\", \"user\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n try {\n const sessionCookieToken = await ctx.getSignedCookie(\n ctx.context.authCookies.sessionToken.name,\n ctx.context.secret\n );\n if (!sessionCookieToken) {\n return null;\n }\n const sessionDataCookie = ctx.getCookie(\n ctx.context.authCookies.sessionData.name\n );\n const sessionDataPayload = sessionDataCookie ? safeJSONParse(binary.decode(base64.decode(sessionDataCookie))) : null;\n if (sessionDataPayload) {\n const isValid = await createHMAC(\"SHA-256\", \"base64urlnopad\").verify(\n ctx.context.secret,\n JSON.stringify({\n ...sessionDataPayload.session,\n expiresAt: sessionDataPayload.expiresAt\n }),\n sessionDataPayload.signature\n );\n if (!isValid) {\n const dataCookie = ctx.context.authCookies.sessionData.name;\n ctx.setCookie(dataCookie, \"\", {\n maxAge: 0\n });\n return ctx.json(null);\n }\n }\n const dontRememberMe = await ctx.getSignedCookie(\n ctx.context.authCookies.dontRememberToken.name,\n ctx.context.secret\n );\n if (sessionDataPayload?.session && ctx.context.options.session?.cookieCache?.enabled && !ctx.query?.disableCookieCache) {\n const session2 = sessionDataPayload.session;\n const hasExpired = sessionDataPayload.expiresAt < Date.now() || session2.session.expiresAt < /* @__PURE__ */ new Date();\n if (!hasExpired) {\n return ctx.json(\n session2\n );\n } else {\n const dataCookie = ctx.context.authCookies.sessionData.name;\n ctx.setCookie(dataCookie, \"\", {\n maxAge: 0\n });\n }\n }\n const session = await ctx.context.internalAdapter.findSession(sessionCookieToken);\n ctx.context.session = session;\n if (!session || session.session.expiresAt < /* @__PURE__ */ new Date()) {\n deleteSessionCookie(ctx);\n if (session) {\n await ctx.context.internalAdapter.deleteSession(\n session.session.token\n );\n }\n return ctx.json(null);\n }\n if (dontRememberMe || ctx.query?.disableRefresh) {\n return ctx.json(\n session\n );\n }\n const expiresIn = ctx.context.sessionConfig.expiresIn;\n const updateAge = ctx.context.sessionConfig.updateAge;\n const sessionIsDueToBeUpdatedDate = session.session.expiresAt.valueOf() - expiresIn * 1e3 + updateAge * 1e3;\n const shouldBeUpdated = sessionIsDueToBeUpdatedDate <= Date.now();\n if (shouldBeUpdated && (!ctx.query?.disableRefresh || !ctx.context.options.session?.disableSessionRefresh)) {\n const updatedSession = await ctx.context.internalAdapter.updateSession(\n session.session.token,\n {\n expiresAt: getDate(ctx.context.sessionConfig.expiresIn, \"sec\"),\n updatedAt: /* @__PURE__ */ new Date()\n }\n );\n if (!updatedSession) {\n deleteSessionCookie(ctx);\n return ctx.json(null, { status: 401 });\n }\n const maxAge = (updatedSession.expiresAt.valueOf() - Date.now()) / 1e3;\n await setSessionCookie(\n ctx,\n {\n session: updatedSession,\n user: session.user\n },\n false,\n {\n maxAge\n }\n );\n return ctx.json({\n session: updatedSession,\n user: session.user\n });\n }\n await setCookieCache(ctx, session);\n return ctx.json(\n session\n );\n } catch (error) {\n ctx.context.logger.error(\"INTERNAL_SERVER_ERROR\", error);\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_SESSION\n });\n }\n }\n);\nconst getSessionFromCtx = async (ctx, config) => {\n if (ctx.context.session) {\n return ctx.context.session;\n }\n const session = await getSession()({\n ...ctx,\n asResponse: false,\n headers: ctx.headers,\n returnHeaders: false,\n query: {\n ...config,\n ...ctx.query\n }\n }).catch((e) => {\n return null;\n });\n ctx.context.session = session;\n return session;\n};\nconst sessionMiddleware = createAuthMiddleware(async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session?.session) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n return {\n session\n };\n});\nconst requestOnlySessionMiddleware = createAuthMiddleware(\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session?.session && (ctx.request || ctx.headers)) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n return { session };\n }\n);\nconst freshSessionMiddleware = createAuthMiddleware(async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session?.session) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n if (ctx.context.sessionConfig.freshAge === 0) {\n return {\n session\n };\n }\n const freshAge = ctx.context.sessionConfig.freshAge;\n const lastUpdated = session.session.updatedAt?.valueOf() || session.session.createdAt.valueOf();\n const now = Date.now();\n const isFresh = now - lastUpdated < freshAge * 1e3;\n if (!isFresh) {\n throw new APIError(\"FORBIDDEN\", {\n message: \"Session is not fresh\"\n });\n }\n return {\n session\n };\n});\nconst listSessions = () => createAuthEndpoint(\n \"/list-sessions\",\n {\n method: \"GET\",\n use: [sessionMiddleware],\n requireHeaders: true,\n metadata: {\n openapi: {\n description: \"List all active sessions for the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: \"#/components/schemas/Session\"\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n try {\n const sessions = await ctx.context.internalAdapter.listSessions(\n ctx.context.session.user.id\n );\n const activeSessions = sessions.filter((session) => {\n return session.expiresAt > /* @__PURE__ */ new Date();\n });\n return ctx.json(\n activeSessions\n );\n } catch (e) {\n ctx.context.logger.error(e);\n throw ctx.error(\"INTERNAL_SERVER_ERROR\");\n }\n }\n);\nconst revokeSession = createAuthEndpoint(\n \"/revoke-session\",\n {\n method: \"POST\",\n body: z.object({\n token: z.string({\n description: \"The token to revoke\"\n })\n }),\n use: [sessionMiddleware],\n requireHeaders: true,\n metadata: {\n openapi: {\n description: \"Revoke a single session\",\n requestBody: {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n token: {\n type: \"string\",\n description: \"The token to revoke\"\n }\n },\n required: [\"token\"]\n }\n }\n }\n },\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if the session was revoked successfully\"\n }\n },\n required: [\"status\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const token = ctx.body.token;\n const findSession = await ctx.context.internalAdapter.findSession(token);\n if (!findSession) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Session not found\"\n });\n }\n if (findSession.session.userId !== ctx.context.session.user.id) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n try {\n await ctx.context.internalAdapter.deleteSession(token);\n } catch (error) {\n ctx.context.logger.error(\n error && typeof error === \"object\" && \"name\" in error ? error.name : \"\",\n error\n );\n throw new APIError(\"INTERNAL_SERVER_ERROR\");\n }\n return ctx.json({\n status: true\n });\n }\n);\nconst revokeSessions = createAuthEndpoint(\n \"/revoke-sessions\",\n {\n method: \"POST\",\n use: [sessionMiddleware],\n requireHeaders: true,\n metadata: {\n openapi: {\n description: \"Revoke all sessions for the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if all sessions were revoked successfully\"\n }\n },\n required: [\"status\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n try {\n await ctx.context.internalAdapter.deleteSessions(\n ctx.context.session.user.id\n );\n } catch (error) {\n ctx.context.logger.error(\n error && typeof error === \"object\" && \"name\" in error ? error.name : \"\",\n error\n );\n throw new APIError(\"INTERNAL_SERVER_ERROR\");\n }\n return ctx.json({\n status: true\n });\n }\n);\nconst revokeOtherSessions = createAuthEndpoint(\n \"/revoke-other-sessions\",\n {\n method: \"POST\",\n requireHeaders: true,\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n description: \"Revoke all other sessions for the user except the current one\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if all other sessions were revoked successfully\"\n }\n },\n required: [\"status\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n if (!session.user) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n const sessions = await ctx.context.internalAdapter.listSessions(\n session.user.id\n );\n const activeSessions = sessions.filter((session2) => {\n return session2.expiresAt > /* @__PURE__ */ new Date();\n });\n const otherSessions = activeSessions.filter(\n (session2) => session2.token !== ctx.context.session.session.token\n );\n await Promise.all(\n otherSessions.map(\n (session2) => ctx.context.internalAdapter.deleteSession(session2.token)\n )\n );\n return ctx.json({\n status: true\n });\n }\n);\n\nasync function createEmailVerificationToken(secret, email, updateTo, expiresIn = 3600) {\n const token = await signJWT(\n {\n email: email.toLowerCase(),\n updateTo\n },\n secret,\n expiresIn\n );\n return token;\n}\nasync function sendVerificationEmailFn(ctx, user) {\n if (!ctx.context.options.emailVerification?.sendVerificationEmail) {\n ctx.context.logger.error(\"Verification email isn't enabled.\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Verification email isn't enabled\"\n });\n }\n const token = await createEmailVerificationToken(\n ctx.context.secret,\n user.email,\n void 0,\n ctx.context.options.emailVerification?.expiresIn\n );\n const url = `${ctx.context.baseURL}/verify-email?token=${token}&callbackURL=${ctx.body.callbackURL || \"/\"}`;\n await ctx.context.options.emailVerification.sendVerificationEmail(\n {\n user,\n url,\n token\n },\n ctx.request\n );\n}\nconst sendVerificationEmail = createAuthEndpoint(\n \"/send-verification-email\",\n {\n method: \"POST\",\n body: z.object({\n email: z.string({\n description: \"The email to send the verification email to\"\n }).email(),\n callbackURL: z.string({\n description: \"The URL to use for email verification callback\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Send a verification email to the user\",\n requestBody: {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n email: {\n type: \"string\",\n description: \"The email to send the verification email to\",\n example: \"user@example.com\"\n },\n callbackURL: {\n type: \"string\",\n description: \"The URL to use for email verification callback\",\n example: \"https://example.com/callback\",\n nullable: true\n }\n },\n required: [\"email\"]\n }\n }\n }\n },\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if the email was sent successfully\",\n example: true\n }\n }\n }\n }\n }\n },\n \"400\": {\n description: \"Bad Request\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\",\n description: \"Error message\",\n example: \"Verification email isn't enabled\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.emailVerification?.sendVerificationEmail) {\n ctx.context.logger.error(\"Verification email isn't enabled.\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Verification email isn't enabled\"\n });\n }\n const { email } = ctx.body;\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n const user = await ctx.context.internalAdapter.findUserByEmail(email);\n if (!user) {\n return ctx.json({\n status: true\n });\n }\n await sendVerificationEmailFn(ctx, user.user);\n return ctx.json({\n status: true\n });\n }\n if (session?.user.emailVerified) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"You can only send a verification email to an unverified email\"\n });\n }\n if (session?.user.email !== email) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"You can only send a verification email to your own email\"\n });\n }\n await sendVerificationEmailFn(ctx, session.user);\n return ctx.json({\n status: true\n });\n }\n);\nconst verifyEmail = createAuthEndpoint(\n \"/verify-email\",\n {\n method: \"GET\",\n query: z.object({\n token: z.string({\n description: \"The token to verify the email\"\n }),\n callbackURL: z.string({\n description: \"The URL to redirect to after email verification\"\n }).optional()\n }),\n use: [originCheck((ctx) => ctx.query.callbackURL)],\n metadata: {\n openapi: {\n description: \"Verify the email of the user\",\n parameters: [\n {\n name: \"token\",\n in: \"query\",\n description: \"The token to verify the email\",\n required: true,\n schema: {\n type: \"string\"\n }\n },\n {\n name: \"callbackURL\",\n in: \"query\",\n description: \"The URL to redirect to after email verification\",\n required: false,\n schema: {\n type: \"string\"\n }\n }\n ],\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n user: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: \"User ID\"\n },\n email: {\n type: \"string\",\n description: \"User email\"\n },\n name: {\n type: \"string\",\n description: \"User name\"\n },\n image: {\n type: \"string\",\n description: \"User image URL\"\n },\n emailVerified: {\n type: \"boolean\",\n description: \"Indicates if the user email is verified\"\n },\n createdAt: {\n type: \"string\",\n description: \"User creation date\"\n },\n updatedAt: {\n type: \"string\",\n description: \"User update date\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"name\",\n \"image\",\n \"emailVerified\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n status: {\n type: \"boolean\",\n description: \"Indicates if the email was verified successfully\"\n }\n },\n required: [\"user\", \"status\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n function redirectOnError(error) {\n if (ctx.query.callbackURL) {\n if (ctx.query.callbackURL.includes(\"?\")) {\n throw ctx.redirect(`${ctx.query.callbackURL}&error=${error}`);\n }\n throw ctx.redirect(`${ctx.query.callbackURL}?error=${error}`);\n }\n throw new APIError(\"UNAUTHORIZED\", {\n message: error\n });\n }\n const { token } = ctx.query;\n let jwt;\n try {\n jwt = await jwtVerify(\n token,\n new TextEncoder().encode(ctx.context.secret),\n {\n algorithms: [\"HS256\"]\n }\n );\n } catch (e) {\n if (e instanceof JWTExpired) {\n return redirectOnError(\"token_expired\");\n }\n return redirectOnError(\"invalid_token\");\n }\n const schema = z.object({\n email: z.string().email(),\n updateTo: z.string().optional()\n });\n const parsed = schema.parse(jwt.payload);\n const user = await ctx.context.internalAdapter.findUserByEmail(\n parsed.email\n );\n if (!user) {\n return redirectOnError(\"user_not_found\");\n }\n if (parsed.updateTo) {\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n if (ctx.query.callbackURL) {\n throw ctx.redirect(`${ctx.query.callbackURL}?error=unauthorized`);\n }\n return redirectOnError(\"unauthorized\");\n }\n if (session.user.email !== parsed.email) {\n if (ctx.query.callbackURL) {\n throw ctx.redirect(`${ctx.query.callbackURL}?error=unauthorized`);\n }\n return redirectOnError(\"unauthorized\");\n }\n const updatedUser = await ctx.context.internalAdapter.updateUserByEmail(\n parsed.email,\n {\n email: parsed.updateTo,\n emailVerified: false\n },\n ctx\n );\n const newToken = await createEmailVerificationToken(\n ctx.context.secret,\n parsed.updateTo\n );\n await ctx.context.options.emailVerification?.sendVerificationEmail?.(\n {\n user: updatedUser,\n url: `${ctx.context.baseURL}/verify-email?token=${newToken}&callbackURL=${ctx.query.callbackURL || \"/\"}`,\n token: newToken\n },\n ctx.request\n );\n await setSessionCookie(ctx, {\n session: session.session,\n user: {\n ...session.user,\n email: parsed.updateTo,\n emailVerified: false\n }\n });\n if (ctx.query.callbackURL) {\n throw ctx.redirect(ctx.query.callbackURL);\n }\n return ctx.json({\n status: true,\n user: {\n id: updatedUser.id,\n email: updatedUser.email,\n name: updatedUser.name,\n image: updatedUser.image,\n emailVerified: updatedUser.emailVerified,\n createdAt: updatedUser.createdAt,\n updatedAt: updatedUser.updatedAt\n }\n });\n }\n await ctx.context.options.emailVerification?.onEmailVerification?.(\n user.user,\n ctx.request\n );\n await ctx.context.internalAdapter.updateUserByEmail(\n parsed.email,\n {\n emailVerified: true\n },\n ctx\n );\n if (ctx.context.options.emailVerification?.autoSignInAfterVerification) {\n const currentSession = await getSessionFromCtx(ctx);\n if (!currentSession || currentSession.user.email !== parsed.email) {\n const session = await ctx.context.internalAdapter.createSession(\n user.user.id,\n ctx\n );\n if (!session) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to create session\"\n });\n }\n await setSessionCookie(ctx, {\n session,\n user: {\n ...user.user,\n emailVerified: true\n }\n });\n } else {\n await setSessionCookie(ctx, {\n session: currentSession.session,\n user: {\n ...currentSession.user,\n emailVerified: true\n }\n });\n }\n }\n if (ctx.query.callbackURL) {\n throw ctx.redirect(ctx.query.callbackURL);\n }\n return ctx.json({\n status: true,\n user: null\n });\n }\n);\n\nconst HIDE_METADATA = {\n isAction: false\n};\n\nasync function handleOAuthUserInfo(c, {\n userInfo,\n account,\n callbackURL,\n disableSignUp,\n overrideUserInfo\n}) {\n const dbUser = await c.context.internalAdapter.findOAuthUser(\n userInfo.email.toLowerCase(),\n account.accountId,\n account.providerId\n ).catch((e) => {\n logger.error(\n \"Better auth was unable to query your database.\\nError: \",\n e\n );\n const errorURL = c.context.options.onAPIError?.errorURL || `${c.context.baseURL}/error`;\n throw c.redirect(`${errorURL}?error=internal_server_error`);\n });\n let user = dbUser?.user;\n let isRegister = !user;\n if (dbUser) {\n const hasBeenLinked = dbUser.accounts.find(\n (a) => a.providerId === account.providerId && a.accountId === account.accountId\n );\n if (!hasBeenLinked) {\n const trustedProviders = c.context.options.account?.accountLinking?.trustedProviders;\n const isTrustedProvider = trustedProviders?.includes(\n account.providerId\n );\n if (!isTrustedProvider && !userInfo.emailVerified || c.context.options.account?.accountLinking?.enabled === false) {\n if (isDevelopment) {\n logger.warn(\n `User already exist but account isn't linked to ${account.providerId}. To read more about how account linking works in Better Auth see https://www.better-auth.com/docs/concepts/users-accounts#account-linking.`\n );\n }\n return {\n error: \"account not linked\",\n data: null\n };\n }\n try {\n await c.context.internalAdapter.linkAccount(\n {\n providerId: account.providerId,\n accountId: userInfo.id.toString(),\n userId: dbUser.user.id,\n accessToken: account.accessToken,\n idToken: account.idToken,\n refreshToken: account.refreshToken,\n accessTokenExpiresAt: account.accessTokenExpiresAt,\n refreshTokenExpiresAt: account.refreshTokenExpiresAt,\n scope: account.scope\n },\n c\n );\n } catch (e) {\n logger.error(\"Unable to link account\", e);\n return {\n error: \"unable to link account\",\n data: null\n };\n }\n } else {\n if (c.context.options.account?.updateAccountOnSignIn !== false) {\n const updateData = Object.fromEntries(\n Object.entries({\n accessToken: account.accessToken,\n idToken: account.idToken,\n refreshToken: account.refreshToken,\n accessTokenExpiresAt: account.accessTokenExpiresAt,\n refreshTokenExpiresAt: account.refreshTokenExpiresAt,\n scope: account.scope\n }).filter(([_, value]) => value !== void 0)\n );\n if (Object.keys(updateData).length > 0) {\n await c.context.internalAdapter.updateAccount(\n hasBeenLinked.id,\n updateData,\n c\n );\n }\n }\n }\n if (overrideUserInfo) {\n const { id: _, ...restUserInfo } = userInfo;\n await c.context.internalAdapter.updateUser(dbUser.user.id, {\n ...restUserInfo,\n email: userInfo.email.toLowerCase(),\n emailVerified: userInfo.email.toLowerCase() === dbUser.user.email ? dbUser.user.emailVerified || userInfo.emailVerified : userInfo.emailVerified\n });\n }\n } else {\n if (disableSignUp) {\n return {\n error: \"signup disabled\",\n data: null,\n isRegister: false\n };\n }\n try {\n const { id: _, ...restUserInfo } = userInfo;\n user = await c.context.internalAdapter.createOAuthUser(\n {\n ...restUserInfo,\n email: userInfo.email.toLowerCase()\n },\n {\n accessToken: account.accessToken,\n idToken: account.idToken,\n refreshToken: account.refreshToken,\n accessTokenExpiresAt: account.accessTokenExpiresAt,\n refreshTokenExpiresAt: account.refreshTokenExpiresAt,\n scope: account.scope,\n providerId: account.providerId,\n accountId: userInfo.id.toString()\n },\n c\n ).then((res) => res?.user);\n if (!userInfo.emailVerified && user && c.context.options.emailVerification?.sendOnSignUp) {\n const token = await createEmailVerificationToken(\n c.context.secret,\n user.email,\n void 0,\n c.context.options.emailVerification?.expiresIn\n );\n const url = `${c.context.baseURL}/verify-email?token=${token}&callbackURL=${callbackURL}`;\n await c.context.options.emailVerification?.sendVerificationEmail?.(\n {\n user,\n url,\n token\n },\n c.request\n );\n }\n } catch (e) {\n logger.error(e);\n if (e instanceof APIError) {\n return {\n error: e.message,\n data: null,\n isRegister: false\n };\n }\n return {\n error: \"unable to create user\",\n data: null,\n isRegister: false\n };\n }\n }\n if (!user) {\n return {\n error: \"unable to create user\",\n data: null,\n isRegister: false\n };\n }\n const session = await c.context.internalAdapter.createSession(user.id, c);\n if (!session) {\n return {\n error: \"unable to create session\",\n data: null,\n isRegister: false\n };\n }\n return {\n data: {\n session,\n user\n },\n error: null,\n isRegister\n };\n}\n\nconst signInSocial = createAuthEndpoint(\n \"/sign-in/social\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * Callback URL to redirect to after the user\n * has signed in.\n */\n callbackURL: z.string({\n description: \"Callback URL to redirect to after the user has signed in\"\n }).optional(),\n /**\n * callback url to redirect if the user is newly registered.\n *\n * useful if you have different routes for existing users and new users\n */\n newUserCallbackURL: z.string().optional(),\n /**\n * Callback url to redirect to if an error happens\n *\n * If it's initiated from the client sdk this defaults to\n * the current url.\n */\n errorCallbackURL: z.string({\n description: \"Callback URL to redirect to if an error happens\"\n }).optional(),\n /**\n * OAuth2 provider to use`\n */\n provider: SocialProviderListEnum,\n /**\n * Disable automatic redirection to the provider\n *\n * This is useful if you want to handle the redirection\n * yourself like in a popup or a different tab.\n */\n disableRedirect: z.boolean({\n description: \"Disable automatic redirection to the provider. Useful for handling the redirection yourself\"\n }).optional(),\n /**\n * ID token from the provider\n *\n * This is used to sign in the user\n * if the user is already signed in with the\n * provider in the frontend.\n *\n * Only applicable if the provider supports\n * it. Currently only `apple` and `google` is\n * supported out of the box.\n */\n idToken: z.optional(\n z.object({\n /**\n * ID token from the provider\n */\n token: z.string({\n description: \"ID token from the provider\"\n }),\n /**\n * The nonce used to generate the token\n */\n nonce: z.string({\n description: \"Nonce used to generate the token\"\n }).optional(),\n /**\n * Access token from the provider\n */\n accessToken: z.string({\n description: \"Access token from the provider\"\n }).optional(),\n /**\n * Refresh token from the provider\n */\n refreshToken: z.string({\n description: \"Refresh token from the provider\"\n }).optional(),\n /**\n * Expiry date of the token\n */\n expiresAt: z.number({\n description: \"Expiry date of the token\"\n }).optional()\n }),\n {\n description: \"ID token from the provider to sign in the user with id token\"\n }\n ),\n scopes: z.array(z.string(), {\n description: \"Array of scopes to request from the provider. This will override the default scopes passed.\"\n }).optional(),\n /**\n * Explicitly request sign-up\n *\n * Should be used to allow sign up when\n * disableImplicitSignUp for this provider is\n * true\n */\n requestSignUp: z.boolean({\n description: \"Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider\"\n }).optional(),\n /**\n * The login hint to use for the authorization code request\n */\n loginHint: z.string({\n description: \"The login hint to use for the authorization code request\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Sign in with a social provider\",\n operationId: \"socialSignIn\",\n responses: {\n \"200\": {\n description: \"Success - Returns either session details or redirect URL\",\n content: {\n \"application/json\": {\n schema: {\n // todo: we need support for multiple schema\n type: \"object\",\n description: \"Session response when idToken is provided\",\n properties: {\n redirect: {\n type: \"boolean\",\n enum: [false]\n },\n token: {\n type: \"string\",\n description: \"Session token\",\n url: {\n type: \"null\",\n nullable: true\n },\n user: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n email: { type: \"string\" },\n name: {\n type: \"string\",\n nullable: true\n },\n image: {\n type: \"string\",\n nullable: true\n },\n emailVerified: {\n type: \"boolean\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"emailVerified\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n }\n },\n required: [\"redirect\", \"token\", \"user\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (c) => {\n const provider = c.context.socialProviders.find(\n (p) => p.id === c.body.provider\n );\n if (!provider) {\n c.context.logger.error(\n \"Provider not found. Make sure to add the provider in your auth config\",\n {\n provider: c.body.provider\n }\n );\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.PROVIDER_NOT_FOUND\n });\n }\n if (c.body.idToken) {\n if (!provider.verifyIdToken) {\n c.context.logger.error(\n \"Provider does not support id token verification\",\n {\n provider: c.body.provider\n }\n );\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.ID_TOKEN_NOT_SUPPORTED\n });\n }\n const { token, nonce } = c.body.idToken;\n const valid = await provider.verifyIdToken(token, nonce);\n if (!valid) {\n c.context.logger.error(\"Invalid id token\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n const userInfo = await provider.getUserInfo({\n idToken: token,\n accessToken: c.body.idToken.accessToken,\n refreshToken: c.body.idToken.refreshToken\n });\n if (!userInfo || !userInfo?.user) {\n c.context.logger.error(\"Failed to get user info\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_USER_INFO\n });\n }\n if (!userInfo.user.email) {\n c.context.logger.error(\"User email not found\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.USER_EMAIL_NOT_FOUND\n });\n }\n const data = await handleOAuthUserInfo(c, {\n userInfo: {\n ...userInfo.user,\n email: userInfo.user.email,\n id: userInfo.user.id,\n name: userInfo.user.name || \"\",\n image: userInfo.user.image,\n emailVerified: userInfo.user.emailVerified || false\n },\n account: {\n providerId: provider.id,\n accountId: userInfo.user.id,\n accessToken: c.body.idToken.accessToken\n },\n callbackURL: c.body.callbackURL,\n disableSignUp: provider.disableImplicitSignUp && !c.body.requestSignUp || provider.disableSignUp\n });\n if (data.error) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: data.error\n });\n }\n await setSessionCookie(c, data.data);\n return c.json({\n redirect: false,\n token: data.data.session.token,\n url: void 0,\n user: {\n id: data.data.user.id,\n email: data.data.user.email,\n name: data.data.user.name,\n image: data.data.user.image,\n emailVerified: data.data.user.emailVerified,\n createdAt: data.data.user.createdAt,\n updatedAt: data.data.user.updatedAt\n }\n });\n }\n const { codeVerifier, state } = await generateState(c);\n const url = await provider.createAuthorizationURL({\n state,\n codeVerifier,\n redirectURI: `${c.context.baseURL}/callback/${provider.id}`,\n scopes: c.body.scopes,\n loginHint: c.body.loginHint\n });\n return c.json({\n url: url.toString(),\n redirect: !c.body.disableRedirect\n });\n }\n);\nconst signInEmail = createAuthEndpoint(\n \"/sign-in/email\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * Email of the user\n */\n email: z.string({\n description: \"Email of the user\"\n }),\n /**\n * Password of the user\n */\n password: z.string({\n description: \"Password of the user\"\n }),\n /**\n * Callback URL to use as a redirect for email\n * verification and for possible redirects\n */\n callbackURL: z.string({\n description: \"Callback URL to use as a redirect for email verification\"\n }).optional(),\n /**\n * If this is false, the session will not be remembered\n * @default true\n */\n rememberMe: z.boolean({\n description: \"If this is false, the session will not be remembered. Default is `true`.\"\n }).default(true).optional()\n }),\n metadata: {\n openapi: {\n description: \"Sign in with email and password\",\n responses: {\n \"200\": {\n description: \"Success - Returns either session details or redirect URL\",\n content: {\n \"application/json\": {\n schema: {\n // todo: we need support for multiple schema\n type: \"object\",\n description: \"Session response when idToken is provided\",\n properties: {\n redirect: {\n type: \"boolean\",\n enum: [false]\n },\n token: {\n type: \"string\",\n description: \"Session token\"\n },\n url: {\n type: \"null\",\n nullable: true\n },\n user: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n email: { type: \"string\" },\n name: {\n type: \"string\",\n nullable: true\n },\n image: {\n type: \"string\",\n nullable: true\n },\n emailVerified: {\n type: \"boolean\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"emailVerified\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n },\n required: [\"redirect\", \"token\", \"user\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options?.emailAndPassword?.enabled) {\n ctx.context.logger.error(\n \"Email and password is not enabled. Make sure to enable it in the options on you `auth.ts` file. Check `https://better-auth.com/docs/authentication/email-password` for more!\"\n );\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Email and password is not enabled\"\n });\n }\n const { email, password } = ctx.body;\n const isValidEmail = z.string().email().safeParse(email);\n if (!isValidEmail.success) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.INVALID_EMAIL\n });\n }\n const user = await ctx.context.internalAdapter.findUserByEmail(email, {\n includeAccounts: true\n });\n if (!user) {\n await ctx.context.password.hash(password);\n ctx.context.logger.error(\"User not found\", { email });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_EMAIL_OR_PASSWORD\n });\n }\n const credentialAccount = user.accounts.find(\n (a) => a.providerId === \"credential\"\n );\n if (!credentialAccount) {\n ctx.context.logger.error(\"Credential account not found\", { email });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_EMAIL_OR_PASSWORD\n });\n }\n const currentPassword = credentialAccount?.password;\n if (!currentPassword) {\n ctx.context.logger.error(\"Password not found\", { email });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_EMAIL_OR_PASSWORD\n });\n }\n const validPassword = await ctx.context.password.verify({\n hash: currentPassword,\n password\n });\n if (!validPassword) {\n ctx.context.logger.error(\"Invalid password\");\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_EMAIL_OR_PASSWORD\n });\n }\n if (ctx.context.options?.emailAndPassword?.requireEmailVerification && !user.user.emailVerified) {\n if (!ctx.context.options?.emailVerification?.sendVerificationEmail) {\n throw new APIError(\"FORBIDDEN\", {\n message: BASE_ERROR_CODES.EMAIL_NOT_VERIFIED\n });\n }\n const token = await createEmailVerificationToken(\n ctx.context.secret,\n user.user.email,\n void 0,\n ctx.context.options.emailVerification?.expiresIn\n );\n const url = `${ctx.context.baseURL}/verify-email?token=${token}&callbackURL=${ctx.body.callbackURL || \"/\"}`;\n await ctx.context.options.emailVerification.sendVerificationEmail(\n {\n user: user.user,\n url,\n token\n },\n ctx.request\n );\n throw new APIError(\"FORBIDDEN\", {\n message: BASE_ERROR_CODES.EMAIL_NOT_VERIFIED\n });\n }\n const session = await ctx.context.internalAdapter.createSession(\n user.user.id,\n ctx,\n ctx.body.rememberMe === false\n );\n if (!session) {\n ctx.context.logger.error(\"Failed to create session\");\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.FAILED_TO_CREATE_SESSION\n });\n }\n await setSessionCookie(\n ctx,\n {\n session,\n user: user.user\n },\n ctx.body.rememberMe === false\n );\n return ctx.json({\n redirect: !!ctx.body.callbackURL,\n token: session.token,\n url: ctx.body.callbackURL,\n user: {\n id: user.user.id,\n email: user.user.email,\n name: user.user.name,\n image: user.user.image,\n emailVerified: user.user.emailVerified,\n createdAt: user.user.createdAt,\n updatedAt: user.user.updatedAt\n }\n });\n }\n);\n\nconst schema = z.object({\n code: z.string().optional(),\n error: z.string().optional(),\n device_id: z.string().optional(),\n error_description: z.string().optional(),\n state: z.string().optional(),\n user: z.string().optional()\n});\nconst callbackOAuth = createAuthEndpoint(\n \"/callback/:id\",\n {\n method: [\"GET\", \"POST\"],\n body: schema.optional(),\n query: schema.optional(),\n metadata: HIDE_METADATA\n },\n async (c) => {\n let queryOrBody;\n const defaultErrorURL = c.context.options.onAPIError?.errorURL || `${c.context.baseURL}/error`;\n try {\n if (c.method === \"GET\") {\n queryOrBody = schema.parse(c.query);\n } else if (c.method === \"POST\") {\n queryOrBody = schema.parse(c.body);\n } else {\n throw new Error(\"Unsupported method\");\n }\n } catch (e) {\n c.context.logger.error(\"INVALID_CALLBACK_REQUEST\", e);\n throw c.redirect(`${defaultErrorURL}?error=invalid_callback_request`);\n }\n const { code, error, state, error_description, device_id } = queryOrBody;\n if (error) {\n throw c.redirect(\n `${defaultErrorURL}?error=${error}&error_description=${error_description}`\n );\n }\n if (!state) {\n c.context.logger.error(\"State not found\", error);\n throw c.redirect(`${defaultErrorURL}?error=state_not_found`);\n }\n const {\n codeVerifier,\n callbackURL,\n link,\n errorURL,\n newUserURL,\n requestSignUp\n } = await parseState(c);\n function redirectOnError(error2) {\n let url = errorURL || defaultErrorURL;\n if (url.includes(\"?\")) {\n url = `${url}&error=${error2}`;\n } else {\n url = `${url}?error=${error2}`;\n }\n throw c.redirect(url);\n }\n if (!code) {\n c.context.logger.error(\"Code not found\");\n throw redirectOnError(\"no_code\");\n }\n const provider = c.context.socialProviders.find(\n (p) => p.id === c.params.id\n );\n if (!provider) {\n c.context.logger.error(\n \"Oauth provider with id\",\n c.params.id,\n \"not found\"\n );\n throw redirectOnError(\"oauth_provider_not_found\");\n }\n let tokens;\n try {\n tokens = await provider.validateAuthorizationCode({\n code,\n codeVerifier,\n deviceId: device_id,\n redirectURI: `${c.context.baseURL}/callback/${provider.id}`\n });\n } catch (e) {\n c.context.logger.error(\"\", e);\n throw redirectOnError(\"invalid_code\");\n }\n const userInfo = await provider.getUserInfo({\n ...tokens,\n user: c.body?.user ? safeJSONParse(c.body.user) : void 0\n }).then((res) => res?.user);\n if (!userInfo) {\n c.context.logger.error(\"Unable to get user info\");\n return redirectOnError(\"unable_to_get_user_info\");\n }\n if (!userInfo.email) {\n c.context.logger.error(\n \"Provider did not return email. This could be due to misconfiguration in the provider settings.\"\n );\n return redirectOnError(\"email_not_found\");\n }\n if (!callbackURL) {\n c.context.logger.error(\"No callback URL found\");\n throw redirectOnError(\"no_callback_url\");\n }\n if (link) {\n const trustedProviders = c.context.options.account?.accountLinking?.trustedProviders;\n const isTrustedProvider = trustedProviders?.includes(\n provider.id\n );\n if (!isTrustedProvider && !userInfo.emailVerified || c.context.options.account?.accountLinking?.enabled === false) {\n c.context.logger.error(\"Unable to link account - untrusted provider\");\n return redirectOnError(\"unable_to_link_account\");\n }\n const existingAccount = await c.context.internalAdapter.findAccount(\n userInfo.id\n );\n if (existingAccount) {\n if (existingAccount.userId.toString() !== link.userId.toString()) {\n return redirectOnError(\"account_already_linked_to_different_user\");\n }\n const updateData = Object.fromEntries(\n Object.entries({\n accessToken: tokens.accessToken,\n idToken: tokens.idToken,\n refreshToken: tokens.refreshToken,\n accessTokenExpiresAt: tokens.accessTokenExpiresAt,\n refreshTokenExpiresAt: tokens.refreshTokenExpiresAt,\n scope: tokens.scopes?.join(\",\")\n }).filter(([_, value]) => value !== void 0)\n );\n await c.context.internalAdapter.updateAccount(\n existingAccount.id,\n updateData\n );\n } else {\n const newAccount = await c.context.internalAdapter.createAccount(\n {\n userId: link.userId,\n providerId: provider.id,\n accountId: userInfo.id,\n ...tokens,\n scope: tokens.scopes?.join(\",\")\n },\n c\n );\n if (!newAccount) {\n return redirectOnError(\"unable_to_link_account\");\n }\n }\n let toRedirectTo2;\n try {\n const url = callbackURL;\n toRedirectTo2 = url.toString();\n } catch {\n toRedirectTo2 = callbackURL;\n }\n throw c.redirect(toRedirectTo2);\n }\n const result = await handleOAuthUserInfo(c, {\n userInfo: {\n ...userInfo,\n email: userInfo.email,\n name: userInfo.name || userInfo.email\n },\n account: {\n providerId: provider.id,\n accountId: userInfo.id,\n ...tokens,\n scope: tokens.scopes?.join(\",\")\n },\n callbackURL,\n disableSignUp: provider.disableImplicitSignUp && !requestSignUp || provider.options?.disableSignUp,\n overrideUserInfo: provider.options?.overrideUserInfoOnSignIn\n });\n if (result.error) {\n c.context.logger.error(result.error.split(\" \").join(\"_\"));\n return redirectOnError(result.error.split(\" \").join(\"_\"));\n }\n const { session, user } = result.data;\n await setSessionCookie(c, {\n session,\n user\n });\n let toRedirectTo;\n try {\n const url = result.isRegister ? newUserURL || callbackURL : callbackURL;\n toRedirectTo = url.toString();\n } catch {\n toRedirectTo = result.isRegister ? newUserURL || callbackURL : callbackURL;\n }\n throw c.redirect(toRedirectTo);\n }\n);\n\nconst signOut = createAuthEndpoint(\n \"/sign-out\",\n {\n method: \"POST\",\n requireHeaders: true,\n metadata: {\n openapi: {\n description: \"Sign out the current user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n success: {\n type: \"boolean\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const sessionCookieToken = await ctx.getSignedCookie(\n ctx.context.authCookies.sessionToken.name,\n ctx.context.secret\n );\n if (!sessionCookieToken) {\n deleteSessionCookie(ctx);\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_SESSION\n });\n }\n await ctx.context.internalAdapter.deleteSession(sessionCookieToken);\n deleteSessionCookie(ctx);\n return ctx.json({\n success: true\n });\n }\n);\n\nfunction redirectError(ctx, callbackURL, query) {\n const url = callbackURL ? new URL(callbackURL, ctx.baseURL) : new URL(`${ctx.baseURL}/error`);\n if (query)\n Object.entries(query).forEach(([k, v]) => url.searchParams.set(k, v));\n return url.href;\n}\nfunction redirectCallback(ctx, callbackURL, query) {\n const url = new URL(callbackURL, ctx.baseURL);\n if (query)\n Object.entries(query).forEach(([k, v]) => url.searchParams.set(k, v));\n return url.href;\n}\nconst requestPasswordReset = createAuthEndpoint(\n \"/request-password-reset\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * The email address of the user to send a password reset email to.\n */\n email: z.string({\n description: \"The email address of the user to send a password reset email to\"\n }).email(),\n /**\n * The URL to redirect the user to reset their password.\n * If the token isn't valid or expired, it'll be redirected with a query parameter `?\n * error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?\n * token=VALID_TOKEN\n */\n redirectTo: z.string({\n description: \"The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Send a password reset email to the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\"\n },\n message: {\n type: \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.emailAndPassword?.sendResetPassword) {\n ctx.context.logger.error(\n \"Reset password isn't enabled.Please pass an emailAndPassword.sendResetPassword function in your auth config!\"\n );\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Reset password isn't enabled\"\n });\n }\n const { email, redirectTo } = ctx.body;\n const user = await ctx.context.internalAdapter.findUserByEmail(email, {\n includeAccounts: true\n });\n if (!user) {\n ctx.context.logger.error(\"Reset Password: User not found\", { email });\n return ctx.json({\n status: true,\n message: \"If this email exists in our system, check your email for the reset link\"\n });\n }\n const defaultExpiresIn = 60 * 60 * 1;\n const expiresAt = getDate(\n ctx.context.options.emailAndPassword.resetPasswordTokenExpiresIn || defaultExpiresIn,\n \"sec\"\n );\n const verificationToken = generateId(24);\n await ctx.context.internalAdapter.createVerificationValue(\n {\n value: user.user.id,\n identifier: `reset-password:${verificationToken}`,\n expiresAt\n },\n ctx\n );\n const callbackURL = redirectTo ? encodeURIComponent(redirectTo) : \"\";\n const url = `${ctx.context.baseURL}/reset-password/${verificationToken}?callbackURL=${callbackURL}`;\n await ctx.context.options.emailAndPassword.sendResetPassword(\n {\n user: user.user,\n url,\n token: verificationToken\n },\n ctx.request\n );\n return ctx.json({\n status: true\n });\n }\n);\nconst forgetPassword = createAuthEndpoint(\n \"/forget-password\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * The email address of the user to send a password reset email to.\n */\n email: z.string({\n description: \"The email address of the user to send a password reset email to\"\n }).email(),\n /**\n * The URL to redirect the user to reset their password.\n * If the token isn't valid or expired, it'll be redirected with a query parameter `?\n * error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?\n * token=VALID_TOKEN\n */\n redirectTo: z.string({\n description: \"The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Send a password reset email to the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\"\n },\n message: {\n type: \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.emailAndPassword?.sendResetPassword) {\n ctx.context.logger.error(\n \"Reset password isn't enabled.Please pass an emailAndPassword.sendResetPassword function in your auth config!\"\n );\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Reset password isn't enabled\"\n });\n }\n const { email, redirectTo } = ctx.body;\n const user = await ctx.context.internalAdapter.findUserByEmail(email, {\n includeAccounts: true\n });\n if (!user) {\n ctx.context.logger.error(\"Reset Password: User not found\", { email });\n return ctx.json({\n status: true,\n message: \"If this email exists in our system, check your email for the reset link\"\n });\n }\n const defaultExpiresIn = 60 * 60 * 1;\n const expiresAt = getDate(\n ctx.context.options.emailAndPassword.resetPasswordTokenExpiresIn || defaultExpiresIn,\n \"sec\"\n );\n const verificationToken = generateId(24);\n await ctx.context.internalAdapter.createVerificationValue(\n {\n value: user.user.id,\n identifier: `reset-password:${verificationToken}`,\n expiresAt\n },\n ctx\n );\n const callbackURL = redirectTo ? encodeURIComponent(redirectTo) : \"\";\n const url = `${ctx.context.baseURL}/reset-password/${verificationToken}?callbackURL=${callbackURL}`;\n await ctx.context.options.emailAndPassword.sendResetPassword(\n {\n user: user.user,\n url,\n token: verificationToken\n },\n ctx.request\n );\n return ctx.json({\n status: true\n });\n }\n);\nconst requestPasswordResetCallback = createAuthEndpoint(\n \"/reset-password/:token\",\n {\n method: \"GET\",\n query: z.object({\n callbackURL: z.string({\n description: \"The URL to redirect the user to reset their password\"\n })\n }),\n use: [originCheck((ctx) => ctx.query.callbackURL)],\n metadata: {\n openapi: {\n description: \"Redirects the user to the callback URL with the token\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n token: {\n type: \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const { token } = ctx.params;\n const { callbackURL } = ctx.query;\n if (!token || !callbackURL) {\n throw ctx.redirect(\n redirectError(ctx.context, callbackURL, { error: \"INVALID_TOKEN\" })\n );\n }\n const verification = await ctx.context.internalAdapter.findVerificationValue(\n `reset-password:${token}`\n );\n if (!verification || verification.expiresAt < /* @__PURE__ */ new Date()) {\n throw ctx.redirect(\n redirectError(ctx.context, callbackURL, { error: \"INVALID_TOKEN\" })\n );\n }\n throw ctx.redirect(redirectCallback(ctx.context, callbackURL, { token }));\n }\n);\nconst forgetPasswordCallback = requestPasswordResetCallback;\nconst resetPassword = createAuthEndpoint(\n \"/reset-password\",\n {\n method: \"POST\",\n query: z.object({\n token: z.string().optional()\n }).optional(),\n body: z.object({\n newPassword: z.string({\n description: \"The new password to set\"\n }),\n token: z.string({\n description: \"The token to reset the password\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Reset the password for a user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const token = ctx.body.token || ctx.query?.token;\n if (!token) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n const { newPassword } = ctx.body;\n const minLength = ctx.context.password?.config.minPasswordLength;\n const maxLength = ctx.context.password?.config.maxPasswordLength;\n if (newPassword.length < minLength) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_SHORT\n });\n }\n if (newPassword.length > maxLength) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_LONG\n });\n }\n const id = `reset-password:${token}`;\n const verification = await ctx.context.internalAdapter.findVerificationValue(id);\n if (!verification || verification.expiresAt < /* @__PURE__ */ new Date()) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n const userId = verification.value;\n const hashedPassword = await ctx.context.password.hash(newPassword);\n const accounts = await ctx.context.internalAdapter.findAccounts(userId);\n const account = accounts.find((ac) => ac.providerId === \"credential\");\n if (!account) {\n await ctx.context.internalAdapter.createAccount(\n {\n userId,\n providerId: \"credential\",\n password: hashedPassword,\n accountId: userId\n },\n ctx\n );\n await ctx.context.internalAdapter.deleteVerificationValue(\n verification.id\n );\n return ctx.json({\n status: true\n });\n }\n await ctx.context.internalAdapter.updatePassword(\n userId,\n hashedPassword,\n ctx\n );\n await ctx.context.internalAdapter.deleteVerificationValue(verification.id);\n if (ctx.context.options.emailAndPassword?.revokeSessionsOnPasswordReset) {\n await ctx.context.internalAdapter.deleteSessions(userId);\n }\n return ctx.json({\n status: true\n });\n }\n);\n\nconst updateUser = () => createAuthEndpoint(\n \"/update-user\",\n {\n method: \"POST\",\n body: z.record(z.string(), z.any()),\n use: [sessionMiddleware],\n metadata: {\n $Infer: {\n body: {}\n },\n openapi: {\n description: \"Update the current user\",\n requestBody: {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n name: {\n type: \"string\",\n description: \"The name of the user\"\n },\n image: {\n type: \"string\",\n description: \"The image of the user\"\n }\n }\n }\n }\n }\n },\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if the update was successful\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const body = ctx.body;\n if (body.email) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.EMAIL_CAN_NOT_BE_UPDATED\n });\n }\n const { name, image, ...rest } = body;\n const session = ctx.context.session;\n if (image === void 0 && name === void 0 && Object.keys(rest).length === 0) {\n return ctx.json({\n status: true\n });\n }\n const additionalFields = parseUserInput(\n ctx.context.options,\n rest,\n \"update\"\n );\n const user = await ctx.context.internalAdapter.updateUser(\n session.user.id,\n {\n name,\n image,\n ...additionalFields\n },\n ctx\n );\n await setSessionCookie(ctx, {\n session: session.session,\n user\n });\n return ctx.json({\n status: true\n });\n }\n);\nconst changePassword = createAuthEndpoint(\n \"/change-password\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * The new password to set\n */\n newPassword: z.string({\n description: \"The new password to set\"\n }),\n /**\n * The current password of the user\n */\n currentPassword: z.string({\n description: \"The current password\"\n }),\n /**\n * revoke all sessions that are not the\n * current one logged in by the user\n */\n revokeOtherSessions: z.boolean({\n description: \"Revoke all other sessions\"\n }).optional()\n }),\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n description: \"Change the password of the user\",\n responses: {\n \"200\": {\n description: \"Password successfully changed\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n token: {\n type: \"string\",\n nullable: true,\n // Only present if revokeOtherSessions is true\n description: \"New session token if other sessions were revoked\"\n },\n user: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: \"The unique identifier of the user\"\n },\n email: {\n type: \"string\",\n format: \"email\",\n description: \"The email address of the user\"\n },\n name: {\n type: \"string\",\n description: \"The name of the user\"\n },\n image: {\n type: \"string\",\n format: \"uri\",\n nullable: true,\n description: \"The profile image URL of the user\"\n },\n emailVerified: {\n type: \"boolean\",\n description: \"Whether the email has been verified\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"When the user was created\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"When the user was last updated\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"name\",\n \"emailVerified\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n },\n required: [\"user\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const { newPassword, currentPassword, revokeOtherSessions } = ctx.body;\n const session = ctx.context.session;\n const minPasswordLength = ctx.context.password.config.minPasswordLength;\n if (newPassword.length < minPasswordLength) {\n ctx.context.logger.error(\"Password is too short\");\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_SHORT\n });\n }\n const maxPasswordLength = ctx.context.password.config.maxPasswordLength;\n if (newPassword.length > maxPasswordLength) {\n ctx.context.logger.error(\"Password is too long\");\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_LONG\n });\n }\n const accounts = await ctx.context.internalAdapter.findAccounts(\n session.user.id\n );\n const account = accounts.find(\n (account2) => account2.providerId === \"credential\" && account2.password\n );\n if (!account || !account.password) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.CREDENTIAL_ACCOUNT_NOT_FOUND\n });\n }\n const passwordHash = await ctx.context.password.hash(newPassword);\n const verify = await ctx.context.password.verify({\n hash: account.password,\n password: currentPassword\n });\n if (!verify) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.INVALID_PASSWORD\n });\n }\n await ctx.context.internalAdapter.updateAccount(account.id, {\n password: passwordHash\n });\n let token = null;\n if (revokeOtherSessions) {\n await ctx.context.internalAdapter.deleteSessions(session.user.id);\n const newSession = await ctx.context.internalAdapter.createSession(\n session.user.id,\n ctx\n );\n if (!newSession) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_SESSION\n });\n }\n await setSessionCookie(ctx, {\n session: newSession,\n user: session.user\n });\n token = newSession.token;\n }\n return ctx.json({\n token,\n user: {\n id: session.user.id,\n email: session.user.email,\n name: session.user.name,\n image: session.user.image,\n emailVerified: session.user.emailVerified,\n createdAt: session.user.createdAt,\n updatedAt: session.user.updatedAt\n }\n });\n }\n);\nconst setPassword = createAuthEndpoint(\n \"/set-password\",\n {\n method: \"POST\",\n body: z.object({\n /**\n * The new password to set\n */\n newPassword: z.string()\n }),\n metadata: {\n SERVER_ONLY: true\n },\n use: [sessionMiddleware]\n },\n async (ctx) => {\n const { newPassword } = ctx.body;\n const session = ctx.context.session;\n const minPasswordLength = ctx.context.password.config.minPasswordLength;\n if (newPassword.length < minPasswordLength) {\n ctx.context.logger.error(\"Password is too short\");\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_SHORT\n });\n }\n const maxPasswordLength = ctx.context.password.config.maxPasswordLength;\n if (newPassword.length > maxPasswordLength) {\n ctx.context.logger.error(\"Password is too long\");\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.PASSWORD_TOO_LONG\n });\n }\n const accounts = await ctx.context.internalAdapter.findAccounts(\n session.user.id\n );\n const account = accounts.find(\n (account2) => account2.providerId === \"credential\" && account2.password\n );\n const passwordHash = await ctx.context.password.hash(newPassword);\n if (!account) {\n await ctx.context.internalAdapter.linkAccount(\n {\n userId: session.user.id,\n providerId: \"credential\",\n accountId: session.user.id,\n password: passwordHash\n },\n ctx\n );\n return ctx.json({\n status: true\n });\n }\n throw new APIError(\"BAD_REQUEST\", {\n message: \"user already has a password\"\n });\n }\n);\nconst deleteUser = createAuthEndpoint(\n \"/delete-user\",\n {\n method: \"POST\",\n use: [sessionMiddleware],\n body: z.object({\n /**\n * The callback URL to redirect to after the user is deleted\n * this is only used on delete user callback\n */\n callbackURL: z.string().optional(),\n /**\n * The password of the user. If the password isn't provided, session freshness\n * will be checked.\n */\n password: z.string().optional(),\n /**\n * The token to delete the user. If the token is provided, the user will be deleted\n */\n token: z.string().optional()\n }),\n metadata: {\n openapi: {\n description: \"Delete the user\",\n responses: {\n \"200\": {\n description: \"User deletion processed successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n success: {\n type: \"boolean\",\n description: \"Indicates if the operation was successful\"\n },\n message: {\n type: \"string\",\n enum: [\"User deleted\", \"Verification email sent\"],\n description: \"Status message of the deletion process\"\n }\n },\n required: [\"success\", \"message\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.user?.deleteUser?.enabled) {\n ctx.context.logger.error(\n \"Delete user is disabled. Enable it in the options\",\n {\n session: ctx.context.session\n }\n );\n throw new APIError(\"NOT_FOUND\");\n }\n const session = ctx.context.session;\n if (ctx.body.password) {\n const accounts = await ctx.context.internalAdapter.findAccounts(\n session.user.id\n );\n const account = accounts.find(\n (account2) => account2.providerId === \"credential\" && account2.password\n );\n if (!account || !account.password) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.CREDENTIAL_ACCOUNT_NOT_FOUND\n });\n }\n const verify = await ctx.context.password.verify({\n hash: account.password,\n password: ctx.body.password\n });\n if (!verify) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.INVALID_PASSWORD\n });\n }\n }\n if (ctx.body.token) {\n await deleteUserCallback({\n ...ctx,\n query: {\n token: ctx.body.token\n }\n });\n return ctx.json({\n success: true,\n message: \"User deleted\"\n });\n }\n if (ctx.context.options.user.deleteUser?.sendDeleteAccountVerification) {\n const token = generateRandomString(32, \"0-9\", \"a-z\");\n await ctx.context.internalAdapter.createVerificationValue(\n {\n value: session.user.id,\n identifier: `delete-account-${token}`,\n expiresAt: new Date(\n Date.now() + (ctx.context.options.user.deleteUser?.deleteTokenExpiresIn || 60 * 60 * 24) * 1e3\n )\n },\n ctx\n );\n const url = `${ctx.context.baseURL}/delete-user/callback?token=${token}&callbackURL=${ctx.body.callbackURL || \"/\"}`;\n await ctx.context.options.user.deleteUser.sendDeleteAccountVerification(\n {\n user: session.user,\n url,\n token\n },\n ctx.request\n );\n return ctx.json({\n success: true,\n message: \"Verification email sent\"\n });\n }\n if (!ctx.body.password && ctx.context.sessionConfig.freshAge !== 0) {\n const currentAge = session.session.createdAt.getTime();\n const freshAge = ctx.context.sessionConfig.freshAge * 1e3;\n const now = Date.now();\n if (now - currentAge > freshAge * 1e3) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.SESSION_EXPIRED\n });\n }\n }\n const beforeDelete = ctx.context.options.user.deleteUser?.beforeDelete;\n if (beforeDelete) {\n await beforeDelete(session.user, ctx.request);\n }\n await ctx.context.internalAdapter.deleteUser(session.user.id);\n await ctx.context.internalAdapter.deleteSessions(session.user.id);\n await ctx.context.internalAdapter.deleteAccounts(session.user.id);\n deleteSessionCookie(ctx);\n const afterDelete = ctx.context.options.user.deleteUser?.afterDelete;\n if (afterDelete) {\n await afterDelete(session.user, ctx.request);\n }\n return ctx.json({\n success: true,\n message: \"User deleted\"\n });\n }\n);\nconst deleteUserCallback = createAuthEndpoint(\n \"/delete-user/callback\",\n {\n method: \"GET\",\n query: z.object({\n token: z.string(),\n callbackURL: z.string().optional()\n }),\n use: [originCheck((ctx) => ctx.query.callbackURL)],\n metadata: {\n openapi: {\n description: \"Callback to complete user deletion with verification token\",\n responses: {\n \"200\": {\n description: \"User successfully deleted\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n success: {\n type: \"boolean\",\n description: \"Indicates if the deletion was successful\"\n },\n message: {\n type: \"string\",\n enum: [\"User deleted\"],\n description: \"Confirmation message\"\n }\n },\n required: [\"success\", \"message\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.user?.deleteUser?.enabled) {\n ctx.context.logger.error(\n \"Delete user is disabled. Enable it in the options\"\n );\n throw new APIError(\"NOT_FOUND\");\n }\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_USER_INFO\n });\n }\n const token = await ctx.context.internalAdapter.findVerificationValue(\n `delete-account-${ctx.query.token}`\n );\n if (!token || token.expiresAt < /* @__PURE__ */ new Date()) {\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n if (token.value !== session.user.id) {\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n const beforeDelete = ctx.context.options.user.deleteUser?.beforeDelete;\n if (beforeDelete) {\n await beforeDelete(session.user, ctx.request);\n }\n await ctx.context.internalAdapter.deleteUser(session.user.id);\n await ctx.context.internalAdapter.deleteSessions(session.user.id);\n await ctx.context.internalAdapter.deleteAccounts(session.user.id);\n await ctx.context.internalAdapter.deleteVerificationValue(token.id);\n deleteSessionCookie(ctx);\n const afterDelete = ctx.context.options.user.deleteUser?.afterDelete;\n if (afterDelete) {\n await afterDelete(session.user, ctx.request);\n }\n if (ctx.query.callbackURL) {\n throw ctx.redirect(ctx.query.callbackURL || \"/\");\n }\n return ctx.json({\n success: true,\n message: \"User deleted\"\n });\n }\n);\nconst changeEmail = createAuthEndpoint(\n \"/change-email\",\n {\n method: \"POST\",\n body: z.object({\n newEmail: z.string({\n description: \"The new email to set\"\n }).email(),\n callbackURL: z.string({\n description: \"The URL to redirect to after email verification\"\n }).optional()\n }),\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n responses: {\n \"200\": {\n description: \"Email change request processed successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\",\n description: \"Indicates if the request was successful\"\n },\n message: {\n type: \"string\",\n enum: [\"Email updated\", \"Verification email sent\"],\n description: \"Status message of the email change process\",\n nullable: true\n }\n },\n required: [\"status\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n if (!ctx.context.options.user?.changeEmail?.enabled) {\n ctx.context.logger.error(\"Change email is disabled.\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Change email is disabled\"\n });\n }\n const newEmail = ctx.body.newEmail.toLowerCase();\n if (newEmail === ctx.context.session.user.email) {\n ctx.context.logger.error(\"Email is the same\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Email is the same\"\n });\n }\n const existingUser = await ctx.context.internalAdapter.findUserByEmail(newEmail);\n if (existingUser) {\n ctx.context.logger.error(\"Email already exists\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Couldn't update your email\"\n });\n }\n if (ctx.context.session.user.emailVerified !== true) {\n const existing = await ctx.context.internalAdapter.findUserByEmail(newEmail);\n if (existing) {\n throw new APIError(\"UNPROCESSABLE_ENTITY\", {\n message: BASE_ERROR_CODES.USER_ALREADY_EXISTS\n });\n }\n await ctx.context.internalAdapter.updateUserByEmail(\n ctx.context.session.user.email,\n {\n email: newEmail\n },\n ctx\n );\n await setSessionCookie(ctx, {\n session: ctx.context.session.session,\n user: {\n ...ctx.context.session.user,\n email: newEmail\n }\n });\n if (ctx.context.options.emailVerification?.sendVerificationEmail) {\n const token2 = await createEmailVerificationToken(\n ctx.context.secret,\n newEmail,\n void 0,\n ctx.context.options.emailVerification?.expiresIn\n );\n const url2 = `${ctx.context.baseURL}/verify-email?token=${token2}&callbackURL=${ctx.body.callbackURL || \"/\"}`;\n await ctx.context.options.emailVerification.sendVerificationEmail(\n {\n user: {\n ...ctx.context.session.user,\n email: newEmail\n },\n url: url2,\n token: token2\n },\n ctx.request\n );\n }\n return ctx.json({\n status: true\n });\n }\n if (!ctx.context.options.user.changeEmail.sendChangeEmailVerification) {\n ctx.context.logger.error(\"Verification email isn't enabled.\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Verification email isn't enabled\"\n });\n }\n const token = await createEmailVerificationToken(\n ctx.context.secret,\n ctx.context.session.user.email,\n newEmail,\n ctx.context.options.emailVerification?.expiresIn\n );\n const url = `${ctx.context.baseURL}/verify-email?token=${token}&callbackURL=${ctx.body.callbackURL || \"/\"}`;\n await ctx.context.options.user.changeEmail.sendChangeEmailVerification(\n {\n user: ctx.context.session.user,\n newEmail,\n url,\n token\n },\n ctx.request\n );\n return ctx.json({\n status: true\n });\n }\n);\n\nfunction sanitize(input) {\n return input.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n}\nconst html = (errorCode = \"Unknown\") => `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Authentication Error</title>\n <style>\n :root {\n --bg-color: #f8f9fa;\n --text-color: #212529;\n --accent-color: #000000;\n --error-color: #dc3545;\n --border-color: #e9ecef;\n }\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n background-color: var(--bg-color);\n color: var(--text-color);\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100vh;\n margin: 0;\n line-height: 1.5;\n }\n .error-container {\n background-color: #ffffff;\n border-radius: 12px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);\n padding: 2.5rem;\n text-align: center;\n max-width: 90%;\n width: 400px;\n }\n h1 {\n color: var(--error-color);\n font-size: 1.75rem;\n margin-bottom: 1rem;\n font-weight: 600;\n }\n p {\n margin-bottom: 1.5rem;\n color: #495057;\n }\n .btn {\n background-color: var(--accent-color);\n color: #ffffff;\n text-decoration: none;\n padding: 0.75rem 1.5rem;\n border-radius: 6px;\n transition: all 0.3s ease;\n display: inline-block;\n font-weight: 500;\n border: 2px solid var(--accent-color);\n }\n .btn:hover {\n background-color: #131721;\n }\n .error-code {\n font-size: 0.875rem;\n color: #6c757d;\n margin-top: 1.5rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--border-color);\n }\n .icon {\n font-size: 3rem;\n margin-bottom: 1rem;\n }\n </style>\n</head>\n<body>\n <div class=\"error-container\">\n <div class=\"icon\">\\u26A0\\uFE0F</div>\n <h1>Better Auth Error</h1>\n <p>We encountered an issue while processing your request. Please try again or contact the application owner if the problem persists.</p>\n <a href=\"/\" id=\"returnLink\" class=\"btn\">Return to Application</a>\n <div class=\"error-code\">Error Code: <span id=\"errorCode\">${sanitize(\n errorCode\n)}</span></div>\n </div>\n</body>\n</html>`;\nconst error = createAuthEndpoint(\n \"/error\",\n {\n method: \"GET\",\n metadata: {\n ...HIDE_METADATA,\n openapi: {\n description: \"Displays an error page\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"text/html\": {\n schema: {\n type: \"string\",\n description: \"The HTML content of the error page\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (c) => {\n const query = new URL(c.request?.url || \"\").searchParams.get(\"error\") || \"Unknown\";\n return new Response(html(query), {\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n);\n\nconst ok = createAuthEndpoint(\n \"/ok\",\n {\n method: \"GET\",\n metadata: {\n ...HIDE_METADATA,\n openapi: {\n description: \"Check if the API is working\",\n responses: {\n \"200\": {\n description: \"API is working\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n ok: {\n type: \"boolean\",\n description: \"Indicates if the API is working\"\n }\n },\n required: [\"ok\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n return ctx.json({\n ok: true\n });\n }\n);\n\nconst listUserAccounts = createAuthEndpoint(\n \"/list-accounts\",\n {\n method: \"GET\",\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n description: \"List all accounts linked to the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n provider: {\n type: \"string\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\"\n }\n },\n accountId: {\n type: \"string\"\n },\n scopes: {\n type: \"array\",\n items: {\n type: \"string\"\n }\n }\n },\n required: [\n \"id\",\n \"provider\",\n \"createdAt\",\n \"updatedAt\",\n \"accountId\",\n \"scopes\"\n ]\n }\n }\n }\n }\n }\n }\n }\n },\n async (c) => {\n const session = c.context.session;\n const accounts = await c.context.internalAdapter.findAccounts(\n session.user.id\n );\n return c.json(\n accounts.map((a) => ({\n id: a.id,\n provider: a.providerId,\n createdAt: a.createdAt,\n updatedAt: a.updatedAt,\n accountId: a.accountId,\n scopes: a.scope?.split(\",\") || []\n }))\n );\n }\n);\nconst linkSocialAccount = createAuthEndpoint(\n \"/link-social\",\n {\n method: \"POST\",\n requireHeaders: true,\n body: z.object({\n /**\n * Callback URL to redirect to after the user has signed in.\n */\n callbackURL: z.string({\n description: \"The URL to redirect to after the user has signed in\"\n }).optional(),\n /**\n * OAuth2 provider to use\n */\n provider: SocialProviderListEnum,\n /**\n * ID Token for direct authentication without redirect\n */\n idToken: z.object({\n token: z.string(),\n nonce: z.string().optional(),\n accessToken: z.string().optional(),\n refreshToken: z.string().optional(),\n scopes: z.array(z.string()).optional()\n }).optional(),\n /**\n * Whether to allow sign up for new users\n */\n requestSignUp: z.boolean().optional(),\n /**\n * Additional scopes to request when linking the account.\n * This is useful for requesting additional permissions when\n * linking a social account compared to the initial authentication.\n */\n scopes: z.array(z.string(), {\n description: \"Additional scopes to request from the provider\"\n }).optional(),\n /**\n * The URL to redirect to if there is an error during the link process.\n */\n errorCallbackURL: z.string({\n description: \"The URL to redirect to if there is an error during the link process\"\n }).optional()\n }),\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n description: \"Link a social account to the user\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n url: {\n type: \"string\",\n description: \"The authorization URL to redirect the user to\"\n },\n redirect: {\n type: \"boolean\",\n description: \"Indicates if the user should be redirected to the authorization URL\"\n },\n status: {\n type: \"boolean\"\n }\n },\n required: [\"redirect\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (c) => {\n const session = c.context.session;\n const provider = c.context.socialProviders.find(\n (p) => p.id === c.body.provider\n );\n if (!provider) {\n c.context.logger.error(\n \"Provider not found. Make sure to add the provider in your auth config\",\n {\n provider: c.body.provider\n }\n );\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.PROVIDER_NOT_FOUND\n });\n }\n if (c.body.idToken) {\n if (!provider.verifyIdToken) {\n c.context.logger.error(\n \"Provider does not support id token verification\",\n {\n provider: c.body.provider\n }\n );\n throw new APIError(\"NOT_FOUND\", {\n message: BASE_ERROR_CODES.ID_TOKEN_NOT_SUPPORTED\n });\n }\n const { token, nonce } = c.body.idToken;\n const valid = await provider.verifyIdToken(token, nonce);\n if (!valid) {\n c.context.logger.error(\"Invalid id token\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.INVALID_TOKEN\n });\n }\n const linkingUserInfo = await provider.getUserInfo({\n idToken: token,\n accessToken: c.body.idToken.accessToken,\n refreshToken: c.body.idToken.refreshToken\n });\n if (!linkingUserInfo || !linkingUserInfo?.user) {\n c.context.logger.error(\"Failed to get user info\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.FAILED_TO_GET_USER_INFO\n });\n }\n if (!linkingUserInfo.user.email) {\n c.context.logger.error(\"User email not found\", {\n provider: c.body.provider\n });\n throw new APIError(\"UNAUTHORIZED\", {\n message: BASE_ERROR_CODES.USER_EMAIL_NOT_FOUND\n });\n }\n const existingAccounts = await c.context.internalAdapter.findAccounts(\n session.user.id\n );\n const hasBeenLinked = existingAccounts.find(\n (a) => a.providerId === provider.id && a.accountId === linkingUserInfo.user.id\n );\n if (hasBeenLinked) {\n return c.json({\n redirect: false,\n url: \"\",\n // this is for type inference\n status: true\n });\n }\n const trustedProviders = c.context.options.account?.accountLinking?.trustedProviders;\n const isTrustedProvider = trustedProviders?.includes(provider.id);\n if (!isTrustedProvider && !linkingUserInfo.user.emailVerified || c.context.options.account?.accountLinking?.enabled === false) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"Account not linked - linking not allowed\"\n });\n }\n if (linkingUserInfo.user.email !== session.user.email && c.context.options.account?.accountLinking?.allowDifferentEmails !== true) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"Account not linked - different emails not allowed\"\n });\n }\n try {\n await c.context.internalAdapter.createAccount(\n {\n userId: session.user.id,\n providerId: provider.id,\n accountId: linkingUserInfo.user.id.toString(),\n accessToken: c.body.idToken.accessToken,\n idToken: token,\n refreshToken: c.body.idToken.refreshToken,\n scope: c.body.idToken.scopes?.join(\",\")\n },\n c\n );\n } catch (e) {\n throw new APIError(\"EXPECTATION_FAILED\", {\n message: \"Account not linked - unable to create account\"\n });\n }\n if (c.context.options.account?.accountLinking?.updateUserInfoOnLink === true) {\n try {\n await c.context.internalAdapter.updateUser(session.user.id, {\n name: linkingUserInfo.user?.name,\n image: linkingUserInfo.user?.image\n });\n } catch (e) {\n console.warn(\"Could not update user - \" + e.toString());\n }\n }\n return c.json({\n redirect: false,\n url: \"\",\n // this is for type inference\n status: true\n });\n }\n const state = await generateState(c, {\n userId: session.user.id,\n email: session.user.email\n });\n const url = await provider.createAuthorizationURL({\n state: state.state,\n codeVerifier: state.codeVerifier,\n redirectURI: `${c.context.baseURL}/callback/${provider.id}`,\n scopes: c.body.scopes\n });\n return c.json({\n url: url.toString(),\n redirect: true\n });\n }\n);\nconst unlinkAccount = createAuthEndpoint(\n \"/unlink-account\",\n {\n method: \"POST\",\n body: z.object({\n providerId: z.string(),\n accountId: z.string().optional()\n }),\n use: [freshSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Unlink an account\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"boolean\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const { providerId, accountId } = ctx.body;\n const accounts = await ctx.context.internalAdapter.findAccounts(\n ctx.context.session.user.id\n );\n if (accounts.length === 1 && !ctx.context.options.account?.accountLinking?.allowUnlinkingAll) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.FAILED_TO_UNLINK_LAST_ACCOUNT\n });\n }\n const accountExist = accounts.find(\n (account) => accountId ? account.accountId === accountId && account.providerId === providerId : account.providerId === providerId\n );\n if (!accountExist) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.ACCOUNT_NOT_FOUND\n });\n }\n await ctx.context.internalAdapter.deleteAccount(accountExist.id);\n return ctx.json({\n status: true\n });\n }\n);\nconst getAccessToken = createAuthEndpoint(\n \"/get-access-token\",\n {\n method: \"POST\",\n body: z.object({\n providerId: z.string({\n description: \"The provider ID for the OAuth provider\"\n }),\n accountId: z.string({\n description: \"The account ID associated with the refresh token\"\n }).optional(),\n userId: z.string({\n description: \"The user ID associated with the account\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Get a valid access token, doing a refresh if needed\",\n responses: {\n 200: {\n description: \"A Valid access token\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n tokenType: {\n type: \"string\"\n },\n idToken: {\n type: \"string\"\n },\n accessToken: {\n type: \"string\"\n },\n refreshToken: {\n type: \"string\"\n },\n accessTokenExpiresAt: {\n type: \"string\",\n format: \"date-time\"\n },\n refreshTokenExpiresAt: {\n type: \"string\",\n format: \"date-time\"\n }\n }\n }\n }\n }\n },\n 400: {\n description: \"Invalid refresh token or provider configuration\"\n }\n }\n }\n }\n },\n async (ctx) => {\n const { providerId, accountId, userId } = ctx.body;\n const req = ctx.request;\n const session = await getSessionFromCtx(ctx);\n if (req && !session) {\n throw ctx.error(\"UNAUTHORIZED\");\n }\n let resolvedUserId = session?.user?.id || userId;\n if (!resolvedUserId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Either userId or session is required`\n });\n }\n if (!ctx.context.socialProviders.find((p) => p.id === providerId)) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Provider ${providerId} is not supported.`\n });\n }\n const accounts = await ctx.context.internalAdapter.findAccounts(resolvedUserId);\n const account = accounts.find(\n (acc) => accountId ? acc.id === accountId && acc.providerId === providerId : acc.providerId === providerId\n );\n if (!account) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Account not found\"\n });\n }\n const provider = ctx.context.socialProviders.find(\n (p) => p.id === providerId\n );\n if (!provider) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Provider ${providerId} not found.`\n });\n }\n try {\n let newTokens = null;\n if (account.refreshToken && (!account.accessTokenExpiresAt || account.accessTokenExpiresAt.getTime() - Date.now() < 5e3) && provider.refreshAccessToken) {\n newTokens = await provider.refreshAccessToken(\n account.refreshToken\n );\n await ctx.context.internalAdapter.updateAccount(account.id, {\n accessToken: newTokens.accessToken,\n accessTokenExpiresAt: newTokens.accessTokenExpiresAt,\n refreshToken: newTokens.refreshToken,\n refreshTokenExpiresAt: newTokens.refreshTokenExpiresAt\n });\n }\n const tokens = {\n accessToken: newTokens?.accessToken ?? account.accessToken ?? void 0,\n accessTokenExpiresAt: newTokens?.accessTokenExpiresAt ?? account.accessTokenExpiresAt ?? void 0,\n scopes: account.scope?.split(\",\") ?? [],\n idToken: newTokens?.idToken ?? account.idToken ?? void 0\n };\n return ctx.json(tokens);\n } catch (error) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Failed to get a valid access token\",\n cause: error\n });\n }\n }\n);\nconst refreshToken = createAuthEndpoint(\n \"/refresh-token\",\n {\n method: \"POST\",\n body: z.object({\n providerId: z.string({\n description: \"The provider ID for the OAuth provider\"\n }),\n accountId: z.string({\n description: \"The account ID associated with the refresh token\"\n }).optional(),\n userId: z.string({\n description: \"The user ID associated with the account\"\n }).optional()\n }),\n metadata: {\n openapi: {\n description: \"Refresh the access token using a refresh token\",\n responses: {\n 200: {\n description: \"Access token refreshed successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n tokenType: {\n type: \"string\"\n },\n idToken: {\n type: \"string\"\n },\n accessToken: {\n type: \"string\"\n },\n refreshToken: {\n type: \"string\"\n },\n accessTokenExpiresAt: {\n type: \"string\",\n format: \"date-time\"\n },\n refreshTokenExpiresAt: {\n type: \"string\",\n format: \"date-time\"\n }\n }\n }\n }\n }\n },\n 400: {\n description: \"Invalid refresh token or provider configuration\"\n }\n }\n }\n }\n },\n async (ctx) => {\n const { providerId, accountId, userId } = ctx.body;\n const req = ctx.request;\n const session = await getSessionFromCtx(ctx);\n if (req && !session) {\n throw ctx.error(\"UNAUTHORIZED\");\n }\n let resolvedUserId = session?.user?.id || userId;\n if (!resolvedUserId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Either userId or session is required`\n });\n }\n if (!ctx.context.socialProviders.find((p) => p.id === providerId)) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Provider ${providerId} is not supported.`\n });\n }\n const accounts = await ctx.context.internalAdapter.findAccounts(resolvedUserId);\n const account = accounts.find(\n (acc) => accountId ? acc.id === accountId && acc.providerId === providerId : acc.providerId === providerId\n );\n if (!account) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Account not found\"\n });\n }\n const provider = ctx.context.socialProviders.find(\n (p) => p.id === providerId\n );\n if (!provider) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Provider ${providerId} not found.`\n });\n }\n if (!provider.refreshAccessToken) {\n throw new APIError(\"BAD_REQUEST\", {\n message: `Provider ${providerId} does not support token refreshing.`\n });\n }\n try {\n const tokens = await provider.refreshAccessToken(\n account.refreshToken\n );\n await ctx.context.internalAdapter.updateAccount(account.id, {\n accessToken: tokens.accessToken,\n accessTokenExpiresAt: tokens.accessTokenExpiresAt,\n refreshToken: tokens.refreshToken,\n refreshTokenExpiresAt: tokens.refreshTokenExpiresAt\n });\n return ctx.json(tokens);\n } catch (error) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Failed to refresh access token\",\n cause: error\n });\n }\n }\n);\nconst accountInfo = createAuthEndpoint(\n \"/account-info\",\n {\n method: \"POST\",\n use: [sessionMiddleware],\n metadata: {\n openapi: {\n description: \"Get the account info provided by the provider\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n user: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n email: {\n type: \"string\"\n },\n image: {\n type: \"string\"\n },\n emailVerified: {\n type: \"boolean\"\n }\n },\n required: [\"id\", \"emailVerified\"]\n },\n data: {\n type: \"object\",\n properties: {},\n additionalProperties: true\n }\n },\n required: [\"user\", \"data\"],\n additionalProperties: false\n }\n }\n }\n }\n }\n }\n },\n body: z.object({\n accountId: z.string({\n description: \"The provider given account id for which to get the account info\"\n })\n })\n },\n async (ctx) => {\n const account = await ctx.context.internalAdapter.findAccount(\n ctx.body.accountId\n );\n if (!account || account.userId !== ctx.context.session.user.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Account not found\"\n });\n }\n const provider = ctx.context.socialProviders.find(\n (p) => p.id === account.providerId\n );\n if (!provider) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: `Provider account provider is ${account.providerId} but it is not configured`\n });\n }\n const tokens = await getAccessToken({\n ...ctx,\n body: {\n accountId: account.id,\n providerId: account.providerId\n },\n returnHeaders: false\n });\n const info = await provider.getUserInfo(tokens);\n return ctx.json(info);\n }\n);\n\nexport { requestPasswordResetCallback as A, BASE_ERROR_CODES as B, requestPasswordReset as C, forgetPasswordCallback as D, deleteUser as E, setPassword as F, changePassword as G, HIDE_METADATA as H, changeEmail as I, sendVerificationEmail as J, verifyEmail as K, resetPassword as L, forgetPassword as M, signInEmail as N, signOut as O, callbackOAuth as P, signInSocial as Q, requestOnlySessionMiddleware as R, optionsMiddleware as S, createAuthEndpoint as a, getSession as b, createAuthMiddleware as c, sendVerificationEmailFn as d, createEmailVerificationToken as e, freshSessionMiddleware as f, getSessionFromCtx as g, handleOAuthUserInfo as h, originCheckMiddleware as i, error as j, ok as k, listSessions as l, accountInfo as m, getAccessToken as n, originCheck as o, unlinkAccount as p, deleteUserCallback as q, refreshToken as r, sessionMiddleware as s, listUserAccounts as t, updateUser as u, linkSocialAccount as v, wildcardMatch as w, revokeOtherSessions as x, revokeSessions as y, revokeSession as z };\n","import type { GenericEndpointContext, User } from \"better-auth\";\nimport { APIError } from \"better-auth/api\";\nimport type { DodoPaymentsOptions } from \"../types\";\n\nexport const onUserCreate =\n (options: DodoPaymentsOptions) =>\n async (user: User, ctx?: GenericEndpointContext) => {\n if (ctx && options.createCustomerOnSignUp) {\n try {\n const customers = await options.client.customers.list({\n email: user.email,\n });\n const existingCustomer = customers.items[0];\n\n if (existingCustomer) {\n if (existingCustomer.email !== user.email) {\n await options.client.customers.update(\n existingCustomer.customer_id,\n {\n name: user.name,\n },\n );\n }\n } else {\n // TODO: Add metadata to customer object via\n // getCustomerCreateParams option when it becomes\n // available in the API\n await options.client.customers.create({\n email: user.email,\n name: user.name,\n });\n }\n } catch (e: unknown) {\n if (e instanceof Error) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: `DodoPayments customer creation failed. Error: ${e.message}`,\n });\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: `DodoPayments customer creation failed. Error: ${e}`,\n });\n }\n }\n };\n\nexport const onUserUpdate =\n (options: DodoPaymentsOptions) =>\n async (user: User, ctx?: GenericEndpointContext) => {\n if (ctx && options.createCustomerOnSignUp) {\n try {\n const customers = await options.client.customers.list({\n email: user.email,\n });\n const existingCustomer = customers.items[0];\n\n if (existingCustomer) {\n // TODO: Add metadata to customer object via\n // getCustomerCreateParams option when it becomes\n // available in the API\n await options.client.customers.update(existingCustomer.customer_id, {\n name: user.name,\n });\n }\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments customer update failed. Error: ${e.message}`,\n );\n } else {\n ctx.context.logger.error(\n `DodoPayments customer update failed. Error: ${e}`,\n );\n }\n }\n }\n };\n","import type { BetterAuthClientPlugin } from \"better-auth\";\nimport type { dodopayments } from \"./index\";\n\nexport const dodopaymentsClient = () => {\n return {\n id: \"dodopayments-client\",\n $InferServerPlugin: {} as ReturnType<typeof dodopayments>,\n } satisfies BetterAuthClientPlugin;\n};\n","const PROTO_POLLUTION_PATTERNS = {\n proto: /\"(?:_|\\\\u0{2}5[Ff]){2}(?:p|\\\\u0{2}70)(?:r|\\\\u0{2}72)(?:o|\\\\u0{2}6[Ff])(?:t|\\\\u0{2}74)(?:o|\\\\u0{2}6[Ff])(?:_|\\\\u0{2}5[Ff]){2}\"\\s*:/,\n constructor: /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/,\n protoShort: /\"__proto__\"\\s*:/,\n constructorShort: /\"constructor\"\\s*:/\n};\nconst JSON_SIGNATURE = /^\\s*[\"[{]|^\\s*-?\\d{1,16}(\\.\\d{1,17})?([Ee][+-]?\\d+)?\\s*$/;\nconst SPECIAL_VALUES = {\n true: true,\n false: false,\n null: null,\n undefined: void 0,\n nan: Number.NaN,\n infinity: Number.POSITIVE_INFINITY,\n \"-infinity\": Number.NEGATIVE_INFINITY\n};\nconst ISO_DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,7}))?(?:Z|([+-])(\\d{2}):(\\d{2}))$/;\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n}\nfunction parseISODate(value) {\n const match = ISO_DATE_REGEX.exec(value);\n if (!match) return null;\n const [\n ,\n year,\n month,\n day,\n hour,\n minute,\n second,\n ms,\n offsetSign,\n offsetHour,\n offsetMinute\n ] = match;\n let date = new Date(\n Date.UTC(\n parseInt(year, 10),\n parseInt(month, 10) - 1,\n parseInt(day, 10),\n parseInt(hour, 10),\n parseInt(minute, 10),\n parseInt(second, 10),\n ms ? parseInt(ms.padEnd(3, \"0\"), 10) : 0\n )\n );\n if (offsetSign) {\n const offset = (parseInt(offsetHour, 10) * 60 + parseInt(offsetMinute, 10)) * (offsetSign === \"+\" ? -1 : 1);\n date.setUTCMinutes(date.getUTCMinutes() + offset);\n }\n return isValidDate(date) ? date : null;\n}\nfunction betterJSONParse(value, options = {}) {\n const {\n strict = false,\n warnings = false,\n reviver,\n parseDates = true\n } = options;\n if (typeof value !== \"string\") {\n return value;\n }\n const trimmed = value.trim();\n if (trimmed[0] === '\"' && trimmed.endsWith('\"') && !trimmed.slice(1, -1).includes('\"')) {\n return trimmed.slice(1, -1);\n }\n const lowerValue = trimmed.toLowerCase();\n if (lowerValue.length <= 9 && lowerValue in SPECIAL_VALUES) {\n return SPECIAL_VALUES[lowerValue];\n }\n if (!JSON_SIGNATURE.test(trimmed)) {\n if (strict) {\n throw new SyntaxError(\"[better-json] Invalid JSON\");\n }\n return value;\n }\n const hasProtoPattern = Object.entries(PROTO_POLLUTION_PATTERNS).some(\n ([key, pattern]) => {\n const matches = pattern.test(trimmed);\n if (matches && warnings) {\n console.warn(\n `[better-json] Detected potential prototype pollution attempt using ${key} pattern`\n );\n }\n return matches;\n }\n );\n if (hasProtoPattern && strict) {\n throw new Error(\n \"[better-json] Potential prototype pollution attempt detected\"\n );\n }\n try {\n const secureReviver = (key, value2) => {\n if (key === \"__proto__\" || key === \"constructor\" && value2 && typeof value2 === \"object\" && \"prototype\" in value2) {\n if (warnings) {\n console.warn(\n `[better-json] Dropping \"${key}\" key to prevent prototype pollution`\n );\n }\n return void 0;\n }\n if (parseDates && typeof value2 === \"string\") {\n const date = parseISODate(value2);\n if (date) {\n return date;\n }\n }\n return reviver ? reviver(key, value2) : value2;\n };\n return JSON.parse(trimmed, secureReviver);\n } catch (error) {\n if (strict) {\n throw error;\n }\n return value;\n }\n}\nfunction parseJSON(value, options = { strict: true }) {\n return betterJSONParse(value, options);\n}\n\nexport { parseJSON as p };\n","import { B as BetterAuthError } from '../../shared/better-auth.DdzSJf-n.mjs';\n\nfunction role(statements) {\n return {\n authorize(request, connector = \"AND\") {\n let success = false;\n for (const [requestedResource, requestedActions] of Object.entries(\n request\n )) {\n const allowedActions = statements[requestedResource];\n if (!allowedActions) {\n return {\n success: false,\n error: `You are not allowed to access resource: ${requestedResource}`\n };\n }\n if (Array.isArray(requestedActions)) {\n success = requestedActions.every(\n (requestedAction) => allowedActions.includes(requestedAction)\n );\n } else {\n if (typeof requestedActions === \"object\") {\n const actions = requestedActions;\n if (actions.connector === \"OR\") {\n success = actions.actions.some(\n (requestedAction) => allowedActions.includes(requestedAction)\n );\n } else {\n success = actions.actions.every(\n (requestedAction) => allowedActions.includes(requestedAction)\n );\n }\n } else {\n throw new BetterAuthError(\"Invalid access control request\");\n }\n }\n if (success && connector === \"OR\") {\n return { success };\n }\n if (!success && connector === \"AND\") {\n return {\n success: false,\n error: `unauthorized to access resource \"${requestedResource}\"`\n };\n }\n }\n if (success) {\n return {\n success\n };\n }\n return {\n success: false,\n error: \"Not authorized\"\n };\n },\n statements\n };\n}\nfunction createAccessControl(s) {\n return {\n newRole(statements) {\n return role(statements);\n },\n statements: s\n };\n}\n\nexport { createAccessControl, role };\n","import { createAccessControl } from '../../access/index.mjs';\nimport '../../../shared/better-auth.DdzSJf-n.mjs';\n\nconst defaultStatements = {\n organization: [\"update\", \"delete\"],\n member: [\"create\", \"update\", \"delete\"],\n invitation: [\"create\", \"cancel\"],\n team: [\"create\", \"update\", \"delete\"]\n};\nconst defaultAc = createAccessControl(defaultStatements);\nconst adminAc = defaultAc.newRole({\n organization: [\"update\"],\n invitation: [\"create\", \"cancel\"],\n member: [\"create\", \"update\", \"delete\"],\n team: [\"create\", \"update\", \"delete\"]\n});\nconst ownerAc = defaultAc.newRole({\n organization: [\"update\", \"delete\"],\n member: [\"create\", \"update\", \"delete\"],\n invitation: [\"create\", \"cancel\"],\n team: [\"create\", \"update\", \"delete\"]\n});\nconst memberAc = defaultAc.newRole({\n organization: [],\n member: [],\n invitation: [],\n team: []\n});\nconst defaultRoles = {\n admin: adminAc,\n owner: ownerAc,\n member: memberAc\n};\n\nexport { adminAc, defaultAc, defaultRoles, defaultStatements, memberAc, ownerAc };\n","import { defaultRoles } from '../plugins/organization/access/index.mjs';\n\nconst hasPermission = (input) => {\n if (!input.permissions && !input.permission) {\n return false;\n }\n const roles = input.role.split(\",\");\n const acRoles = input.options.roles || defaultRoles;\n for (const role of roles) {\n const _role = acRoles[role];\n const result = _role?.authorize(input.permissions ?? input.permission);\n if (result?.success) {\n return true;\n }\n }\n return false;\n};\n\nexport { hasPermission as h };\n","import { APIError } from 'better-call';\nimport { z } from 'zod';\nimport { c as createAuthMiddleware, s as sessionMiddleware, a as createAuthEndpoint, g as getSessionFromCtx, B as BASE_ERROR_CODES, R as requestOnlySessionMiddleware } from './better-auth.cM0Fc3LZ.mjs';\nimport './better-auth.8zoxzg-F.mjs';\nimport '@better-auth/utils/base64';\nimport '@better-auth/utils/hmac';\nimport '@better-auth/utils/binary';\nimport './better-auth.Cc72UxUH.mjs';\nimport { g as getDate } from './better-auth.CW6D9eSx.mjs';\nimport { B as BetterAuthError } from './better-auth.DdzSJf-n.mjs';\nimport { p as parseJSON } from './better-auth.ffWeg50w.mjs';\nimport './better-auth.Cqykj82J.mjs';\nimport 'defu';\nimport { h as hasPermission } from './better-auth.OuYYTHC7.mjs';\nimport { setSessionCookie } from '../cookies/index.mjs';\nimport { g as generateId } from './better-auth.BUPPRXfK.mjs';\nimport '@better-auth/utils/hash';\nimport '@noble/ciphers/chacha';\nimport '@noble/ciphers/utils';\nimport '@noble/ciphers/webcrypto';\nimport 'jose';\nimport '@noble/hashes/scrypt';\nimport '@better-auth/utils';\nimport '@better-auth/utils/hex';\nimport '@noble/hashes/utils';\nimport './better-auth.B4Qoxdgc.mjs';\nimport { defaultRoles } from '../plugins/organization/access/index.mjs';\n\nconst shimContext = (originalObject, newContext) => {\n const shimmedObj = {};\n for (const [key, value] of Object.entries(originalObject)) {\n shimmedObj[key] = (ctx) => {\n return value({\n ...ctx,\n context: {\n ...newContext,\n ...ctx.context\n }\n });\n };\n shimmedObj[key].path = value.path;\n shimmedObj[key].method = value.method;\n shimmedObj[key].options = value.options;\n shimmedObj[key].headers = value.headers;\n }\n return shimmedObj;\n};\n\nconst getOrgAdapter = (context, options) => {\n const adapter = context.adapter;\n return {\n findOrganizationBySlug: async (slug) => {\n const organization = await adapter.findOne({\n model: \"organization\",\n where: [\n {\n field: \"slug\",\n value: slug\n }\n ]\n });\n return organization;\n },\n createOrganization: async (data) => {\n const organization = await adapter.create({\n model: \"organization\",\n data: {\n ...data.organization,\n metadata: data.organization.metadata ? JSON.stringify(data.organization.metadata) : void 0\n }\n });\n return {\n ...organization,\n metadata: organization.metadata ? JSON.parse(organization.metadata) : void 0\n };\n },\n findMemberByEmail: async (data) => {\n const user = await adapter.findOne({\n model: \"user\",\n where: [\n {\n field: \"email\",\n value: data.email\n }\n ]\n });\n if (!user) {\n return null;\n }\n const member = await adapter.findOne({\n model: \"member\",\n where: [\n {\n field: \"organizationId\",\n value: data.organizationId\n },\n {\n field: \"userId\",\n value: user.id\n }\n ]\n });\n if (!member) {\n return null;\n }\n return {\n ...member,\n user: {\n id: user.id,\n name: user.name,\n email: user.email,\n image: user.image\n }\n };\n },\n listMembers: async (data) => {\n const members = await adapter.findMany({\n model: \"member\",\n where: [\n {\n field: \"organizationId\",\n value: data.organizationId\n }\n ],\n limit: options?.membershipLimit || 100\n });\n return members;\n },\n findMemberByOrgId: async (data) => {\n const [member, user] = await Promise.all([\n await adapter.findOne({\n model: \"member\",\n where: [\n {\n field: \"userId\",\n value: data.userId\n },\n {\n field: \"organizationId\",\n value: data.organizationId\n }\n ]\n }),\n await adapter.findOne({\n model: \"user\",\n where: [\n {\n field: \"id\",\n value: data.userId\n }\n ]\n })\n ]);\n if (!user || !member) {\n return null;\n }\n return {\n ...member,\n user: {\n id: user.id,\n name: user.name,\n email: user.email,\n image: user.image\n }\n };\n },\n findMemberById: async (memberId) => {\n const member = await adapter.findOne({\n model: \"member\",\n where: [\n {\n field: \"id\",\n value: memberId\n }\n ]\n });\n if (!member) {\n return null;\n }\n const user = await adapter.findOne({\n model: \"user\",\n where: [\n {\n field: \"id\",\n value: member.userId\n }\n ]\n });\n if (!user) {\n return null;\n }\n return {\n ...member,\n user: {\n id: user.id,\n name: user.name,\n email: user.email,\n image: user.image\n }\n };\n },\n createMember: async (data) => {\n const member = await adapter.create({\n model: \"member\",\n data: {\n ...data,\n createdAt: /* @__PURE__ */ new Date()\n }\n });\n return member;\n },\n updateMember: async (memberId, role) => {\n const member = await adapter.update({\n model: \"member\",\n where: [\n {\n field: \"id\",\n value: memberId\n }\n ],\n update: {\n role\n }\n });\n return member;\n },\n deleteMember: async (memberId) => {\n const member = await adapter.delete({\n model: \"member\",\n where: [\n {\n field: \"id\",\n value: memberId\n }\n ]\n });\n return member;\n },\n updateOrganization: async (organizationId, data) => {\n const organization = await adapter.update({\n model: \"organization\",\n where: [\n {\n field: \"id\",\n value: organizationId\n }\n ],\n update: {\n ...data,\n metadata: typeof data.metadata === \"object\" ? JSON.stringify(data.metadata) : data.metadata\n }\n });\n if (!organization) {\n return null;\n }\n return {\n ...organization,\n metadata: organization.metadata ? parseJSON(organization.metadata) : void 0\n };\n },\n deleteOrganization: async (organizationId) => {\n await adapter.delete({\n model: \"member\",\n where: [\n {\n field: \"organizationId\",\n value: organizationId\n }\n ]\n });\n await adapter.delete({\n model: \"invitation\",\n where: [\n {\n field: \"organizationId\",\n value: organizationId\n }\n ]\n });\n await adapter.delete({\n model: \"organization\",\n where: [\n {\n field: \"id\",\n value: organizationId\n }\n ]\n });\n return organizationId;\n },\n setActiveOrganization: async (sessionToken, organizationId) => {\n const session = await context.internalAdapter.updateSession(\n sessionToken,\n {\n activeOrganizationId: organizationId\n }\n );\n return session;\n },\n findOrganizationById: async (organizationId) => {\n const organization = await adapter.findOne({\n model: \"organization\",\n where: [\n {\n field: \"id\",\n value: organizationId\n }\n ]\n });\n return organization;\n },\n /**\n * @requires db\n */\n findFullOrganization: async ({\n organizationId,\n isSlug,\n includeTeams\n }) => {\n const org = await adapter.findOne({\n model: \"organization\",\n where: [{ field: isSlug ? \"slug\" : \"id\", value: organizationId }]\n });\n if (!org) {\n return null;\n }\n const [invitations, members, teams] = await Promise.all([\n adapter.findMany({\n model: \"invitation\",\n where: [{ field: \"organizationId\", value: org.id }]\n }),\n adapter.findMany({\n model: \"member\",\n where: [{ field: \"organizationId\", value: org.id }],\n limit: options?.membershipLimit || 100\n }),\n includeTeams ? adapter.findMany({\n model: \"team\",\n where: [{ field: \"organizationId\", value: org.id }]\n }) : null\n ]);\n if (!org) return null;\n const userIds = members.map((member) => member.userId);\n const users = userIds.length > 0 ? await adapter.findMany({\n model: \"user\",\n where: [{ field: \"id\", value: userIds, operator: \"in\" }],\n limit: options?.membershipLimit || 100\n }) : [];\n const userMap = new Map(users.map((user) => [user.id, user]));\n const membersWithUsers = members.map((member) => {\n const user = userMap.get(member.userId);\n if (!user) {\n throw new BetterAuthError(\n \"Unexpected error: User not found for member\"\n );\n }\n return {\n ...member,\n user: {\n id: user.id,\n name: user.name,\n email: user.email,\n image: user.image\n }\n };\n });\n return {\n ...org,\n invitations,\n members: membersWithUsers,\n teams\n };\n },\n listOrganizations: async (userId) => {\n const members = await adapter.findMany({\n model: \"member\",\n where: [\n {\n field: \"userId\",\n value: userId\n }\n ]\n });\n if (!members || members.length === 0) {\n return [];\n }\n const organizationIds = members.map((member) => member.organizationId);\n const organizations = await adapter.findMany({\n model: \"organization\",\n where: [\n {\n field: \"id\",\n value: organizationIds,\n operator: \"in\"\n }\n ]\n });\n return organizations;\n },\n createTeam: async (data) => {\n const team = await adapter.create({\n model: \"team\",\n data\n });\n return team;\n },\n findTeamById: async ({\n teamId,\n organizationId,\n includeTeamMembers\n }) => {\n const team = await adapter.findOne({\n model: \"team\",\n where: [\n {\n field: \"id\",\n value: teamId\n },\n ...organizationId ? [\n {\n field: \"organizationId\",\n value: organizationId\n }\n ] : []\n ]\n });\n if (!team) {\n return null;\n }\n let members = [];\n if (includeTeamMembers) {\n members = await adapter.findMany({\n model: \"member\",\n where: [\n {\n field: \"teamId\",\n value: teamId\n }\n ],\n limit: options?.membershipLimit || 100\n });\n return {\n ...team,\n members\n };\n }\n return team;\n },\n updateTeam: async (teamId, data) => {\n const team = await adapter.update({\n model: \"team\",\n where: [\n {\n field: \"id\",\n value: teamId\n }\n ],\n update: {\n ...data\n }\n });\n return team;\n },\n deleteTeam: async (teamId) => {\n const team = await adapter.delete({\n model: \"team\",\n where: [\n {\n field: \"id\",\n value: teamId\n }\n ]\n });\n return team;\n },\n listTeams: async (organizationId) => {\n const teams = await adapter.findMany({\n model: \"team\",\n where: [\n {\n field: \"organizationId\",\n value: organizationId\n }\n ]\n });\n return teams;\n },\n createTeamInvitation: async ({\n email,\n role,\n teamId,\n organizationId,\n inviterId,\n expiresIn = 1e3 * 60 * 60 * 48\n // Default expiration: 48 hours\n }) => {\n const expiresAt = getDate(expiresIn);\n const invitation = await adapter.create({\n model: \"invitation\",\n data: {\n email,\n role,\n organizationId,\n teamId,\n inviterId,\n status: \"pending\",\n expiresAt\n }\n });\n return invitation;\n },\n findInvitationsByTeamId: async (teamId) => {\n const invitations = await adapter.findMany({\n model: \"invitation\",\n where: [\n {\n field: \"teamId\",\n value: teamId\n }\n ]\n });\n return invitations;\n },\n createInvitation: async ({\n invitation,\n user\n }) => {\n const defaultExpiration = 60 * 60 * 48;\n const expiresAt = getDate(\n options?.invitationExpiresIn || defaultExpiration,\n \"sec\"\n );\n const invite = await adapter.create({\n model: \"invitation\",\n data: {\n status: \"pending\",\n expiresAt,\n inviterId: user.id,\n ...invitation\n }\n });\n return invite;\n },\n findInvitationById: async (id) => {\n const invitation = await adapter.findOne({\n model: \"invitation\",\n where: [\n {\n field: \"id\",\n value: id\n }\n ]\n });\n return invitation;\n },\n findPendingInvitation: async (data) => {\n const invitation = await adapter.findMany({\n model: \"invitation\",\n where: [\n {\n field: \"email\",\n value: data.email\n },\n {\n field: \"organizationId\",\n value: data.organizationId\n },\n {\n field: \"status\",\n value: \"pending\"\n }\n ]\n });\n return invitation.filter(\n (invite) => new Date(invite.expiresAt) > /* @__PURE__ */ new Date()\n );\n },\n findPendingInvitations: async (data) => {\n const invitations = await adapter.findMany({\n model: \"invitation\",\n where: [\n {\n field: \"organizationId\",\n value: data.organizationId\n },\n {\n field: \"status\",\n value: \"pending\"\n }\n ]\n });\n return invitations.filter(\n (invite) => new Date(invite.expiresAt) > /* @__PURE__ */ new Date()\n );\n },\n listInvitations: async (data) => {\n const invitations = await adapter.findMany({\n model: \"invitation\",\n where: [\n {\n field: \"organizationId\",\n value: data.organizationId\n }\n ]\n });\n return invitations;\n },\n updateInvitation: async (data) => {\n const invitation = await adapter.update({\n model: \"invitation\",\n where: [\n {\n field: \"id\",\n value: data.invitationId\n }\n ],\n update: {\n status: data.status\n }\n });\n return invitation;\n }\n };\n};\n\nconst orgMiddleware = createAuthMiddleware(async (ctx) => {\n return {};\n});\nconst orgSessionMiddleware = createAuthMiddleware(\n {\n use: [sessionMiddleware]\n },\n async (ctx) => {\n const session = ctx.context.session;\n return {\n session\n };\n }\n);\n\nconst ORGANIZATION_ERROR_CODES = {\n YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION: \"You are not allowed to create a new organization\",\n YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS: \"You have reached the maximum number of organizations\",\n ORGANIZATION_ALREADY_EXISTS: \"Organization already exists\",\n ORGANIZATION_NOT_FOUND: \"Organization not found\",\n USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION: \"User is not a member of the organization\",\n YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION: \"You are not allowed to update this organization\",\n YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION: \"You are not allowed to delete this organization\",\n NO_ACTIVE_ORGANIZATION: \"No active organization\",\n USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION: \"User is already a member of this organization\",\n MEMBER_NOT_FOUND: \"Member not found\",\n ROLE_NOT_FOUND: \"Role not found\",\n YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM: \"You are not allowed to create a new team\",\n TEAM_ALREADY_EXISTS: \"Team already exists\",\n TEAM_NOT_FOUND: \"Team not found\",\n YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER: \"You cannot leave the organization as the only owner\",\n YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER: \"You are not allowed to delete this member\",\n YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION: \"You are not allowed to invite users to this organization\",\n USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION: \"User is already invited to this organization\",\n INVITATION_NOT_FOUND: \"Invitation not found\",\n YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION: \"You are not the recipient of the invitation\",\n YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION: \"You are not allowed to cancel this invitation\",\n INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION: \"Inviter is no longer a member of the organization\",\n YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE: \"you are not allowed to invite user with this role\",\n FAILED_TO_RETRIEVE_INVITATION: \"Failed to retrieve invitation\",\n YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS: \"You have reached the maximum number of teams\",\n UNABLE_TO_REMOVE_LAST_TEAM: \"Unable to remove last team\",\n YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER: \"You are not allowed to update this member\",\n ORGANIZATION_MEMBERSHIP_LIMIT_REACHED: \"Organization membership limit reached\",\n YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION: \"You are not allowed to create teams in this organization\",\n YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION: \"You are not allowed to delete teams in this organization\",\n YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM: \"You are not allowed to update this team\",\n YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM: \"You are not allowed to delete this team\",\n INVITATION_LIMIT_REACHED: \"Invitation limit reached\",\n TEAM_MEMBER_LIMIT_REACHED: \"Team member limit reached\"\n};\n\nconst createInvitation = (option) => createAuthEndpoint(\n \"/organization/invite-member\",\n {\n method: \"POST\",\n use: [orgMiddleware, orgSessionMiddleware],\n body: z.object({\n email: z.string({\n description: \"The email address of the user to invite\"\n }),\n role: z.union([\n z.string({\n description: \"The role to assign to the user\"\n }),\n z.array(\n z.string({\n description: \"The roles to assign to the user\"\n })\n )\n ]),\n organizationId: z.string({\n description: \"The organization ID to invite the user to\"\n }).optional(),\n resend: z.boolean({\n description: \"Resend the invitation email, if the user is already invited\"\n }).optional(),\n teamId: z.string({\n description: \"The team ID to invite the user to\"\n }).optional()\n }),\n metadata: {\n $Infer: {\n body: {}\n },\n openapi: {\n description: \"Invite a user to an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n email: {\n type: \"string\"\n },\n role: {\n type: \"string\"\n },\n organizationId: {\n type: \"string\"\n },\n inviterId: {\n type: \"string\"\n },\n status: {\n type: \"string\"\n },\n expiresAt: {\n type: \"string\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"role\",\n \"organizationId\",\n \"inviterId\",\n \"status\",\n \"expiresAt\"\n ]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const canInvite = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n invitation: [\"create\"]\n }\n });\n if (!canInvite) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION\n });\n }\n const creatorRole = ctx.context.orgOptions.creatorRole || \"owner\";\n const roles = parseRoles(ctx.body.role);\n if (member.role !== creatorRole && roles.split(\",\").includes(creatorRole)) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE\n });\n }\n const alreadyMember = await adapter.findMemberByEmail({\n email: ctx.body.email,\n organizationId\n });\n if (alreadyMember) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\n });\n }\n const alreadyInvited = await adapter.findPendingInvitation({\n email: ctx.body.email,\n organizationId\n });\n if (alreadyInvited.length && !ctx.body.resend) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\n });\n }\n if (alreadyInvited.length && ctx.context.orgOptions.cancelPendingInvitationsOnReInvite) {\n await adapter.updateInvitation({\n invitationId: alreadyInvited[0].id,\n status: \"canceled\"\n });\n }\n const organization = await adapter.findOrganizationById(organizationId);\n if (!organization) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n const invitationLimit = typeof ctx.context.orgOptions.invitationLimit === \"function\" ? await ctx.context.orgOptions.invitationLimit(\n {\n user: session.user,\n organization,\n member\n },\n ctx.context\n ) : ctx.context.orgOptions.invitationLimit ?? 100;\n const pendingInvitations = await adapter.findPendingInvitations({\n organizationId\n });\n if (pendingInvitations.length >= invitationLimit) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.INVITATION_LIMIT_REACHED\n });\n }\n if (ctx.context.orgOptions.teams && ctx.context.orgOptions.teams.enabled && typeof ctx.context.orgOptions.teams.maximumMembersPerTeam !== \"undefined\" && \"teamId\" in ctx.body && ctx.body.teamId) {\n const team = await adapter.findTeamById({\n teamId: ctx.body.teamId,\n organizationId,\n includeTeamMembers: true\n });\n if (!team) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND\n });\n }\n const maximumMembersPerTeam = typeof ctx.context.orgOptions.teams.maximumMembersPerTeam === \"function\" ? await ctx.context.orgOptions.teams.maximumMembersPerTeam({\n teamId: ctx.body.teamId,\n session,\n organizationId\n }) : ctx.context.orgOptions.teams.maximumMembersPerTeam;\n if (team.members.length >= maximumMembersPerTeam) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_MEMBER_LIMIT_REACHED\n });\n }\n }\n const invitation = await adapter.createInvitation({\n invitation: {\n role: roles,\n email: ctx.body.email.toLowerCase(),\n organizationId,\n ...\"teamId\" in ctx.body ? {\n teamId: ctx.body.teamId\n } : {}\n },\n user: session.user\n });\n await ctx.context.orgOptions.sendInvitationEmail?.(\n {\n id: invitation.id,\n role: invitation.role,\n email: invitation.email.toLowerCase(),\n organization,\n inviter: {\n ...member,\n user: session.user\n },\n invitation\n },\n ctx.request\n );\n return ctx.json(invitation);\n }\n);\nconst acceptInvitation = createAuthEndpoint(\n \"/organization/accept-invitation\",\n {\n method: \"POST\",\n body: z.object({\n invitationId: z.string({\n description: \"The ID of the invitation to accept\"\n })\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Accept an invitation to an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n invitation: {\n type: \"object\"\n },\n member: {\n type: \"object\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const invitation = await adapter.findInvitationById(ctx.body.invitationId);\n if (!invitation || invitation.expiresAt < /* @__PURE__ */ new Date() || invitation.status !== \"pending\") {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.INVITATION_NOT_FOUND\n });\n }\n if (invitation.email.toLowerCase() !== session.user.email.toLowerCase()) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\n });\n }\n const membershipLimit = ctx.context.orgOptions?.membershipLimit || 100;\n const members = await adapter.listMembers({\n organizationId: invitation.organizationId\n });\n if (members.length >= membershipLimit) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\n });\n }\n const acceptedI = await adapter.updateInvitation({\n invitationId: ctx.body.invitationId,\n status: \"accepted\"\n });\n if (!acceptedI) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.FAILED_TO_RETRIEVE_INVITATION\n });\n }\n if (ctx.context.orgOptions.teams && ctx.context.orgOptions.teams.enabled && typeof ctx.context.orgOptions.teams.maximumMembersPerTeam !== \"undefined\" && \"teamId\" in acceptedI && acceptedI.teamId) {\n const team = await adapter.findTeamById({\n teamId: acceptedI.teamId,\n organizationId: invitation.organizationId,\n includeTeamMembers: true\n });\n if (!team) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND\n });\n }\n const maximumMembersPerTeam = typeof ctx.context.orgOptions.teams.maximumMembersPerTeam === \"function\" ? await ctx.context.orgOptions.teams.maximumMembersPerTeam({\n teamId: acceptedI.teamId,\n session,\n organizationId: invitation.organizationId\n }) : ctx.context.orgOptions.teams.maximumMembersPerTeam;\n if (team.members.length >= maximumMembersPerTeam) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_MEMBER_LIMIT_REACHED\n });\n }\n }\n const member = await adapter.createMember({\n organizationId: invitation.organizationId,\n userId: session.user.id,\n role: invitation.role,\n createdAt: /* @__PURE__ */ new Date(),\n ...\"teamId\" in acceptedI ? {\n teamId: acceptedI.teamId\n } : {}\n });\n await adapter.setActiveOrganization(\n session.session.token,\n invitation.organizationId\n );\n if (!acceptedI) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.INVITATION_NOT_FOUND\n }\n });\n }\n return ctx.json({\n invitation: acceptedI,\n member\n });\n }\n);\nconst rejectInvitation = createAuthEndpoint(\n \"/organization/reject-invitation\",\n {\n method: \"POST\",\n body: z.object({\n invitationId: z.string({\n description: \"The ID of the invitation to reject\"\n })\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Reject an invitation to an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n invitation: {\n type: \"object\"\n },\n member: {\n type: \"null\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const invitation = await adapter.findInvitationById(ctx.body.invitationId);\n if (!invitation || invitation.expiresAt < /* @__PURE__ */ new Date() || invitation.status !== \"pending\") {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Invitation not found!\"\n });\n }\n if (invitation.email.toLowerCase() !== session.user.email.toLowerCase()) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\n });\n }\n const rejectedI = await adapter.updateInvitation({\n invitationId: ctx.body.invitationId,\n status: \"rejected\"\n });\n return ctx.json({\n invitation: rejectedI,\n member: null\n });\n }\n);\nconst cancelInvitation = createAuthEndpoint(\n \"/organization/cancel-invitation\",\n {\n method: \"POST\",\n body: z.object({\n invitationId: z.string({\n description: \"The ID of the invitation to cancel\"\n })\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n openapi: {\n description: \"Cancel an invitation to an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n invitation: {\n type: \"object\"\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const invitation = await adapter.findInvitationById(ctx.body.invitationId);\n if (!invitation) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.INVITATION_NOT_FOUND\n });\n }\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId: invitation.organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const canCancel = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n invitation: [\"cancel\"]\n }\n });\n if (!canCancel) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION\n });\n }\n const canceledI = await adapter.updateInvitation({\n invitationId: ctx.body.invitationId,\n status: \"canceled\"\n });\n return ctx.json(canceledI);\n }\n);\nconst getInvitation = createAuthEndpoint(\n \"/organization/get-invitation\",\n {\n method: \"GET\",\n use: [orgMiddleware],\n requireHeaders: true,\n query: z.object({\n id: z.string({\n description: \"The ID of the invitation to get\"\n })\n }),\n metadata: {\n openapi: {\n description: \"Get an invitation by ID\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n email: {\n type: \"string\"\n },\n role: {\n type: \"string\"\n },\n organizationId: {\n type: \"string\"\n },\n inviterId: {\n type: \"string\"\n },\n status: {\n type: \"string\"\n },\n expiresAt: {\n type: \"string\"\n },\n organizationName: {\n type: \"string\"\n },\n organizationSlug: {\n type: \"string\"\n },\n inviterEmail: {\n type: \"string\"\n }\n },\n required: [\n \"id\",\n \"email\",\n \"role\",\n \"organizationId\",\n \"inviterId\",\n \"status\",\n \"expiresAt\",\n \"organizationName\",\n \"organizationSlug\",\n \"inviterEmail\"\n ]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"Not authenticated\"\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const invitation = await adapter.findInvitationById(ctx.query.id);\n if (!invitation || invitation.status !== \"pending\" || invitation.expiresAt < /* @__PURE__ */ new Date()) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Invitation not found!\"\n });\n }\n if (invitation.email.toLowerCase() !== session.user.email.toLowerCase()) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\n });\n }\n const organization = await adapter.findOrganizationById(\n invitation.organizationId\n );\n if (!organization) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n const member = await adapter.findMemberByOrgId({\n userId: invitation.inviterId,\n organizationId: invitation.organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\n });\n }\n return ctx.json({\n ...invitation,\n organizationName: organization.name,\n organizationSlug: organization.slug,\n inviterEmail: member.user.email\n });\n }\n);\nconst listInvitations = createAuthEndpoint(\n \"/organization/list-invitations\",\n {\n method: \"GET\",\n use: [orgMiddleware, orgSessionMiddleware],\n query: z.object({\n organizationId: z.string({\n description: \"The ID of the organization to list invitations for\"\n }).optional()\n }).optional()\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"Not authenticated\"\n });\n }\n const orgId = ctx.query?.organizationId || session.session.activeOrganizationId;\n if (!orgId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Organization ID is required\"\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const isMember = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId: orgId\n });\n if (!isMember) {\n throw new APIError(\"FORBIDDEN\", {\n message: \"You are not a member of this organization\"\n });\n }\n const invitations = await adapter.listInvitations({\n organizationId: orgId\n });\n return ctx.json(invitations);\n }\n);\n\nconst addMember = () => createAuthEndpoint(\n \"/organization/add-member\",\n {\n method: \"POST\",\n body: z.object({\n userId: z.coerce.string(),\n role: z.union([z.string(), z.array(z.string())]),\n organizationId: z.string().optional()\n }),\n use: [orgMiddleware],\n metadata: {\n SERVER_ONLY: true,\n $Infer: {\n body: {}\n }\n }\n },\n async (ctx) => {\n const session = ctx.body.userId ? await getSessionFromCtx(ctx).catch((e) => null) : null;\n const orgId = ctx.body.organizationId || session?.session.activeOrganizationId;\n if (!orgId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n const teamId = \"teamId\" in ctx.body ? ctx.body.teamId : void 0;\n if (teamId && !ctx.context.orgOptions.teams?.enabled) {\n ctx.context.logger.error(\"Teams are not enabled\");\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Teams are not enabled\"\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const user = await ctx.context.internalAdapter.findUserById(\n ctx.body.userId\n );\n if (!user) {\n throw new APIError(\"BAD_REQUEST\", {\n message: BASE_ERROR_CODES.USER_NOT_FOUND\n });\n }\n const alreadyMember = await adapter.findMemberByEmail({\n email: user.email,\n organizationId: orgId\n });\n if (alreadyMember) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\n });\n }\n if (teamId) {\n const team = await adapter.findTeamById({\n teamId,\n organizationId: orgId\n });\n if (!team || team.organizationId !== orgId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND\n });\n }\n }\n const membershipLimit = ctx.context.orgOptions?.membershipLimit || 100;\n const members = await adapter.listMembers({ organizationId: orgId });\n if (members.length >= membershipLimit) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\n });\n }\n const createdMember = await adapter.createMember({\n organizationId: orgId,\n userId: user.id,\n role: parseRoles(ctx.body.role),\n createdAt: /* @__PURE__ */ new Date(),\n ...teamId ? { teamId } : {}\n });\n return ctx.json(createdMember);\n }\n);\nconst removeMember = createAuthEndpoint(\n \"/organization/remove-member\",\n {\n method: \"POST\",\n body: z.object({\n memberIdOrEmail: z.string({\n description: \"The ID or email of the member to remove\"\n }),\n /**\n * If not provided, the active organization will be used\n */\n organizationId: z.string({\n description: \"The ID of the organization to remove the member from. If not provided, the active organization will be used\"\n }).optional()\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Remove a member from an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n member: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n userId: {\n type: \"string\"\n },\n organizationId: {\n type: \"string\"\n },\n role: {\n type: \"string\"\n }\n },\n required: [\"id\", \"userId\", \"organizationId\", \"role\"]\n }\n },\n required: [\"member\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n let toBeRemovedMember = null;\n if (ctx.body.memberIdOrEmail.includes(\"@\")) {\n toBeRemovedMember = await adapter.findMemberByEmail({\n email: ctx.body.memberIdOrEmail,\n organizationId\n });\n } else {\n toBeRemovedMember = await adapter.findMemberById(\n ctx.body.memberIdOrEmail\n );\n }\n if (!toBeRemovedMember) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const roles = toBeRemovedMember.role.split(\",\");\n const creatorRole = ctx.context.orgOptions?.creatorRole || \"owner\";\n const isOwner = roles.includes(creatorRole);\n if (isOwner) {\n if (member.role !== creatorRole) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\n });\n }\n const members = await adapter.listMembers({\n organizationId\n });\n const owners = members.filter((member2) => {\n const roles2 = member2.role.split(\",\");\n return roles2.includes(creatorRole);\n });\n if (owners.length <= 1) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\n });\n }\n }\n const canDeleteMember = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n member: [\"delete\"]\n }\n });\n if (!canDeleteMember) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER\n });\n }\n if (toBeRemovedMember?.organizationId !== organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n await adapter.deleteMember(toBeRemovedMember.id);\n if (session.user.id === toBeRemovedMember.userId && session.session.activeOrganizationId === toBeRemovedMember.organizationId) {\n await adapter.setActiveOrganization(session.session.token, null);\n }\n return ctx.json({\n member: toBeRemovedMember\n });\n }\n);\nconst updateMemberRole = (option) => createAuthEndpoint(\n \"/organization/update-member-role\",\n {\n method: \"POST\",\n body: z.object({\n role: z.union([z.string(), z.array(z.string())]),\n memberId: z.string(),\n organizationId: z.string().optional()\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n $Infer: {\n body: {}\n },\n openapi: {\n description: \"Update the role of a member in an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n member: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n userId: {\n type: \"string\"\n },\n organizationId: {\n type: \"string\"\n },\n role: {\n type: \"string\"\n }\n },\n required: [\"id\", \"userId\", \"organizationId\", \"role\"]\n }\n },\n required: [\"member\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n if (!ctx.body.role) {\n throw new APIError(\"BAD_REQUEST\");\n }\n const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const roleToSet = Array.isArray(ctx.body.role) ? ctx.body.role : ctx.body.role ? [ctx.body.role] : [];\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const toBeUpdatedMember = member.id !== ctx.body.memberId ? await adapter.findMemberById(ctx.body.memberId) : member;\n if (!toBeUpdatedMember) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const toBeUpdatedMemberRoles = toBeUpdatedMember.role.split(\",\");\n const updatingMemberRoles = member.role.split(\",\");\n const creatorRole = ctx.context.orgOptions?.creatorRole || \"owner\";\n if (toBeUpdatedMemberRoles.includes(creatorRole) && !updatingMemberRoles.includes(creatorRole) || roleToSet.includes(creatorRole) && !updatingMemberRoles.includes(creatorRole)) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER\n });\n }\n const canUpdateMember = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n member: [\"update\"]\n }\n });\n if (!canUpdateMember) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER\n });\n }\n const updatedMember = await adapter.updateMember(\n ctx.body.memberId,\n parseRoles(ctx.body.role)\n );\n if (!updatedMember) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n return ctx.json(updatedMember);\n }\n);\nconst getActiveMember = createAuthEndpoint(\n \"/organization/get-active-member\",\n {\n method: \"GET\",\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Get the member details of the active organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\"\n },\n userId: {\n type: \"string\"\n },\n organizationId: {\n type: \"string\"\n },\n role: {\n type: \"string\"\n }\n },\n required: [\"id\", \"userId\", \"organizationId\", \"role\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = session.session.activeOrganizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n }\n });\n }\n return ctx.json(member);\n }\n);\nconst leaveOrganization = createAuthEndpoint(\n \"/organization/leave\",\n {\n method: \"POST\",\n body: z.object({\n organizationId: z.string()\n }),\n use: [sessionMiddleware, orgMiddleware]\n },\n async (ctx) => {\n const session = ctx.context.session;\n const adapter = getOrgAdapter(ctx.context);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId: ctx.body.organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.MEMBER_NOT_FOUND\n });\n }\n const isOwnerLeaving = member.role === (ctx.context.orgOptions?.creatorRole || \"owner\");\n if (isOwnerLeaving) {\n const members = await ctx.context.adapter.findMany({\n model: \"member\",\n where: [\n {\n field: \"organizationId\",\n value: ctx.body.organizationId\n }\n ]\n });\n const owners = members.filter(\n (member2) => member2.role === (ctx.context.orgOptions?.creatorRole || \"owner\")\n );\n if (owners.length <= 1) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\n });\n }\n }\n await adapter.deleteMember(member.id);\n if (session.session.activeOrganizationId === ctx.body.organizationId) {\n await adapter.setActiveOrganization(session.session.token, null);\n }\n return ctx.json(member);\n }\n);\n\nconst createOrganization = createAuthEndpoint(\n \"/organization/create\",\n {\n method: \"POST\",\n body: z.object({\n name: z.string({\n description: \"The name of the organization\"\n }),\n slug: z.string({\n description: \"The slug of the organization\"\n }),\n userId: z.coerce.string({\n description: \"The user id of the organization creator. If not provided, the current user will be used. Should only be used by admins or when called by the server.\"\n }).optional(),\n logo: z.string({\n description: \"The logo of the organization\"\n }).optional(),\n metadata: z.record(z.string(), z.any(), {\n description: \"The metadata of the organization\"\n }).optional(),\n keepCurrentActiveOrganization: z.boolean({\n description: \"Whether to keep the current active organization active after creating a new one\"\n }).optional()\n }),\n use: [orgMiddleware],\n metadata: {\n openapi: {\n description: \"Create an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n description: \"The organization that was created\",\n $ref: \"#/components/schemas/Organization\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n if (!session && (ctx.request || ctx.headers)) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n let user = session?.user || null;\n if (!user) {\n if (!ctx.body.userId) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n user = await ctx.context.internalAdapter.findUserById(ctx.body.userId);\n }\n if (!user) {\n return ctx.json(null, {\n status: 401\n });\n }\n const options = ctx.context.orgOptions;\n const canCreateOrg = typeof options?.allowUserToCreateOrganization === \"function\" ? await options.allowUserToCreateOrganization(user) : options?.allowUserToCreateOrganization === void 0 ? true : options.allowUserToCreateOrganization;\n if (!canCreateOrg) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION\n });\n }\n const adapter = getOrgAdapter(ctx.context, options);\n const userOrganizations = await adapter.listOrganizations(user.id);\n const hasReachedOrgLimit = typeof options.organizationLimit === \"number\" ? userOrganizations.length >= options.organizationLimit : typeof options.organizationLimit === \"function\" ? await options.organizationLimit(user) : false;\n if (hasReachedOrgLimit) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\n });\n }\n const existingOrganization = await adapter.findOrganizationBySlug(\n ctx.body.slug\n );\n if (existingOrganization) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_ALREADY_EXISTS\n });\n }\n let hookResponse = void 0;\n if (options.organizationCreation?.beforeCreate) {\n const response = await options.organizationCreation.beforeCreate(\n {\n organization: {\n slug: ctx.body.slug,\n name: ctx.body.name,\n logo: ctx.body.logo,\n createdAt: /* @__PURE__ */ new Date(),\n metadata: ctx.body.metadata\n },\n user\n },\n ctx.request\n );\n if (response && typeof response === \"object\" && \"data\" in response) {\n hookResponse = response;\n }\n }\n const organization = await adapter.createOrganization({\n organization: {\n slug: ctx.body.slug,\n name: ctx.body.name,\n logo: ctx.body.logo,\n createdAt: /* @__PURE__ */ new Date(),\n metadata: ctx.body.metadata,\n ...hookResponse?.data || {}\n }\n });\n let member;\n if (options?.teams?.enabled && options.teams.defaultTeam?.enabled !== false) {\n const defaultTeam = await options.teams.defaultTeam?.customCreateDefaultTeam?.(\n organization,\n ctx.request\n ) || await adapter.createTeam({\n organizationId: organization.id,\n name: `${organization.name}`,\n createdAt: /* @__PURE__ */ new Date()\n });\n member = await adapter.createMember({\n teamId: defaultTeam.id,\n userId: user.id,\n organizationId: organization.id,\n role: ctx.context.orgOptions.creatorRole || \"owner\"\n });\n } else {\n member = await adapter.createMember({\n userId: user.id,\n organizationId: organization.id,\n role: ctx.context.orgOptions.creatorRole || \"owner\"\n });\n }\n if (options.organizationCreation?.afterCreate) {\n await options.organizationCreation.afterCreate(\n {\n organization,\n user,\n member\n },\n ctx.request\n );\n }\n if (ctx.context.session && !ctx.body.keepCurrentActiveOrganization) {\n await adapter.setActiveOrganization(\n ctx.context.session.session.token,\n organization.id\n );\n }\n return ctx.json({\n ...organization,\n metadata: ctx.body.metadata,\n members: [member]\n });\n }\n);\nconst checkOrganizationSlug = createAuthEndpoint(\n \"/organization/check-slug\",\n {\n method: \"POST\",\n body: z.object({\n slug: z.string()\n }),\n use: [requestOnlySessionMiddleware, orgMiddleware]\n },\n async (ctx) => {\n const orgAdapter = getOrgAdapter(ctx.context);\n const org = await orgAdapter.findOrganizationBySlug(ctx.body.slug);\n if (!org) {\n return ctx.json({\n status: true\n });\n }\n throw new APIError(\"BAD_REQUEST\", {\n message: \"slug is taken\"\n });\n }\n);\nconst updateOrganization = createAuthEndpoint(\n \"/organization/update\",\n {\n method: \"POST\",\n body: z.object({\n data: z.object({\n name: z.string({\n description: \"The name of the organization\"\n }).optional(),\n slug: z.string({\n description: \"The slug of the organization\"\n }).optional(),\n logo: z.string({\n description: \"The logo of the organization\"\n }).optional(),\n metadata: z.record(z.string(), z.any(), {\n description: \"The metadata of the organization\"\n }).optional()\n }).partial(),\n organizationId: z.string().optional()\n }),\n requireHeaders: true,\n use: [orgMiddleware],\n metadata: {\n openapi: {\n description: \"Update an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n description: \"The updated organization\",\n $ref: \"#/components/schemas/Organization\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await ctx.context.getSession(ctx);\n if (!session) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User not found\"\n });\n }\n const organizationId = ctx.body.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\n });\n }\n const canUpdateOrg = hasPermission({\n permissions: {\n organization: [\"update\"]\n },\n role: member.role,\n options: ctx.context.orgOptions\n });\n if (!canUpdateOrg) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION\n });\n }\n const updatedOrg = await adapter.updateOrganization(\n organizationId,\n ctx.body.data\n );\n return ctx.json(updatedOrg);\n }\n);\nconst deleteOrganization = createAuthEndpoint(\n \"/organization/delete\",\n {\n method: \"POST\",\n body: z.object({\n organizationId: z.string({\n description: \"The organization id to delete\"\n })\n }),\n requireHeaders: true,\n use: [orgMiddleware],\n metadata: {\n openapi: {\n description: \"Delete an organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"string\",\n description: \"The organization id that was deleted\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await ctx.context.getSession(ctx);\n if (!session) {\n return ctx.json(null, {\n status: 401\n });\n }\n const organizationId = ctx.body.organizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n }\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\n }\n });\n }\n const canDeleteOrg = hasPermission({\n role: member.role,\n permissions: {\n organization: [\"delete\"]\n },\n options: ctx.context.orgOptions\n });\n if (!canDeleteOrg) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION\n });\n }\n if (organizationId === session.session.activeOrganizationId) {\n await adapter.setActiveOrganization(session.session.token, null);\n }\n const option = ctx.context.orgOptions.organizationDeletion;\n if (option?.disabled) {\n throw new APIError(\"FORBIDDEN\");\n }\n const org = await adapter.findOrganizationById(organizationId);\n if (!org) {\n throw new APIError(\"BAD_REQUEST\");\n }\n if (option?.beforeDelete) {\n await option.beforeDelete({\n organization: org,\n user: session.user\n });\n }\n await adapter.deleteOrganization(organizationId);\n if (option?.afterDelete) {\n await option.afterDelete({\n organization: org,\n user: session.user\n });\n }\n return ctx.json(org);\n }\n);\nconst getFullOrganization = () => createAuthEndpoint(\n \"/organization/get-full-organization\",\n {\n method: \"GET\",\n query: z.optional(\n z.object({\n organizationId: z.string({\n description: \"The organization id to get\"\n }).optional(),\n organizationSlug: z.string({\n description: \"The organization slug to get\"\n }).optional()\n })\n ),\n requireHeaders: true,\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Get the full organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n description: \"The organization\",\n $ref: \"#/components/schemas/Organization\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = ctx.query?.organizationSlug || ctx.query?.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 200\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const organization = await adapter.findFullOrganization({\n organizationId,\n isSlug: !!ctx.query?.organizationSlug,\n includeTeams: ctx.context.orgOptions.teams?.enabled\n });\n const isMember = organization?.members.find(\n (member) => member.userId === session.user.id\n );\n if (!isMember) {\n await adapter.setActiveOrganization(session.session.token, null);\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\n });\n }\n if (!organization) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n return ctx.json(organization);\n }\n);\nconst setActiveOrganization = () => {\n return createAuthEndpoint(\n \"/organization/set-active\",\n {\n method: \"POST\",\n body: z.object({\n organizationId: z.string({\n description: \"The organization id to set as active. It can be null to unset the active organization\"\n }).nullable().optional(),\n organizationSlug: z.string({\n description: \"The organization slug to set as active. It can be null to unset the active organization if organizationId is not provided\"\n }).optional()\n }),\n use: [orgSessionMiddleware, orgMiddleware],\n metadata: {\n openapi: {\n description: \"Set the active organization\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n description: \"The organization\",\n $ref: \"#/components/schemas/Organization\"\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const session = ctx.context.session;\n let organizationId = ctx.body.organizationSlug || ctx.body.organizationId;\n if (organizationId === null) {\n const sessionOrgId = session.session.activeOrganizationId;\n if (!sessionOrgId) {\n return ctx.json(null);\n }\n const updatedSession2 = await adapter.setActiveOrganization(\n session.session.token,\n null\n );\n await setSessionCookie(ctx, {\n session: updatedSession2,\n user: session.user\n });\n return ctx.json(null);\n }\n if (!organizationId) {\n const sessionOrgId = session.session.activeOrganizationId;\n if (!sessionOrgId) {\n return ctx.json(null);\n }\n organizationId = sessionOrgId;\n }\n const organization = await adapter.findFullOrganization({\n organizationId,\n isSlug: !!ctx.body.organizationSlug\n });\n const isMember = organization?.members.find(\n (member) => member.userId === session.user.id\n );\n if (!isMember) {\n await adapter.setActiveOrganization(session.session.token, null);\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\n });\n }\n if (!organization) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.ORGANIZATION_NOT_FOUND\n });\n }\n const updatedSession = await adapter.setActiveOrganization(\n session.session.token,\n organization.id\n );\n await setSessionCookie(ctx, {\n session: updatedSession,\n user: session.user\n });\n return ctx.json(organization);\n }\n );\n};\nconst listOrganizations = createAuthEndpoint(\n \"/organization/list\",\n {\n method: \"GET\",\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"List all organizations\",\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: \"#/components/schemas/Organization\"\n }\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const organizations = await adapter.listOrganizations(\n ctx.context.session.user.id\n );\n return ctx.json(organizations);\n }\n);\n\nconst role = z.string();\nconst invitationStatus = z.enum([\"pending\", \"accepted\", \"rejected\", \"canceled\"]).default(\"pending\");\nz.object({\n id: z.string().default(generateId),\n name: z.string(),\n slug: z.string(),\n logo: z.string().nullish().optional(),\n metadata: z.record(z.string()).or(z.string().transform((v) => JSON.parse(v))).optional(),\n createdAt: z.date()\n});\nz.object({\n id: z.string().default(generateId),\n organizationId: z.string(),\n userId: z.coerce.string(),\n role,\n createdAt: z.date().default(() => /* @__PURE__ */ new Date()),\n teamId: z.string().optional()\n});\nz.object({\n id: z.string().default(generateId),\n organizationId: z.string(),\n email: z.string(),\n role,\n status: invitationStatus,\n teamId: z.string().optional(),\n inviterId: z.string(),\n expiresAt: z.date()\n});\nconst teamSchema = z.object({\n id: z.string().default(generateId),\n name: z.string().min(1),\n organizationId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date().optional()\n});\n\nconst createTeam = (options) => createAuthEndpoint(\n \"/organization/create-team\",\n {\n method: \"POST\",\n body: z.object({\n organizationId: z.string().optional(),\n name: z.string()\n }),\n use: [orgMiddleware],\n metadata: {\n openapi: {\n description: \"Create a new team within an organization\",\n responses: {\n \"200\": {\n description: \"Team created successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier of the created team\"\n },\n name: {\n type: \"string\",\n description: \"Name of the team\"\n },\n organizationId: {\n type: \"string\",\n description: \"ID of the organization the team belongs to\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was created\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was last updated\"\n }\n },\n required: [\n \"id\",\n \"name\",\n \"organizationId\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n const organizationId = ctx.body.organizationId || session?.session.activeOrganizationId;\n if (!session && (ctx.request || ctx.headers)) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n if (!organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n if (session) {\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION\n });\n }\n const canCreate = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n team: [\"create\"]\n }\n });\n if (!canCreate) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION\n });\n }\n }\n const existingTeams = await adapter.listTeams(organizationId);\n const maximum = typeof ctx.context.orgOptions.teams?.maximumTeams === \"function\" ? await ctx.context.orgOptions.teams?.maximumTeams(\n {\n organizationId,\n session\n },\n ctx.request\n ) : ctx.context.orgOptions.teams?.maximumTeams;\n const maxTeamsReached = maximum ? existingTeams.length >= maximum : false;\n if (maxTeamsReached) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS\n });\n }\n const createdTeam = await adapter.createTeam({\n name: ctx.body.name,\n organizationId,\n createdAt: /* @__PURE__ */ new Date(),\n updatedAt: /* @__PURE__ */ new Date()\n });\n return ctx.json(createdTeam);\n }\n);\nconst removeTeam = createAuthEndpoint(\n \"/organization/remove-team\",\n {\n method: \"POST\",\n body: z.object({\n teamId: z.string(),\n organizationId: z.string().optional()\n }),\n use: [orgMiddleware],\n metadata: {\n openapi: {\n description: \"Remove a team from an organization\",\n responses: {\n \"200\": {\n description: \"Team removed successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\",\n description: \"Confirmation message indicating successful removal\",\n enum: [\"Team removed successfully.\"]\n }\n },\n required: [\"message\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n const organizationId = ctx.body.organizationId || session?.session.activeOrganizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n if (!session && (ctx.request || ctx.headers)) {\n throw new APIError(\"UNAUTHORIZED\");\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n if (session) {\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member || member.teamId === ctx.body.teamId) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM\n });\n }\n const canRemove = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n team: [\"delete\"]\n }\n });\n if (!canRemove) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION\n });\n }\n }\n const team = await adapter.findTeamById({\n teamId: ctx.body.teamId,\n organizationId\n });\n if (!team || team.organizationId !== organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND\n });\n }\n if (!ctx.context.orgOptions.teams?.allowRemovingAllTeams) {\n const teams = await adapter.listTeams(organizationId);\n if (teams.length <= 1) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.UNABLE_TO_REMOVE_LAST_TEAM\n });\n }\n }\n await adapter.deleteTeam(team.id);\n return ctx.json({ message: \"Team removed successfully.\" });\n }\n);\nconst updateTeam = createAuthEndpoint(\n \"/organization/update-team\",\n {\n method: \"POST\",\n body: z.object({\n teamId: z.string(),\n data: teamSchema.partial()\n }),\n use: [orgMiddleware, orgSessionMiddleware],\n metadata: {\n openapi: {\n description: \"Update an existing team in an organization\",\n responses: {\n \"200\": {\n description: \"Team updated successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier of the updated team\"\n },\n name: {\n type: \"string\",\n description: \"Updated name of the team\"\n },\n organizationId: {\n type: \"string\",\n description: \"ID of the organization the team belongs to\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was created\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was last updated\"\n }\n },\n required: [\n \"id\",\n \"name\",\n \"organizationId\",\n \"createdAt\",\n \"updatedAt\"\n ]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = ctx.body.data.organizationId || session.session.activeOrganizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session.user.id,\n organizationId\n });\n if (!member) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM\n });\n }\n const canUpdate = hasPermission({\n role: member.role,\n options: ctx.context.orgOptions,\n permissions: {\n team: [\"update\"]\n }\n });\n if (!canUpdate) {\n throw new APIError(\"FORBIDDEN\", {\n message: ORGANIZATION_ERROR_CODES.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM\n });\n }\n const team = await adapter.findTeamById({\n teamId: ctx.body.teamId,\n organizationId\n });\n if (!team || team.organizationId !== organizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.TEAM_NOT_FOUND\n });\n }\n const updatedTeam = await adapter.updateTeam(team.id, {\n name: ctx.body.data.name\n });\n return ctx.json(updatedTeam);\n }\n);\nconst listOrganizationTeams = createAuthEndpoint(\n \"/organization/list-teams\",\n {\n method: \"GET\",\n query: z.optional(\n z.object({\n organizationId: z.string().optional()\n })\n ),\n metadata: {\n openapi: {\n description: \"List all teams in an organization\",\n responses: {\n \"200\": {\n description: \"Teams retrieved successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier of the team\"\n },\n name: {\n type: \"string\",\n description: \"Name of the team\"\n },\n organizationId: {\n type: \"string\",\n description: \"ID of the organization the team belongs to\"\n },\n createdAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was created\"\n },\n updatedAt: {\n type: \"string\",\n format: \"date-time\",\n description: \"Timestamp when the team was last updated\"\n }\n },\n required: [\n \"id\",\n \"name\",\n \"organizationId\",\n \"createdAt\",\n \"updatedAt\"\n ]\n },\n description: \"Array of team objects within the organization\"\n }\n }\n }\n }\n }\n }\n },\n use: [orgMiddleware, orgSessionMiddleware]\n },\n async (ctx) => {\n const session = ctx.context.session;\n const organizationId = session.session.activeOrganizationId || ctx.query?.organizationId;\n if (!organizationId) {\n return ctx.json(null, {\n status: 400,\n body: {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n }\n });\n }\n const adapter = getOrgAdapter(ctx.context, ctx.context.orgOptions);\n const member = await adapter.findMemberByOrgId({\n userId: session?.user.id,\n organizationId: organizationId || \"\"\n });\n if (!member) {\n throw new APIError(\"FORBIDDEN\");\n }\n const teams = await adapter.listTeams(organizationId);\n return ctx.json(teams);\n }\n);\n\nfunction parseRoles(roles) {\n return Array.isArray(roles) ? roles.join(\",\") : roles;\n}\nconst organization = (options) => {\n let endpoints = {\n createOrganization,\n updateOrganization,\n deleteOrganization,\n setActiveOrganization: setActiveOrganization(),\n getFullOrganization: getFullOrganization(),\n listOrganizations,\n createInvitation: createInvitation(),\n cancelInvitation,\n acceptInvitation,\n getInvitation,\n rejectInvitation,\n checkOrganizationSlug,\n addMember: addMember(),\n removeMember,\n updateMemberRole: updateMemberRole(),\n getActiveMember,\n leaveOrganization,\n listInvitations\n };\n const teamSupport = options?.teams?.enabled;\n const teamEndpoints = {\n createTeam: createTeam(),\n listOrganizationTeams,\n removeTeam,\n updateTeam\n };\n if (teamSupport) {\n endpoints = {\n ...endpoints,\n ...teamEndpoints\n };\n }\n const roles = {\n ...defaultRoles,\n ...options?.roles\n };\n const teamSchema = teamSupport ? {\n team: {\n modelName: options?.schema?.team?.modelName,\n fields: {\n name: {\n type: \"string\",\n required: true,\n fieldName: options?.schema?.team?.fields?.name\n },\n organizationId: {\n type: \"string\",\n required: true,\n references: {\n model: \"organization\",\n field: \"id\"\n },\n fieldName: options?.schema?.team?.fields?.organizationId\n },\n createdAt: {\n type: \"date\",\n required: true,\n fieldName: options?.schema?.team?.fields?.createdAt\n },\n updatedAt: {\n type: \"date\",\n required: false,\n fieldName: options?.schema?.team?.fields?.updatedAt\n }\n }\n }\n } : void 0;\n const api = shimContext(endpoints, {\n orgOptions: options || {},\n roles,\n getSession: async (context) => {\n return await getSessionFromCtx(context);\n }\n });\n return {\n id: \"organization\",\n endpoints: {\n ...api,\n hasPermission: createAuthEndpoint(\n \"/organization/has-permission\",\n {\n method: \"POST\",\n requireHeaders: true,\n body: z.object({\n organizationId: z.string().optional()\n }).and(\n z.union([\n z.object({\n permission: z.record(z.string(), z.array(z.string())),\n permissions: z.undefined()\n }),\n z.object({\n permission: z.undefined(),\n permissions: z.record(z.string(), z.array(z.string()))\n })\n ])\n ),\n use: [orgSessionMiddleware],\n metadata: {\n $Infer: {\n body: {}\n },\n openapi: {\n description: \"Check if the user has permission\",\n requestBody: {\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n permission: {\n type: \"object\",\n description: \"The permission to check\",\n deprecated: true\n },\n permissions: {\n type: \"object\",\n description: \"The permission to check\"\n }\n },\n required: [\"permissions\"]\n }\n }\n }\n },\n responses: {\n \"200\": {\n description: \"Success\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n error: {\n type: \"string\"\n },\n success: {\n type: \"boolean\"\n }\n },\n required: [\"success\"]\n }\n }\n }\n }\n }\n }\n }\n },\n async (ctx) => {\n const activeOrganizationId = ctx.body.organizationId || ctx.context.session.session.activeOrganizationId;\n if (!activeOrganizationId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: ORGANIZATION_ERROR_CODES.NO_ACTIVE_ORGANIZATION\n });\n }\n const adapter = getOrgAdapter(ctx.context);\n const member = await adapter.findMemberByOrgId({\n userId: ctx.context.session.user.id,\n organizationId: activeOrganizationId\n });\n if (!member) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: ORGANIZATION_ERROR_CODES.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\n });\n }\n const result = hasPermission({\n role: member.role,\n options: options || {},\n permissions: ctx.body.permissions ?? ctx.body.permission\n });\n return ctx.json({\n error: null,\n success: result\n });\n }\n )\n },\n schema: {\n session: {\n fields: {\n activeOrganizationId: {\n type: \"string\",\n required: false,\n fieldName: options?.schema?.session?.fields?.activeOrganizationId\n }\n }\n },\n organization: {\n modelName: options?.schema?.organization?.modelName,\n fields: {\n name: {\n type: \"string\",\n required: true,\n sortable: true,\n fieldName: options?.schema?.organization?.fields?.name\n },\n slug: {\n type: \"string\",\n unique: true,\n sortable: true,\n fieldName: options?.schema?.organization?.fields?.slug\n },\n logo: {\n type: \"string\",\n required: false,\n fieldName: options?.schema?.organization?.fields?.logo\n },\n createdAt: {\n type: \"date\",\n required: true,\n fieldName: options?.schema?.organization?.fields?.createdAt\n },\n metadata: {\n type: \"string\",\n required: false,\n fieldName: options?.schema?.organization?.fields?.metadata\n }\n }\n },\n member: {\n modelName: options?.schema?.member?.modelName,\n fields: {\n organizationId: {\n type: \"string\",\n required: true,\n references: {\n model: \"organization\",\n field: \"id\"\n },\n fieldName: options?.schema?.member?.fields?.organizationId\n },\n userId: {\n type: \"string\",\n required: true,\n fieldName: options?.schema?.member?.fields?.userId,\n references: {\n model: \"user\",\n field: \"id\"\n }\n },\n role: {\n type: \"string\",\n required: true,\n sortable: true,\n defaultValue: \"member\",\n fieldName: options?.schema?.member?.fields?.role\n },\n ...teamSupport ? {\n teamId: {\n type: \"string\",\n required: false,\n sortable: true,\n fieldName: options?.schema?.member?.fields?.teamId\n }\n } : {},\n createdAt: {\n type: \"date\",\n required: true,\n fieldName: options?.schema?.member?.fields?.createdAt\n }\n }\n },\n invitation: {\n modelName: options?.schema?.invitation?.modelName,\n fields: {\n organizationId: {\n type: \"string\",\n required: true,\n references: {\n model: \"organization\",\n field: \"id\"\n },\n fieldName: options?.schema?.invitation?.fields?.organizationId\n },\n email: {\n type: \"string\",\n required: true,\n sortable: true,\n fieldName: options?.schema?.invitation?.fields?.email\n },\n role: {\n type: \"string\",\n required: false,\n sortable: true,\n fieldName: options?.schema?.invitation?.fields?.role\n },\n ...teamSupport ? {\n teamId: {\n type: \"string\",\n required: false,\n sortable: true,\n fieldName: options?.schema?.invitation?.fields?.teamId\n }\n } : {},\n status: {\n type: \"string\",\n required: true,\n sortable: true,\n defaultValue: \"pending\",\n fieldName: options?.schema?.invitation?.fields?.status\n },\n expiresAt: {\n type: \"date\",\n required: true,\n fieldName: options?.schema?.invitation?.fields?.expiresAt\n },\n inviterId: {\n type: \"string\",\n references: {\n model: \"user\",\n field: \"id\"\n },\n fieldName: options?.schema?.invitation?.fields?.inviterId,\n required: true\n }\n }\n },\n ...teamSupport ? teamSchema : {}\n },\n $Infer: {\n Organization: {},\n Invitation: {},\n Member: {},\n Team: teamSupport ? {} : {},\n ActiveOrganization: {}\n },\n $ERROR_CODES: ORGANIZATION_ERROR_CODES\n };\n};\n\nexport { organization as o, parseRoles as p };\n","import { z } from 'zod';\n\nconst schema = {\n jwks: {\n fields: {\n publicKey: {\n type: \"string\",\n required: true\n },\n privateKey: {\n type: \"string\",\n required: true\n },\n createdAt: {\n type: \"date\",\n required: true\n }\n }\n }\n};\nz.object({\n id: z.string(),\n publicKey: z.string(),\n privateKey: z.string(),\n createdAt: z.date()\n});\n\nexport { schema as s };\n","import type { DodoPayments } from \"dodopayments\";\nimport { APIError } from \"better-auth/api\";\nimport { sessionMiddleware } from \"better-auth/api\";\nimport { createAuthEndpoint } from \"better-auth/plugins\";\nimport { z } from \"zod\";\n\nexport const portal = () => (dodopayments: DodoPayments) => {\n return {\n portal: createAuthEndpoint(\n \"/customer/portal\",\n {\n method: \"GET\",\n use: [sessionMiddleware],\n },\n async (ctx) => {\n if (!ctx.context.session?.user.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customers = await dodopayments.customers.list({\n email: ctx.context.session?.user.email,\n });\n const customer = customers.items[0];\n\n const customerSession =\n await dodopayments.customers.customerPortal.create(\n customer.customer_id,\n );\n\n return ctx.json({\n url: customerSession.link,\n redirect: true,\n });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments customer portal creation failed. Error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Customer portal creation failed\",\n });\n }\n },\n ),\n subscriptions: createAuthEndpoint(\n \"/customer/subscriptions/list\",\n {\n method: \"GET\",\n query: z\n .object({\n page: z.coerce.number().optional(),\n limit: z.coerce.number().optional(),\n status: z\n .enum([\n \"active\",\n \"cancelled\",\n \"on_hold\",\n \"pending\",\n \"paused\",\n \"failed\",\n \"expired\",\n ])\n .optional(),\n })\n .optional(),\n use: [sessionMiddleware],\n },\n async (ctx) => {\n if (!ctx.context.session.user.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customers = await dodopayments.customers.list({\n email: ctx.context.session?.user.email,\n });\n const customer = customers.items[0];\n\n const subscriptions = await dodopayments.subscriptions.list({\n customer_id: customer.customer_id,\n // page number is 0-indexed\n page_number: ctx.query?.page ? ctx.query.page - 1 : undefined,\n page_size: ctx.query?.limit,\n status: ctx.query?.status,\n });\n\n return ctx.json({ items: subscriptions.items });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments subscriptions list failed. Error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"DodoPayments subscriptions list failed\",\n });\n }\n },\n ),\n payments: createAuthEndpoint(\n \"/customer/payments/list\",\n {\n method: \"GET\",\n query: z\n .object({\n page: z.coerce.number().optional(),\n limit: z.coerce.number().optional(),\n status: z\n .enum([\n \"succeeded\",\n \"failed\",\n \"cancelled\",\n \"processing\",\n \"requires_customer_action\",\n \"requires_merchant_action\",\n \"requires_payment_method\",\n \"requires_confirmation\",\n \"requires_capture\",\n \"partially_captured\",\n \"partially_captured_and_capturable\",\n ])\n .optional(),\n })\n .optional(),\n use: [sessionMiddleware],\n },\n async (ctx) => {\n if (!ctx.context.session.user.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customers = await dodopayments.customers.list({\n email: ctx.context.session?.user.email,\n });\n const customer = customers.items[0];\n\n const payments = await dodopayments.payments.list({\n customer_id: customer.customer_id,\n // page number is 0-indexed\n page_number: ctx.query?.page ? ctx.query.page - 1 : undefined,\n page_size: ctx.query?.limit,\n status: ctx.query?.status,\n });\n\n return ctx.json({ items: payments.items });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments orders list failed. Error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Orders list failed\",\n });\n }\n },\n ),\n };\n};\n","export const VERSION = '1.42.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"./core.mjs\";\nexport class DodoPaymentsError extends Error {\n}\nexport class APIError extends DodoPaymentsError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.error = error;\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n const error = errorResponse;\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexport class APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexport class APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\n//# sourceMappingURL=error.mjs.map","export let auto = false;\nexport let kind = undefined;\nexport let fetch = undefined;\nexport let Request = undefined;\nexport let Response = undefined;\nexport let Headers = undefined;\nexport let FormData = undefined;\nexport let Blob = undefined;\nexport let File = undefined;\nexport let ReadableStream = undefined;\nexport let getMultipartRequestOptions = undefined;\nexport let getDefaultAgent = undefined;\nexport let fileFromPath = undefined;\nexport let isFsReadStream = undefined;\nexport function setShims(shims, options = { auto: false }) {\n if (auto) {\n throw new Error(`you must \\`import 'dodopayments/shims/${shims.kind}'\\` before importing anything else from dodopayments`);\n }\n if (kind) {\n throw new Error(`can't \\`import 'dodopayments/shims/${shims.kind}'\\` after \\`import 'dodopayments/shims/${kind}'\\``);\n }\n auto = options.auto;\n kind = shims.kind;\n fetch = shims.fetch;\n Request = shims.Request;\n Response = shims.Response;\n Headers = shims.Headers;\n FormData = shims.FormData;\n Blob = shims.Blob;\n File = shims.File;\n ReadableStream = shims.ReadableStream;\n getMultipartRequestOptions = shims.getMultipartRequestOptions;\n getDefaultAgent = shims.getDefaultAgent;\n fileFromPath = shims.fileFromPath;\n isFsReadStream = shims.isFsReadStream;\n}\n//# sourceMappingURL=registry.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport class MultipartBody {\n constructor(body) {\n this.body = body;\n }\n get [Symbol.toStringTag]() {\n return 'MultipartBody';\n }\n}\n//# sourceMappingURL=MultipartBody.mjs.map","import { MultipartBody } from \"./MultipartBody.mjs\";\nexport function getRuntime({ manuallyImported } = {}) {\n const recommendation = manuallyImported ?\n `You may need to use polyfills`\n : `Add one of these imports before your first \\`import … from 'dodopayments'\\`:\n- \\`import 'dodopayments/shims/node'\\` (if you're running on Node)\n- \\`import 'dodopayments/shims/web'\\` (otherwise)\n`;\n let _fetch, _Request, _Response, _Headers;\n try {\n // @ts-ignore\n _fetch = fetch;\n // @ts-ignore\n _Request = Request;\n // @ts-ignore\n _Response = Response;\n // @ts-ignore\n _Headers = Headers;\n }\n catch (error) {\n throw new Error(`this environment is missing the following Web Fetch API type: ${error.message}. ${recommendation}`);\n }\n return {\n kind: 'web',\n fetch: _fetch,\n Request: _Request,\n Response: _Response,\n Headers: _Headers,\n FormData: \n // @ts-ignore\n typeof FormData !== 'undefined' ? FormData : (class FormData {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${recommendation}`);\n }\n }),\n Blob: typeof Blob !== 'undefined' ? Blob : (class Blob {\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${recommendation}`);\n }\n }),\n File: \n // @ts-ignore\n typeof File !== 'undefined' ? File : (class File {\n // @ts-ignore\n constructor() {\n throw new Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${recommendation}`);\n }\n }),\n ReadableStream: \n // @ts-ignore\n typeof ReadableStream !== 'undefined' ? ReadableStream : (class ReadableStream {\n // @ts-ignore\n constructor() {\n throw new Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${recommendation}`);\n }\n }),\n getMultipartRequestOptions: async (\n // @ts-ignore\n form, opts) => ({\n ...opts,\n body: new MultipartBody(form),\n }),\n getDefaultAgent: (url) => undefined,\n fileFromPath: () => {\n throw new Error('The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/dodopayments/dodopayments-node#file-uploads');\n },\n isFsReadStream: (value) => false,\n };\n}\n//# sourceMappingURL=web-runtime.mjs.map","/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport * as shims from './registry.mjs';\nimport * as auto from 'dodopayments/_shims/auto/runtime';\nexport const init = () => {\n if (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\n};\nexport * from './registry.mjs';\n\ninit();\n","import { FormData, File, getMultipartRequestOptions, isFsReadStream, } from \"./_shims/index.mjs\";\nexport { fileFromPath } from \"./_shims/index.mjs\";\nexport const isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\nexport const isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nexport const isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\nexport const isUploadable = (value) => {\n return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);\n};\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if (isFileLike(value)) {\n return value;\n }\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file');\n // we need to convert the `Blob` into an array buffer because the `Blob` class\n // that `node-fetch` defines is incompatible with the web standard which results\n // in `new File` interpreting it as a string instead of binary data.\n const data = isBlobLike(blob) ? [(await blob.arrayBuffer())] : [blob];\n return new File(data, name, options);\n }\n const bits = await getBytes(value);\n name || (name = getName(value) ?? 'unknown_file');\n if (!options?.type) {\n const type = bits[0]?.type;\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return new File(bits, name, options);\n}\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if (isBlobLike(value)) {\n parts.push(await value.arrayBuffer());\n }\n else if (isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(chunk); // TODO, consider validating?\n }\n }\n else {\n throw new Error(`Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n ?.name}; props: ${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n const props = Object.getOwnPropertyNames(value);\n return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\nfunction getName(value) {\n return (getStringFromMaybeBuffer(value.name) ||\n getStringFromMaybeBuffer(value.filename) ||\n // For fs.ReadStream\n getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop());\n}\nconst getStringFromMaybeBuffer = (x) => {\n if (typeof x === 'string')\n return x;\n if (typeof Buffer !== 'undefined' && x instanceof Buffer)\n return String(x);\n return undefined;\n};\nconst isAsyncIterableIterator = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\nexport const isMultipartBody = (body) => body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const multipartFormRequestOptions = async (opts) => {\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const createForm = async (body) => {\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\nconst hasUploadableValue = (value) => {\n if (isUploadable(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if (isUploadable(value)) {\n const file = await toFile(value);\n form.append(key, file);\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.mjs.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _APIClient_baseURLOverridden, _AbstractPage_client;\nimport { VERSION } from \"./version.mjs\";\nimport { DodoPaymentsError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, } from \"./error.mjs\";\nimport { kind as shimsKind, getDefaultAgent, fetch, init, } from \"./_shims/index.mjs\";\n// try running side effects outside of _shims/index to workaround https://github.com/vercel/next.js/issues/76881\ninit();\nimport { isBlobLike, isMultipartBody } from \"./uploads.mjs\";\nexport { maybeMultipartFormRequestOptions, multipartFormRequestOptions, createForm, } from \"./uploads.mjs\";\nasync function defaultParseResponse(props) {\n const { response } = props;\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const json = await response.json();\n debug('response', response.status, response.url, response.headers, json);\n return json;\n }\n const text = await response.text();\n debug('response', response.status, response.url, response.headers, text);\n // TODO handle blob, arraybuffer, other content types, etc.\n return text;\n}\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n constructor(responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n }\n _thenUnwrap(transform) {\n return new APIPromise(this.responsePromise, async (props) => transform(await this.parseResponse(props), props));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'dodopayments'`:\n * - `import 'dodopayments/shims/node'` (if you're running on Node)\n * - `import 'dodopayments/shims/web'` (otherwise)\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data and the raw `Response` instance.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'dodopayments'`:\n * - `import 'dodopayments/shims/node'` (if you're running on Node)\n * - `import 'dodopayments/shims/web'` (otherwise)\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(this.parseResponse);\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\nexport class APIClient {\n constructor({ baseURL, baseURLOverridden, maxRetries = 2, timeout = 60000, // 1 minute\n httpAgent, fetch: overriddenFetch, }) {\n _APIClient_baseURLOverridden.set(this, void 0);\n this.baseURL = baseURL;\n __classPrivateFieldSet(this, _APIClient_baseURLOverridden, baseURLOverridden, \"f\");\n this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n this.timeout = validatePositiveInteger('timeout', timeout);\n this.httpAgent = httpAgent;\n this.fetch = overriddenFetch ?? fetch;\n }\n authHeaders(opts) {\n return {};\n }\n /**\n * Override this to add your own default headers, for example:\n *\n * {\n * ...super.defaultHeaders(),\n * Authorization: 'Bearer 123',\n * }\n */\n defaultHeaders(opts) {\n return {\n Accept: 'application/json',\n ...(['head', 'get'].includes(opts.method) ? {} : { 'Content-Type': 'application/json' }),\n 'User-Agent': this.getUserAgent(),\n ...getPlatformHeaders(),\n ...this.authHeaders(opts),\n };\n }\n /**\n * Override this to add your own headers validation:\n */\n validateHeaders(headers, customHeaders) { }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then(async (opts) => {\n const body = opts && isBlobLike(opts?.body) ? new DataView(await opts.body.arrayBuffer())\n : opts?.body instanceof DataView ? opts.body\n : opts?.body instanceof ArrayBuffer ? new DataView(opts.body)\n : opts && ArrayBuffer.isView(opts?.body) ? new DataView(opts.body.buffer)\n : opts?.body;\n return { method, path, ...opts, body };\n }));\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n calculateContentLength(body) {\n if (typeof body === 'string') {\n if (typeof Buffer !== 'undefined') {\n return Buffer.byteLength(body, 'utf8').toString();\n }\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(body);\n return encoded.length.toString();\n }\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength.toString();\n }\n return null;\n }\n async buildRequest(inputOptions, { retryCount = 0 } = {}) {\n const options = { ...inputOptions };\n const { method, path, query, defaultBaseURL, headers: headers = {} } = options;\n const body = ArrayBuffer.isView(options.body) || (options.__binaryRequest && typeof options.body === 'string') ?\n options.body\n : isMultipartBody(options.body) ? options.body.body\n : options.body ? JSON.stringify(options.body, null, 2)\n : null;\n const contentLength = this.calculateContentLength(body);\n const url = this.buildURL(path, query, defaultBaseURL);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);\n const minAgentTimeout = options.timeout + 1000;\n if (typeof httpAgent?.options?.timeout === 'number' &&\n minAgentTimeout > (httpAgent.options.timeout ?? 0)) {\n // Allow any given request to bump our agent active socket timeout.\n // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n // and without mutating agent we would need to create more of them.\n // This tradeoff optimizes for performance.\n httpAgent.options.timeout = minAgentTimeout;\n }\n if (this.idempotencyHeader && method !== 'get') {\n if (!inputOptions.idempotencyKey)\n inputOptions.idempotencyKey = this.defaultIdempotencyKey();\n headers[this.idempotencyHeader] = inputOptions.idempotencyKey;\n }\n const reqHeaders = this.buildHeaders({ options, headers, contentLength, retryCount });\n const req = {\n method,\n ...(body && { body: body }),\n headers: reqHeaders,\n ...(httpAgent && { agent: httpAgent }),\n // @ts-ignore node-fetch uses a custom AbortSignal type that is\n // not compatible with standard web types\n signal: options.signal ?? null,\n };\n return { req, url, timeout: options.timeout };\n }\n buildHeaders({ options, headers, contentLength, retryCount, }) {\n const reqHeaders = {};\n if (contentLength) {\n reqHeaders['content-length'] = contentLength;\n }\n const defaultHeaders = this.defaultHeaders(options);\n applyHeadersMut(reqHeaders, defaultHeaders);\n applyHeadersMut(reqHeaders, headers);\n // let builtin fetch set the Content-Type for multipart bodies\n if (isMultipartBody(options.body) && shimsKind !== 'node') {\n delete reqHeaders['content-type'];\n }\n // Don't set theses headers if they were already set or removed through default headers or by the caller.\n // We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to account\n // for the removal case.\n if (getHeader(defaultHeaders, 'x-stainless-retry-count') === undefined &&\n getHeader(headers, 'x-stainless-retry-count') === undefined) {\n reqHeaders['x-stainless-retry-count'] = String(retryCount);\n }\n if (getHeader(defaultHeaders, 'x-stainless-timeout') === undefined &&\n getHeader(headers, 'x-stainless-timeout') === undefined &&\n options.timeout) {\n reqHeaders['x-stainless-timeout'] = String(Math.trunc(options.timeout / 1000));\n }\n this.validateHeaders(reqHeaders, headers);\n return reqHeaders;\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) { }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n parseHeaders(headers) {\n return (!headers ? {}\n : Symbol.iterator in headers ?\n Object.fromEntries(Array.from(headers).map((header) => [...header]))\n : { ...headers });\n }\n makeStatusError(status, error, message, headers) {\n return APIError.generate(status, error, message, headers);\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this.makeRequest(options, remainingRetries));\n }\n async makeRequest(optionsInput, retriesRemaining) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = await this.buildRequest(options, {\n retryCount: maxRetries - retriesRemaining,\n });\n await this.prepareRequest(req, { url, options });\n debug('request', url, options, req.headers);\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n if (response instanceof Error) {\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n if (retriesRemaining) {\n return this.retryRequest(options, retriesRemaining);\n }\n if (response.name === 'AbortError') {\n throw new APIConnectionTimeoutError();\n }\n throw new APIConnectionError({ cause: response });\n }\n const responseHeaders = createResponseHeaders(response.headers);\n if (!response.ok) {\n if (retriesRemaining && this.shouldRetry(response)) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n return this.retryRequest(options, retriesRemaining, responseHeaders);\n }\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n throw err;\n }\n return { response, options, controller };\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null);\n return new PagePromise(this, request, Page);\n }\n buildURL(path, query, defaultBaseURL) {\n const baseURL = (!__classPrivateFieldGet(this, _APIClient_baseURLOverridden, \"f\") && defaultBaseURL) || this.baseURL;\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n stringifyQuery(query) {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new DodoPaymentsError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n })\n .join('&');\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, ...options } = init || {};\n if (signal)\n signal.addEventListener('abort', () => controller.abort());\n const timeout = setTimeout(() => controller.abort(), ms);\n const fetchOptions = {\n signal: controller.signal,\n ...options,\n };\n if (fetchOptions.method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n }));\n }\n shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.['retry-after'];\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n}\n_APIClient_baseURLOverridden = new WeakMap();\nexport class AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageInfo() != null;\n }\n async getNextPage() {\n const nextInfo = this.nextPageInfo();\n if (!nextInfo) {\n throw new DodoPaymentsError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n const nextOptions = { ...this.options };\n if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n }\n else if ('url' in nextInfo) {\n const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n for (const [key, value] of params) {\n nextInfo.url.searchParams.set(key, value);\n }\n nextOptions.query = undefined;\n nextOptions.path = nextInfo.url.toString();\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(request, async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\nexport const createResponseHeaders = (headers) => {\n return new Proxy(Object.fromEntries(\n // @ts-ignore\n headers.entries()), {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n });\n};\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys = {\n method: true,\n path: true,\n query: true,\n body: true,\n headers: true,\n defaultBaseURL: true,\n maxRetries: true,\n stream: true,\n timeout: true,\n httpAgent: true,\n signal: true,\n idempotencyKey: true,\n __binaryRequest: true,\n __binaryResponse: true,\n};\nexport const isRequestOptions = (obj) => {\n return (typeof obj === 'object' &&\n obj !== null &&\n !isEmptyObj(obj) &&\n Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k)));\n};\nconst getPlatformProperties = () => {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n // Check if Node.js\n if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(process.platform),\n 'X-Stainless-Arch': normalizeArch(process.arch),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nconst getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\nexport const safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nconst isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new DodoPaymentsError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new DodoPaymentsError(`${name} must be a positive integer`);\n }\n return n;\n};\nexport const castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\nexport const ensurePresent = (value) => {\n if (value == null)\n throw new DodoPaymentsError(`Expected a value to be given but received ${value} instead.`);\n return value;\n};\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n if (typeof process !== 'undefined') {\n return process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof Deno !== 'undefined') {\n return Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\nexport const coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new DodoPaymentsError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new DodoPaymentsError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceBoolean(value);\n};\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders, newHeaders) {\n for (const k in newHeaders) {\n if (!hasOwn(newHeaders, k))\n continue;\n const lowerKey = k.toLowerCase();\n if (!lowerKey)\n continue;\n const val = newHeaders[k];\n if (val === null) {\n delete targetHeaders[lowerKey];\n }\n else if (val !== undefined) {\n targetHeaders[lowerKey] = val;\n }\n }\n}\nexport function debug(action, ...args) {\n if (typeof process !== 'undefined' && process?.env?.['DEBUG'] === 'true') {\n console.log(`DodoPayments:DEBUG:${action}`, ...args);\n }\n}\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\nexport const isHeadersProtocol = (headers) => {\n return typeof headers?.get === 'function';\n};\nexport const getRequiredHeader = (headers, header) => {\n const foundHeader = getHeader(headers, header);\n if (foundHeader === undefined) {\n throw new Error(`Could not find ${header} header`);\n }\n return foundHeader;\n};\nexport const getHeader = (headers, header) => {\n const lowerCasedHeader = header.toLowerCase();\n if (isHeadersProtocol(headers)) {\n // to deal with the case where the header looks like Stainless-Event-Id\n const intercapsHeader = header[0]?.toUpperCase() +\n header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n const value = headers.get(key);\n if (value) {\n return value;\n }\n }\n }\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lowerCasedHeader) {\n if (Array.isArray(value)) {\n if (value.length <= 1)\n return value[0];\n console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n return value[0];\n }\n return value;\n }\n }\n return undefined;\n};\n/**\n * Encodes a string to Base64 format.\n */\nexport const toBase64 = (str) => {\n if (!str)\n return '';\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str).toString('base64');\n }\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n throw new DodoPaymentsError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexport function isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n//# sourceMappingURL=core.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { AbstractPage } from \"./core.mjs\";\nexport class DefaultPageNumberPagination extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.items = body.items || [];\n }\n getPaginatedItems() {\n return this.items ?? [];\n }\n // @deprecated Please use `nextPageInfo()` instead\n nextPageParams() {\n const info = this.nextPageInfo();\n if (!info)\n return null;\n if ('params' in info)\n return info.params;\n const params = Object.fromEntries(info.url.searchParams);\n if (!Object.keys(params).length)\n return null;\n return params;\n }\n nextPageInfo() {\n const query = this.options.query;\n const currentPage = query?.page_number ?? 1;\n return { params: { page_number: currentPage + 1 } };\n }\n}\n//# sourceMappingURL=pagination.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n constructor(client) {\n this._client = client;\n }\n}\n//# sourceMappingURL=resource.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Addons extends APIResource {\n create(body, options) {\n return this._client.post('/addons', { body, ...options });\n }\n retrieve(id, options) {\n return this._client.get(`/addons/${id}`, options);\n }\n update(id, body, options) {\n return this._client.patch(`/addons/${id}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/addons', AddonResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n updateImages(id, options) {\n return this._client.put(`/addons/${id}/images`, options);\n }\n}\nexport class AddonResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nAddons.AddonResponsesDefaultPageNumberPagination = AddonResponsesDefaultPageNumberPagination;\n//# sourceMappingURL=addons.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Brands extends APIResource {\n create(body, options) {\n return this._client.post('/brands', { body, ...options });\n }\n /**\n * Thin handler just calls `get_brand` and wraps in `Json(...)`\n */\n retrieve(id, options) {\n return this._client.get(`/brands/${id}`, options);\n }\n update(id, body, options) {\n return this._client.patch(`/brands/${id}`, { body, ...options });\n }\n list(options) {\n return this._client.get('/brands', options);\n }\n updateImages(id, options) {\n return this._client.put(`/brands/${id}/images`, options);\n }\n}\n//# sourceMappingURL=brands.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nexport class CustomerPortal extends APIResource {\n create(customerId, params = {}, options) {\n if (isRequestOptions(params)) {\n return this.create(customerId, {}, params);\n }\n const { send_email } = params;\n return this._client.post(`/customers/${customerId}/customer-portal/session`, {\n query: { send_email },\n ...options,\n });\n }\n}\n//# sourceMappingURL=customer-portal.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as CustomerPortalAPI from \"./customer-portal.mjs\";\nimport { CustomerPortal } from \"./customer-portal.mjs\";\nimport { DefaultPageNumberPagination } from \"../../pagination.mjs\";\nexport class Customers extends APIResource {\n constructor() {\n super(...arguments);\n this.customerPortal = new CustomerPortalAPI.CustomerPortal(this._client);\n }\n create(body, options) {\n return this._client.post('/customers', { body, ...options });\n }\n retrieve(customerId, options) {\n return this._client.get(`/customers/${customerId}`, options);\n }\n update(customerId, body, options) {\n return this._client.patch(`/customers/${customerId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/customers', CustomersDefaultPageNumberPagination, { query, ...options });\n }\n}\nexport class CustomersDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nCustomers.CustomersDefaultPageNumberPagination = CustomersDefaultPageNumberPagination;\nCustomers.CustomerPortal = CustomerPortal;\n//# sourceMappingURL=customers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Discounts extends APIResource {\n /**\n * POST /discounts If `code` is omitted or empty, a random 16-char uppercase code\n * is generated.\n */\n create(body, options) {\n return this._client.post('/discounts', { body, ...options });\n }\n /**\n * GET /discounts/{discount_id}\n */\n retrieve(discountId, options) {\n return this._client.get(`/discounts/${discountId}`, options);\n }\n /**\n * PATCH /discounts/{discount_id}\n */\n update(discountId, body, options) {\n return this._client.patch(`/discounts/${discountId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/discounts', DiscountsDefaultPageNumberPagination, { query, ...options });\n }\n /**\n * DELETE /discounts/{discount_id}\n */\n delete(discountId, options) {\n return this._client.delete(`/discounts/${discountId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class DiscountsDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nDiscounts.DiscountsDefaultPageNumberPagination = DiscountsDefaultPageNumberPagination;\n//# sourceMappingURL=discounts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Disputes extends APIResource {\n retrieve(disputeId, options) {\n return this._client.get(`/disputes/${disputeId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/disputes', DisputeListResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n}\nexport class DisputeListResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nDisputes.DisputeListResponsesDefaultPageNumberPagination = DisputeListResponsesDefaultPageNumberPagination;\n//# sourceMappingURL=disputes.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class Payments extends APIResource {\n retrieve(paymentId, options) {\n return this._client.get(`/invoices/payments/${paymentId}`, {\n ...options,\n headers: { Accept: 'application/pdf', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=payments.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as PaymentsAPI from \"./payments.mjs\";\nimport { Payments } from \"./payments.mjs\";\nexport class Invoices extends APIResource {\n constructor() {\n super(...arguments);\n this.payments = new PaymentsAPI.Payments(this._client);\n }\n}\nInvoices.Payments = Payments;\n//# sourceMappingURL=invoices.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class LicenseKeyInstances extends APIResource {\n /**\n * @example\n * ```ts\n * const licenseKeyInstance =\n * await client.licenseKeyInstances.retrieve('lki_123');\n * ```\n */\n retrieve(id, options) {\n return this._client.get(`/license_key_instances/${id}`, options);\n }\n /**\n * @example\n * ```ts\n * const licenseKeyInstance =\n * await client.licenseKeyInstances.update('lki_123', {\n * name: 'name',\n * });\n * ```\n */\n update(id, body, options) {\n return this._client.patch(`/license_key_instances/${id}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/license_key_instances', LicenseKeyInstancesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n}\nexport class LicenseKeyInstancesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nLicenseKeyInstances.LicenseKeyInstancesDefaultPageNumberPagination =\n LicenseKeyInstancesDefaultPageNumberPagination;\n//# sourceMappingURL=license-key-instances.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class LicenseKeys extends APIResource {\n /**\n * @example\n * ```ts\n * const licenseKey = await client.licenseKeys.retrieve(\n * 'lic_123',\n * );\n * ```\n */\n retrieve(id, options) {\n return this._client.get(`/license_keys/${id}`, options);\n }\n /**\n * @example\n * ```ts\n * const licenseKey = await client.licenseKeys.update(\n * 'lic_123',\n * );\n * ```\n */\n update(id, body, options) {\n return this._client.patch(`/license_keys/${id}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/license_keys', LicenseKeysDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n}\nexport class LicenseKeysDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nLicenseKeys.LicenseKeysDefaultPageNumberPagination = LicenseKeysDefaultPageNumberPagination;\n//# sourceMappingURL=license-keys.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Licenses extends APIResource {\n /**\n * @example\n * ```ts\n * const licenseKeyInstance = await client.licenses.activate({\n * license_key: 'license_key',\n * name: 'name',\n * });\n * ```\n */\n activate(body, options) {\n return this._client.post('/licenses/activate', { body, ...options });\n }\n /**\n * @example\n * ```ts\n * await client.licenses.deactivate({\n * license_key: 'license_key',\n * license_key_instance_id: 'license_key_instance_id',\n * });\n * ```\n */\n deactivate(body, options) {\n return this._client.post('/licenses/deactivate', {\n body,\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n /**\n * @example\n * ```ts\n * const response = await client.licenses.validate({\n * license_key: '2b1f8e2d-c41e-4e8f-b2d3-d9fd61c38f43',\n * });\n * ```\n */\n validate(body, options) {\n return this._client.post('/licenses/validate', { body, ...options });\n }\n}\n//# sourceMappingURL=licenses.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Misc extends APIResource {\n listSupportedCountries(options) {\n return this._client.get('/checkout/supported_countries', options);\n }\n}\n//# sourceMappingURL=misc.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Payments extends APIResource {\n create(body, options) {\n return this._client.post('/payments', { body, ...options });\n }\n retrieve(paymentId, options) {\n return this._client.get(`/payments/${paymentId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/payments', PaymentListResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n retrieveLineItems(paymentId, options) {\n return this._client.get(`/payments/${paymentId}/line-items`, options);\n }\n}\nexport class PaymentListResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nPayments.PaymentListResponsesDefaultPageNumberPagination = PaymentListResponsesDefaultPageNumberPagination;\n//# sourceMappingURL=payments.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Payouts extends APIResource {\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/payouts', PayoutListResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n}\nexport class PayoutListResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nPayouts.PayoutListResponsesDefaultPageNumberPagination = PayoutListResponsesDefaultPageNumberPagination;\n//# sourceMappingURL=payouts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nexport class Images extends APIResource {\n update(id, params = {}, options) {\n if (isRequestOptions(params)) {\n return this.update(id, {}, params);\n }\n const { force_update } = params;\n return this._client.put(`/products/${id}/images`, { query: { force_update }, ...options });\n }\n}\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as ImagesAPI from \"./images.mjs\";\nimport { Images } from \"./images.mjs\";\nimport { DefaultPageNumberPagination } from \"../../pagination.mjs\";\nexport class Products extends APIResource {\n constructor() {\n super(...arguments);\n this.images = new ImagesAPI.Images(this._client);\n }\n create(body, options) {\n return this._client.post('/products', { body, ...options });\n }\n retrieve(id, options) {\n return this._client.get(`/products/${id}`, options);\n }\n update(id, body, options) {\n return this._client.patch(`/products/${id}`, {\n body,\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/products', ProductListResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n delete(id, options) {\n return this._client.delete(`/products/${id}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n unarchive(id, options) {\n return this._client.post(`/products/${id}/unarchive`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n updateFiles(id, body, options) {\n return this._client.put(`/products/${id}/files`, { body, ...options });\n }\n}\nexport class ProductListResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nProducts.ProductListResponsesDefaultPageNumberPagination = ProductListResponsesDefaultPageNumberPagination;\nProducts.Images = Images;\n//# sourceMappingURL=products.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Refunds extends APIResource {\n create(body, options) {\n return this._client.post('/refunds', { body, ...options });\n }\n retrieve(refundId, options) {\n return this._client.get(`/refunds/${refundId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/refunds', RefundsDefaultPageNumberPagination, { query, ...options });\n }\n}\nexport class RefundsDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nRefunds.RefundsDefaultPageNumberPagination = RefundsDefaultPageNumberPagination;\n//# sourceMappingURL=refunds.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class Subscriptions extends APIResource {\n create(body, options) {\n return this._client.post('/subscriptions', { body, ...options });\n }\n retrieve(subscriptionId, options) {\n return this._client.get(`/subscriptions/${subscriptionId}`, options);\n }\n update(subscriptionId, body, options) {\n return this._client.patch(`/subscriptions/${subscriptionId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/subscriptions', SubscriptionListResponsesDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n changePlan(subscriptionId, body, options) {\n return this._client.post(`/subscriptions/${subscriptionId}/change-plan`, {\n body,\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n charge(subscriptionId, body, options) {\n return this._client.post(`/subscriptions/${subscriptionId}/charge`, { body, ...options });\n }\n}\nexport class SubscriptionListResponsesDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nSubscriptions.SubscriptionListResponsesDefaultPageNumberPagination =\n SubscriptionListResponsesDefaultPageNumberPagination;\n//# sourceMappingURL=subscriptions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { DefaultPageNumberPagination } from \"../pagination.mjs\";\nexport class WebhookEvents extends APIResource {\n /**\n * @deprecated\n */\n retrieve(webhookEventId, options) {\n return this._client.get(`/webhook_events/${webhookEventId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/webhook_events', WebhookEventsDefaultPageNumberPagination, {\n query,\n ...options,\n });\n }\n}\nexport class WebhookEventsDefaultPageNumberPagination extends DefaultPageNumberPagination {\n}\nWebhookEvents.WebhookEventsDefaultPageNumberPagination = WebhookEventsDefaultPageNumberPagination;\n//# sourceMappingURL=webhook-events.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _DodoPayments_instances, _a, _DodoPayments_baseURLOverridden;\nimport * as Core from \"./core.mjs\";\nimport * as Errors from \"./error.mjs\";\nimport * as Pagination from \"./pagination.mjs\";\nimport * as Uploads from \"./uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { AddonResponsesDefaultPageNumberPagination, Addons, } from \"./resources/addons.mjs\";\nimport { Brands, } from \"./resources/brands.mjs\";\nimport { Discounts, DiscountsDefaultPageNumberPagination, } from \"./resources/discounts.mjs\";\nimport { DisputeListResponsesDefaultPageNumberPagination, Disputes, } from \"./resources/disputes.mjs\";\nimport { LicenseKeyInstances, LicenseKeyInstancesDefaultPageNumberPagination, } from \"./resources/license-key-instances.mjs\";\nimport { LicenseKeys, LicenseKeysDefaultPageNumberPagination, } from \"./resources/license-keys.mjs\";\nimport { Licenses, } from \"./resources/licenses.mjs\";\nimport { Misc, } from \"./resources/misc.mjs\";\nimport { PaymentListResponsesDefaultPageNumberPagination, Payments, } from \"./resources/payments.mjs\";\nimport { PayoutListResponsesDefaultPageNumberPagination, Payouts, } from \"./resources/payouts.mjs\";\nimport { Refunds, RefundsDefaultPageNumberPagination, } from \"./resources/refunds.mjs\";\nimport { SubscriptionListResponsesDefaultPageNumberPagination, Subscriptions, } from \"./resources/subscriptions.mjs\";\nimport { WebhookEvents, WebhookEventsDefaultPageNumberPagination, } from \"./resources/webhook-events.mjs\";\nimport { Customers, CustomersDefaultPageNumberPagination, } from \"./resources/customers/customers.mjs\";\nimport { Invoices } from \"./resources/invoices/invoices.mjs\";\nimport { ProductListResponsesDefaultPageNumberPagination, Products, } from \"./resources/products/products.mjs\";\nconst environments = {\n live_mode: 'https://live.dodopayments.com',\n test_mode: 'https://test.dodopayments.com',\n};\n/**\n * API Client for interfacing with the Dodo Payments API.\n */\nexport class DodoPayments extends Core.APIClient {\n /**\n * API Client for interfacing with the Dodo Payments API.\n *\n * @param {string | undefined} [opts.bearerToken=process.env['DODO_PAYMENTS_API_KEY'] ?? undefined]\n * @param {Environment} [opts.environment=live_mode] - Specifies the environment URL to use for the API.\n * @param {string} [opts.baseURL=process.env['DODO_PAYMENTS_BASE_URL'] ?? https://live.dodopayments.com] - Override the default base URL for the API.\n * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n */\n constructor({ baseURL = Core.readEnv('DODO_PAYMENTS_BASE_URL'), bearerToken = Core.readEnv('DODO_PAYMENTS_API_KEY'), ...opts } = {}) {\n if (bearerToken === undefined) {\n throw new Errors.DodoPaymentsError(\"The DODO_PAYMENTS_API_KEY environment variable is missing or empty; either provide it, or instantiate the DodoPayments client with an bearerToken option, like new DodoPayments({ bearerToken: 'My Bearer Token' }).\");\n }\n const options = {\n bearerToken,\n ...opts,\n baseURL,\n environment: opts.environment ?? 'live_mode',\n };\n if (baseURL && opts.environment) {\n throw new Errors.DodoPaymentsError('Ambiguous URL; The `baseURL` option (or DODO_PAYMENTS_BASE_URL env var) and the `environment` option are given. If you want to use the environment you must pass baseURL: null');\n }\n super({\n baseURL: options.baseURL || environments[options.environment || 'live_mode'],\n baseURLOverridden: baseURL ? baseURL !== environments[options.environment || 'live_mode'] : false,\n timeout: options.timeout ?? 60000 /* 1 minute */,\n httpAgent: options.httpAgent,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n });\n _DodoPayments_instances.add(this);\n this.payments = new API.Payments(this);\n this.subscriptions = new API.Subscriptions(this);\n this.invoices = new API.Invoices(this);\n this.licenses = new API.Licenses(this);\n this.licenseKeys = new API.LicenseKeys(this);\n this.licenseKeyInstances = new API.LicenseKeyInstances(this);\n this.customers = new API.Customers(this);\n this.refunds = new API.Refunds(this);\n this.disputes = new API.Disputes(this);\n this.payouts = new API.Payouts(this);\n this.webhookEvents = new API.WebhookEvents(this);\n this.products = new API.Products(this);\n this.misc = new API.Misc(this);\n this.discounts = new API.Discounts(this);\n this.addons = new API.Addons(this);\n this.brands = new API.Brands(this);\n this._options = options;\n this.bearerToken = bearerToken;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n defaultHeaders(opts) {\n return {\n ...super.defaultHeaders(opts),\n ...this._options.defaultHeaders,\n };\n }\n authHeaders(opts) {\n return { Authorization: `Bearer ${this.bearerToken}` };\n }\n}\n_a = DodoPayments, _DodoPayments_instances = new WeakSet(), _DodoPayments_baseURLOverridden = function _DodoPayments_baseURLOverridden() {\n return this.baseURL !== environments[this._options.environment || 'live_mode'];\n};\nDodoPayments.DodoPayments = _a;\nDodoPayments.DEFAULT_TIMEOUT = 60000; // 1 minute\nDodoPayments.DodoPaymentsError = Errors.DodoPaymentsError;\nDodoPayments.APIError = Errors.APIError;\nDodoPayments.APIConnectionError = Errors.APIConnectionError;\nDodoPayments.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nDodoPayments.APIUserAbortError = Errors.APIUserAbortError;\nDodoPayments.NotFoundError = Errors.NotFoundError;\nDodoPayments.ConflictError = Errors.ConflictError;\nDodoPayments.RateLimitError = Errors.RateLimitError;\nDodoPayments.BadRequestError = Errors.BadRequestError;\nDodoPayments.AuthenticationError = Errors.AuthenticationError;\nDodoPayments.InternalServerError = Errors.InternalServerError;\nDodoPayments.PermissionDeniedError = Errors.PermissionDeniedError;\nDodoPayments.UnprocessableEntityError = Errors.UnprocessableEntityError;\nDodoPayments.toFile = Uploads.toFile;\nDodoPayments.fileFromPath = Uploads.fileFromPath;\nDodoPayments.Payments = Payments;\nDodoPayments.PaymentListResponsesDefaultPageNumberPagination =\n PaymentListResponsesDefaultPageNumberPagination;\nDodoPayments.Subscriptions = Subscriptions;\nDodoPayments.SubscriptionListResponsesDefaultPageNumberPagination =\n SubscriptionListResponsesDefaultPageNumberPagination;\nDodoPayments.Invoices = Invoices;\nDodoPayments.Licenses = Licenses;\nDodoPayments.LicenseKeys = LicenseKeys;\nDodoPayments.LicenseKeysDefaultPageNumberPagination = LicenseKeysDefaultPageNumberPagination;\nDodoPayments.LicenseKeyInstances = LicenseKeyInstances;\nDodoPayments.LicenseKeyInstancesDefaultPageNumberPagination = LicenseKeyInstancesDefaultPageNumberPagination;\nDodoPayments.Customers = Customers;\nDodoPayments.CustomersDefaultPageNumberPagination = CustomersDefaultPageNumberPagination;\nDodoPayments.Refunds = Refunds;\nDodoPayments.RefundsDefaultPageNumberPagination = RefundsDefaultPageNumberPagination;\nDodoPayments.Disputes = Disputes;\nDodoPayments.DisputeListResponsesDefaultPageNumberPagination =\n DisputeListResponsesDefaultPageNumberPagination;\nDodoPayments.Payouts = Payouts;\nDodoPayments.PayoutListResponsesDefaultPageNumberPagination = PayoutListResponsesDefaultPageNumberPagination;\nDodoPayments.WebhookEvents = WebhookEvents;\nDodoPayments.WebhookEventsDefaultPageNumberPagination = WebhookEventsDefaultPageNumberPagination;\nDodoPayments.Products = Products;\nDodoPayments.ProductListResponsesDefaultPageNumberPagination =\n ProductListResponsesDefaultPageNumberPagination;\nDodoPayments.Misc = Misc;\nDodoPayments.Discounts = Discounts;\nDodoPayments.DiscountsDefaultPageNumberPagination = DiscountsDefaultPageNumberPagination;\nDodoPayments.Addons = Addons;\nDodoPayments.AddonResponsesDefaultPageNumberPagination = AddonResponsesDefaultPageNumberPagination;\nDodoPayments.Brands = Brands;\nexport { toFile, fileFromPath } from \"./uploads.mjs\";\nexport { DodoPaymentsError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from \"./error.mjs\";\nexport default DodoPayments;\n//# sourceMappingURL=index.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { z } from \"zod\";\nimport DodoPayments from \"dodopayments\";\nexport var checkoutQuerySchema = z.object({\n productId: z.string(),\n quantity: z.string().optional(),\n // Customer fields\n fullName: z.string().optional(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n email: z.string().optional(),\n country: z.string().optional(),\n addressLine: z.string().optional(),\n city: z.string().optional(),\n state: z.string().optional(),\n zipCode: z.string().optional(),\n // Disable flags\n disableFullName: z.string().optional(),\n disableFirstName: z.string().optional(),\n disableLastName: z.string().optional(),\n disableEmail: z.string().optional(),\n disableCountry: z.string().optional(),\n disableAddressLine: z.string().optional(),\n disableCity: z.string().optional(),\n disableState: z.string().optional(),\n disableZipCode: z.string().optional(),\n // Advanced controls\n paymentCurrency: z.string().optional(),\n showCurrencySelector: z.string().optional(),\n paymentAmount: z.string().optional(),\n showDiscounts: z.string().optional(),\n // Metadata (allow any key starting with metadata_)\n // We'll handle metadata separately in the handler\n});\n// Add Zod schema for dynamic checkout body\nexport var dynamicCheckoutBodySchema = z\n .object({\n // For subscription\n product_id: z.string().optional(),\n quantity: z.number().optional(),\n // For one-time payment\n product_cart: z\n .array(z.object({\n product_id: z.string(),\n quantity: z.number(),\n }))\n .optional(),\n // Common fields\n billing: z.object({\n city: z.string(),\n country: z.string(),\n state: z.string(),\n street: z.string(),\n zipcode: z.string(),\n }),\n customer: z.object({\n customer_id: z.string().optional(),\n email: z.string().optional(),\n name: z.string().optional(),\n }),\n discount_id: z.string().optional(),\n addons: z\n .array(z.object({\n addon_id: z.string(),\n quantity: z.number(),\n }))\n .optional(),\n metadata: z.record(z.string(), z.string()).optional(),\n currency: z.string().optional(),\n // Allow any additional fields (for future compatibility)\n})\n .catchall(z.unknown());\nexport var buildCheckoutUrl = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {\n var inputData, parseResult, success, data, error, _c, productId, quantity_1, fullName, firstName, lastName, email, country, addressLine, city, state, zipCode, disableFullName, disableFirstName, disableLastName, disableEmail, disableCountry, disableAddressLine, disableCity, disableState, disableZipCode, paymentCurrency, showCurrencySelector, paymentAmount, showDiscounts, dodopayments_1, err_1, url, _i, _d, _e, key, value, dyn, product_id, product_cart, quantity, billing, customer, addons, metadata, allowed_payment_method_types, billing_currency, discount_code, on_demand, bodyReturnUrl, show_saved_payment_methods, tax_id, trial_period_days, dodopayments, isSubscription, productIdToFetch, product, err_2, subscriptionPayload, subscription, err_3, cart, paymentPayload, payment, err_4;\n var queryParams = _b.queryParams, body = _b.body, returnUrl = _b.returnUrl, bearerToken = _b.bearerToken, environment = _b.environment, _f = _b.type, type = _f === void 0 ? \"static\" : _f;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n inputData = type === \"dynamic\" ? body : queryParams;\n if (type === \"dynamic\") {\n parseResult = dynamicCheckoutBodySchema.safeParse(inputData);\n }\n else {\n parseResult = checkoutQuerySchema.safeParse(inputData);\n }\n success = parseResult.success, data = parseResult.data, error = parseResult.error;\n if (!success) {\n throw new Error(\"Invalid \".concat(type === \"dynamic\" ? \"body\" : \"query parameters\", \".\\n \").concat(error.message));\n }\n if (!(type !== \"dynamic\")) return [3 /*break*/, 5];\n _c = data, productId = _c.productId, quantity_1 = _c.quantity, fullName = _c.fullName, firstName = _c.firstName, lastName = _c.lastName, email = _c.email, country = _c.country, addressLine = _c.addressLine, city = _c.city, state = _c.state, zipCode = _c.zipCode, disableFullName = _c.disableFullName, disableFirstName = _c.disableFirstName, disableLastName = _c.disableLastName, disableEmail = _c.disableEmail, disableCountry = _c.disableCountry, disableAddressLine = _c.disableAddressLine, disableCity = _c.disableCity, disableState = _c.disableState, disableZipCode = _c.disableZipCode, paymentCurrency = _c.paymentCurrency, showCurrencySelector = _c.showCurrencySelector, paymentAmount = _c.paymentAmount, showDiscounts = _c.showDiscounts;\n dodopayments_1 = new DodoPayments({\n bearerToken: bearerToken,\n environment: environment,\n });\n // Check that the product exists for this merchant\n if (!productId)\n throw new Error(\"Missing required field: productId\");\n _g.label = 1;\n case 1:\n _g.trys.push([1, 3, , 4]);\n return [4 /*yield*/, dodopayments_1.products.retrieve(productId)];\n case 2:\n _g.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _g.sent();\n console.error(err_1);\n throw new Error(\"Product not found\");\n case 4:\n url = new URL(\"\".concat(environment === \"test_mode\" ? \"https://test.checkout.dodopayments.com\" : \"https://checkout.dodopayments.com\", \"/buy/\").concat(productId));\n url.searchParams.set(\"quantity\", quantity_1 ? String(quantity_1) : \"1\");\n if (returnUrl)\n url.searchParams.set(\"redirect_url\", returnUrl);\n // Customer/billing fields\n if (fullName)\n url.searchParams.set(\"fullName\", String(fullName));\n if (firstName)\n url.searchParams.set(\"firstName\", String(firstName));\n if (lastName)\n url.searchParams.set(\"lastName\", String(lastName));\n if (email)\n url.searchParams.set(\"email\", String(email));\n if (country)\n url.searchParams.set(\"country\", String(country));\n if (addressLine)\n url.searchParams.set(\"addressLine\", String(addressLine));\n if (city)\n url.searchParams.set(\"city\", String(city));\n if (state)\n url.searchParams.set(\"state\", String(state));\n if (zipCode)\n url.searchParams.set(\"zipCode\", String(zipCode));\n // Disable flags (must be set to 'true' to disable)\n if (disableFullName === \"true\")\n url.searchParams.set(\"disableFullName\", \"true\");\n if (disableFirstName === \"true\")\n url.searchParams.set(\"disableFirstName\", \"true\");\n if (disableLastName === \"true\")\n url.searchParams.set(\"disableLastName\", \"true\");\n if (disableEmail === \"true\")\n url.searchParams.set(\"disableEmail\", \"true\");\n if (disableCountry === \"true\")\n url.searchParams.set(\"disableCountry\", \"true\");\n if (disableAddressLine === \"true\")\n url.searchParams.set(\"disableAddressLine\", \"true\");\n if (disableCity === \"true\")\n url.searchParams.set(\"disableCity\", \"true\");\n if (disableState === \"true\")\n url.searchParams.set(\"disableState\", \"true\");\n if (disableZipCode === \"true\")\n url.searchParams.set(\"disableZipCode\", \"true\");\n // Advanced controls\n if (paymentCurrency)\n url.searchParams.set(\"paymentCurrency\", String(paymentCurrency));\n if (showCurrencySelector)\n url.searchParams.set(\"showCurrencySelector\", String(showCurrencySelector));\n if (paymentAmount)\n url.searchParams.set(\"paymentAmount\", String(paymentAmount));\n if (showDiscounts)\n url.searchParams.set(\"showDiscounts\", String(showDiscounts));\n // Metadata: add all query params starting with metadata_\n for (_i = 0, _d = Object.entries(queryParams || {}); _i < _d.length; _i++) {\n _e = _d[_i], key = _e[0], value = _e[1];\n if (key.startsWith(\"metadata_\") && value && typeof value !== \"object\") {\n url.searchParams.set(key, String(value));\n }\n }\n return [2 /*return*/, url.toString()];\n case 5:\n dyn = data;\n product_id = dyn.product_id, product_cart = dyn.product_cart, quantity = dyn.quantity, billing = dyn.billing, customer = dyn.customer, addons = dyn.addons, metadata = dyn.metadata, allowed_payment_method_types = dyn.allowed_payment_method_types, billing_currency = dyn.billing_currency, discount_code = dyn.discount_code, on_demand = dyn.on_demand, bodyReturnUrl = dyn.return_url, show_saved_payment_methods = dyn.show_saved_payment_methods, tax_id = dyn.tax_id, trial_period_days = dyn.trial_period_days;\n dodopayments = new DodoPayments({\n bearerToken: bearerToken,\n environment: environment,\n });\n isSubscription = false;\n productIdToFetch = product_id;\n if (!product_id && product_cart && product_cart.length > 0) {\n productIdToFetch = product_cart[0].product_id;\n }\n if (!productIdToFetch)\n throw new Error(\"Missing required field: product_id or product_cart[0].product_id\");\n _g.label = 6;\n case 6:\n _g.trys.push([6, 8, , 9]);\n return [4 /*yield*/, dodopayments.products.retrieve(productIdToFetch)];\n case 7:\n product = _g.sent();\n return [3 /*break*/, 9];\n case 8:\n err_2 = _g.sent();\n console.error(err_2);\n throw new Error(\"Product not found\");\n case 9:\n isSubscription = Boolean(product.is_recurring);\n // Required field validation\n if (isSubscription && !product_id)\n throw new Error(\"Missing required field: product_id for subscription\");\n if (!billing)\n throw new Error(\"Missing required field: billing\");\n if (!customer)\n throw new Error(\"Missing required field: customer\");\n if (!isSubscription) return [3 /*break*/, 14];\n subscriptionPayload = {\n billing: billing,\n customer: customer,\n product_id: product_id,\n quantity: quantity ? Number(quantity) : 1,\n };\n if (metadata)\n subscriptionPayload.metadata = metadata;\n if (discount_code)\n subscriptionPayload.discount_code = discount_code;\n if (addons)\n subscriptionPayload.addons = addons;\n if (allowed_payment_method_types)\n subscriptionPayload.allowed_payment_method_types =\n allowed_payment_method_types;\n if (billing_currency)\n subscriptionPayload.billing_currency = billing_currency;\n if (on_demand)\n subscriptionPayload.on_demand = on_demand;\n subscriptionPayload.payment_link = true;\n // Use bodyReturnUrl if present, otherwise use top-level returnUrl\n if (bodyReturnUrl) {\n subscriptionPayload.return_url = bodyReturnUrl;\n }\n else if (returnUrl) {\n subscriptionPayload.return_url = returnUrl;\n }\n if (show_saved_payment_methods)\n subscriptionPayload.show_saved_payment_methods =\n show_saved_payment_methods;\n if (tax_id)\n subscriptionPayload.tax_id = tax_id;\n if (trial_period_days)\n subscriptionPayload.trial_period_days = trial_period_days;\n subscription = void 0;\n _g.label = 10;\n case 10:\n _g.trys.push([10, 12, , 13]);\n return [4 /*yield*/, dodopayments.subscriptions.create(subscriptionPayload)];\n case 11:\n subscription =\n _g.sent();\n return [3 /*break*/, 13];\n case 12:\n err_3 = _g.sent();\n console.error(\"Error when creating subscription\", err_3);\n throw new Error(err_3 instanceof Error ? err_3.message : String(err_3));\n case 13:\n if (!subscription || !subscription.payment_link) {\n throw new Error(\"No payment link returned from Dodo Payments API (subscription). Make sure to set payment_link as true in payload\");\n }\n return [2 /*return*/, subscription.payment_link];\n case 14:\n cart = product_cart;\n if (!cart && product_id) {\n cart = [\n { product_id: product_id, quantity: quantity ? Number(quantity) : 1 },\n ];\n }\n if (!cart || cart.length === 0)\n throw new Error(\"Missing required field: product_cart or product_id\");\n paymentPayload = {\n billing: billing,\n customer: customer,\n product_cart: cart,\n };\n if (metadata)\n paymentPayload.metadata = metadata;\n paymentPayload.payment_link = true;\n if (allowed_payment_method_types)\n paymentPayload.allowed_payment_method_types =\n allowed_payment_method_types;\n if (billing_currency)\n paymentPayload.billing_currency = billing_currency;\n if (discount_code)\n paymentPayload.discount_code = discount_code;\n // Use bodyReturnUrl if present, otherwise use top-level returnUrl\n if (bodyReturnUrl) {\n paymentPayload.return_url = bodyReturnUrl;\n }\n else if (returnUrl) {\n paymentPayload.return_url = returnUrl;\n }\n if (show_saved_payment_methods)\n paymentPayload.show_saved_payment_methods = show_saved_payment_methods;\n if (tax_id)\n paymentPayload.tax_id = tax_id;\n payment = void 0;\n _g.label = 15;\n case 15:\n _g.trys.push([15, 17, , 18]);\n return [4 /*yield*/, dodopayments.payments.create(paymentPayload)];\n case 16:\n payment = _g.sent();\n return [3 /*break*/, 18];\n case 17:\n err_4 = _g.sent();\n console.error(\"Error when creating payment link\", err_4);\n throw new Error(err_4 instanceof Error ? err_4.message : String(err_4));\n case 18:\n if (!payment || !payment.payment_link) {\n throw new Error(\"No payment link returned from Dodo Payments API. Make sure to set payment_link as true in payload.\");\n }\n return [2 /*return*/, payment.payment_link];\n }\n });\n}); };\n","import type DodoPayments from \"dodopayments\";\nimport { APIError, getSessionFromCtx } from \"better-auth/api\";\nimport { createAuthEndpoint } from \"better-auth/plugins\";\nimport { z } from \"zod\";\nimport type { Product } from \"../types\";\nimport {\n buildCheckoutUrl,\n dynamicCheckoutBodySchema,\n} from \"@dodopayments/core/checkout\";\n\nexport interface CheckoutOptions {\n /**\n * Optional list of slug -> productId mappings for easy slug checkouts\n */\n products?: Product[] | (() => Promise<Product[]>);\n /**\n * Checkout Success URL\n */\n successUrl?: string;\n /**\n * Only allow authenticated customers to checkout\n */\n authenticatedUsersOnly?: boolean;\n}\n\nexport const checkout =\n (checkoutOptions: CheckoutOptions = {}) =>\n (dodopayments: DodoPayments) => {\n return {\n checkout: createAuthEndpoint(\n \"/checkout\",\n {\n method: \"POST\",\n body: dynamicCheckoutBodySchema.extend({\n slug: z.string().optional(),\n referenceId: z.string().optional(),\n }),\n requireRequest: true,\n },\n async (ctx) => {\n const session = await getSessionFromCtx(ctx);\n\n let dodoPaymentsProductId: string | undefined;\n\n if (ctx.body?.slug) {\n const resolvedProducts = await (typeof checkoutOptions.products ===\n \"function\"\n ? checkoutOptions.products()\n : checkoutOptions.products);\n\n const productId = resolvedProducts?.find(\n (product) => product.slug === ctx.body.slug,\n )?.productId;\n\n if (!productId) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Product not found\",\n });\n }\n\n dodoPaymentsProductId = productId;\n } else {\n dodoPaymentsProductId = ctx.body.product_id;\n }\n\n if (checkoutOptions.authenticatedUsersOnly && !session?.user.id) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"You must be logged in to checkout\",\n });\n }\n\n try {\n const checkoutUrl = await buildCheckoutUrl({\n body: {\n ...ctx.body,\n customer: {\n email: session?.user.email,\n name: session?.user.name,\n ...ctx.body.customer,\n },\n product_cart: dodoPaymentsProductId\n ? [\n {\n product_id: dodoPaymentsProductId,\n quantity: 1,\n },\n ]\n : undefined,\n metadata: ctx.body.referenceId\n ? {\n referenceId: ctx.body.referenceId,\n ...ctx.body.metadata,\n }\n : ctx.body.metadata,\n },\n bearerToken: dodopayments.bearerToken,\n environment: dodopayments.baseURL.includes(\"test\")\n ? \"test_mode\"\n : \"live_mode\",\n returnUrl: checkoutOptions.successUrl\n ? new URL(\n checkoutOptions.successUrl,\n ctx.request?.url,\n ).toString()\n : undefined,\n type: \"dynamic\",\n });\n\n const redirectUrl = new URL(checkoutUrl);\n\n return ctx.json({\n url: redirectUrl.toString(),\n redirect: true,\n });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments checkout creation failed. Error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Checkout creation failed\",\n });\n }\n },\n ),\n };\n };\n","import { z } from \"zod\";\nexport var PaymentSchema = z.object({\n payload_type: z.literal(\"Payment\"),\n billing: z.object({\n city: z.string().nullable(),\n country: z.string().nullable(),\n state: z.string().nullable(),\n street: z.string().nullable(),\n zipcode: z.string().nullable(),\n }),\n brand_id: z.string(),\n business_id: z.string(),\n card_issuing_country: z.string().nullable(),\n card_last_four: z.string().nullable(),\n card_network: z.string().nullable(),\n card_type: z.string().nullable(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n customer: z.object({\n customer_id: z.string(),\n email: z.string(),\n name: z.string().nullable(),\n }),\n digital_products_delivered: z.boolean(),\n discount_id: z.string().nullable(),\n disputes: z\n .array(z.object({\n amount: z.string(),\n business_id: z.string(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n dispute_id: z.string(),\n dispute_stage: z.enum([\n \"pre_dispute\",\n \"dispute_opened\",\n \"dispute_won\",\n \"dispute_lost\",\n ]),\n dispute_status: z.enum([\n \"dispute_opened\",\n \"dispute_won\",\n \"dispute_lost\",\n \"dispute_accepted\",\n \"dispute_cancelled\",\n \"dispute_challenged\",\n ]),\n payment_id: z.string(),\n remarks: z.string().nullable(),\n }))\n .nullable(),\n error_code: z.string().nullable(),\n error_message: z.string().nullable(),\n metadata: z.record(z.any()).nullable(),\n payment_id: z.string(),\n payment_link: z.string().nullable(),\n payment_method: z.string().nullable(),\n payment_method_type: z.string().nullable(),\n product_cart: z\n .array(z.object({\n product_id: z.string(),\n quantity: z.number(),\n }))\n .nullable(),\n refunds: z\n .array(z.object({\n amount: z.number(),\n business_id: z.string(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n is_partial: z.boolean(),\n payment_id: z.string(),\n reason: z.string().nullable(),\n refund_id: z.string(),\n status: z.enum([\"succeeded\", \"failed\", \"pending\"]),\n }))\n .nullable(),\n settlement_amount: z.number(),\n settlement_currency: z.string(),\n settlement_tax: z.number().nullable(),\n status: z.enum([\"succeeded\", \"failed\", \"pending\", \"processing\", \"cancelled\"]),\n subscription_id: z.string().nullable(),\n tax: z.number().nullable(),\n total_amount: z.number(),\n updated_at: z\n .string()\n .transform(function (d) { return new Date(d); })\n .nullable(),\n});\nexport var SubscriptionSchema = z.object({\n payload_type: z.literal(\"Subscription\"),\n addons: z\n .array(z.object({\n addon_id: z.string(),\n quantity: z.number(),\n }))\n .nullable(),\n billing: z.object({\n city: z.string().nullable(),\n country: z.string().nullable(),\n state: z.string().nullable(),\n street: z.string().nullable(),\n zipcode: z.string().nullable(),\n }),\n cancel_at_next_billing_date: z.boolean(),\n cancelled_at: z\n .string()\n .transform(function (d) { return new Date(d); })\n .nullable(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n customer: z.object({\n customer_id: z.string(),\n email: z.string(),\n name: z.string().nullable(),\n }),\n discount_id: z.string().nullable(),\n metadata: z.record(z.any()).nullable(),\n next_billing_date: z\n .string()\n .transform(function (d) { return new Date(d); })\n .nullable(),\n on_demand: z.boolean(),\n payment_frequency_count: z.number(),\n payment_frequency_interval: z.enum([\"Day\", \"Week\", \"Month\", \"Year\"]),\n previous_billing_date: z\n .string()\n .transform(function (d) { return new Date(d); })\n .nullable(),\n product_id: z.string(),\n quantity: z.number(),\n recurring_pre_tax_amount: z.number(),\n status: z.enum([\n \"pending\",\n \"active\",\n \"on_hold\",\n \"paused\",\n \"cancelled\",\n \"expired\",\n \"failed\",\n ]),\n subscription_id: z.string(),\n subscription_period_count: z.number(),\n subscription_period_interval: z.enum([\"Day\", \"Week\", \"Month\", \"Year\"]),\n tax_inclusive: z.boolean(),\n trial_period_days: z.number(),\n});\nexport var RefundSchema = z.object({\n payload_type: z.literal(\"Refund\"),\n amount: z.number(),\n business_id: z.string(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n is_partial: z.boolean(),\n payment_id: z.string(),\n reason: z.string().nullable(),\n refund_id: z.string(),\n status: z.enum([\"succeeded\", \"failed\", \"pending\"]),\n});\nexport var DisputeSchema = z.object({\n payload_type: z.literal(\"Dispute\"),\n amount: z.string(),\n business_id: z.string(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n currency: z.string(),\n dispute_id: z.string(),\n dispute_stage: z.enum([\n \"pre_dispute\",\n \"dispute_opened\",\n \"dispute_won\",\n \"dispute_lost\",\n ]),\n dispute_status: z.enum([\n \"dispute_opened\",\n \"dispute_won\",\n \"dispute_lost\",\n \"dispute_accepted\",\n \"dispute_cancelled\",\n \"dispute_challenged\",\n ]),\n payment_id: z.string(),\n remarks: z.string().nullable(),\n});\nexport var LicenseKeySchema = z.object({\n payload_type: z.literal(\"LicenseKey\"),\n activations_limit: z.number(),\n business_id: z.string(),\n created_at: z.string().transform(function (d) { return new Date(d); }),\n customer_id: z.string(),\n expires_at: z\n .string()\n .transform(function (d) { return new Date(d); })\n .nullable(),\n id: z.string(),\n instances_count: z.number(),\n key: z.string(),\n payment_id: z.string(),\n product_id: z.string(),\n status: z.enum([\"active\", \"inactive\", \"expired\"]),\n subscription_id: z.string().nullable(),\n});\nexport var PaymentSucceededPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"payment.succeeded\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: PaymentSchema,\n});\nexport var PaymentFailedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"payment.failed\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: PaymentSchema,\n});\nexport var PaymentProcessingPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"payment.processing\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: PaymentSchema,\n});\nexport var PaymentCancelledPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"payment.cancelled\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: PaymentSchema,\n});\nexport var RefundSucceededPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"refund.succeeded\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: RefundSchema,\n});\nexport var RefundFailedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"refund.failed\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: RefundSchema,\n});\nexport var DisputeOpenedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.opened\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeExpiredPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.expired\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeAcceptedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.accepted\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeCancelledPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.cancelled\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeChallengedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.challenged\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeWonPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.won\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var DisputeLostPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"dispute.lost\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: DisputeSchema,\n});\nexport var SubscriptionActivePayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.active\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionOnHoldPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.on_hold\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionRenewedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.renewed\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionPausedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.paused\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionPlanChangedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.plan_changed\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionCancelledPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.cancelled\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionFailedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.failed\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var SubscriptionExpiredPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"subscription.expired\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: SubscriptionSchema,\n});\nexport var LicenseKeyCreatedPayloadSchema = z.object({\n business_id: z.string(),\n type: z.literal(\"license_key.created\"),\n timestamp: z.string().transform(function (d) { return new Date(d); }),\n data: LicenseKeySchema,\n});\nexport var WebhookPayloadSchema = z.discriminatedUnion(\"type\", [\n PaymentSucceededPayloadSchema,\n PaymentFailedPayloadSchema,\n PaymentProcessingPayloadSchema,\n PaymentCancelledPayloadSchema,\n RefundSucceededPayloadSchema,\n RefundFailedPayloadSchema,\n DisputeOpenedPayloadSchema,\n DisputeExpiredPayloadSchema,\n DisputeAcceptedPayloadSchema,\n DisputeCancelledPayloadSchema,\n DisputeChallengedPayloadSchema,\n DisputeWonPayloadSchema,\n DisputeLostPayloadSchema,\n SubscriptionActivePayloadSchema,\n SubscriptionOnHoldPayloadSchema,\n SubscriptionRenewedPayloadSchema,\n SubscriptionPausedPayloadSchema,\n SubscriptionPlanChangedPayloadSchema,\n SubscriptionCancelledPayloadSchema,\n SubscriptionFailedPayloadSchema,\n SubscriptionExpiredPayloadSchema,\n LicenseKeyCreatedPayloadSchema,\n]);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timingSafeEqual = void 0;\nfunction assert(expr, msg = \"\") {\n if (!expr) {\n throw new Error(msg);\n }\n}\nfunction timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n if (!(a instanceof DataView)) {\n a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);\n }\n if (!(b instanceof DataView)) {\n b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);\n }\n assert(a instanceof DataView);\n assert(b instanceof DataView);\n const length = a.byteLength;\n let out = 0;\n let i = -1;\n while (++i < length) {\n out |= a.getUint8(i) ^ b.getUint8(i);\n }\n return out === 0;\n}\nexports.timingSafeEqual = timingSafeEqual;\n//# sourceMappingURL=timing_safe_equal.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n//# sourceMappingURL=base64.js.map","(function (root, factory) {\n // Hack to make all exports of this module sha256 function object properties.\n var exports = {};\n factory(exports);\n var sha256 = exports[\"default\"];\n for (var k in exports) {\n sha256[k] = exports[k];\n }\n \n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = sha256;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return sha256; }); \n } else {\n root.sha256 = sha256;\n }\n})(this, function(exports) {\n\"use strict\";\nexports.__esModule = true;\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexports.digestLength = 32;\nexports.blockSize = 64;\n// SHA-256 constants\nvar K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n var a, b, c, d, e, f, g, h, u, i, j, t1, t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nvar Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = exports.digestLength;\n this.blockSize = exports.blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n var bytesHashed = this.bytesHashed;\n var left = this.bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (var i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nexports.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nvar HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n }\n else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (var i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n }\n else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n var h = (new Hash()).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n// Function hash is both available as module.hash and as default export.\nexports[\"default\"] = hash;\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n var h = (new HMAC(key)).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n var num = counter[0];\n if (num === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nvar hkdfSalt = new Uint8Array(exports.digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n var counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n var hmac_ = new HMAC(okm);\n // Allocate buffer.\n var buffer = new Uint8Array(hmac_.digestLength);\n var bufpos = buffer.length;\n var out = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nexports.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n var prf = new HMAC(password);\n var len = prf.digestLength;\n var ctr = new Uint8Array(4);\n var t = new Uint8Array(len);\n var u = new Uint8Array(len);\n var dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n var c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (var k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nexports.pbkdf2 = pbkdf2;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Webhook = exports.WebhookVerificationError = void 0;\nconst timing_safe_equal_1 = require(\"./timing_safe_equal\");\nconst base64 = require(\"@stablelib/base64\");\nconst sha256 = require(\"fast-sha256\");\nconst WEBHOOK_TOLERANCE_IN_SECONDS = 5 * 60;\nclass ExtendableError extends Error {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, ExtendableError.prototype);\n this.name = \"ExtendableError\";\n this.stack = new Error(message).stack;\n }\n}\nclass WebhookVerificationError extends ExtendableError {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, WebhookVerificationError.prototype);\n this.name = \"WebhookVerificationError\";\n }\n}\nexports.WebhookVerificationError = WebhookVerificationError;\nclass Webhook {\n constructor(secret, options) {\n if (!secret) {\n throw new Error(\"Secret can't be empty.\");\n }\n if ((options === null || options === void 0 ? void 0 : options.format) === \"raw\") {\n if (secret instanceof Uint8Array) {\n this.key = secret;\n }\n else {\n this.key = Uint8Array.from(secret, (c) => c.charCodeAt(0));\n }\n }\n else {\n if (typeof secret !== \"string\") {\n throw new Error(\"Expected secret to be of type string\");\n }\n if (secret.startsWith(Webhook.prefix)) {\n secret = secret.substring(Webhook.prefix.length);\n }\n this.key = base64.decode(secret);\n }\n }\n verify(payload, headers_) {\n const headers = {};\n for (const key of Object.keys(headers_)) {\n headers[key.toLowerCase()] = headers_[key];\n }\n const msgId = headers[\"webhook-id\"];\n const msgSignature = headers[\"webhook-signature\"];\n const msgTimestamp = headers[\"webhook-timestamp\"];\n if (!msgSignature || !msgId || !msgTimestamp) {\n throw new WebhookVerificationError(\"Missing required headers\");\n }\n const timestamp = this.verifyTimestamp(msgTimestamp);\n const computedSignature = this.sign(msgId, timestamp, payload);\n const expectedSignature = computedSignature.split(\",\")[1];\n const passedSignatures = msgSignature.split(\" \");\n const encoder = new globalThis.TextEncoder();\n for (const versionedSignature of passedSignatures) {\n const [version, signature] = versionedSignature.split(\",\");\n if (version !== \"v1\") {\n continue;\n }\n if ((0, timing_safe_equal_1.timingSafeEqual)(encoder.encode(signature), encoder.encode(expectedSignature))) {\n return JSON.parse(payload.toString());\n }\n }\n throw new WebhookVerificationError(\"No matching signature found\");\n }\n sign(msgId, timestamp, payload) {\n if (typeof payload === \"string\") {\n }\n else if (payload.constructor.name === \"Buffer\") {\n payload = payload.toString();\n }\n else {\n throw new Error(\"Expected payload to be of type string or Buffer.\");\n }\n const encoder = new TextEncoder();\n const timestampNumber = Math.floor(timestamp.getTime() / 1000);\n const toSign = encoder.encode(`${msgId}.${timestampNumber}.${payload}`);\n const expectedSignature = base64.encode(sha256.hmac(this.key, toSign));\n return `v1,${expectedSignature}`;\n }\n verifyTimestamp(timestampHeader) {\n const now = Math.floor(Date.now() / 1000);\n const timestamp = parseInt(timestampHeader, 10);\n if (isNaN(timestamp)) {\n throw new WebhookVerificationError(\"Invalid Signature Headers\");\n }\n if (now - timestamp > WEBHOOK_TOLERANCE_IN_SECONDS) {\n throw new WebhookVerificationError(\"Message timestamp too old\");\n }\n if (timestamp > now + WEBHOOK_TOLERANCE_IN_SECONDS) {\n throw new WebhookVerificationError(\"Message timestamp too new\");\n }\n return new Date(timestamp * 1000);\n }\n}\nexports.Webhook = Webhook;\nWebhook.prefix = \"whsec_\";\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { WebhookPayloadSchema, } from \"../schemas/webhook\";\nimport { Webhook as StandardWebhook, WebhookVerificationError, } from \"standardwebhooks\";\nexport var handleWebhookPayload = function (payload, config) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!config.onPayload) return [3 /*break*/, 2];\n return [4 /*yield*/, config.onPayload(payload)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n if (!(payload.type === \"payment.succeeded\" && config.onPaymentSucceeded)) return [3 /*break*/, 4];\n return [4 /*yield*/, config.onPaymentSucceeded(payload)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n if (!(payload.type === \"payment.failed\" && config.onPaymentFailed)) return [3 /*break*/, 6];\n return [4 /*yield*/, config.onPaymentFailed(payload)];\n case 5:\n _a.sent();\n _a.label = 6;\n case 6:\n if (!(payload.type === \"payment.processing\" && config.onPaymentProcessing)) return [3 /*break*/, 8];\n return [4 /*yield*/, config.onPaymentProcessing(payload)];\n case 7:\n _a.sent();\n _a.label = 8;\n case 8:\n if (!(payload.type === \"payment.cancelled\" && config.onPaymentCancelled)) return [3 /*break*/, 10];\n return [4 /*yield*/, config.onPaymentCancelled(payload)];\n case 9:\n _a.sent();\n _a.label = 10;\n case 10:\n if (!(payload.type === \"refund.succeeded\" && config.onRefundSucceeded)) return [3 /*break*/, 12];\n return [4 /*yield*/, config.onRefundSucceeded(payload)];\n case 11:\n _a.sent();\n _a.label = 12;\n case 12:\n if (!(payload.type === \"refund.failed\" && config.onRefundFailed)) return [3 /*break*/, 14];\n return [4 /*yield*/, config.onRefundFailed(payload)];\n case 13:\n _a.sent();\n _a.label = 14;\n case 14:\n if (!(payload.type === \"dispute.opened\" && config.onDisputeOpened)) return [3 /*break*/, 16];\n return [4 /*yield*/, config.onDisputeOpened(payload)];\n case 15:\n _a.sent();\n _a.label = 16;\n case 16:\n if (!(payload.type === \"dispute.expired\" && config.onDisputeExpired)) return [3 /*break*/, 18];\n return [4 /*yield*/, config.onDisputeExpired(payload)];\n case 17:\n _a.sent();\n _a.label = 18;\n case 18:\n if (!(payload.type === \"dispute.accepted\" && config.onDisputeAccepted)) return [3 /*break*/, 20];\n return [4 /*yield*/, config.onDisputeAccepted(payload)];\n case 19:\n _a.sent();\n _a.label = 20;\n case 20:\n if (!(payload.type === \"dispute.cancelled\" && config.onDisputeCancelled)) return [3 /*break*/, 22];\n return [4 /*yield*/, config.onDisputeCancelled(payload)];\n case 21:\n _a.sent();\n _a.label = 22;\n case 22:\n if (!(payload.type === \"dispute.challenged\" && config.onDisputeChallenged)) return [3 /*break*/, 24];\n return [4 /*yield*/, config.onDisputeChallenged(payload)];\n case 23:\n _a.sent();\n _a.label = 24;\n case 24:\n if (!(payload.type === \"dispute.won\" && config.onDisputeWon)) return [3 /*break*/, 26];\n return [4 /*yield*/, config.onDisputeWon(payload)];\n case 25:\n _a.sent();\n _a.label = 26;\n case 26:\n if (!(payload.type === \"dispute.lost\" && config.onDisputeLost)) return [3 /*break*/, 28];\n return [4 /*yield*/, config.onDisputeLost(payload)];\n case 27:\n _a.sent();\n _a.label = 28;\n case 28:\n if (!(payload.type === \"subscription.active\" && config.onSubscriptionActive)) return [3 /*break*/, 30];\n return [4 /*yield*/, config.onSubscriptionActive(payload)];\n case 29:\n _a.sent();\n _a.label = 30;\n case 30:\n if (!(payload.type === \"subscription.on_hold\" && config.onSubscriptionOnHold)) return [3 /*break*/, 32];\n return [4 /*yield*/, config.onSubscriptionOnHold(payload)];\n case 31:\n _a.sent();\n _a.label = 32;\n case 32:\n if (!(payload.type === \"subscription.renewed\" && config.onSubscriptionRenewed)) return [3 /*break*/, 34];\n return [4 /*yield*/, config.onSubscriptionRenewed(payload)];\n case 33:\n _a.sent();\n _a.label = 34;\n case 34:\n if (!(payload.type === \"subscription.paused\" && config.onSubscriptionPaused)) return [3 /*break*/, 36];\n return [4 /*yield*/, config.onSubscriptionPaused(payload)];\n case 35:\n _a.sent();\n _a.label = 36;\n case 36:\n if (!(payload.type === \"subscription.plan_changed\" &&\n config.onSubscriptionPlanChanged)) return [3 /*break*/, 38];\n return [4 /*yield*/, config.onSubscriptionPlanChanged(payload)];\n case 37:\n _a.sent();\n _a.label = 38;\n case 38:\n if (!(payload.type === \"subscription.cancelled\" &&\n config.onSubscriptionCancelled)) return [3 /*break*/, 40];\n return [4 /*yield*/, config.onSubscriptionCancelled(payload)];\n case 39:\n _a.sent();\n _a.label = 40;\n case 40:\n if (!(payload.type === \"subscription.failed\" && config.onSubscriptionFailed)) return [3 /*break*/, 42];\n return [4 /*yield*/, config.onSubscriptionFailed(payload)];\n case 41:\n _a.sent();\n _a.label = 42;\n case 42:\n if (!(payload.type === \"subscription.expired\" && config.onSubscriptionExpired)) return [3 /*break*/, 44];\n return [4 /*yield*/, config.onSubscriptionExpired(payload)];\n case 43:\n _a.sent();\n _a.label = 44;\n case 44:\n if (!(payload.type === \"license_key.created\" && config.onLicenseKeyCreated)) return [3 /*break*/, 46];\n return [4 /*yield*/, config.onLicenseKeyCreated(payload)];\n case 45:\n _a.sent();\n _a.label = 46;\n case 46: return [2 /*return*/];\n }\n });\n}); };\nexport var verifyWebhookPayload = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {\n var standardWebhook, _c, success, payload, error;\n var webhookKey = _b.webhookKey, headers = _b.headers, body = _b.body;\n return __generator(this, function (_d) {\n standardWebhook = new StandardWebhook(webhookKey);\n try {\n standardWebhook.verify(body, headers);\n }\n catch (e) {\n if (e instanceof WebhookVerificationError) {\n throw new Error(e.message);\n }\n throw e;\n }\n _c = WebhookPayloadSchema.safeParse(JSON.parse(body)), success = _c.success, payload = _c.data, error = _c.error;\n if (!success) {\n throw new Error(error.message);\n }\n return [2 /*return*/, payload];\n });\n}); };\n","import type { DodoPayments } from \"dodopayments\";\nimport {\n handleWebhookPayload,\n WebhookHandlerConfig,\n} from \"@dodopayments/core/webhook\";\nimport { APIError, createAuthEndpoint } from \"better-auth/api\";\nimport { WebhookPayload } from \"@dodopayments/core/schemas\";\nimport { verifyWebhookPayload } from \"@dodopayments/core/webhook\";\n\nexport const webhooks =\n (options: WebhookHandlerConfig) => (_dodopayments: DodoPayments) => {\n return {\n dodopaymentsWebhooks: createAuthEndpoint(\n \"/webhooks/dodopayments\",\n {\n method: \"POST\",\n metadata: {\n isAction: false,\n },\n cloneRequest: true,\n },\n async (ctx) => {\n const { webhookKey } = options;\n\n if (!ctx.request?.body) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\");\n }\n const buf = await ctx.request.text();\n let event: WebhookPayload;\n try {\n if (!webhookKey) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"DodoPayments webhook webhookKey not found\",\n });\n }\n\n const headers = {\n \"webhook-id\": ctx.request.headers.get(\"webhook-id\") as string,\n \"webhook-timestamp\": ctx.request.headers.get(\n \"webhook-timestamp\",\n ) as string,\n \"webhook-signature\": ctx.request.headers.get(\n \"webhook-signature\",\n ) as string,\n };\n\n event = await verifyWebhookPayload({\n webhookKey,\n headers,\n body: buf,\n });\n } catch (err: unknown) {\n if (err instanceof Error) {\n ctx.context.logger.error(`Webhook Error: ${err.message}`);\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err.message}`,\n });\n }\n\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err}`,\n });\n }\n\n try {\n await handleWebhookPayload(event, options);\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e.message}`,\n );\n }\n\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e}`,\n );\n\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Webhook error: See server logs for more information.\",\n });\n }\n\n return ctx.json({ received: true });\n },\n ),\n };\n };\n","import type { BetterAuthPlugin } from \"better-auth\";\nimport { onUserCreate, onUserUpdate } from \"./hooks/customer\";\nimport type { DodoPaymentsEndpoints, DodoPaymentsOptions } from \"./types\";\n\nexport { dodopaymentsClient } from \"./client\";\n\nexport * from \"./plugins/portal\";\nexport * from \"./plugins/checkout\";\nexport * from \"./plugins/webhooks\";\n\nexport const dodopayments = (options: DodoPaymentsOptions) => {\n const plugins = options.use\n .map((use) => use(options.client))\n .reduce((acc, plugin) => {\n Object.assign(acc, plugin);\n return acc;\n }, {} as DodoPaymentsEndpoints);\n\n return {\n id: \"dodopayments\",\n endpoints: {\n ...plugins,\n },\n init() {\n return {\n options: {\n databaseHooks: {\n user: {\n create: {\n after: onUserCreate(options),\n },\n update: {\n after: onUserUpdate(options),\n },\n },\n },\n },\n };\n },\n } satisfies BetterAuthPlugin;\n};\n"],"names":["APIError","isJSONSerializable","base64","encoder","decode","encode","decodeBase64URL","toCryptoKey","importJWK","jwk.isJWK","jwk.isSecretJWK","invalidKeyInput","jwk.isPrivateJWK","jwk.isPublicJWK","getVerifyKey","b64u","z","createEndpoint","role","fetch","File","shims.kind","shims.setShims","auto.getRuntime","this","shimsKind","CustomerPortalAPI.CustomerPortal","PaymentsAPI.Payments","Payments","ImagesAPI.Images","Core.APIClient","Core.readEnv","Errors.DodoPaymentsError","API.Payments","API.Subscriptions","API.Invoices","API.Licenses","API.LicenseKeys","API.LicenseKeyInstances","API.Customers","API.Refunds","API.Disputes","API.Payouts","API.WebhookEvents","API.Products","API.Misc","API.Discounts","API.Addons","API.Brands","Errors.APIError","Errors.APIConnectionError","Errors.APIConnectionTimeoutError","Errors.APIUserAbortError","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Uploads.toFile","Uploads.fileFromPath","__awaiter","__generator","require$$0","require$$1","require$$2","StandardWebhook","WebhookVerificationError"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,100,101,102,103]}
|