Download packages/ai/src/auth/context.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 1.35 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/ai/src/auth/context.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/ai/src/auth/context.ts
-
curl -L -o context.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/ai/src/auth/context.ts
1.35 kB
| import type { AuthContext } from "./types.ts"; | |
| interface NodeFsModule { | |
| access(path: string): Promise<void>; | |
| } | |
| interface NodeOsModule { | |
| homedir(): string; | |
| } | |
| // Variable specifier so browser bundlers do not try to resolve node builtins. | |
| const importNodeModule = (specifier: string): Promise<unknown> => import(specifier); | |
| function getProcessEnv(): Record<string, string | undefined> | undefined { | |
| const proc = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process; | |
| return proc?.env; | |
| } | |
| /** | |
| * Default auth context: env vars from `process.env` (undefined in browsers), | |
| * file existence via node:fs (always false in browsers). | |
| */ | |
| export function defaultProviderAuthContext(): AuthContext { | |
| return { | |
| async env(name: string): Promise<string | undefined> { | |
| const value = getProcessEnv()?.[name]; | |
| return typeof value === "string" && value.trim().length > 0 ? value : undefined; | |
| }, | |
| async fileExists(path: string): Promise<boolean> { | |
| try { | |
| const fs = (await importNodeModule("node:fs/promises")) as NodeFsModule; | |
| let resolved = path; | |
| if (resolved.startsWith("~")) { | |
| const os = (await importNodeModule("node:os")) as NodeOsModule; | |
| resolved = os.homedir() + resolved.slice(1); | |
| } | |
| await fs.access(resolved); | |
| return true; | |
| } catch { | |
| return false; | |
| } | |
| }, | |
| }; | |
| } | |