mirror of
https://github.com/eigent-ai/eigent.git
synced 2026-04-30 12:40:10 +00:00
324 lines
8.8 KiB
JavaScript
324 lines
8.8 KiB
JavaScript
"use strict";
|
|
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if ((from && typeof from === "object") || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, {
|
|
get: () => from[key],
|
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable,
|
|
});
|
|
}
|
|
return to;
|
|
};
|
|
var __toESM = (mod, isNodeMode, target) => (
|
|
(target = mod != null ? __create(__getProtoOf(mod)) : {}),
|
|
__copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule
|
|
? __defProp(target, "default", { value: mod, enumerable: true })
|
|
: target,
|
|
mod
|
|
)
|
|
);
|
|
var __toCommonJS = (mod) =>
|
|
__copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/lib/cookie.ts
|
|
var cookie_exports = {};
|
|
__export(cookie_exports, {
|
|
consumeVerifierAndStateCookie: () => consumeVerifierAndStateCookie,
|
|
createBrowserCookieHelper: () => createBrowserCookieHelper,
|
|
createCookieHelper: () => createCookieHelper,
|
|
createPlaceholderCookieHelper: () => createPlaceholderCookieHelper,
|
|
deleteCookie: () => deleteCookie,
|
|
deleteCookieClient: () => deleteCookieClient,
|
|
getCookie: () => getCookie,
|
|
getCookieClient: () => getCookieClient,
|
|
saveVerifierAndState: () => saveVerifierAndState,
|
|
setCookie: () => setCookie,
|
|
setCookieClient: () => setCookieClient,
|
|
setOrDeleteCookie: () => setOrDeleteCookie,
|
|
setOrDeleteCookieClient: () => setOrDeleteCookieClient,
|
|
});
|
|
module.exports = __toCommonJS(cookie_exports);
|
|
var import_env = require("@stackframe/stack-shared/dist/utils/env");
|
|
var import_errors = require("@stackframe/stack-shared/dist/utils/errors");
|
|
var import_js_cookie = __toESM(require("js-cookie"));
|
|
|
|
// ../../node_modules/.pnpm/oauth4webapi@2.10.4/node_modules/oauth4webapi/build/index.js
|
|
var USER_AGENT;
|
|
if (
|
|
typeof navigator === "undefined" ||
|
|
!navigator.userAgent?.startsWith?.("Mozilla/5.0 ")
|
|
) {
|
|
const NAME = "oauth4webapi";
|
|
const VERSION = "v2.10.4";
|
|
USER_AGENT = `${NAME}/${VERSION}`;
|
|
}
|
|
var clockSkew = Symbol();
|
|
var clockTolerance = Symbol();
|
|
var customFetch = Symbol();
|
|
var useMtlsAlias = Symbol();
|
|
var encoder = new TextEncoder();
|
|
var decoder = new TextDecoder();
|
|
function buf(input) {
|
|
if (typeof input === "string") {
|
|
return encoder.encode(input);
|
|
}
|
|
return decoder.decode(input);
|
|
}
|
|
var CHUNK_SIZE = 32768;
|
|
function encodeBase64Url(input) {
|
|
if (input instanceof ArrayBuffer) {
|
|
input = new Uint8Array(input);
|
|
}
|
|
const arr = [];
|
|
for (let i = 0; i < input.byteLength; i += CHUNK_SIZE) {
|
|
arr.push(
|
|
String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE))
|
|
);
|
|
}
|
|
return btoa(arr.join(""))
|
|
.replace(/=/g, "")
|
|
.replace(/\+/g, "-")
|
|
.replace(/\//g, "_");
|
|
}
|
|
function decodeBase64Url(input) {
|
|
try {
|
|
const binary = atob(
|
|
input.replace(/-/g, "+").replace(/_/g, "/").replace(/\s/g, "")
|
|
);
|
|
const bytes = new Uint8Array(binary.length);
|
|
for (let i = 0; i < binary.length; i++) {
|
|
bytes[i] = binary.charCodeAt(i);
|
|
}
|
|
return bytes;
|
|
} catch (cause) {
|
|
throw new OPE("The input to be decoded is not correctly encoded.", {
|
|
cause,
|
|
});
|
|
}
|
|
}
|
|
function b64u(input) {
|
|
if (typeof input === "string") {
|
|
return decodeBase64Url(input);
|
|
}
|
|
return encodeBase64Url(input);
|
|
}
|
|
var LRU = class {
|
|
constructor(maxSize) {
|
|
this.cache = /* @__PURE__ */ new Map();
|
|
this._cache = /* @__PURE__ */ new Map();
|
|
this.maxSize = maxSize;
|
|
}
|
|
get(key) {
|
|
let v = this.cache.get(key);
|
|
if (v) {
|
|
return v;
|
|
}
|
|
if ((v = this._cache.get(key))) {
|
|
this.update(key, v);
|
|
return v;
|
|
}
|
|
return void 0;
|
|
}
|
|
has(key) {
|
|
return this.cache.has(key) || this._cache.has(key);
|
|
}
|
|
set(key, value) {
|
|
if (this.cache.has(key)) {
|
|
this.cache.set(key, value);
|
|
} else {
|
|
this.update(key, value);
|
|
}
|
|
return this;
|
|
}
|
|
delete(key) {
|
|
if (this.cache.has(key)) {
|
|
return this.cache.delete(key);
|
|
}
|
|
if (this._cache.has(key)) {
|
|
return this._cache.delete(key);
|
|
}
|
|
return false;
|
|
}
|
|
update(key, value) {
|
|
this.cache.set(key, value);
|
|
if (this.cache.size >= this.maxSize) {
|
|
this._cache = this.cache;
|
|
this.cache = /* @__PURE__ */ new Map();
|
|
}
|
|
}
|
|
};
|
|
var OperationProcessingError = class extends Error {
|
|
constructor(message, options) {
|
|
super(message, options);
|
|
this.name = this.constructor.name;
|
|
Error.captureStackTrace?.(this, this.constructor);
|
|
}
|
|
};
|
|
var OPE = OperationProcessingError;
|
|
var dpopNonces = new LRU(100);
|
|
function validateString(input) {
|
|
return typeof input === "string" && input.length !== 0;
|
|
}
|
|
function randomBytes() {
|
|
return b64u(crypto.getRandomValues(new Uint8Array(32)));
|
|
}
|
|
function generateRandomCodeVerifier() {
|
|
return randomBytes();
|
|
}
|
|
function generateRandomState() {
|
|
return randomBytes();
|
|
}
|
|
async function calculatePKCECodeChallenge(codeVerifier) {
|
|
if (!validateString(codeVerifier)) {
|
|
throw new TypeError('"codeVerifier" must be a non-empty string');
|
|
}
|
|
return b64u(await crypto.subtle.digest("SHA-256", buf(codeVerifier)));
|
|
}
|
|
var skipSubjectCheck = Symbol();
|
|
var expectNoNonce = Symbol();
|
|
var skipAuthTimeCheck = Symbol();
|
|
var noSignatureCheck = Symbol();
|
|
var skipStateCheck = Symbol();
|
|
var expectNoState = Symbol();
|
|
|
|
// src/lib/cookie.ts
|
|
function ensureClient() {
|
|
if (!(0, import_env.isBrowserLike)()) {
|
|
throw new Error(
|
|
"cookieClient functions can only be called in a browser environment, yet window is undefined"
|
|
);
|
|
}
|
|
}
|
|
async function createPlaceholderCookieHelper() {
|
|
function throwError() {
|
|
throw new import_errors.StackAssertionError(
|
|
"Throwing cookie helper is just a placeholder. This should never be called"
|
|
);
|
|
}
|
|
return {
|
|
get: throwError,
|
|
set: throwError,
|
|
setOrDelete: throwError,
|
|
delete: throwError,
|
|
};
|
|
}
|
|
async function createCookieHelper() {
|
|
if ((0, import_env.isBrowserLike)()) {
|
|
return createBrowserCookieHelper();
|
|
} else {
|
|
return await createPlaceholderCookieHelper();
|
|
}
|
|
}
|
|
function createBrowserCookieHelper() {
|
|
return {
|
|
get: getCookieClient,
|
|
set: setCookieClient,
|
|
setOrDelete: setOrDeleteCookieClient,
|
|
delete: deleteCookieClient,
|
|
};
|
|
}
|
|
function getCookieClient(name) {
|
|
ensureClient();
|
|
import_js_cookie.default.set("stack-is-https", "true");
|
|
return import_js_cookie.default.get(name) ?? null;
|
|
}
|
|
async function getCookie(name) {
|
|
const cookieHelper = await createCookieHelper();
|
|
return cookieHelper.get(name);
|
|
}
|
|
function setOrDeleteCookieClient(name, value, options = {}) {
|
|
ensureClient();
|
|
if (value === null) {
|
|
deleteCookieClient(name, options);
|
|
} else {
|
|
setCookieClient(name, value, options);
|
|
}
|
|
}
|
|
async function setOrDeleteCookie(name, value, options = {}) {
|
|
const cookieHelper = await createCookieHelper();
|
|
cookieHelper.setOrDelete(name, value, options);
|
|
}
|
|
function deleteCookieClient(name, options = {}) {
|
|
ensureClient();
|
|
import_js_cookie.default.remove(name);
|
|
}
|
|
async function deleteCookie(name, options = {}) {
|
|
const cookieHelper = await createCookieHelper();
|
|
cookieHelper.delete(name, options);
|
|
}
|
|
function setCookieClient(name, value, options = {}) {
|
|
ensureClient();
|
|
import_js_cookie.default.set(name, value, {
|
|
expires:
|
|
options.maxAge === void 0
|
|
? void 0
|
|
: new Date(Date.now() + options.maxAge * 1e3),
|
|
});
|
|
}
|
|
async function setCookie(name, value, options = {}) {
|
|
const cookieHelper = await createCookieHelper();
|
|
cookieHelper.set(name, value, options);
|
|
}
|
|
async function saveVerifierAndState() {
|
|
const codeVerifier = generateRandomCodeVerifier();
|
|
const codeChallenge = await calculatePKCECodeChallenge(codeVerifier);
|
|
const state = generateRandomState();
|
|
await setCookie("stack-oauth-outer-" + state, codeVerifier, {
|
|
maxAge: 60 * 60,
|
|
});
|
|
try {
|
|
localStorage.setItem("stack-oauth-outer-", codeVerifier);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
return {
|
|
codeChallenge,
|
|
state,
|
|
};
|
|
}
|
|
function consumeVerifierAndStateCookie(state) {
|
|
ensureClient();
|
|
const cookieName = "stack-oauth-outer-" + state;
|
|
const codeVerifier = getCookieClient(cookieName);
|
|
if (!codeVerifier) {
|
|
return null;
|
|
}
|
|
deleteCookieClient(cookieName);
|
|
return {
|
|
codeVerifier,
|
|
};
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 &&
|
|
(module.exports = {
|
|
consumeVerifierAndStateCookie,
|
|
createBrowserCookieHelper,
|
|
createCookieHelper,
|
|
createPlaceholderCookieHelper,
|
|
deleteCookie,
|
|
deleteCookieClient,
|
|
getCookie,
|
|
getCookieClient,
|
|
saveVerifierAndState,
|
|
setCookie,
|
|
setCookieClient,
|
|
setOrDeleteCookie,
|
|
setOrDeleteCookieClient,
|
|
});
|
|
//# sourceMappingURL=cookie.js.map
|