@xylex-group/athena 1.9.0 → 2.0.0

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.
@@ -292,6 +292,76 @@ function resolvePostgresColumnType(column) {
292
292
  return wrapArrayType(baseType, column.arrayDimensions);
293
293
  }
294
294
 
295
+ // src/gateway/errors.ts
296
+ var AthenaGatewayError = class _AthenaGatewayError extends Error {
297
+ code;
298
+ status;
299
+ endpoint;
300
+ method;
301
+ requestId;
302
+ hint;
303
+ causeDetail;
304
+ constructor(input) {
305
+ super(input.message);
306
+ this.name = "AthenaGatewayError";
307
+ this.code = input.code;
308
+ this.status = input.status ?? 0;
309
+ this.endpoint = input.endpoint;
310
+ this.method = input.method;
311
+ this.requestId = input.requestId;
312
+ this.hint = input.hint;
313
+ this.causeDetail = input.cause;
314
+ }
315
+ toDetails() {
316
+ return {
317
+ code: this.code,
318
+ message: this.message,
319
+ status: this.status,
320
+ endpoint: this.endpoint,
321
+ method: this.method,
322
+ requestId: this.requestId,
323
+ hint: this.hint,
324
+ cause: this.causeDetail
325
+ };
326
+ }
327
+ static fromResponse(response, fallback) {
328
+ const details = response.errorDetails;
329
+ if (details) {
330
+ return new _AthenaGatewayError({
331
+ code: details.code,
332
+ message: details.message,
333
+ status: details.status,
334
+ endpoint: details.endpoint ?? fallback.endpoint,
335
+ method: details.method ?? fallback.method,
336
+ requestId: details.requestId ?? fallback.requestId,
337
+ hint: details.hint,
338
+ cause: details.cause
339
+ });
340
+ }
341
+ return new _AthenaGatewayError({
342
+ code: "HTTP_ERROR",
343
+ message: response.error ?? "Gateway request failed",
344
+ status: response.status,
345
+ endpoint: fallback.endpoint,
346
+ method: fallback.method,
347
+ requestId: fallback.requestId
348
+ });
349
+ }
350
+ };
351
+
352
+ // src/auxiliaries.ts
353
+ function parseBooleanFlag(rawValue, fallback) {
354
+ if (!rawValue) return fallback;
355
+ const normalized = rawValue.trim().toLowerCase();
356
+ if (normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on") {
357
+ return true;
358
+ }
359
+ if (normalized === "0" || normalized === "false" || normalized === "no" || normalized === "off") {
360
+ return false;
361
+ }
362
+ return fallback;
363
+ }
364
+
295
365
  // src/generator/schema-selection.ts
296
366
  var DEFAULT_POSTGRES_SCHEMAS = ["public"];
297
367
  function collectSchemaNames(input) {
@@ -351,6 +421,39 @@ var DEFAULT_EXPERIMENTAL_FLAGS = {
351
421
  postgresGatewayIntrospection: false,
352
422
  scyllaProviderContracts: true
353
423
  };
424
+ function normalizeBooleanFlag(rawValue, fallback) {
425
+ if (typeof rawValue === "boolean") {
426
+ return rawValue;
427
+ }
428
+ if (typeof rawValue === "string") {
429
+ return parseBooleanFlag(rawValue, fallback);
430
+ }
431
+ return fallback;
432
+ }
433
+ function normalizeFeatureFlags(input) {
434
+ return {
435
+ emitRelations: normalizeBooleanFlag(
436
+ input?.emitRelations,
437
+ DEFAULT_FEATURES.emitRelations
438
+ ),
439
+ emitRegistry: normalizeBooleanFlag(
440
+ input?.emitRegistry,
441
+ DEFAULT_FEATURES.emitRegistry
442
+ )
443
+ };
444
+ }
445
+ function normalizeExperimentalFlags(input) {
446
+ return {
447
+ postgresGatewayIntrospection: normalizeBooleanFlag(
448
+ input?.postgresGatewayIntrospection,
449
+ DEFAULT_EXPERIMENTAL_FLAGS.postgresGatewayIntrospection
450
+ ),
451
+ scyllaProviderContracts: normalizeBooleanFlag(
452
+ input?.scyllaProviderContracts,
453
+ DEFAULT_EXPERIMENTAL_FLAGS.scyllaProviderContracts
454
+ )
455
+ };
456
+ }
354
457
  function normalizeOutputConfig(output) {
355
458
  return {
356
459
  targets: {
@@ -386,14 +489,8 @@ function normalizeGeneratorConfig(input) {
386
489
  ...DEFAULT_NAMING,
387
490
  ...input.naming ?? {}
388
491
  },
389
- features: {
390
- ...DEFAULT_FEATURES,
391
- ...input.features ?? {}
392
- },
393
- experimental: {
394
- ...DEFAULT_EXPERIMENTAL_FLAGS,
395
- ...input.experimental ?? {}
396
- }
492
+ features: normalizeFeatureFlags(input.features),
493
+ experimental: normalizeExperimentalFlags(input.experimental)
397
494
  };
398
495
  }
399
496
  function findGeneratorConfigPath(cwd = process.cwd()) {
@@ -722,63 +819,6 @@ function generateArtifactsFromSnapshot(snapshot, config) {
722
819
  return new ArtifactComposer(snapshot, normalizedConfig).compose();
723
820
  }
724
821
 
725
- // src/gateway/errors.ts
726
- var AthenaGatewayError = class _AthenaGatewayError extends Error {
727
- code;
728
- status;
729
- endpoint;
730
- method;
731
- requestId;
732
- hint;
733
- causeDetail;
734
- constructor(input) {
735
- super(input.message);
736
- this.name = "AthenaGatewayError";
737
- this.code = input.code;
738
- this.status = input.status ?? 0;
739
- this.endpoint = input.endpoint;
740
- this.method = input.method;
741
- this.requestId = input.requestId;
742
- this.hint = input.hint;
743
- this.causeDetail = input.cause;
744
- }
745
- toDetails() {
746
- return {
747
- code: this.code,
748
- message: this.message,
749
- status: this.status,
750
- endpoint: this.endpoint,
751
- method: this.method,
752
- requestId: this.requestId,
753
- hint: this.hint,
754
- cause: this.causeDetail
755
- };
756
- }
757
- static fromResponse(response, fallback) {
758
- const details = response.errorDetails;
759
- if (details) {
760
- return new _AthenaGatewayError({
761
- code: details.code,
762
- message: details.message,
763
- status: details.status,
764
- endpoint: details.endpoint ?? fallback.endpoint,
765
- method: details.method ?? fallback.method,
766
- requestId: details.requestId ?? fallback.requestId,
767
- hint: details.hint,
768
- cause: details.cause
769
- });
770
- }
771
- return new _AthenaGatewayError({
772
- code: "HTTP_ERROR",
773
- message: response.error ?? "Gateway request failed",
774
- status: response.status,
775
- endpoint: fallback.endpoint,
776
- method: fallback.method,
777
- requestId: fallback.requestId
778
- });
779
- }
780
- };
781
-
782
822
  // src/gateway/client.ts
783
823
  var DEFAULT_BASE_URL = "https://athena-db.com";
784
824
  var DEFAULT_CLIENT = "railway_direct";
@@ -1200,6 +1240,1044 @@ function quoteSelectColumnsExpression(columns) {
1200
1240
  return tokens.map(quoteSelectToken).join(", ");
1201
1241
  }
1202
1242
 
1243
+ // src/auth/client.ts
1244
+ var DEFAULT_AUTH_BASE_URL = "http://localhost:3001/api/auth";
1245
+ var FALLBACK_SDK_VERSION2 = "1.0.0";
1246
+ var SDK_NAME2 = "xylex-group/athena-auth";
1247
+ var SDK_VERSION2 = typeof process !== "undefined" && process?.env?.npm_package_version ? process.env.npm_package_version : FALLBACK_SDK_VERSION2;
1248
+ var SDK_HEADER_VALUE2 = `${SDK_NAME2} ${SDK_VERSION2}`;
1249
+ function normalizeBaseUrl(baseUrl) {
1250
+ return (baseUrl ?? DEFAULT_AUTH_BASE_URL).replace(/\/$/, "");
1251
+ }
1252
+ function isRecord2(value) {
1253
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
1254
+ }
1255
+ function normalizeHeaderValue2(value) {
1256
+ return value ? value : void 0;
1257
+ }
1258
+ function parseResponseBody2(rawText, contentType) {
1259
+ if (!rawText) {
1260
+ return { parsed: null, parseFailed: false };
1261
+ }
1262
+ const contentTypeSuggestsJson = contentType?.toLowerCase().includes("application/json") ?? false;
1263
+ const looksJson = contentTypeSuggestsJson || rawText.startsWith("{") || rawText.startsWith("[");
1264
+ if (!looksJson) {
1265
+ return { parsed: rawText, parseFailed: false };
1266
+ }
1267
+ try {
1268
+ return { parsed: JSON.parse(rawText), parseFailed: false };
1269
+ } catch {
1270
+ return { parsed: rawText, parseFailed: true };
1271
+ }
1272
+ }
1273
+ function resolveRequestId2(headers) {
1274
+ return headers.get("x-request-id") ?? headers.get("x-correlation-id") ?? headers.get("x-athena-request-id") ?? void 0;
1275
+ }
1276
+ function resolveErrorMessage2(payload, fallback) {
1277
+ if (isRecord2(payload)) {
1278
+ const messageCandidates = [payload.error, payload.message, payload.details];
1279
+ for (const candidate of messageCandidates) {
1280
+ if (typeof candidate === "string" && candidate.trim().length > 0) {
1281
+ return candidate.trim();
1282
+ }
1283
+ }
1284
+ }
1285
+ if (typeof payload === "string" && payload.trim().length > 0) {
1286
+ return payload.trim();
1287
+ }
1288
+ return fallback;
1289
+ }
1290
+ function toErrorDetails(input) {
1291
+ return {
1292
+ code: input.code,
1293
+ message: input.message,
1294
+ status: input.status,
1295
+ endpoint: input.endpoint,
1296
+ method: input.method,
1297
+ requestId: input.requestId,
1298
+ hint: input.hint,
1299
+ cause: input.cause
1300
+ };
1301
+ }
1302
+ function mergeCallOptions(base, override) {
1303
+ if (!base && !override) return void 0;
1304
+ return {
1305
+ ...base,
1306
+ ...override,
1307
+ headers: {
1308
+ ...base?.headers ?? {},
1309
+ ...override?.headers ?? {}
1310
+ }
1311
+ };
1312
+ }
1313
+ function extractFetchOptions(input) {
1314
+ if (!input) {
1315
+ return {
1316
+ payload: void 0,
1317
+ fetchOptions: void 0
1318
+ };
1319
+ }
1320
+ const { fetchOptions, ...rest } = input;
1321
+ const hasPayloadKeys = Object.keys(rest).length > 0;
1322
+ return {
1323
+ payload: hasPayloadKeys ? rest : void 0,
1324
+ fetchOptions
1325
+ };
1326
+ }
1327
+ function buildHeaders2(config, options) {
1328
+ const headers = {
1329
+ "Content-Type": "application/json",
1330
+ "X-Athena-Sdk": SDK_HEADER_VALUE2
1331
+ };
1332
+ const apiKey = options?.apiKey ?? config.apiKey;
1333
+ if (apiKey) {
1334
+ headers.apikey = apiKey;
1335
+ headers["x-api-key"] = apiKey;
1336
+ }
1337
+ const bearerToken = options?.bearerToken ?? config.bearerToken;
1338
+ if (bearerToken) {
1339
+ headers.Authorization = `Bearer ${bearerToken}`;
1340
+ }
1341
+ const mergedExtraHeaders = {
1342
+ ...config.headers ?? {},
1343
+ ...options?.headers ?? {}
1344
+ };
1345
+ Object.entries(mergedExtraHeaders).forEach(([key, value]) => {
1346
+ const normalized = normalizeHeaderValue2(value);
1347
+ if (normalized) {
1348
+ headers[key] = normalized;
1349
+ }
1350
+ });
1351
+ return headers;
1352
+ }
1353
+ function appendQueryParam(searchParams, key, value) {
1354
+ if (value === void 0 || value === null) return;
1355
+ if (Array.isArray(value)) {
1356
+ value.forEach((item) => {
1357
+ searchParams.append(key, String(item));
1358
+ });
1359
+ return;
1360
+ }
1361
+ searchParams.append(key, String(value));
1362
+ }
1363
+ function buildRequestUrl(baseUrl, endpoint, query) {
1364
+ const url = `${baseUrl}${endpoint}`;
1365
+ if (!query || Object.keys(query).length === 0) return url;
1366
+ const searchParams = new URLSearchParams();
1367
+ Object.entries(query).forEach(([key, value]) => appendQueryParam(searchParams, key, value));
1368
+ const queryText = searchParams.toString();
1369
+ return queryText ? `${url}?${queryText}` : url;
1370
+ }
1371
+ function inferDefaultMethod(endpoint) {
1372
+ if (endpoint.startsWith("/reset-password/")) {
1373
+ return "GET";
1374
+ }
1375
+ switch (endpoint) {
1376
+ case "/get-session":
1377
+ case "/list-sessions":
1378
+ case "/verify-email":
1379
+ case "/change-email/verify":
1380
+ case "/delete-user/verify":
1381
+ case "/email-list":
1382
+ case "/email/list":
1383
+ case "/delete-user/callback":
1384
+ case "/list-accounts":
1385
+ case "/passkey/generate-register-options":
1386
+ case "/passkey/list-user-passkeys":
1387
+ case "/.well-known/webauthn":
1388
+ case "/admin/list-users":
1389
+ case "/admin/athena-client/list":
1390
+ case "/admin/audit-log/list":
1391
+ case "/admin/email/get":
1392
+ case "/admin/email-failure/list":
1393
+ case "/admin/email-failure/get":
1394
+ case "/admin/email-template/get":
1395
+ case "/admin/email-template/list":
1396
+ case "/admin/email/list":
1397
+ case "/api-key/get":
1398
+ case "/api-key/list":
1399
+ case "/organization/get-full-organization":
1400
+ case "/organization/list":
1401
+ case "/organization/get-invitation":
1402
+ case "/organization/list-invitations":
1403
+ case "/organization/list-user-invitations":
1404
+ case "/organization/list-members":
1405
+ case "/organization/get-active-member":
1406
+ case "/health":
1407
+ case "/ok":
1408
+ case "/error":
1409
+ return "GET";
1410
+ default:
1411
+ return "POST";
1412
+ }
1413
+ }
1414
+ async function callAuthEndpoint(config, context, body, query, options) {
1415
+ const baseUrl = normalizeBaseUrl(options?.baseUrl ?? config.baseUrl);
1416
+ const url = buildRequestUrl(baseUrl, context.endpoint, query);
1417
+ const headers = buildHeaders2(config, options);
1418
+ const credentials = options?.credentials ?? config.credentials ?? "include";
1419
+ const requestInit = {
1420
+ method: context.method,
1421
+ headers,
1422
+ credentials,
1423
+ signal: options?.signal
1424
+ };
1425
+ if (context.method !== "GET") {
1426
+ requestInit.body = JSON.stringify(body ?? {});
1427
+ }
1428
+ const fetcher = config.fetch ?? globalThis.fetch;
1429
+ if (!fetcher) {
1430
+ const details = toErrorDetails({
1431
+ code: "UNKNOWN_ERROR",
1432
+ message: "No fetch implementation available for auth client",
1433
+ status: 0,
1434
+ endpoint: context.endpoint,
1435
+ method: context.method,
1436
+ hint: "Use Node 18+ or provide `fetch` via createClient(..., { auth: { fetch } }) or createAuthClient({ fetch })"
1437
+ });
1438
+ return {
1439
+ ok: false,
1440
+ status: 0,
1441
+ data: null,
1442
+ error: details.message,
1443
+ errorDetails: details,
1444
+ raw: null
1445
+ };
1446
+ }
1447
+ try {
1448
+ const response = await fetcher(url, requestInit);
1449
+ const rawText = await response.text();
1450
+ const requestId = resolveRequestId2(response.headers);
1451
+ const parsedBody = parseResponseBody2(rawText ?? "", response.headers.get("content-type"));
1452
+ if (parsedBody.parseFailed) {
1453
+ const details = toErrorDetails({
1454
+ code: "INVALID_JSON",
1455
+ message: "Auth server returned malformed JSON",
1456
+ status: response.status,
1457
+ endpoint: context.endpoint,
1458
+ method: context.method,
1459
+ requestId,
1460
+ hint: "Verify the auth endpoint response body is valid JSON.",
1461
+ cause: rawText.slice(0, 300)
1462
+ });
1463
+ return {
1464
+ ok: false,
1465
+ status: response.status,
1466
+ data: null,
1467
+ error: details.message,
1468
+ errorDetails: details,
1469
+ raw: parsedBody.parsed
1470
+ };
1471
+ }
1472
+ const parsed = parsedBody.parsed;
1473
+ if (!response.ok) {
1474
+ const details = toErrorDetails({
1475
+ code: "HTTP_ERROR",
1476
+ message: resolveErrorMessage2(
1477
+ parsed,
1478
+ `Auth endpoint ${context.method} ${context.endpoint} failed with status ${response.status}`
1479
+ ),
1480
+ status: response.status,
1481
+ endpoint: context.endpoint,
1482
+ method: context.method,
1483
+ requestId
1484
+ });
1485
+ return {
1486
+ ok: false,
1487
+ status: response.status,
1488
+ data: null,
1489
+ error: details.message,
1490
+ errorDetails: details,
1491
+ raw: parsed
1492
+ };
1493
+ }
1494
+ return {
1495
+ ok: true,
1496
+ status: response.status,
1497
+ data: parsed ?? null,
1498
+ error: null,
1499
+ errorDetails: null,
1500
+ raw: parsed
1501
+ };
1502
+ } catch (callError) {
1503
+ const message = callError instanceof Error ? callError.message : String(callError);
1504
+ const details = toErrorDetails({
1505
+ code: "NETWORK_ERROR",
1506
+ message: `Network error while calling ${context.method} ${context.endpoint}: ${message}`,
1507
+ status: 0,
1508
+ endpoint: context.endpoint,
1509
+ method: context.method,
1510
+ cause: message,
1511
+ hint: "Check auth server URL, DNS, and network reachability."
1512
+ });
1513
+ return {
1514
+ ok: false,
1515
+ status: 0,
1516
+ data: null,
1517
+ error: details.message,
1518
+ errorDetails: details,
1519
+ raw: null
1520
+ };
1521
+ }
1522
+ }
1523
+ function executePostWithCompatibleInput(config, context, input, options) {
1524
+ const { payload, fetchOptions } = extractFetchOptions(input);
1525
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1526
+ return callAuthEndpoint(config, context, payload ?? {}, void 0, mergedOptions);
1527
+ }
1528
+ function executePostWithOptionalInput(config, context, input, options) {
1529
+ const { fetchOptions } = extractFetchOptions(input);
1530
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1531
+ return callAuthEndpoint(config, context, {}, void 0, mergedOptions);
1532
+ }
1533
+ function executeGetWithCompatibleInput(config, context, input, options) {
1534
+ const { fetchOptions } = extractFetchOptions(input);
1535
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1536
+ return callAuthEndpoint(config, context, void 0, void 0, mergedOptions);
1537
+ }
1538
+ function executeGetWithQueryCompatibleInput(config, context, input, options) {
1539
+ const { payload, fetchOptions } = extractFetchOptions(input);
1540
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1541
+ const query = payload?.query;
1542
+ return callAuthEndpoint(
1543
+ config,
1544
+ context,
1545
+ void 0,
1546
+ query,
1547
+ mergedOptions
1548
+ );
1549
+ }
1550
+ function createAuthClient(config = {}) {
1551
+ const normalizedBaseUrl = normalizeBaseUrl(config.baseUrl);
1552
+ const resolvedConfig = {
1553
+ ...config,
1554
+ baseUrl: normalizedBaseUrl
1555
+ };
1556
+ const request = (input, options) => {
1557
+ const method = input.method ?? (input.body !== void 0 ? "POST" : inferDefaultMethod(input.endpoint));
1558
+ const mergedOptions = mergeCallOptions(input.fetchOptions, options);
1559
+ return callAuthEndpoint(
1560
+ resolvedConfig,
1561
+ { endpoint: input.endpoint, method },
1562
+ input.body,
1563
+ input.query,
1564
+ mergedOptions
1565
+ );
1566
+ };
1567
+ const postGeneric = (endpoint, input, options) => {
1568
+ const { payload, fetchOptions } = extractFetchOptions(input);
1569
+ return request(
1570
+ {
1571
+ endpoint,
1572
+ method: "POST",
1573
+ body: payload ?? {},
1574
+ fetchOptions
1575
+ },
1576
+ options
1577
+ );
1578
+ };
1579
+ const getGeneric = (endpoint, input, options) => {
1580
+ const { fetchOptions } = extractFetchOptions(input);
1581
+ return request(
1582
+ {
1583
+ endpoint,
1584
+ method: "GET",
1585
+ fetchOptions
1586
+ },
1587
+ options
1588
+ );
1589
+ };
1590
+ const getWithQuery = (endpoint, input, options) => {
1591
+ const { payload, fetchOptions } = extractFetchOptions(input);
1592
+ const query = payload?.query;
1593
+ return request(
1594
+ {
1595
+ endpoint,
1596
+ method: "GET",
1597
+ query,
1598
+ fetchOptions
1599
+ },
1600
+ options
1601
+ );
1602
+ };
1603
+ const listUserEmailsWithFallback = async (input, options) => {
1604
+ const primary = await getWithQuery(
1605
+ "/email/list",
1606
+ input,
1607
+ options
1608
+ );
1609
+ if (primary.ok || primary.status !== 404 || primary.errorDetails?.code !== "HTTP_ERROR") {
1610
+ return primary;
1611
+ }
1612
+ return getWithQuery(
1613
+ "/email-list",
1614
+ input,
1615
+ options
1616
+ );
1617
+ };
1618
+ const healthWithFallback = async (input, options) => {
1619
+ const primary = await getGeneric("/health", input, options);
1620
+ if (primary.ok || primary.status !== 404 || primary.errorDetails?.code !== "HTTP_ERROR") {
1621
+ return primary;
1622
+ }
1623
+ const fallback = await getGeneric("/ok", input, options);
1624
+ if (!fallback.ok) {
1625
+ return {
1626
+ ...fallback,
1627
+ data: null
1628
+ };
1629
+ }
1630
+ const fallbackStatus = isRecord2(fallback.data) && typeof fallback.data.ok === "boolean" ? fallback.data.ok ? "ok" : "error" : "ok";
1631
+ return {
1632
+ ...fallback,
1633
+ data: {
1634
+ status: fallbackStatus
1635
+ }
1636
+ };
1637
+ };
1638
+ const signOut = (input, options) => executePostWithOptionalInput(
1639
+ resolvedConfig,
1640
+ { endpoint: "/sign-out", method: "POST" },
1641
+ input,
1642
+ options
1643
+ );
1644
+ const revokeSessions = (input, options) => executePostWithOptionalInput(
1645
+ resolvedConfig,
1646
+ { endpoint: "/revoke-sessions", method: "POST" },
1647
+ input,
1648
+ options
1649
+ );
1650
+ const revokeOtherSessions = (input, options) => executePostWithOptionalInput(
1651
+ resolvedConfig,
1652
+ { endpoint: "/revoke-other-sessions", method: "POST" },
1653
+ input,
1654
+ options
1655
+ );
1656
+ const revokeSession = (input, options) => executePostWithCompatibleInput(
1657
+ resolvedConfig,
1658
+ { endpoint: "/revoke-session", method: "POST" },
1659
+ input,
1660
+ options
1661
+ );
1662
+ const deleteUser = (input, options) => {
1663
+ const { payload, fetchOptions } = extractFetchOptions(input);
1664
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1665
+ return callAuthEndpoint(
1666
+ resolvedConfig,
1667
+ { endpoint: "/delete-user", method: "POST" },
1668
+ payload ?? {},
1669
+ void 0,
1670
+ mergedOptions
1671
+ );
1672
+ };
1673
+ const deleteUserCallback = (input, options) => {
1674
+ const { payload, fetchOptions } = extractFetchOptions(input);
1675
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1676
+ const query = payload ?? {};
1677
+ return callAuthEndpoint(
1678
+ resolvedConfig,
1679
+ { endpoint: "/delete-user/callback", method: "GET" },
1680
+ void 0,
1681
+ {
1682
+ token: query.token,
1683
+ callbackURL: query.callbackURL
1684
+ },
1685
+ mergedOptions
1686
+ );
1687
+ };
1688
+ const resolveResetPasswordToken = (input, options) => {
1689
+ const { payload, fetchOptions } = extractFetchOptions(input);
1690
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
1691
+ const query = payload;
1692
+ const token = query?.token?.trim();
1693
+ if (!token) {
1694
+ throw new Error("resolveResetPasswordToken requires a non-empty token");
1695
+ }
1696
+ const endpoint = `/reset-password/${encodeURIComponent(token)}`;
1697
+ return callAuthEndpoint(
1698
+ resolvedConfig,
1699
+ { endpoint, method: "GET" },
1700
+ void 0,
1701
+ query?.callbackURL ? { callbackURL: query.callbackURL } : void 0,
1702
+ mergedOptions
1703
+ );
1704
+ };
1705
+ const organization = {
1706
+ create: (input, options) => executePostWithCompatibleInput(
1707
+ resolvedConfig,
1708
+ { endpoint: "/organization/create", method: "POST" },
1709
+ input,
1710
+ options
1711
+ ),
1712
+ update: (input, options) => executePostWithCompatibleInput(
1713
+ resolvedConfig,
1714
+ { endpoint: "/organization/update", method: "POST" },
1715
+ input,
1716
+ options
1717
+ ),
1718
+ delete: (input, options) => executePostWithCompatibleInput(
1719
+ resolvedConfig,
1720
+ { endpoint: "/organization/delete", method: "POST" },
1721
+ input,
1722
+ options
1723
+ ),
1724
+ setActive: (input, options) => executePostWithCompatibleInput(
1725
+ resolvedConfig,
1726
+ { endpoint: "/organization/set-active", method: "POST" },
1727
+ input,
1728
+ options
1729
+ ),
1730
+ list: (input, options) => getGeneric(
1731
+ "/organization/list",
1732
+ input,
1733
+ options
1734
+ ),
1735
+ getFull: (input, options) => executeGetWithQueryCompatibleInput(
1736
+ resolvedConfig,
1737
+ { endpoint: "/organization/get-full-organization", method: "GET" },
1738
+ input,
1739
+ options
1740
+ ),
1741
+ checkSlug: (input, options) => executePostWithCompatibleInput(
1742
+ resolvedConfig,
1743
+ { endpoint: "/organization/check-slug", method: "POST" },
1744
+ input,
1745
+ options
1746
+ ),
1747
+ leave: (input, options) => executePostWithCompatibleInput(
1748
+ resolvedConfig,
1749
+ { endpoint: "/organization/leave", method: "POST" },
1750
+ input,
1751
+ options
1752
+ ),
1753
+ listUserInvitations: (input, options) => executeGetWithQueryCompatibleInput(
1754
+ resolvedConfig,
1755
+ { endpoint: "/organization/list-user-invitations", method: "GET" },
1756
+ input,
1757
+ options
1758
+ ),
1759
+ hasPermission: (input, options) => postGeneric(
1760
+ "/organization/has-permission",
1761
+ input,
1762
+ options
1763
+ ),
1764
+ invitation: {
1765
+ cancel: (input, options) => executePostWithCompatibleInput(
1766
+ resolvedConfig,
1767
+ { endpoint: "/organization/cancel-invitation", method: "POST" },
1768
+ input,
1769
+ options
1770
+ ),
1771
+ accept: (input, options) => executePostWithCompatibleInput(
1772
+ resolvedConfig,
1773
+ { endpoint: "/organization/accept-invitation", method: "POST" },
1774
+ input,
1775
+ options
1776
+ ),
1777
+ get: (input, options) => executeGetWithQueryCompatibleInput(
1778
+ resolvedConfig,
1779
+ { endpoint: "/organization/get-invitation", method: "GET" },
1780
+ input,
1781
+ options
1782
+ ),
1783
+ reject: (input, options) => executePostWithCompatibleInput(
1784
+ resolvedConfig,
1785
+ { endpoint: "/organization/reject-invitation", method: "POST" },
1786
+ input,
1787
+ options
1788
+ ),
1789
+ list: (input, options) => executeGetWithQueryCompatibleInput(
1790
+ resolvedConfig,
1791
+ { endpoint: "/organization/list-invitations", method: "GET" },
1792
+ input,
1793
+ options
1794
+ )
1795
+ },
1796
+ member: {
1797
+ remove: (input, options) => executePostWithCompatibleInput(
1798
+ resolvedConfig,
1799
+ { endpoint: "/organization/remove-member", method: "POST" },
1800
+ input,
1801
+ options
1802
+ ),
1803
+ updateRole: (input, options) => executePostWithCompatibleInput(
1804
+ resolvedConfig,
1805
+ { endpoint: "/organization/update-member-role", method: "POST" },
1806
+ input,
1807
+ options
1808
+ ),
1809
+ invite: (input, options) => executePostWithCompatibleInput(
1810
+ resolvedConfig,
1811
+ { endpoint: "/organization/invite-member", method: "POST" },
1812
+ input,
1813
+ options
1814
+ ),
1815
+ getActive: (input, options) => executeGetWithCompatibleInput(
1816
+ resolvedConfig,
1817
+ { endpoint: "/organization/get-active-member", method: "GET" },
1818
+ input,
1819
+ options
1820
+ ),
1821
+ list: (input, options) => executeGetWithQueryCompatibleInput(
1822
+ resolvedConfig,
1823
+ { endpoint: "/organization/list-members", method: "GET" },
1824
+ input,
1825
+ options
1826
+ )
1827
+ }
1828
+ };
1829
+ const authResetPassword = Object.assign(
1830
+ (input, options) => executePostWithCompatibleInput(
1831
+ resolvedConfig,
1832
+ { endpoint: "/reset-password", method: "POST" },
1833
+ input,
1834
+ options
1835
+ ),
1836
+ {
1837
+ token: resolveResetPasswordToken
1838
+ }
1839
+ );
1840
+ const sessionRevokeBinding = (input, options) => {
1841
+ if (Array.isArray(input)) {
1842
+ if (input.length === 0) {
1843
+ throw new Error("session.revoke requires at least one session token");
1844
+ }
1845
+ if (input.length === 1) {
1846
+ return revokeSession(input[0], options);
1847
+ }
1848
+ return revokeSessions(void 0, options);
1849
+ }
1850
+ const parsed = input;
1851
+ const tokens = Array.isArray(parsed.tokens) ? parsed.tokens.filter((token2) => token2.trim().length > 0) : void 0;
1852
+ if (tokens && tokens.length > 1) {
1853
+ return revokeSessions(
1854
+ parsed.fetchOptions ? { fetchOptions: parsed.fetchOptions } : void 0,
1855
+ options
1856
+ );
1857
+ }
1858
+ if (tokens && tokens.length === 1) {
1859
+ return revokeSession(
1860
+ { token: tokens[0], fetchOptions: parsed.fetchOptions },
1861
+ options
1862
+ );
1863
+ }
1864
+ const token = parsed.token?.trim();
1865
+ if (!token) {
1866
+ throw new Error("session.revoke requires a non-empty token or a non-empty token list");
1867
+ }
1868
+ return revokeSession(
1869
+ {
1870
+ token,
1871
+ fetchOptions: parsed.fetchOptions
1872
+ },
1873
+ options
1874
+ );
1875
+ };
1876
+ const adminUserSessionRevokeBinding = (input, options) => {
1877
+ const requireUserId = (userId) => {
1878
+ const trimmed = String(userId ?? "").trim();
1879
+ if (!trimmed) {
1880
+ throw new Error("admin.user.session.revoke requires a non-empty userId");
1881
+ }
1882
+ return trimmed;
1883
+ };
1884
+ const requireSinglePluralUserId = (sessions2) => {
1885
+ const uniqueUserIds = [...new Set(sessions2.map((session) => requireUserId(session.userId)))];
1886
+ if (uniqueUserIds.length !== 1) {
1887
+ throw new Error("admin.user.session.revoke requires the same userId across plural payloads");
1888
+ }
1889
+ return { userId: uniqueUserIds[0] };
1890
+ };
1891
+ if (Array.isArray(input)) {
1892
+ if (input.length === 0) {
1893
+ throw new Error("admin.user.session.revoke requires at least one payload item");
1894
+ }
1895
+ if (input.length === 1) {
1896
+ return postGeneric(
1897
+ "/admin/revoke-user-session",
1898
+ {
1899
+ ...input[0],
1900
+ userId: requireUserId(input[0].userId)
1901
+ },
1902
+ options
1903
+ );
1904
+ }
1905
+ return postGeneric(
1906
+ "/admin/revoke-user-sessions",
1907
+ requireSinglePluralUserId(input),
1908
+ options
1909
+ );
1910
+ }
1911
+ const parsed = input;
1912
+ const sessions = parsed.sessions;
1913
+ if (sessions && sessions.length === 0) {
1914
+ throw new Error("admin.user.session.revoke requires at least one payload item");
1915
+ }
1916
+ if (sessions && sessions.length === 1) {
1917
+ return postGeneric(
1918
+ "/admin/revoke-user-session",
1919
+ {
1920
+ ...sessions[0],
1921
+ userId: requireUserId(sessions[0].userId),
1922
+ fetchOptions: parsed.fetchOptions
1923
+ },
1924
+ options
1925
+ );
1926
+ }
1927
+ if (sessions && sessions.length > 1) {
1928
+ return postGeneric(
1929
+ "/admin/revoke-user-sessions",
1930
+ {
1931
+ ...requireSinglePluralUserId(sessions),
1932
+ fetchOptions: parsed.fetchOptions
1933
+ },
1934
+ options
1935
+ );
1936
+ }
1937
+ const normalizedUserId = requireUserId(parsed.userId);
1938
+ if (!parsed.sessionToken) {
1939
+ return postGeneric(
1940
+ "/admin/revoke-user-sessions",
1941
+ {
1942
+ userId: normalizedUserId,
1943
+ fetchOptions: parsed.fetchOptions
1944
+ },
1945
+ options
1946
+ );
1947
+ }
1948
+ return postGeneric(
1949
+ "/admin/revoke-user-session",
1950
+ {
1951
+ ...parsed,
1952
+ userId: normalizedUserId
1953
+ },
1954
+ options
1955
+ );
1956
+ };
1957
+ const auth = {
1958
+ getSession: (input, options) => getGeneric("/get-session", input, options),
1959
+ signOut,
1960
+ forgetPassword: (input, options) => postGeneric("/forget-password", input, options),
1961
+ resetPassword: authResetPassword,
1962
+ setPassword: (input, options) => postGeneric("/set-password", input, options),
1963
+ verifyEmail: (input, options) => {
1964
+ const queryInput = {
1965
+ query: {
1966
+ token: input.token,
1967
+ callbackURL: input.callbackURL
1968
+ },
1969
+ fetchOptions: input.fetchOptions
1970
+ };
1971
+ return getWithQuery(
1972
+ "/verify-email",
1973
+ queryInput,
1974
+ options
1975
+ );
1976
+ },
1977
+ sendVerificationEmail: (input, options) => postGeneric("/send-verification-email", input, options),
1978
+ changeEmail: (input, options) => postGeneric("/change-email", input, options),
1979
+ changeEmailVerify: (input, options) => getWithQuery("/change-email/verify", input, options),
1980
+ deleteUserVerify: (input, options) => getWithQuery("/delete-user/verify", input, options),
1981
+ changePassword: (input, options) => postGeneric("/change-password", input, options),
1982
+ user: {
1983
+ update: (input, options) => postGeneric("/update-user", input, options),
1984
+ delete: (input, options) => postGeneric("/delete-user", input, options),
1985
+ email: {
1986
+ list: listUserEmailsWithFallback
1987
+ }
1988
+ },
1989
+ session: {
1990
+ list: (input, options) => getGeneric("/list-sessions", input, options),
1991
+ revoke: sessionRevokeBinding,
1992
+ revokeOther: revokeOtherSessions
1993
+ },
1994
+ social: {
1995
+ link: (input, options) => postGeneric("/link-social", input, options)
1996
+ },
1997
+ account: {
1998
+ list: (input, options) => getGeneric("/list-accounts", input, options),
1999
+ unlink: (input, options) => postGeneric("/unlink-account", input, options)
2000
+ },
2001
+ deleteUser: {
2002
+ callback: deleteUserCallback
2003
+ },
2004
+ refreshToken: (input, options) => postGeneric("/refresh-token", input, options),
2005
+ getAccessToken: (input, options) => postGeneric("/get-access-token", input, options),
2006
+ health: healthWithFallback,
2007
+ ok: (input, options) => getGeneric("/ok", input, options),
2008
+ error: (input, options) => getGeneric("/error", input, options),
2009
+ twoFactor: {
2010
+ getTotpUri: (input, options) => postGeneric("/two-factor/get-totp-uri", input, options),
2011
+ verifyTotp: (input, options) => postGeneric("/two-factor/verify-totp", input, options),
2012
+ sendOtp: (input, options) => postGeneric("/two-factor/send-otp", input, options),
2013
+ verifyOtp: (input, options) => postGeneric("/two-factor/verify-otp", input, options),
2014
+ verifyBackupCode: (input, options) => postGeneric("/two-factor/verify-backup-code", input, options),
2015
+ generateBackupCodes: (input, options) => executePostWithCompatibleInput(
2016
+ resolvedConfig,
2017
+ { endpoint: "/two-factor/generate-backup-codes", method: "POST" },
2018
+ input,
2019
+ options
2020
+ ),
2021
+ enable: (input, options) => postGeneric("/two-factor/enable", input, options),
2022
+ disable: (input, options) => postGeneric("/two-factor/disable", input, options)
2023
+ },
2024
+ passkey: {
2025
+ generateRegisterOptions: (input, options) => getGeneric("/passkey/generate-register-options", input, options),
2026
+ generateAuthenticateOptions: (input, options) => postGeneric("/passkey/generate-authenticate-options", input, options),
2027
+ verifyRegistration: (input, options) => postGeneric("/passkey/verify-registration", input, options),
2028
+ verifyAuthentication: (input, options) => postGeneric("/passkey/verify-authentication", input, options),
2029
+ listUserPasskeys: (input, options) => getGeneric("/passkey/list-user-passkeys", input, options),
2030
+ deletePasskey: (input, options) => postGeneric("/passkey/delete-passkey", input, options),
2031
+ updatePasskey: (input, options) => postGeneric("/passkey/update-passkey", input, options),
2032
+ getRelatedOrigins: (input, options) => getGeneric("/.well-known/webauthn", input, options)
2033
+ },
2034
+ admin: {
2035
+ role: {
2036
+ set: (input, options) => postGeneric("/admin/set-role", input, options)
2037
+ },
2038
+ user: {
2039
+ list: (input, options) => getWithQuery("/admin/list-users", input, options),
2040
+ create: (input, options) => postGeneric("/admin/create-user", input, options),
2041
+ unban: (input, options) => postGeneric("/admin/unban-user", input, options),
2042
+ ban: (input, options) => postGeneric("/admin/ban-user", input, options),
2043
+ impersonate: (input, options) => postGeneric("/admin/impersonate-user", input, options),
2044
+ stopImpersonating: (input, options) => postGeneric("/admin/stop-impersonating", input, options),
2045
+ remove: (input, options) => postGeneric("/admin/remove-user", input, options),
2046
+ setPassword: (input, options) => postGeneric("/admin/set-user-password", input, options),
2047
+ session: {
2048
+ list: (input, options) => postGeneric("/admin/list-user-sessions", input, options),
2049
+ revoke: adminUserSessionRevokeBinding
2050
+ }
2051
+ },
2052
+ hasPermission: (input, options) => postGeneric("/admin/has-permission", input, options),
2053
+ apiKey: {
2054
+ create: (input, options) => postGeneric("/admin/api-key/create", input, options)
2055
+ },
2056
+ athenaClient: {
2057
+ create: (input, options) => postGeneric("/admin/athena-client/create", input, options),
2058
+ list: (input, options) => getWithQuery("/admin/athena-client/list", input, options)
2059
+ },
2060
+ auditLog: {
2061
+ list: (input, options) => getWithQuery("/admin/audit-log/list", input, options)
2062
+ },
2063
+ email: {
2064
+ list: (input, options) => getWithQuery("/admin/email/list", input, options),
2065
+ get: (input, options) => getWithQuery("/admin/email/get", input, options),
2066
+ create: (input, options) => postGeneric("/admin/email/create", input, options),
2067
+ update: (input, options) => postGeneric("/admin/email/update", input, options),
2068
+ delete: (input, options) => postGeneric("/admin/email/delete", input, options),
2069
+ failure: {
2070
+ list: (input, options) => getWithQuery("/admin/email-failure/list", input, options),
2071
+ get: (input, options) => getWithQuery("/admin/email-failure/get", input, options),
2072
+ create: (input, options) => postGeneric("/admin/email-failure/create", input, options),
2073
+ update: (input, options) => postGeneric("/admin/email-failure/update", input, options),
2074
+ delete: (input, options) => postGeneric("/admin/email-failure/delete", input, options)
2075
+ },
2076
+ template: {
2077
+ list: (input, options) => getWithQuery("/admin/email-template/list", input, options),
2078
+ get: (input, options) => getWithQuery("/admin/email-template/get", input, options),
2079
+ create: (input, options) => postGeneric("/admin/email-template/create", input, options),
2080
+ update: (input, options) => postGeneric("/admin/email-template/update", input, options),
2081
+ delete: (input, options) => postGeneric("/admin/email-template/delete", input, options)
2082
+ }
2083
+ },
2084
+ emailTemplate: {
2085
+ get: (input, options) => getWithQuery("/admin/email-template/get", input, options),
2086
+ create: (input, options) => postGeneric("/admin/email-template/create", input, options),
2087
+ delete: (input, options) => postGeneric("/admin/email-template/delete", input, options),
2088
+ list: (input, options) => getWithQuery("/admin/email-template/list", input, options),
2089
+ update: (input, options) => postGeneric("/admin/email-template/update", input, options)
2090
+ }
2091
+ },
2092
+ apiKey: {
2093
+ create: (input, options) => postGeneric("/api-key/create", input, options),
2094
+ get: (input, options) => getWithQuery("/api-key/get", input, options),
2095
+ update: (input, options) => postGeneric("/api-key/update", input, options),
2096
+ delete: (input, options) => postGeneric("/api-key/delete", input, options),
2097
+ list: (input, options) => getWithQuery("/api-key/list", input, options),
2098
+ verify: (input, options) => postGeneric("/api-key/verify", input, options),
2099
+ deleteAllExpired: (input, options) => executePostWithOptionalInput(
2100
+ resolvedConfig,
2101
+ { endpoint: "/api-key/delete-all-expired-api-keys", method: "POST" },
2102
+ input,
2103
+ options
2104
+ )
2105
+ },
2106
+ signIn: {
2107
+ email: (input, options) => postGeneric("/sign-in/email", input, options),
2108
+ username: (input, options) => postGeneric("/sign-in/username", input, options),
2109
+ social: (input, options) => postGeneric("/sign-in/social", input, options)
2110
+ },
2111
+ signUp: {
2112
+ email: (input, options) => postGeneric("/sign-up/email", input, options)
2113
+ },
2114
+ organization,
2115
+ callback: {
2116
+ provider: (input, options) => {
2117
+ const { payload, fetchOptions } = extractFetchOptions(input);
2118
+ const parsed = payload;
2119
+ const provider = String(parsed?.provider ?? "").trim();
2120
+ if (!provider) {
2121
+ throw new Error("callback.provider requires a non-empty provider value");
2122
+ }
2123
+ const code = String(parsed?.code ?? "").trim();
2124
+ const state = String(parsed?.state ?? "").trim();
2125
+ if (!code || !state) {
2126
+ throw new Error("callback.provider requires non-empty code and state values");
2127
+ }
2128
+ const endpoint = `/callback/${encodeURIComponent(provider)}`;
2129
+ return request({
2130
+ endpoint,
2131
+ method: "GET",
2132
+ query: {
2133
+ code,
2134
+ state
2135
+ },
2136
+ fetchOptions
2137
+ }, options);
2138
+ }
2139
+ }
2140
+ };
2141
+ return {
2142
+ baseUrl: normalizedBaseUrl,
2143
+ request,
2144
+ signIn: {
2145
+ email: (input, options) => executePostWithCompatibleInput(
2146
+ resolvedConfig,
2147
+ { endpoint: "/sign-in/email", method: "POST" },
2148
+ input,
2149
+ options
2150
+ ),
2151
+ username: (input, options) => executePostWithCompatibleInput(
2152
+ resolvedConfig,
2153
+ { endpoint: "/sign-in/username", method: "POST" },
2154
+ input,
2155
+ options
2156
+ ),
2157
+ social: (input, options) => executePostWithCompatibleInput(
2158
+ resolvedConfig,
2159
+ { endpoint: "/sign-in/social", method: "POST" },
2160
+ input,
2161
+ options
2162
+ )
2163
+ },
2164
+ signUp: {
2165
+ email: (input, options) => executePostWithCompatibleInput(
2166
+ resolvedConfig,
2167
+ { endpoint: "/sign-up/email", method: "POST" },
2168
+ input,
2169
+ options
2170
+ )
2171
+ },
2172
+ signOut,
2173
+ logout: signOut,
2174
+ getSession: (input, options) => executeGetWithCompatibleInput(
2175
+ resolvedConfig,
2176
+ { endpoint: "/get-session", method: "GET" },
2177
+ input,
2178
+ options
2179
+ ),
2180
+ listSessions: (input, options) => executeGetWithCompatibleInput(
2181
+ resolvedConfig,
2182
+ { endpoint: "/list-sessions", method: "GET" },
2183
+ input,
2184
+ options
2185
+ ),
2186
+ revokeSession,
2187
+ clearSession: revokeSession,
2188
+ revokeSessions,
2189
+ clearSessions: revokeSessions,
2190
+ revokeOtherSessions,
2191
+ clearOtherSessions: revokeOtherSessions,
2192
+ forgetPassword: (input, options) => executePostWithCompatibleInput(
2193
+ resolvedConfig,
2194
+ { endpoint: "/forget-password", method: "POST" },
2195
+ input,
2196
+ options
2197
+ ),
2198
+ resetPassword: (input, options) => executePostWithCompatibleInput(
2199
+ resolvedConfig,
2200
+ { endpoint: "/reset-password", method: "POST" },
2201
+ input,
2202
+ options
2203
+ ),
2204
+ resolveResetPasswordToken,
2205
+ verifyEmail: (input, options) => {
2206
+ const { payload, fetchOptions } = extractFetchOptions(input);
2207
+ const mergedOptions = mergeCallOptions(fetchOptions, options);
2208
+ const query = payload;
2209
+ return callAuthEndpoint(
2210
+ resolvedConfig,
2211
+ { endpoint: "/verify-email", method: "GET" },
2212
+ void 0,
2213
+ query ? {
2214
+ token: query.token,
2215
+ callbackURL: query.callbackURL
2216
+ } : void 0,
2217
+ mergedOptions
2218
+ );
2219
+ },
2220
+ sendVerificationEmail: (input, options) => executePostWithCompatibleInput(
2221
+ resolvedConfig,
2222
+ { endpoint: "/send-verification-email", method: "POST" },
2223
+ input,
2224
+ options
2225
+ ),
2226
+ changeEmail: (input, options) => executePostWithCompatibleInput(
2227
+ resolvedConfig,
2228
+ { endpoint: "/change-email", method: "POST" },
2229
+ input,
2230
+ options
2231
+ ),
2232
+ changePassword: (input, options) => executePostWithCompatibleInput(
2233
+ resolvedConfig,
2234
+ { endpoint: "/change-password", method: "POST" },
2235
+ input,
2236
+ options
2237
+ ),
2238
+ updateUser: (input, options) => executePostWithCompatibleInput(
2239
+ resolvedConfig,
2240
+ { endpoint: "/update-user", method: "POST" },
2241
+ input,
2242
+ options
2243
+ ),
2244
+ deleteUser,
2245
+ deleteUserCallback,
2246
+ linkSocial: (input, options) => executePostWithCompatibleInput(
2247
+ resolvedConfig,
2248
+ { endpoint: "/link-social", method: "POST" },
2249
+ input,
2250
+ options
2251
+ ),
2252
+ listAccounts: (input, options) => executeGetWithCompatibleInput(
2253
+ resolvedConfig,
2254
+ { endpoint: "/list-accounts", method: "GET" },
2255
+ input,
2256
+ options
2257
+ ),
2258
+ unlinkAccount: (input, options) => executePostWithCompatibleInput(
2259
+ resolvedConfig,
2260
+ { endpoint: "/unlink-account", method: "POST" },
2261
+ input,
2262
+ options
2263
+ ),
2264
+ refreshToken: (input, options) => executePostWithCompatibleInput(
2265
+ resolvedConfig,
2266
+ { endpoint: "/refresh-token", method: "POST" },
2267
+ input,
2268
+ options
2269
+ ),
2270
+ getAccessToken: (input, options) => executePostWithCompatibleInput(
2271
+ resolvedConfig,
2272
+ { endpoint: "/get-access-token", method: "POST" },
2273
+ input,
2274
+ options
2275
+ ),
2276
+ organization,
2277
+ auth
2278
+ };
2279
+ }
2280
+
1203
2281
  // src/client.ts
1204
2282
  var DEFAULT_COLUMNS = "*";
1205
2283
  var UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
@@ -1938,6 +3016,7 @@ function createClientFromConfig(config) {
1938
3016
  backend: config.backend,
1939
3017
  headers: config.headers
1940
3018
  });
3019
+ const auth = createAuthClient(config.auth);
1941
3020
  return {
1942
3021
  from(table) {
1943
3022
  return createTableBuilder(table, gateway);
@@ -1954,7 +3033,8 @@ function createClientFromConfig(config) {
1954
3033
  gateway
1955
3034
  );
1956
3035
  },
1957
- query: createQueryBuilder(gateway)
3036
+ query: createQueryBuilder(gateway),
3037
+ auth: auth.auth
1958
3038
  };
1959
3039
  }
1960
3040
  var DEFAULT_BACKEND = { type: "athena" };
@@ -2028,7 +3108,11 @@ function createClient(url, apiKey, options) {
2028
3108
  const b = AthenaClient.builder().url(url).key(apiKey).backend(toBackendConfig(options?.backend));
2029
3109
  if (options?.client) b.client(options.client);
2030
3110
  if (options?.headers && Object.keys(options.headers).length > 0) b.headers(options.headers);
2031
- return b.build();
3111
+ const client = b.build();
3112
+ if (options?.auth) {
3113
+ client.auth = createAuthClient(options.auth).auth;
3114
+ }
3115
+ return client;
2032
3116
  }
2033
3117
 
2034
3118
  // src/schema/postgres-introspection-core.ts