Spaces:
Build error
Build error
File size: 5,450 Bytes
c211499 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
export const isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
export const isWebWorker = () => typeof globalThis === "object" &&
globalThis.constructor &&
globalThis.constructor.name === "DedicatedWorkerGlobalScope";
export const isJsDom = () => (typeof window !== "undefined" && window.name === "nodejs") ||
(typeof navigator !== "undefined" &&
(navigator.userAgent.includes("Node.js") ||
navigator.userAgent.includes("jsdom")));
// Supabase Edge Function provides a `Deno` global object
// without `version` property
export const isDeno = () => typeof Deno !== "undefined";
// Mark not-as-node if in Supabase Edge Function
export const isNode = () => typeof process !== "undefined" &&
typeof process.versions !== "undefined" &&
typeof process.versions.node !== "undefined" &&
!isDeno();
export const getEnv = () => {
let env;
if (isBrowser()) {
env = "browser";
}
else if (isNode()) {
env = "node";
}
else if (isWebWorker()) {
env = "webworker";
}
else if (isJsDom()) {
env = "jsdom";
}
else if (isDeno()) {
env = "deno";
}
else {
env = "other";
}
return env;
};
let runtimeEnvironment;
export async function getRuntimeEnvironment() {
if (runtimeEnvironment === undefined) {
const env = getEnv();
const releaseEnv = getShas();
runtimeEnvironment = {
library: "langsmith",
runtime: env,
...releaseEnv,
};
}
return runtimeEnvironment;
}
/**
* Retrieves the LangChain-specific environment variables from the current runtime environment.
* Sensitive keys (containing the word "key") have their values redacted for security.
*
* @returns {Record<string, string>}
* - A record of LangChain-specific environment variables.
*/
export function getLangChainEnvVars() {
const allEnvVars = getEnvironmentVariables() || {};
const envVars = {};
for (const [key, value] of Object.entries(allEnvVars)) {
if (key.startsWith("LANGCHAIN_") && typeof value === "string") {
envVars[key] = value;
}
}
for (const key in envVars) {
if (key.toLowerCase().includes("key") && typeof envVars[key] === "string") {
const value = envVars[key];
envVars[key] =
value.slice(0, 2) + "*".repeat(value.length - 4) + value.slice(-2);
}
}
return envVars;
}
/**
* Retrieves the environment variables from the current runtime environment.
*
* This function is designed to operate in a variety of JS environments,
* including Node.js, Deno, browsers, etc.
*
* @returns {Record<string, string> | undefined}
* - A record of environment variables if available.
* - `undefined` if the environment does not support or allows access to environment variables.
*/
export function getEnvironmentVariables() {
try {
// Check for Node.js environment
// eslint-disable-next-line no-process-env
if (typeof process !== "undefined" && process.env) {
// eslint-disable-next-line no-process-env
Object.entries(process.env).reduce((acc, [key, value]) => {
acc[key] = String(value);
return acc;
}, {});
}
// For browsers and other environments, we may not have direct access to env variables
// Return undefined or any other fallback as required.
return undefined;
}
catch (e) {
// Catch any errors that might occur while trying to access environment variables
return undefined;
}
}
export function getEnvironmentVariable(name) {
// Certain Deno setups will throw an error if you try to access environment variables
// https://github.com/hwchase17/langchainjs/issues/1412
try {
return typeof process !== "undefined"
? // eslint-disable-next-line no-process-env
process.env?.[name]
: undefined;
}
catch (e) {
return undefined;
}
}
export function setEnvironmentVariable(name, value) {
if (typeof process !== "undefined") {
// eslint-disable-next-line no-process-env
process.env[name] = value;
}
}
let cachedCommitSHAs;
/**
* Get the Git commit SHA from common environment variables
* used by different CI/CD platforms.
* @returns {string | undefined} The Git commit SHA or undefined if not found.
*/
export function getShas() {
if (cachedCommitSHAs !== undefined) {
return cachedCommitSHAs;
}
const common_release_envs = [
"VERCEL_GIT_COMMIT_SHA",
"NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA",
"COMMIT_REF",
"RENDER_GIT_COMMIT",
"CI_COMMIT_SHA",
"CIRCLE_SHA1",
"CF_PAGES_COMMIT_SHA",
"REACT_APP_GIT_SHA",
"SOURCE_VERSION",
"GITHUB_SHA",
"TRAVIS_COMMIT",
"GIT_COMMIT",
"BUILD_VCS_NUMBER",
"bamboo_planRepository_revision",
"Build.SourceVersion",
"BITBUCKET_COMMIT",
"DRONE_COMMIT_SHA",
"SEMAPHORE_GIT_SHA",
"BUILDKITE_COMMIT",
];
const shas = {};
for (const env of common_release_envs) {
const envVar = getEnvironmentVariable(env);
if (envVar !== undefined) {
shas[env] = envVar;
}
}
cachedCommitSHAs = shas;
return shas;
}
|