diff --git a/.changeset/itchy-rice-train.md b/.changeset/itchy-rice-train.md new file mode 100644 index 0000000000000000000000000000000000000000..8d76af95c6f1056f65ee848642228b2b23cf3f61 --- /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 ecbc9cdabe389f7e4b38b1fd67aeafed076daf4f..b546ef8ad789c596a04eb52d57ba99ee60d1760b 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 9b37fb6ba5c0860ab0c9a214c59f004d3668d11b..44a9a2a6fe5abed7d49bf73c4bf4323303ce41d1 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 c04d0fcc5ab45af62dbb4973caab724c63ba92e9..ff511391002d7ffc100f4f04b8f9dd627cd1c8a5 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 851d074a4d68fab416490c5872a36beeeb506efd..930b7f899736296b6960a2dcf8f561c463e6dc22 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 008c1b930071cb92f03170180e7db3ab4ababc14..8ec0a106986941f1fcc3c2f227d66203a9e1bc01 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 c47e9a40c5be5e76c49b8a0898ea4f9ddb72cbcc..ed05a83df63f86a5b769442c215a95dfab8d59eb 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 8aadeb4daf926a61477790d619bd87583e3e8baa..e9af1eec763bd8f19d00a4ea92109dc2e1ffd678 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`,