diff --git a/apps/mongodb/2_load_and_index.ts b/apps/mongodb/2_load_and_index.ts index 59874de03ecfcd6372fbc1452da9b6931e76d1e2..0d7a3a23f70c45dffb37b1b1feca03a2f27d48ac 100644 --- a/apps/mongodb/2_load_and_index.ts +++ b/apps/mongodb/2_load_and_index.ts @@ -3,8 +3,8 @@ import * as dotenv from "dotenv"; import { MongoDBAtlasVectorSearch, SimpleMongoReader, - VectorStoreIndex, storageContextFromDefaults, + VectorStoreIndex, } from "llamaindex"; import { MongoClient } from "mongodb"; diff --git a/apps/mongodb/3_query.ts b/apps/mongodb/3_query.ts index 26620499b373721b1db9190626c762145a454d85..32a35293942a99230427c2ea19026db6984244dd 100644 --- a/apps/mongodb/3_query.ts +++ b/apps/mongodb/3_query.ts @@ -2,8 +2,8 @@ import * as dotenv from "dotenv"; import { MongoDBAtlasVectorSearch, - VectorStoreIndex, serviceContextFromDefaults, + VectorStoreIndex, } from "llamaindex"; import { MongoClient } from "mongodb"; diff --git a/apps/simple/mongo.ts b/apps/simple/mongo.ts index 5b5f735ffb3f0ada9906d29fc429afa10deedf4c..cf32a0af8070a5c90237377b2fb3d095136c238d 100644 --- a/apps/simple/mongo.ts +++ b/apps/simple/mongo.ts @@ -1,6 +1,6 @@ import { MongoClient } from "mongodb"; -import { Document } from "../../packages/core/src/Node"; import { VectorStoreIndex } from "../../packages/core/src/indices"; +import { Document } from "../../packages/core/src/Node"; import { SimpleMongoReader } from "../../packages/core/src/readers/SimpleMongoReader"; import { stdin as input, stdout as output } from "node:process"; diff --git a/apps/simple/pg-vector-store/README.md b/apps/simple/pg-vector-store/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7bcf6a854430165398eafdb80159d769645e4715 --- /dev/null +++ b/apps/simple/pg-vector-store/README.md @@ -0,0 +1,28 @@ +# Postgres Vector Store +There are two scripts available here: load-docs.ts and query.ts + +## Prerequisites +You'll need a postgres database instance against which to run these scripts. A simple docker command would look like this: + +>`docker run -d --rm --name vector-db -p 5432:5432 -e "POSTGRES_HOST_AUTH_METHOD=trust" ankane/pgvector` + +Set the PGHOST and PGUSER (and PGPASSWORD) environment variables to match your database setup. + +You'll also need a value for OPENAI_API_KEY in your environment. + +**NOTE:** Using `--rm` in the example docker command above means that the vector store will be deleted every time the container is stopped. For production purposes, use a volume to ensure persistence across restarts. + +## Setup and Loading Docs +Read and follow the instructions in the README.md file located one directory up to make sure your JS/TS dependencies are set up. The commands listed below are also run from that parent directory. + +To import documents and save the embedding vectors to your database: +>`npx ts-node pg-vector-store/load-docs.ts data` + +where data is the directory containing your input files. Using the *data* directory in the example above will read all of the files in that directory using the llamaindexTS default readers for each file type. + +## RAG Querying +To query using the resulting vector store: + +>`npx ts-node pg-vector-store/query.ts` + +The script will prompt for a question, then process and present the answer using the PGVectorStore data and your OpenAI API key. It will continue to prompt until you enter `q`, `quit` or `exit` as the next query. \ No newline at end of file diff --git a/apps/simple/pg-vector-store/load-docs.ts b/apps/simple/pg-vector-store/load-docs.ts new file mode 100755 index 0000000000000000000000000000000000000000..2a5eb863b3035287549d1faa08a94170b13cd9f1 --- /dev/null +++ b/apps/simple/pg-vector-store/load-docs.ts @@ -0,0 +1,60 @@ +// load-docs.ts +import fs from 'fs/promises'; +import { SimpleDirectoryReader, storageContextFromDefaults, VectorStoreIndex } from 'llamaindex'; +import { PGVectorStore } from "../../../packages/core/src/storage/vectorStore/PGVectorStore"; + +async function getSourceFilenames(sourceDir: string) { + return await fs.readdir(sourceDir) + .then( + (fileNames) => fileNames.map( + (file) => sourceDir + '/' + file + ) + ); +} + +function callback(category: string, name: string, status: any, message: string = ''): boolean { + console.log(category, name, status, message); + return true; +} + +async function main(args: any) { + + const sourceDir: string = args.length > 2 ? args[2] : '../data'; + + console.log(`Finding documents in ${sourceDir}`); + const fileList = await getSourceFilenames(sourceDir); + const count = fileList.length; + console.log(`Found ${count} files`); + + console.log(`Importing contents from ${count} files in ${sourceDir}`); + var fileName = ''; + try { + + // Passing callback fn to the ctor here + // will enable looging to console. + // See callback fn, defined above. + const rdr = new SimpleDirectoryReader(callback); + const docs = await rdr.loadData({ directoryPath: sourceDir }); + + const pgvs = new PGVectorStore(); + pgvs.setCollection(sourceDir); + pgvs.clearCollection(); + + const ctx = await storageContextFromDefaults( + { vectorStore: pgvs } + ); + + console.debug(' - creating vector store'); + const index = await VectorStoreIndex.fromDocuments(docs, { storageContext: ctx }); + console.debug(' - done.'); + } catch (err) { + console.error(fileName, err); + console.log("If your PGVectorStore init failed, make sure to set env vars for PGUSER or USER, PGHOST, PGPORT and PGPASSWORD as needed."); + process.exit(1); + } + + console.log("Done. Try running query.ts to ask questions against the imported embeddings."); + process.exit(0); +} + +main(process.argv).catch((err) => console.error(err)); \ No newline at end of file diff --git a/apps/simple/pg-vector-store/query.ts b/apps/simple/pg-vector-store/query.ts new file mode 100755 index 0000000000000000000000000000000000000000..9bb7c34a3bd4b679c2acf00bc4c3c9573712270a --- /dev/null +++ b/apps/simple/pg-vector-store/query.ts @@ -0,0 +1,59 @@ +import { VectorStoreIndex } from "../../../packages/core/src/indices/vectorStore/VectorStoreIndex"; +import { serviceContextFromDefaults } from "../../../packages/core/src/ServiceContext"; +import { PGVectorStore } from "../../../packages/core/src/storage/vectorStore/PGVectorStore"; + +async function main() { + + const readline = require('readline').createInterface({ + input: process.stdin, + output: process.stdout + }); + + try { + const pgvs = new PGVectorStore(); + // Optional - set your collection name, default is no filter on this field. + // pgvs.setCollection(); + + const ctx = serviceContextFromDefaults(); + const index = await VectorStoreIndex.fromVectorStore(pgvs, ctx); + + // Query the index + const queryEngine = await index.asQueryEngine(); + + let question = ''; + while (! isQuit(question)) { + question = await getUserInput(readline); + + if (isQuit(question)) { + readline.close(); + process.exit(0); + } + + try { + const answer = await queryEngine.query(question); + console.log(answer.response); + } catch (error) { + console.error('Error:', error); + } + } + } catch (err) { + console.error(err); + console.log("If your PGVectorStore init failed, make sure to set env vars for PGUSER or USER, PGHOST, PGPORT and PGPASSWORD as needed."); + process.exit(1); + } +} + +function isQuit(question: string) { + return ['q', 'quit', 'exit'].includes(question.trim().toLowerCase()); +} + +// Function to get user input as a promise +function getUserInput(readline: any): Promise<string> { + return new Promise((resolve) => { + readline.question("What would you like to know?\n>", (userInput: string) => { + resolve(userInput); + }); + }); +} + +main().catch(console.error).finally(() => { process.exit(1) }); diff --git a/examples/clip.ts b/examples/clip.ts index 075bd0f25d87a29c02df7f8be21697a14fdf8e80..6d02b7ea9622c40de6eac9f599666df26daddef5 100644 --- a/examples/clip.ts +++ b/examples/clip.ts @@ -1,4 +1,4 @@ -import { ClipEmbedding, SimilarityType, similarity } from "llamaindex"; +import { ClipEmbedding, similarity, SimilarityType } from "llamaindex"; async function main() { const clip = new ClipEmbedding(); diff --git a/examples/mongo.ts b/examples/mongo.ts index 5b5f735ffb3f0ada9906d29fc429afa10deedf4c..cf32a0af8070a5c90237377b2fb3d095136c238d 100644 --- a/examples/mongo.ts +++ b/examples/mongo.ts @@ -1,6 +1,6 @@ import { MongoClient } from "mongodb"; -import { Document } from "../../packages/core/src/Node"; import { VectorStoreIndex } from "../../packages/core/src/indices"; +import { Document } from "../../packages/core/src/Node"; import { SimpleMongoReader } from "../../packages/core/src/readers/SimpleMongoReader"; import { stdin as input, stdout as output } from "node:process"; diff --git a/packages/core/package.json b/packages/core/package.json index 054bd157f70da33e90f03f35f5300a74d59de37c..3b6de230894dd1c3c973b474980b89d3f026ad96 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -16,6 +16,8 @@ "openai": "^4.19.1", "papaparse": "^5.4.1", "pdf-parse": "^1.1.1", + "pg": "^8.11.3", + "pgvector": "^0.1.5", "portkey-ai": "^0.1.16", "rake-modified": "^1.0.8", "replicate": "^0.21.1", @@ -29,6 +31,7 @@ "@types/node": "^18.18.12", "@types/papaparse": "^5.3.13", "@types/pdf-parse": "^1.1.4", + "@types/pg": "^8.10.7", "@types/uuid": "^9.0.7", "node-stdlib-browser": "^1.2.0", "tsup": "^7.2.0", diff --git a/packages/core/src/QueryEngine.ts b/packages/core/src/QueryEngine.ts index 2634096ed9c9fab871a41c970cf9be6145394e9c..abfb52d81c35edabe95e72bbbda604d927dbe069 100644 --- a/packages/core/src/QueryEngine.ts +++ b/packages/core/src/QueryEngine.ts @@ -1,4 +1,6 @@ import { v4 as uuidv4 } from "uuid"; +import { Event } from "./callbacks/CallbackManager"; +import { BaseNodePostprocessor } from "./indices/BaseNodePostprocessor"; import { NodeWithScore, TextNode } from "./Node"; import { BaseQuestionGenerator, @@ -10,8 +12,6 @@ import { CompactAndRefine, ResponseSynthesizer } from "./ResponseSynthesizer"; import { BaseRetriever } from "./Retriever"; import { ServiceContext, serviceContextFromDefaults } from "./ServiceContext"; import { QueryEngineTool, ToolMetadata } from "./Tool"; -import { Event } from "./callbacks/CallbackManager"; -import { BaseNodePostprocessor } from "./indices/BaseNodePostprocessor"; /** * A query engine is a question answerer that can use one or more steps. diff --git a/packages/core/src/ServiceContext.ts b/packages/core/src/ServiceContext.ts index da33be2094ac1102aefaa1f58c665df7eae677c8..e1490a1995f8dd699f4dcb09cb37a5d968b86ecb 100644 --- a/packages/core/src/ServiceContext.ts +++ b/packages/core/src/ServiceContext.ts @@ -1,8 +1,8 @@ -import { NodeParser, SimpleNodeParser } from "./NodeParser"; -import { PromptHelper } from "./PromptHelper"; import { CallbackManager } from "./callbacks/CallbackManager"; import { BaseEmbedding, OpenAIEmbedding } from "./embeddings"; import { LLM, OpenAI } from "./llm/LLM"; +import { NodeParser, SimpleNodeParser } from "./NodeParser"; +import { PromptHelper } from "./PromptHelper"; /** * The ServiceContext is a collection of components that are used in different parts of the application. diff --git a/packages/core/src/embeddings/OpenAIEmbedding.ts b/packages/core/src/embeddings/OpenAIEmbedding.ts index 106c6cbff294d49bf87d912676e3656339b1b4c8..ecc2509a75b93226cb34e6ecb0a810bfc0b49a6b 100644 --- a/packages/core/src/embeddings/OpenAIEmbedding.ts +++ b/packages/core/src/embeddings/OpenAIEmbedding.ts @@ -6,7 +6,7 @@ import { getAzureModel, shouldUseAzure, } from "../llm/azure"; -import { OpenAISession, getOpenAISession } from "../llm/openai"; +import { getOpenAISession, OpenAISession } from "../llm/openai"; import { BaseEmbedding } from "./types"; export enum OpenAIEmbeddingModelType { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index dde8fff26fef4de5c78d7adb567f956952259183..a0d4b6d7551a18feefd6c5fbd0b326ec70c9b3af 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,6 +1,11 @@ +export * from "./callbacks/CallbackManager"; export * from "./ChatEngine"; export * from "./ChatHistory"; +export * from "./constants"; +export * from "./embeddings"; export * from "./GlobalsHelper"; +export * from "./indices"; +export * from "./llm/LLM"; export * from "./Node"; export * from "./NodeParser"; export * from "./OutputParser"; @@ -8,17 +13,7 @@ export * from "./Prompt"; export * from "./PromptHelper"; export * from "./QueryEngine"; export * from "./QuestionGenerator"; -export * from "./Response"; -export * from "./ResponseSynthesizer"; -export * from "./Retriever"; -export * from "./ServiceContext"; -export * from "./TextSplitter"; -export * from "./Tool"; -export * from "./callbacks/CallbackManager"; -export * from "./constants"; -export * from "./embeddings"; -export * from "./indices"; -export * from "./llm/LLM"; +export * from "./readers/base"; export * from "./readers/CSVReader"; export * from "./readers/HTMLReader"; export * from "./readers/MarkdownReader"; @@ -26,5 +21,10 @@ export * from "./readers/NotionReader"; export * from "./readers/PDFReader"; export * from "./readers/SimpleDirectoryReader"; export * from "./readers/SimpleMongoReader"; -export * from "./readers/base"; +export * from "./Response"; +export * from "./ResponseSynthesizer"; +export * from "./Retriever"; +export * from "./ServiceContext"; export * from "./storage"; +export * from "./TextSplitter"; +export * from "./Tool"; diff --git a/packages/core/src/indices/summary/SummaryIndex.ts b/packages/core/src/indices/summary/SummaryIndex.ts index 1c92067e1192e62cd283de84525005f6b5cb9e41..57659e9ee54c658f0ee64b3928ab860683948fa3 100644 --- a/packages/core/src/indices/summary/SummaryIndex.ts +++ b/packages/core/src/indices/summary/SummaryIndex.ts @@ -10,11 +10,11 @@ import { ServiceContext, serviceContextFromDefaults, } from "../../ServiceContext"; +import { BaseDocumentStore, RefDocInfo } from "../../storage/docStore/types"; import { StorageContext, storageContextFromDefaults, } from "../../storage/StorageContext"; -import { BaseDocumentStore, RefDocInfo } from "../../storage/docStore/types"; import { BaseIndex, BaseIndexInit, diff --git a/packages/core/src/llm/LLM.ts b/packages/core/src/llm/LLM.ts index 7ebc7bca5333f2a182d1dfa2e90d6c5783ea69ab..ef505224aff529071212daa6bb7cffcdd0cbf901 100644 --- a/packages/core/src/llm/LLM.ts +++ b/packages/core/src/llm/LLM.ts @@ -12,9 +12,9 @@ import { ChatCompletionMessageParam } from "openai/resources"; import { LLMOptions } from "portkey-ai"; import { globalsHelper, Tokenizers } from "../GlobalsHelper"; import { + AnthropicSession, ANTHROPIC_AI_PROMPT, ANTHROPIC_HUMAN_PROMPT, - AnthropicSession, getAnthropicSession, } from "./anthropic"; import { diff --git a/packages/core/src/readers/DocxReader.ts b/packages/core/src/readers/DocxReader.ts index 4b72bc6728d9c7ca4b8760fb5e3f135ef26a8d85..fae5b696d28a671c4c3ea6d56d79d9e4ac5a96b3 100644 --- a/packages/core/src/readers/DocxReader.ts +++ b/packages/core/src/readers/DocxReader.ts @@ -1,7 +1,7 @@ import mammoth from "mammoth"; import { Document } from "../Node"; -import { GenericFileSystem } from "../storage/FileSystem"; import { DEFAULT_FS } from "../storage/constants"; +import { GenericFileSystem } from "../storage/FileSystem"; import { BaseReader } from "./base"; export class DocxReader implements BaseReader { diff --git a/packages/core/src/storage/index.ts b/packages/core/src/storage/index.ts index 96f8743be6e564594ba4c1d662d536d8f33a6edc..14f8a1ac137f4e7c87560671dae6b856ae6b8287 100644 --- a/packages/core/src/storage/index.ts +++ b/packages/core/src/storage/index.ts @@ -1,12 +1,12 @@ -export * from "./FileSystem"; -export * from "./StorageContext"; export * from "./constants"; export { SimpleDocumentStore } from "./docStore/SimpleDocumentStore"; export * from "./docStore/types"; +export * from "./FileSystem"; export { SimpleIndexStore } from "./indexStore/SimpleIndexStore"; export * from "./indexStore/types"; export { SimpleKVStore } from "./kvStore/SimpleKVStore"; export * from "./kvStore/types"; +export * from "./StorageContext"; export { MongoDBAtlasVectorSearch } from "./vectorStore/MongoDBAtlasVectorStore"; export { SimpleVectorStore } from "./vectorStore/SimpleVectorStore"; export * from "./vectorStore/types"; diff --git a/packages/core/src/storage/vectorStore/PGVectorStore.ts b/packages/core/src/storage/vectorStore/PGVectorStore.ts new file mode 100644 index 0000000000000000000000000000000000000000..59cf8d461528c2e9fc6593a657b8503da6a1336a --- /dev/null +++ b/packages/core/src/storage/vectorStore/PGVectorStore.ts @@ -0,0 +1,268 @@ +import pg from 'pg'; +import pgvector from 'pgvector/pg'; + +import { + VectorStore, + VectorStoreQuery, + VectorStoreQueryResult, +} from "./types"; + +import { BaseNode, Document, Metadata, MetadataMode } from '../../Node'; +import { GenericFileSystem } from '../FileSystem'; + +export const PGVECTOR_SCHEMA = 'public'; +export const PGVECTOR_TABLE = 'llamaindex_embedding'; + +/** + * Provides support for writing and querying vector data in Postgres. + */ +export class PGVectorStore implements VectorStore { + storesText: boolean = true; + + private collection: string = ''; + + /* + FROM pg LIBRARY: + type Config = { + user?: string, // default process.env.PGUSER || process.env.USER + password?: string or function, //default process.env.PGPASSWORD + host?: string, // default process.env.PGHOST + database?: string, // default process.env.PGDATABASE || user + port?: number, // default process.env.PGPORT + connectionString?: string, // e.g. postgres://user:password@host:5432/database + ssl?: any, // passed directly to node.TLSSocket, supports all tls.connect options + types?: any, // custom type parsers + statement_timeout?: number, // number of milliseconds before a statement in query will time out, default is no timeout + query_timeout?: number, // number of milliseconds before a query call will timeout, default is no timeout + application_name?: string, // The name of the application that created this Client instance + connectionTimeoutMillis?: number, // number of milliseconds to wait for connection, default is no timeout + idle_in_transaction_session_timeout?: number // number of milliseconds before terminating any session with an open idle transaction, default is no timeout + } + */ + db?: pg.Client; + + constructor() {} + + /** + * Setter for the collection property. + * Using a collection allows for simple segregation of vector data, + * e.g. by user, source, or access-level. + * Leave/set blank to ignore the collection value when querying. + * @param coll Name for the collection. + */ + setCollection(coll: string) { + this.collection = coll; + } + + /** + * Getter for the collection property. + * Using a collection allows for simple segregation of vector data, + * e.g. by user, source, or access-level. + * Leave/set blank to ignore the collection value when querying. + * @returns The currently-set collection value. Default is empty string. + */ + getCollection(): string { + return this.collection; + } + + private async getDb(): Promise<pg.Client> { + if (! this.db) { + + try { + // Create DB connection + // Read connection params from env - see comment block above + const db = new pg.Client(); + await db.connect(); + + // Check vector extension + db.query("CREATE EXTENSION IF NOT EXISTS vector"); + await pgvector.registerType(db); + + // Check schema, table(s), index(es) + await this.checkSchema(db); + + // All good? Keep the connection reference + this.db = db; + + } catch (err: any) { + console.error(err); + return Promise.reject(err); + } + } + + return Promise.resolve(this.db); + } + + private async checkSchema(db: pg.Client) { + await db.query(`CREATE SCHEMA IF NOT EXISTS ${PGVECTOR_SCHEMA}`); + + const tbl = `CREATE TABLE IF NOT EXISTS ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE}( + id uuid DEFAULT gen_random_uuid() PRIMARY KEY, + external_id VARCHAR, + collection VARCHAR, + document TEXT, + metadata JSONB DEFAULT '{}', + embeddings VECTOR(1536) + )`; + await db.query(tbl); + + const idxs = `CREATE INDEX IF NOT EXISTS idx_${PGVECTOR_TABLE}_external_id ON ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} (external_id); + CREATE INDEX IF NOT EXISTS idx_${PGVECTOR_TABLE}_collection ON ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} (collection);`; + await db.query(idxs); + + // TODO add IVFFlat or HNSW indexing? + return db; + } + + // isEmbeddingQuery?: boolean | undefined; + + /** + * Connects to the database specified in environment vars. + * This method also checks and creates the vector extension, + * the destination table and indexes if not found. + * @returns A connection to the database, or the error encountered while connecting/setting up. + */ + client() { + return this.getDb(); + } + + /** + * Delete all vector records for the specified collection. + * NOTE: Uses the collection property controlled by setCollection/getCollection. + * @returns The result of the delete query. + */ + async clearCollection() { + const sql: string = `DELETE FROM ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} + WHERE collection = $1`; + + const db = await this.getDb() as pg.Client; + const ret = await db.query(sql, [this.collection]); + + return ret; + } + + /** + * Adds vector record(s) to the table. + * NOTE: Uses the collection property controlled by setCollection/getCollection. + * @param embeddingResults The Nodes to be inserted, optionally including metadata tuples. + * @returns A list of zero or more id values for the created records. + */ + async add(embeddingResults: BaseNode<Metadata>[]): Promise<string[]> { + + const sql: string = `INSERT INTO ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} + (id, external_id, collection, document, metadata, embeddings) + VALUES ($1, $2, $3, $4, $5, $6)`; + + const db = await this.getDb() as pg.Client; + + let ret: string[] = []; + for (let index = 0; index < embeddingResults.length; index++) { + const row = embeddingResults[index]; + + let id: any = row.id_.length? row.id_: null; + let meta = row.metadata || {}; + meta.create_date = new Date(); + + const params = [ + id, + '', + this.collection, + row.getContent(MetadataMode.EMBED), + meta, + '[' + row.getEmbedding().join(',') + ']' + ]; + + try { + const result = await db.query(sql, params); + + if (result.rows.length) { + id = result.rows[0].id as string; + ret.push(id); + } + } catch (err) { + const msg = `${ err }`; + console.log(msg, err); + } + } + + return Promise.resolve(ret); + } + + /** + * Deletes a single record from the database by id. + * NOTE: Uses the collection property controlled by setCollection/getCollection. + * @param refDocId Unique identifier for the record to delete. + * @param deleteKwargs Required by VectorStore interface. Currently ignored. + * @returns Promise that resolves if the delete query did not throw an error. + */ + async delete(refDocId: string, deleteKwargs?: any): Promise<void> { + const collectionCriteria = this.collection.length ? "AND collection = $2": ""; + const sql: string = `DELETE FROM ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} + WHERE id = $1 ${ collectionCriteria }`; + + const db = await this.getDb() as pg.Client; + const params = this.collection.length ? [refDocId, this.collection] : [refDocId]; + await db.query(sql, params); + return Promise.resolve(); + } + + /** + * Query the vector store for the closest matching data to the query embeddings + * @param query The VectorStoreQuery to be used + * @param options Required by VectorStore interface. Currently ignored. + * @returns Zero or more Document instances with data from the vector store. + */ + async query(query: VectorStoreQuery, options?: any): Promise<VectorStoreQueryResult> { + // TODO QUERY TYPES: + // Distance: SELECT embedding <-> $1 AS distance FROM items; + // Inner Product: SELECT (embedding <#> $1) * -1 AS inner_product FROM items; + // Cosine Sim: SELECT 1 - (embedding <=> $1) AS cosine_similarity FROM items; + + const embedding = '[' + query.queryEmbedding?.join(',') + ']'; + const max = query.similarityTopK ?? 2; + const where = this.collection.length ? "WHERE collection = $2": ""; + // TODO Add collection filter if set + const sql = `SELECT * FROM ${PGVECTOR_SCHEMA}.${PGVECTOR_TABLE} + ${ where } + ORDER BY embeddings <-> $1 LIMIT ${ max } + `; + + const db = await this.getDb() as pg.Client; + const params = this.collection.length ? + [embedding, this.collection] : [ embedding] + const results = await db.query(sql, params); + + const nodes = results.rows.map( + (row) => { + return new Document({ + id_: row.id, + text: row.document, + metadata: row.metadata, + embedding: row.embeddings + }) + } + ); + + const ret = { + nodes: nodes, + similarities: results.rows.map( + (row) => row.embeddings + ), + ids: results.rows.map( + (row) => row.id + ) + }; + + return Promise.resolve(ret); + } + + /** + * Required by VectorStore interface. Currently ignored. + * @param persistPath + * @param fs + * @returns Resolved Promise. + */ + persist(persistPath: string, fs?: GenericFileSystem | undefined): Promise<void> { + return Promise.resolve(); + } +} \ No newline at end of file diff --git a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts index 929ebe2c24b3cf9b7cc074902280d89785651b0d..f314510a32f884bcfd3bd31b2bbf7fcc97931101 100644 --- a/packages/core/src/storage/vectorStore/SimpleVectorStore.ts +++ b/packages/core/src/storage/vectorStore/SimpleVectorStore.ts @@ -1,13 +1,13 @@ import _ from "lodash"; import * as path from "path"; -import { BaseNode } from "../../Node"; import { getTopKEmbeddings, getTopKEmbeddingsLearner, getTopKMMREmbeddings, } from "../../embeddings"; -import { GenericFileSystem, exists } from "../FileSystem"; +import { BaseNode } from "../../Node"; import { DEFAULT_FS, DEFAULT_PERSIST_DIR } from "../constants"; +import { exists, GenericFileSystem } from "../FileSystem"; import { VectorStore, VectorStoreQuery, diff --git a/packages/core/src/storage/vectorStore/utils.ts b/packages/core/src/storage/vectorStore/utils.ts index 75e80dcd31d19397ab92655beba647963d281da5..3ad1685888c993094a6525c11a3feccecc68b96d 100644 --- a/packages/core/src/storage/vectorStore/utils.ts +++ b/packages/core/src/storage/vectorStore/utils.ts @@ -1,4 +1,4 @@ -import { BaseNode, Metadata, ObjectType, jsonToNode } from "../../Node"; +import { BaseNode, jsonToNode, Metadata, ObjectType } from "../../Node"; const DEFAULT_TEXT_KEY = "text"; diff --git a/packages/core/src/tests/CallbackManager.test.ts b/packages/core/src/tests/CallbackManager.test.ts index 9374c50b606c595b9f78093aa6cd88ff9c3842f6..8d1e1648a9babed0a061b6b4e8d97efb5ae98ec6 100644 --- a/packages/core/src/tests/CallbackManager.test.ts +++ b/packages/core/src/tests/CallbackManager.test.ts @@ -1,9 +1,3 @@ -import { Document } from "../Node"; -import { - ResponseSynthesizer, - SimpleResponseBuilder, -} from "../ResponseSynthesizer"; -import { ServiceContext, serviceContextFromDefaults } from "../ServiceContext"; import { CallbackManager, RetrievalCallbackResponse, @@ -13,6 +7,12 @@ import { OpenAIEmbedding } from "../embeddings"; import { SummaryIndex } from "../indices/summary"; import { VectorStoreIndex } from "../indices/vectorStore/VectorStoreIndex"; import { OpenAI } from "../llm/LLM"; +import { Document } from "../Node"; +import { + ResponseSynthesizer, + SimpleResponseBuilder, +} from "../ResponseSynthesizer"; +import { ServiceContext, serviceContextFromDefaults } from "../ServiceContext"; import { mockEmbeddingModel, mockLlmGeneration } from "./utility/mockOpenAI"; // Mock the OpenAI getOpenAISession function during testing diff --git a/packages/core/src/tests/Embedding.test.ts b/packages/core/src/tests/Embedding.test.ts index adc70810ffa59be54c1f36de3a52399be2a7f393..132c7bfa98fb11ce1e1b220ce263a0ab6168dfbf 100644 --- a/packages/core/src/tests/Embedding.test.ts +++ b/packages/core/src/tests/Embedding.test.ts @@ -1,4 +1,4 @@ -import { SimilarityType, similarity } from "../embeddings"; +import { similarity, SimilarityType } from "../embeddings"; describe("similarity", () => { test("throws error on mismatched lengths", () => { diff --git a/packages/core/src/tests/utility/mockOpenAI.ts b/packages/core/src/tests/utility/mockOpenAI.ts index 5f8a0ad4c49d5eb4bdf70ab6f0e959ad2bd8563e..90976ea7b24540f084810e9533a8e6374061736f 100644 --- a/packages/core/src/tests/utility/mockOpenAI.ts +++ b/packages/core/src/tests/utility/mockOpenAI.ts @@ -1,6 +1,6 @@ -import { globalsHelper } from "../../GlobalsHelper"; import { CallbackManager, Event } from "../../callbacks/CallbackManager"; import { OpenAIEmbedding } from "../../embeddings"; +import { globalsHelper } from "../../GlobalsHelper"; import { ChatMessage, OpenAI } from "../../llm/LLM"; export function mockLlmGeneration({ diff --git a/packages/create-llama/templates/types/simple/fastapi/README-template.md b/packages/create-llama/templates/types/simple/fastapi/README-template.md index 0e7fb53886cb223956fafa4f5290b42ae8fd3f36..f0bfa5e089a960e2327b6ccdd4548948952b36f3 100644 --- a/packages/create-llama/templates/types/simple/fastapi/README-template.md +++ b/packages/create-llama/templates/types/simple/fastapi/README-template.md @@ -12,6 +12,7 @@ poetry shell By default, we use the OpenAI LLM (though you can customize, see app/api/routers/chat.py). As a result you need to specify an `OPENAI_API_KEY` in an .env file in this directory. Example `backend/.env` file: + ``` OPENAI_API_KEY=<openai_api_key> ``` diff --git a/packages/create-llama/templates/types/streaming/fastapi/README-template.md b/packages/create-llama/templates/types/streaming/fastapi/README-template.md index 0e7fb53886cb223956fafa4f5290b42ae8fd3f36..f0bfa5e089a960e2327b6ccdd4548948952b36f3 100644 --- a/packages/create-llama/templates/types/streaming/fastapi/README-template.md +++ b/packages/create-llama/templates/types/streaming/fastapi/README-template.md @@ -12,6 +12,7 @@ poetry shell By default, we use the OpenAI LLM (though you can customize, see app/api/routers/chat.py). As a result you need to specify an `OPENAI_API_KEY` in an .env file in this directory. Example `backend/.env` file: + ``` OPENAI_API_KEY=<openai_api_key> ``` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b10fe64f766e6c52101d018f94f774e481ccfea9..c45482b6d8f626a3798ed38165f85c3d4e73e2e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,7 +17,7 @@ importers: version: 2.26.2 '@turbo/gen': specifier: ^1.10.16 - version: 1.10.16(@types/node@20.9.4)(typescript@5.3.2) + version: 1.10.16(@types/node@18.18.12)(typescript@4.9.5) '@types/jest': specifier: ^29.5.10 version: 29.5.10 @@ -32,7 +32,7 @@ importers: version: 8.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.9.4) + version: 29.7.0(@types/node@18.18.12) lint-staged: specifier: ^15.1.0 version: 15.1.0 @@ -41,10 +41,10 @@ importers: version: 3.1.0 prettier-plugin-organize-imports: specifier: ^3.2.4 - version: 3.2.4(prettier@3.1.0)(typescript@5.3.2) + version: 3.2.4(prettier@3.1.0)(typescript@4.9.5) ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@5.3.2) + version: 29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.9.5) turbo: specifier: ^1.10.16 version: 1.10.16 @@ -56,7 +56,7 @@ importers: version: 2.4.3(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) '@docusaurus/preset-classic': specifier: 2.4.3 - version: 2.4.3(@algolia/client-search@4.20.0)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0)(typescript@4.9.5) + version: 2.4.3(@algolia/client-search@4.20.0)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0)(typescript@4.9.5) '@docusaurus/remark-plugin-npm2yarn': specifier: ^2.4.3 version: 2.4.3 @@ -121,7 +121,7 @@ importers: version: 18.18.8 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.18.8)(typescript@5.3.2) + version: 10.9.1(@types/node@18.18.8)(typescript@4.9.5) apps/simple: dependencies: @@ -143,7 +143,7 @@ importers: version: 18.18.7 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.18.7)(typescript@5.3.2) + version: 10.9.1(@types/node@18.18.7)(typescript@4.9.5) packages/core: dependencies: @@ -186,6 +186,12 @@ importers: pdf-parse: specifier: ^1.1.1 version: 1.1.1 + pg: + specifier: ^8.11.3 + version: 8.11.3 + pgvector: + specifier: ^0.1.5 + version: 0.1.5 portkey-ai: specifier: ^0.1.16 version: 0.1.16 @@ -220,6 +226,9 @@ importers: '@types/pdf-parse': specifier: ^1.1.4 version: 1.1.4 + '@types/pg': + specifier: ^8.10.7 + version: 8.10.9 '@types/uuid': specifier: ^9.0.7 version: 9.0.7 @@ -306,7 +315,7 @@ importers: dependencies: eslint-config-next: specifier: ^13.4.1 - version: 13.4.1(eslint@8.54.0)(typescript@5.3.2) + version: 13.4.1(eslint@8.54.0)(typescript@4.9.5) eslint-config-prettier: specifier: ^8.3.0 version: 8.8.0(eslint@8.54.0) @@ -329,10 +338,10 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.10.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.10.0) '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' @@ -340,13 +349,13 @@ packages: - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.10.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.11.0 + search-insights: 2.10.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch @@ -497,14 +506,6 @@ packages: '@babel/highlight': 7.22.13 chalk: 2.4.2 - /@babel/code-frame@7.23.4: - resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - dev: true - /@babel/compat-data@7.22.20: resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} @@ -561,15 +562,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helpers': 7.23.4 - '@babel/parser': 7.23.4 + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.3 '@babel/template': 7.22.15 '@babel/traverse': 7.23.2 - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -588,11 +589,11 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - /@babel/generator@7.23.4: - resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} + /@babel/generator@7.23.3: + resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 @@ -801,11 +802,6 @@ packages: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -838,13 +834,13 @@ packages: - supports-color dev: false - /@babel/helpers@7.23.4: - resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/traverse': 7.23.2 - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 transitivePeerDependencies: - supports-color dev: true @@ -857,15 +853,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} @@ -873,12 +860,12 @@ packages: dependencies: '@babel/types': 7.23.0 - /@babel/parser@7.23.4: - resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} + /@babel/parser@7.23.3: + resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.0): @@ -2029,11 +2016,11 @@ packages: regenerator-runtime: 0.14.0 dev: false - /@babel/runtime-corejs3@7.23.4: - resolution: {integrity: sha512-zQyB4MJGM+rvd4pM58n26kf3xbiitw9MHzL8oLiBMKb8MCtVDfV5nDzzJWWzLMtbvKI9wN6XwJYl479qF4JluQ==} + /@babel/runtime-corejs3@7.23.2: + resolution: {integrity: sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.33.3 + core-js-pure: 3.33.2 regenerator-runtime: 0.14.0 dev: true @@ -2050,11 +2037,12 @@ packages: dependencies: regenerator-runtime: 0.14.0 - /@babel/runtime@7.23.4: - resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 + dev: true /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -2097,11 +2085,11 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + /@babel/types@7.23.3: + resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 + '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -2113,7 +2101,7 @@ packages: /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/config': 2.3.1 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -2131,7 +2119,7 @@ packages: /@changesets/assemble-release-plan@5.2.4: resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.6 '@changesets/types': 5.2.1 @@ -2149,7 +2137,7 @@ packages: resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/apply-release-plan': 6.1.4 '@changesets/assemble-release-plan': 5.2.4 '@changesets/changelog-git': 0.1.14 @@ -2165,7 +2153,7 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.4 - '@types/semver': 7.5.6 + '@types/semver': 7.5.5 ansi-colors: 4.1.3 chalk: 2.4.2 enquirer: 2.4.1 @@ -2215,7 +2203,7 @@ packages: /@changesets/get-release-plan@3.0.17: resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/assemble-release-plan': 5.2.4 '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 @@ -2231,7 +2219,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2256,7 +2244,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2266,7 +2254,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -2287,7 +2275,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -2317,7 +2305,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -2334,13 +2322,13 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.10.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 algoliasearch: 4.20.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - search-insights: 2.11.0 + search-insights: 2.10.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -2805,7 +2793,7 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@2.4.3(@algolia/client-search@4.20.0)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/preset-classic@2.4.3(@algolia/client-search@4.20.0)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0)(typescript@4.9.5): resolution: {integrity: sha512-tRyMliepY11Ym6hB1rAFSNGwQDpmszvWYJvlK1E+md4SW8i6ylNHtpZjaYFff9Mdk3i/Pg8ItQq9P0daOJAvQw==} engines: {node: '>=16.14'} peerDependencies: @@ -2823,7 +2811,7 @@ packages: '@docusaurus/plugin-sitemap': 2.4.3(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) '@docusaurus/theme-classic': 2.4.3(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) '@docusaurus/theme-common': 2.4.3(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 2.4.3(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 2.4.3(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0)(typescript@4.9.5) '@docusaurus/types': 2.4.3(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -2963,14 +2951,14 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@2.4.3(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@2.4.3(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0)(typescript@4.9.5): resolution: {integrity: sha512-jziq4f6YVUB5hZOB85ELATwnxBz/RmSLD3ksGQOLDPKVzat4pmI8tddNWtriPpxR04BNT+ZfpPUMFkNFetSW1Q==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.11.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.10.0) '@docusaurus/core': 2.4.3(@docusaurus/types@2.4.3)(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) '@docusaurus/logger': 2.4.3 '@docusaurus/plugin-content-docs': 2.4.3(eslint@8.54.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) @@ -3336,7 +3324,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.23.0 - ignore: 5.3.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -3394,7 +3382,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -3415,14 +3403,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.9.4) + jest-config: 29.7.0(@types/node@18.18.12) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3450,7 +3438,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 jest-mock: 29.7.0 dev: true @@ -3477,7 +3465,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.9.4 + '@types/node': 18.18.12 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3510,7 +3498,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3597,8 +3585,8 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.9.4 - '@types/yargs': 17.0.32 + '@types/node': 18.18.12 + '@types/yargs': 17.0.31 chalk: 4.1.2 /@jridgewell/gen-mapping@0.3.3: @@ -3646,7 +3634,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3655,7 +3643,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.2 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3832,7 +3820,7 @@ packages: dependencies: '@edge-runtime/types': 2.2.4 '@sinclair/typebox': 0.29.6 - '@types/node': 18.18.7 + '@types/node': 18.18.8 ajv: 8.12.0 cross-fetch: 3.1.8(encoding@0.1.13) encoding: 0.1.13 @@ -4153,7 +4141,7 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@turbo/gen@1.10.16(@types/node@20.9.4)(typescript@5.3.2): + /@turbo/gen@1.10.16(@types/node@18.18.12)(typescript@4.9.5): resolution: {integrity: sha512-PzyluADjVuy5OcIi+/aRcD70OElQpRVRDdfZ9fH8G5Fv75lQcNrjd1bBGKmhjSw+g+eTEkXMGnY7s6gsCYjYTQ==} hasBin: true dependencies: @@ -4165,7 +4153,7 @@ packages: minimatch: 9.0.3 node-plop: 0.26.3 proxy-agent: 6.3.1 - ts-node: 10.9.1(@types/node@20.9.4)(typescript@5.3.2) + ts-node: 10.9.1(@types/node@18.18.12)(typescript@4.9.5) update-check: 1.5.4 validate-npm-package-name: 5.0.0 transitivePeerDependencies: @@ -4200,11 +4188,11 @@ packages: '@types/retry': 0.12.5 dev: true - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + /@types/babel__core@7.20.4: + resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.3 + '@babel/types': 7.23.3 '@types/babel__generator': 7.6.7 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.4 @@ -4213,33 +4201,33 @@ packages: /@types/babel__generator@7.6.7: resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/parser': 7.23.3 + '@babel/types': 7.23.3 dev: true /@types/babel__traverse@7.20.4: resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} dependencies: - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 dev: true /@types/body-parser@1.19.3: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/cacheable-request@6.0.3: @@ -4247,7 +4235,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.9.0 + '@types/node': 18.18.12 '@types/responselike': 1.0.3 dev: true @@ -4259,19 +4247,19 @@ packages: resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} dependencies: '@types/express-serve-static-core': 4.17.37 - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/cross-spawn@6.0.0: resolution: {integrity: sha512-evp2ZGsFw9YKprDbg8ySgC9NA15g3YgiI8ANkGmKKvvi0P2aDGYLPxQIC5qfeKNUOe3TjABVGuah6omPRpIYhg==} dependencies: - '@types/node': 20.9.0 + '@types/node': 18.18.12 dev: true /@types/crypto-js@4.2.1: @@ -4314,7 +4302,7 @@ packages: /@types/express-serve-static-core@4.17.37: resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 @@ -4333,13 +4321,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: true /@types/hast@2.3.6: @@ -4366,7 +4354,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/inquirer@6.5.0: @@ -4416,10 +4404,10 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.9.0 + '@types/node': 18.18.12 - /@types/lodash-es@4.17.12: - resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + /@types/lodash-es@4.17.10: + resolution: {integrity: sha512-YJP+w/2khSBwbUSFdGsSqmDvmnN3cCKoPOL7Zjle6s30ZtemkkqhjVfFqGwPN7ASil5VyjE2GtyU/yqYY6mC0A==} dependencies: '@types/lodash': 4.14.202 dev: false @@ -4456,7 +4444,7 @@ packages: /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 18.18.7 + '@types/node': 18.18.12 form-data: 4.0.0 dev: false @@ -4484,6 +4472,7 @@ packages: resolution: {integrity: sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ==} dependencies: undici-types: 5.26.5 + dev: true /@types/node@18.18.8: resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==} @@ -4494,11 +4483,7 @@ packages: resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} dependencies: undici-types: 5.26.5 - - /@types/node@20.9.4: - resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==} - dependencies: - undici-types: 5.26.5 + dev: true /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4522,6 +4507,14 @@ packages: resolution: {integrity: sha512-+gbBHbNCVGGYw1S9lAIIvrHW47UYOhMIFUsJcMkMrzy1Jf0vulBN3XQIjPgnoOXveMuHnF3b57fXROnY/Or7eg==} dev: true + /@types/pg@8.10.9: + resolution: {integrity: sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==} + dependencies: + '@types/node': 18.18.12 + pg-protocol: 1.6.0 + pg-types: 4.0.1 + dev: true + /@types/prompts@2.0.1: resolution: {integrity: sha512-AhtMcmETelF8wFDV1ucbChKhLgsc+ytXZXkNz/nnTAMSDeqsjALknEFxi7ZtLgS/G8bV2rp90LhDW5SGACimIQ==} dev: true @@ -4567,7 +4560,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 20.9.0 + '@types/node': 18.18.12 /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -4580,21 +4573,21 @@ packages: /@types/sax@1.2.5: resolution: {integrity: sha512-9jWta97bBVC027/MShr3gLab8gPhKy4l6qpb+UJLF5pDm3501NvA7uvqVCW+REFtx00oTi6Cq9JzLwgq6evVgw==} dependencies: - '@types/node': 17.0.45 + '@types/node': 18.18.12 dev: false /@types/scheduler@0.16.4: resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} dev: true /@types/send@0.17.2: resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} dependencies: '@types/mime': 1.3.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/serve-index@1.9.2: @@ -4608,13 +4601,13 @@ packages: dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/sockjs@0.3.34: resolution: {integrity: sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/stack-utils@2.0.3: @@ -4624,14 +4617,14 @@ packages: /@types/tar@6.1.5: resolution: {integrity: sha512-qm2I/RlZij5RofuY7vohTpYNaYcrSQlN2MyjucQc7ZweDwaEWkdN/EeNh6e9zjK6uEm6PwjdMXkcj05BxZdX1Q==} dependencies: - '@types/node': 20.9.0 + '@types/node': 18.18.12 minipass: 4.2.8 dev: true /@types/through@0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: true /@types/tinycolor2@1.4.6: @@ -4654,38 +4647,34 @@ packages: resolution: {integrity: sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==} dev: false - /@types/webidl-conversions@7.0.3: - resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - dev: false - /@types/whatwg-url@11.0.3: resolution: {integrity: sha512-z1ELvMijRL1QmU7QuzDkeYXSF2+dXI0ITKoQsIoVKcNBOiK5RMmWy+pYYxJTHFt8vkpZe7UsvRErQwcxZkjoUw==} dependencies: - '@types/webidl-conversions': 7.0.3 + '@types/webidl-conversions': 7.0.2 dev: false /@types/whatwg-url@8.2.2: resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} dependencies: - '@types/node': 18.18.8 + '@types/node': 18.18.12 '@types/webidl-conversions': 7.0.2 dev: false /@types/ws@8.5.6: resolution: {integrity: sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 dev: false /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + /@types/yargs@17.0.31: + resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==} dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/parser@5.59.2(eslint@8.54.0)(typescript@5.3.2): + /@typescript-eslint/parser@5.59.2(eslint@8.54.0)(typescript@4.9.5): resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4697,10 +4686,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 - '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.59.2(typescript@4.9.5) debug: 4.3.4 eslint: 8.54.0 - typescript: 5.3.2 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false @@ -4718,7 +4707,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree@5.59.2(typescript@5.3.2): + /@typescript-eslint/typescript-estree@5.59.2(typescript@4.9.5): resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4733,8 +4722,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false @@ -4744,7 +4733,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.2 - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.3 dev: false /@ungap/structured-clone@1.2.0: @@ -5307,7 +5296,7 @@ packages: dependencies: '@babel/core': 7.23.3 '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 + '@types/babel__core': 7.20.4 babel-plugin-istanbul: 6.1.1 babel-preset-jest: 29.6.3(@babel/core@7.23.3) chalk: 4.1.2 @@ -5372,8 +5361,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.4 - '@types/babel__core': 7.20.5 + '@babel/types': 7.23.3 + '@types/babel__core': 7.20.4 '@types/babel__traverse': 7.20.4 dev: true @@ -5709,6 +5698,11 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: false + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} dev: true @@ -6386,8 +6380,8 @@ packages: requiresBuild: true dev: false - /core-js-pure@3.33.3: - resolution: {integrity: sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==} + /core-js-pure@3.33.2: + resolution: {integrity: sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==} requiresBuild: true dev: true @@ -6466,7 +6460,7 @@ packages: sha.js: 2.4.11 dev: true - /create-jest@29.7.0(@types/node@20.9.4): + /create-jest@29.7.0(@types/node@18.18.12): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6475,7 +6469,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.9.4) + jest-config: 29.7.0(@types/node@18.18.12) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -6914,6 +6908,14 @@ packages: engines: {node: '>=10'} dev: true + /define-data-property@1.1.0: + resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -6943,8 +6945,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.0 + has-property-descriptors: 1.0.0 object-keys: 1.1.1 /degenerator@5.0.1: @@ -7547,7 +7549,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next@13.4.1(eslint@8.54.0)(typescript@5.3.2): + /eslint-config-next@13.4.1(eslint@8.54.0)(typescript@4.9.5): resolution: {integrity: sha512-ajuxjCkW1hvirr0EQZb3/B/bFH52Z7CT89uCtTcICFL9l30i5c8hN4p0LXvTjdOXNPV5fEDcxBgGHgXdzTj1/A==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7558,7 +7560,7 @@ packages: dependencies: '@next/eslint-plugin-next': 13.4.1 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@4.9.5) eslint: 8.54.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.54.0) @@ -7566,7 +7568,7 @@ packages: eslint-plugin-jsx-a11y: 6.7.1(eslint@8.54.0) eslint-plugin-react: 7.32.2(eslint@8.54.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.54.0) - typescript: 5.3.2 + typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -7645,7 +7647,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.54.0 eslint-import-resolver-node: 0.3.7 @@ -7664,7 +7666,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.2(eslint@8.54.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7790,11 +7792,6 @@ packages: esrecurse: 4.3.0 estraverse: 5.3.0 - /eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7829,7 +7826,7 @@ packages: glob-parent: 6.0.2 globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.2.4 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -7896,7 +7893,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 require-like: 0.1.2 dev: false @@ -8633,7 +8630,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.3.2 glob: 7.2.3 - ignore: 5.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -8645,7 +8642,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -8666,7 +8663,7 @@ packages: dependencies: dir-glob: 3.0.1 fast-glob: 3.3.1 - ignore: 5.3.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: false @@ -9166,11 +9163,6 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: false - - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} /image-size@1.0.2: resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} @@ -9740,7 +9732,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.23.3 - '@babel/parser': 7.23.4 + '@babel/parser': 7.23.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -9753,7 +9745,7 @@ packages: engines: {node: '>=10'} dependencies: '@babel/core': 7.23.3 - '@babel/parser': 7.23.4 + '@babel/parser': 7.23.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.5.4 @@ -9806,7 +9798,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -9827,7 +9819,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.9.4): + /jest-cli@29.7.0(@types/node@18.18.12): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9841,10 +9833,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.9.4) + create-jest: 29.7.0(@types/node@18.18.12) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.9.4) + jest-config: 29.7.0(@types/node@18.18.12) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -9855,7 +9847,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.9.4): + /jest-config@29.7.0(@types/node@18.18.12): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9870,7 +9862,7 @@ packages: '@babel/core': 7.23.3 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 babel-jest: 29.7.0(@babel/core@7.23.3) chalk: 4.1.2 ci-info: 3.9.0 @@ -9930,7 +9922,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -9946,7 +9938,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.9.4 + '@types/node': 18.18.12 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9981,7 +9973,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.23.4 + '@babel/code-frame': 7.22.13 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -9997,7 +9989,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 jest-util: 29.7.0 dev: true @@ -10052,7 +10044,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10083,7 +10075,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -10107,10 +10099,10 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.3 - '@babel/generator': 7.23.4 + '@babel/generator': 7.23.3 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.4 + '@babel/types': 7.23.3 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -10135,7 +10127,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10159,7 +10151,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.9.4 + '@types/node': 18.18.12 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10171,7 +10163,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10179,12 +10171,12 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.9.4 + '@types/node': 18.18.12 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.7.0(@types/node@20.9.4): + /jest@29.7.0(@types/node@18.18.12): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10197,7 +10189,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.9.4) + jest-cli: 29.7.0(@types/node@18.18.12) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10400,11 +10392,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - /lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - dev: true - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10956,8 +10943,8 @@ packages: yallist: 4.0.0 dev: true - /mixme@0.5.10: - resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} + /mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} engines: {node: '>= 8.0.0'} dev: true @@ -11224,7 +11211,7 @@ packages: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} engines: {node: '>=8.9.4'} dependencies: - '@babel/runtime-corejs3': 7.23.4 + '@babel/runtime-corejs3': 7.23.2 '@types/inquirer': 6.5.0 change-case: 3.1.0 del: 5.1.0 @@ -11403,7 +11390,6 @@ packages: /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: false /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -11694,6 +11680,10 @@ packages: semver: 6.3.1 dev: false + /packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: false + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -11866,6 +11856,91 @@ packages: - supports-color dev: false + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: false + optional: true + + /pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + dev: false + + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + /pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + dev: true + + /pg-pool@3.6.1(pg@8.11.3): + resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.3 + dev: false + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + + /pg-types@4.0.1: + resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} + engines: {node: '>=10'} + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.0.1 + postgres-interval: 3.0.0 + postgres-range: 1.1.3 + dev: true + + /pg@8.11.3: + resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.6.2 + pg-pool: 3.6.1(pg@8.11.3) + pg-protocol: 1.6.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: false + + /pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.2.0 + dev: false + + /pgvector@0.1.5: + resolution: {integrity: sha512-T1SeomH5PkSpMHmnW8CVh6hwjkrjx/xkEMkW0MBFyxMkIEcu6pw5pQW8CNwsVXeJIE3zPdLCqYHqn1GwwT4lXw==} + engines: {node: '>= 12'} + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -11998,8 +12073,8 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + /postcss-load-config@4.0.1: + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' @@ -12010,7 +12085,7 @@ packages: ts-node: optional: true dependencies: - lilconfig: 3.0.0 + lilconfig: 2.1.0 yaml: 2.3.4 dev: true @@ -12353,6 +12428,54 @@ packages: source-map-js: 1.0.2 dev: false + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + dev: true + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + dependencies: + obuf: 1.1.2 + dev: true + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@2.0.1: + resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} + engines: {node: '>=12'} + dev: true + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + + /postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + dev: true + + /postgres-range@1.1.3: + resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} + dev: true + /prebuild-install@7.1.1: resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} engines: {node: '>=10'} @@ -12391,7 +12514,7 @@ packages: engines: {node: '>=4'} dev: false - /prettier-plugin-organize-imports@3.2.4(prettier@3.1.0)(typescript@5.3.2): + /prettier-plugin-organize-imports@3.2.4(prettier@3.1.0)(typescript@4.9.5): resolution: {integrity: sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==} peerDependencies: '@volar/vue-language-plugin-pug': ^1.0.4 @@ -12405,7 +12528,7 @@ packages: optional: true dependencies: prettier: 3.1.0 - typescript: 5.3.2 + typescript: 4.9.5 dev: true /prettier@2.8.8: @@ -12513,7 +12636,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.18.8 + '@types/node': 18.18.12 long: 4.0.0 dev: false @@ -12896,7 +13019,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.4 + '@babel/runtime': 7.23.1 react: 17.0.2 use-composed-ref: 1.3.0(react@17.0.2) use-latest: 1.2.1(react@17.0.2) @@ -13427,8 +13550,8 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: false - /search-insights@2.11.0: - resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} + /search-insights@2.10.0: + resolution: {integrity: sha512-pQGrOE56QuTRmq4NzliRZe9rv914hBMBjOviuDliDHoIhmBGoyZRlFsPd4RprGGNC4PKdD2Jz54YN4Cmkb44mA==} dev: false /section-matter@1.0.0: @@ -13887,6 +14010,11 @@ packages: - supports-color dev: false + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -13946,7 +14074,7 @@ packages: /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: - mixme: 0.5.10 + mixme: 0.5.9 dev: true /streamsearch@1.1.0: @@ -13991,7 +14119,7 @@ packages: resolution: {integrity: sha512-9ketPUGy6MWmHy5tZuy1LSXcEB690MCQ0eTvUlunCjCGGTIUjboHyFa/PADndYHlfvHDcdO9iwzqjheXI/K/jw==} engines: {node: '>=14.18.0'} dependencies: - '@types/lodash-es': 4.17.12 + '@types/lodash-es': 4.17.10 codsen-utils: 1.6.2 html-entities: 2.4.0 lodash-es: 4.17.21 @@ -14553,7 +14681,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-jest@29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@5.3.2): + /ts-jest@29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.9.5): resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14577,17 +14705,17 @@ packages: '@babel/core': 7.23.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.9.4) + jest: 29.7.0(@types/node@18.18.12) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.5.4 - typescript: 5.3.2 + typescript: 4.9.5 yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.18.7)(typescript@5.3.2): + /ts-node@10.9.1(@types/node@18.18.12)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14606,19 +14734,19 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.7 + '@types/node': 18.18.12 acorn: 8.11.2 acorn-walk: 8.3.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@18.18.8)(typescript@5.3.2): + /ts-node@10.9.1(@types/node@18.18.7)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14637,19 +14765,19 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.8 + '@types/node': 18.18.7 acorn: 8.11.2 acorn-walk: 8.3.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@20.9.4)(typescript@5.3.2): + /ts-node@10.9.1(@types/node@18.18.8)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14668,14 +14796,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.9.4 + '@types/node': 18.18.8 acorn: 8.11.2 acorn-walk: 8.3.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -14723,7 +14851,7 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2 + postcss-load-config: 4.0.1 resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 @@ -14735,14 +14863,14 @@ packages: - ts-node dev: true - /tsutils@3.21.0(typescript@5.3.2): + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.2 + typescript: 4.9.5 dev: false /tty-browserify@0.0.1: @@ -14962,6 +15090,7 @@ packages: resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true + dev: true /ua-parser-js@1.0.36: resolution: {integrity: sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==}