12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports._getFetchImplementation = exports._globalFetchImplementationIsNodeFetch = exports.overrideFetchImplementation = void 0;
- const env_js_1 = require("../utils/env.cjs");
- // Wrap the default fetch call due to issues with illegal invocations
- // in some environments:
- // https://stackoverflow.com/questions/69876859/why-does-bind-fix-failed-to-execute-fetch-on-window-illegal-invocation-err
- // @ts-expect-error Broad typing to support a range of fetch implementations
- const DEFAULT_FETCH_IMPLEMENTATION = (...args) => fetch(...args);
- const LANGSMITH_FETCH_IMPLEMENTATION_KEY = Symbol.for("ls:fetch_implementation");
- /**
- * Overrides the fetch implementation used for LangSmith calls.
- * You should use this if you need to use an implementation of fetch
- * other than the default global (e.g. for dealing with proxies).
- * @param fetch The new fetch functino to use.
- */
- const overrideFetchImplementation = (fetch) => {
- globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY] = fetch;
- };
- exports.overrideFetchImplementation = overrideFetchImplementation;
- const _globalFetchImplementationIsNodeFetch = () => {
- const fetchImpl = globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY];
- if (!fetchImpl)
- return false;
- // Check if the implementation has node-fetch specific properties
- return (typeof fetchImpl === "function" &&
- "Headers" in fetchImpl &&
- "Request" in fetchImpl &&
- "Response" in fetchImpl);
- };
- exports._globalFetchImplementationIsNodeFetch = _globalFetchImplementationIsNodeFetch;
- /**
- * @internal
- */
- const _getFetchImplementation = (debug) => {
- return async (...args) => {
- if (debug || (0, env_js_1.getLangSmithEnvironmentVariable)("DEBUG") === "true") {
- const [url, options] = args;
- console.log(`→ ${options?.method || "GET"} ${url}`);
- }
- const res = await (globalThis[LANGSMITH_FETCH_IMPLEMENTATION_KEY] ??
- DEFAULT_FETCH_IMPLEMENTATION)(...args);
- if (debug || (0, env_js_1.getLangSmithEnvironmentVariable)("DEBUG") === "true") {
- console.log(`← ${res.status} ${res.statusText} ${res.url}`);
- }
- return res;
- };
- };
- exports._getFetchImplementation = _getFetchImplementation;
|