@xylex-group/athena 2.12.0 → 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 -46
- 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 -46
- package/dist/browser.js.map +1 -1
- package/dist/cli/index.cjs +150 -48
- 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 -49
- package/dist/cli/index.js.map +1 -1
- package/dist/{client-QUbAs7E8.d.ts → client-BJjUwDSg.d.cts} +109 -1448
- package/dist/{client-C3x75Zgn.d.cts → 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 -46
- 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 -47
- package/dist/index.js.map +1 -1
- package/dist/{model-form-CD1uhWSh.d.cts → model-form-Dw4zEL5a.d.cts} +2 -2
- package/dist/{model-form-Dm69I-oO.d.ts → model-form-yRg71q3H.d.ts} +2 -2
- package/dist/{module-CW3tWJ10.d.ts → module-DBteUIob.d.ts} +12 -9
- package/dist/{module-Cxcurfes.d.cts → module-yoX49uQC.d.cts} +12 -9
- package/dist/next/client.cjs +452 -46
- 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 -47
- package/dist/next/client.js.map +1 -1
- package/dist/next/server.cjs +292 -46
- 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 -47
- 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-BAwb6Vzm.d.ts → pipeline-Bj6RWt1A.d.ts} +1 -1
- package/dist/{pipeline-B14jVK7J.d.cts → pipeline-Dwck-wZO.d.cts} +1 -1
- package/dist/react.cjs +2 -10
- 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 -10
- 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-Cq4-NoB4.d.ts → types-BRP7sfSF.d.ts} +50 -2
- package/dist/{types-Dr849HD6.d.cts → types-BU8uJH_b.d.cts} +50 -2
- package/dist/{types-CwJCPpLD.d.ts → types-CH78O90i.d.cts} +2 -2
- package/dist/{types-CwJCPpLD.d.cts → types-CH78O90i.d.ts} +2 -2
- package/dist/{types-DMOoYnPS.d.cts → types-CjC9_5ZQ.d.cts} +3 -3
- package/dist/{types-BcVmPBP-.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 -12
- 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 -13
- package/dist/utils.js.map +1 -1
- package/package.json +49 -22
- package/dist/shared-0Kdc74lu.d.ts +0 -35
- package/dist/shared-C0wVICRv.d.cts +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", "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,14 +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 (!hasHeaderIgnoreCase(headers, "x-api-key")) {
|
|
272
|
-
headers["x-api-key"] = apiKey;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
267
|
const resolvedAthenaKey = normalizeHeaderValue(athenaKey) ?? normalizeHeaderValue(apiKey);
|
|
276
268
|
if (resolvedAthenaKey && !hasHeaderIgnoreCase(headers, "X-Athena-Key")) {
|
|
277
269
|
headers["X-Athena-Key"] = resolvedAthenaKey;
|
|
@@ -397,7 +389,7 @@ function buildAthenaRequestHeaders(input) {
|
|
|
397
389
|
|
|
398
390
|
// package.json
|
|
399
391
|
var package_default = {
|
|
400
|
-
version: "2.
|
|
392
|
+
version: "2.13.0"
|
|
401
393
|
};
|
|
402
394
|
|
|
403
395
|
// src/sdk-version.ts
|
|
@@ -2826,38 +2818,6 @@ async function withRetry(config, fn) {
|
|
|
2826
2818
|
throw new Error("withRetry reached an unexpected state");
|
|
2827
2819
|
}
|
|
2828
2820
|
|
|
2829
|
-
// src/db/module.ts
|
|
2830
|
-
function createDbModule(input) {
|
|
2831
|
-
const db = {
|
|
2832
|
-
from: input.from,
|
|
2833
|
-
select(table, first, second) {
|
|
2834
|
-
if (first && typeof first === "object" && !Array.isArray(first)) {
|
|
2835
|
-
return input.from(table).select(void 0, first);
|
|
2836
|
-
}
|
|
2837
|
-
return input.from(table).select(first, second);
|
|
2838
|
-
},
|
|
2839
|
-
insert(table, values, options) {
|
|
2840
|
-
return Array.isArray(values) ? input.from(table).insert(values, options) : input.from(table).insert(values, options);
|
|
2841
|
-
},
|
|
2842
|
-
upsert(table, values, options) {
|
|
2843
|
-
return Array.isArray(values) ? input.from(table).upsert(values, options) : input.from(table).upsert(values, options);
|
|
2844
|
-
},
|
|
2845
|
-
update(table, values, options) {
|
|
2846
|
-
return input.from(table).update(values, options);
|
|
2847
|
-
},
|
|
2848
|
-
delete(table, options) {
|
|
2849
|
-
return input.from(table).delete(options);
|
|
2850
|
-
},
|
|
2851
|
-
rpc(fn, args, options) {
|
|
2852
|
-
return input.rpc(fn, args, options);
|
|
2853
|
-
},
|
|
2854
|
-
query(query, options) {
|
|
2855
|
-
return input.query(query, options);
|
|
2856
|
-
}
|
|
2857
|
-
};
|
|
2858
|
-
return db;
|
|
2859
|
-
}
|
|
2860
|
-
|
|
2861
2821
|
// src/storage/file.ts
|
|
2862
2822
|
function createStorageFileModule(base, config = {}) {
|
|
2863
2823
|
const upload = async (input, options) => {
|
|
@@ -8436,7 +8396,30 @@ function createClientFromConfig(config, sourceConfig) {
|
|
|
8436
8396
|
config.experimental,
|
|
8437
8397
|
queryTracer
|
|
8438
8398
|
);
|
|
8439
|
-
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
|
+
};
|
|
8440
8423
|
const chat = createChatModule({
|
|
8441
8424
|
baseUrl: config.chatUrl,
|
|
8442
8425
|
apiKey: config.apiKey,
|
|
@@ -8587,7 +8570,9 @@ function createClientFromConfig(config, sourceConfig) {
|
|
|
8587
8570
|
var AthenaClient = class {
|
|
8588
8571
|
/** Create a fluent builder for a strongly-typed Athena SDK client. */
|
|
8589
8572
|
static builder() {
|
|
8590
|
-
return createAthenaClientBuilder(
|
|
8573
|
+
return createAthenaClientBuilder(
|
|
8574
|
+
(config) => createClientFromInput(config)
|
|
8575
|
+
);
|
|
8591
8576
|
}
|
|
8592
8577
|
static fromEnvironment(options = {}) {
|
|
8593
8578
|
const env = options.env ?? process.env;
|
|
@@ -8618,11 +8603,12 @@ var AthenaClient = class {
|
|
|
8618
8603
|
});
|
|
8619
8604
|
}
|
|
8620
8605
|
};
|
|
8621
|
-
function createClient(
|
|
8606
|
+
function createClient(...args) {
|
|
8607
|
+
const [configOrUrl, apiKey, options] = args;
|
|
8622
8608
|
if (typeof configOrUrl === "string" || configOrUrl === null || configOrUrl === void 0) {
|
|
8623
8609
|
return createClientFromInput({
|
|
8624
8610
|
url: configOrUrl,
|
|
8625
|
-
key: "",
|
|
8611
|
+
key: apiKey ?? "",
|
|
8626
8612
|
...options
|
|
8627
8613
|
});
|
|
8628
8614
|
}
|
|
@@ -8666,6 +8652,403 @@ function createAdapterClient(options, context) {
|
|
|
8666
8652
|
return client;
|
|
8667
8653
|
}
|
|
8668
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
|
+
|
|
8669
9052
|
// src/next/client.ts
|
|
8670
9053
|
var cachedBrowserClient = null;
|
|
8671
9054
|
function createAthenaBrowserClient(options) {
|
|
@@ -8679,6 +9062,29 @@ function createAthenaBrowserClient(options) {
|
|
|
8679
9062
|
return createAdapterClient(options);
|
|
8680
9063
|
}
|
|
8681
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;
|
|
8682
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;
|
|
8683
9089
|
//# sourceMappingURL=client.cjs.map
|
|
8684
9090
|
//# sourceMappingURL=client.cjs.map
|