@xylex-group/athena 3.1.0 → 3.3.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.
Files changed (82) hide show
  1. package/README.md +1 -1
  2. package/dist/admin.cjs +55 -1
  3. package/dist/admin.cjs.map +1 -1
  4. package/dist/admin.d.cts +32 -8
  5. package/dist/admin.d.ts +32 -8
  6. package/dist/admin.js +54 -2
  7. package/dist/admin.js.map +1 -1
  8. package/dist/athena-auth-url-C1FbVmN6.d.cts +200 -0
  9. package/dist/athena-auth-url-C1FbVmN6.d.ts +200 -0
  10. package/dist/{athena-request-headers-C7Jy-c_D.d.ts → athena-request-headers-DzimbvOA.d.ts} +48 -200
  11. package/dist/{athena-request-headers-DujFFyMU.d.cts → athena-request-headers-Lr_m8xCV.d.cts} +48 -200
  12. package/dist/billing.cjs +1 -1
  13. package/dist/billing.cjs.map +1 -1
  14. package/dist/billing.js +1 -1
  15. package/dist/billing.js.map +1 -1
  16. package/dist/browser.cjs +602 -16
  17. package/dist/browser.cjs.map +1 -1
  18. package/dist/browser.d.cts +8 -7
  19. package/dist/browser.d.ts +8 -7
  20. package/dist/browser.js +593 -17
  21. package/dist/browser.js.map +1 -1
  22. package/dist/cli/index.cjs +141 -6
  23. package/dist/cli/index.cjs.map +1 -1
  24. package/dist/cli/index.d.cts +2 -2
  25. package/dist/cli/index.d.ts +2 -2
  26. package/dist/cli/index.js +141 -6
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/env.cjs +130 -0
  29. package/dist/env.cjs.map +1 -0
  30. package/dist/env.d.cts +70 -0
  31. package/dist/env.d.ts +70 -0
  32. package/dist/env.js +122 -0
  33. package/dist/env.js.map +1 -0
  34. package/dist/index.cjs +624 -19
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +8 -7
  37. package/dist/index.d.ts +8 -7
  38. package/dist/index.js +615 -20
  39. package/dist/index.js.map +1 -1
  40. package/dist/{model-form-BhWWsA-7.d.cts → model-form-3Gr8rkdT.d.cts} +24 -2
  41. package/dist/{model-form-BbdzJ9Uh.d.ts → model-form-CotpEL7z.d.ts} +24 -2
  42. package/dist/{module-xFd7_Igv.d.cts → module-CQmOaDzP.d.cts} +4 -4
  43. package/dist/{module-DKkJKOuJ.d.ts → module-CWkUTcUc.d.ts} +4 -4
  44. package/dist/next/client.cjs +123 -7
  45. package/dist/next/client.cjs.map +1 -1
  46. package/dist/next/client.d.cts +4 -3
  47. package/dist/next/client.d.ts +4 -3
  48. package/dist/next/client.js +123 -7
  49. package/dist/next/client.js.map +1 -1
  50. package/dist/next/server.cjs +1130 -364
  51. package/dist/next/server.cjs.map +1 -1
  52. package/dist/next/server.d.cts +121 -8
  53. package/dist/next/server.d.ts +121 -8
  54. package/dist/next/server.js +1120 -365
  55. package/dist/next/server.js.map +1 -1
  56. package/dist/{pipeline-DuKzYGia.d.cts → pipeline-BnRKO_Pd.d.cts} +1 -1
  57. package/dist/{pipeline-wer2G9xW.d.ts → pipeline-sWCmlFqu.d.ts} +1 -1
  58. package/dist/{proxy-request-headers-m4D2Tduy.d.ts → proxy-request-headers-CttlcuRb.d.ts} +1 -1
  59. package/dist/{proxy-request-headers-DGxdoyA0.d.cts → proxy-request-headers-pIBSn1Fw.d.cts} +1 -1
  60. package/dist/react.cjs +290 -31
  61. package/dist/react.cjs.map +1 -1
  62. package/dist/react.d.cts +59 -9
  63. package/dist/react.d.ts +59 -9
  64. package/dist/react.js +290 -32
  65. package/dist/react.js.map +1 -1
  66. package/dist/schema-handlers-BtT_IQFi.d.cts +138 -0
  67. package/dist/schema-handlers-VjFDhIMw.d.ts +138 -0
  68. package/dist/social-providers.d.cts +1 -1
  69. package/dist/social-providers.d.ts +1 -1
  70. package/dist/{types-CccOiXPo.d.ts → types-BDX8zS7w.d.ts} +12 -0
  71. package/dist/{types-AOY-GLu8.d.cts → types-BVKpQmfY.d.cts} +11 -0
  72. package/dist/{types-AOY-GLu8.d.ts → types-BVKpQmfY.d.ts} +11 -0
  73. package/dist/{types-1ztXDgPa.d.cts → types-D-Am7YSd.d.cts} +12 -0
  74. package/dist/utils.cjs +30 -0
  75. package/dist/utils.cjs.map +1 -1
  76. package/dist/utils.d.cts +3 -2
  77. package/dist/utils.d.ts +3 -2
  78. package/dist/utils.js +30 -1
  79. package/dist/utils.js.map +1 -1
  80. package/dist/{v3-client-CWfZHcKL.d.cts → v3-client-G1SLeHRa.d.cts} +23 -1
  81. package/dist/{v3-client-DZp2NEhK.d.ts → v3-client-ao8BWQ8v.d.ts} +23 -1
  82. package/package.json +16 -2
@@ -587,6 +587,13 @@ var GATEWAY_API_KEY_ENV_KEYS = [
587
587
  "ATHENA_GATEWAY_API_KEY",
588
588
  "ATHENA_GENERATOR_API_KEY"
589
589
  ];
590
+ var GATEWAY_CLIENT_ENV_KEYS = [
591
+ "ATHENA_CLIENT",
592
+ "ATHENA_GATEWAY_CLIENT",
593
+ "ATHENA_GENERATOR_CLIENT",
594
+ "NEXT_PUBLIC_ATHENA_CLIENT",
595
+ "NEXT_PUBLIC_ATHENA_GATEWAY_CLIENT"
596
+ ];
590
597
  var GENERATOR_SCHEMA_ENV_KEYS = ["ATHENA_GENERATOR_SCHEMAS"];
591
598
  var OUTPUT_FORMAT_ENV_KEYS = ["ATHENA_GENERATOR_OUTPUT_FORMAT"];
592
599
  var OUTPUT_PRESET_ENV_KEYS = ["ATHENA_GENERATOR_OUTPUT_PRESET"];
@@ -887,11 +894,13 @@ function normalizeProviderConfig(provider) {
887
894
  GATEWAY_API_KEY_ENV_KEYS
888
895
  );
889
896
  const database = normalizeOptionalString(provider.database, POSTGRES_DATABASE_ENV_KEYS) ?? "postgres";
897
+ const client = normalizeOptionalString(provider.client, GATEWAY_CLIENT_ENV_KEYS);
890
898
  return {
891
899
  ...provider,
892
900
  gatewayUrl,
893
901
  apiKey,
894
902
  database,
903
+ ...client ? { client } : {},
895
904
  schemas: normalizeSchemaSelection(provider.schemas)
896
905
  };
897
906
  }
@@ -1082,6 +1091,7 @@ function buildEnvironmentProviderConfig() {
1082
1091
  const apiKey = resolveFallbackValue(GATEWAY_API_KEY_ENV_KEYS);
1083
1092
  if (gatewayUrl && apiKey) {
1084
1093
  const backend = resolveOptionalOneOf(GATEWAY_BACKEND_ENV_KEYS, BACKEND_TYPE_VALUES);
1094
+ const client = resolveFallbackValue(GATEWAY_CLIENT_ENV_KEYS);
1085
1095
  return {
1086
1096
  kind: "postgres",
1087
1097
  mode: "gateway",
@@ -1089,7 +1099,8 @@ function buildEnvironmentProviderConfig() {
1089
1099
  apiKey,
1090
1100
  database: normalizeOptionalString(void 0, POSTGRES_DATABASE_ENV_KEYS),
1091
1101
  schemas: normalizeSchemaSelection(resolveFallbackValue(GENERATOR_SCHEMA_ENV_KEYS)),
1092
- backend
1102
+ backend,
1103
+ ...client ? { client } : {}
1093
1104
  };
1094
1105
  }
1095
1106
  return void 0;
@@ -2525,7 +2536,7 @@ function buildAthenaGatewayUrl(baseUrl, path) {
2525
2536
 
2526
2537
  // package.json
2527
2538
  var package_default = {
2528
- version: "3.1.0"
2539
+ version: "3.3.0"
2529
2540
  };
2530
2541
 
2531
2542
  // src/sdk-version.ts
@@ -4592,6 +4603,14 @@ function createAuthModule(config = {}, runtimeOptions = {}) {
4592
4603
  changeEmailVerify: (input, options) => getWithQuery("/change-email/verify", input, options),
4593
4604
  deleteUserVerify: (input, options) => getWithQuery("/delete-user/verify", input, options),
4594
4605
  changePassword: (input, options) => postGeneric("/change-password", input, options),
4606
+ // Better Auth UI flat method aliases (also nested under session/account/social/user).
4607
+ listSessions: (input, options) => getGeneric("/list-sessions", input, options),
4608
+ revokeSession: sessionRevokeBinding,
4609
+ revokeOtherSessions,
4610
+ listAccounts: (input, options) => getGeneric("/list-accounts", input, options),
4611
+ unlinkAccount: (input, options) => postGeneric("/unlink-account", input, options),
4612
+ linkSocial: (input, options) => postGeneric("/link-social", input, options),
4613
+ updateUser: (input, options) => postGeneric("/update-user", input, options),
4595
4614
  user: {
4596
4615
  update: (input, options) => postGeneric("/update-user", input, options),
4597
4616
  delete: (input, options) => postGeneric("/delete-user", input, options),
@@ -10254,6 +10273,82 @@ function mergeAthenaRequestContexts(base, override) {
10254
10273
  };
10255
10274
  }
10256
10275
 
10276
+ // src/diagnostics.ts
10277
+ function readProcessEnv2() {
10278
+ try {
10279
+ return globalThis.process?.env ?? {};
10280
+ } catch {
10281
+ return {};
10282
+ }
10283
+ }
10284
+ function isTruthyEnv(value) {
10285
+ if (!value) return false;
10286
+ const normalized = value.trim().toLowerCase();
10287
+ return normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on";
10288
+ }
10289
+ function isQuietAthenaDiagnosticsEnvironment(env = readProcessEnv2()) {
10290
+ const nodeEnv = env.NODE_ENV?.trim().toLowerCase();
10291
+ if (nodeEnv === "production") {
10292
+ return true;
10293
+ }
10294
+ if (isTruthyEnv(env.OPENNEXT_BUILD)) {
10295
+ return true;
10296
+ }
10297
+ const nextPhase = env.NEXT_PHASE?.trim();
10298
+ if (nextPhase === "phase-production-build") {
10299
+ return true;
10300
+ }
10301
+ if (isTruthyEnv(env.CI) && nodeEnv !== "test") {
10302
+ if (nodeEnv === "production" || isTruthyEnv(env.OPENNEXT_BUILD)) {
10303
+ return true;
10304
+ }
10305
+ }
10306
+ return false;
10307
+ }
10308
+ function resolveBooleanFlag(explicit, mode, quiet) {
10309
+ if (typeof explicit === "boolean") {
10310
+ return explicit;
10311
+ }
10312
+ if (mode === true) {
10313
+ return true;
10314
+ }
10315
+ if (mode === false) {
10316
+ return false;
10317
+ }
10318
+ if (mode === "auto") {
10319
+ return false;
10320
+ }
10321
+ return false;
10322
+ }
10323
+ function resolveAthenaClientDiagnostics(input) {
10324
+ const env = input.env ?? readProcessEnv2();
10325
+ const quiet = isQuietAthenaDiagnosticsEnvironment(env);
10326
+ const mode = input.diagnostics;
10327
+ const effectiveMode = mode === "auto" && quiet ? false : mode;
10328
+ const debugAst = resolveBooleanFlag(input.debugAst, effectiveMode);
10329
+ const findManyAst = resolveBooleanFlag(input.findManyAst, effectiveMode);
10330
+ let traceQueries;
10331
+ if (input.traceQueries !== void 0) {
10332
+ if (typeof input.traceQueries === "boolean") {
10333
+ traceQueries = input.traceQueries;
10334
+ } else if (effectiveMode === false || mode === "auto" && quiet) {
10335
+ const enabled = input.traceQueries.enabled;
10336
+ traceQueries = typeof enabled === "boolean" ? enabled ? input.traceQueries : false : false;
10337
+ } else {
10338
+ traceQueries = input.traceQueries;
10339
+ }
10340
+ } else if (effectiveMode === true) {
10341
+ traceQueries = true;
10342
+ } else {
10343
+ traceQueries = false;
10344
+ }
10345
+ return {
10346
+ debugAst,
10347
+ findManyAst,
10348
+ traceQueries
10349
+ };
10350
+ }
10351
+
10257
10352
  // src/v3-client.ts
10258
10353
  var ENV_URL_KEYS = ["ATHENA_URL", "NEXT_PUBLIC_ATHENA_URL"];
10259
10354
  var ENV_DB_URL_KEYS = ["ATHENA_DB_URL", "ATHENA_GATEWAY_URL", "NEXT_PUBLIC_ATHENA_DB_API_URL"];
@@ -10262,7 +10357,13 @@ var ENV_CHAT_URL_KEYS = ["ATHENA_CHAT_URL", "NEXT_PUBLIC_ATHENA_CHAT_URL"];
10262
10357
  var ENV_CHAT_WS_URL_KEYS = ["ATHENA_CHAT_WS_URL", "NEXT_PUBLIC_ATHENA_CHAT_WS_URL"];
10263
10358
  var ENV_STORAGE_URL_KEYS = ["ATHENA_STORAGE_URL", "NEXT_PUBLIC_ATHENA_STORAGE_URL"];
10264
10359
  var ENV_KEY_KEYS = ["ATHENA_API_KEY", "NEXT_PUBLIC_ATHENA_API_KEY", "ATHENA_GATEWAY_API_KEY", "X_API_KEY"];
10265
- var ENV_CLIENT_KEYS = ["ATHENA_CLIENT", "NEXT_PUBLIC_ATHENA_CLIENT"];
10360
+ var ENV_CLIENT_KEYS = [
10361
+ "ATHENA_CLIENT",
10362
+ "ATHENA_GATEWAY_CLIENT",
10363
+ "ATHENA_GENERATOR_CLIENT",
10364
+ "NEXT_PUBLIC_ATHENA_CLIENT",
10365
+ "NEXT_PUBLIC_ATHENA_GATEWAY_CLIENT"
10366
+ ];
10266
10367
  var MISSING_DB_SENTINEL = "https://athena.invalid/db";
10267
10368
  function readFirstEnv(env, keys) {
10268
10369
  for (const key of keys) {
@@ -10337,6 +10438,13 @@ function createInternalConfig(core) {
10337
10438
  const { config, urls } = core;
10338
10439
  const { url: _authUrl, ...authOptions } = config.auth ?? {};
10339
10440
  const { url: _storageUrl, directUpload, ...storageOptions } = config.storage ?? {};
10441
+ const diagnostics = resolveAthenaClientDiagnostics({
10442
+ diagnostics: config.diagnostics,
10443
+ debugAst: config.debugAst,
10444
+ findManyAst: config.findManyAst,
10445
+ traceQueries: config.traceQueries,
10446
+ env: config.env
10447
+ });
10340
10448
  return {
10341
10449
  baseUrl: urls.db ?? MISSING_DB_SENTINEL,
10342
10450
  apiKey: core.key,
@@ -10353,9 +10461,9 @@ function createInternalConfig(core) {
10353
10461
  models: config.models,
10354
10462
  behavior: {
10355
10463
  retryReads: config.retryReads,
10356
- traceQueries: config.traceQueries,
10357
- debugAst: config.debugAst,
10358
- findManyAst: config.findManyAst
10464
+ traceQueries: diagnostics.traceQueries,
10465
+ debugAst: diagnostics.debugAst,
10466
+ findManyAst: diagnostics.findManyAst
10359
10467
  },
10360
10468
  storage: {
10361
10469
  ...storageOptions,
@@ -10429,11 +10537,30 @@ function createClientView(core, viewContext) {
10429
10537
  return resolved.verifyConnection(options);
10430
10538
  },
10431
10539
  withContext(context) {
10540
+ warnIfEmptyRequestContext(context);
10432
10541
  return createClientView(core, mergeAthenaRequestContexts(viewContext, context));
10433
10542
  }
10434
10543
  };
10435
10544
  return Object.freeze(client);
10436
10545
  }
10546
+ function isEmptyAthenaRequestContext(context) {
10547
+ if (!context) return true;
10548
+ const hasHeaders = context.headers != null && Object.keys(context.headers).length > 0;
10549
+ return context.userId == null && context.organizationId == null && !normalizeOptionalContextString(context.cookie) && !normalizeOptionalContextString(context.bearerToken) && !normalizeOptionalContextString(context.sessionToken) && !context.forceNoCache && !hasHeaders;
10550
+ }
10551
+ function normalizeOptionalContextString(value) {
10552
+ const trimmed = value?.trim();
10553
+ return trimmed || void 0;
10554
+ }
10555
+ function warnIfEmptyRequestContext(context) {
10556
+ if (!isEmptyAthenaRequestContext(context)) return;
10557
+ if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") {
10558
+ return;
10559
+ }
10560
+ console.warn(
10561
+ "[athena] withContext({}) has no userId, organizationId, cookie, bearerToken, sessionToken, headers, or forceNoCache. Gateway scope headers will not change. Pass identity fields, or use createAthenaServerClient({ session, scope })."
10562
+ );
10563
+ }
10437
10564
  function createClient(config) {
10438
10565
  return createClientView(resolveCore(config));
10439
10566
  }
@@ -10534,6 +10661,8 @@ async function discoverGatewaySchemas(config) {
10534
10661
  const client = createClient({
10535
10662
  db: { url: config.gatewayUrl },
10536
10663
  key: config.apiKey,
10664
+ client: config.client,
10665
+ env: typeof process !== "undefined" ? process.env : void 0,
10537
10666
  backend: {
10538
10667
  type: config.backend ?? "postgresql"
10539
10668
  }
@@ -10620,6 +10749,7 @@ function buildGatewayProviderBlock(schemas) {
10620
10749
  mode: "gateway",
10621
10750
  gatewayUrl: generatorEnv("ATHENA_URL"),
10622
10751
  apiKey: generatorEnv("ATHENA_API_KEY"),
10752
+ client: generatorEnv("ATHENA_CLIENT", { optional: true }),
10623
10753
  database: generatorEnv("ATHENA_GENERATOR_DB", { default: "postgres" }),
10624
10754
  schemas: ${formatStringArray(schemas, " ")},
10625
10755
  }`;
@@ -12936,6 +13066,11 @@ var AthenaGatewayPostgresIntrospectionProvider = class {
12936
13066
  this.client = createClient({
12937
13067
  db: { url: this.config.gatewayUrl },
12938
13068
  key: this.config.apiKey,
13069
+ // Multi-tenant gateways reject DEFAULT_CLIENT; prefer explicit config.
13070
+ // Also pass process.env so ATHENA_CLIENT / ATHENA_GATEWAY_CLIENT still resolve
13071
+ // when the field was not normalized into provider config.
13072
+ client: this.config.client,
13073
+ env: typeof process !== "undefined" ? process.env : void 0,
12939
13074
  backend: {
12940
13075
  type: this.config.backend ?? "postgresql"
12941
13076
  }