@xylex-group/athena 2.12.1 → 2.13.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.
- package/LICENSE +21 -21
- package/README.md +1190 -1184
- package/bin/athena-js.js +104 -76
- package/dist/admin.cjs +45 -0
- package/dist/admin.cjs.map +1 -0
- package/dist/admin.d.cts +64 -0
- package/dist/admin.d.ts +64 -0
- package/dist/admin.js +41 -0
- package/dist/admin.js.map +1 -0
- package/dist/athena-auth-url-oLux_57a.d.cts +377 -0
- package/dist/athena-auth-url-oLux_57a.d.ts +377 -0
- package/dist/browser.cjs +33 -49
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +12 -10
- package/dist/browser.d.ts +12 -10
- package/dist/browser.js +33 -49
- package/dist/browser.js.map +1 -1
- package/dist/cli/index.cjs +150 -51
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.cts +14 -5
- package/dist/cli/index.d.ts +14 -5
- package/dist/cli/index.js +150 -52
- package/dist/cli/index.js.map +1 -1
- package/dist/{client-CMtx5P4D.d.cts → client-BJjUwDSg.d.cts} +109 -1448
- package/dist/{client-Dre8H24u.d.ts → client-DVOKSYDI.d.ts} +109 -1448
- package/dist/cookies.cjs +18 -0
- package/dist/cookies.cjs.map +1 -1
- package/dist/cookies.d.cts +2 -1
- package/dist/cookies.d.ts +2 -1
- package/dist/cookies.js +17 -1
- package/dist/cookies.js.map +1 -1
- package/dist/{index-CVcQCGyG.d.ts → index-CFL9xbFR.d.cts} +2 -0
- package/dist/{index-CVcQCGyG.d.cts → index-UKJpunc6.d.ts} +2 -0
- package/dist/index.cjs +101 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -10
- package/dist/index.d.ts +13 -10
- package/dist/index.js +101 -50
- package/dist/index.js.map +1 -1
- package/dist/{model-form-DfTi8-D1.d.cts → model-form-Dw4zEL5a.d.cts} +2 -2
- package/dist/{model-form-CU0mWrF9.d.ts → model-form-yRg71q3H.d.ts} +2 -2
- package/dist/{module-DBGmbIuh.d.ts → module-DBteUIob.d.ts} +12 -9
- package/dist/{module-GoijrBXV.d.cts → module-yoX49uQC.d.cts} +12 -9
- package/dist/next/client.cjs +452 -49
- package/dist/next/client.cjs.map +1 -1
- package/dist/next/client.d.cts +7 -4
- package/dist/next/client.d.ts +7 -4
- package/dist/next/client.js +430 -50
- package/dist/next/client.js.map +1 -1
- package/dist/next/server.cjs +292 -49
- package/dist/next/server.cjs.map +1 -1
- package/dist/next/server.d.cts +81 -5
- package/dist/next/server.d.ts +81 -5
- package/dist/next/server.js +280 -50
- package/dist/next/server.js.map +1 -1
- package/dist/organization.cjs +72 -0
- package/dist/organization.cjs.map +1 -0
- package/dist/organization.d.cts +43 -0
- package/dist/organization.d.ts +43 -0
- package/dist/organization.js +70 -0
- package/dist/organization.js.map +1 -0
- package/dist/payload-BzVbUgY_.d.cts +219 -0
- package/dist/payload-DEOWN_oo.d.ts +219 -0
- package/dist/{pipeline-DrjU2vNA.d.ts → pipeline-Bj6RWt1A.d.ts} +1 -1
- package/dist/{pipeline-c7Gdm0qv.d.cts → pipeline-Dwck-wZO.d.cts} +1 -1
- package/dist/react.cjs +2 -13
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +26 -7
- package/dist/react.d.ts +26 -7
- package/dist/react.js +2 -13
- package/dist/react.js.map +1 -1
- package/dist/session-cookie-detection-BqOp9mO6.d.cts +46 -0
- package/dist/session-cookie-detection-BqOp9mO6.d.ts +46 -0
- package/dist/social-providers.cjs +4189 -0
- package/dist/social-providers.cjs.map +1 -0
- package/dist/social-providers.d.cts +4948 -0
- package/dist/social-providers.d.ts +4948 -0
- package/dist/social-providers.js +4117 -0
- package/dist/social-providers.js.map +1 -0
- package/dist/{types-Bez4HSbI.d.cts → types-BRP7sfSF.d.ts} +50 -2
- package/dist/{types-kPaHUqUa.d.ts → types-BU8uJH_b.d.cts} +50 -2
- package/dist/{types-BRUHGXo2.d.ts → types-CH78O90i.d.cts} +2 -2
- package/dist/{types-BRUHGXo2.d.cts → types-CH78O90i.d.ts} +2 -2
- package/dist/{types-BLizCLd1.d.cts → types-CjC9_5ZQ.d.cts} +3 -3
- package/dist/{types-DRRb0Fd0.d.ts → types-DPgejxYC.d.ts} +3 -3
- package/dist/types-eAKAh71s.d.cts +1476 -0
- package/dist/types-eAKAh71s.d.ts +1476 -0
- package/dist/utils.cjs +438 -15
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +76 -11
- package/dist/utils.d.ts +76 -11
- package/dist/utils.js +390 -16
- package/dist/utils.js.map +1 -1
- package/package.json +49 -22
- package/dist/shared-DZSGAmXs.d.cts +0 -35
- package/dist/shared-MMnVBBfy.d.ts +0 -35
package/dist/next/client.cjs
CHANGED
|
@@ -162,7 +162,7 @@ var getSessionCookie = (request2, config) => {
|
|
|
162
162
|
|
|
163
163
|
// src/utils/athena-request-headers.ts
|
|
164
164
|
var NO_CACHE_HEADER_VALUE = "no-cache";
|
|
165
|
-
var API_KEY_HEADER_CANDIDATES = ["X-Api-Key", "x-api-key", "apikey"];
|
|
165
|
+
var API_KEY_HEADER_CANDIDATES = ["X-Athena-Key", "x-athena-key", "X-Api-Key", "x-api-key", "apikey"];
|
|
166
166
|
var ATHENA_KEY_HEADER_CANDIDATES = ["X-Athena-Key", "x-athena-key"];
|
|
167
167
|
var SESSION_TOKEN_HEADER_CANDIDATES = ["X-Athena-Auth-Session-Token"];
|
|
168
168
|
var BEARER_MIRROR_HEADER_CANDIDATES = ["X-Athena-Auth-Bearer-Token"];
|
|
@@ -264,17 +264,6 @@ function buildServiceRequestHeaders(profile, sdkHeaderValue, config, options, ex
|
|
|
264
264
|
});
|
|
265
265
|
}
|
|
266
266
|
function applyAthenaApiKeyHeaders(headers, apiKey, athenaKey) {
|
|
267
|
-
if (apiKey) {
|
|
268
|
-
if (!hasHeaderIgnoreCase(headers, "apikey")) {
|
|
269
|
-
headers.apikey = apiKey;
|
|
270
|
-
}
|
|
271
|
-
if (!Object.hasOwn(headers, "x-api-key")) {
|
|
272
|
-
headers["x-api-key"] = apiKey;
|
|
273
|
-
}
|
|
274
|
-
if (!Object.hasOwn(headers, "X-Api-Key")) {
|
|
275
|
-
headers["X-Api-Key"] = apiKey;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
267
|
const resolvedAthenaKey = normalizeHeaderValue(athenaKey) ?? normalizeHeaderValue(apiKey);
|
|
279
268
|
if (resolvedAthenaKey && !hasHeaderIgnoreCase(headers, "X-Athena-Key")) {
|
|
280
269
|
headers["X-Athena-Key"] = resolvedAthenaKey;
|
|
@@ -400,7 +389,7 @@ function buildAthenaRequestHeaders(input) {
|
|
|
400
389
|
|
|
401
390
|
// package.json
|
|
402
391
|
var package_default = {
|
|
403
|
-
version: "2.
|
|
392
|
+
version: "2.13.0"
|
|
404
393
|
};
|
|
405
394
|
|
|
406
395
|
// src/sdk-version.ts
|
|
@@ -2829,38 +2818,6 @@ async function withRetry(config, fn) {
|
|
|
2829
2818
|
throw new Error("withRetry reached an unexpected state");
|
|
2830
2819
|
}
|
|
2831
2820
|
|
|
2832
|
-
// src/db/module.ts
|
|
2833
|
-
function createDbModule(input) {
|
|
2834
|
-
const db = {
|
|
2835
|
-
from: input.from,
|
|
2836
|
-
select(table, first, second) {
|
|
2837
|
-
if (first && typeof first === "object" && !Array.isArray(first)) {
|
|
2838
|
-
return input.from(table).select(void 0, first);
|
|
2839
|
-
}
|
|
2840
|
-
return input.from(table).select(first, second);
|
|
2841
|
-
},
|
|
2842
|
-
insert(table, values, options) {
|
|
2843
|
-
return Array.isArray(values) ? input.from(table).insert(values, options) : input.from(table).insert(values, options);
|
|
2844
|
-
},
|
|
2845
|
-
upsert(table, values, options) {
|
|
2846
|
-
return Array.isArray(values) ? input.from(table).upsert(values, options) : input.from(table).upsert(values, options);
|
|
2847
|
-
},
|
|
2848
|
-
update(table, values, options) {
|
|
2849
|
-
return input.from(table).update(values, options);
|
|
2850
|
-
},
|
|
2851
|
-
delete(table, options) {
|
|
2852
|
-
return input.from(table).delete(options);
|
|
2853
|
-
},
|
|
2854
|
-
rpc(fn, args, options) {
|
|
2855
|
-
return input.rpc(fn, args, options);
|
|
2856
|
-
},
|
|
2857
|
-
query(query, options) {
|
|
2858
|
-
return input.query(query, options);
|
|
2859
|
-
}
|
|
2860
|
-
};
|
|
2861
|
-
return db;
|
|
2862
|
-
}
|
|
2863
|
-
|
|
2864
2821
|
// src/storage/file.ts
|
|
2865
2822
|
function createStorageFileModule(base, config = {}) {
|
|
2866
2823
|
const upload = async (input, options) => {
|
|
@@ -8439,7 +8396,30 @@ function createClientFromConfig(config, sourceConfig) {
|
|
|
8439
8396
|
config.experimental,
|
|
8440
8397
|
queryTracer
|
|
8441
8398
|
);
|
|
8442
|
-
const
|
|
8399
|
+
const untypedDbFrom = from;
|
|
8400
|
+
const db = {
|
|
8401
|
+
from,
|
|
8402
|
+
select(table, first, second) {
|
|
8403
|
+
if (first && typeof first === "object" && !Array.isArray(first)) {
|
|
8404
|
+
return untypedDbFrom(table).select(void 0, first);
|
|
8405
|
+
}
|
|
8406
|
+
return untypedDbFrom(table).select(first, second);
|
|
8407
|
+
},
|
|
8408
|
+
insert(table, values, options) {
|
|
8409
|
+
return Array.isArray(values) ? untypedDbFrom(table).insert(values, options) : untypedDbFrom(table).insert(values, options);
|
|
8410
|
+
},
|
|
8411
|
+
upsert(table, values, options) {
|
|
8412
|
+
return Array.isArray(values) ? untypedDbFrom(table).upsert(values, options) : untypedDbFrom(table).upsert(values, options);
|
|
8413
|
+
},
|
|
8414
|
+
update(table, values, options) {
|
|
8415
|
+
return untypedDbFrom(table).update(values, options);
|
|
8416
|
+
},
|
|
8417
|
+
delete(table, options) {
|
|
8418
|
+
return untypedDbFrom(table).delete(options);
|
|
8419
|
+
},
|
|
8420
|
+
rpc,
|
|
8421
|
+
query
|
|
8422
|
+
};
|
|
8443
8423
|
const chat = createChatModule({
|
|
8444
8424
|
baseUrl: config.chatUrl,
|
|
8445
8425
|
apiKey: config.apiKey,
|
|
@@ -8590,7 +8570,9 @@ function createClientFromConfig(config, sourceConfig) {
|
|
|
8590
8570
|
var AthenaClient = class {
|
|
8591
8571
|
/** Create a fluent builder for a strongly-typed Athena SDK client. */
|
|
8592
8572
|
static builder() {
|
|
8593
|
-
return createAthenaClientBuilder(
|
|
8573
|
+
return createAthenaClientBuilder(
|
|
8574
|
+
(config) => createClientFromInput(config)
|
|
8575
|
+
);
|
|
8594
8576
|
}
|
|
8595
8577
|
static fromEnvironment(options = {}) {
|
|
8596
8578
|
const env = options.env ?? process.env;
|
|
@@ -8621,11 +8603,12 @@ var AthenaClient = class {
|
|
|
8621
8603
|
});
|
|
8622
8604
|
}
|
|
8623
8605
|
};
|
|
8624
|
-
function createClient(
|
|
8606
|
+
function createClient(...args) {
|
|
8607
|
+
const [configOrUrl, apiKey, options] = args;
|
|
8625
8608
|
if (typeof configOrUrl === "string" || configOrUrl === null || configOrUrl === void 0) {
|
|
8626
8609
|
return createClientFromInput({
|
|
8627
8610
|
url: configOrUrl,
|
|
8628
|
-
key: "",
|
|
8611
|
+
key: apiKey ?? "",
|
|
8629
8612
|
...options
|
|
8630
8613
|
});
|
|
8631
8614
|
}
|
|
@@ -8669,6 +8652,403 @@ function createAdapterClient(options, context) {
|
|
|
8669
8652
|
return client;
|
|
8670
8653
|
}
|
|
8671
8654
|
|
|
8655
|
+
// src/next/session-bridge/constants.ts
|
|
8656
|
+
var ATHENA_AUTH_SESSION_BRIDGE_ROUTE = "/api/athena-auth/session";
|
|
8657
|
+
var ATHENA_AUTH_SESSION_COOKIE_NAME = "athena-auth.session-token";
|
|
8658
|
+
var ATHENA_AUTH_SESSION_COOKIE_NAMES = [
|
|
8659
|
+
ATHENA_AUTH_SESSION_COOKIE_NAME,
|
|
8660
|
+
"athena-auth.session_token"
|
|
8661
|
+
];
|
|
8662
|
+
|
|
8663
|
+
// src/next/session-bridge/client.ts
|
|
8664
|
+
var JSON_CONTENT_TYPE = "application/json";
|
|
8665
|
+
function isBrowserRuntime() {
|
|
8666
|
+
return typeof globalThis !== "undefined" && "window" in globalThis;
|
|
8667
|
+
}
|
|
8668
|
+
async function persistAthenaAuthSessionOnAppHost(payload, options) {
|
|
8669
|
+
if (!(payload && isBrowserRuntime())) {
|
|
8670
|
+
return;
|
|
8671
|
+
}
|
|
8672
|
+
const route = options?.route ?? ATHENA_AUTH_SESSION_BRIDGE_ROUTE;
|
|
8673
|
+
const fetchImpl = options?.fetch ?? fetch;
|
|
8674
|
+
const response = await fetchImpl(route, {
|
|
8675
|
+
body: JSON.stringify(payload),
|
|
8676
|
+
credentials: "same-origin",
|
|
8677
|
+
headers: {
|
|
8678
|
+
"Content-Type": JSON_CONTENT_TYPE
|
|
8679
|
+
},
|
|
8680
|
+
method: "POST"
|
|
8681
|
+
});
|
|
8682
|
+
if (!response.ok) {
|
|
8683
|
+
throw new Error("Failed to persist the Athena Auth session on the app host");
|
|
8684
|
+
}
|
|
8685
|
+
}
|
|
8686
|
+
async function clearAthenaAuthSessionOnAppHost(options) {
|
|
8687
|
+
if (!isBrowserRuntime()) {
|
|
8688
|
+
return;
|
|
8689
|
+
}
|
|
8690
|
+
const route = options?.route ?? ATHENA_AUTH_SESSION_BRIDGE_ROUTE;
|
|
8691
|
+
const fetchImpl = options?.fetch ?? fetch;
|
|
8692
|
+
const response = await fetchImpl(route, {
|
|
8693
|
+
credentials: "same-origin",
|
|
8694
|
+
method: "DELETE"
|
|
8695
|
+
});
|
|
8696
|
+
if (!response.ok) {
|
|
8697
|
+
throw new Error("Failed to clear the Athena Auth session on the app host");
|
|
8698
|
+
}
|
|
8699
|
+
}
|
|
8700
|
+
|
|
8701
|
+
// src/next/session-bridge/payload.ts
|
|
8702
|
+
function resolveSessionBridgePayload(payload) {
|
|
8703
|
+
const token = payload?.session?.token ?? payload?.token;
|
|
8704
|
+
if (typeof token !== "string") {
|
|
8705
|
+
return null;
|
|
8706
|
+
}
|
|
8707
|
+
const normalizedToken = token.trim();
|
|
8708
|
+
if (!normalizedToken) {
|
|
8709
|
+
return null;
|
|
8710
|
+
}
|
|
8711
|
+
return {
|
|
8712
|
+
token: normalizedToken,
|
|
8713
|
+
expiresAt: typeof payload?.session?.expiresAt === "string" ? payload.session.expiresAt : void 0
|
|
8714
|
+
};
|
|
8715
|
+
}
|
|
8716
|
+
|
|
8717
|
+
// src/utils/hostname.ts
|
|
8718
|
+
var LOCAL_IPV4_PATTERN = /^127(?:\.\d{1,3}){3}$/;
|
|
8719
|
+
function isLocalHostname(hostname) {
|
|
8720
|
+
const normalized = hostname.trim().replace(/\.$/, "").toLowerCase();
|
|
8721
|
+
if (!normalized) {
|
|
8722
|
+
return false;
|
|
8723
|
+
}
|
|
8724
|
+
if (normalized === "localhost" || normalized.endsWith(".localhost")) {
|
|
8725
|
+
return true;
|
|
8726
|
+
}
|
|
8727
|
+
if (normalized === "127.0.0.1" || LOCAL_IPV4_PATTERN.test(normalized) || normalized === "::1" || normalized === "[::1]" || normalized === "0:0:0:0:0:0:0:1") {
|
|
8728
|
+
return true;
|
|
8729
|
+
}
|
|
8730
|
+
return false;
|
|
8731
|
+
}
|
|
8732
|
+
|
|
8733
|
+
// src/utils/auth-cookies.ts
|
|
8734
|
+
var ATHENA_AUTH_COOKIE_PREFIXES = [
|
|
8735
|
+
"athena-auth",
|
|
8736
|
+
"__Secure-athena-auth",
|
|
8737
|
+
"better-auth",
|
|
8738
|
+
"__Secure-better-auth"
|
|
8739
|
+
];
|
|
8740
|
+
function extractCookieNames(cookieHeader) {
|
|
8741
|
+
const names = /* @__PURE__ */ new Set();
|
|
8742
|
+
for (const rawCookie of cookieHeader.split(";")) {
|
|
8743
|
+
const trimmed = rawCookie.trim();
|
|
8744
|
+
if (!trimmed) continue;
|
|
8745
|
+
const eqPos = trimmed.indexOf("=");
|
|
8746
|
+
const name = (eqPos > -1 ? trimmed.slice(0, eqPos) : trimmed).trim();
|
|
8747
|
+
if (name) {
|
|
8748
|
+
names.add(name);
|
|
8749
|
+
}
|
|
8750
|
+
}
|
|
8751
|
+
return Array.from(names);
|
|
8752
|
+
}
|
|
8753
|
+
function buildCookieDomainCandidates(hostname) {
|
|
8754
|
+
const normalized = hostname.trim().replace(/\.$/, "").toLowerCase();
|
|
8755
|
+
if (!normalized || isLocalHostname(normalized)) {
|
|
8756
|
+
return [];
|
|
8757
|
+
}
|
|
8758
|
+
const labels = normalized.split(".").filter(Boolean);
|
|
8759
|
+
if (labels.length < 2) {
|
|
8760
|
+
return [normalized, `.${normalized}`];
|
|
8761
|
+
}
|
|
8762
|
+
const domains = /* @__PURE__ */ new Set();
|
|
8763
|
+
for (let index = 0; index <= labels.length - 2; index += 1) {
|
|
8764
|
+
const domain = labels.slice(index).join(".");
|
|
8765
|
+
domains.add(domain);
|
|
8766
|
+
domains.add(`.${domain}`);
|
|
8767
|
+
}
|
|
8768
|
+
return Array.from(domains);
|
|
8769
|
+
}
|
|
8770
|
+
function getCookieStore() {
|
|
8771
|
+
const candidate = globalThis.document;
|
|
8772
|
+
if (!candidate || typeof candidate.cookie !== "string") {
|
|
8773
|
+
return null;
|
|
8774
|
+
}
|
|
8775
|
+
return candidate;
|
|
8776
|
+
}
|
|
8777
|
+
function getRuntimeHostname() {
|
|
8778
|
+
const fromWindow = globalThis.window?.location?.hostname;
|
|
8779
|
+
if (typeof fromWindow === "string") {
|
|
8780
|
+
return fromWindow;
|
|
8781
|
+
}
|
|
8782
|
+
const fromLocation = globalThis.location?.hostname;
|
|
8783
|
+
if (typeof fromLocation === "string") {
|
|
8784
|
+
return fromLocation;
|
|
8785
|
+
}
|
|
8786
|
+
return "";
|
|
8787
|
+
}
|
|
8788
|
+
function writeExpiredCookie(cookieStore, name, path, domain) {
|
|
8789
|
+
const domainClause = domain ? ` domain=${domain};` : "";
|
|
8790
|
+
cookieStore.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; path=${path};${domainClause}`;
|
|
8791
|
+
}
|
|
8792
|
+
function clearAuthCookies(options = {}) {
|
|
8793
|
+
const cookieStore = getCookieStore();
|
|
8794
|
+
if (!cookieStore) {
|
|
8795
|
+
return [];
|
|
8796
|
+
}
|
|
8797
|
+
const cookieHeader = options.cookieHeader ?? cookieStore.cookie;
|
|
8798
|
+
if (!cookieHeader?.trim()) {
|
|
8799
|
+
return [];
|
|
8800
|
+
}
|
|
8801
|
+
const prefixes = options.prefixes?.length ? options.prefixes : [...ATHENA_AUTH_COOKIE_PREFIXES];
|
|
8802
|
+
const cookieNames = extractCookieNames(cookieHeader);
|
|
8803
|
+
const namesToClear = cookieNames.filter(
|
|
8804
|
+
(name) => prefixes.some((prefix) => name.startsWith(prefix))
|
|
8805
|
+
);
|
|
8806
|
+
if (namesToClear.length === 0) {
|
|
8807
|
+
return [];
|
|
8808
|
+
}
|
|
8809
|
+
const path = options.path?.trim() || "/";
|
|
8810
|
+
const hostname = options.hostname ?? getRuntimeHostname();
|
|
8811
|
+
const domainCandidates = buildCookieDomainCandidates(hostname);
|
|
8812
|
+
for (const name of namesToClear) {
|
|
8813
|
+
writeExpiredCookie(cookieStore, name, path);
|
|
8814
|
+
for (const domain of domainCandidates) {
|
|
8815
|
+
writeExpiredCookie(cookieStore, name, path, domain);
|
|
8816
|
+
}
|
|
8817
|
+
}
|
|
8818
|
+
return namesToClear;
|
|
8819
|
+
}
|
|
8820
|
+
|
|
8821
|
+
// src/utils/auth-routes.ts
|
|
8822
|
+
var AUTH_DEFAULT_VIEW = "sign-in";
|
|
8823
|
+
var AUTH_VIEW_BY_SEGMENT = {
|
|
8824
|
+
"accept-invitation": "accept-invitation",
|
|
8825
|
+
"check-email": "check-email",
|
|
8826
|
+
"forget-password": "forgot-password",
|
|
8827
|
+
"forgot-password": "forgot-password",
|
|
8828
|
+
logout: "logout",
|
|
8829
|
+
"reset-email-sent": "reset-email-sent",
|
|
8830
|
+
"reset-password": "reset-password",
|
|
8831
|
+
"sign-in": "sign-in",
|
|
8832
|
+
"sign-up": "sign-up"
|
|
8833
|
+
};
|
|
8834
|
+
var AUTHENTICATED_REDIRECT_VIEW_SET = /* @__PURE__ */ new Set([
|
|
8835
|
+
"sign-in",
|
|
8836
|
+
"sign-up",
|
|
8837
|
+
"forgot-password"
|
|
8838
|
+
]);
|
|
8839
|
+
function resolveAuthViewFromSegment(segment) {
|
|
8840
|
+
if (!segment) {
|
|
8841
|
+
return AUTH_DEFAULT_VIEW;
|
|
8842
|
+
}
|
|
8843
|
+
return AUTH_VIEW_BY_SEGMENT[segment] ?? null;
|
|
8844
|
+
}
|
|
8845
|
+
function shouldRedirectAuthenticatedAuthView(view) {
|
|
8846
|
+
return AUTHENTICATED_REDIRECT_VIEW_SET.has(view);
|
|
8847
|
+
}
|
|
8848
|
+
var AUTH_ROUTES = {
|
|
8849
|
+
acceptInvitation: "/auth/accept-invitation",
|
|
8850
|
+
appHome: "/",
|
|
8851
|
+
checkEmail: "/auth/check-email",
|
|
8852
|
+
forgotPassword: "/auth/forgot-password",
|
|
8853
|
+
logout: "/auth/logout",
|
|
8854
|
+
resetEmailSent: "/auth/reset-email-sent",
|
|
8855
|
+
resetPassword: "/auth/reset-password",
|
|
8856
|
+
signIn: "/auth/sign-in",
|
|
8857
|
+
signUp: "/auth/sign-up",
|
|
8858
|
+
socialCallback: "/auth/social-callback"
|
|
8859
|
+
};
|
|
8860
|
+
function createAuthModeRedirects(routes = AUTH_ROUTES) {
|
|
8861
|
+
return {
|
|
8862
|
+
"forgot-password": routes.forgotPassword,
|
|
8863
|
+
login: routes.signIn,
|
|
8864
|
+
logout: routes.logout,
|
|
8865
|
+
"reset-password": routes.resetPassword,
|
|
8866
|
+
signup: routes.signUp
|
|
8867
|
+
};
|
|
8868
|
+
}
|
|
8869
|
+
var AUTH_MODE_REDIRECTS = createAuthModeRedirects();
|
|
8870
|
+
new Set(Object.keys(AUTH_MODE_REDIRECTS));
|
|
8871
|
+
|
|
8872
|
+
// src/utils/athena-auth-url.ts
|
|
8873
|
+
var ATHENA_AUTH_PATH = "/api/auth";
|
|
8874
|
+
var LOCAL_DEV_ORIGIN = "http://localhost:3000";
|
|
8875
|
+
var DEFAULT_ATHENA_AUTH_ORIGIN = "https://auth.athena-auth.com";
|
|
8876
|
+
var ATHENA_AUTH_UPSTREAM_ENV_KEYS = [
|
|
8877
|
+
"ATHENA_AUTH_UPSTREAM_URL",
|
|
8878
|
+
"ATHENA_AUTH_URL",
|
|
8879
|
+
"NEXT_PUBLIC_ATHENA_AUTH_UPSTREAM_URL",
|
|
8880
|
+
"NEXT_PUBLIC_ATHENA_AUTH_URL"
|
|
8881
|
+
];
|
|
8882
|
+
var ATHENA_AUTH_UPSTREAM_URL_ENV_NAMES = ATHENA_AUTH_UPSTREAM_ENV_KEYS;
|
|
8883
|
+
var LEADING_SLASHES_REGEX = /^\/+/;
|
|
8884
|
+
function stripTrailingSlashes(value) {
|
|
8885
|
+
return value.replace(/\/+$/g, "");
|
|
8886
|
+
}
|
|
8887
|
+
function ensureLeadingSlash(value) {
|
|
8888
|
+
return value.startsWith("/") ? value : `/${value}`;
|
|
8889
|
+
}
|
|
8890
|
+
function ensureAthenaAuthPath(pathname) {
|
|
8891
|
+
const normalizedPath = stripTrailingSlashes(
|
|
8892
|
+
ensureLeadingSlash(pathname.trim())
|
|
8893
|
+
);
|
|
8894
|
+
if (!normalizedPath || normalizedPath === "/") {
|
|
8895
|
+
return ATHENA_AUTH_PATH;
|
|
8896
|
+
}
|
|
8897
|
+
if (normalizedPath.endsWith(ATHENA_AUTH_PATH)) {
|
|
8898
|
+
return normalizedPath;
|
|
8899
|
+
}
|
|
8900
|
+
return `${normalizedPath}${ATHENA_AUTH_PATH}`;
|
|
8901
|
+
}
|
|
8902
|
+
function stripAthenaAuthPath(pathname) {
|
|
8903
|
+
const normalizedPath = stripTrailingSlashes(
|
|
8904
|
+
ensureLeadingSlash(pathname.trim())
|
|
8905
|
+
);
|
|
8906
|
+
if (!normalizedPath || normalizedPath === "/") {
|
|
8907
|
+
return "/";
|
|
8908
|
+
}
|
|
8909
|
+
if (normalizedPath === ATHENA_AUTH_PATH) {
|
|
8910
|
+
return "/";
|
|
8911
|
+
}
|
|
8912
|
+
if (normalizedPath.endsWith(ATHENA_AUTH_PATH)) {
|
|
8913
|
+
const withoutAuthPath = normalizedPath.slice(0, -ATHENA_AUTH_PATH.length);
|
|
8914
|
+
return withoutAuthPath ? ensureLeadingSlash(withoutAuthPath) : "/";
|
|
8915
|
+
}
|
|
8916
|
+
return normalizedPath;
|
|
8917
|
+
}
|
|
8918
|
+
function readProcessEnv2() {
|
|
8919
|
+
try {
|
|
8920
|
+
const maybeProcess = globalThis.process;
|
|
8921
|
+
return maybeProcess?.env;
|
|
8922
|
+
} catch {
|
|
8923
|
+
return void 0;
|
|
8924
|
+
}
|
|
8925
|
+
}
|
|
8926
|
+
function getBrowserOrigin() {
|
|
8927
|
+
try {
|
|
8928
|
+
const origin = globalThis.window?.location?.origin;
|
|
8929
|
+
return typeof origin === "string" && origin.length > 0 ? origin : void 0;
|
|
8930
|
+
} catch {
|
|
8931
|
+
return void 0;
|
|
8932
|
+
}
|
|
8933
|
+
}
|
|
8934
|
+
function isAbsoluteUrl(value) {
|
|
8935
|
+
const trimmed = value.trim();
|
|
8936
|
+
return trimmed.startsWith("http://") || trimmed.startsWith("https://");
|
|
8937
|
+
}
|
|
8938
|
+
function readAthenaAuthUpstreamUrlFromEnv(env) {
|
|
8939
|
+
for (const key of ATHENA_AUTH_UPSTREAM_ENV_KEYS) {
|
|
8940
|
+
const value = env[key]?.trim();
|
|
8941
|
+
if (value) {
|
|
8942
|
+
return value;
|
|
8943
|
+
}
|
|
8944
|
+
}
|
|
8945
|
+
return void 0;
|
|
8946
|
+
}
|
|
8947
|
+
function resolveConfiguredAthenaAuthUpstreamUrl(rawUpstreamUrl) {
|
|
8948
|
+
if (typeof rawUpstreamUrl === "string") {
|
|
8949
|
+
const trimmed = rawUpstreamUrl.trim();
|
|
8950
|
+
return trimmed || void 0;
|
|
8951
|
+
}
|
|
8952
|
+
if (rawUpstreamUrl) {
|
|
8953
|
+
return readAthenaAuthUpstreamUrlFromEnv(rawUpstreamUrl);
|
|
8954
|
+
}
|
|
8955
|
+
const processEnv = readProcessEnv2();
|
|
8956
|
+
return processEnv ? readAthenaAuthUpstreamUrlFromEnv(processEnv) : void 0;
|
|
8957
|
+
}
|
|
8958
|
+
function normalizeAthenaAuthBaseUrl(urlOrPath) {
|
|
8959
|
+
const trimmed = urlOrPath.trim();
|
|
8960
|
+
if (!trimmed) {
|
|
8961
|
+
return ATHENA_AUTH_PATH;
|
|
8962
|
+
}
|
|
8963
|
+
if (isAbsoluteUrl(trimmed)) {
|
|
8964
|
+
const url = new URL(trimmed);
|
|
8965
|
+
url.pathname = ensureAthenaAuthPath(url.pathname);
|
|
8966
|
+
url.search = "";
|
|
8967
|
+
url.hash = "";
|
|
8968
|
+
return stripTrailingSlashes(url.toString());
|
|
8969
|
+
}
|
|
8970
|
+
return ensureAthenaAuthPath(trimmed);
|
|
8971
|
+
}
|
|
8972
|
+
function resolveAthenaAuthUpstreamUrl(rawUpstreamUrl) {
|
|
8973
|
+
const configuredUpstream = resolveConfiguredAthenaAuthUpstreamUrl(rawUpstreamUrl) || DEFAULT_ATHENA_AUTH_ORIGIN;
|
|
8974
|
+
if (isAbsoluteUrl(configuredUpstream)) {
|
|
8975
|
+
const upstreamUrl = new URL(configuredUpstream);
|
|
8976
|
+
upstreamUrl.pathname = stripAthenaAuthPath(upstreamUrl.pathname);
|
|
8977
|
+
upstreamUrl.search = "";
|
|
8978
|
+
upstreamUrl.hash = "";
|
|
8979
|
+
return stripTrailingSlashes(upstreamUrl.toString());
|
|
8980
|
+
}
|
|
8981
|
+
const normalizedPath = stripAthenaAuthPath(configuredUpstream);
|
|
8982
|
+
return stripTrailingSlashes(
|
|
8983
|
+
new URL(normalizedPath, LOCAL_DEV_ORIGIN).toString()
|
|
8984
|
+
);
|
|
8985
|
+
}
|
|
8986
|
+
function resolveBrowserFacingOrigin(rawUpstreamUrl) {
|
|
8987
|
+
if (resolveConfiguredAthenaAuthUpstreamUrl(rawUpstreamUrl)) {
|
|
8988
|
+
return `${resolveAthenaAuthUpstreamUrl(rawUpstreamUrl)}/`;
|
|
8989
|
+
}
|
|
8990
|
+
const browserOrigin = getBrowserOrigin();
|
|
8991
|
+
if (browserOrigin) {
|
|
8992
|
+
return `${browserOrigin}/`;
|
|
8993
|
+
}
|
|
8994
|
+
return `${LOCAL_DEV_ORIGIN}/`;
|
|
8995
|
+
}
|
|
8996
|
+
function resolvePreservedAthenaAuthBaseUrl(configuredAuthBaseUrl, rawUpstreamUrl) {
|
|
8997
|
+
const trimmed = configuredAuthBaseUrl.trim();
|
|
8998
|
+
const preservedConfiguredBaseUrl = trimmed || ATHENA_AUTH_PATH;
|
|
8999
|
+
if (isAbsoluteUrl(preservedConfiguredBaseUrl)) {
|
|
9000
|
+
return stripTrailingSlashes(preservedConfiguredBaseUrl);
|
|
9001
|
+
}
|
|
9002
|
+
return stripTrailingSlashes(
|
|
9003
|
+
new URL(
|
|
9004
|
+
ensureLeadingSlash(preservedConfiguredBaseUrl),
|
|
9005
|
+
resolveBrowserFacingOrigin(rawUpstreamUrl)
|
|
9006
|
+
).toString()
|
|
9007
|
+
);
|
|
9008
|
+
}
|
|
9009
|
+
function resolveAthenaAuthClientBaseUrl(configuredAuthBaseUrl, rawUpstreamUrl, options = {}) {
|
|
9010
|
+
let baseInput;
|
|
9011
|
+
if (typeof configuredAuthBaseUrl === "string") {
|
|
9012
|
+
baseInput = configuredAuthBaseUrl;
|
|
9013
|
+
} else if (configuredAuthBaseUrl) {
|
|
9014
|
+
baseInput = readAthenaAuthUpstreamUrlFromEnv(configuredAuthBaseUrl) ?? ATHENA_AUTH_PATH;
|
|
9015
|
+
} else {
|
|
9016
|
+
const fromEnv = resolveConfiguredAthenaAuthUpstreamUrl(rawUpstreamUrl);
|
|
9017
|
+
baseInput = fromEnv ?? ATHENA_AUTH_PATH;
|
|
9018
|
+
}
|
|
9019
|
+
if (options.appendAuthPath === false) {
|
|
9020
|
+
return resolvePreservedAthenaAuthBaseUrl(baseInput, rawUpstreamUrl);
|
|
9021
|
+
}
|
|
9022
|
+
const normalizedConfiguredBaseUrl = normalizeAthenaAuthBaseUrl(baseInput);
|
|
9023
|
+
if (isAbsoluteUrl(normalizedConfiguredBaseUrl)) {
|
|
9024
|
+
return normalizedConfiguredBaseUrl;
|
|
9025
|
+
}
|
|
9026
|
+
const browserOrigin = getBrowserOrigin();
|
|
9027
|
+
if (browserOrigin) {
|
|
9028
|
+
return stripTrailingSlashes(
|
|
9029
|
+
new URL(normalizedConfiguredBaseUrl, browserOrigin).toString()
|
|
9030
|
+
);
|
|
9031
|
+
}
|
|
9032
|
+
if (resolveConfiguredAthenaAuthUpstreamUrl(rawUpstreamUrl)) {
|
|
9033
|
+
const upstream = resolveAthenaAuthUpstreamUrl(rawUpstreamUrl);
|
|
9034
|
+
return stripTrailingSlashes(
|
|
9035
|
+
new URL(ATHENA_AUTH_PATH, `${upstream}/`).toString()
|
|
9036
|
+
);
|
|
9037
|
+
}
|
|
9038
|
+
return stripTrailingSlashes(
|
|
9039
|
+
new URL(normalizedConfiguredBaseUrl, LOCAL_DEV_ORIGIN).toString()
|
|
9040
|
+
);
|
|
9041
|
+
}
|
|
9042
|
+
function resolveAthenaAuthRequestUrl(path, rawBaseUrl) {
|
|
9043
|
+
const normalizedPath = path.replace(LEADING_SLASHES_REGEX, "");
|
|
9044
|
+
const base = resolveAthenaAuthClientBaseUrl(rawBaseUrl);
|
|
9045
|
+
return new URL(normalizedPath, `${base}/`).toString();
|
|
9046
|
+
}
|
|
9047
|
+
var ATHENA_AUTH_VERIFY_EMAIL_PATH = "verify-email";
|
|
9048
|
+
function resolveEmailVerificationCallbackUrl(rawBaseUrl) {
|
|
9049
|
+
return resolveAthenaAuthRequestUrl(ATHENA_AUTH_VERIFY_EMAIL_PATH, rawBaseUrl);
|
|
9050
|
+
}
|
|
9051
|
+
|
|
8672
9052
|
// src/next/client.ts
|
|
8673
9053
|
var cachedBrowserClient = null;
|
|
8674
9054
|
function createAthenaBrowserClient(options) {
|
|
@@ -8682,6 +9062,29 @@ function createAthenaBrowserClient(options) {
|
|
|
8682
9062
|
return createAdapterClient(options);
|
|
8683
9063
|
}
|
|
8684
9064
|
|
|
9065
|
+
exports.ATHENA_AUTH_COOKIE_PREFIXES = ATHENA_AUTH_COOKIE_PREFIXES;
|
|
9066
|
+
exports.ATHENA_AUTH_PATH = ATHENA_AUTH_PATH;
|
|
9067
|
+
exports.ATHENA_AUTH_SESSION_BRIDGE_ROUTE = ATHENA_AUTH_SESSION_BRIDGE_ROUTE;
|
|
9068
|
+
exports.ATHENA_AUTH_SESSION_COOKIE_NAME = ATHENA_AUTH_SESSION_COOKIE_NAME;
|
|
9069
|
+
exports.ATHENA_AUTH_SESSION_COOKIE_NAMES = ATHENA_AUTH_SESSION_COOKIE_NAMES;
|
|
9070
|
+
exports.ATHENA_AUTH_UPSTREAM_ENV_KEYS = ATHENA_AUTH_UPSTREAM_ENV_KEYS;
|
|
9071
|
+
exports.ATHENA_AUTH_UPSTREAM_URL_ENV_NAMES = ATHENA_AUTH_UPSTREAM_URL_ENV_NAMES;
|
|
9072
|
+
exports.AUTH_DEFAULT_VIEW = AUTH_DEFAULT_VIEW;
|
|
9073
|
+
exports.AUTH_ROUTES = AUTH_ROUTES;
|
|
9074
|
+
exports.AUTH_VIEW_BY_SEGMENT = AUTH_VIEW_BY_SEGMENT;
|
|
9075
|
+
exports.DEFAULT_ATHENA_AUTH_ORIGIN = DEFAULT_ATHENA_AUTH_ORIGIN;
|
|
9076
|
+
exports.clearAthenaAuthSessionOnAppHost = clearAthenaAuthSessionOnAppHost;
|
|
9077
|
+
exports.clearAuthCookies = clearAuthCookies;
|
|
8685
9078
|
exports.createAthenaBrowserClient = createAthenaBrowserClient;
|
|
9079
|
+
exports.isAbsoluteUrl = isAbsoluteUrl;
|
|
9080
|
+
exports.normalizeAthenaAuthBaseUrl = normalizeAthenaAuthBaseUrl;
|
|
9081
|
+
exports.persistAthenaAuthSessionOnAppHost = persistAthenaAuthSessionOnAppHost;
|
|
9082
|
+
exports.resolveAthenaAuthClientBaseUrl = resolveAthenaAuthClientBaseUrl;
|
|
9083
|
+
exports.resolveAthenaAuthRequestUrl = resolveAthenaAuthRequestUrl;
|
|
9084
|
+
exports.resolveAthenaAuthUpstreamUrl = resolveAthenaAuthUpstreamUrl;
|
|
9085
|
+
exports.resolveAuthViewFromSegment = resolveAuthViewFromSegment;
|
|
9086
|
+
exports.resolveEmailVerificationCallbackUrl = resolveEmailVerificationCallbackUrl;
|
|
9087
|
+
exports.resolveSessionBridgePayload = resolveSessionBridgePayload;
|
|
9088
|
+
exports.shouldRedirectAuthenticatedAuthView = shouldRedirectAuthenticatedAuthView;
|
|
8686
9089
|
//# sourceMappingURL=client.cjs.map
|
|
8687
9090
|
//# sourceMappingURL=client.cjs.map
|