From 5596e319470f76a58c2d1a9da99b0e6499f9bc24 Mon Sep 17 00:00:00 2001 From: Alex Yang <himself65@outlook.com> Date: Fri, 3 May 2024 18:03:14 -0500 Subject: [PATCH] feat: improve `@llamaindex/env` (#787) --- .changeset/itchy-rice-train.md | 6 ++++++ packages/core/jsr.json | 5 ++++- packages/env/jsr.json | 3 +++ packages/env/package.json | 13 ++++++++++++- packages/env/src/index.ts | 13 +++++++++++++ packages/env/src/index.workerd.ts | 7 +++++++ packages/env/src/utils.ts | 24 ++++++++++++++++++++++++ scripts/check-minor-version.js | 9 ++++++++- 8 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 .changeset/itchy-rice-train.md diff --git a/.changeset/itchy-rice-train.md b/.changeset/itchy-rice-train.md new file mode 100644 index 000000000..8d76af95c --- /dev/null +++ b/.changeset/itchy-rice-train.md @@ -0,0 +1,6 @@ +--- +"llamaindex": patch +"@llamaindex/env": patch +--- + +feat: improve `@llamaindex/env` diff --git a/packages/core/jsr.json b/packages/core/jsr.json index ecbc9cdab..b546ef8ad 100644 --- a/packages/core/jsr.json +++ b/packages/core/jsr.json @@ -3,6 +3,9 @@ "version": "0.3.4", "exports": "./src/index.ts", "imports": { - "@llamaindex/env": "jsr:@llamaindex/env@0.0.6" + "@llamaindex/env": "jsr:@llamaindex/env@0.1.0" + }, + "publish": { + "include": ["LICENSE", "README.md", "src/**/*.ts"] } } diff --git a/packages/env/jsr.json b/packages/env/jsr.json index 9b37fb6ba..44a9a2a6f 100644 --- a/packages/env/jsr.json +++ b/packages/env/jsr.json @@ -4,5 +4,8 @@ "exports": { ".": "./src/index.ts", "./type": "./src/type.ts" + }, + "publish": { + "include": ["LICENSE", "README.md", "src/**/*.ts"] } } diff --git a/packages/env/package.json b/packages/env/package.json index c04d0fcc5..ff5113910 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -1,6 +1,6 @@ { "name": "@llamaindex/env", - "description": "environment wrapper", + "description": "environment wrapper, supports all JS environment including node, deno, bun, edge runtime, and cloudflare worker", "version": "0.1.0", "type": "module", "types": "dist/type/index.d.ts", @@ -74,5 +74,16 @@ "@aws-crypto/sha256-js": "^5.2.0", "pathe": "^1.1.2", "readable-stream": "^4.5.2" + }, + "peerDependenciesMeta": { + "@aws-crypto/sha256-js": { + "optional": true + }, + "pathe": { + "optional": true + }, + "readable-stream": { + "optional": true + } } } diff --git a/packages/env/src/index.ts b/packages/env/src/index.ts index 851d074a4..930b7f899 100644 --- a/packages/env/src/index.ts +++ b/packages/env/src/index.ts @@ -1,3 +1,16 @@ +/** + * This module is under Node.js environment. + * It provides a set of APIs to interact with the file system, streams, and other Node.js built-in modules. + * + * Use this under "node" condition, + * + * For example: + * ```shell + * node -e "const env = require('@llamaindex/env');" + * ``` + * + * @module + */ import { ok } from "node:assert"; import { createHash, randomUUID } from "node:crypto"; import fs from "node:fs/promises"; diff --git a/packages/env/src/index.workerd.ts b/packages/env/src/index.workerd.ts index 008c1b930..8ec0a1069 100644 --- a/packages/env/src/index.workerd.ts +++ b/packages/env/src/index.workerd.ts @@ -1,3 +1,10 @@ +/** + * This module is under Cloudflare Workers environment. + * + * Most of Node.js APIs are not available in Cloudflare Workers environment. + * + * @module + */ import { INTERNAL_ENV } from "./utils.js"; export * from "./index.polyfill.js"; diff --git a/packages/env/src/utils.ts b/packages/env/src/utils.ts index c47e9a40c..ed05a83df 100644 --- a/packages/env/src/utils.ts +++ b/packages/env/src/utils.ts @@ -1,6 +1,30 @@ // DO NOT EXPOSE THIS VARIABLE TO PUBLIC, IT IS USED INTERNALLY FOR CLOUDFLARE WORKER export const INTERNAL_ENV: Record<string, string> = {}; +/** + * Set environment variables before using llamaindex, because some LLM need to access API key before running. + * + * You have to set the environment variables in Cloudflare Worker environment, + * because it doesn't have any global environment variables. + * + * @example + * ```ts + * export default { + * async fetch( + * request: Request, + * env: Env, + * ctx: ExecutionContext, + * ): Promise<Response> { + * const { setEnvs } = await import("@llamaindex/env"); + * setEnvs(env); + * // ... + * return new Response("Hello, World!"); + * }, + * }; + * ``` + * + * @param envs Environment variables + */ export function setEnvs(envs: object): void { Object.assign(INTERNAL_ENV, envs); } diff --git a/scripts/check-minor-version.js b/scripts/check-minor-version.js index 8aadeb4da..e9af1eec7 100644 --- a/scripts/check-minor-version.js +++ b/scripts/check-minor-version.js @@ -26,7 +26,10 @@ if (minorVersion !== expectedMinorVersion) { process.exit(1); } -const packages = ["core", "env"]; +const packages = ["env", "core"]; +const envPackageJson = JSON.parse( + fs.readFileSync("./packages/env/package.json", "utf8"), +); for (const pkg of packages) { const packageJson = JSON.parse( fs.readFileSync(`./packages/${pkg}/package.json`, "utf8"), @@ -36,6 +39,10 @@ for (const pkg of packages) { ); jsrJson.version = packageJson.version; + if (pkg === "core") { + jsrJson.imports["@llamaindex/env"] = + `jsr:@llamaindex/env@${envPackageJson.version}`; + } fs.writeFileSync( `./packages/${pkg}/jsr.json`, -- GitLab