From e0b4f9c047bf98488b6c5864252f1ba72b8b6055 Mon Sep 17 00:00:00 2001
From: Alex Yang <himself65@outlook.com>
Date: Fri, 6 Sep 2024 20:29:08 -0700
Subject: [PATCH] refactor: move constant into core module (#1158)

---
 packages/core/src/global/constants.ts         | 24 +++++++++++
 packages/core/src/global/index.ts             |  1 +
 packages/llamaindex/src/PromptHelper.ts       |  8 ++--
 .../llamaindex/src/cloud/LlamaCloudIndex.ts   |  2 +-
 .../src/cloud/LlamaCloudRetriever.ts          |  5 +--
 packages/llamaindex/src/cloud/index.ts        |  2 +-
 .../src/cloud/{constants.ts => type.ts}       |  3 --
 packages/llamaindex/src/cloud/utils.ts        |  4 +-
 packages/llamaindex/src/constants.ts          |  8 ----
 packages/llamaindex/src/index.edge.ts         | 42 +++++++++++++------
 .../llamaindex/src/storage/StorageContext.ts  |  8 ++--
 packages/llamaindex/src/storage/constants.ts  |  8 ----
 .../src/storage/docStore/KVDocumentStore.ts   |  2 +-
 .../storage/docStore/SimpleDocumentStore.ts   |  6 +--
 .../llamaindex/src/storage/docStore/types.ts  |  4 +-
 packages/llamaindex/src/storage/index.ts      |  1 -
 .../src/storage/indexStore/KVIndexStore.ts    |  2 +-
 .../storage/indexStore/SimpleIndexStore.ts    |  4 +-
 .../src/storage/indexStore/types.ts           | 10 +++--
 .../src/storage/kvStore/SimpleKVStore.ts      |  2 +-
 .../storage/vectorStore/SimpleVectorStore.ts  |  2 +-
 21 files changed, 87 insertions(+), 61 deletions(-)
 create mode 100644 packages/core/src/global/constants.ts
 rename packages/llamaindex/src/cloud/{constants.ts => type.ts} (71%)
 delete mode 100644 packages/llamaindex/src/constants.ts
 delete mode 100644 packages/llamaindex/src/storage/constants.ts

diff --git a/packages/core/src/global/constants.ts b/packages/core/src/global/constants.ts
new file mode 100644
index 000000000..4c742d4b9
--- /dev/null
+++ b/packages/core/src/global/constants.ts
@@ -0,0 +1,24 @@
+import { path } from "@llamaindex/env";
+
+//#region llm
+export const DEFAULT_CONTEXT_WINDOW = 3900;
+export const DEFAULT_NUM_OUTPUTS = 256;
+export const DEFAULT_CHUNK_SIZE = 1024;
+export const DEFAULT_CHUNK_OVERLAP = 20;
+export const DEFAULT_CHUNK_OVERLAP_RATIO = 0.1;
+export const DEFAULT_PADDING = 5;
+//#endregion
+//#region storage
+export const DEFAULT_COLLECTION = "data";
+export const DEFAULT_PERSIST_DIR = path.join("./storage");
+export const DEFAULT_INDEX_STORE_PERSIST_FILENAME = "index_store.json";
+export const DEFAULT_DOC_STORE_PERSIST_FILENAME = "doc_store.json";
+export const DEFAULT_VECTOR_STORE_PERSIST_FILENAME = "vector_store.json";
+export const DEFAULT_GRAPH_STORE_PERSIST_FILENAME = "graph_store.json";
+export const DEFAULT_NAMESPACE = "docstore";
+export const DEFAULT_IMAGE_VECTOR_NAMESPACE = "images";
+//#endregion
+//#region llama cloud
+export const DEFAULT_PROJECT_NAME = "Default";
+export const DEFAULT_BASE_URL = "https://api.cloud.llamaindex.ai";
+//#endregion
diff --git a/packages/core/src/global/index.ts b/packages/core/src/global/index.ts
index d3afd40b9..78167fb40 100644
--- a/packages/core/src/global/index.ts
+++ b/packages/core/src/global/index.ts
@@ -1,3 +1,4 @@
+export * from "./constants";
 export { Settings } from "./settings";
 export { CallbackManager } from "./settings/callback-manager";
 export type {
diff --git a/packages/llamaindex/src/PromptHelper.ts b/packages/llamaindex/src/PromptHelper.ts
index 40ff503d5..c4618ecde 100644
--- a/packages/llamaindex/src/PromptHelper.ts
+++ b/packages/llamaindex/src/PromptHelper.ts
@@ -1,12 +1,12 @@
-import { SentenceSplitter } from "@llamaindex/core/node-parser";
-import type { PromptTemplate } from "@llamaindex/core/prompts";
-import { type Tokenizer, tokenizers } from "@llamaindex/env";
 import {
   DEFAULT_CHUNK_OVERLAP_RATIO,
   DEFAULT_CONTEXT_WINDOW,
   DEFAULT_NUM_OUTPUTS,
   DEFAULT_PADDING,
-} from "./constants.js";
+} from "@llamaindex/core/global";
+import { SentenceSplitter } from "@llamaindex/core/node-parser";
+import type { PromptTemplate } from "@llamaindex/core/prompts";
+import { type Tokenizer, tokenizers } from "@llamaindex/env";
 
 /**
  * Get the empty prompt text given a prompt.
diff --git a/packages/llamaindex/src/cloud/LlamaCloudIndex.ts b/packages/llamaindex/src/cloud/LlamaCloudIndex.ts
index ebd25a943..d29b52e31 100644
--- a/packages/llamaindex/src/cloud/LlamaCloudIndex.ts
+++ b/packages/llamaindex/src/cloud/LlamaCloudIndex.ts
@@ -7,7 +7,7 @@ import type { QueryEngine } from "../types.js";
 import type { CloudRetrieveParams } from "./LlamaCloudRetriever.js";
 import { LlamaCloudRetriever } from "./LlamaCloudRetriever.js";
 import { getPipelineCreate } from "./config.js";
-import type { CloudConstructorParams } from "./constants.js";
+import type { CloudConstructorParams } from "./type.js";
 import { getAppBaseUrl, getProjectId, initService } from "./utils.js";
 
 import { PipelinesService, ProjectsService } from "@llamaindex/cloud/api";
diff --git a/packages/llamaindex/src/cloud/LlamaCloudRetriever.ts b/packages/llamaindex/src/cloud/LlamaCloudRetriever.ts
index b75f48f90..a947dfb60 100644
--- a/packages/llamaindex/src/cloud/LlamaCloudRetriever.ts
+++ b/packages/llamaindex/src/cloud/LlamaCloudRetriever.ts
@@ -4,13 +4,12 @@ import {
   type RetrievalParams,
   type TextNodeWithScore,
 } from "@llamaindex/cloud/api";
-import { Settings } from "@llamaindex/core/global";
+import { DEFAULT_PROJECT_NAME, Settings } from "@llamaindex/core/global";
 import type { NodeWithScore } from "@llamaindex/core/schema";
 import { jsonToNode, ObjectType } from "@llamaindex/core/schema";
 import { extractText, wrapEventCaller } from "@llamaindex/core/utils";
 import type { BaseRetriever, RetrieveParams } from "../Retriever.js";
-import type { ClientParams, CloudConstructorParams } from "./constants.js";
-import { DEFAULT_PROJECT_NAME } from "./constants.js";
+import type { ClientParams, CloudConstructorParams } from "./type.js";
 import { getProjectId, initService } from "./utils.js";
 
 export type CloudRetrieveParams = Omit<
diff --git a/packages/llamaindex/src/cloud/index.ts b/packages/llamaindex/src/cloud/index.ts
index d1c16b0f0..997688014 100644
--- a/packages/llamaindex/src/cloud/index.ts
+++ b/packages/llamaindex/src/cloud/index.ts
@@ -1,7 +1,7 @@
-export type { CloudConstructorParams } from "./constants.js";
 export { LLamaCloudFileService } from "./LLamaCloudFileService.js";
 export { LlamaCloudIndex } from "./LlamaCloudIndex.js";
 export {
   LlamaCloudRetriever,
   type CloudRetrieveParams,
 } from "./LlamaCloudRetriever.js";
+export type { CloudConstructorParams } from "./type.js";
diff --git a/packages/llamaindex/src/cloud/constants.ts b/packages/llamaindex/src/cloud/type.ts
similarity index 71%
rename from packages/llamaindex/src/cloud/constants.ts
rename to packages/llamaindex/src/cloud/type.ts
index 7d75e1361..cd77474c3 100644
--- a/packages/llamaindex/src/cloud/constants.ts
+++ b/packages/llamaindex/src/cloud/type.ts
@@ -1,8 +1,5 @@
 import type { ServiceContext } from "../ServiceContext.js";
 
-export const DEFAULT_PROJECT_NAME = "Default";
-export const DEFAULT_BASE_URL = "https://api.cloud.llamaindex.ai";
-
 export type ClientParams = { apiKey?: string; baseUrl?: string };
 
 export type CloudConstructorParams = {
diff --git a/packages/llamaindex/src/cloud/utils.ts b/packages/llamaindex/src/cloud/utils.ts
index b31ae9cf1..033a37c7f 100644
--- a/packages/llamaindex/src/cloud/utils.ts
+++ b/packages/llamaindex/src/cloud/utils.ts
@@ -1,7 +1,7 @@
 import { OpenAPI, ProjectsService } from "@llamaindex/cloud/api";
+import { DEFAULT_BASE_URL } from "@llamaindex/core/global";
 import { getEnv } from "@llamaindex/env";
-import type { ClientParams } from "./constants.js";
-import { DEFAULT_BASE_URL } from "./constants.js";
+import type { ClientParams } from "./type.js";
 
 function getBaseUrl(baseUrl?: string): string {
   return baseUrl ?? getEnv("LLAMA_CLOUD_BASE_URL") ?? DEFAULT_BASE_URL;
diff --git a/packages/llamaindex/src/constants.ts b/packages/llamaindex/src/constants.ts
deleted file mode 100644
index 004d5d3e8..000000000
--- a/packages/llamaindex/src/constants.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export const DEFAULT_CONTEXT_WINDOW = 3900;
-export const DEFAULT_NUM_OUTPUTS = 256;
-
-export const DEFAULT_CHUNK_SIZE = 1024;
-export const DEFAULT_CHUNK_OVERLAP = 20;
-export const DEFAULT_CHUNK_OVERLAP_RATIO = 0.1;
-
-export const DEFAULT_PADDING = 5;
diff --git a/packages/llamaindex/src/index.edge.ts b/packages/llamaindex/src/index.edge.ts
index 4332921b4..869087245 100644
--- a/packages/llamaindex/src/index.edge.ts
+++ b/packages/llamaindex/src/index.edge.ts
@@ -1,6 +1,36 @@
 import type { AgentEndEvent, AgentStartEvent } from "./agent/types.js";
 import type { RetrievalEndEvent, RetrievalStartEvent } from "./llm/types.js";
 
+export {
+  CallbackManager,
+  DEFAULT_BASE_URL,
+  DEFAULT_CHUNK_OVERLAP,
+  DEFAULT_CHUNK_OVERLAP_RATIO,
+  DEFAULT_CHUNK_SIZE,
+  DEFAULT_COLLECTION,
+  DEFAULT_CONTEXT_WINDOW,
+  DEFAULT_DOC_STORE_PERSIST_FILENAME,
+  DEFAULT_GRAPH_STORE_PERSIST_FILENAME,
+  DEFAULT_IMAGE_VECTOR_NAMESPACE,
+  DEFAULT_INDEX_STORE_PERSIST_FILENAME,
+  DEFAULT_NAMESPACE,
+  DEFAULT_NUM_OUTPUTS,
+  DEFAULT_PADDING,
+  DEFAULT_PERSIST_DIR,
+  DEFAULT_PROJECT_NAME,
+  DEFAULT_VECTOR_STORE_PERSIST_FILENAME,
+} from "@llamaindex/core/global";
+export type {
+  JSONArray,
+  JSONObject,
+  JSONValue,
+  LLMEndEvent,
+  LLMStartEvent,
+  LLMStreamEvent,
+  LLMToolCallEvent,
+  LLMToolResultEvent,
+} from "@llamaindex/core/global";
+export * from "@llamaindex/core/llms";
 export * from "@llamaindex/core/prompts";
 export * from "@llamaindex/core/schema";
 
@@ -14,23 +44,11 @@ declare module "@llamaindex/core/global" {
   }
 }
 
-export { CallbackManager } from "@llamaindex/core/global";
-export type {
-  JSONArray,
-  JSONObject,
-  JSONValue,
-  LLMEndEvent,
-  LLMStartEvent,
-  LLMStreamEvent,
-  LLMToolCallEvent,
-  LLMToolResultEvent,
-} from "@llamaindex/core/global";
 export * from "@llamaindex/core/llms";
 export * from "@llamaindex/core/schema";
 export * from "./agent/index.js";
 export * from "./ChatHistory.js";
 export * from "./cloud/index.js";
-export * from "./constants.js";
 export * from "./embeddings/index.js";
 export * from "./engines/chat/index.js";
 export * from "./engines/query/index.js";
diff --git a/packages/llamaindex/src/storage/StorageContext.ts b/packages/llamaindex/src/storage/StorageContext.ts
index 15e13ec2d..b1b4a3927 100644
--- a/packages/llamaindex/src/storage/StorageContext.ts
+++ b/packages/llamaindex/src/storage/StorageContext.ts
@@ -1,10 +1,10 @@
-import { ModalityType, ObjectType } from "@llamaindex/core/schema";
-import { path } from "@llamaindex/env";
-import { getImageEmbedModel } from "../internal/settings/image-embed-model.js";
 import {
   DEFAULT_IMAGE_VECTOR_NAMESPACE,
   DEFAULT_NAMESPACE,
-} from "./constants.js";
+} from "@llamaindex/core/global";
+import { ModalityType, ObjectType } from "@llamaindex/core/schema";
+import { path } from "@llamaindex/env";
+import { getImageEmbedModel } from "../internal/settings/image-embed-model.js";
 import { SimpleDocumentStore } from "./docStore/SimpleDocumentStore.js";
 import type { BaseDocumentStore } from "./docStore/types.js";
 import { SimpleIndexStore } from "./indexStore/SimpleIndexStore.js";
diff --git a/packages/llamaindex/src/storage/constants.ts b/packages/llamaindex/src/storage/constants.ts
deleted file mode 100644
index 8d58a29a7..000000000
--- a/packages/llamaindex/src/storage/constants.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export const DEFAULT_COLLECTION = "data";
-export const DEFAULT_PERSIST_DIR = "./storage";
-export const DEFAULT_INDEX_STORE_PERSIST_FILENAME = "index_store.json";
-export const DEFAULT_DOC_STORE_PERSIST_FILENAME = "doc_store.json";
-export const DEFAULT_VECTOR_STORE_PERSIST_FILENAME = "vector_store.json";
-export const DEFAULT_GRAPH_STORE_PERSIST_FILENAME = "graph_store.json";
-export const DEFAULT_NAMESPACE = "docstore";
-export const DEFAULT_IMAGE_VECTOR_NAMESPACE = "images";
diff --git a/packages/llamaindex/src/storage/docStore/KVDocumentStore.ts b/packages/llamaindex/src/storage/docStore/KVDocumentStore.ts
index b239c4c69..0e65af62a 100644
--- a/packages/llamaindex/src/storage/docStore/KVDocumentStore.ts
+++ b/packages/llamaindex/src/storage/docStore/KVDocumentStore.ts
@@ -1,7 +1,7 @@
+import { DEFAULT_NAMESPACE } from "@llamaindex/core/global";
 import type { BaseNode } from "@llamaindex/core/schema";
 import { ObjectType } from "@llamaindex/core/schema";
 import _ from "lodash";
-import { DEFAULT_NAMESPACE } from "../constants.js";
 import type { BaseKVStore } from "../kvStore/types.js";
 import type { RefDocInfo } from "./types.js";
 import { BaseDocumentStore } from "./types.js";
diff --git a/packages/llamaindex/src/storage/docStore/SimpleDocumentStore.ts b/packages/llamaindex/src/storage/docStore/SimpleDocumentStore.ts
index 710b72d29..41ee12900 100644
--- a/packages/llamaindex/src/storage/docStore/SimpleDocumentStore.ts
+++ b/packages/llamaindex/src/storage/docStore/SimpleDocumentStore.ts
@@ -1,10 +1,10 @@
-import { path } from "@llamaindex/env";
-import _ from "lodash";
 import {
   DEFAULT_DOC_STORE_PERSIST_FILENAME,
   DEFAULT_NAMESPACE,
   DEFAULT_PERSIST_DIR,
-} from "../constants.js";
+} from "@llamaindex/core/global";
+import { path } from "@llamaindex/env";
+import _ from "lodash";
 import { SimpleKVStore } from "../kvStore/SimpleKVStore.js";
 import { BaseInMemoryKVStore } from "../kvStore/types.js";
 import { KVDocumentStore } from "./KVDocumentStore.js";
diff --git a/packages/llamaindex/src/storage/docStore/types.ts b/packages/llamaindex/src/storage/docStore/types.ts
index 8c2fd5a49..eed71e343 100644
--- a/packages/llamaindex/src/storage/docStore/types.ts
+++ b/packages/llamaindex/src/storage/docStore/types.ts
@@ -1,8 +1,8 @@
-import { BaseNode } from "@llamaindex/core/schema";
 import {
   DEFAULT_DOC_STORE_PERSIST_FILENAME,
   DEFAULT_PERSIST_DIR,
-} from "../constants.js";
+} from "@llamaindex/core/global";
+import { BaseNode } from "@llamaindex/core/schema";
 
 const defaultPersistPath = `${DEFAULT_PERSIST_DIR}/${DEFAULT_DOC_STORE_PERSIST_FILENAME}`;
 
diff --git a/packages/llamaindex/src/storage/index.ts b/packages/llamaindex/src/storage/index.ts
index d839410e9..27af70716 100644
--- a/packages/llamaindex/src/storage/index.ts
+++ b/packages/llamaindex/src/storage/index.ts
@@ -1,6 +1,5 @@
 export { SimpleChatStore } from "./chatStore/SimpleChatStore.js";
 export * from "./chatStore/types.js";
-export * from "./constants.js";
 export { SimpleDocumentStore } from "./docStore/SimpleDocumentStore.js";
 export * from "./docStore/types.js";
 export * from "./FileSystem.js";
diff --git a/packages/llamaindex/src/storage/indexStore/KVIndexStore.ts b/packages/llamaindex/src/storage/indexStore/KVIndexStore.ts
index 87ce07fa2..38736333a 100644
--- a/packages/llamaindex/src/storage/indexStore/KVIndexStore.ts
+++ b/packages/llamaindex/src/storage/indexStore/KVIndexStore.ts
@@ -1,7 +1,7 @@
+import { DEFAULT_NAMESPACE } from "@llamaindex/core/global";
 import _ from "lodash";
 import type { IndexStruct } from "../../indices/IndexStruct.js";
 import { jsonToIndexStruct } from "../../indices/json-to-index-struct.js";
-import { DEFAULT_NAMESPACE } from "../constants.js";
 import type { BaseKVStore } from "../kvStore/types.js";
 import { BaseIndexStore } from "./types.js";
 
diff --git a/packages/llamaindex/src/storage/indexStore/SimpleIndexStore.ts b/packages/llamaindex/src/storage/indexStore/SimpleIndexStore.ts
index 5447b5638..516024be5 100644
--- a/packages/llamaindex/src/storage/indexStore/SimpleIndexStore.ts
+++ b/packages/llamaindex/src/storage/indexStore/SimpleIndexStore.ts
@@ -1,8 +1,8 @@
-import { path } from "@llamaindex/env";
 import {
   DEFAULT_INDEX_STORE_PERSIST_FILENAME,
   DEFAULT_PERSIST_DIR,
-} from "../constants.js";
+} from "@llamaindex/core/global";
+import { path } from "@llamaindex/env";
 import type { DataType } from "../kvStore/SimpleKVStore.js";
 import { SimpleKVStore } from "../kvStore/SimpleKVStore.js";
 import type { BaseInMemoryKVStore } from "../kvStore/types.js";
diff --git a/packages/llamaindex/src/storage/indexStore/types.ts b/packages/llamaindex/src/storage/indexStore/types.ts
index e503af83c..2cab6aa77 100644
--- a/packages/llamaindex/src/storage/indexStore/types.ts
+++ b/packages/llamaindex/src/storage/indexStore/types.ts
@@ -1,10 +1,14 @@
-import type { IndexStruct } from "../../indices/IndexStruct.js";
 import {
   DEFAULT_INDEX_STORE_PERSIST_FILENAME,
   DEFAULT_PERSIST_DIR,
-} from "../constants.js";
+} from "@llamaindex/core/global";
+import { path } from "@llamaindex/env";
+import type { IndexStruct } from "../../indices/IndexStruct.js";
 
-const defaultPersistPath = `${DEFAULT_PERSIST_DIR}/${DEFAULT_INDEX_STORE_PERSIST_FILENAME}`;
+const defaultPersistPath = path.join(
+  DEFAULT_PERSIST_DIR,
+  DEFAULT_INDEX_STORE_PERSIST_FILENAME,
+);
 
 export abstract class BaseIndexStore {
   abstract getIndexStructs(): Promise<IndexStruct[]>;
diff --git a/packages/llamaindex/src/storage/kvStore/SimpleKVStore.ts b/packages/llamaindex/src/storage/kvStore/SimpleKVStore.ts
index 07c3a696e..38b333528 100644
--- a/packages/llamaindex/src/storage/kvStore/SimpleKVStore.ts
+++ b/packages/llamaindex/src/storage/kvStore/SimpleKVStore.ts
@@ -1,6 +1,6 @@
+import { DEFAULT_COLLECTION } from "@llamaindex/core/global";
 import { fs, path } from "@llamaindex/env";
 import { exists } from "../FileSystem.js";
-import { DEFAULT_COLLECTION } from "../constants.js";
 import { BaseKVStore } from "./types.js";
 
 export type DataType = Record<string, Record<string, any>>;
diff --git a/packages/llamaindex/src/storage/vectorStore/SimpleVectorStore.ts b/packages/llamaindex/src/storage/vectorStore/SimpleVectorStore.ts
index 342a52966..7c9c380dc 100644
--- a/packages/llamaindex/src/storage/vectorStore/SimpleVectorStore.ts
+++ b/packages/llamaindex/src/storage/vectorStore/SimpleVectorStore.ts
@@ -1,4 +1,5 @@
 import type { BaseEmbedding } from "@llamaindex/core/embeddings";
+import { DEFAULT_PERSIST_DIR } from "@llamaindex/core/global";
 import type { BaseNode } from "@llamaindex/core/schema";
 import { fs, path } from "@llamaindex/env";
 import {
@@ -6,7 +7,6 @@ import {
   getTopKMMREmbeddings,
 } from "../../internal/utils.js";
 import { exists } from "../FileSystem.js";
-import { DEFAULT_PERSIST_DIR } from "../constants.js";
 import {
   FilterOperator,
   VectorStoreBase,
-- 
GitLab