mirror of
https://github.com/run-llama/LlamaIndexTS.git
synced 2026-07-01 22:14:03 -04:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0b2d43b532 | |||
| 02feb54070 | |||
| 9bf778eb36 | |||
| 746408b992 | |||
| ea64162b89 | |||
| 0094a2e420 | |||
| ef1e8b4121 | |||
| a20704bbf8 | |||
| 247a3d0b5f |
@@ -0,0 +1,81 @@
|
||||
import knex from "knex";
|
||||
import {
|
||||
NLSQLQueryEngine,
|
||||
OpenAI,
|
||||
SQLDatabase,
|
||||
serviceContextFromDefaults,
|
||||
} from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
const llm = new OpenAI({
|
||||
model: "gpt-4",
|
||||
});
|
||||
|
||||
const engine = knex({
|
||||
client: "sqlite3", // or 'better-sqlite3'
|
||||
connection: {
|
||||
filename: ":memory:",
|
||||
},
|
||||
});
|
||||
|
||||
const db = new SQLDatabase({
|
||||
engine,
|
||||
schema: undefined,
|
||||
metadata: {},
|
||||
ignoreTables: undefined,
|
||||
includeTables: ["test_table_1"],
|
||||
sampleRowsInTableInfo: 3,
|
||||
indexesInTableInfo: true,
|
||||
customTableInfo: undefined,
|
||||
maxStringLength: 100,
|
||||
});
|
||||
|
||||
const tableName = "test_table_1";
|
||||
|
||||
await engine.schema.createTable(tableName, async (table) => {
|
||||
table.increments("id");
|
||||
table.string("comment");
|
||||
table.string("author");
|
||||
|
||||
await db.insertIntoTable(tableName, {
|
||||
comment: "this is a test1",
|
||||
author: "emanuel",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
comment: "this is a test2",
|
||||
author: "alex",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
comment: "this is a test3",
|
||||
author: "yi",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
comment: "this is a test4",
|
||||
author: "alex",
|
||||
});
|
||||
|
||||
const ctx = serviceContextFromDefaults({
|
||||
llm,
|
||||
});
|
||||
|
||||
const engine = new NLSQLQueryEngine({
|
||||
sqlDatabase: db,
|
||||
tables: ["test_table_1"],
|
||||
verbose: true,
|
||||
serviceContext: ctx,
|
||||
synthesizeResponse: true,
|
||||
});
|
||||
|
||||
const response = await engine.query({
|
||||
query: "What's the comment from author yi and emanuel?",
|
||||
});
|
||||
|
||||
console.log({ response });
|
||||
|
||||
process.exit(0);
|
||||
});
|
||||
}
|
||||
|
||||
main().then(() => [
|
||||
// process.exit(0)
|
||||
]);
|
||||
@@ -9,8 +9,10 @@
|
||||
"chromadb": "^1.8.1",
|
||||
"commander": "^11.1.0",
|
||||
"dotenv": "^16.4.1",
|
||||
"knex": "^3.1.0",
|
||||
"llamaindex": "latest",
|
||||
"mongodb": "^6.2.0"
|
||||
"mongodb": "^6.2.0",
|
||||
"sqlite3": "^5.1.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.19.10",
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
import knex from "knex";
|
||||
import { SQLDatabase } from "llamaindex";
|
||||
|
||||
async function main() {
|
||||
const engine = knex({
|
||||
client: "sqlite3", // or 'better-sqlite3'
|
||||
connection: {
|
||||
filename: ":memory:",
|
||||
},
|
||||
});
|
||||
|
||||
const db = new SQLDatabase({
|
||||
engine,
|
||||
schema: undefined,
|
||||
metadata: {},
|
||||
ignoreTables: undefined,
|
||||
includeTables: ["test_table"],
|
||||
sampleRowsInTableInfo: 3,
|
||||
indexesInTableInfo: true,
|
||||
customTableInfo: undefined,
|
||||
maxStringLength: 100,
|
||||
});
|
||||
|
||||
const tableName = "test_table";
|
||||
|
||||
await engine.schema.createTable(tableName, () => {});
|
||||
|
||||
await db.insertIntoTable(tableName, {
|
||||
name: "test1",
|
||||
comment: "this is a test1",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
name: "test2",
|
||||
comment: "this is a test2",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
name: "test3",
|
||||
comment: "this is a test3",
|
||||
});
|
||||
await db.insertIntoTable(tableName, {
|
||||
name: "test4",
|
||||
comment: "this is a test4",
|
||||
});
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -7,22 +7,23 @@
|
||||
"@anthropic-ai/sdk": "^0.13.0",
|
||||
"@aws-crypto/sha256-js": "^5.2.0",
|
||||
"@datastax/astra-db-ts": "^0.1.4",
|
||||
"@types/lodash": "^4.14.202",
|
||||
"@types/node": "^18.19.14",
|
||||
"@types/papaparse": "^5.3.14",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@llamaindex/cloud": "0.0.4",
|
||||
"@llamaindex/env": "workspace:*",
|
||||
"@mistralai/mistralai": "^0.0.10",
|
||||
"@notionhq/client": "^2.2.14",
|
||||
"@pinecone-database/pinecone": "^2.0.1",
|
||||
"@qdrant/js-client-rest": "^1.7.0",
|
||||
"@types/lodash": "^4.14.202",
|
||||
"@types/node": "^18.19.14",
|
||||
"@types/papaparse": "^5.3.14",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@xenova/transformers": "^2.15.0",
|
||||
"assemblyai": "^4.2.2",
|
||||
"chromadb": "~1.7.3",
|
||||
"cohere-ai": "^7.7.5",
|
||||
"file-type": "^18.7.0",
|
||||
"js-tiktoken": "^1.0.10",
|
||||
"knex": "^3.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mammoth": "^1.6.0",
|
||||
"md-utils-ts": "^2.0.0",
|
||||
@@ -94,7 +95,7 @@
|
||||
"build": "rm -rf ./dist && pnpm run build:esm && pnpm run build:cjs && pnpm run build:type",
|
||||
"build:esm": "swc src -d dist --strip-leading-paths --config-file .swcrc",
|
||||
"build:cjs": "swc src -d dist/cjs --strip-leading-paths --config-file .cjs.swcrc",
|
||||
"build:type": "pnpm run -w type-check",
|
||||
"build:type": "rm -f .tsbuildinfo && tsc -b --diagnostics",
|
||||
"copy": "cp -r ../../README.md ../../LICENSE .",
|
||||
"postbuild": "pnpm run copy && node -e \"require('fs').writeFileSync('./dist/cjs/package.json', JSON.stringify({ type: 'commonjs' }))\"",
|
||||
"circular-check": "madge -c ./src/index.ts",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from "./RetrieverQueryEngine.js";
|
||||
export * from "./RouterQueryEngine.js";
|
||||
export * from "./SubQuestionQueryEngine.js";
|
||||
export * from "./sql/index.js";
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
import {
|
||||
NLSQLRetriever,
|
||||
type SQLDatabase,
|
||||
type ServiceContext,
|
||||
} from "../../../index.js";
|
||||
import type { TextToSQLPrompt } from "../../../retriever/sql/prompts.js";
|
||||
import { BaseSQLTableQueryEngine } from "./types.js";
|
||||
|
||||
type NLSQLQueryEngineParams = {
|
||||
sqlDatabase: SQLDatabase;
|
||||
textToSQLPrompt?: TextToSQLPrompt;
|
||||
contextQueryKwargs?: any | null;
|
||||
synthesizeResponse?: boolean;
|
||||
responseSynthesisPrompt?: any | null;
|
||||
tables?: any[] | string[] | undefined;
|
||||
serviceContext?: ServiceContext | undefined;
|
||||
contextStrPrefix?: string | undefined;
|
||||
sqlOnly?: boolean;
|
||||
verbose?: boolean;
|
||||
};
|
||||
|
||||
export class NLSQLQueryEngine extends BaseSQLTableQueryEngine {
|
||||
_sqlRetriever: NLSQLRetriever;
|
||||
|
||||
constructor({
|
||||
sqlDatabase,
|
||||
textToSQLPrompt,
|
||||
contextQueryKwargs = null,
|
||||
synthesizeResponse = true,
|
||||
responseSynthesisPrompt = null,
|
||||
tables,
|
||||
serviceContext,
|
||||
contextStrPrefix,
|
||||
sqlOnly = false,
|
||||
verbose = false,
|
||||
}: NLSQLQueryEngineParams) {
|
||||
super({
|
||||
synthesizeResponse,
|
||||
responseSynthesisPrompt,
|
||||
serviceContext,
|
||||
verbose,
|
||||
});
|
||||
|
||||
this._sqlRetriever = new NLSQLRetriever({
|
||||
sqlDatabase,
|
||||
textToSQLPrompt,
|
||||
contextQueryKwargs,
|
||||
tables,
|
||||
contextStrPrefix,
|
||||
serviceContext,
|
||||
sqlOnly,
|
||||
verbose,
|
||||
});
|
||||
}
|
||||
|
||||
get sqlRetriever(): NLSQLRetriever {
|
||||
return this._sqlRetriever;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./NLSQLQueryEngine.js";
|
||||
@@ -0,0 +1,17 @@
|
||||
export const defaultResponseSynthesisPrompt = ({
|
||||
query,
|
||||
context,
|
||||
sqlQuery,
|
||||
}: {
|
||||
query?: string;
|
||||
context?: string;
|
||||
sqlQuery: string;
|
||||
}) => `
|
||||
Given an input question, synthesize a response from the query results.
|
||||
Query: ${query}
|
||||
SQL: ${sqlQuery}
|
||||
SQL Response: ${context}
|
||||
Response:
|
||||
`;
|
||||
|
||||
export type ResponseSynthesisPrompt = typeof defaultResponseSynthesisPrompt;
|
||||
@@ -0,0 +1,117 @@
|
||||
import { Response } from "../../../Response.js";
|
||||
import {
|
||||
serviceContextFromDefaults,
|
||||
type ServiceContext,
|
||||
} from "../../../ServiceContext.js";
|
||||
import {
|
||||
CompactAndRefine,
|
||||
MetadataMode,
|
||||
ResponseSynthesizer,
|
||||
} from "../../../index.js";
|
||||
import type { SQLRetriever } from "../../../retriever/sql/types.js";
|
||||
import type {
|
||||
BaseQueryEngine,
|
||||
QueryEngineParamsNonStreaming,
|
||||
QueryEngineParamsStreaming,
|
||||
} from "../../../types.js";
|
||||
import {
|
||||
defaultResponseSynthesisPrompt,
|
||||
type ResponseSynthesisPrompt,
|
||||
} from "./prompts.js";
|
||||
|
||||
export abstract class BaseSQLTableQueryEngine implements BaseQueryEngine {
|
||||
synthesizeResponse: boolean;
|
||||
responseSynthesisPrompt: ResponseSynthesisPrompt;
|
||||
serviceContext: ServiceContext;
|
||||
verbose: boolean;
|
||||
|
||||
constructor(init: {
|
||||
synthesizeResponse?: boolean;
|
||||
responseSynthesisPrompt?: ResponseSynthesisPrompt;
|
||||
serviceContext?: ServiceContext;
|
||||
verbose?: boolean;
|
||||
}) {
|
||||
this.synthesizeResponse = init.synthesizeResponse ?? true;
|
||||
this.responseSynthesisPrompt =
|
||||
init.responseSynthesisPrompt || defaultResponseSynthesisPrompt;
|
||||
this.serviceContext = init.serviceContext || serviceContextFromDefaults({});
|
||||
this.verbose = init.verbose || false;
|
||||
}
|
||||
|
||||
getPrompts(): {
|
||||
responseSynthesisPrompt: ResponseSynthesisPrompt;
|
||||
} {
|
||||
return { responseSynthesisPrompt: this.responseSynthesisPrompt };
|
||||
}
|
||||
|
||||
updatePrompts(prompts: {
|
||||
responseSynthesisPrompt: ResponseSynthesisPrompt;
|
||||
}): void {
|
||||
if ("responseSynthesisPrompt" in prompts) {
|
||||
this.responseSynthesisPrompt = prompts.responseSynthesisPrompt;
|
||||
}
|
||||
}
|
||||
|
||||
getPromptModules(): {
|
||||
sqlRetriever: SQLRetriever;
|
||||
} {
|
||||
return { sqlRetriever: this.sqlRetriever };
|
||||
}
|
||||
|
||||
abstract get sqlRetriever(): SQLRetriever;
|
||||
|
||||
query(params: QueryEngineParamsStreaming): Promise<AsyncIterable<Response>>;
|
||||
query(params: QueryEngineParamsNonStreaming): Promise<Response>;
|
||||
async query(
|
||||
params: QueryEngineParamsStreaming | QueryEngineParamsNonStreaming,
|
||||
): Promise<Response | AsyncIterable<Response>> {
|
||||
const { query, stream } = params;
|
||||
|
||||
if (stream) {
|
||||
throw new Error("Streaming is not supported");
|
||||
}
|
||||
|
||||
const [retrievedNodes, metadata] =
|
||||
await this.sqlRetriever.retrieveWithMetadata({
|
||||
queryStr: query,
|
||||
});
|
||||
|
||||
const sqlQueryStr = metadata.sqlQuery;
|
||||
|
||||
console.log(`> SQL query: ${sqlQueryStr}`); // TODO: Remove
|
||||
|
||||
console.log(`> Sythesize Response ${this.synthesizeResponse}`);
|
||||
|
||||
if (this.synthesizeResponse) {
|
||||
const responseBuilder = new CompactAndRefine(
|
||||
this.serviceContext,
|
||||
({ query, context }) =>
|
||||
this.responseSynthesisPrompt({
|
||||
query,
|
||||
context,
|
||||
sqlQuery: sqlQueryStr,
|
||||
}),
|
||||
);
|
||||
|
||||
const responseSynthesizer = new ResponseSynthesizer({
|
||||
serviceContext: this.serviceContext,
|
||||
responseBuilder,
|
||||
});
|
||||
|
||||
const response = await responseSynthesizer.synthesize({
|
||||
query,
|
||||
nodesWithScore: retrievedNodes,
|
||||
});
|
||||
|
||||
response.metadata.sqlQuery = sqlQueryStr;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
const responseStr = retrievedNodes
|
||||
.map((node) => node.node.getContent(MetadataMode.ALL))
|
||||
.join("\n");
|
||||
|
||||
return new Response(responseStr, []);
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,9 @@ export * from "./objects/index.js";
|
||||
export * from "./postprocessors/index.js";
|
||||
export * from "./prompts/index.js";
|
||||
export * from "./readers/index.js";
|
||||
export * from "./retriever/index.js";
|
||||
export * from "./selectors/index.js";
|
||||
export * from "./storage/index.js";
|
||||
export * from "./synthesizers/index.js";
|
||||
export * from "./tools/index.js";
|
||||
export * from "./utilities/index.js";
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./sql/index.js";
|
||||
@@ -0,0 +1,259 @@
|
||||
import { serviceContextFromDefaults } from "../../ServiceContext.js";
|
||||
import {
|
||||
TextNode,
|
||||
type BaseRetriever,
|
||||
type CallbackManager,
|
||||
type LLM,
|
||||
type NodeWithScore,
|
||||
type ObjectRetriever,
|
||||
type SQLDatabase,
|
||||
type ServiceContext,
|
||||
} from "../../index.js";
|
||||
import { QueryBundle } from "../../types.js";
|
||||
import { defaultTextToSQLPrompt, type TextToSQLPrompt } from "./prompts.js";
|
||||
import {
|
||||
DefaultSQLParser,
|
||||
SQLParserMode,
|
||||
SQLRetriever,
|
||||
type SQLTableSchema,
|
||||
} from "./types.js";
|
||||
|
||||
export class NLSQLRetriever extends SQLRetriever implements BaseRetriever {
|
||||
sqlDatabase: SQLDatabase;
|
||||
sqlRetriever: SQLRetriever;
|
||||
sqlParser: DefaultSQLParser;
|
||||
textToSQLPrompt: TextToSQLPrompt;
|
||||
contextQueryKwargs: Record<string, any> | undefined;
|
||||
tables: any[] | string[] | undefined;
|
||||
tableRetriever: ObjectRetriever | undefined;
|
||||
contextStrPrefix: string | undefined;
|
||||
sqlParserMode: SQLParserMode;
|
||||
llm: LLM;
|
||||
serviceContext: ServiceContext;
|
||||
returnRaw: boolean;
|
||||
handleSQLErrors: boolean;
|
||||
sqlOnly: boolean;
|
||||
callbackManager: CallbackManager | undefined;
|
||||
verbose: boolean;
|
||||
getTables: any;
|
||||
|
||||
constructor({
|
||||
sqlDatabase,
|
||||
textToSQLPrompt,
|
||||
contextQueryKwargs,
|
||||
tables,
|
||||
tableRetriever,
|
||||
contextStrPrefix,
|
||||
sqlParserMode,
|
||||
llm,
|
||||
serviceContext,
|
||||
returnRaw,
|
||||
handleSQLErrors,
|
||||
sqlOnly,
|
||||
callbackManager,
|
||||
verbose,
|
||||
}: {
|
||||
sqlDatabase: SQLDatabase;
|
||||
textToSQLPrompt?: TextToSQLPrompt;
|
||||
contextQueryKwargs?: Record<string, any>;
|
||||
tables?: any[] | string[];
|
||||
tableRetriever?: ObjectRetriever;
|
||||
contextStrPrefix?: string;
|
||||
sqlParserMode?: SQLParserMode;
|
||||
llm?: LLM;
|
||||
serviceContext?: ServiceContext;
|
||||
returnRaw?: boolean;
|
||||
handleSQLErrors?: boolean;
|
||||
sqlOnly?: boolean;
|
||||
callbackManager?: CallbackManager;
|
||||
verbose?: boolean;
|
||||
}) {
|
||||
super(sqlDatabase, returnRaw, callbackManager);
|
||||
|
||||
this.sqlRetriever = new SQLRetriever(sqlDatabase, returnRaw);
|
||||
this.sqlDatabase = sqlDatabase;
|
||||
this.getTables = this.loadGetTablesFn(
|
||||
sqlDatabase,
|
||||
tables,
|
||||
contextQueryKwargs,
|
||||
tableRetriever,
|
||||
);
|
||||
this.contextStrPrefix = contextStrPrefix;
|
||||
this.serviceContext = serviceContext ?? serviceContextFromDefaults();
|
||||
this.textToSQLPrompt = textToSQLPrompt ?? defaultTextToSQLPrompt;
|
||||
this.sqlParserMode = sqlParserMode ?? SQLParserMode.DEFAULT;
|
||||
this.sqlParser = this.loadSQLParser(
|
||||
this.sqlParserMode,
|
||||
this.serviceContext,
|
||||
);
|
||||
this.handleSQLErrors = handleSQLErrors ?? true;
|
||||
this.sqlOnly = sqlOnly ?? false;
|
||||
this.verbose = verbose ?? false;
|
||||
this.returnRaw = returnRaw ?? false;
|
||||
this.llm = llm ?? this.serviceContext.llm;
|
||||
}
|
||||
|
||||
_getPrompts() {
|
||||
return {
|
||||
textToSQLPrompt: this.textToSQLPrompt,
|
||||
};
|
||||
}
|
||||
|
||||
_updatePrompts(prompts: Record<string, any>) {
|
||||
if ("textToSQLPrompt" in prompts) {
|
||||
this.textToSQLPrompt = prompts.textToSQLPrompt;
|
||||
}
|
||||
}
|
||||
|
||||
_getPromptModules() {
|
||||
return {};
|
||||
}
|
||||
|
||||
getServiceContext(): ServiceContext {
|
||||
return this.serviceContext;
|
||||
}
|
||||
|
||||
loadSQLParser(sqlParserMode: SQLParserMode, serviceContext: ServiceContext) {
|
||||
if (sqlParserMode === SQLParserMode.DEFAULT) {
|
||||
return new DefaultSQLParser();
|
||||
} else {
|
||||
throw new Error(`Unknown SQL parser mode: ${sqlParserMode}`);
|
||||
}
|
||||
}
|
||||
|
||||
loadGetTablesFn(
|
||||
sqlDatabase: SQLDatabase,
|
||||
tables: any[] | string[] | undefined,
|
||||
contextQueryKwargs: Record<string, any> | undefined,
|
||||
tableRetriever: ObjectRetriever | undefined,
|
||||
) {
|
||||
contextQueryKwargs = contextQueryKwargs || {};
|
||||
|
||||
if (tableRetriever) {
|
||||
return async (queryStr: string) =>
|
||||
await tableRetriever.retrieve(queryStr);
|
||||
} else {
|
||||
let tableNames: SQLTableSchema[] | string[];
|
||||
|
||||
if (tables) {
|
||||
tableNames = tables.map((t) => t);
|
||||
} else {
|
||||
tableNames = Array.from(sqlDatabase.usableTableNames);
|
||||
}
|
||||
|
||||
const contextStrs: string[] = [];
|
||||
|
||||
const tableSchemas = tableNames.map((t, i) => {
|
||||
if (typeof t === "string") {
|
||||
return {
|
||||
tableName: t,
|
||||
...(contextQueryKwargs
|
||||
? { contextStr: contextQueryKwargs[t] }
|
||||
: {}),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
tableName: t.tableName,
|
||||
...(contextQueryKwargs
|
||||
? { contextStr: contextQueryKwargs[t.tableName] }
|
||||
: {}),
|
||||
};
|
||||
});
|
||||
|
||||
return () => tableSchemas;
|
||||
}
|
||||
}
|
||||
|
||||
async retrieveWithMetadata(strOrQueryBundle: string | QueryBundle): Promise<
|
||||
[
|
||||
NodeWithScore[],
|
||||
{
|
||||
sqlQuery: string;
|
||||
},
|
||||
]
|
||||
> {
|
||||
const queryBundle =
|
||||
typeof strOrQueryBundle === "string"
|
||||
? { queryStr: strOrQueryBundle }
|
||||
: strOrQueryBundle;
|
||||
|
||||
const tableDescStr = await this.getTableContext(queryBundle);
|
||||
|
||||
if (this.verbose) {
|
||||
console.log(`> Table desc str: ${tableDescStr}`);
|
||||
}
|
||||
|
||||
const response = await this.serviceContext?.llm?.complete({
|
||||
prompt: this.textToSQLPrompt({
|
||||
dialect: "sql",
|
||||
schema: tableDescStr,
|
||||
queryStr: queryBundle.queryStr,
|
||||
}),
|
||||
});
|
||||
|
||||
if (!response) {
|
||||
throw new Error("No response from LLM");
|
||||
}
|
||||
|
||||
const sqlQueryStr = this.sqlParser.parseResponseToSQL(
|
||||
response?.text,
|
||||
queryBundle,
|
||||
);
|
||||
|
||||
if (this.verbose) {
|
||||
console.log(`> Predicted SQL query: ${sqlQueryStr}`);
|
||||
}
|
||||
|
||||
let retrievedNodes: NodeWithScore[];
|
||||
let metadata: Record<string, unknown> = {};
|
||||
|
||||
if (this.sqlOnly) {
|
||||
const sqlOnlyNode = new TextNode({ text: sqlQueryStr });
|
||||
retrievedNodes = [{ node: sqlOnlyNode }];
|
||||
metadata = {};
|
||||
} else {
|
||||
try {
|
||||
const retrieverResponse = await this.sqlRetriever.retrieveWithMetadata({
|
||||
queryStr: sqlQueryStr,
|
||||
});
|
||||
|
||||
retrievedNodes = retrieverResponse[0];
|
||||
metadata = retrieverResponse[1];
|
||||
} catch (e) {
|
||||
if (this.handleSQLErrors) {
|
||||
const errNode = new TextNode({ text: `Error: ${e}` });
|
||||
retrievedNodes = [{ node: errNode }];
|
||||
metadata = {};
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
return [retrievedNodes, { sqlQuery: sqlQueryStr, ...metadata }];
|
||||
}
|
||||
|
||||
async retrieve(query: string): Promise<NodeWithScore[]> {
|
||||
const [retrievedNodes] = await this.retrieveWithMetadata(query);
|
||||
return retrievedNodes;
|
||||
}
|
||||
|
||||
async getTableContext(queryBundle: QueryBundle) {
|
||||
const tableSchemaObjs = this.getTables(queryBundle.queryStr);
|
||||
const contextStrs = [];
|
||||
if (this.contextStrPrefix) {
|
||||
contextStrs.push(this.contextStrPrefix);
|
||||
}
|
||||
for (const tableSchemaObj of tableSchemaObjs) {
|
||||
let tableInfo = await this.sqlDatabase.getSingleTableInfo(
|
||||
tableSchemaObj.tableName,
|
||||
);
|
||||
if (tableSchemaObj.contextStr) {
|
||||
const tableOptContext = `The table description is: ${tableSchemaObj.contextStr}`;
|
||||
tableInfo += tableOptContext;
|
||||
}
|
||||
contextStrs.push(tableInfo);
|
||||
}
|
||||
return contextStrs.join("\n\n");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./NLSQLRetriever.js";
|
||||
@@ -0,0 +1,31 @@
|
||||
export const defaultTextToSQLPrompt = ({
|
||||
dialect,
|
||||
schema,
|
||||
queryStr,
|
||||
}: {
|
||||
dialect: string;
|
||||
schema: string;
|
||||
queryStr: string;
|
||||
}) => `Given an input question, first create a syntactically correct ${dialect}
|
||||
query to run, then look at the results of the query and return the answer.
|
||||
You can order the results by a relevant column to return the most
|
||||
interesting examples in the database.
|
||||
Never query for all the columns from a specific table, only ask for a
|
||||
few relevant columns given the question.
|
||||
Pay attention to use only the column names that you can see in the schema
|
||||
description.
|
||||
Be careful to not query for columns that do not exist.
|
||||
Pay attention to which column is in which table.
|
||||
Also, qualify column names with the table name when needed.
|
||||
You are required to use the following format, each taking one line:
|
||||
Question: Question here
|
||||
SQLQuery: SQL Query to run
|
||||
SQLResult: Result of the SQLQuery
|
||||
Answer: Final answer here
|
||||
Only use tables listed below.
|
||||
${schema}
|
||||
Question: ${queryStr}
|
||||
SQLQuery:
|
||||
`;
|
||||
|
||||
export type TextToSQLPrompt = typeof defaultTextToSQLPrompt;
|
||||
@@ -0,0 +1,105 @@
|
||||
import type { BaseRetriever } from "../../Retriever.js";
|
||||
import {
|
||||
TextNode,
|
||||
type CallbackManager,
|
||||
type Event,
|
||||
type NodeWithScore,
|
||||
type SQLDatabase,
|
||||
type ServiceContext,
|
||||
} from "../../index.js";
|
||||
import type { QueryBundle } from "../../types.js";
|
||||
|
||||
export interface SQLTableSchema {
|
||||
tableName: string;
|
||||
contextStr: string;
|
||||
}
|
||||
|
||||
export enum SQLParserMode {
|
||||
DEFAULT = "default",
|
||||
PGVECTOR = "pgvector",
|
||||
}
|
||||
|
||||
// export type SQLParserMode = "default" | "pgvector";
|
||||
|
||||
export interface BaseSQLParser {
|
||||
parseResponseToSQL(response: string, queryBundle: QueryBundle): string;
|
||||
}
|
||||
|
||||
export class DefaultSQLParser implements BaseSQLParser {
|
||||
parseResponseToSQL(response: string, queryBundle: QueryBundle): string {
|
||||
const sqlQueryStart = response.indexOf("SQLQuery:");
|
||||
if (sqlQueryStart !== -1) {
|
||||
response = response.slice(sqlQueryStart);
|
||||
if (response.startsWith("SQLQuery:")) {
|
||||
response = response.slice("SQLQuery:".length);
|
||||
}
|
||||
}
|
||||
const sqlResultStart = response.indexOf("SQLResult:");
|
||||
if (sqlResultStart !== -1) {
|
||||
response = response.slice(0, sqlResultStart);
|
||||
}
|
||||
return response.trim().replace("```", "").trim();
|
||||
}
|
||||
}
|
||||
|
||||
export class SQLRetriever implements BaseRetriever {
|
||||
sqlDatabase: SQLDatabase;
|
||||
returnRaw: boolean;
|
||||
|
||||
constructor(
|
||||
sqlDatabase: SQLDatabase,
|
||||
returnRaw: boolean = true,
|
||||
callbackManager: CallbackManager | null = null,
|
||||
kwargs: any = {},
|
||||
) {
|
||||
this.sqlDatabase = sqlDatabase;
|
||||
this.returnRaw = returnRaw;
|
||||
}
|
||||
|
||||
getServiceContext(): ServiceContext {
|
||||
throw new Error("Method not implemented.");
|
||||
}
|
||||
|
||||
_formatNodeResults(results: any[][], colKeys: string[]): NodeWithScore[] {
|
||||
const nodes: NodeWithScore[] = [];
|
||||
for (const result of results) {
|
||||
const metadata = Object.fromEntries(
|
||||
colKeys.map((key, i) => [key, result[i]]),
|
||||
);
|
||||
const textNode = new TextNode({
|
||||
text: "",
|
||||
metadata,
|
||||
});
|
||||
nodes.push({ node: textNode });
|
||||
}
|
||||
return nodes;
|
||||
}
|
||||
|
||||
async retrieveWithMetadata(
|
||||
strOrQueryBundle: QueryBundle,
|
||||
): Promise<[NodeWithScore[], any]> {
|
||||
const [rawResponseStr, metadata] = await this.sqlDatabase.runSQL(
|
||||
strOrQueryBundle.queryStr,
|
||||
);
|
||||
|
||||
if (this.returnRaw) {
|
||||
return [[{ node: new TextNode({ text: rawResponseStr }) }], metadata];
|
||||
} else {
|
||||
const results = metadata.result;
|
||||
const colKeys = metadata.colKeys;
|
||||
return [this._formatNodeResults(results, colKeys), metadata];
|
||||
}
|
||||
}
|
||||
|
||||
async retrieve(
|
||||
query: string,
|
||||
parentEvent: Event | undefined,
|
||||
preFilters: unknown,
|
||||
): Promise<NodeWithScore[]> {
|
||||
const retrievedNodes = await this.retrieveWithMetadata({
|
||||
queryStr: query,
|
||||
});
|
||||
|
||||
return retrievedNodes;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
import knex from "knex";
|
||||
|
||||
type SQLDatabaseParams = {
|
||||
engine: knex.Knex;
|
||||
schema: string | undefined;
|
||||
metadata: any;
|
||||
ignoreTables: string[] | undefined;
|
||||
includeTables: string[] | undefined;
|
||||
sampleRowsInTableInfo: number;
|
||||
indexesInTableInfo: boolean;
|
||||
customTableInfo: Record<string, any> | undefined;
|
||||
maxStringLength: number;
|
||||
};
|
||||
|
||||
export class SQLDatabase {
|
||||
engine: knex.Knex;
|
||||
schema: string | undefined;
|
||||
metadata: any;
|
||||
inspector: knex.Knex;
|
||||
allTables: Set<string>;
|
||||
includeTables: Set<string>;
|
||||
ignoreTables: Set<string>;
|
||||
usableTables: Set<string>;
|
||||
sampleRowsInTableInfo: number;
|
||||
indexesInTableInfo: boolean;
|
||||
customTableInfo: Record<string, any> | undefined;
|
||||
maxStringLength: number;
|
||||
|
||||
constructor({
|
||||
engine,
|
||||
schema,
|
||||
metadata,
|
||||
ignoreTables,
|
||||
includeTables,
|
||||
sampleRowsInTableInfo,
|
||||
indexesInTableInfo,
|
||||
customTableInfo,
|
||||
maxStringLength,
|
||||
}: SQLDatabaseParams) {
|
||||
this.engine = engine;
|
||||
this.schema = schema;
|
||||
this.metadata = metadata;
|
||||
this.inspector = engine;
|
||||
this.allTables = new Set(["test_table_1"]);
|
||||
this.includeTables = new Set(includeTables || []);
|
||||
this.ignoreTables = new Set(ignoreTables || []);
|
||||
this.usableTables = new Set();
|
||||
this.sampleRowsInTableInfo = sampleRowsInTableInfo;
|
||||
this.indexesInTableInfo = indexesInTableInfo;
|
||||
this.customTableInfo = customTableInfo;
|
||||
this.maxStringLength = maxStringLength;
|
||||
}
|
||||
|
||||
get usableTableNames(): string[] {
|
||||
if (this.includeTables.size > 0) {
|
||||
return Array.from(this.includeTables);
|
||||
}
|
||||
return Array.from(this.allTables);
|
||||
}
|
||||
|
||||
async getTableColumns(tableName: string) {
|
||||
return await this.inspector(tableName).columnInfo();
|
||||
}
|
||||
|
||||
async getSingleTableInfo(tableName: string) {
|
||||
const columns = await this.getTableColumns(tableName);
|
||||
|
||||
const columnStr = Object.keys(columns)
|
||||
.map((column) => {
|
||||
return `${column} (${columns[column].type})`;
|
||||
})
|
||||
.join(", ");
|
||||
|
||||
return `Table '${tableName}' has columns: ${columnStr}.`;
|
||||
}
|
||||
|
||||
insertIntoTable(tableName: string, data: Record<string, any>): Promise<void> {
|
||||
return this.engine(tableName).insert(data);
|
||||
}
|
||||
|
||||
truncateWord(content: any, length: number, suffix = "..."): string {
|
||||
if (typeof content !== "string" || length <= 0) {
|
||||
return content;
|
||||
}
|
||||
|
||||
if (content.length <= length) {
|
||||
return content;
|
||||
}
|
||||
|
||||
return (
|
||||
content
|
||||
.slice(0, length - suffix.length - 1)
|
||||
.split(" ")
|
||||
.slice(0, -1)
|
||||
.join(" ") + suffix
|
||||
);
|
||||
}
|
||||
|
||||
async runSQL(
|
||||
command: string,
|
||||
): Promise<[string, { result: any[]; colKeys: string[] }]> {
|
||||
return this.engine.raw(command).then((result: any) => {
|
||||
if (result.length > 0) {
|
||||
const truncatedResults = result.map((row: any) =>
|
||||
this.truncateWord(row, this.maxStringLength),
|
||||
);
|
||||
return [
|
||||
JSON.stringify(truncatedResults),
|
||||
{ result: truncatedResults, colKeys: Object.keys(result[0]) },
|
||||
];
|
||||
}
|
||||
return ["", { result: [], colKeys: [] }];
|
||||
});
|
||||
}
|
||||
|
||||
async getTableInfo(tableName: string): Promise<string> {
|
||||
const columns = await this.getTableColumns(tableName);
|
||||
const columnStr = Object.keys(columns)
|
||||
.map((column: any) => {
|
||||
const comment = column.COMMENT ? `'${column.COMMENT}'` : "";
|
||||
return `${column.COLUMN_NAME} (${column.DATA_TYPE}): ${comment}`;
|
||||
})
|
||||
.join(", ");
|
||||
return `Table '${tableName}' has columns: ${columnStr}.`;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./SQLWrapper.js";
|
||||
Generated
+582
-13
@@ -124,12 +124,18 @@ importers:
|
||||
dotenv:
|
||||
specifier: ^16.4.1
|
||||
version: 16.4.1
|
||||
knex:
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0(sqlite3@5.1.7)
|
||||
llamaindex:
|
||||
specifier: latest
|
||||
version: link:../packages/core
|
||||
mongodb:
|
||||
specifier: ^6.2.0
|
||||
version: 6.3.0
|
||||
sqlite3:
|
||||
specifier: ^5.1.7
|
||||
version: 5.1.7
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^18.19.10
|
||||
@@ -216,6 +222,9 @@ importers:
|
||||
js-tiktoken:
|
||||
specifier: ^1.0.10
|
||||
version: 1.0.10
|
||||
knex:
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0(pg@8.11.3)
|
||||
lodash:
|
||||
specifier: ^4.17.21
|
||||
version: 4.17.21
|
||||
@@ -3158,6 +3167,12 @@ packages:
|
||||
engines: {node: '>=14'}
|
||||
dev: false
|
||||
|
||||
/@gar/promisify@1.1.3:
|
||||
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@hapi/hoek@9.3.0:
|
||||
resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
|
||||
|
||||
@@ -3478,6 +3493,26 @@ packages:
|
||||
- encoding
|
||||
dev: false
|
||||
|
||||
/@npmcli/fs@1.1.1:
|
||||
resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@gar/promisify': 1.1.3
|
||||
semver: 7.6.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@npmcli/move-file@1.1.2:
|
||||
resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
|
||||
engines: {node: '>=10'}
|
||||
deprecated: This functionality has been moved to @npmcli/fs
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
mkdirp: 1.0.4
|
||||
rimraf: 3.0.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@pinecone-database/pinecone@1.1.3:
|
||||
resolution: {integrity: sha512-bGldvvoAr4agVZ2ql4RZesXIDjMLjnuqNmKYfMQoVO3UFRYeuO9z+1WJodvanGIPY2iGh1w9yz0jDAkBiT53qw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -4085,6 +4120,13 @@ packages:
|
||||
/@tokenizer/token@0.3.0:
|
||||
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
|
||||
|
||||
/@tootallnate/once@1.1.2:
|
||||
resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
|
||||
engines: {node: '>= 6'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@trysound/sax@0.2.0:
|
||||
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
@@ -4818,6 +4860,12 @@ packages:
|
||||
/@xtuc/long@4.2.2:
|
||||
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
|
||||
|
||||
/abbrev@1.1.1:
|
||||
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/abort-controller@3.0.0:
|
||||
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
|
||||
engines: {node: '>=6.5'}
|
||||
@@ -4859,6 +4907,17 @@ packages:
|
||||
resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
/agent-base@6.0.2:
|
||||
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/agentkeepalive@4.5.0:
|
||||
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
|
||||
engines: {node: '>= 8.0.0'}
|
||||
@@ -5018,10 +5077,26 @@ packages:
|
||||
resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==}
|
||||
dev: true
|
||||
|
||||
/aproba@2.0.0:
|
||||
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/arch@2.2.0:
|
||||
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
|
||||
dev: true
|
||||
|
||||
/are-we-there-yet@3.0.1:
|
||||
resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
delegates: 1.0.0
|
||||
readable-stream: 3.6.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/arg@4.1.3:
|
||||
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
|
||||
dev: true
|
||||
@@ -5364,6 +5439,12 @@ packages:
|
||||
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
/bindings@1.5.0:
|
||||
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
|
||||
dependencies:
|
||||
file-uri-to-path: 1.0.0
|
||||
dev: false
|
||||
|
||||
/bl@4.1.0:
|
||||
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
|
||||
dependencies:
|
||||
@@ -5514,6 +5595,34 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/cacache@15.3.0:
|
||||
resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
|
||||
engines: {node: '>= 10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@npmcli/fs': 1.1.1
|
||||
'@npmcli/move-file': 1.1.2
|
||||
chownr: 2.0.0
|
||||
fs-minipass: 2.1.0
|
||||
glob: 7.2.3
|
||||
infer-owner: 1.0.4
|
||||
lru-cache: 6.0.0
|
||||
minipass: 3.3.6
|
||||
minipass-collect: 1.0.2
|
||||
minipass-flush: 1.0.5
|
||||
minipass-pipeline: 1.2.4
|
||||
mkdirp: 1.0.4
|
||||
p-map: 4.0.0
|
||||
promise-inflight: 1.0.1
|
||||
rimraf: 3.0.2
|
||||
ssri: 8.0.1
|
||||
tar: 6.1.15
|
||||
unique-filename: 1.1.1
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/cacheable-lookup@2.0.1:
|
||||
resolution: {integrity: sha512-EMMbsiOTcdngM/K6gV/OxF2x0t07+vMOWxZNSCRQMjO2MY2nhZQ6OYhOOpyQrbhqsgtvKGI7hcq6xjnA92USjg==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -5716,7 +5825,6 @@ packages:
|
||||
/chownr@2.0.0:
|
||||
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/chromadb@1.7.3(cohere-ai@7.7.5)(openai@4.26.1):
|
||||
resolution: {integrity: sha512-3GgvQjpqgk5C89x5EuTDaXKbfrdqYDJ5UVyLQ3ZmwxnpetNc+HhRDGjkvXa5KSvpQ3lmKoyDoqnN4tZepfFkbw==}
|
||||
@@ -5908,6 +6016,13 @@ packages:
|
||||
simple-swizzle: 0.2.2
|
||||
dev: false
|
||||
|
||||
/color-support@1.1.3:
|
||||
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/color@3.2.1:
|
||||
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
||||
dependencies:
|
||||
@@ -5926,6 +6041,10 @@ packages:
|
||||
/colord@2.9.3:
|
||||
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
|
||||
|
||||
/colorette@2.0.19:
|
||||
resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
|
||||
dev: false
|
||||
|
||||
/colorette@2.0.20:
|
||||
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
|
||||
|
||||
@@ -6067,6 +6186,12 @@ packages:
|
||||
/consola@2.15.3:
|
||||
resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
|
||||
|
||||
/console-control-strings@1.1.0:
|
||||
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/content-disposition@0.5.2:
|
||||
resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==}
|
||||
engines: {node: '>= 0.6'}
|
||||
@@ -6560,6 +6685,12 @@ packages:
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: false
|
||||
|
||||
/delegates@1.0.0:
|
||||
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/depd@1.1.2:
|
||||
resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
|
||||
engines: {node: '>= 0.6'}
|
||||
@@ -6996,7 +7127,12 @@ packages:
|
||||
/env-paths@2.2.1:
|
||||
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/err-code@2.0.3:
|
||||
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/error-ex@1.3.2:
|
||||
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
|
||||
@@ -7179,11 +7315,11 @@ packages:
|
||||
/escalade@3.1.1:
|
||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/escalade@3.1.2:
|
||||
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/escape-goat@4.0.0:
|
||||
resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
|
||||
@@ -7517,6 +7653,11 @@ packages:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/esm@3.2.25:
|
||||
resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/espree@9.6.1:
|
||||
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@@ -7854,6 +7995,10 @@ packages:
|
||||
token-types: 5.0.1
|
||||
dev: false
|
||||
|
||||
/file-uri-to-path@1.0.0:
|
||||
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
|
||||
dev: false
|
||||
|
||||
/filename-reserved-regex@3.0.0:
|
||||
resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
@@ -8135,7 +8280,6 @@ packages:
|
||||
engines: {node: '>= 8'}
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: true
|
||||
|
||||
/fs-monkey@1.0.5:
|
||||
resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==}
|
||||
@@ -8193,6 +8337,22 @@ packages:
|
||||
/functions-have-names@1.2.3:
|
||||
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
|
||||
|
||||
/gauge@4.0.4:
|
||||
resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
aproba: 2.0.0
|
||||
color-support: 1.1.3
|
||||
console-control-strings: 1.1.0
|
||||
has-unicode: 2.0.1
|
||||
signal-exit: 3.0.7
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
wide-align: 1.1.5
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/gensync@1.0.0-beta.2:
|
||||
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
@@ -8238,6 +8398,11 @@ packages:
|
||||
/get-own-enumerable-property-symbols@3.0.2:
|
||||
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
|
||||
|
||||
/get-package-type@0.1.0:
|
||||
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
dev: false
|
||||
|
||||
/get-stream@3.0.0:
|
||||
resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -8272,6 +8437,10 @@ packages:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
dev: false
|
||||
|
||||
/getopts@2.3.0:
|
||||
resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==}
|
||||
dev: false
|
||||
|
||||
/github-from-package@0.0.0:
|
||||
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
|
||||
dev: false
|
||||
@@ -8536,6 +8705,12 @@ packages:
|
||||
dependencies:
|
||||
has-symbols: 1.0.3
|
||||
|
||||
/has-unicode@2.0.1:
|
||||
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/has-yarn@3.0.0:
|
||||
resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
@@ -8789,6 +8964,19 @@ packages:
|
||||
/http-parser-js@0.5.8:
|
||||
resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
|
||||
|
||||
/http-proxy-agent@4.0.1:
|
||||
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
|
||||
engines: {node: '>= 6'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@tootallnate/once': 1.1.2
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/http-proxy-middleware@2.0.6(@types/express@4.17.21):
|
||||
resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
@@ -8832,6 +9020,18 @@ packages:
|
||||
quick-lru: 5.1.1
|
||||
resolve-alpn: 1.2.1
|
||||
|
||||
/https-proxy-agent@5.0.1:
|
||||
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
|
||||
engines: {node: '>= 6'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/human-id@1.0.2:
|
||||
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
|
||||
dev: true
|
||||
@@ -8926,6 +9126,12 @@ packages:
|
||||
resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==}
|
||||
dev: true
|
||||
|
||||
/infer-owner@1.0.4:
|
||||
resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/infima@0.2.0-alpha.43:
|
||||
resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -8977,11 +9183,26 @@ packages:
|
||||
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
||||
/interpret@2.2.0:
|
||||
resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==}
|
||||
engines: {node: '>= 0.10'}
|
||||
dev: false
|
||||
|
||||
/invariant@2.2.4:
|
||||
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
|
||||
/ip-address@9.0.5:
|
||||
resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
|
||||
engines: {node: '>= 12'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
jsbn: 1.1.0
|
||||
sprintf-js: 1.1.3
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/ipaddr.js@1.9.1:
|
||||
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
|
||||
engines: {node: '>= 0.10'}
|
||||
@@ -9135,6 +9356,12 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/is-lambda@1.0.1:
|
||||
resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/is-map@2.0.2:
|
||||
resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
|
||||
dev: false
|
||||
@@ -9435,6 +9662,12 @@ packages:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
|
||||
/jsbn@1.1.0:
|
||||
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/jsesc@0.5.0:
|
||||
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
|
||||
hasBin: true
|
||||
@@ -9542,6 +9775,100 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/knex@3.1.0(pg@8.11.3):
|
||||
resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==}
|
||||
engines: {node: '>=16'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
better-sqlite3: '*'
|
||||
mysql: '*'
|
||||
mysql2: '*'
|
||||
pg: '*'
|
||||
pg-native: '*'
|
||||
sqlite3: '*'
|
||||
tedious: '*'
|
||||
peerDependenciesMeta:
|
||||
better-sqlite3:
|
||||
optional: true
|
||||
mysql:
|
||||
optional: true
|
||||
mysql2:
|
||||
optional: true
|
||||
pg:
|
||||
optional: true
|
||||
pg-native:
|
||||
optional: true
|
||||
sqlite3:
|
||||
optional: true
|
||||
tedious:
|
||||
optional: true
|
||||
dependencies:
|
||||
colorette: 2.0.19
|
||||
commander: 10.0.1
|
||||
debug: 4.3.4
|
||||
escalade: 3.1.2
|
||||
esm: 3.2.25
|
||||
get-package-type: 0.1.0
|
||||
getopts: 2.3.0
|
||||
interpret: 2.2.0
|
||||
lodash: 4.17.21
|
||||
pg: 8.11.3
|
||||
pg-connection-string: 2.6.2
|
||||
rechoir: 0.8.0
|
||||
resolve-from: 5.0.0
|
||||
tarn: 3.0.2
|
||||
tildify: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/knex@3.1.0(sqlite3@5.1.7):
|
||||
resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==}
|
||||
engines: {node: '>=16'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
better-sqlite3: '*'
|
||||
mysql: '*'
|
||||
mysql2: '*'
|
||||
pg: '*'
|
||||
pg-native: '*'
|
||||
sqlite3: '*'
|
||||
tedious: '*'
|
||||
peerDependenciesMeta:
|
||||
better-sqlite3:
|
||||
optional: true
|
||||
mysql:
|
||||
optional: true
|
||||
mysql2:
|
||||
optional: true
|
||||
pg:
|
||||
optional: true
|
||||
pg-native:
|
||||
optional: true
|
||||
sqlite3:
|
||||
optional: true
|
||||
tedious:
|
||||
optional: true
|
||||
dependencies:
|
||||
colorette: 2.0.19
|
||||
commander: 10.0.1
|
||||
debug: 4.3.4
|
||||
escalade: 3.1.2
|
||||
esm: 3.2.25
|
||||
get-package-type: 0.1.0
|
||||
getopts: 2.3.0
|
||||
interpret: 2.2.0
|
||||
lodash: 4.17.21
|
||||
pg-connection-string: 2.6.2
|
||||
rechoir: 0.8.0
|
||||
resolve-from: 5.0.0
|
||||
sqlite3: 5.1.7
|
||||
tarn: 3.0.2
|
||||
tildify: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/kuler@2.0.0:
|
||||
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
|
||||
dev: false
|
||||
@@ -9859,6 +10186,33 @@ packages:
|
||||
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
|
||||
dev: true
|
||||
|
||||
/make-fetch-happen@9.1.0:
|
||||
resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
|
||||
engines: {node: '>= 10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
agentkeepalive: 4.5.0
|
||||
cacache: 15.3.0
|
||||
http-cache-semantics: 4.1.1
|
||||
http-proxy-agent: 4.0.1
|
||||
https-proxy-agent: 5.0.1
|
||||
is-lambda: 1.0.1
|
||||
lru-cache: 6.0.0
|
||||
minipass: 3.3.6
|
||||
minipass-collect: 1.0.2
|
||||
minipass-fetch: 1.4.1
|
||||
minipass-flush: 1.0.5
|
||||
minipass-pipeline: 1.2.4
|
||||
negotiator: 0.6.3
|
||||
promise-retry: 2.0.1
|
||||
socks-proxy-agent: 6.2.1
|
||||
ssri: 8.0.1
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/mammoth@1.6.0:
|
||||
resolution: {integrity: sha512-jOwbj6BwJzxCf6jr2l1zmSemniIkLnchvELXnDJCANlJawhzyIKObIq48B8kWEPLgUUh57k7FtEO3DHFQMnjMg==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
@@ -10604,12 +10958,60 @@ packages:
|
||||
/minimist@1.2.8:
|
||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||
|
||||
/minipass-collect@1.0.2:
|
||||
resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
|
||||
engines: {node: '>= 8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass-fetch@1.4.1:
|
||||
resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
minipass-sized: 1.0.3
|
||||
minizlib: 2.1.2
|
||||
optionalDependencies:
|
||||
encoding: 0.1.13
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass-flush@1.0.5:
|
||||
resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
|
||||
engines: {node: '>= 8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass-pipeline@1.2.4:
|
||||
resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass-sized@1.0.3:
|
||||
resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass@3.3.6:
|
||||
resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/minipass@4.2.8:
|
||||
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
|
||||
@@ -10619,7 +11021,6 @@ packages:
|
||||
/minipass@5.0.0:
|
||||
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/minizlib@2.1.2:
|
||||
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
||||
@@ -10627,7 +11028,6 @@ packages:
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/mixme@0.5.10:
|
||||
resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
|
||||
@@ -10642,7 +11042,6 @@ packages:
|
||||
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/mlly@1.6.0:
|
||||
resolution: {integrity: sha512-YOvg9hfYQmnaB56Yb+KrJE2u0Yzz5zR+sLejEvF4fzwzV1Al6hkf2vyHTwqCRyv0hCi9rVCqVoXpyYevQIRwLQ==}
|
||||
@@ -10843,6 +11242,11 @@ packages:
|
||||
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
||||
dev: false
|
||||
|
||||
/node-addon-api@7.1.0:
|
||||
resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==}
|
||||
engines: {node: ^16 || ^18 || >= 20}
|
||||
dev: false
|
||||
|
||||
/node-domexception@1.0.0:
|
||||
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
|
||||
engines: {node: '>=10.5.0'}
|
||||
@@ -10881,6 +11285,28 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/node-gyp@8.4.1:
|
||||
resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==}
|
||||
engines: {node: '>= 10.12.0'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
env-paths: 2.2.1
|
||||
glob: 7.2.3
|
||||
graceful-fs: 4.2.11
|
||||
make-fetch-happen: 9.1.0
|
||||
nopt: 5.0.0
|
||||
npmlog: 6.0.2
|
||||
rimraf: 3.0.2
|
||||
semver: 7.6.0
|
||||
tar: 6.1.15
|
||||
which: 2.0.2
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/node-releases@2.0.14:
|
||||
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
|
||||
|
||||
@@ -10898,6 +11324,16 @@ packages:
|
||||
'@babel/parser': 7.23.6
|
||||
dev: true
|
||||
|
||||
/nopt@5.0.0:
|
||||
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
abbrev: 1.1.1
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/normalize-package-data@2.5.0:
|
||||
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
|
||||
dependencies:
|
||||
@@ -10957,6 +11393,18 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: false
|
||||
|
||||
/npmlog@6.0.2:
|
||||
resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
are-we-there-yet: 3.0.1
|
||||
console-control-strings: 1.1.0
|
||||
gauge: 4.0.4
|
||||
set-blocking: 2.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/nprogress@0.2.0:
|
||||
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
|
||||
dev: true
|
||||
@@ -12280,6 +12728,27 @@ packages:
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/promise-inflight@1.0.1:
|
||||
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
|
||||
requiresBuild: true
|
||||
peerDependencies:
|
||||
bluebird: '*'
|
||||
peerDependenciesMeta:
|
||||
bluebird:
|
||||
optional: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/promise-retry@2.0.1:
|
||||
resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
err-code: 2.0.3
|
||||
retry: 0.12.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/prompts@2.1.0:
|
||||
resolution: {integrity: sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==}
|
||||
engines: {node: '>= 6'}
|
||||
@@ -12719,6 +13188,13 @@ packages:
|
||||
dependencies:
|
||||
resolve: 1.22.8
|
||||
|
||||
/rechoir@0.8.0:
|
||||
resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
dependencies:
|
||||
resolve: 1.22.8
|
||||
dev: false
|
||||
|
||||
/recursive-readdir@2.2.3:
|
||||
resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
@@ -12973,7 +13449,6 @@ packages:
|
||||
/resolve-from@5.0.0:
|
||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/resolve-pathname@3.0.0:
|
||||
resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==}
|
||||
@@ -13039,7 +13514,6 @@ packages:
|
||||
/retry@0.12.0:
|
||||
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
|
||||
engines: {node: '>= 4'}
|
||||
dev: true
|
||||
|
||||
/retry@0.13.1:
|
||||
resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
|
||||
@@ -13326,7 +13800,6 @@ packages:
|
||||
|
||||
/set-blocking@2.0.0:
|
||||
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
|
||||
dev: true
|
||||
|
||||
/set-function-length@1.1.1:
|
||||
resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
|
||||
@@ -13511,6 +13984,13 @@ packages:
|
||||
is-fullwidth-code-point: 5.0.0
|
||||
dev: true
|
||||
|
||||
/smart-buffer@4.2.0:
|
||||
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
|
||||
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/smartwrap@2.0.2:
|
||||
resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -13536,6 +14016,29 @@ packages:
|
||||
uuid: 8.3.2
|
||||
websocket-driver: 0.7.4
|
||||
|
||||
/socks-proxy-agent@6.2.1:
|
||||
resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
|
||||
engines: {node: '>= 10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.4
|
||||
socks: 2.8.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/socks@2.8.1:
|
||||
resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==}
|
||||
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
ip-address: 9.0.5
|
||||
smart-buffer: 4.2.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/sort-css-media-queries@2.1.0:
|
||||
resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==}
|
||||
engines: {node: '>= 6.3.0'}
|
||||
@@ -13646,11 +14149,44 @@ packages:
|
||||
/sprintf-js@1.0.3:
|
||||
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
|
||||
|
||||
/sprintf-js@1.1.3:
|
||||
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/sqlite3@5.1.7:
|
||||
resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==}
|
||||
requiresBuild: true
|
||||
peerDependenciesMeta:
|
||||
node-gyp:
|
||||
optional: true
|
||||
dependencies:
|
||||
bindings: 1.5.0
|
||||
node-addon-api: 7.1.0
|
||||
prebuild-install: 7.1.1
|
||||
tar: 6.1.15
|
||||
optionalDependencies:
|
||||
node-gyp: 8.4.1
|
||||
transitivePeerDependencies:
|
||||
- bluebird
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/srcset@4.0.0:
|
||||
resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==}
|
||||
engines: {node: '>=12'}
|
||||
dev: true
|
||||
|
||||
/ssri@8.0.1:
|
||||
resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
|
||||
engines: {node: '>= 8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/stable@0.1.8:
|
||||
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
|
||||
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
|
||||
@@ -14072,7 +14608,11 @@ packages:
|
||||
minizlib: 2.1.2
|
||||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/tarn@3.0.2:
|
||||
resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
dev: false
|
||||
|
||||
/term-size@2.2.1:
|
||||
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
|
||||
@@ -14167,6 +14707,11 @@ packages:
|
||||
/thunky@1.1.0:
|
||||
resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
|
||||
|
||||
/tildify@2.0.0:
|
||||
resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/tiny-invariant@1.3.1:
|
||||
resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==}
|
||||
|
||||
@@ -14670,6 +15215,22 @@ packages:
|
||||
resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==}
|
||||
dev: true
|
||||
|
||||
/unique-filename@1.1.1:
|
||||
resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
unique-slug: 2.0.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/unique-slug@2.0.2:
|
||||
resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
imurmurhash: 0.1.4
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/unique-string@3.0.0:
|
||||
resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -14735,7 +15296,7 @@ packages:
|
||||
browserslist: '>= 4.21.0'
|
||||
dependencies:
|
||||
browserslist: 4.22.3
|
||||
escalade: 3.1.1
|
||||
escalade: 3.1.2
|
||||
picocolors: 1.0.0
|
||||
|
||||
/update-check@1.5.4:
|
||||
@@ -15336,6 +15897,14 @@ packages:
|
||||
stackback: 0.0.2
|
||||
dev: true
|
||||
|
||||
/wide-align@1.1.5:
|
||||
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/widest-line@4.0.1:
|
||||
resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
Reference in New Issue
Block a user