From 2791f753e018da7ff691038d1da265bb137c94ba Mon Sep 17 00:00:00 2001 From: Yi Ding <yi.s.ding@gmail.com> Date: Thu, 29 Jun 2023 07:55:36 -0700 Subject: [PATCH] use Record for object dictionaries --- packages/core/src/LLMPredictor.ts | 4 ++-- packages/core/src/LanguageModel.ts | 2 +- packages/core/src/Node.ts | 4 ++-- packages/core/src/Prompt.ts | 2 +- packages/core/src/readers/SimpleDirectoryReader.ts | 6 +++--- packages/core/src/storage/FileSystem.ts | 2 +- .../core/src/storage/docStore/SimpleDocumentStore.ts | 2 +- packages/core/src/storage/docStore/types.ts | 10 ++++------ packages/core/src/storage/kvStore/SimpleKVStore.ts | 4 +--- packages/core/src/storage/kvStore/types.ts | 6 +++--- .../core/src/storage/vectorStore/SimpleVectorStore.ts | 4 ++-- 11 files changed, 21 insertions(+), 25 deletions(-) diff --git a/packages/core/src/LLMPredictor.ts b/packages/core/src/LLMPredictor.ts index ac54bc1aa..d63e0bbaf 100644 --- a/packages/core/src/LLMPredictor.ts +++ b/packages/core/src/LLMPredictor.ts @@ -5,7 +5,7 @@ export interface BaseLLMPredictor { getLlmMetadata(): Promise<any>; apredict( prompt: string | SimplePrompt, - input?: { [key: string]: string } + input?: Record<string, string> ): Promise<string>; // stream(prompt: string, options: any): Promise<any>; } @@ -31,7 +31,7 @@ export class ChatGPTLLMPredictor implements BaseLLMPredictor { async apredict( prompt: string | SimplePrompt, - input?: { [key: string]: string } + input?: Record<string, string> ): Promise<string> { if (typeof prompt === "string") { const result = await this.languageModel.agenerate([ diff --git a/packages/core/src/LanguageModel.ts b/packages/core/src/LanguageModel.ts index 8862e2fd9..c626ece8c 100644 --- a/packages/core/src/LanguageModel.ts +++ b/packages/core/src/LanguageModel.ts @@ -17,7 +17,7 @@ interface BaseMessage { interface Generation { text: string; - generationInfo?: { [key: string]: any }; + generationInfo?: Record<string, any>; } export interface LLMResult { diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 2c50d0d8a..19a4cc152 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -25,7 +25,7 @@ export enum MetadataMode { export interface RelatedNodeInfo { nodeId: string; nodeType?: ObjectType; - metadata: { [key: string]: any }; + metadata: Record<string, any>; hash?: string; } @@ -39,7 +39,7 @@ export abstract class BaseNode { embedding?: number[]; // Metadata fields - metadata: { [key: string]: any } = {}; + metadata: Record<string, any> = {}; excludedEmbedMetadataKeys: string[] = []; excludedLlmMetadataKeys: string[] = []; relationships: Partial<Record<NodeRelationship, RelatedNodeType>> = {}; diff --git a/packages/core/src/Prompt.ts b/packages/core/src/Prompt.ts index 8d1db56cf..baa2f3f0a 100644 --- a/packages/core/src/Prompt.ts +++ b/packages/core/src/Prompt.ts @@ -3,7 +3,7 @@ * NOTE this is a different interface compared to LlamaIndex Python * NOTE 2: we default to empty string to make it easy to calculate prompt sizes */ -export type SimplePrompt = (input: { [key: string]: string }) => string; +export type SimplePrompt = (input: Record<string, string>) => string; /* DEFAULT_TEXT_QA_PROMPT_TMPL = ( diff --git a/packages/core/src/readers/SimpleDirectoryReader.ts b/packages/core/src/readers/SimpleDirectoryReader.ts index d4b850489..a3cd309ed 100644 --- a/packages/core/src/readers/SimpleDirectoryReader.ts +++ b/packages/core/src/readers/SimpleDirectoryReader.ts @@ -1,5 +1,5 @@ import _ from "lodash"; -import { Document } from "../Document"; +import { Document } from "../Node"; import { BaseReader } from "./base"; import { CompleteFileSystem, walk } from "../storage/FileSystem"; import { DEFAULT_FS } from "../storage/constants"; @@ -15,7 +15,7 @@ export class TextFileReader implements BaseReader { } } -const FILE_EXT_TO_READER: { [key: string]: BaseReader } = { +const FILE_EXT_TO_READER: Record<string, BaseReader> = { txt: new TextFileReader(), pdf: new PDFReader(), }; @@ -24,7 +24,7 @@ export type SimpleDirectoryReaderLoadDataProps = { directoryPath: string; fs?: CompleteFileSystem; defaultReader?: BaseReader | null; - fileExtToReader?: { [key: string]: BaseReader }; + fileExtToReader?: Record<string, BaseReader>; }; export default class SimpleDirectoryReader implements BaseReader { diff --git a/packages/core/src/storage/FileSystem.ts b/packages/core/src/storage/FileSystem.ts index fbf8e2e2f..ce3d63218 100644 --- a/packages/core/src/storage/FileSystem.ts +++ b/packages/core/src/storage/FileSystem.ts @@ -22,7 +22,7 @@ export interface WalkableFileSystem { * A filesystem implementation that stores files in memory. */ export class InMemoryFileSystem implements GenericFileSystem { - private files: { [filepath: string]: any } = {}; + private files: Record<string, any> = {}; async writeFile(path: string, content: string, options?: any): Promise<void> { this.files[path] = _.cloneDeep(content); diff --git a/packages/core/src/storage/docStore/SimpleDocumentStore.ts b/packages/core/src/storage/docStore/SimpleDocumentStore.ts index 1f8fa7168..f2554a3ee 100644 --- a/packages/core/src/storage/docStore/SimpleDocumentStore.ts +++ b/packages/core/src/storage/docStore/SimpleDocumentStore.ts @@ -11,7 +11,7 @@ import { DEFAULT_FS, } from "../constants"; -type SaveDict = { [key: string]: any }; +type SaveDict = Record<string, any>; export class SimpleDocumentStore extends KVDocumentStore { private kvStore: SimpleKVStore; diff --git a/packages/core/src/storage/docStore/types.ts b/packages/core/src/storage/docStore/types.ts index 5f32f9b67..e744fe060 100644 --- a/packages/core/src/storage/docStore/types.ts +++ b/packages/core/src/storage/docStore/types.ts @@ -9,7 +9,7 @@ const defaultPersistPath = `${DEFAULT_PERSIST_DIR}/${DEFAULT_DOC_STORE_PERSIST_F export interface RefDocInfo { docIds: string[]; - extraInfo: { [key: string]: any }; + extraInfo: Record<string, any>; } export abstract class BaseDocumentStore { @@ -41,9 +41,7 @@ export abstract class BaseDocumentStore { abstract getDocumentHash(docId: string): Promise<string | undefined>; // Ref Docs - abstract getAllRefDocInfo(): Promise< - { [key: string]: RefDocInfo } | undefined - >; + abstract getAllRefDocInfo(): Promise<Record<string, RefDocInfo> | undefined>; abstract getRefDocInfo(refDocId: string): Promise<RefDocInfo | undefined>; @@ -66,8 +64,8 @@ export abstract class BaseDocumentStore { async getNodeDict(nodeIdDict: { [index: number]: string; - }): Promise<{ [index: number]: BaseNode }> { - let result: { [index: number]: BaseNode } = {}; + }): Promise<Record<number, BaseNode>> { + let result: Record<number, BaseNode> = {}; for (let index in nodeIdDict) { result[index] = await this.getNode(nodeIdDict[index]); } diff --git a/packages/core/src/storage/kvStore/SimpleKVStore.ts b/packages/core/src/storage/kvStore/SimpleKVStore.ts index 196d7631a..bc4928325 100644 --- a/packages/core/src/storage/kvStore/SimpleKVStore.ts +++ b/packages/core/src/storage/kvStore/SimpleKVStore.ts @@ -4,9 +4,7 @@ import { DEFAULT_COLLECTION, DEFAULT_FS } from "../constants"; import * as _ from "lodash"; import { BaseKVStore } from "./types"; -export interface DataType { - [key: string]: { [key: string]: any }; -} +export type DataType = Record<string, Record<string, any>>; export class SimpleKVStore extends BaseKVStore { private data: DataType; diff --git a/packages/core/src/storage/kvStore/types.ts b/packages/core/src/storage/kvStore/types.ts index b6c3785fd..0d842bcbd 100644 --- a/packages/core/src/storage/kvStore/types.ts +++ b/packages/core/src/storage/kvStore/types.ts @@ -1,16 +1,16 @@ import { GenericFileSystem } from "../FileSystem"; const defaultCollection = "data"; -type StoredValue = { [key: string]: any } | null; +type StoredValue = Record<string, any> | null; export abstract class BaseKVStore { abstract put( key: string, - val: { [key: string]: any }, + val: Record<string, any>, collection?: string ): Promise<void>; abstract get(key: string, collection?: string): Promise<StoredValue>; - abstract getAll(collection?: string): Promise<{ [key: string]: StoredValue }>; + abstract getAll(collection?: string): Promise<Record<string, StoredValue>>; abstract delete(key: string, collection?: string): Promise<boolean>; } diff --git a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts index 489b13022..6ae58d8a9 100644 --- a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts +++ b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts @@ -23,8 +23,8 @@ const LEARNER_MODES = new Set<VectorStoreQueryMode>([ const MMR_MODE = VectorStoreQueryMode.MMR; class SimpleVectorStoreData { - embeddingDict: { [key: string]: number[] } = {}; - textIdToRefDocId: { [key: string]: string } = {}; + embeddingDict: Record<string, number> = {}; + textIdToRefDocId: Record<string, string> = {}; } export class SimpleVectorStore implements VectorStore { -- GitLab