diff --git a/core/index.d.ts b/core/index.d.ts
index 0d6423865d..f31b62ed7d 100644
--- a/core/index.d.ts
+++ b/core/index.d.ts
@@ -687,12 +687,6 @@ export interface LLMOptions {
sourceFile?: string;
isFromAutoDetect?: boolean;
-
- // Thinking output format options
- // These allow configuring custom tags to extract thinking content from the response
- // For example, vLLM can use ... tags instead of the standard reasoning_content field
- thinkingOpenTag?: string;
- thinkingCloseTag?: string;
}
type RequireAtLeastOne = Pick<
diff --git a/core/llm/index.ts b/core/llm/index.ts
index fd22811148..03f4b5103e 100644
--- a/core/llm/index.ts
+++ b/core/llm/index.ts
@@ -84,134 +84,6 @@ export function isModelInstaller(provider: any): provider is ModelInstaller {
type InteractionStatus = "in_progress" | "success" | "error" | "cancelled";
-/**
- * Helper class to extract thinking content from custom tags during streaming.
- * This is used for providers like vLLM that support custom thinking output formats.
- */
-export class ThinkingTagExtractor {
- private buffer: string = "";
- private inThinkingBlock: boolean = false;
- private readonly openTag: string;
- private readonly closeTag: string;
-
- constructor(openTag: string, closeTag: string) {
- this.openTag = openTag;
- this.closeTag = closeTag;
- }
-
- /**
- * Process a chunk of text and extract thinking/regular content.
- * Returns an object with the thinking content and regular content that should be yielded.
- */
- process(text: string): {
- thinking: string;
- content: string;
- } {
- this.buffer += text;
-
- let thinking = "";
- let content = "";
-
- while (this.buffer.length > 0) {
- if (this.inThinkingBlock) {
- // Look for closing tag
- const closeIndex = this.buffer.indexOf(this.closeTag);
- if (closeIndex !== -1) {
- // Found closing tag - extract thinking content up to it
- thinking += this.buffer.substring(0, closeIndex);
- this.buffer = this.buffer.substring(
- closeIndex + this.closeTag.length,
- );
- this.inThinkingBlock = false;
- } else {
- // No closing tag yet - check if we might have a partial closing tag at the end
- const partialMatchLength = this.getPartialMatchLength(
- this.buffer,
- this.closeTag,
- );
- if (partialMatchLength > 0) {
- // Keep the potential partial match in the buffer
- thinking += this.buffer.substring(
- 0,
- this.buffer.length - partialMatchLength,
- );
- this.buffer = this.buffer.substring(
- this.buffer.length - partialMatchLength,
- );
- } else {
- // No partial match - all content is thinking
- thinking += this.buffer;
- this.buffer = "";
- }
- break;
- }
- } else {
- // Not in thinking block - look for opening tag
- const openIndex = this.buffer.indexOf(this.openTag);
- if (openIndex !== -1) {
- // Found opening tag
- content += this.buffer.substring(0, openIndex);
- this.buffer = this.buffer.substring(openIndex + this.openTag.length);
- this.inThinkingBlock = true;
- } else {
- // No opening tag - check if we might have a partial opening tag at the end
- const partialMatchLength = this.getPartialMatchLength(
- this.buffer,
- this.openTag,
- );
- if (partialMatchLength > 0) {
- // Keep the potential partial match in the buffer
- content += this.buffer.substring(
- 0,
- this.buffer.length - partialMatchLength,
- );
- this.buffer = this.buffer.substring(
- this.buffer.length - partialMatchLength,
- );
- } else {
- // No partial match - all content is regular content
- content += this.buffer;
- this.buffer = "";
- }
- break;
- }
- }
- }
-
- return { thinking, content };
- }
-
- /**
- * Flush any remaining content in the buffer.
- * Call this when the stream ends.
- */
- flush(): {
- thinking: string;
- content: string;
- } {
- const result = {
- thinking: this.inThinkingBlock ? this.buffer : "",
- content: this.inThinkingBlock ? "" : this.buffer,
- };
- this.buffer = "";
- this.inThinkingBlock = false;
- return result;
- }
-
- /**
- * Check if the end of the text could be the start of the tag.
- * Returns the length of the partial match, or 0 if no match.
- */
- private getPartialMatchLength(text: string, tag: string): number {
- for (let i = 1; i < tag.length && i <= text.length; i++) {
- if (text.slice(-i) === tag.slice(0, i)) {
- return i;
- }
- }
- return 0;
- }
-}
-
export abstract class BaseLLM implements ILLM {
static providerName: string;
static defaultOptions: Partial | undefined = undefined;
@@ -324,10 +196,6 @@ export abstract class BaseLLM implements ILLM {
isFromAutoDetect?: boolean;
- // Thinking output format options
- thinkingOpenTag?: string;
- thinkingCloseTag?: string;
-
lastRequestId: string | undefined;
private _llmOptions: LLMOptions;
@@ -435,10 +303,6 @@ export abstract class BaseLLM implements ILLM {
this.autocompleteOptions = options.autocompleteOptions;
this.sourceFile = options.sourceFile;
this.isFromAutoDetect = options.isFromAutoDetect;
-
- // Thinking output format options
- this.thinkingOpenTag = options.thinkingOpenTag;
- this.thinkingCloseTag = options.thinkingCloseTag;
}
get contextLength() {
@@ -1132,54 +996,21 @@ export abstract class BaseLLM implements ILLM {
return completionOptions;
}
- // Update the processChatChunk method:
private processChatChunk(
chunk: ChatMessage,
interaction: ILLMInteractionLog | undefined,
- thinkingExtractor?: ThinkingTagExtractor,
): {
completion: string[];
thinking: string[];
usage: Usage | null;
chunk: ChatMessage;
- thinkingChunk?: ChatMessage;
} {
const completion: string[] = [];
const thinking: string[] = [];
let usage: Usage | null = null;
- let outputChunk = chunk;
- let thinkingChunk: ChatMessage | undefined;
if (chunk.role === "assistant") {
- // If we have a thinking extractor, process the content through it
- if (thinkingExtractor && typeof chunk.content === "string") {
- const extracted = thinkingExtractor.process(chunk.content);
-
- if (extracted.thinking) {
- thinking.push(extracted.thinking);
- thinkingChunk = {
- role: "thinking",
- content: extracted.thinking,
- };
- }
-
- if (extracted.content) {
- const processedChunk: ChatMessage = {
- ...chunk,
- content: extracted.content,
- };
- completion.push(this._formatChatMessage(processedChunk));
- outputChunk = processedChunk;
- } else {
- // No regular content in this chunk, just thinking
- outputChunk = {
- ...chunk,
- content: "",
- };
- }
- } else {
- completion.push(this._formatChatMessage(chunk));
- }
+ completion.push(this._formatChatMessage(chunk));
} else if (chunk.role === "thinking" && typeof chunk.content === "string") {
thinking.push(chunk.content);
}
@@ -1197,8 +1028,7 @@ export abstract class BaseLLM implements ILLM {
completion,
thinking,
usage,
- chunk: outputChunk,
- thinkingChunk,
+ chunk,
};
}
@@ -1332,12 +1162,6 @@ export abstract class BaseLLM implements ILLM {
let usage: Usage | undefined = undefined;
let citations: null | string[] = null;
- // Create thinking tag extractor if custom tags are configured
- const thinkingExtractor =
- this.thinkingOpenTag && this.thinkingCloseTag
- ? new ThinkingTagExtractor(this.thinkingOpenTag, this.thinkingCloseTag)
- : undefined;
-
try {
if (this.templateMessages) {
for await (const chunk of this._streamComplete(
@@ -1394,46 +1218,13 @@ export abstract class BaseLLM implements ILLM {
}
for await (const chunk of iterable) {
- const result = this.processChatChunk(
- chunk,
- interaction,
- thinkingExtractor,
- );
+ const result = this.processChatChunk(chunk, interaction);
completion.push(...result.completion);
thinking.push(...result.thinking);
if (result.usage !== null) {
usage = result.usage;
}
- // Yield thinking chunk first if present
- if (result.thinkingChunk) {
- yield result.thinkingChunk;
- }
- // Only yield the main chunk if it has content or tool calls
- const hasToolCalls =
- result.chunk.role === "assistant" &&
- result.chunk.toolCalls?.length;
- const hasContent =
- result.chunk.content &&
- (typeof result.chunk.content === "string"
- ? result.chunk.content.length > 0
- : result.chunk.content.length > 0);
-
- if (hasToolCalls || hasContent) {
- yield result.chunk;
- }
- }
-
- // Flush any remaining content from the extractor
- if (thinkingExtractor) {
- const flushed = thinkingExtractor.flush();
- if (flushed.thinking) {
- thinking.push(flushed.thinking);
- yield { role: "thinking", content: flushed.thinking };
- }
- if (flushed.content) {
- completion.push(flushed.content);
- yield { role: "assistant", content: flushed.content };
- }
+ yield result.chunk;
}
} else {
if (logEnabled) {
@@ -1453,46 +1244,13 @@ export abstract class BaseLLM implements ILLM {
signal,
completionOptions,
)) {
- const result = this.processChatChunk(
- chunk,
- interaction,
- thinkingExtractor,
- );
+ const result = this.processChatChunk(chunk, interaction);
completion.push(...result.completion);
thinking.push(...result.thinking);
if (result.usage !== null) {
usage = result.usage;
}
- // Yield thinking chunk first if present
- if (result.thinkingChunk) {
- yield result.thinkingChunk;
- }
- // Only yield the main chunk if it has content or tool calls
- const hasToolCalls =
- result.chunk.role === "assistant" &&
- result.chunk.toolCalls?.length;
- const hasContent =
- result.chunk.content &&
- (typeof result.chunk.content === "string"
- ? result.chunk.content.length > 0
- : result.chunk.content.length > 0);
-
- if (hasToolCalls || hasContent) {
- yield result.chunk;
- }
- }
-
- // Flush any remaining content from the extractor
- if (thinkingExtractor) {
- const flushed = thinkingExtractor.flush();
- if (flushed.thinking) {
- thinking.push(flushed.thinking);
- yield { role: "thinking", content: flushed.thinking };
- }
- if (flushed.content) {
- completion.push(flushed.content);
- yield { role: "assistant", content: flushed.content };
- }
+ yield result.chunk;
}
}
}
diff --git a/core/llm/llms/Vllm.ts b/core/llm/llms/Vllm.ts
index 90b44c54ed..7b6d0477ef 100644
--- a/core/llm/llms/Vllm.ts
+++ b/core/llm/llms/Vllm.ts
@@ -1,6 +1,7 @@
-import { Chunk, LLMOptions } from "../../index.js";
+import { ChatMessage, Chunk, CompletionOptions, LLMOptions } from "../../index.js";
import { LlmApiRequestType } from "../openaiTypeConverters.js";
+import { ThinkingTagExtractor } from "../thinkingTagExtractor.js";
import OpenAI from "./OpenAI.js";
// vLLM-specific rerank response types
@@ -21,6 +22,24 @@ interface VllmRerankResponse {
results: VllmRerankItem[];
}
+/**
+ * vLLM-specific options for thinking output extraction.
+ * These options allow configuring custom tags to extract thinking content from the response.
+ */
+export interface VllmOptions extends LLMOptions {
+ /**
+ * Custom opening tag for extracting thinking/reasoning content from streamed responses.
+ * Used with models that output thinking content wrapped in custom tags (e.g., ``, ``).
+ * Must be used together with `thinkingCloseTag`.
+ */
+ thinkingOpenTag?: string;
+ /**
+ * Custom closing tag for extracting thinking/reasoning content from streamed responses.
+ * Must be used together with `thinkingOpenTag`.
+ */
+ thinkingCloseTag?: string;
+}
+
/**
* vLLM provider for Continue.
*
@@ -46,6 +65,10 @@ interface VllmRerankResponse {
class Vllm extends OpenAI {
static providerName = "vllm";
+ // vLLM-specific options for thinking tag extraction
+ private _thinkingOpenTag?: string;
+ private _thinkingCloseTag?: string;
+
// Override useOpenAIAdapterFor to NOT include "streamChat".
// vLLM uses the reasoning_content field for thinking output (via vLLM's reasoning parser),
// which is not part of the standard OpenAI SDK types. By excluding "streamChat", we force
@@ -60,14 +83,87 @@ class Vllm extends OpenAI {
"streamFim",
];
- constructor(options: LLMOptions) {
+ constructor(options: VllmOptions) {
super(options);
+ // Validate that thinking tags are provided together
+ if (
+ (options.thinkingOpenTag && !options.thinkingCloseTag) ||
+ (!options.thinkingOpenTag && options.thinkingCloseTag)
+ ) {
+ throw new Error(
+ "vLLM: Both thinkingOpenTag and thinkingCloseTag must be provided together",
+ );
+ }
+
+ // Store vLLM-specific options
+ this._thinkingOpenTag = options.thinkingOpenTag;
+ this._thinkingCloseTag = options.thinkingCloseTag;
+
if (options.isFromAutoDetect) {
this._setupCompletionOptions();
}
}
+ /**
+ * Override _streamChat to handle thinking tag extraction if configured.
+ * This allows vLLM to support models that use custom tags (like ...)
+ * instead of the standard reasoning_content field.
+ */
+ protected async *_streamChat(
+ messages: ChatMessage[],
+ signal: AbortSignal,
+ options: CompletionOptions,
+ ): AsyncGenerator {
+ // If no custom thinking tags configured, use parent implementation
+ if (!this._thinkingOpenTag || !this._thinkingCloseTag) {
+ for await (const chunk of super._streamChat(messages, signal, options)) {
+ yield chunk;
+ }
+ return;
+ }
+
+ // Use thinking tag extractor for custom tag formats
+ const extractor = new ThinkingTagExtractor(
+ this._thinkingOpenTag,
+ this._thinkingCloseTag,
+ );
+
+ for await (const chunk of super._streamChat(messages, signal, options)) {
+ if (chunk.role === "assistant" && typeof chunk.content === "string") {
+ const extracted = extractor.process(chunk.content);
+
+ // Yield thinking content first
+ if (extracted.thinking) {
+ yield {
+ role: "thinking",
+ content: extracted.thinking,
+ };
+ }
+
+ // Yield regular content if present
+ if (extracted.content) {
+ yield {
+ ...chunk,
+ content: extracted.content,
+ };
+ }
+ } else {
+ // Pass through non-assistant chunks unchanged
+ yield chunk;
+ }
+ }
+
+ // Flush any remaining content from the extractor
+ const flushed = extractor.flush();
+ if (flushed.thinking) {
+ yield { role: "thinking", content: flushed.thinking };
+ }
+ if (flushed.content) {
+ yield { role: "assistant", content: flushed.content };
+ }
+ }
+
supportsFim(): boolean {
return false;
}
diff --git a/core/llm/thinkingTagExtractor.ts b/core/llm/thinkingTagExtractor.ts
new file mode 100644
index 0000000000..67676a5720
--- /dev/null
+++ b/core/llm/thinkingTagExtractor.ts
@@ -0,0 +1,127 @@
+/**
+ * Helper class to extract thinking content from custom tags during streaming.
+ * This is used for providers like vLLM that support custom thinking output formats.
+ */
+export class ThinkingTagExtractor {
+ private buffer: string = "";
+ private inThinkingBlock: boolean = false;
+ private readonly openTag: string;
+ private readonly closeTag: string;
+
+ constructor(openTag: string, closeTag: string) {
+ this.openTag = openTag;
+ this.closeTag = closeTag;
+ }
+
+ /**
+ * Process a chunk of text and extract thinking/regular content.
+ * Returns an object with the thinking content and regular content that should be yielded.
+ */
+ process(text: string): {
+ thinking: string;
+ content: string;
+ } {
+ this.buffer += text;
+
+ let thinking = "";
+ let content = "";
+
+ while (this.buffer.length > 0) {
+ if (this.inThinkingBlock) {
+ // Look for closing tag
+ const closeIndex = this.buffer.indexOf(this.closeTag);
+ if (closeIndex !== -1) {
+ // Found closing tag - extract thinking content up to it
+ thinking += this.buffer.substring(0, closeIndex);
+ this.buffer = this.buffer.substring(
+ closeIndex + this.closeTag.length,
+ );
+ this.inThinkingBlock = false;
+ } else {
+ // No closing tag yet - check if we might have a partial closing tag at the end
+ const partialMatchLength = this.getPartialMatchLength(
+ this.buffer,
+ this.closeTag,
+ );
+ if (partialMatchLength > 0) {
+ // Keep the potential partial match in the buffer
+ thinking += this.buffer.substring(
+ 0,
+ this.buffer.length - partialMatchLength,
+ );
+ this.buffer = this.buffer.substring(
+ this.buffer.length - partialMatchLength,
+ );
+ } else {
+ // No partial match - all content is thinking
+ thinking += this.buffer;
+ this.buffer = "";
+ }
+ break;
+ }
+ } else {
+ // Not in thinking block - look for opening tag
+ const openIndex = this.buffer.indexOf(this.openTag);
+ if (openIndex !== -1) {
+ // Found opening tag
+ content += this.buffer.substring(0, openIndex);
+ this.buffer = this.buffer.substring(openIndex + this.openTag.length);
+ this.inThinkingBlock = true;
+ } else {
+ // No opening tag - check if we might have a partial opening tag at the end
+ const partialMatchLength = this.getPartialMatchLength(
+ this.buffer,
+ this.openTag,
+ );
+ if (partialMatchLength > 0) {
+ // Keep the potential partial match in the buffer
+ content += this.buffer.substring(
+ 0,
+ this.buffer.length - partialMatchLength,
+ );
+ this.buffer = this.buffer.substring(
+ this.buffer.length - partialMatchLength,
+ );
+ } else {
+ // No partial match - all content is regular content
+ content += this.buffer;
+ this.buffer = "";
+ }
+ break;
+ }
+ }
+ }
+
+ return { thinking, content };
+ }
+
+ /**
+ * Flush any remaining content in the buffer.
+ * Call this when the stream ends.
+ */
+ flush(): {
+ thinking: string;
+ content: string;
+ } {
+ const result = {
+ thinking: this.inThinkingBlock ? this.buffer : "",
+ content: this.inThinkingBlock ? "" : this.buffer,
+ };
+ this.buffer = "";
+ this.inThinkingBlock = false;
+ return result;
+ }
+
+ /**
+ * Check if the end of the text could be the start of the tag.
+ * Returns the length of the partial match, or 0 if no match.
+ */
+ private getPartialMatchLength(text: string, tag: string): number {
+ for (let i = 1; i < tag.length && i <= text.length; i++) {
+ if (text.slice(-i) === tag.slice(0, i)) {
+ return i;
+ }
+ }
+ return 0;
+ }
+}
diff --git a/core/llm/thinkingTagExtractor.vitest.ts b/core/llm/thinkingTagExtractor.vitest.ts
index 47b957b207..47bf900c23 100644
--- a/core/llm/thinkingTagExtractor.vitest.ts
+++ b/core/llm/thinkingTagExtractor.vitest.ts
@@ -1,5 +1,5 @@
import { describe, expect, it } from "vitest";
-import { ThinkingTagExtractor } from "./index";
+import { ThinkingTagExtractor } from "./thinkingTagExtractor";
describe("ThinkingTagExtractor", () => {
describe("basic functionality", () => {
diff --git a/core/llm/thinkingTagIntegration.vitest.ts b/core/llm/thinkingTagIntegration.vitest.ts
index a7af185f22..7df4cddbda 100644
--- a/core/llm/thinkingTagIntegration.vitest.ts
+++ b/core/llm/thinkingTagIntegration.vitest.ts
@@ -1,48 +1,107 @@
import { describe, expect, it, beforeEach } from "vitest";
-import { BaseLLM } from "./index";
-import { ChatMessage, LLMOptions, MessageContent } from "../index";
+import { ChatMessage, CompletionOptions } from "../index";
+import Vllm, { VllmOptions } from "./llms/Vllm";
+import { ThinkingTagExtractor } from "./thinkingTagExtractor";
/**
- * Mock LLM for testing thinking tag extraction during streaming
+ * Mock vLLM for testing thinking tag extraction during streaming.
+ * Since the thinking tag extraction is now vLLM-specific, we mock the Vllm class
+ * instead of BaseLLM.
*/
-class MockStreamingLLM extends BaseLLM {
- static providerName = "mock-streaming";
-
+class MockVllm extends Vllm {
private mockChunks: ChatMessage[] = [];
setMockChunks(chunks: ChatMessage[]) {
this.mockChunks = chunks;
}
- async *_streamComplete(
- prompt: string,
+ // Mock the parent's _streamChat to return controlled chunks
+ protected async *_parentStreamChat(
+ messages: ChatMessage[],
signal: AbortSignal,
- options: any,
- ): AsyncGenerator {
- yield "not used in these tests";
+ options: CompletionOptions,
+ ): AsyncGenerator {
+ for (const chunk of this.mockChunks) {
+ yield chunk;
+ }
}
- async *_streamChat(
+ // Override _streamChat to use our mock parent and apply thinking tag extraction
+ protected override async *_streamChat(
messages: ChatMessage[],
signal: AbortSignal,
- options: any,
+ options: CompletionOptions,
): AsyncGenerator {
- for (const chunk of this.mockChunks) {
- yield chunk;
+ // Access private properties using type assertion
+ const openTag = (this as any)._thinkingOpenTag;
+ const closeTag = (this as any)._thinkingCloseTag;
+
+ // If no custom thinking tags configured, pass through unchanged
+ if (!openTag || !closeTag) {
+ for await (const chunk of this._parentStreamChat(
+ messages,
+ signal,
+ options,
+ )) {
+ yield chunk;
+ }
+ return;
+ }
+
+ // Use thinking tag extractor for custom tag formats
+ const extractor = new ThinkingTagExtractor(openTag, closeTag);
+
+ for await (const chunk of this._parentStreamChat(
+ messages,
+ signal,
+ options,
+ )) {
+ if (chunk.role === "assistant" && typeof chunk.content === "string") {
+ const extracted = extractor.process(chunk.content);
+
+ // Yield thinking content first
+ if (extracted.thinking) {
+ yield {
+ role: "thinking",
+ content: extracted.thinking,
+ };
+ }
+
+ // Yield regular content if present
+ if (extracted.content) {
+ yield {
+ ...chunk,
+ content: extracted.content,
+ };
+ }
+ } else {
+ // Pass through non-assistant chunks unchanged (including native thinking role)
+ yield chunk;
+ }
+ }
+
+ // Flush any remaining content from the extractor
+ const flushed = extractor.flush();
+ if (flushed.thinking) {
+ yield { role: "thinking", content: flushed.thinking };
+ }
+ if (flushed.content) {
+ yield { role: "assistant", content: flushed.content };
}
}
}
-describe("ThinkingTagExtractor Integration with BaseLLM", () => {
- let llm: MockStreamingLLM;
+describe("ThinkingTagExtractor Integration with vLLM", () => {
+ let llm: MockVllm;
beforeEach(() => {
- const options: LLMOptions = {
+ const options: VllmOptions = {
model: "mock-model",
+ apiBase: "http://localhost:8000",
thinkingOpenTag: "",
thinkingCloseTag: "",
};
- llm = new MockStreamingLLM(options);
+ llm = new MockVllm(options);
});
describe("streamChat with thinking tags", () => {
@@ -187,11 +246,12 @@ describe("ThinkingTagExtractor Integration with BaseLLM", () => {
describe("streamChat without thinking tags configured", () => {
beforeEach(() => {
- // Create LLM without thinking tags
- const options: LLMOptions = {
+ // Create vLLM without thinking tags
+ const options: VllmOptions = {
model: "mock-model",
+ apiBase: "http://localhost:8000",
};
- llm = new MockStreamingLLM(options);
+ llm = new MockVllm(options);
});
it("should pass through content unchanged when no tags configured", async () => {
@@ -247,12 +307,13 @@ describe("ThinkingTagExtractor Integration with BaseLLM", () => {
describe("custom tag formats", () => {
it("should work with custom reasoning tags", async () => {
- const options: LLMOptions = {
+ const options: VllmOptions = {
model: "mock-model",
+ apiBase: "http://localhost:8000",
thinkingOpenTag: "",
thinkingCloseTag: "",
};
- llm = new MockStreamingLLM(options);
+ llm = new MockVllm(options);
llm.setMockChunks([
{
@@ -281,12 +342,13 @@ describe("ThinkingTagExtractor Integration with BaseLLM", () => {
});
it("should work with bracket-style tags", async () => {
- const options: LLMOptions = {
+ const options: VllmOptions = {
model: "mock-model",
+ apiBase: "http://localhost:8000",
thinkingOpenTag: "[THINK]",
thinkingCloseTag: "[/THINK]",
};
- llm = new MockStreamingLLM(options);
+ llm = new MockVllm(options);
llm.setMockChunks([
{
@@ -314,4 +376,30 @@ describe("ThinkingTagExtractor Integration with BaseLLM", () => {
});
});
});
+
+ describe("validation", () => {
+ it("should throw error when only thinkingOpenTag is provided", () => {
+ expect(() => {
+ new MockVllm({
+ model: "test-model",
+ apiBase: "http://localhost:8000",
+ thinkingOpenTag: "",
+ });
+ }).toThrow(
+ "vLLM: Both thinkingOpenTag and thinkingCloseTag must be provided together",
+ );
+ });
+
+ it("should throw error when only thinkingCloseTag is provided", () => {
+ expect(() => {
+ new MockVllm({
+ model: "test-model",
+ apiBase: "http://localhost:8000",
+ thinkingCloseTag: "",
+ });
+ }).toThrow(
+ "vLLM: Both thinkingOpenTag and thinkingCloseTag must be provided together",
+ );
+ });
+ });
});
diff --git a/core/package-lock.json b/core/package-lock.json
index 53a2e7f52b..eb21702ff4 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -270,6 +270,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.2.tgz",
"integrity": "sha512-08K9ou5VNbheZFxM5tDWoqjA3ImC50DiuuJ2tj1yEPRfkp8lLLg6XAaJ4On+a0yAXor/8ay5gHnAIshRM44Kpw==",
+ "peer": true,
"dependencies": {
"lodash": "^4.17.21",
"typical": "^7.1.1"
@@ -282,6 +283,7 @@
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
"integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -1322,7 +1324,6 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
"integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
- "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.0",
@@ -4471,7 +4472,6 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
"integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
- "peer": true,
"dependencies": {
"@octokit/auth-token": "^4.0.0",
"@octokit/graphql": "^7.1.0",
@@ -4616,7 +4616,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -4638,7 +4637,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz",
"integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==",
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=14"
},
@@ -4651,7 +4649,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz",
"integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/semantic-conventions": "1.28.0"
},
@@ -5171,7 +5168,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz",
"integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/core": "1.30.1",
"@opentelemetry/semantic-conventions": "1.28.0"
@@ -5197,7 +5193,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz",
"integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@opentelemetry/core": "1.30.1",
"@opentelemetry/resources": "1.30.1",
@@ -5224,7 +5219,6 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.36.0.tgz",
"integrity": "sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==",
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=14"
}
@@ -5635,7 +5629,8 @@
"node_modules/@rtsao/scc": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
- "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="
+ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==",
+ "peer": true
},
"node_modules/@sentry/babel-plugin-component-annotate": {
"version": "4.0.2",
@@ -6850,12 +6845,14 @@
"node_modules/@types/command-line-args": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz",
- "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA=="
+ "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==",
+ "peer": true
},
"node_modules/@types/command-line-usage": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.2.tgz",
- "integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg=="
+ "integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==",
+ "peer": true
},
"node_modules/@types/connect": {
"version": "3.4.38",
@@ -6971,7 +6968,8 @@
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "peer": true
},
"node_modules/@types/long": {
"version": "4.0.2",
@@ -7036,7 +7034,8 @@
"node_modules/@types/pad-left": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@types/pad-left/-/pad-left-2.1.1.tgz",
- "integrity": "sha512-Xd22WCRBydkGSApl5Bw0PhAOHKSVjNL3E3AwzKaps96IMraPqy5BvZIsBVK6JLwdybUzjHnuWVwpDd0JjTfHXA=="
+ "integrity": "sha512-Xd22WCRBydkGSApl5Bw0PhAOHKSVjNL3E3AwzKaps96IMraPqy5BvZIsBVK6JLwdybUzjHnuWVwpDd0JjTfHXA==",
+ "peer": true
},
"node_modules/@types/pg": {
"version": "8.11.10",
@@ -7245,7 +7244,6 @@
"integrity": "sha512-jCNyAuXx8dr5KJMkecGmZ8KI61KBUhkCob+SD+C+I5+Y1FWI2Y3QmY4/cxMCC5WAsZqoEtEETVhUiUMIGCf6Bw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.40.0",
"@typescript-eslint/types": "8.40.0",
@@ -7669,7 +7667,6 @@
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -7884,6 +7881,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
"integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "peer": true,
"engines": {
"node": ">=6"
}
@@ -7892,6 +7890,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
"integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.5",
"is-array-buffer": "^3.0.4"
@@ -7907,6 +7906,7 @@
"version": "3.1.8",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
"integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -7931,6 +7931,7 @@
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
"integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -7950,6 +7951,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
"integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7967,6 +7969,7 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
"integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -7984,6 +7987,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
"integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "peer": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"call-bind": "^1.0.5",
@@ -8060,6 +8064,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "peer": true,
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
@@ -8515,7 +8520,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001669",
"electron-to-chromium": "^1.5.41",
@@ -8821,6 +8825,7 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
"integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "peer": true,
"dependencies": {
"chalk": "^4.1.2"
},
@@ -9129,6 +9134,7 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
"integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+ "peer": true,
"dependencies": {
"array-back": "^3.1.0",
"find-replace": "^3.0.0",
@@ -9143,6 +9149,7 @@
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz",
"integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==",
+ "peer": true,
"dependencies": {
"array-back": "^6.2.2",
"chalk-template": "^0.4.0",
@@ -9157,6 +9164,7 @@
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
"integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -9165,6 +9173,7 @@
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
"integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -9432,6 +9441,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
"integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -9448,6 +9458,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
"integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -9464,6 +9475,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
"integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -9702,8 +9714,7 @@
"version": "0.0.1521046",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz",
"integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==",
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/diff": {
"version": "7.0.0",
@@ -10021,6 +10032,7 @@
"version": "1.23.5",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz",
"integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==",
+ "peer": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"arraybuffer.prototype.slice": "^1.0.3",
@@ -10129,6 +10141,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
"integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "peer": true,
"dependencies": {
"hasown": "^2.0.0"
}
@@ -10137,6 +10150,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
"integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "peer": true,
"dependencies": {
"is-callable": "^1.2.7",
"is-date-object": "^1.0.5",
@@ -10592,7 +10606,6 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -10677,6 +10690,7 @@
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
"integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "peer": true,
"dependencies": {
"debug": "^3.2.7",
"is-core-module": "^2.13.0",
@@ -10687,6 +10701,7 @@
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
@@ -10695,6 +10710,7 @@
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
"integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
+ "peer": true,
"dependencies": {
"debug": "^3.2.7"
},
@@ -10711,6 +10727,7 @@
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
@@ -10719,6 +10736,7 @@
"version": "2.31.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
"integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
+ "peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.8",
@@ -10752,6 +10770,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -10761,6 +10780,7 @@
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "peer": true,
"dependencies": {
"ms": "^2.1.1"
}
@@ -10769,6 +10789,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "peer": true,
"dependencies": {
"esutils": "^2.0.2"
},
@@ -10780,6 +10801,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -11391,6 +11413,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
"integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "peer": true,
"dependencies": {
"array-back": "^3.0.1"
},
@@ -11429,7 +11452,8 @@
"node_modules/flatbuffers": {
"version": "23.5.26",
"resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-23.5.26.tgz",
- "integrity": "sha512-vE+SI9vrJDwi1oETtTIFldC/o9GsVKRM+s6EL0nQgxXlYV1Vc4Tk30hj4xGICftInKQKj1F3up2n8UbIVobISQ=="
+ "integrity": "sha512-vE+SI9vrJDwi1oETtTIFldC/o9GsVKRM+s6EL0nQgxXlYV1Vc4Tk30hj4xGICftInKQKj1F3up2n8UbIVobISQ==",
+ "peer": true
},
"node_modules/flatted": {
"version": "3.3.2",
@@ -11464,6 +11488,7 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "peer": true,
"dependencies": {
"is-callable": "^1.1.3"
}
@@ -11608,6 +11633,7 @@
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
"integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -11625,6 +11651,7 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -11816,6 +11843,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
"integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.5",
"es-errors": "^1.3.0",
@@ -11926,6 +11954,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
"integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "peer": true,
"dependencies": {
"define-properties": "^1.2.1",
"gopd": "^1.0.1"
@@ -12114,6 +12143,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -12149,6 +12179,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
"integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "peer": true,
"dependencies": {
"dunder-proto": "^1.0.0"
},
@@ -12506,6 +12537,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
"integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "peer": true,
"dependencies": {
"es-errors": "^1.3.0",
"hasown": "^2.0.0",
@@ -12539,6 +12571,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
"integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.1"
@@ -12559,6 +12592,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
"integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -12573,6 +12607,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
"integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "peer": true,
"dependencies": {
"has-bigints": "^1.0.2"
},
@@ -12599,6 +12634,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz",
"integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"has-tostringtag": "^1.0.2"
@@ -12614,6 +12650,7 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -12639,6 +12676,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
"integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "peer": true,
"dependencies": {
"is-typed-array": "^1.1.13"
},
@@ -12653,6 +12691,7 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -12694,6 +12733,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz",
"integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7"
},
@@ -12725,6 +12765,7 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "peer": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -12765,6 +12806,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
"integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -12776,6 +12818,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
"integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -12795,6 +12838,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.0.tgz",
"integrity": "sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"has-tostringtag": "^1.0.2"
@@ -12833,6 +12877,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz",
"integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"gopd": "^1.1.0",
@@ -12850,6 +12895,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
"integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -12861,6 +12907,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
"integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7"
},
@@ -12886,6 +12933,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.0.tgz",
"integrity": "sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"has-tostringtag": "^1.0.2"
@@ -12901,6 +12949,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz",
"integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"has-symbols": "^1.0.3",
@@ -12917,6 +12966,7 @@
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
"integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "peer": true,
"dependencies": {
"which-typed-array": "^1.1.14"
},
@@ -12936,6 +12986,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
"integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
},
@@ -12947,6 +12998,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -12958,6 +13010,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
"integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"get-intrinsic": "^1.2.4"
@@ -12983,7 +13036,8 @@
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "peer": true
},
"node_modules/isexe": {
"version": "2.0.0",
@@ -13133,7 +13187,6 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
- "peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -14056,7 +14109,6 @@
"version": "24.1.3",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz",
"integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==",
- "peer": true,
"dependencies": {
"cssstyle": "^4.0.1",
"data-urls": "^5.0.0",
@@ -14116,6 +14168,7 @@
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz",
"integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==",
+ "peer": true,
"engines": {
"node": ">=0.8"
}
@@ -14371,7 +14424,8 @@
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "peer": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
@@ -15569,6 +15623,7 @@
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
"integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -15586,6 +15641,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
"integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -15599,6 +15655,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
"integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -15908,6 +15965,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz",
"integrity": "sha512-HJxs9K9AztdIQIAIa/OIazRAUW/L6B9hbQDxO4X07roW3eo9XqZc2ur9bn1StH9CnbbI9EgvejHQX7CBpCF1QA==",
+ "peer": true,
"dependencies": {
"repeat-string": "^1.5.4"
},
@@ -16086,7 +16144,6 @@
"version": "8.13.1",
"resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz",
"integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==",
- "peer": true,
"dependencies": {
"pg-connection-string": "^2.7.0",
"pg-pool": "^3.7.0",
@@ -16351,6 +16408,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
"integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "peer": true,
"engines": {
"node": ">= 0.4"
}
@@ -16803,8 +16861,7 @@
"node_modules/puppeteer-chromium-resolver/node_modules/devtools-protocol": {
"version": "0.0.1367902",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz",
- "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==",
- "peer": true
+ "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg=="
},
"node_modules/puppeteer-chromium-resolver/node_modules/puppeteer-core": {
"version": "23.10.2",
@@ -17021,6 +17078,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz",
"integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.8",
"define-properties": "^1.2.1",
@@ -17102,6 +17160,7 @@
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
"integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -17447,6 +17506,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
"integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"get-intrinsic": "^1.2.4",
@@ -17483,6 +17543,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
"integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.6",
"es-errors": "^1.3.0",
@@ -17612,6 +17673,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
"integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "peer": true,
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -18213,6 +18275,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz",
"integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==",
+ "peer": true,
"engines": {
"node": ">=10"
}
@@ -18282,6 +18345,7 @@
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
"integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -18299,6 +18363,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
"integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -18312,6 +18377,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
"integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"define-properties": "^1.2.1",
@@ -18436,6 +18502,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz",
"integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==",
+ "peer": true,
"dependencies": {
"@75lb/deep-merge": "^1.1.1",
"array-back": "^6.2.2",
@@ -18456,6 +18523,7 @@
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
"integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -18464,6 +18532,7 @@
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
"integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -18731,7 +18800,6 @@
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -18923,6 +18991,7 @@
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
"integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "peer": true,
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.2",
@@ -18934,6 +19003,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "peer": true,
"dependencies": {
"minimist": "^1.2.0"
},
@@ -18945,6 +19015,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "peer": true,
"engines": {
"node": ">=4"
}
@@ -19038,6 +19109,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
"integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -19051,6 +19123,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
"integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
@@ -19069,6 +19142,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz",
"integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==",
+ "peer": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
@@ -19089,6 +19163,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
"integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"for-each": "^0.3.3",
@@ -19114,7 +19189,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
"integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"devOptional": true,
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -19127,6 +19201,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
"integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
+ "peer": true,
"engines": {
"node": ">=8"
}
@@ -19147,6 +19222,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -19546,7 +19622,6 @@
"integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
@@ -19718,7 +19793,6 @@
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -19913,6 +19987,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz",
"integrity": "sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==",
+ "peer": true,
"dependencies": {
"is-bigint": "^1.1.0",
"is-boolean-object": "^1.2.0",
@@ -19931,6 +20006,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz",
"integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==",
+ "peer": true,
"dependencies": {
"call-bind": "^1.0.7",
"function.prototype.name": "^1.1.6",
@@ -19957,6 +20033,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
"integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "peer": true,
"dependencies": {
"is-map": "^2.0.3",
"is-set": "^2.0.3",
@@ -19974,6 +20051,7 @@
"version": "1.1.16",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
"integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
+ "peer": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
@@ -20199,6 +20277,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz",
"integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==",
+ "peer": true,
"engines": {
"node": ">=12.17"
}
@@ -20264,7 +20343,6 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -20335,7 +20413,6 @@
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
"integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
- "peer": true,
"bin": {
"yaml": "bin.mjs"
},
@@ -20393,7 +20470,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package-lock.json b/package-lock.json
index 095609e8f5..88c4caf915 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,7 @@
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"eslint-visitor-keys": "^3.4.3"
},
@@ -41,6 +42,7 @@
"integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
@@ -51,6 +53,7 @@
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
@@ -75,6 +78,7 @@
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -86,6 +90,7 @@
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -99,6 +104,7 @@
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
@@ -110,6 +116,7 @@
"deprecated": "Use @eslint/config-array instead",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
@@ -125,6 +132,7 @@
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -136,6 +144,7 @@
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -149,6 +158,7 @@
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"engines": {
"node": ">=12.22"
},
@@ -163,7 +173,8 @@
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"deprecated": "Use @eslint/object-schema instead",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "peer": true
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
@@ -370,7 +381,8 @@
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/acorn": {
"version": "8.15.0",
@@ -392,6 +404,7 @@
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
@@ -402,6 +415,7 @@
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -460,7 +474,8 @@
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
- "license": "Python-2.0"
+ "license": "Python-2.0",
+ "peer": true
},
"node_modules/array-buffer-byte-length": {
"version": "1.0.2",
@@ -695,6 +710,7 @@
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=6"
}
@@ -993,7 +1009,8 @@
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/define-data-property": {
"version": "1.1.4",
@@ -1037,6 +1054,7 @@
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"esutils": "^2.0.2"
},
@@ -1244,6 +1262,7 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=10"
},
@@ -1456,6 +1475,7 @@
"integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -1473,6 +1493,7 @@
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -1486,6 +1507,7 @@
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -1497,6 +1519,7 @@
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -1510,6 +1533,7 @@
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -1528,6 +1552,7 @@
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
"dev": true,
"license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -1541,6 +1566,7 @@
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -1554,6 +1580,7 @@
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"engines": {
"node": ">=4.0"
}
@@ -1604,7 +1631,8 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/fast-glob": {
"version": "3.3.3",
@@ -1639,14 +1667,16 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/fastq": {
"version": "1.19.1",
@@ -1664,6 +1694,7 @@
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -1690,6 +1721,7 @@
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
@@ -1707,6 +1739,7 @@
"integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"flatted": "^3.2.9",
"keyv": "^4.5.3",
@@ -1721,7 +1754,8 @@
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/for-each": {
"version": "0.3.5",
@@ -1744,7 +1778,8 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/function-bind": {
"version": "1.1.2",
@@ -1887,6 +1922,7 @@
"deprecated": "Glob versions prior to v9 are no longer supported",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -1908,6 +1944,7 @@
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -1921,6 +1958,7 @@
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -1932,6 +1970,7 @@
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -1945,6 +1984,7 @@
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -1990,7 +2030,8 @@
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/has-bigints": {
"version": "1.1.0",
@@ -2118,6 +2159,7 @@
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 4"
}
@@ -2128,6 +2170,7 @@
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -2145,6 +2188,7 @@
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.8.19"
}
@@ -2156,6 +2200,7 @@
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -2166,7 +2211,8 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/internal-slot": {
"version": "1.1.0",
@@ -2445,6 +2491,7 @@
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=8"
}
@@ -2627,6 +2674,7 @@
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"argparse": "^2.0.1"
},
@@ -2639,21 +2687,24 @@
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/json5": {
"version": "1.0.2",
@@ -2674,6 +2725,7 @@
"integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"json-buffer": "3.0.1"
}
@@ -2684,6 +2736,7 @@
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -2855,6 +2908,7 @@
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"p-locate": "^5.0.0"
},
@@ -2877,7 +2931,8 @@
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/log-update": {
"version": "6.1.0",
@@ -3120,7 +3175,8 @@
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/npm-run-path": {
"version": "5.3.0",
@@ -3254,6 +3310,7 @@
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"wrappy": "1"
}
@@ -3280,6 +3337,7 @@
"integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
@@ -3316,6 +3374,7 @@
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"yocto-queue": "^0.1.0"
},
@@ -3332,6 +3391,7 @@
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"p-limit": "^3.0.2"
},
@@ -3348,6 +3408,7 @@
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"callsites": "^3.0.0"
},
@@ -3361,6 +3422,7 @@
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=8"
}
@@ -3371,6 +3433,7 @@
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -3434,6 +3497,7 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 0.8.0"
}
@@ -3444,7 +3508,6 @@
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -3540,6 +3603,7 @@
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=6"
}
@@ -3646,6 +3710,7 @@
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=4"
}
@@ -3708,6 +3773,7 @@
"deprecated": "Rimraf versions prior to v4 are no longer supported",
"dev": true,
"license": "ISC",
+ "peer": true,
"dependencies": {
"glob": "^7.1.3"
},
@@ -4176,6 +4242,7 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=8"
},
@@ -4217,7 +4284,8 @@
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/to-regex-range": {
"version": "5.0.1",
@@ -4280,6 +4348,7 @@
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -4293,6 +4362,7 @@
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
+ "peer": true,
"engines": {
"node": ">=10"
},
@@ -4384,7 +4454,6 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -4418,6 +4487,7 @@
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"punycode": "^2.1.0"
}
@@ -4533,6 +4603,7 @@
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4560,7 +4631,8 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true,
- "license": "ISC"
+ "license": "ISC",
+ "peer": true
},
"node_modules/y18n": {
"version": "5.0.8",
@@ -4620,6 +4692,7 @@
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=10"
},