@xylex-group/athena 2.14.0 → 3.0.2
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 +109 -1402
- package/dist/admin.d.cts +1 -1
- package/dist/admin.d.ts +1 -1
- package/dist/{athena-auth-url-oLux_57a.d.cts → athena-request-headers-C7Jy-c_D.d.ts} +85 -1
- package/dist/{athena-auth-url-oLux_57a.d.ts → athena-request-headers-DujFFyMU.d.cts} +85 -1
- package/dist/billing.cjs +1311 -0
- package/dist/billing.cjs.map +1 -0
- package/dist/billing.d.cts +270 -0
- package/dist/billing.d.ts +270 -0
- package/dist/billing.js +1306 -0
- package/dist/billing.js.map +1 -0
- package/dist/browser.cjs +9695 -9243
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +11 -10
- package/dist/browser.d.ts +11 -10
- package/dist/browser.js +9692 -9241
- package/dist/browser.js.map +1 -1
- package/dist/cli/index.cjs +8137 -7286
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +4 -4
- package/dist/cli/index.d.ts +4 -4
- package/dist/cli/index.js +8137 -7286
- package/dist/cli/index.js.map +1 -1
- package/dist/index.cjs +9718 -9260
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -10
- package/dist/index.d.ts +11 -10
- package/dist/index.js +9711 -9258
- package/dist/index.js.map +1 -1
- package/dist/{model-form-DcH3R7WD.d.ts → model-form-Dh0sisdL.d.ts} +2 -2
- package/dist/{model-form-BE1_Bmdd.d.cts → model-form-oOAJUVd4.d.cts} +2 -2
- package/dist/{module-DFGZXCtt.d.cts → module-CB25egcO.d.cts} +18 -52
- package/dist/module-C_ab-MM1.d.cts +360 -0
- package/dist/module-C_ab-MM1.d.ts +360 -0
- package/dist/{module-Ca3_OQqR.d.ts → module-CkUM6v58.d.ts} +18 -52
- package/dist/next/client.cjs +9116 -8468
- package/dist/next/client.cjs.map +1 -1
- package/dist/next/client.d.cts +24 -25
- package/dist/next/client.d.ts +24 -25
- package/dist/next/client.js +9088 -8469
- package/dist/next/client.js.map +1 -1
- package/dist/next/server.cjs +8932 -7776
- package/dist/next/server.cjs.map +1 -1
- package/dist/next/server.d.cts +62 -43
- package/dist/next/server.d.ts +62 -43
- package/dist/next/server.js +8873 -7777
- package/dist/next/server.js.map +1 -1
- package/dist/{payload-BbSCmILD.d.ts → payload-DWI1rw-e.d.cts} +1 -35
- package/dist/{payload-zXIwKTQf.d.cts → payload-DWI1rw-e.d.ts} +1 -35
- package/dist/{pipeline-DqwehoQV.d.ts → pipeline-B8aN2EHe.d.ts} +1 -1
- package/dist/{pipeline-CwQoD5G9.d.cts → pipeline-D4W-Cc-A.d.cts} +1 -1
- package/dist/proxy-request-headers-DGxdoyA0.d.cts +59 -0
- package/dist/proxy-request-headers-m4D2Tduy.d.ts +59 -0
- package/dist/react.cjs +118 -17
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +46 -16
- package/dist/react.d.ts +46 -16
- package/dist/react.js +117 -18
- package/dist/react.js.map +1 -1
- package/dist/social-providers.cjs +24 -20
- package/dist/social-providers.cjs.map +1 -1
- package/dist/social-providers.d.cts +96 -139
- package/dist/social-providers.d.ts +96 -139
- package/dist/social-providers.js +24 -20
- package/dist/social-providers.js.map +1 -1
- package/dist/{types-eAKAh71s.d.cts → types-AOY-GLu8.d.cts} +27 -54
- package/dist/{types-eAKAh71s.d.ts → types-AOY-GLu8.d.ts} +27 -54
- package/dist/{types-CD6K05JQ.d.ts → types-B75PdABb.d.ts} +3 -3
- package/dist/{types-dHnjluBC.d.cts → types-BBm-kEBL.d.cts} +2 -2
- package/dist/{types-C1swabT5.d.ts → types-BaAMXCqK.d.ts} +2 -2
- package/dist/{types-YQUR7wu0.d.cts → types-Bltx6iL6.d.cts} +3 -5
- package/dist/{types-YQUR7wu0.d.ts → types-Bltx6iL6.d.ts} +3 -5
- package/dist/{types-6H575ITc.d.cts → types-CgCv5o6R.d.cts} +3 -3
- package/dist/utils.cjs +7 -8
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +4 -145
- package/dist/utils.d.ts +4 -145
- package/dist/utils.js +7 -8
- package/dist/utils.js.map +1 -1
- package/dist/{client-wU2J9yqb.d.cts → v3-client-CWfZHcKL.d.cts} +402 -521
- package/dist/{client-uthENhaf.d.ts → v3-client-DZp2NEhK.d.ts} +402 -521
- package/package.json +15 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/sdk-version.ts","../src/cookies/cookie-utils.ts","../src/cookies/index.ts","../src/utils/athena-request-headers.ts","../src/gateway/errors.ts","../src/gateway/url.ts","../src/billing/module.ts","../src/billing/live-http-routes.json"],"names":[],"mappings":"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","file":"billing.cjs","sourcesContent":["{\n \"author\": \"floris@xylex.group\",\n \"bin\": {\n \"athena-js\": \"bin/athena-js.js\"\n },\n \"dependencies\": {\n \"blessed\": \"^0.1.81\",\n \"chalk\": \"^4.1.2\",\n \"cron-parser\": \"^4.9.0\",\n \"jose\": \"^6.2.3\",\n \"pg\": \"^8.16.0\",\n \"server-only\": \"^0.0.1\",\n \"use-sync-external-store\": \"^1.5.0\",\n \"uuid\": \"^9.0.1\",\n \"zod\": \"^4.0.1\"\n },\n \"description\": \"Athena JS SDK\",\n \"devDependencies\": {\n \"@react-email/components\": \"^1.0.12\",\n \"@react-email/render\": \"^2.0.8\",\n \"@types/blessed\": \"^0.1.25\",\n \"@types/node\": \"^20.10.5\",\n \"@types/pg\": \"^8.15.1\",\n \"@types/react\": \"^18.3.12\",\n \"@types/react-test-renderer\": \"^18.3.1\",\n \"@types/uuid\": \"^9.0.7\",\n \"@typescript-eslint/eslint-plugin\": \"^8.57.0\",\n \"@typescript-eslint/parser\": \"^8.57.0\",\n \"eslint\": \"^8.57.1\",\n \"express\": \"^4.22.2\",\n \"react\": \"^18.3.1\",\n \"react-dom\": \"^18.3.1\",\n \"react-test-renderer\": \"^18.3.1\",\n \"tsup\": \"^8.5.1\",\n \"tsx\": \"^4.7.0\",\n \"typescript\": \"^5.3.3\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"exports\": {\n \".\": {\n \"browser\": {\n \"default\": \"./dist/browser.js\",\n \"import\": \"./dist/browser.js\",\n \"require\": \"./dist/browser.cjs\",\n \"types\": \"./dist/browser.d.ts\"\n },\n \"default\": \"./dist/index.js\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./admin\": {\n \"default\": \"./dist/admin.js\",\n \"import\": \"./dist/admin.js\",\n \"require\": \"./dist/admin.cjs\",\n \"types\": \"./dist/admin.d.ts\"\n },\n \"./billing\": {\n \"default\": \"./dist/billing.js\",\n \"import\": \"./dist/billing.js\",\n \"require\": \"./dist/billing.cjs\",\n \"types\": \"./dist/billing.d.ts\"\n },\n \"./browser\": {\n \"default\": \"./dist/browser.js\",\n \"import\": \"./dist/browser.js\",\n \"require\": \"./dist/browser.cjs\",\n \"types\": \"./dist/browser.d.ts\"\n },\n \"./cookies\": {\n \"default\": \"./dist/cookies.js\",\n \"import\": \"./dist/cookies.js\",\n \"require\": \"./dist/cookies.cjs\",\n \"types\": \"./dist/cookies.d.ts\"\n },\n \"./next/client\": {\n \"default\": \"./dist/next/client.js\",\n \"import\": \"./dist/next/client.js\",\n \"require\": \"./dist/next/client.cjs\",\n \"types\": \"./dist/next/client.d.ts\"\n },\n \"./next/server\": {\n \"default\": \"./dist/next/server.js\",\n \"import\": \"./dist/next/server.js\",\n \"require\": \"./dist/next/server.cjs\",\n \"types\": \"./dist/next/server.d.ts\"\n },\n \"./organization\": {\n \"default\": \"./dist/organization.js\",\n \"import\": \"./dist/organization.js\",\n \"require\": \"./dist/organization.cjs\",\n \"types\": \"./dist/organization.d.ts\"\n },\n \"./package.json\": \"./package.json\",\n \"./react\": {\n \"default\": \"./dist/react.js\",\n \"import\": \"./dist/react.js\",\n \"require\": \"./dist/react.cjs\",\n \"types\": \"./dist/react.d.ts\"\n },\n \"./social-providers\": {\n \"default\": \"./dist/social-providers.js\",\n \"import\": \"./dist/social-providers.js\",\n \"require\": \"./dist/social-providers.cjs\",\n \"types\": \"./dist/social-providers.d.ts\"\n },\n \"./utils\": {\n \"default\": \"./dist/utils.js\",\n \"import\": \"./dist/utils.js\",\n \"require\": \"./dist/utils.cjs\",\n \"types\": \"./dist/utils.d.ts\"\n }\n },\n \"files\": [\n \"dist\",\n \"bin\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"keywords\": [\n \"database\",\n \"driver\",\n \"api-gateway\",\n \"sdk\",\n \"react\",\n \"hooks\",\n \"http\",\n \"postgres\",\n \"query-builder\"\n ],\n \"license\": \"MIT\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"name\": \"@xylex-group/athena\",\n \"peerDependencies\": {\n \"@react-email/components\": \">=1.0.0\",\n \"@react-email/render\": \">=2.0.0\",\n \"react\": \">=17.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@react-email/components\": {\n \"optional\": true\n },\n \"@react-email/render\": {\n \"optional\": true\n },\n \"react\": {\n \"optional\": true\n }\n },\n \"publisher\": \"XYLEX Group\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xylex-group/athena-js.git\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"check:all\": \"pnpm lint && pnpm typecheck && pnpm test && pnpm build\",\n \"dev\": \"tsup --watch\",\n \"docs:methods\": \"node scripts/generate-sdk-method-reference.mjs\",\n \"docs:site:check\": \"pnpm --dir ../../apps/docs docs:sync-athena-js:check\",\n \"docs:site:sync\": \"pnpm --dir ../../apps/docs docs:sync-athena-js\",\n \"example:api-call\": \"cd examples/api-call && bun run start\",\n \"example:email-resend\": \"cd examples/email-resend && bun run start\",\n \"example:express-api\": \"cd examples/express-api && bun run start\",\n \"example:order-saga\": \"cd examples/order-saga && bun run start\",\n \"example:postgres-connection\": \"cd examples/postgres-connection && bun run start\",\n \"example:recurring-invoice\": \"cd examples/recurring-invoice && bun run start\",\n \"example:retry-patterns\": \"cd examples/retry-patterns && bun run start\",\n \"lint\": \"eslint \\\"src/**/*.ts\\\" \\\"test/**/*.ts\\\"\",\n \"lint:fix\": \"pnpm lint -- --fix\",\n \"prepublishOnly\": \"pnpm typecheck && pnpm build\",\n \"publish:token\": \"node scripts/publish.js\",\n \"test\": \"node --import ./test/register-server-only.mjs --import tsx --test --test-force-exit test/*.test.ts\",\n \"test:integration:postgres\": \"node scripts/run-postgres-introspection-test.mjs\",\n \"test:watch\": \"node --import ./test/register-server-only.mjs --import tsx --test --watch test/*.test.ts\",\n \"typecheck\": \"tsc -p tsconfig.typecheck.json\"\n },\n \"sideEffects\": false,\n \"type\": \"module\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"*\": [\n \"dist/index.d.ts\"\n ],\n \"admin\": [\n \"dist/admin.d.ts\"\n ],\n \"billing\": [\n \"dist/billing.d.ts\"\n ],\n \"browser\": [\n \"dist/browser.d.ts\"\n ],\n \"cookies\": [\n \"dist/cookies.d.ts\"\n ],\n \"next/client\": [\n \"dist/next/client.d.ts\"\n ],\n \"next/server\": [\n \"dist/next/server.d.ts\"\n ],\n \"organization\": [\n \"dist/organization.d.ts\"\n ],\n \"react\": [\n \"dist/react.d.ts\"\n ],\n \"social-providers\": [\n \"dist/social-providers.d.ts\"\n ],\n \"utils\": [\n \"dist/utils.d.ts\"\n ]\n }\n },\n \"version\": \"3.0.2\"\n}","import packageJson from '../package.json' with { type: 'json' }\n\nexport const PACKAGE_VERSION = packageJson.version\n\nexport function buildSdkHeaderValue(sdkName: string): string {\n return `${sdkName} ${PACKAGE_VERSION}`\n}\n","import type { AthenaCookieOptions } from './types.ts'\n\nfunction tryDecode(str: string): string {\n if (str.indexOf('%') === -1) {\n return str\n }\n try {\n return decodeURIComponent(str)\n } catch {\n return str\n }\n}\n\nexport interface CookieAttributes {\n value: string\n 'max-age'?: number\n expires?: Date\n domain?: string\n path?: string\n secure?: boolean\n httponly?: boolean\n partitioned?: boolean\n samesite?: 'strict' | 'lax' | 'none'\n [key: string]: unknown\n}\n\nexport const SECURE_COOKIE_PREFIX = '__Secure-'\nexport const HOST_COOKIE_PREFIX = '__Host-'\n\n/**\n * Remove __Secure- or __Host- prefix from cookie name.\n */\nexport function stripSecureCookiePrefix(cookieName: string): string {\n if (cookieName.startsWith(SECURE_COOKIE_PREFIX)) {\n return cookieName.slice(SECURE_COOKIE_PREFIX.length)\n }\n if (cookieName.startsWith(HOST_COOKIE_PREFIX)) {\n return cookieName.slice(HOST_COOKIE_PREFIX.length)\n }\n return cookieName\n}\n\n/**\n * Split a comma-joined `Set-Cookie` header string into individual cookies.\n */\nexport function splitSetCookieHeader(setCookie: string): string[] {\n if (!setCookie) {\n return []\n }\n\n const result: string[] = []\n let start = 0\n let i = 0\n\n while (i < setCookie.length) {\n if (setCookie[i] === ',') {\n let j = i + 1\n while (j < setCookie.length && setCookie[j] === ' ') {\n j++\n }\n while (j < setCookie.length && setCookie[j] !== '=' && setCookie[j] !== ';' && setCookie[j] !== ',') {\n j++\n }\n\n if (j < setCookie.length && setCookie[j] === '=') {\n const part = setCookie.slice(start, i).trim()\n if (part) {\n result.push(part)\n }\n start = i + 1\n while (start < setCookie.length && setCookie[start] === ' ') {\n start++\n }\n i = start\n continue\n }\n }\n i++\n }\n\n const last = setCookie.slice(start).trim()\n if (last) {\n result.push(last)\n }\n\n return result\n}\n\nexport function parseSetCookieHeader(setCookie: string): Map<string, CookieAttributes> {\n const cookies = new Map<string, CookieAttributes>()\n const cookieArray = splitSetCookieHeader(setCookie)\n\n for (const cookieString of cookieArray) {\n const parts = cookieString.split(';').map((part) => part.trim())\n const [nameValue, ...attributes] = parts\n const [name, ...valueParts] = (nameValue || '').split('=')\n if (!name) {\n continue\n }\n\n const value = unquoteCookieValue(valueParts.join('='))\n const decodedValue = tryDecode(value)\n const attrObj: CookieAttributes = { value: decodedValue }\n\n for (const attribute of attributes) {\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) : undefined\n break\n case 'expires':\n attrObj.expires = attrValue ? new Date(attrValue.trim()) : undefined\n break\n case 'domain':\n attrObj.domain = attrValue ? attrValue.trim() : undefined\n break\n case 'path':\n attrObj.path = attrValue ? attrValue.trim() : undefined\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() as 'strict' | 'lax' | 'none') : undefined\n break\n case 'partitioned':\n attrObj.partitioned = true\n break\n default:\n attrObj[normalizedAttrName] = attrValue ? attrValue.trim() : true\n break\n }\n }\n\n cookies.set(name, attrObj)\n }\n\n return cookies\n}\n\nexport function toCookieOptions(attributes: CookieAttributes): AthenaCookieOptions {\n return {\n maxAge: attributes['max-age'],\n expires: attributes.expires,\n domain: attributes.domain,\n path: attributes.path,\n secure: attributes.secure,\n httpOnly: attributes.httponly,\n sameSite: attributes.samesite,\n partitioned: attributes.partitioned,\n }\n}\n\n/**\n * Cookie-name token char set per RFC 7230 §3.2.6.\n */\nexport const cookieNameRegex = /^[\\w!#$%&'*.^`|~+-]+$/\n\nfunction unquoteCookieValue(value: string): string {\n if (value.length < 2 || !value.startsWith('\"') || !value.endsWith('\"')) {\n return value\n }\n return value.slice(1, -1)\n}\n\n/**\n * Parse a `Cookie` header into a key/value map.\n */\nexport function parseCookies(cookieHeader: string): Map<string, string> {\n const cookies = cookieHeader.split('; ')\n const cookieMap = new Map<string, string>()\n cookies.forEach((cookie) => {\n const [name, value] = cookie.split(/=(.*)/s)\n cookieMap.set(name as string, value as string)\n })\n return cookieMap\n}\n\n/**\n * Add or replace a cookie in the request `Cookie` header.\n */\nexport function setRequestCookie(headers: Headers, name: string, value: string): void {\n const cookieMap = parseCookies(headers.get('cookie') || '')\n if (cookieNameRegex.test(name)) {\n cookieMap.set(name, value)\n }\n headers.set(\n 'cookie',\n Array.from(cookieMap, ([key, currentValue]) => `${key}=${encodeURIComponent(currentValue)}`).join('; '),\n )\n}\n\n/**\n * Merge `Set-Cookie` values into a `Cookie` header.\n */\nexport function applySetCookies(target: Headers, setCookieValues: Iterable<string>): void {\n const cookieMap = parseCookies(target.get('cookie') || '')\n for (const setCookie of setCookieValues) {\n for (const [name, attr] of parseSetCookieHeader(setCookie)) {\n if (cookieNameRegex.test(name)) {\n cookieMap.set(name, attr.value)\n }\n }\n }\n target.set(\n 'cookie',\n Array.from(cookieMap, ([key, currentValue]) => `${key}=${encodeURIComponent(currentValue)}`).join('; '),\n )\n}\n\nexport function setCookieToHeader(headers: Headers) {\n return (context: { response: Response }) => {\n const setCookieHeader = context.response.headers.get('set-cookie')\n if (!setCookieHeader) {\n return\n }\n applySetCookies(headers, [setCookieHeader])\n }\n}\n","import { decodeBase64UrlToString, encodeStringToBase64Url } from './base64.ts'\nimport {\n HOST_COOKIE_PREFIX,\n SECURE_COOKIE_PREFIX,\n parseCookies,\n parseSetCookieHeader,\n setCookieToHeader,\n setRequestCookie,\n splitSetCookieHeader,\n stripSecureCookiePrefix,\n toCookieOptions,\n} from './cookie-utils.ts'\nimport { signHmacBase64Url, signJwtHS256, verifyJwtHS256 } from './crypto.ts'\nimport { createAccountStore, createSessionStore, getAccountCookie, getChunkedCookie } from './session-store.ts'\nimport type {\n AthenaAuthCookie,\n AthenaAuthCookies,\n AthenaCookieContextRuntime,\n AthenaCookieOptions,\n AthenaCookiesOptions,\n AthenaCookieVersionResolver,\n AthenaGetCookieCacheConfig,\n AthenaSessionPair,\n} from './types.ts'\n\nconst DEFAULT_COOKIE_PREFIX = 'athena-auth'\nconst LEGACY_COOKIE_PREFIX = 'better-auth'\nconst DEFAULT_SESSION_MAX_AGE = 7 * 24 * 60 * 60\nconst DEFAULT_CACHE_MAX_AGE = 60 * 5\n\nfunction isProductionRuntime(): boolean {\n return typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\n}\n\nfunction getEnvironmentSecret(): string | undefined {\n if (typeof process === 'undefined') {\n return undefined\n }\n return process.env?.ATHENA_AUTH_SECRET || process.env?.BETTER_AUTH_SECRET || process.env?.AUTH_SECRET\n}\n\nfunction isDynamicBaseURLConfig(baseURL: AthenaCookiesOptions['baseURL']): boolean {\n return (\n typeof baseURL === 'object' &&\n baseURL !== null &&\n 'allowedHosts' in baseURL &&\n Array.isArray((baseURL as { allowedHosts?: unknown }).allowedHosts)\n )\n}\n\nfunction resolveCookiePrefixes(primaryPrefix: string): string[] {\n const prefixes = [primaryPrefix]\n if (!prefixes.includes(DEFAULT_COOKIE_PREFIX)) {\n prefixes.push(DEFAULT_COOKIE_PREFIX)\n }\n if (!prefixes.includes(LEGACY_COOKIE_PREFIX)) {\n prefixes.push(LEGACY_COOKIE_PREFIX)\n }\n return prefixes\n}\n\nfunction createError(message: string): Error {\n return new Error(`@xylex-group/athena/cookies: ${message}`)\n}\n\nfunction getSecretOrThrow(secret?: string): string {\n const resolved = secret || getEnvironmentSecret()\n if (!resolved) {\n throw createError(\n 'getCookieCache requires a secret. Pass `secret` or set ATHENA_AUTH_SECRET/BETTER_AUTH_SECRET/AUTH_SECRET.',\n )\n }\n return resolved\n}\n\nfunction asObject(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object') {\n return null\n }\n return value as Record<string, unknown>\n}\n\nfunction getSessionTokenFromPair(session: AthenaSessionPair): string {\n const token = session.session?.token\n if (typeof token !== 'string' || token.length === 0) {\n throw createError('setSessionCookie requires `session.session.token` to be a non-empty string.')\n }\n return token\n}\n\nasync function resolveCookieVersion(\n versionConfig: AthenaCookieVersionResolver | undefined,\n session: Record<string, unknown>,\n user: Record<string, unknown>,\n): Promise<string> {\n if (!versionConfig) {\n return '1'\n }\n if (typeof versionConfig === 'string') {\n return versionConfig\n }\n return versionConfig(session, user)\n}\n\nfunction getSessionCookieCacheName(cookiePrefix: string, cookieName: string, isSecure: boolean): string {\n return isSecure ? `${SECURE_COOKIE_PREFIX}${cookiePrefix}.${cookieName}` : `${cookiePrefix}.${cookieName}`\n}\n\nasync function setCookieValue(\n ctx: AthenaCookieContextRuntime,\n name: string,\n value: string,\n attributes: AthenaCookieOptions,\n): Promise<void> {\n const secret = ctx.context.secret\n if (secret && typeof ctx.setSignedCookie === 'function') {\n await ctx.setSignedCookie(name, value, secret, attributes)\n return\n }\n ctx.setCookie(name, value, attributes)\n}\n\nfunction parseJsonSafely<T>(value: string): T | null {\n try {\n return JSON.parse(value) as T\n } catch {\n return null\n }\n}\n\nfunction getIsSecureCookie(config: { isSecure?: boolean } | undefined): boolean {\n if (config?.isSecure !== undefined) {\n return config.isSecure\n }\n return isProductionRuntime()\n}\n\nexport function createCookieGetter(options: AthenaCookiesOptions) {\n const baseURLString = typeof options.baseURL === 'string' ? options.baseURL : undefined\n const dynamicProtocol =\n typeof options.baseURL === 'object' && options.baseURL !== null ? options.baseURL.protocol : undefined\n\n const secure =\n options.advanced?.useSecureCookies !== undefined\n ? options.advanced.useSecureCookies\n : dynamicProtocol === 'https'\n ? true\n : dynamicProtocol === 'http'\n ? false\n : baseURLString\n ? baseURLString.startsWith('https://')\n : isProductionRuntime()\n\n const secureCookiePrefix = secure ? SECURE_COOKIE_PREFIX : ''\n const crossSubdomainEnabled = !!options.advanced?.crossSubDomainCookies?.enabled\n const domain = crossSubdomainEnabled\n ? options.advanced?.crossSubDomainCookies?.domain || (baseURLString ? new URL(baseURLString).hostname : undefined)\n : undefined\n\n if (crossSubdomainEnabled && !domain && !isDynamicBaseURLConfig(options.baseURL)) {\n throw createError('baseURL is required when `crossSubDomainCookies.enabled` is true.')\n }\n\n function createCookie(cookieName: string, overrideAttributes: Partial<AthenaCookieOptions> = {}): AthenaAuthCookie {\n const prefix = options.advanced?.cookiePrefix || DEFAULT_COOKIE_PREFIX\n const name = options.advanced?.cookies?.[cookieName]?.name || `${prefix}.${cookieName}`\n const attributes = options.advanced?.cookies?.[cookieName]?.attributes || {}\n\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\n return createCookie\n}\n\nexport function getCookies(options: AthenaCookiesOptions): AthenaAuthCookies {\n const createCookie = createCookieGetter(options)\n const sessionToken = createCookie('session_token', { maxAge: options.session?.expiresIn || DEFAULT_SESSION_MAX_AGE })\n const sessionData = createCookie('session_data', { maxAge: options.session?.cookieCache?.maxAge || DEFAULT_CACHE_MAX_AGE })\n const accountData = createCookie('account_data', { maxAge: options.session?.cookieCache?.maxAge || DEFAULT_CACHE_MAX_AGE })\n const dontRememberToken = createCookie('dont_remember')\n\n return {\n sessionToken: {\n name: sessionToken.name,\n attributes: sessionToken.attributes,\n },\n sessionData: {\n name: sessionData.name,\n attributes: sessionData.attributes,\n },\n dontRememberToken: {\n name: dontRememberToken.name,\n attributes: dontRememberToken.attributes,\n },\n accountData: {\n name: accountData.name,\n attributes: accountData.attributes,\n },\n }\n}\n\nexport async function setCookieCache(\n ctx: AthenaCookieContextRuntime,\n session: AthenaSessionPair,\n dontRememberMe: boolean,\n): Promise<void> {\n const cookieCacheConfig = ctx.context.options?.session?.cookieCache\n if (!cookieCacheConfig?.enabled) {\n return\n }\n\n const version = await resolveCookieVersion(\n cookieCacheConfig.version,\n session.session as Record<string, unknown>,\n session.user as Record<string, unknown>,\n )\n\n const sessionData = {\n session: session.session,\n user: session.user,\n updatedAt: Date.now(),\n version,\n }\n\n const baseAttributes = ctx.context.authCookies.sessionData.attributes\n const maxAge = dontRememberMe ? undefined : baseAttributes.maxAge\n const options: AthenaCookieOptions = {\n ...baseAttributes,\n maxAge,\n }\n const expiresAt = Date.now() + ((options.maxAge || 60) * 1000)\n const strategy = cookieCacheConfig.strategy || 'compact'\n const secret = getSecretOrThrow(ctx.context.secret)\n\n let encoded: string\n if (strategy === 'jwt') {\n encoded = await signJwtHS256(sessionData, secret, options.maxAge || DEFAULT_CACHE_MAX_AGE)\n } else if (strategy === 'jwe') {\n throw createError('`jwe` strategy is not supported by the SDK cookie helper.')\n } else {\n const signature = await signHmacBase64Url(\n secret,\n JSON.stringify({\n ...sessionData,\n expiresAt,\n }),\n )\n encoded = encodeStringToBase64Url(\n JSON.stringify({\n session: sessionData,\n expiresAt,\n signature,\n }),\n )\n }\n\n if (encoded.length > 4093) {\n const store = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx)\n const cookies = store.chunk(encoded, options)\n store.setCookies(cookies)\n } else {\n const store = createSessionStore(ctx.context.authCookies.sessionData.name, options, ctx)\n if (store.hasChunks()) {\n store.setCookies(store.clean())\n }\n ctx.setCookie(ctx.context.authCookies.sessionData.name, encoded, options)\n }\n}\n\nexport async function setSessionCookie(\n ctx: AthenaCookieContextRuntime,\n session: AthenaSessionPair,\n dontRememberMe?: boolean,\n overrides?: Partial<AthenaCookieOptions>,\n): Promise<void> {\n if (dontRememberMe === undefined && typeof ctx.getSignedCookie === 'function' && ctx.context.secret) {\n const existingFlag = await ctx.getSignedCookie(ctx.context.authCookies.dontRememberToken.name, ctx.context.secret)\n dontRememberMe = !!existingFlag\n }\n\n const resolvedDontRememberMe = dontRememberMe ?? false\n const token = getSessionTokenFromPair(session)\n const options = ctx.context.authCookies.sessionToken.attributes\n const maxAge = resolvedDontRememberMe ? undefined : ctx.context.sessionConfig?.expiresIn\n await setCookieValue(ctx, ctx.context.authCookies.sessionToken.name, token, {\n ...options,\n maxAge,\n ...overrides,\n })\n\n if (resolvedDontRememberMe) {\n await setCookieValue(\n ctx,\n ctx.context.authCookies.dontRememberToken.name,\n 'true',\n ctx.context.authCookies.dontRememberToken.attributes,\n )\n }\n\n await setCookieCache(ctx, session, resolvedDontRememberMe)\n ctx.context.setNewSession?.(session)\n}\n\n/**\n * Expires a cookie by setting `maxAge: 0` while preserving attributes.\n */\nexport function expireCookie(ctx: AthenaCookieContextRuntime, cookie: AthenaAuthCookie): void {\n ctx.setCookie(cookie.name, '', {\n ...cookie.attributes,\n maxAge: 0,\n })\n}\n\nexport function deleteSessionCookie(ctx: AthenaCookieContextRuntime, skipDontRememberMe?: boolean): void {\n expireCookie(ctx, ctx.context.authCookies.sessionToken)\n expireCookie(ctx, ctx.context.authCookies.sessionData)\n\n if (ctx.context.options?.account?.storeAccountCookie) {\n expireCookie(ctx, ctx.context.authCookies.accountData)\n const accountStore = createAccountStore(\n ctx.context.authCookies.accountData.name,\n ctx.context.authCookies.accountData.attributes,\n ctx,\n )\n accountStore.setCookies(accountStore.clean())\n }\n\n const sessionStore = createSessionStore(\n ctx.context.authCookies.sessionData.name,\n ctx.context.authCookies.sessionData.attributes,\n ctx,\n )\n sessionStore.setCookies(sessionStore.clean())\n\n if (!skipDontRememberMe) {\n expireCookie(ctx, ctx.context.authCookies.dontRememberToken)\n }\n}\n\nexport const getSessionCookie = (\n request: Request | Headers,\n config?:\n | {\n cookiePrefix?: string\n cookieName?: string\n path?: string\n }\n | undefined,\n): string | null => {\n const cookies = (request instanceof Headers || !('headers' in request) ? request : request.headers).get('cookie')\n if (!cookies) {\n return null\n }\n\n const { cookieName = 'session_token', cookiePrefix = 'athena-auth' } = config || {}\n const parsedCookie = parseCookies(cookies)\n const getCookie = (name: string): string | undefined =>\n parsedCookie.get(name) || parsedCookie.get(`${SECURE_COOKIE_PREFIX}${name}`)\n const candidateCookieNames = Array.from(new Set([\n cookieName,\n cookieName.replace(/_/g, '-'),\n cookieName.replace(/-/g, '_'),\n ])).filter(Boolean)\n for (const candidateName of candidateCookieNames) {\n const sessionToken =\n getCookie(`${cookiePrefix}.${candidateName}`) || getCookie(`${cookiePrefix}-${candidateName}`)\n if (sessionToken) {\n return sessionToken\n }\n }\n return null\n}\n\nexport const getCookieCache = async <\n SessionShape extends Record<string, unknown> = Record<string, unknown>,\n UserShape extends Record<string, unknown> = Record<string, unknown>,\n>(\n request: Request | Headers,\n config?: AthenaGetCookieCacheConfig<SessionShape, UserShape>,\n): Promise<{\n session: SessionShape\n user: UserShape\n updatedAt: number\n version?: string\n} | null> => {\n const headers = request instanceof Headers || !('headers' in request) ? request : request.headers\n const cookieHeader = headers.get('cookie')\n if (!cookieHeader) {\n return null\n }\n\n const parsedCookie = parseCookies(cookieHeader)\n const cookieName = config?.cookieName || 'session_data'\n const requestedPrefix = config?.cookiePrefix || DEFAULT_COOKIE_PREFIX\n const strategy = config?.strategy || 'compact'\n const cookiePrefixes = resolveCookiePrefixes(requestedPrefix)\n const isSecure = getIsSecureCookie(config)\n const secret = getSecretOrThrow(config?.secret)\n\n let sessionData: string | undefined\n\n for (const prefix of cookiePrefixes) {\n const candidate = getSessionCookieCacheName(prefix, cookieName, isSecure)\n const cookieValue = parsedCookie.get(candidate)\n if (cookieValue) {\n sessionData = cookieValue\n break\n }\n }\n\n if (!sessionData) {\n const reconstructedChunks: Array<{ index: number; value: string }> = []\n for (const prefix of cookiePrefixes) {\n const candidate = getSessionCookieCacheName(prefix, cookieName, isSecure)\n for (const [name, value] of parsedCookie.entries()) {\n if (!name.startsWith(`${candidate}.`)) {\n continue\n }\n const parts = name.split('.')\n const indexStr = parts[parts.length - 1]\n const index = parseInt(indexStr || '0', 10)\n if (!Number.isNaN(index)) {\n reconstructedChunks.push({ index, value })\n }\n }\n if (reconstructedChunks.length > 0) {\n break\n }\n }\n\n if (reconstructedChunks.length > 0) {\n reconstructedChunks.sort((left, right) => left.index - right.index)\n sessionData = reconstructedChunks.map((chunk) => chunk.value).join('')\n }\n }\n\n if (!sessionData) {\n return null\n }\n\n if (strategy === 'jwe') {\n throw createError(\n '`jwe` strategy is not supported by the SDK cookie helper. Use compact/jwt or pass cookie data through the auth server.',\n )\n }\n\n if (strategy === 'jwt') {\n const payload = await verifyJwtHS256<Record<string, unknown>>(sessionData, secret)\n if (!payload) {\n return null\n }\n const sessionRecord = asObject(payload.session)\n const userRecord = asObject(payload.user)\n const updatedAt = payload.updatedAt\n if (!sessionRecord || !userRecord || typeof updatedAt !== 'number') {\n return null\n }\n\n if (config?.version) {\n const cookieVersion = typeof payload.version === 'string' ? payload.version : '1'\n const expectedVersion =\n typeof config.version === 'string'\n ? config.version\n : await config.version(sessionRecord as SessionShape, userRecord as UserShape)\n if (cookieVersion !== expectedVersion) {\n return null\n }\n }\n\n return {\n session: sessionRecord as SessionShape,\n user: userRecord as UserShape,\n updatedAt,\n version: typeof payload.version === 'string' ? payload.version : undefined,\n }\n }\n\n const compactPayload = parseJsonSafely<{\n session: {\n session: SessionShape\n user: UserShape\n updatedAt: number\n version?: string\n }\n expiresAt: number\n signature: string\n }>(decodeBase64UrlToString(sessionData))\n\n if (!compactPayload) {\n return null\n }\n\n const expectedSignature = await signHmacBase64Url(\n secret,\n JSON.stringify({\n ...compactPayload.session,\n expiresAt: compactPayload.expiresAt,\n }),\n )\n\n if (expectedSignature !== compactPayload.signature) {\n return null\n }\n\n if (compactPayload.expiresAt <= Date.now()) {\n return null\n }\n\n const resolvedSession = compactPayload.session\n if (config?.version) {\n const cookieVersion = resolvedSession.version || '1'\n const expectedVersion =\n typeof config.version === 'string'\n ? config.version\n : await config.version(resolvedSession.session, resolvedSession.user)\n if (cookieVersion !== expectedVersion) {\n return null\n }\n }\n\n const sessionObject = asObject(resolvedSession.session)\n const userObject = asObject(resolvedSession.user)\n if (!sessionObject || !userObject) {\n return null\n }\n\n return {\n session: sessionObject as SessionShape,\n user: userObject as UserShape,\n updatedAt: resolvedSession.updatedAt,\n version: resolvedSession.version,\n }\n}\n\nexport {\n SESSION_COOKIE_PATTERNS,\n hasAuthSessionCookie,\n} from './session-cookie-detection.ts'\n\nexport {\n HOST_COOKIE_PREFIX,\n SECURE_COOKIE_PREFIX,\n createSessionStore,\n getAccountCookie,\n getChunkedCookie,\n parseCookies,\n parseSetCookieHeader,\n setCookieToHeader,\n setRequestCookie,\n splitSetCookieHeader,\n stripSecureCookiePrefix,\n toCookieOptions,\n}\n\nexport type {\n AthenaAuthCookie,\n AthenaAuthCookies,\n AthenaCookieContextRuntime,\n AthenaCookieOptions,\n AthenaCookiesOptions,\n AthenaGetCookieCacheConfig,\n}\n","import { getSessionCookie } from '../cookies/index.ts'\nimport type { BackendOption } from '../gateway/types.ts'\n\nexport type AthenaRequestHeaderProfile = 'gateway' | 'auth' | 'chat' | 'storage' | 'minimal'\n\nconst NO_CACHE_HEADER_VALUE = 'no-cache'\n\nconst API_KEY_HEADER_CANDIDATES = ['X-Athena-Key', 'x-athena-key', 'X-Api-Key', 'x-api-key', 'apikey'] as const\nconst ATHENA_KEY_HEADER_CANDIDATES = ['X-Athena-Key', 'x-athena-key'] as const\nconst SESSION_TOKEN_HEADER_CANDIDATES = ['X-Athena-Auth-Session-Token'] as const\nconst BEARER_MIRROR_HEADER_CANDIDATES = ['X-Athena-Auth-Bearer-Token'] as const\nconst CLIENT_HEADER_CANDIDATES = ['X-Athena-Client', 'x-athena-client'] as const\nconst PG_URI_HEADER_CANDIDATES = ['x-pg-uri'] as const\nconst JDBC_URI_HEADER_CANDIDATES = ['x-athena-jdbc-url', 'x-jdbc-url'] as const\n\ninterface AthenaRequestHeaderProfileRules {\n apiKeys: boolean\n routing: boolean\n authMirror: boolean\n authBearer: boolean\n contentType?: boolean\n accept?: boolean\n stripNullsDefault?: boolean\n}\n\nconst PROFILE_RULES: Record<AthenaRequestHeaderProfile, AthenaRequestHeaderProfileRules> = {\n gateway: { apiKeys: true, routing: true, authMirror: true, authBearer: false, contentType: true, stripNullsDefault: true },\n chat: { apiKeys: true, routing: true, authMirror: true, authBearer: true, accept: true },\n storage: { apiKeys: true, routing: true, authMirror: true, authBearer: false, contentType: true },\n auth: { apiKeys: true, routing: true, authMirror: false, authBearer: true, contentType: true },\n minimal: { apiKeys: false, routing: false, authMirror: false, authBearer: false },\n}\n\nexport interface BuildAthenaRequestHeadersInput {\n profile: AthenaRequestHeaderProfile\n sdkHeaderValue: string\n apiKey?: string | null\n client?: string | null\n userId?: string | null\n organizationId?: string | null\n backend?: BackendOption\n publishEvent?: string | null\n stripNulls?: boolean\n bearerToken?: string | null\n cookie?: string | null\n sessionToken?: string | null\n pgUri?: string | null\n jdbcUrl?: string | null\n forceNoCache?: boolean\n configHeaders?: Record<string, string>\n callHeaders?: Record<string, string>\n contentType?: string | null\n accept?: string | null\n}\n\n/** Shared config/call fields consumed by gateway, chat, auth, and `client.request(...)`. */\nexport interface AthenaRequestHeaderOverrideFields {\n apiKey?: string | null\n client?: string | null\n userId?: string | null\n organizationId?: string | null\n backend?: BackendOption\n publishEvent?: string | null\n stripNulls?: boolean\n bearerToken?: string | null\n cookie?: string | null\n sessionToken?: string | null\n pgUri?: string | null\n jdbcUrl?: string | null\n forceNoCache?: boolean\n headers?: Record<string, string>\n}\n\nexport type ResolvedRequestHeaderOverrides = Omit<\n BuildAthenaRequestHeadersInput,\n 'profile' | 'sdkHeaderValue' | 'contentType' | 'accept'\n>\n\nfunction normalizeHeaderValue(value?: string | null): string | undefined {\n return value ? value : undefined\n}\n\nfunction mergeExtraHeaders(\n configHeaders?: Record<string, string>,\n callHeaders?: Record<string, string>,\n): Record<string, string> {\n return { ...(configHeaders ?? {}), ...(callHeaders ?? {}) }\n}\n\nexport function hasHeaderIgnoreCase(\n headers: Record<string, string>,\n targetKey: string,\n): boolean {\n const normalizedTargetKey = targetKey.toLowerCase()\n return Object.keys(headers).some(key => key.toLowerCase() === normalizedTargetKey)\n}\n\nexport function resolveHeaderValue(\n headers: Record<string, string>,\n candidates: readonly string[],\n): string | undefined {\n for (const candidate of candidates) {\n const direct = normalizeHeaderValue(headers[candidate])\n if (direct) return direct\n }\n\n const loweredCandidates = new Set(candidates.map(candidate => candidate.toLowerCase()))\n for (const [key, value] of Object.entries(headers)) {\n if (!loweredCandidates.has(key.toLowerCase())) {\n continue\n }\n const normalized = normalizeHeaderValue(value)\n if (normalized) return normalized\n }\n\n return undefined\n}\n\nfunction isCacheControlHeaderName(name: string): boolean {\n return name.toLowerCase() === 'cache-control'\n}\n\nfunction normalizeBearerToken(value: string): string {\n const trimmed = value.trim()\n const match = trimmed.match(/^Bearer\\s+(.+)$/i)\n return match?.[1]?.trim() ?? trimmed\n}\n\nfunction resolveBearerTokenFromAuthorizationHeader(\n headers: Record<string, string>,\n): string | undefined {\n const authorization = resolveHeaderValue(headers, ['Authorization'])\n if (!authorization) {\n return undefined\n }\n\n const token = normalizeBearerToken(authorization)\n return token ? token : undefined\n}\n\nfunction resolveSessionTokenFromCookieHeader(\n headers: Record<string, string>,\n): string | undefined {\n const cookie = resolveHeaderValue(headers, ['Cookie'])\n if (!cookie) {\n return undefined\n }\n\n return getSessionCookie(new Headers({ cookie })) ?? undefined\n}\n\nfunction resolveBackendType(backend?: BackendOption): string | undefined {\n if (!backend) {\n return undefined\n }\n return typeof backend === 'string' ? backend : backend.type\n}\n\nexport function resolveRequestHeaderOverrides(\n config: AthenaRequestHeaderOverrideFields,\n options?: AthenaRequestHeaderOverrideFields,\n defaults?: Pick<AthenaRequestHeaderOverrideFields, 'client' | 'stripNulls'>,\n): ResolvedRequestHeaderOverrides {\n return {\n apiKey: options?.apiKey ?? config.apiKey,\n client: options?.client ?? config.client ?? defaults?.client,\n userId: options?.userId ?? config.userId,\n organizationId: options?.organizationId ?? config.organizationId,\n backend: options?.backend ?? config.backend,\n publishEvent: options?.publishEvent ?? config.publishEvent,\n stripNulls: options?.stripNulls ?? config.stripNulls ?? defaults?.stripNulls,\n bearerToken: options?.bearerToken ?? config.bearerToken,\n cookie: options?.cookie ?? config.cookie,\n sessionToken: options?.sessionToken ?? config.sessionToken,\n pgUri: options?.pgUri ?? config.pgUri,\n jdbcUrl: options?.jdbcUrl ?? config.jdbcUrl,\n forceNoCache: Boolean(config.forceNoCache || options?.forceNoCache),\n configHeaders: config.headers,\n callHeaders: options?.headers,\n }\n}\n\nexport function buildServiceRequestHeaders(\n profile: Exclude<AthenaRequestHeaderProfile, 'minimal'>,\n sdkHeaderValue: string,\n config: AthenaRequestHeaderOverrideFields,\n options?: AthenaRequestHeaderOverrideFields,\n extras?: Pick<BuildAthenaRequestHeadersInput, 'contentType' | 'accept'> & {\n client?: string | null\n stripNulls?: boolean\n },\n): Record<string, string> {\n const rules = PROFILE_RULES[profile]\n return buildAthenaRequestHeaders({\n profile,\n sdkHeaderValue,\n ...resolveRequestHeaderOverrides(config, options, {\n client: extras?.client ?? undefined,\n stripNulls: extras?.stripNulls ?? (rules.stripNullsDefault ? true : undefined),\n }),\n contentType: extras?.contentType ?? (rules.contentType ? 'application/json' : undefined),\n accept: extras?.accept ?? (rules.accept ? 'application/json' : undefined),\n })\n}\n\nexport function applyAthenaApiKeyHeaders(\n headers: Record<string, string>,\n apiKey?: string | null,\n): void {\n const resolvedApiKey = normalizeHeaderValue(apiKey)\n if (resolvedApiKey && !hasHeaderIgnoreCase(headers, 'X-Athena-Key')) {\n headers['X-Athena-Key'] = resolvedApiKey\n }\n}\n\nexport function applyAthenaAuthContextHeaders(\n headers: Record<string, string>,\n input: Pick<\n BuildAthenaRequestHeadersInput,\n 'bearerToken' | 'cookie' | 'sessionToken' | 'profile' | 'configHeaders' | 'callHeaders'\n >,\n): void {\n const mergedExtraHeaders = mergeExtraHeaders(input.configHeaders, input.callHeaders)\n const rules = PROFILE_RULES[input.profile]\n const explicitCookie = normalizeHeaderValue(input.cookie)\n if (explicitCookie) {\n mergedExtraHeaders.Cookie = explicitCookie\n }\n\n const explicitSessionToken =\n normalizeHeaderValue(input.sessionToken) ??\n resolveHeaderValue(mergedExtraHeaders, SESSION_TOKEN_HEADER_CANDIDATES)\n const derivedSessionToken =\n explicitSessionToken ?? resolveSessionTokenFromCookieHeader(mergedExtraHeaders)\n const cookieFromHeaders = resolveHeaderValue(mergedExtraHeaders, ['Cookie'])\n\n if (explicitCookie && !hasHeaderIgnoreCase(headers, 'Cookie')) {\n headers.Cookie = explicitCookie\n } else if (cookieFromHeaders && !hasHeaderIgnoreCase(headers, 'Cookie')) {\n headers.Cookie = cookieFromHeaders\n }\n\n const explicitBearerToken = (() => {\n const configured = normalizeHeaderValue(input.bearerToken)\n if (configured) {\n return normalizeBearerToken(configured)\n }\n const mirrored = resolveHeaderValue(mergedExtraHeaders, BEARER_MIRROR_HEADER_CANDIDATES)\n return mirrored ? normalizeBearerToken(mirrored) : undefined\n })()\n const derivedBearerToken =\n explicitBearerToken ?? resolveBearerTokenFromAuthorizationHeader(mergedExtraHeaders)\n\n if (rules.authBearer && derivedBearerToken && !hasHeaderIgnoreCase(headers, 'Authorization')) {\n headers.Authorization = `Bearer ${derivedBearerToken}`\n }\n\n if (rules.authMirror) {\n if (derivedSessionToken && !hasHeaderIgnoreCase(headers, 'X-Athena-Auth-Session-Token')) {\n headers['X-Athena-Auth-Session-Token'] = derivedSessionToken\n }\n if (derivedBearerToken && !hasHeaderIgnoreCase(headers, 'X-Athena-Auth-Bearer-Token')) {\n headers['X-Athena-Auth-Bearer-Token'] = derivedBearerToken\n }\n } else if (derivedSessionToken && !hasHeaderIgnoreCase(headers, 'X-Athena-Auth-Session-Token')) {\n headers['X-Athena-Auth-Session-Token'] = derivedSessionToken\n }\n}\n\nexport function applyAthenaPgUriHeaders(\n headers: Record<string, string>,\n input: Pick<BuildAthenaRequestHeadersInput, 'pgUri' | 'jdbcUrl' | 'configHeaders' | 'callHeaders'>,\n): void {\n const mergedExtraHeaders = mergeExtraHeaders(input.configHeaders, input.callHeaders)\n\n const pgUri =\n normalizeHeaderValue(input.pgUri) ??\n resolveHeaderValue(mergedExtraHeaders, PG_URI_HEADER_CANDIDATES)\n if (pgUri && !hasHeaderIgnoreCase(headers, 'x-pg-uri')) {\n headers['x-pg-uri'] = pgUri\n }\n\n const jdbcUrl =\n normalizeHeaderValue(input.jdbcUrl) ??\n resolveHeaderValue(mergedExtraHeaders, JDBC_URI_HEADER_CANDIDATES)\n if (jdbcUrl) {\n if (!hasHeaderIgnoreCase(headers, 'x-athena-jdbc-url')) {\n headers['x-athena-jdbc-url'] = jdbcUrl\n }\n if (!hasHeaderIgnoreCase(headers, 'x-jdbc-url')) {\n headers['x-jdbc-url'] = jdbcUrl\n }\n }\n}\n\n/**\n * Minimal gateway/data request headers used by many apps before they adopt\n * the full {@link buildAthenaRequestHeaders} profile model.\n *\n * Additive convenience — does not replace client-built headers. Prefer\n * `createClient({ client, key })` so the SDK sets these on every call.\n */\nexport function buildAthenaGatewayHeaders(input: {\n clientName?: string | null\n gatewayKey?: string | null\n headers?: Record<string, string | null | undefined>\n}): Record<string, string> {\n const trimmedClientName = input.clientName?.trim()\n const trimmedGatewayKey = input.gatewayKey?.trim()\n const merged: Record<string, string | null | undefined> = {\n ...(trimmedClientName\n ? {\n 'X-Athena-Client': trimmedClientName,\n }\n : {}),\n ...(trimmedGatewayKey\n ? {\n 'X-Api-Key': trimmedGatewayKey,\n 'X-Athena-Key': trimmedGatewayKey,\n }\n : {}),\n ...input.headers,\n }\n\n return Object.fromEntries(\n Object.entries(merged).flatMap(([key, value]) =>\n typeof value === 'string' && value.trim()\n ? ([[key, value.trim()]] as const)\n : [],\n ),\n )\n}\n\nexport function buildAthenaRequestHeaders(\n input: BuildAthenaRequestHeadersInput,\n): Record<string, string> {\n const forceNoCache = Boolean(input.forceNoCache)\n const mergedExtraHeaders = mergeExtraHeaders(input.configHeaders, input.callHeaders)\n const rules = PROFILE_RULES[input.profile]\n\n const headerClient = resolveHeaderValue(mergedExtraHeaders, CLIENT_HEADER_CANDIDATES)\n const finalClient = normalizeHeaderValue(input.client) ?? headerClient\n const finalApiKey =\n normalizeHeaderValue(input.apiKey) ??\n resolveHeaderValue(mergedExtraHeaders, API_KEY_HEADER_CANDIDATES)\n const finalAthenaKey =\n resolveHeaderValue(mergedExtraHeaders, ATHENA_KEY_HEADER_CANDIDATES) ?? finalApiKey\n\n const headers: Record<string, string> = {\n 'X-Athena-Sdk': input.sdkHeaderValue,\n }\n\n if (rules.contentType) {\n headers['Content-Type'] = input.contentType ?? 'application/json'\n }\n\n if (input.accept ?? rules.accept) {\n headers.Accept = input.accept ?? 'application/json'\n }\n\n if (rules.routing) {\n if (normalizeHeaderValue(input.userId)) {\n headers['X-User-Id'] = input.userId ?? ''\n }\n if (normalizeHeaderValue(input.organizationId)) {\n headers['X-Organization-Id'] = input.organizationId ?? ''\n }\n if (finalClient) {\n headers['X-Athena-Client'] = finalClient\n }\n\n const backendType = resolveBackendType(input.backend)\n if (backendType) {\n headers['X-Backend-Type'] = backendType\n }\n\n if (typeof input.stripNulls === 'boolean') {\n headers['X-Strip-Nulls'] = input.stripNulls ? 'true' : 'false'\n } else if (rules.stripNullsDefault) {\n headers['X-Strip-Nulls'] = 'true'\n }\n\n if (normalizeHeaderValue(input.publishEvent)) {\n headers['X-Publish-Event'] = input.publishEvent ?? ''\n }\n }\n\n if (rules.apiKeys && (finalApiKey || finalAthenaKey)) {\n applyAthenaApiKeyHeaders(headers, finalAthenaKey)\n }\n\n applyAthenaAuthContextHeaders(headers, input)\n applyAthenaPgUriHeaders(headers, input)\n\n const reservedClientHeaderKeys = new Set(CLIENT_HEADER_CANDIDATES.map(key => key.toLowerCase()))\n Object.entries(mergedExtraHeaders).forEach(([key, value]) => {\n if (reservedClientHeaderKeys.has(key.toLowerCase())) {\n return\n }\n if (forceNoCache && isCacheControlHeaderName(key)) {\n return\n }\n const normalized = normalizeHeaderValue(value)\n if (normalized) {\n headers[key] = normalized\n }\n })\n\n if (forceNoCache) {\n headers['Cache-Control'] = NO_CACHE_HEADER_VALUE\n }\n\n return headers\n}\n","import type {\n AthenaGatewayEndpointPath,\n AthenaGatewayErrorCode,\n AthenaGatewayErrorDetails,\n AthenaGatewayMethod,\n AthenaGatewayResponse,\n} from './types.js'\n\nexport interface AthenaGatewayErrorInput {\n code: AthenaGatewayErrorCode\n message: string\n status?: number\n endpoint?: AthenaGatewayEndpointPath\n method?: AthenaGatewayMethod\n requestId?: string\n hint?: string\n cause?: string\n}\n\n/**\n * Canonical error for gateway failures.\n * Holds request context and machine-readable classification.\n */\nexport class AthenaGatewayError extends Error {\n readonly code: AthenaGatewayErrorCode\n readonly status: number\n readonly endpoint?: AthenaGatewayEndpointPath\n readonly method?: AthenaGatewayMethod\n readonly requestId?: string\n readonly hint?: string\n readonly causeDetail?: string\n\n constructor(input: AthenaGatewayErrorInput) {\n super(input.message)\n this.name = 'AthenaGatewayError'\n this.code = input.code\n this.status = input.status ?? 0\n this.endpoint = input.endpoint\n this.method = input.method\n this.requestId = input.requestId\n this.hint = input.hint\n this.causeDetail = input.cause\n }\n\n toDetails(): AthenaGatewayErrorDetails {\n return {\n code: this.code,\n message: this.message,\n status: this.status,\n endpoint: this.endpoint,\n method: this.method,\n requestId: this.requestId,\n hint: this.hint,\n cause: this.causeDetail,\n }\n }\n\n static fromResponse<T>(\n response: AthenaGatewayResponse<T>,\n fallback: Omit<AthenaGatewayErrorInput, 'code' | 'message' | 'status'>,\n ) {\n const details = response.errorDetails\n if (details) {\n return new AthenaGatewayError({\n code: details.code,\n message: details.message,\n status: details.status,\n endpoint: details.endpoint ?? fallback.endpoint,\n method: details.method ?? fallback.method,\n requestId: details.requestId ?? fallback.requestId,\n hint: details.hint,\n cause: details.cause,\n })\n }\n\n return new AthenaGatewayError({\n code: 'HTTP_ERROR',\n message: response.error ?? 'Gateway request failed',\n status: response.status,\n endpoint: fallback.endpoint,\n method: fallback.method,\n requestId: fallback.requestId,\n })\n }\n}\n\nexport function isAthenaGatewayError(error: unknown): error is AthenaGatewayError {\n return error instanceof AthenaGatewayError\n}\n","import { AthenaGatewayError } from './errors.ts'\n\nexport const ATHENA_DEFAULT_BASE_URL = 'https://mirror2.athena-cluster.com'\n\nfunction describeReceivedValue(value: unknown): string {\n if (value === undefined) return 'undefined'\n if (value === null) return 'null'\n if (typeof value === 'string') {\n return value.trim().length > 0 ? JSON.stringify(value) : 'an empty string'\n }\n return `${typeof value} ${JSON.stringify(value)}`\n}\n\nfunction invalidBaseUrlError(message: string, hint: string): AthenaGatewayError {\n return new AthenaGatewayError({\n code: 'INVALID_URL',\n message,\n status: 0,\n hint,\n })\n}\n\nexport interface NormalizeAthenaGatewayBaseUrlOptions {\n defaultBaseUrl?: string\n label?: string\n}\n\nexport function normalizeAthenaGatewayBaseUrl(\n input: string | null | undefined,\n options: NormalizeAthenaGatewayBaseUrlOptions = {},\n): string {\n const label = options.label ?? 'Athena gateway base URL'\n const candidate = input ?? options.defaultBaseUrl\n\n if (candidate === undefined || candidate === null) {\n throw invalidBaseUrlError(\n `${label} must be a non-empty absolute http(s) URL. Received ${describeReceivedValue(input)}.`,\n 'Set ATHENA_URL in the explicit env object (or pass createClient({ url, key })) to a full URL such as \"https://mirror2.athena-cluster.com\".',\n )\n }\n\n const trimmed = candidate.trim()\n if (!trimmed) {\n throw invalidBaseUrlError(\n `${label} must be a non-empty absolute http(s) URL. Received ${describeReceivedValue(candidate)}.`,\n 'Set ATHENA_URL in the explicit env object (or pass createClient({ url, key })) to a full URL such as \"https://mirror2.athena-cluster.com\".',\n )\n }\n\n let parsed: URL\n try {\n parsed = new URL(trimmed)\n } catch {\n throw invalidBaseUrlError(\n `${label} must be a valid absolute http(s) URL. Received ${describeReceivedValue(candidate)}.`,\n 'Use a full URL including the protocol, for example \"https://mirror2.athena-cluster.com\".',\n )\n }\n\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw invalidBaseUrlError(\n `${label} must use http or https. Received ${JSON.stringify(trimmed)}.`,\n 'Use an Athena gateway URL such as \"https://mirror2.athena-cluster.com\".',\n )\n }\n\n if (parsed.search || parsed.hash) {\n throw invalidBaseUrlError(\n `${label} must not include query parameters or hash fragments. Received ${JSON.stringify(trimmed)}.`,\n 'Pass only the base URL. Endpoint paths such as \"/gateway/fetch\" are appended by the SDK.',\n )\n }\n\n return parsed.toString().replace(/\\/+$/, '')\n}\n\nexport function buildAthenaGatewayUrl(baseUrl: string, path: string): string {\n if (!path.startsWith('/')) {\n throw invalidBaseUrlError(\n `Athena gateway path must start with \"/\". Received ${JSON.stringify(path)}.`,\n 'Use a leading slash such as \"/gateway/fetch\" or \"/\".',\n )\n }\n\n return `${baseUrl}${path}`\n}\n","/**\n * Athena billing HTTP client for live `/billing/v1/*`, `/admin/billing/*`,\n * provider webhook, and `/debug/billing` routes.\n *\n * Methods map 1:1 onto the registered Actix handlers. Auth uses the static\n * Athena admin key (`X-Athena-Key` / configured API key) matching the server\n * `authorize_static_admin_key` gate.\n *\n * Contract spine: `billingSdkManifest` METHOD+path entries must match the\n * permanent Rust inventory `athena_billing::LIVE_HTTP_ROUTES`\n * (exported as `./live-http-routes.json`). Export with\n * `cargo run -p athena-billing --bin billing-contract-spine -- --write`.\n */\n\nimport { buildSdkHeaderValue } from '../sdk-version.ts'\nimport {\n buildAthenaRequestHeaders,\n hasHeaderIgnoreCase,\n} from '../utils/athena-request-headers.ts'\nimport { normalizeAthenaGatewayBaseUrl } from '../gateway/url.ts'\n\nconst SDK_NAME = 'xylex-group/athena-billing'\nconst SDK_HEADER_VALUE = buildSdkHeaderValue(SDK_NAME)\n\nexport type AthenaBillingHttpMethod = 'GET' | 'POST' | 'PATCH' | 'DELETE'\n\nexport type AthenaBillingJson =\n | null\n | boolean\n | number\n | string\n | AthenaBillingJson[]\n | { [key: string]: AthenaBillingJson }\n\nexport interface AthenaBillingCallOptions {\n headers?: Record<string, string>\n signal?: AbortSignal\n apiKey?: string | null\n}\n\nexport interface AthenaBillingClientConfig {\n baseUrl: string\n apiKey: string\n client?: string | null\n headers?: Record<string, string>\n fetchImpl?: typeof fetch\n}\n\nexport interface AthenaBillingEnvelope<T = unknown> {\n status?: string\n message?: string\n data: T\n}\n\nexport class AthenaBillingError extends Error {\n status: number\n endpoint: string\n method: string\n body: unknown\n\n constructor(input: {\n message: string\n status: number\n endpoint: string\n method: string\n body: unknown\n }) {\n super(input.message)\n this.name = 'AthenaBillingError'\n this.status = input.status\n this.endpoint = input.endpoint\n this.method = input.method\n this.body = input.body\n }\n}\n\nexport interface BillingConnectionRefInput {\n connectionId: string\n clientName?: string\n}\n\nexport interface BillingListQuery extends BillingConnectionRefInput {\n cursor?: string\n source?: 'provider' | 'persistence' | string\n limit?: number\n offset?: number\n}\n\nexport interface BillingEnsureCustomerInput extends BillingConnectionRefInput {\n email?: string | null\n name?: string | null\n metadata?: Record<string, AthenaBillingJson>\n idempotencyKey: string\n}\n\nexport interface BillingUpdateCustomerInput extends BillingConnectionRefInput {\n email?: string | null\n name?: string | null\n}\n\nexport interface BillingCreateConnectionInput {\n ownerKind: string\n ownerId: string\n provider: string\n mode?: string\n status?: string\n credentialKind?: string\n providerAccountId: string\n providerProfileId?: string | null\n scopes?: string[]\n config?: Record<string, AthenaBillingJson>\n metadata?: Record<string, AthenaBillingJson>\n}\n\nexport interface BillingUpdateConnectionInput {\n status?: string\n mode?: string\n credentialKind?: string\n providerAccountId?: string\n providerProfileId?: string | null\n scopes?: string[]\n config?: Record<string, AthenaBillingJson>\n metadata?: Record<string, AthenaBillingJson>\n}\n\nexport interface BillingReconcileInput {\n resourceKind: string\n resourceId: string\n customerId?: string | null\n}\n\nexport interface BillingProvisionSinksInput {\n targetSchema?: string\n instance?: string\n}\n\nexport const billingSdkManifest = {\n namespace: 'billing',\n envelopeKind: 'athena',\n methods: [\n { name: 'getCapabilities', method: 'GET', path: '/billing/v1/capabilities' },\n { name: 'createCheckout', method: 'POST', path: '/billing/v1/checkouts' },\n { name: 'listProducts', method: 'GET', path: '/billing/v1/products' },\n { name: 'listPrices', method: 'GET', path: '/billing/v1/prices' },\n { name: 'listCustomers', method: 'GET', path: '/billing/v1/customers' },\n { name: 'createCustomer', method: 'POST', path: '/billing/v1/customers' },\n { name: 'getCustomer', method: 'GET', path: '/billing/v1/customers/{id}' },\n { name: 'updateCustomer', method: 'PATCH', path: '/billing/v1/customers/{id}' },\n { name: 'deleteCustomer', method: 'DELETE', path: '/billing/v1/customers/{id}' },\n { name: 'listPayments', method: 'GET', path: '/billing/v1/payments' },\n { name: 'createPayment', method: 'POST', path: '/billing/v1/payments' },\n { name: 'getPayment', method: 'GET', path: '/billing/v1/payments/{id}' },\n { name: 'cancelPayment', method: 'POST', path: '/billing/v1/payments/{id}/cancel' },\n { name: 'listPaymentLinks', method: 'GET', path: '/billing/v1/payment-links' },\n { name: 'createPaymentLink', method: 'POST', path: '/billing/v1/payment-links' },\n { name: 'getPaymentLink', method: 'GET', path: '/billing/v1/payment-links/{id}' },\n { name: 'updatePaymentLink', method: 'PATCH', path: '/billing/v1/payment-links/{id}' },\n { name: 'deletePaymentLink', method: 'DELETE', path: '/billing/v1/payment-links/{id}' },\n { name: 'listRefunds', method: 'GET', path: '/billing/v1/refunds' },\n { name: 'createRefund', method: 'POST', path: '/billing/v1/refunds' },\n { name: 'getRefund', method: 'GET', path: '/billing/v1/refunds/{id}' },\n { name: 'cancelRefund', method: 'POST', path: '/billing/v1/refunds/{id}/cancel' },\n { name: 'listSubscriptions', method: 'GET', path: '/billing/v1/subscriptions' },\n { name: 'createSubscription', method: 'POST', path: '/billing/v1/subscriptions' },\n { name: 'getSubscription', method: 'GET', path: '/billing/v1/subscriptions/{id}' },\n { name: 'updateSubscription', method: 'PATCH', path: '/billing/v1/subscriptions/{id}' },\n { name: 'cancelSubscription', method: 'POST', path: '/billing/v1/subscriptions/{id}/cancel' },\n { name: 'listInvoices', method: 'GET', path: '/billing/v1/invoices' },\n { name: 'getInvoice', method: 'GET', path: '/billing/v1/invoices/{id}' },\n { name: 'listWebhooks', method: 'GET', path: '/billing/v1/webhooks' },\n { name: 'createWebhook', method: 'POST', path: '/billing/v1/webhooks' },\n { name: 'getWebhook', method: 'GET', path: '/billing/v1/webhooks/{id}' },\n { name: 'updateWebhook', method: 'PATCH', path: '/billing/v1/webhooks/{id}' },\n { name: 'deleteWebhook', method: 'DELETE', path: '/billing/v1/webhooks/{id}' },\n { name: 'testWebhook', method: 'POST', path: '/billing/v1/webhooks/{id}/test' },\n {\n name: 'listConnections',\n method: 'GET',\n path: '/admin/billing/clients/{client_name}/connections',\n },\n {\n name: 'createConnection',\n method: 'POST',\n path: '/admin/billing/clients/{client_name}/connections',\n },\n {\n name: 'getConnection',\n method: 'GET',\n path: '/admin/billing/clients/{client_name}/connections/{connection_id}',\n },\n {\n name: 'updateConnection',\n method: 'PATCH',\n path: '/admin/billing/clients/{client_name}/connections/{connection_id}',\n },\n {\n name: 'deleteConnection',\n method: 'DELETE',\n path: '/admin/billing/clients/{client_name}/connections/{connection_id}',\n },\n {\n name: 'reconcileDocument',\n method: 'POST',\n path: '/admin/billing/clients/{client_name}/connections/{connection_id}/reconcile',\n },\n {\n name: 'listWebhookEvents',\n method: 'GET',\n path: '/admin/billing/clients/{client_name}/webhook-events',\n },\n {\n name: 'provisionWebhookSinks',\n method: 'POST',\n path: '/admin/billing/clients/{client_name}/webhook-sinks/provision',\n },\n { name: 'listGrants', method: 'GET', path: '/admin/billing/grants' },\n { name: 'listProviders', method: 'GET', path: '/admin/billing/providers' },\n {\n name: 'listSinkHelpers',\n method: 'GET',\n path: '/admin/webhook-sinks/helpers/billing',\n },\n {\n name: 'ingestProviderWebhook',\n method: 'POST',\n path: '/billing/providers/{provider}/clients/{client_name}/connections/{connection_id}/webhook',\n },\n { name: 'getDebugBilling', method: 'GET', path: '/debug/billing' },\n ],\n} as const\n\nfunction withPathParam(path: string, name: string, value: string): string {\n return path.replace(`{${name}}`, encodeURIComponent(value))\n}\n\nfunction appendQuery(\n path: string,\n query?: Record<string, string | number | boolean | null | undefined>,\n): string {\n if (!query) return path\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue\n params.set(key, String(value))\n }\n const serialized = params.toString()\n return serialized ? `${path}?${serialized}` : path\n}\n\nfunction connectionQuery(input: BillingListQuery | BillingConnectionRefInput): Record<string, string> {\n const query: Record<string, string> = {\n connectionId: input.connectionId,\n }\n if (input.clientName) query.clientName = input.clientName\n if ('cursor' in input && input.cursor) query.cursor = input.cursor\n if ('source' in input && input.source) query.source = input.source\n if ('limit' in input && input.limit !== undefined) query.limit = String(input.limit)\n if ('offset' in input && input.offset !== undefined) query.offset = String(input.offset)\n return query\n}\n\nfunction parseEnvelopeData<T>(body: unknown): T {\n if (body && typeof body === 'object' && 'data' in body) {\n return (body as AthenaBillingEnvelope<T>).data\n }\n return body as T\n}\n\nexport interface AthenaBillingModule {\n getCapabilities(input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n createCheckout(body: Record<string, unknown>, options?: AthenaBillingCallOptions): Promise<unknown>\n listProducts(input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listPrices(\n input: BillingConnectionRefInput & { productId?: string },\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n listCustomers(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createCustomer(input: BillingEnsureCustomerInput, options?: AthenaBillingCallOptions): Promise<unknown>\n getCustomer(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n updateCustomer(\n id: string,\n input: BillingUpdateCustomerInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n deleteCustomer(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listPayments(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createPayment(body: Record<string, unknown>, options?: AthenaBillingCallOptions): Promise<unknown>\n getPayment(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n cancelPayment(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listPaymentLinks(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createPaymentLink(body: Record<string, unknown>, options?: AthenaBillingCallOptions): Promise<unknown>\n getPaymentLink(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n updatePaymentLink(\n id: string,\n body: Record<string, unknown>,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n deletePaymentLink(\n id: string,\n input: BillingConnectionRefInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n listRefunds(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createRefund(body: Record<string, unknown>, options?: AthenaBillingCallOptions): Promise<unknown>\n getRefund(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n cancelRefund(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listSubscriptions(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createSubscription(body: Record<string, unknown>, options?: AthenaBillingCallOptions): Promise<unknown>\n getSubscription(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n updateSubscription(\n id: string,\n body: Record<string, unknown>,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n cancelSubscription(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listInvoices(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n getInvoice(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listWebhooks(input: BillingListQuery, options?: AthenaBillingCallOptions): Promise<unknown>\n createWebhook(\n input: BillingConnectionRefInput,\n body: Record<string, unknown>,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n getWebhook(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n updateWebhook(\n id: string,\n input: BillingConnectionRefInput,\n body: Record<string, unknown>,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n deleteWebhook(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n testWebhook(id: string, input: BillingConnectionRefInput, options?: AthenaBillingCallOptions): Promise<unknown>\n listConnections(clientName: string, options?: AthenaBillingCallOptions): Promise<unknown>\n createConnection(\n clientName: string,\n input: BillingCreateConnectionInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n getConnection(\n clientName: string,\n connectionId: string,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n updateConnection(\n clientName: string,\n connectionId: string,\n input: BillingUpdateConnectionInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n deleteConnection(\n clientName: string,\n connectionId: string,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n reconcileDocument(\n clientName: string,\n connectionId: string,\n input: BillingReconcileInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n listWebhookEvents(clientName: string, options?: AthenaBillingCallOptions): Promise<unknown>\n provisionWebhookSinks(\n clientName: string,\n input?: BillingProvisionSinksInput,\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n listGrants(options?: AthenaBillingCallOptions): Promise<unknown>\n listProviders(options?: AthenaBillingCallOptions): Promise<unknown>\n listSinkHelpers(\n query?: { targetSchema?: string; instance?: string },\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n ingestProviderWebhook(\n input: {\n provider: string\n clientName: string\n connectionId: string\n body: BodyInit | Record<string, unknown> | string\n signatureHeaders?: Record<string, string>\n },\n options?: AthenaBillingCallOptions,\n ): Promise<unknown>\n getDebugBilling(jwtSecret: string, options?: AthenaBillingCallOptions): Promise<string>\n}\n\nexport function createBillingModule(config: AthenaBillingClientConfig): AthenaBillingModule {\n const baseUrl = normalizeAthenaGatewayBaseUrl(config.baseUrl, {\n label: 'Athena billing base URL',\n })\n const fetchImpl = config.fetchImpl ?? globalThis.fetch.bind(globalThis)\n\n async function call<T>(\n method: AthenaBillingHttpMethod,\n path: string,\n body?: unknown,\n options?: AthenaBillingCallOptions,\n responseType: 'json' | 'text' = 'json',\n ): Promise<T> {\n const headers = buildAthenaRequestHeaders({\n profile: 'gateway',\n sdkHeaderValue: SDK_HEADER_VALUE,\n apiKey: options?.apiKey ?? config.apiKey,\n client: config.client,\n configHeaders: {\n ...(config.headers ?? {}),\n },\n callHeaders: options?.headers,\n contentType: 'application/json',\n })\n\n let requestBody: BodyInit | undefined\n if (body !== undefined && body !== null) {\n if (\n typeof body === 'string' ||\n body instanceof Blob ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n body instanceof FormData ||\n body instanceof URLSearchParams\n ) {\n requestBody = body as BodyInit\n } else {\n requestBody = JSON.stringify(body)\n if (!hasHeaderIgnoreCase(headers, 'Content-Type')) {\n headers['Content-Type'] = 'application/json'\n }\n }\n }\n\n const targetUrl = `${baseUrl}${path.startsWith('/') ? path : `/${path}`}`\n const response = await fetchImpl(targetUrl, {\n method,\n headers,\n body: requestBody,\n signal: options?.signal,\n })\n\n if (responseType === 'text') {\n const text = await response.text()\n if (!response.ok) {\n throw new AthenaBillingError({\n message: `Billing request failed (${response.status})`,\n status: response.status,\n endpoint: path,\n method,\n body: text,\n })\n }\n return text as T\n }\n\n const rawText = await response.text()\n let parsed: unknown = rawText\n if (rawText) {\n try {\n parsed = JSON.parse(rawText)\n } catch {\n parsed = rawText\n }\n } else {\n parsed = null\n }\n\n if (!response.ok) {\n const message =\n parsed &&\n typeof parsed === 'object' &&\n 'message' in parsed &&\n typeof (parsed as { message: unknown }).message === 'string'\n ? (parsed as { message: string }).message\n : `Billing request failed (${response.status})`\n throw new AthenaBillingError({\n message,\n status: response.status,\n endpoint: path,\n method,\n body: parsed,\n })\n }\n\n return parseEnvelopeData<T>(parsed)\n }\n\n return {\n getCapabilities(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/capabilities', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createCheckout(body, options) {\n return call('POST', '/billing/v1/checkouts', body, options)\n },\n listProducts(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/products', connectionQuery(input)),\n undefined,\n options,\n )\n },\n listPrices(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/prices', {\n ...connectionQuery(input),\n ...(input.productId ? { productId: input.productId } : {}),\n }),\n undefined,\n options,\n )\n },\n listCustomers(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/customers', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createCustomer(input, options) {\n return call(\n 'POST',\n '/billing/v1/customers',\n {\n connectionId: input.connectionId,\n clientName: input.clientName,\n email: input.email,\n name: input.name,\n metadata: input.metadata ?? {},\n idempotencyKey: input.idempotencyKey,\n },\n options,\n )\n },\n getCustomer(id, input, options) {\n return call(\n 'GET',\n appendQuery(\n withPathParam('/billing/v1/customers/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n updateCustomer(id, input, options) {\n return call(\n 'PATCH',\n withPathParam('/billing/v1/customers/{id}', 'id', id),\n {\n connectionId: input.connectionId,\n clientName: input.clientName,\n email: input.email,\n name: input.name,\n },\n options,\n )\n },\n deleteCustomer(id, input, options) {\n return call(\n 'DELETE',\n appendQuery(\n withPathParam('/billing/v1/customers/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n listPayments(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/payments', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createPayment(body, options) {\n return call('POST', '/billing/v1/payments', body, options)\n },\n getPayment(id, input, options) {\n return call(\n 'GET',\n appendQuery(\n withPathParam('/billing/v1/payments/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n cancelPayment(id, input, options) {\n return call(\n 'POST',\n appendQuery(\n withPathParam('/billing/v1/payments/{id}/cancel', 'id', id),\n connectionQuery(input),\n ),\n {},\n options,\n )\n },\n listPaymentLinks(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/payment-links', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createPaymentLink(body, options) {\n return call('POST', '/billing/v1/payment-links', body, options)\n },\n getPaymentLink(id, input, options) {\n return call(\n 'GET',\n appendQuery(\n withPathParam('/billing/v1/payment-links/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n updatePaymentLink(id, body, options) {\n return call(\n 'PATCH',\n withPathParam('/billing/v1/payment-links/{id}', 'id', id),\n body,\n options,\n )\n },\n deletePaymentLink(id, input, options) {\n return call(\n 'DELETE',\n appendQuery(\n withPathParam('/billing/v1/payment-links/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n listRefunds(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/refunds', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createRefund(body, options) {\n return call('POST', '/billing/v1/refunds', body, options)\n },\n getRefund(id, input, options) {\n return call(\n 'GET',\n appendQuery(withPathParam('/billing/v1/refunds/{id}', 'id', id), connectionQuery(input)),\n undefined,\n options,\n )\n },\n cancelRefund(id, input, options) {\n return call(\n 'POST',\n appendQuery(withPathParam('/billing/v1/refunds/{id}/cancel', 'id', id), connectionQuery(input)),\n {},\n options,\n )\n },\n listSubscriptions(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/subscriptions', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createSubscription(body, options) {\n return call('POST', '/billing/v1/subscriptions', body, options)\n },\n getSubscription(id, input, options) {\n return call(\n 'GET',\n appendQuery(\n withPathParam('/billing/v1/subscriptions/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n updateSubscription(id, body, options) {\n return call(\n 'PATCH',\n withPathParam('/billing/v1/subscriptions/{id}', 'id', id),\n body,\n options,\n )\n },\n cancelSubscription(id, input, options) {\n return call(\n 'POST',\n appendQuery(\n withPathParam('/billing/v1/subscriptions/{id}/cancel', 'id', id),\n connectionQuery(input),\n ),\n {},\n options,\n )\n },\n listInvoices(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/invoices', connectionQuery(input)),\n undefined,\n options,\n )\n },\n getInvoice(id, input, options) {\n return call(\n 'GET',\n appendQuery(\n withPathParam('/billing/v1/invoices/{id}', 'id', id),\n connectionQuery(input),\n ),\n undefined,\n options,\n )\n },\n listWebhooks(input, options) {\n return call(\n 'GET',\n appendQuery('/billing/v1/webhooks', connectionQuery(input)),\n undefined,\n options,\n )\n },\n createWebhook(input, body, options) {\n return call(\n 'POST',\n appendQuery('/billing/v1/webhooks', connectionQuery(input)),\n body,\n options,\n )\n },\n getWebhook(id, input, options) {\n return call(\n 'GET',\n appendQuery(withPathParam('/billing/v1/webhooks/{id}', 'id', id), connectionQuery(input)),\n undefined,\n options,\n )\n },\n updateWebhook(id, input, body, options) {\n return call(\n 'PATCH',\n appendQuery(withPathParam('/billing/v1/webhooks/{id}', 'id', id), connectionQuery(input)),\n body,\n options,\n )\n },\n deleteWebhook(id, input, options) {\n return call(\n 'DELETE',\n appendQuery(withPathParam('/billing/v1/webhooks/{id}', 'id', id), connectionQuery(input)),\n undefined,\n options,\n )\n },\n testWebhook(id, input, options) {\n return call(\n 'POST',\n appendQuery(\n withPathParam('/billing/v1/webhooks/{id}/test', 'id', id),\n connectionQuery(input),\n ),\n {},\n options,\n )\n },\n listConnections(clientName, options) {\n return call(\n 'GET',\n withPathParam('/admin/billing/clients/{client_name}/connections', 'client_name', clientName),\n undefined,\n options,\n )\n },\n createConnection(clientName, input, options) {\n return call(\n 'POST',\n withPathParam('/admin/billing/clients/{client_name}/connections', 'client_name', clientName),\n {\n ownerKind: input.ownerKind,\n ownerId: input.ownerId,\n provider: input.provider,\n mode: input.mode,\n status: input.status,\n credentialKind: input.credentialKind,\n providerAccountId: input.providerAccountId,\n providerProfileId: input.providerProfileId,\n scopes: input.scopes,\n config: input.config,\n metadata: input.metadata,\n },\n options,\n )\n },\n getConnection(clientName, connectionId, options) {\n return call(\n 'GET',\n withPathParam(\n withPathParam(\n '/admin/billing/clients/{client_name}/connections/{connection_id}',\n 'client_name',\n clientName,\n ),\n 'connection_id',\n connectionId,\n ),\n undefined,\n options,\n )\n },\n updateConnection(clientName, connectionId, input, options) {\n return call(\n 'PATCH',\n withPathParam(\n withPathParam(\n '/admin/billing/clients/{client_name}/connections/{connection_id}',\n 'client_name',\n clientName,\n ),\n 'connection_id',\n connectionId,\n ),\n input,\n options,\n )\n },\n deleteConnection(clientName, connectionId, options) {\n return call(\n 'DELETE',\n withPathParam(\n withPathParam(\n '/admin/billing/clients/{client_name}/connections/{connection_id}',\n 'client_name',\n clientName,\n ),\n 'connection_id',\n connectionId,\n ),\n undefined,\n options,\n )\n },\n reconcileDocument(clientName, connectionId, input, options) {\n return call(\n 'POST',\n withPathParam(\n withPathParam(\n '/admin/billing/clients/{client_name}/connections/{connection_id}/reconcile',\n 'client_name',\n clientName,\n ),\n 'connection_id',\n connectionId,\n ),\n {\n resourceKind: input.resourceKind,\n resourceId: input.resourceId,\n customerId: input.customerId,\n },\n options,\n )\n },\n listWebhookEvents(clientName, options) {\n return call(\n 'GET',\n withPathParam(\n '/admin/billing/clients/{client_name}/webhook-events',\n 'client_name',\n clientName,\n ),\n undefined,\n options,\n )\n },\n provisionWebhookSinks(clientName, input, options) {\n return call(\n 'POST',\n appendQuery(\n withPathParam(\n '/admin/billing/clients/{client_name}/webhook-sinks/provision',\n 'client_name',\n clientName,\n ),\n {\n targetSchema: input?.targetSchema,\n instance: input?.instance,\n },\n ),\n {},\n options,\n )\n },\n listGrants(options) {\n return call('GET', '/admin/billing/grants', undefined, options)\n },\n listProviders(options) {\n return call('GET', '/admin/billing/providers', undefined, options)\n },\n listSinkHelpers(query, options) {\n return call(\n 'GET',\n appendQuery('/admin/webhook-sinks/helpers/billing', {\n targetSchema: query?.targetSchema,\n instance: query?.instance,\n }),\n undefined,\n options,\n )\n },\n ingestProviderWebhook(input, options) {\n const path = withPathParam(\n withPathParam(\n withPathParam(\n '/billing/providers/{provider}/clients/{client_name}/connections/{connection_id}/webhook',\n 'provider',\n input.provider,\n ),\n 'client_name',\n input.clientName,\n ),\n 'connection_id',\n input.connectionId,\n )\n return call('POST', path, input.body, {\n ...options,\n headers: {\n ...(options?.headers ?? {}),\n ...(input.signatureHeaders ?? {}),\n },\n })\n },\n getDebugBilling(jwtSecret, options) {\n return call(\n 'GET',\n appendQuery('/debug/billing', { jwt_secret: jwtSecret }),\n undefined,\n options,\n 'text',\n )\n },\n }\n}\n","{\n \"consumers\": [\n \"openapi.yaml\",\n \"openapi.json\",\n \"packages/athena-js billingSdkManifest\",\n \"tests/billing_contract_spine.rs\"\n ],\n \"description\": \"Live Athena billing HTTP surface. Owned by athena_billing::live_http_routes (Rust). Export with: cargo run -p athena-billing --bin billing-contract-spine -- --write\",\n \"domain\": \"billing\",\n \"routes\": [\n {\n \"method\": \"GET\",\n \"path\": \"/admin/billing/clients/{client_name}/connections\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/admin/billing/clients/{client_name}/connections\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"DELETE\",\n \"path\": \"/admin/billing/clients/{client_name}/connections/{connection_id}\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/admin/billing/clients/{client_name}/connections/{connection_id}\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"PATCH\",\n \"path\": \"/admin/billing/clients/{client_name}/connections/{connection_id}\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/admin/billing/clients/{client_name}/connections/{connection_id}/reconcile\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/admin/billing/clients/{client_name}/webhook-events\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/admin/billing/clients/{client_name}/webhook-sinks/provision\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/admin/billing/grants\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/admin/billing/providers\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/admin/webhook-sinks/helpers/billing\",\n \"surface\": \"admin\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/providers/{provider}/clients/{client_name}/connections/{connection_id}/webhook\",\n \"surface\": \"providerWebhook\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/capabilities\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/checkouts\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/products\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/prices\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/customers\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/customers\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"DELETE\",\n \"path\": \"/billing/v1/customers/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/customers/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"PATCH\",\n \"path\": \"/billing/v1/customers/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/invoices\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/invoices/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/payment-links\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/payment-links\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"DELETE\",\n \"path\": \"/billing/v1/payment-links/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/payment-links/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"PATCH\",\n \"path\": \"/billing/v1/payment-links/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/payments\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/payments\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/payments/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/payments/{id}/cancel\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/refunds\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/refunds\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/refunds/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/refunds/{id}/cancel\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/subscriptions\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/subscriptions\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/subscriptions/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"PATCH\",\n \"path\": \"/billing/v1/subscriptions/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/subscriptions/{id}/cancel\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/webhooks\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/webhooks\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"DELETE\",\n \"path\": \"/billing/v1/webhooks/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/billing/v1/webhooks/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"PATCH\",\n \"path\": \"/billing/v1/webhooks/{id}\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"POST\",\n \"path\": \"/billing/v1/webhooks/{id}/test\",\n \"surface\": \"billingV1\"\n },\n {\n \"method\": \"GET\",\n \"path\": \"/debug/billing\",\n \"surface\": \"debug\"\n }\n ],\n \"schemaVersion\": 1,\n \"sourceOfTruth\": \"crates/athena-billing/src/live_http_routes.rs\",\n \"sources\": [\n \"src/api/billing.rs\",\n \"src/api/billing_v1/**\",\n \"src/api/debug/billing.rs\"\n ]\n}\n"]}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
export { A as AthenaBillingCallOptions, a as AthenaBillingClientConfig, f as AthenaBillingEnvelope, b as AthenaBillingError, g as AthenaBillingHttpMethod, h as AthenaBillingJson, c as AthenaBillingModule, B as BillingConnectionRefInput, i as BillingCreateConnectionInput, j as BillingEnsureCustomerInput, k as BillingListQuery, l as BillingProvisionSinksInput, m as BillingReconcileInput, n as BillingUpdateConnectionInput, o as BillingUpdateCustomerInput, d as billingSdkManifest, e as createBillingModule } from './module-C_ab-MM1.cjs';
|
|
2
|
+
|
|
3
|
+
var consumers = [
|
|
4
|
+
"openapi.yaml",
|
|
5
|
+
"openapi.json",
|
|
6
|
+
"packages/athena-js billingSdkManifest",
|
|
7
|
+
"tests/billing_contract_spine.rs"
|
|
8
|
+
];
|
|
9
|
+
var description = "Live Athena billing HTTP surface. Owned by athena_billing::live_http_routes (Rust). Export with: cargo run -p athena-billing --bin billing-contract-spine -- --write";
|
|
10
|
+
var domain = "billing";
|
|
11
|
+
var routes = [
|
|
12
|
+
{
|
|
13
|
+
method: "GET",
|
|
14
|
+
path: "/admin/billing/clients/{client_name}/connections",
|
|
15
|
+
surface: "admin"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
method: "POST",
|
|
19
|
+
path: "/admin/billing/clients/{client_name}/connections",
|
|
20
|
+
surface: "admin"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
method: "DELETE",
|
|
24
|
+
path: "/admin/billing/clients/{client_name}/connections/{connection_id}",
|
|
25
|
+
surface: "admin"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
method: "GET",
|
|
29
|
+
path: "/admin/billing/clients/{client_name}/connections/{connection_id}",
|
|
30
|
+
surface: "admin"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
method: "PATCH",
|
|
34
|
+
path: "/admin/billing/clients/{client_name}/connections/{connection_id}",
|
|
35
|
+
surface: "admin"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
method: "POST",
|
|
39
|
+
path: "/admin/billing/clients/{client_name}/connections/{connection_id}/reconcile",
|
|
40
|
+
surface: "admin"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
method: "GET",
|
|
44
|
+
path: "/admin/billing/clients/{client_name}/webhook-events",
|
|
45
|
+
surface: "admin"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
method: "POST",
|
|
49
|
+
path: "/admin/billing/clients/{client_name}/webhook-sinks/provision",
|
|
50
|
+
surface: "admin"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
method: "GET",
|
|
54
|
+
path: "/admin/billing/grants",
|
|
55
|
+
surface: "admin"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
method: "GET",
|
|
59
|
+
path: "/admin/billing/providers",
|
|
60
|
+
surface: "admin"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
method: "GET",
|
|
64
|
+
path: "/admin/webhook-sinks/helpers/billing",
|
|
65
|
+
surface: "admin"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
method: "POST",
|
|
69
|
+
path: "/billing/providers/{provider}/clients/{client_name}/connections/{connection_id}/webhook",
|
|
70
|
+
surface: "providerWebhook"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
method: "GET",
|
|
74
|
+
path: "/billing/v1/capabilities",
|
|
75
|
+
surface: "billingV1"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
method: "POST",
|
|
79
|
+
path: "/billing/v1/checkouts",
|
|
80
|
+
surface: "billingV1"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
method: "GET",
|
|
84
|
+
path: "/billing/v1/products",
|
|
85
|
+
surface: "billingV1"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
method: "GET",
|
|
89
|
+
path: "/billing/v1/prices",
|
|
90
|
+
surface: "billingV1"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
method: "GET",
|
|
94
|
+
path: "/billing/v1/customers",
|
|
95
|
+
surface: "billingV1"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
method: "POST",
|
|
99
|
+
path: "/billing/v1/customers",
|
|
100
|
+
surface: "billingV1"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
method: "DELETE",
|
|
104
|
+
path: "/billing/v1/customers/{id}",
|
|
105
|
+
surface: "billingV1"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
method: "GET",
|
|
109
|
+
path: "/billing/v1/customers/{id}",
|
|
110
|
+
surface: "billingV1"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
method: "PATCH",
|
|
114
|
+
path: "/billing/v1/customers/{id}",
|
|
115
|
+
surface: "billingV1"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
method: "GET",
|
|
119
|
+
path: "/billing/v1/invoices",
|
|
120
|
+
surface: "billingV1"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
method: "GET",
|
|
124
|
+
path: "/billing/v1/invoices/{id}",
|
|
125
|
+
surface: "billingV1"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
method: "GET",
|
|
129
|
+
path: "/billing/v1/payment-links",
|
|
130
|
+
surface: "billingV1"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
method: "POST",
|
|
134
|
+
path: "/billing/v1/payment-links",
|
|
135
|
+
surface: "billingV1"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
method: "DELETE",
|
|
139
|
+
path: "/billing/v1/payment-links/{id}",
|
|
140
|
+
surface: "billingV1"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
method: "GET",
|
|
144
|
+
path: "/billing/v1/payment-links/{id}",
|
|
145
|
+
surface: "billingV1"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
method: "PATCH",
|
|
149
|
+
path: "/billing/v1/payment-links/{id}",
|
|
150
|
+
surface: "billingV1"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
method: "GET",
|
|
154
|
+
path: "/billing/v1/payments",
|
|
155
|
+
surface: "billingV1"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
method: "POST",
|
|
159
|
+
path: "/billing/v1/payments",
|
|
160
|
+
surface: "billingV1"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
method: "GET",
|
|
164
|
+
path: "/billing/v1/payments/{id}",
|
|
165
|
+
surface: "billingV1"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
method: "POST",
|
|
169
|
+
path: "/billing/v1/payments/{id}/cancel",
|
|
170
|
+
surface: "billingV1"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
method: "GET",
|
|
174
|
+
path: "/billing/v1/refunds",
|
|
175
|
+
surface: "billingV1"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
method: "POST",
|
|
179
|
+
path: "/billing/v1/refunds",
|
|
180
|
+
surface: "billingV1"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
method: "GET",
|
|
184
|
+
path: "/billing/v1/refunds/{id}",
|
|
185
|
+
surface: "billingV1"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
method: "POST",
|
|
189
|
+
path: "/billing/v1/refunds/{id}/cancel",
|
|
190
|
+
surface: "billingV1"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
method: "GET",
|
|
194
|
+
path: "/billing/v1/subscriptions",
|
|
195
|
+
surface: "billingV1"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
method: "POST",
|
|
199
|
+
path: "/billing/v1/subscriptions",
|
|
200
|
+
surface: "billingV1"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
method: "GET",
|
|
204
|
+
path: "/billing/v1/subscriptions/{id}",
|
|
205
|
+
surface: "billingV1"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
method: "PATCH",
|
|
209
|
+
path: "/billing/v1/subscriptions/{id}",
|
|
210
|
+
surface: "billingV1"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
method: "POST",
|
|
214
|
+
path: "/billing/v1/subscriptions/{id}/cancel",
|
|
215
|
+
surface: "billingV1"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
method: "GET",
|
|
219
|
+
path: "/billing/v1/webhooks",
|
|
220
|
+
surface: "billingV1"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
method: "POST",
|
|
224
|
+
path: "/billing/v1/webhooks",
|
|
225
|
+
surface: "billingV1"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
method: "DELETE",
|
|
229
|
+
path: "/billing/v1/webhooks/{id}",
|
|
230
|
+
surface: "billingV1"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
method: "GET",
|
|
234
|
+
path: "/billing/v1/webhooks/{id}",
|
|
235
|
+
surface: "billingV1"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
method: "PATCH",
|
|
239
|
+
path: "/billing/v1/webhooks/{id}",
|
|
240
|
+
surface: "billingV1"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
method: "POST",
|
|
244
|
+
path: "/billing/v1/webhooks/{id}/test",
|
|
245
|
+
surface: "billingV1"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
method: "GET",
|
|
249
|
+
path: "/debug/billing",
|
|
250
|
+
surface: "debug"
|
|
251
|
+
}
|
|
252
|
+
];
|
|
253
|
+
var schemaVersion = 1;
|
|
254
|
+
var sourceOfTruth = "crates/athena-billing/src/live_http_routes.rs";
|
|
255
|
+
var sources = [
|
|
256
|
+
"src/api/billing.rs",
|
|
257
|
+
"src/api/billing_v1/**",
|
|
258
|
+
"src/api/debug/billing.rs"
|
|
259
|
+
];
|
|
260
|
+
var liveHttpRoutes = {
|
|
261
|
+
consumers: consumers,
|
|
262
|
+
description: description,
|
|
263
|
+
domain: domain,
|
|
264
|
+
routes: routes,
|
|
265
|
+
schemaVersion: schemaVersion,
|
|
266
|
+
sourceOfTruth: sourceOfTruth,
|
|
267
|
+
sources: sources
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export { liveHttpRoutes as billingLiveHttpRoutes };
|