From d7d2afb87d9559da94e5e010fc94b54dd8556c5f Mon Sep 17 00:00:00 2001 From: Tasbi Tasbi Date: Thu, 28 Nov 2024 06:52:00 +0000 Subject: [PATCH 1/2] Added Test-cases InputValidator Plugin --- __tests__/core/useRcbPlugin.test.ts | 189 + __tests__/utils/getPromptStyles.test.ts | 141 + __tests__/utils/getValidator.test.ts | 179 + __tests__/utils/mergePluginConfig.test.ts | 61 + __tests__/utils/validateFile.test.ts | 70 + coverage/clover.xml | 139 + coverage/coverage-final.json | 7 + coverage/lcov-report/base.css | 224 + coverage/lcov-report/block-navigation.js | 87 + .../constants/DefaultPluginConfig.ts.html | 154 + coverage/lcov-report/constants/index.html | 116 + coverage/lcov-report/core/index.html | 116 + .../lcov-report/core/useRcbPlugin.ts.html | 640 +++ coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes coverage/lcov-report/index.html | 146 + coverage/lcov-report/prettify.css | 1 + coverage/lcov-report/prettify.js | 2 + coverage/lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/lcov-report/sorter.js | 196 + .../lcov-report/utils/getPromptStyles.ts.html | 220 + .../lcov-report/utils/getValidator.ts.html | 190 + coverage/lcov-report/utils/index.html | 161 + .../utils/mergePluginConfig.ts.html | 169 + .../lcov-report/utils/validateFile.ts.html | 247 + coverage/lcov.info | 262 + jest.config.js | 13 + package-lock.json | 4293 ++++++++++++++++- package.json | 8 + setup.jest.js | 10 + 29 files changed, 7811 insertions(+), 230 deletions(-) create mode 100644 __tests__/core/useRcbPlugin.test.ts create mode 100644 __tests__/utils/getPromptStyles.test.ts create mode 100644 __tests__/utils/getValidator.test.ts create mode 100644 __tests__/utils/mergePluginConfig.test.ts create mode 100644 __tests__/utils/validateFile.test.ts create mode 100644 coverage/clover.xml create mode 100644 coverage/coverage-final.json create mode 100644 coverage/lcov-report/base.css create mode 100644 coverage/lcov-report/block-navigation.js create mode 100644 coverage/lcov-report/constants/DefaultPluginConfig.ts.html create mode 100644 coverage/lcov-report/constants/index.html create mode 100644 coverage/lcov-report/core/index.html create mode 100644 coverage/lcov-report/core/useRcbPlugin.ts.html create mode 100644 coverage/lcov-report/favicon.png create mode 100644 coverage/lcov-report/index.html create mode 100644 coverage/lcov-report/prettify.css create mode 100644 coverage/lcov-report/prettify.js create mode 100644 coverage/lcov-report/sort-arrow-sprite.png create mode 100644 coverage/lcov-report/sorter.js create mode 100644 coverage/lcov-report/utils/getPromptStyles.ts.html create mode 100644 coverage/lcov-report/utils/getValidator.ts.html create mode 100644 coverage/lcov-report/utils/index.html create mode 100644 coverage/lcov-report/utils/mergePluginConfig.ts.html create mode 100644 coverage/lcov-report/utils/validateFile.ts.html create mode 100644 coverage/lcov.info create mode 100644 jest.config.js create mode 100644 setup.jest.js diff --git a/__tests__/core/useRcbPlugin.test.ts b/__tests__/core/useRcbPlugin.test.ts new file mode 100644 index 0000000..d9a4500 --- /dev/null +++ b/__tests__/core/useRcbPlugin.test.ts @@ -0,0 +1,189 @@ +import { renderHook, fireEvent } from "@testing-library/react"; +import { validateFile } from "../../src/utils/validateFile"; +import { getValidator } from "../../src/utils/getValidator"; +import useRcbPlugin from "../../src/core/useRcbPlugin"; + +const mockReplaceStyles = jest.fn(); +// Mock react-chatbotify dependencies +jest.mock("react-chatbotify", () => ({ + useToasts: jest.fn(() => ({ showToast: mockShowToast })), + useBotId: jest.fn(() => ({ getBotId: jest.fn().mockReturnValue("bot-id") })), + useFlow: jest.fn(() => ({ getFlow: jest.fn() })), + useStyles: jest.fn(() => ({ + styles: {}, + updateStyles: jest.fn(), + replaceStyles: mockReplaceStyles, + })), +})); + +jest.mock("../../src/utils/validateFile", () => ({ + validateFile: jest.fn(), +})); + +jest.mock("../../src/utils/getValidator", () => ({ + getValidator: jest.fn(), +})); + +const mockedValidateFile = validateFile as jest.Mock; +const mockedGetValidator = getValidator as jest.Mock; + + +mockedValidateFile.mockReturnValue({ + success: false, + promptContent: "Invalid file type", +}); + +mockedGetValidator.mockReturnValue(mockedValidateFile); + +const mockShowToast = jest.fn(); + +describe("useRcbPlugin", () => { + beforeEach(() => { + jest.clearAllMocks(); // Clear mocks before each test + }); + + test("handles file upload and displays error for invalid file", () => { + const mockFile = new File(["invalid content"], "test.txt", { type: "text/plain" }); + + // Mock validateFile behavior + mockedValidateFile.mockReturnValue({ + success: false, + promptContent: "Invalid file type", + }); + + // Render the hook + renderHook(() => useRcbPlugin()); + + // Simulate file upload event + const uploadEvent = new Event("rcb-user-upload-file"); + (uploadEvent as any).data = { files: [mockFile] }; + fireEvent(window, uploadEvent); + + // Debugging output + console.log("validateFile calls:", mockedValidateFile.mock.calls); + console.log("showToast calls:", mockShowToast.mock.calls); + + // Assertions + expect(mockedValidateFile).toHaveBeenCalledWith(mockFile); + expect(mockShowToast).toHaveBeenCalledWith("Invalid file type", 3000); + }); + + test("handles file upload and does nothing for valid file", () => { + const mockFile = new File(["valid content"], "test.png", { type: "image/png" }); + + // Mock validateFile to return success + (validateFile as jest.Mock).mockReturnValue({ + success: true, + }); + + // Mock getValidator to return the validateFile function + (getValidator as jest.Mock).mockReturnValue(validateFile); + + renderHook(() => useRcbPlugin()); + + // Simulate file upload event + const uploadEvent = new Event("rcb-user-upload-file"); + (uploadEvent as any).data = { files: [mockFile] }; // Attach mock data + fireEvent(window, uploadEvent); + + // Assertions + expect(validateFile).toHaveBeenCalledWith(mockFile); + expect(mockShowToast).not.toHaveBeenCalled(); // No toast for valid file + }); + + test("handles text input and displays error for invalid input", () => { + const mockValidator = jest.fn().mockReturnValue({ + success: false, + promptContent: "Invalid input", + }); + + // Mock getValidator to return the text validator + mockedGetValidator.mockReturnValue(mockValidator); + + renderHook(() => useRcbPlugin()); + + // Simulate text input event + const textEvent = new Event("rcb-user-submit-text"); + (textEvent as any).data = { inputText: "invalid text" }; + fireEvent(window, textEvent); + + // Assertions + expect(mockValidator).toHaveBeenCalledWith("invalid text"); + expect(mockShowToast).toHaveBeenCalledWith("Invalid input", 3000); + }); + + test("handles text input and does nothing for valid input", () => { + const mockValidator = jest.fn().mockReturnValue({ success: true }); + + // Mock getValidator to return the text validator + mockedGetValidator.mockReturnValue(mockValidator); + + renderHook(() => useRcbPlugin()); + + // Simulate text input event + const textEvent = new Event("rcb-user-submit-text"); + (textEvent as any).data = { inputText: "valid input" }; + fireEvent(window, textEvent); + + // Assertions + expect(mockValidator).toHaveBeenCalledWith("valid input"); + expect(mockShowToast).not.toHaveBeenCalled(); // No toast for valid input + }); + + test("handles empty text input validation", () => { + const mockValidator = jest.fn().mockReturnValue({ + success: false, + promptContent: "Input cannot be empty", + }); + + mockedGetValidator.mockReturnValue(mockValidator); + + renderHook(() => useRcbPlugin()); + + const textEvent = new Event("rcb-user-submit-text"); + (textEvent as any).data = { inputText: "" }; + fireEvent(window, textEvent); + + // Assertions + expect(mockValidator).toHaveBeenCalledWith(""); + expect(mockShowToast).toHaveBeenCalledWith("Input cannot be empty", 3000); + }); + + test("handles null file upload", () => { + renderHook(() => useRcbPlugin()); + + const uploadEvent = new Event("rcb-user-upload-file"); + (uploadEvent as any).data = { files: null }; + fireEvent(window, uploadEvent); + + // Assertions + expect(mockedValidateFile).not.toHaveBeenCalled(); + expect(mockShowToast).not.toHaveBeenCalled(); + }); + + test("handles empty file upload", () => { + renderHook(() => useRcbPlugin()); + + // Simulate empty file upload event + const uploadEvent = new Event("rcb-user-upload-file"); + (uploadEvent as any).data = { files: [] }; + fireEvent(window, uploadEvent); + + // Assertions + expect(mockedValidateFile).not.toHaveBeenCalled(); + expect(mockShowToast).not.toHaveBeenCalled(); // No toast for empty file list + }); + test("restores styles after all toasts are dismissed", () => { + renderHook(() => useRcbPlugin()); + + // Simulate toast dismissal event + const dismissEvent = new Event("rcb-dismiss-toast"); + fireEvent(window, dismissEvent); + + // Verify that styles are restored + setTimeout(() => { + expect(mockReplaceStyles).toHaveBeenCalled(); + }, 0); + }); + +}); diff --git a/__tests__/utils/getPromptStyles.test.ts b/__tests__/utils/getPromptStyles.test.ts new file mode 100644 index 0000000..b54ccd5 --- /dev/null +++ b/__tests__/utils/getPromptStyles.test.ts @@ -0,0 +1,141 @@ +import { getPromptStyles } from "../../src/utils/getPromptStyles"; +import { PluginConfig } from "../../src/types/PluginConfig"; + +test("applies error styles when promptType is 'error'", () => { + const mockPluginConfig: PluginConfig = { + promptBaseColors: { + error: "red", + }, + textAreaHighlightColors: { + error: "red", + }, + }; + + const validationResult = { + success: false, + promptType: "error", + highlightTextArea: true, + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + // Debugging output to verify the structure of the result + console.log("Result from getPromptStyles:", result); + + expect(result).toEqual( + expect.objectContaining({ + toastPromptStyle: expect.objectContaining({ + color: "red", + borderColor: "red", + }), + chatInputAreaStyle: expect.objectContaining({ + boxShadow: "red 0px 0px 5px", + }), + }) + ); +}); + +test("applies default styles when promptType is not provided", () => { + const mockPluginConfig: PluginConfig = { + promptBaseColors: { + info: "blue", + }, + }; + + const validationResult = { + success: true, // No promptType provided + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + expect(result).toEqual( + expect.objectContaining({ + toastPromptStyle: expect.objectContaining({ + color: "blue", + borderColor: "blue", + }), + }) + ); +}); + +test("applies advancedStyles when available for the promptType", () => { + const mockPluginConfig: PluginConfig = { + advancedStyles: { + error: { + toastPromptStyle: { + backgroundColor: "darkred", + }, + }, + }, + }; + + const validationResult = { + success: false, + promptType: "error", + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + expect(result).toEqual( + expect.objectContaining({ + toastPromptStyle: { + backgroundColor: "darkred", + }, + }) + ); +}); + +test("applies hovered colors when promptHoveredColors is provided", () => { + const mockPluginConfig: PluginConfig = { + promptHoveredColors: { + success: "green", + }, + }; + + const validationResult = { + success: true, + promptType: "success", + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + expect(result).toEqual( + expect.objectContaining({ + toastPromptHoveredStyle: { + color: "green", + borderColor: "green", + }, + }) + ); +}); + +test("does not apply chat input highlight when highlightTextArea is false", () => { + const mockPluginConfig: PluginConfig = { + textAreaHighlightColors: { + error: "red", + }, + }; + + const validationResult = { + success: false, + promptType: "error", + highlightTextArea: false, + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + expect(result.chatInputAreaStyle).toBeUndefined(); +}); +test("returns an empty object when pluginConfig is empty", () => { + const mockPluginConfig: PluginConfig = {}; + + const validationResult = { + success: true, + promptType: "success", + }; + + const result = getPromptStyles(validationResult, mockPluginConfig); + + expect(result).toEqual({}); +}); + diff --git a/__tests__/utils/getValidator.test.ts b/__tests__/utils/getValidator.test.ts new file mode 100644 index 0000000..85145b8 --- /dev/null +++ b/__tests__/utils/getValidator.test.ts @@ -0,0 +1,179 @@ +import { getValidator } from "../../src/utils/getValidator"; +import { Flow, RcbUserUploadFileEvent } from "react-chatbotify"; +import { ValidationResult } from "../../src/types/ValidationResult"; +import { InputValidatorBlock } from "../../src/types/InputValidatorBlock"; + +describe("getValidator - Valid Cases", () => { + test("retrieves validateFileInput when provided a valid event and flow", () => { + const mockValidationResult: ValidationResult = { success: true }; + const mockValidateFileInput = jest.fn(() => mockValidationResult); + + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: mockValidateFileInput, + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + // Create a proper CustomEvent mock with prevPath + const eventWithPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: currBotId }, + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithPath, currBotId, flow, "validateFileInput"); + expect(validator).toBe(mockValidateFileInput); + + // Call the validator to ensure it behaves correctly + const mockFile = new File(["content"], "test.png", { type: "image/png" }); + const result = validator?.(mockFile); + expect(result).toEqual(mockValidationResult); + }); + + test("returns undefined when currPath is missing in the event", () => { + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: jest.fn(), + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + // Event with no currPath + const eventWithoutPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: null, prevPath: "intro", botId: currBotId }, // Missing currPath + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithoutPath, currBotId, flow, "validateFileInput"); + + // Assert that validator is undefined + expect(validator).toBeUndefined(); + }); + test("returns undefined when botId does not match", () => { + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: jest.fn(), + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + // Event with mismatched botId + const eventWithWrongBotId = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: "wrong-bot-id" }, // Mismatched botId + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithWrongBotId, currBotId, flow, "validateFileInput"); + + // Assert that validator is undefined + expect(validator).toBeUndefined(); + }); + test("returns undefined when validator does not exist in the flow block", () => { + const flow: Flow = { + start: { + message: "Upload a file", + // No validateFileInput function here + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + const eventWithPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: currBotId }, + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithPath, currBotId, flow, "validateFileInput"); + + // Assert that validator is undefined + expect(validator).toBeUndefined(); + }); + test("returns undefined when validator is not a function", () => { + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: "not-a-function", // Invalid validator type + } as unknown as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + const eventWithPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: currBotId }, + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithPath, currBotId, flow, "validateFileInput"); + + // Assert that validator is undefined + expect(validator).toBeUndefined(); + }); + test("returns undefined when event is null or undefined", () => { + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: jest.fn(), + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + // Simulate null event + let validator; + try { + validator = getValidator(null as any, currBotId, flow, "validateFileInput"); + } catch (error) { + validator = undefined; // Set to undefined if an error occurs + } + expect(validator).toBeUndefined(); + + // Simulate undefined event + try { + validator = getValidator(undefined as any, currBotId, flow, "validateFileInput"); + } catch (error) { + validator = undefined; // Set to undefined if an error occurs + } + expect(validator).toBeUndefined(); + }); + test("defaults to validateTextInput when validatorType is not provided", () => { + const mockValidationResult: ValidationResult = { success: true }; + const mockValidateTextInput = jest.fn(() => mockValidationResult); + + const flow: Flow = { + start: { + message: "Enter your input", + validateTextInput: mockValidateTextInput, + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + const eventWithPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: currBotId }, + }) as RcbUserUploadFileEvent; + + // Call getValidator without specifying validatorType + const validator = getValidator(eventWithPath, currBotId, flow); + expect(validator).toBe(mockValidateTextInput); + + // Call the validator to ensure it behaves correctly + const result = validator?.("test input"); + expect(result).toEqual(mockValidationResult); + }); + test("returns undefined when flow object is empty", () => { + const flow: Flow = {}; // Empty flow object + const currBotId = "bot-id"; + + const eventWithPath = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: currBotId }, + }) as RcbUserUploadFileEvent; + + const validator = getValidator(eventWithPath, currBotId, flow, "validateFileInput"); + expect(validator).toBeUndefined(); + }); + + + +}); + diff --git a/__tests__/utils/mergePluginConfig.test.ts b/__tests__/utils/mergePluginConfig.test.ts new file mode 100644 index 0000000..8b5a6fd --- /dev/null +++ b/__tests__/utils/mergePluginConfig.test.ts @@ -0,0 +1,61 @@ +import { mergePluginConfig } from "../../src/utils/mergePluginConfig"; +import { DefaultPluginConfig } from "../../src/constants/DefaultPluginConfig"; + +test("returns default configuration when no pluginConfig is provided", () => { + const result = mergePluginConfig(); + expect(result).toEqual(DefaultPluginConfig); +}); + +test("merges user configuration with default configuration", () => { + const userConfig = { + promptBaseColors: { + success: "green", + }, + textAreaHighlightColors: { + error: "darkred", + }, + }; + + const result = mergePluginConfig(userConfig); + + expect(result.promptBaseColors).toEqual({ + ...DefaultPluginConfig.promptBaseColors, + success: "green", // Overridden value + }); + + expect(result.textAreaHighlightColors).toEqual({ + ...DefaultPluginConfig.textAreaHighlightColors, + error: "darkred", // Overridden value + }); + + // Ensure other configurations are not affected + expect(result.promptHoveredColors).toEqual(DefaultPluginConfig.promptHoveredColors); +}); + +test("returns default configuration when user configuration is empty", () => { + const userConfig = {}; + + const result = mergePluginConfig(userConfig); + + expect(result).toEqual(DefaultPluginConfig); +}); + +test("preserves default values for properties not specified in user configuration", () => { + const userConfig = { + promptBaseColors: { + error: "purple", + }, + }; + + const result = mergePluginConfig(userConfig); + + // Only "error" in promptBaseColors is overridden + expect(result.promptBaseColors).toEqual({ + ...DefaultPluginConfig.promptBaseColors, + error: "purple", + }); + + // Other properties remain unchanged + expect(result.promptHoveredColors).toEqual(DefaultPluginConfig.promptHoveredColors); + expect(result.textAreaHighlightColors).toEqual(DefaultPluginConfig.textAreaHighlightColors); +}); diff --git a/__tests__/utils/validateFile.test.ts b/__tests__/utils/validateFile.test.ts new file mode 100644 index 0000000..ccc4340 --- /dev/null +++ b/__tests__/utils/validateFile.test.ts @@ -0,0 +1,70 @@ +import { validateFile } from "../../src/utils/validateFile"; +import { ValidationResult } from "../../src/types/ValidationResult"; + +describe("validateFile", () => { + test("returns error when no file is provided", () => { + const result: ValidationResult = validateFile(); + + expect(result).toEqual({ + success: false, + promptContent: "No files uploaded.", + promptDuration: 3000, + promptType: "error", + }); + }); + + test("returns error when an empty file is provided", () => { + const mockFile = new File([""], "emptyFile.png", { type: "image/png" }); // Empty content + const result: ValidationResult = validateFile(mockFile); + + expect(result).toEqual({ + success: false, + promptContent: 'The file "emptyFile.png" is empty. Please upload a valid file.', + promptDuration: 3000, + promptType: "error", + }); + }); + + test("returns error for invalid file type", () => { + const mockFile = new File(["content"], "invalidFile.txt", { type: "text/plain" }); + const result: ValidationResult = validateFile(mockFile); + + expect(result).toEqual({ + success: false, + promptContent: 'The file "invalidFile.txt" is not a valid type. Only JPEG or PNG files are allowed.', + promptType: "error", + }); + }); + + test("returns success for a valid file", () => { + const mockFile = new File(["valid content"], "validFile.png", { type: "image/png" }); + const result: ValidationResult = validateFile(mockFile); + + expect(result).toEqual({ + success: true, + }); + }); + + test("returns error for file exceeding the maximum size", () => { + const largeFile = new File(["a".repeat(5 * 1024 * 1024 + 1)], "largeFile.png", { + type: "image/png", + }); + const result: ValidationResult = validateFile(largeFile); + + expect(result).toEqual({ + success: false, + promptContent: 'The file "largeFile.png" exceeds the 5MB size limit.', + promptType: "error", + }); + }); + + test("returns error for non-file inputs", () => { + const result: ValidationResult = validateFile("not a file" as unknown as File); + + expect(result).toEqual({ + success: false, + promptContent: 'The file "undefined" is not a valid type. Only JPEG or PNG files are allowed.', + promptType: "error", + }); + }); +}); diff --git a/coverage/clover.xml b/coverage/clover.xml new file mode 100644 index 0000000..e272841 --- /dev/null +++ b/coverage/clover.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json new file mode 100644 index 0000000..e2a7d7b --- /dev/null +++ b/coverage/coverage-final.json @@ -0,0 +1,7 @@ +{"/workspaces/input-validator/src/constants/DefaultPluginConfig.ts": {"path":"/workspaces/input-validator/src/constants/DefaultPluginConfig.ts","statementMap":{"0":{"start":{"line":4,"column":13},"end":{"line":24,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2},"f":{},"b":{}} +,"/workspaces/input-validator/src/core/useRcbPlugin.ts": {"path":"/workspaces/input-validator/src/core/useRcbPlugin.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":52}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":63}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":59}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":53}},"5":{"start":{"line":23,"column":21},"end":{"line":183,"column":1}},"6":{"start":{"line":24,"column":26},"end":{"line":24,"column":37}},"7":{"start":{"line":25,"column":25},"end":{"line":25,"column":35}},"8":{"start":{"line":26,"column":24},"end":{"line":26,"column":33}},"9":{"start":{"line":27,"column":52},"end":{"line":27,"column":63}},"10":{"start":{"line":29,"column":31},"end":{"line":29,"column":62}},"11":{"start":{"line":30,"column":50},"end":{"line":30,"column":69}},"12":{"start":{"line":31,"column":27},"end":{"line":31,"column":45}},"13":{"start":{"line":33,"column":4},"end":{"line":155,"column":7}},"14":{"start":{"line":39,"column":37},"end":{"line":86,"column":9}},"15":{"start":{"line":40,"column":29},"end":{"line":40,"column":60}},"16":{"start":{"line":43,"column":30},"end":{"line":47,"column":null}},"17":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"18":{"start":{"line":50,"column":16},"end":{"line":50,"column":23}},"19":{"start":{"line":54,"column":37},"end":{"line":55,"column":null}},"20":{"start":{"line":57,"column":12},"end":{"line":59,"column":13}},"21":{"start":{"line":58,"column":16},"end":{"line":58,"column":39}},"22":{"start":{"line":62,"column":12},"end":{"line":64,"column":13}},"23":{"start":{"line":63,"column":16},"end":{"line":63,"column":23}},"24":{"start":{"line":67,"column":12},"end":{"line":69,"column":13}},"25":{"start":{"line":68,"column":16},"end":{"line":68,"column":65}},"26":{"start":{"line":70,"column":33},"end":{"line":72,"column":null}},"27":{"start":{"line":76,"column":12},"end":{"line":76,"column":39}},"28":{"start":{"line":79,"column":12},"end":{"line":82,"column":14}},"29":{"start":{"line":85,"column":12},"end":{"line":85,"column":51}},"30":{"start":{"line":85,"column":41},"end":{"line":85,"column":49}},"31":{"start":{"line":88,"column":37},"end":{"line":125,"column":9}},"32":{"start":{"line":89,"column":29},"end":{"line":89,"column":60}},"33":{"start":{"line":90,"column":43},"end":{"line":90,"column":68}},"34":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"35":{"start":{"line":93,"column":16},"end":{"line":93,"column":51}},"36":{"start":{"line":94,"column":16},"end":{"line":94,"column":39}},"37":{"start":{"line":95,"column":16},"end":{"line":95,"column":23}},"38":{"start":{"line":98,"column":30},"end":{"line":102,"column":null}},"39":{"start":{"line":105,"column":12},"end":{"line":108,"column":13}},"40":{"start":{"line":106,"column":16},"end":{"line":106,"column":69}},"41":{"start":{"line":107,"column":16},"end":{"line":107,"column":23}},"42":{"start":{"line":110,"column":37},"end":{"line":110,"column":52}},"43":{"start":{"line":112,"column":12},"end":{"line":122,"column":13}},"44":{"start":{"line":113,"column":16},"end":{"line":113,"column":70}},"45":{"start":{"line":114,"column":16},"end":{"line":119,"column":17}},"46":{"start":{"line":115,"column":20},"end":{"line":118,"column":22}},"47":{"start":{"line":120,"column":16},"end":{"line":120,"column":39}},"48":{"start":{"line":121,"column":16},"end":{"line":121,"column":23}},"49":{"start":{"line":124,"column":12},"end":{"line":124,"column":68}},"50":{"start":{"line":132,"column":35},"end":{"line":134,"column":9}},"51":{"start":{"line":133,"column":12},"end":{"line":133,"column":51}},"52":{"start":{"line":133,"column":41},"end":{"line":133,"column":49}},"53":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"54":{"start":{"line":138,"column":8},"end":{"line":138,"column":78}},"55":{"start":{"line":139,"column":8},"end":{"line":139,"column":73}},"56":{"start":{"line":141,"column":8},"end":{"line":146,"column":10}},"57":{"start":{"line":143,"column":12},"end":{"line":143,"column":85}},"58":{"start":{"line":144,"column":12},"end":{"line":144,"column":85}},"59":{"start":{"line":145,"column":12},"end":{"line":145,"column":80}},"60":{"start":{"line":158,"column":4},"end":{"line":164,"column":41}},"61":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"62":{"start":{"line":160,"column":12},"end":{"line":162,"column":15}},"63":{"start":{"line":161,"column":16},"end":{"line":161,"column":54}},"64":{"start":{"line":167,"column":47},"end":{"line":169,"column":6}},"65":{"start":{"line":172,"column":4},"end":{"line":180,"column":5}},"66":{"start":{"line":173,"column":8},"end":{"line":179,"column":10}},"67":{"start":{"line":182,"column":4},"end":{"line":182,"column":26}},"68":{"start":{"line":185,"column":0},"end":{"line":185,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":23,"column":21},"end":{"line":23,"column":22}},"loc":{"start":{"line":23,"column":53},"end":{"line":183,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":33,"column":14},"end":{"line":33,"column":17}},"loc":{"start":{"line":33,"column":19},"end":{"line":147,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":39,"column":37},"end":{"line":39,"column":38}},"loc":{"start":{"line":39,"column":60},"end":{"line":86,"column":9}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":85,"column":31},"end":{"line":85,"column":32}},"loc":{"start":{"line":85,"column":41},"end":{"line":85,"column":49}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":88,"column":37},"end":{"line":88,"column":38}},"loc":{"start":{"line":88,"column":60},"end":{"line":125,"column":9}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":132,"column":35},"end":{"line":132,"column":44}},"loc":{"start":{"line":132,"column":46},"end":{"line":134,"column":9}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":133,"column":31},"end":{"line":133,"column":32}},"loc":{"start":{"line":133,"column":41},"end":{"line":133,"column":49}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":141,"column":15},"end":{"line":141,"column":18}},"loc":{"start":{"line":141,"column":20},"end":{"line":146,"column":9}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":158,"column":14},"end":{"line":158,"column":17}},"loc":{"start":{"line":158,"column":19},"end":{"line":164,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":160,"column":23},"end":{"line":160,"column":26}},"loc":{"start":{"line":160,"column":28},"end":{"line":162,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"type":"if","locations":[{"start":{"line":49,"column":12},"end":{"line":51,"column":13}}]},"1":{"loc":{"start":{"line":57,"column":12},"end":{"line":59,"column":13}},"type":"if","locations":[{"start":{"line":57,"column":12},"end":{"line":59,"column":13}}]},"2":{"loc":{"start":{"line":57,"column":17},"end":{"line":57,"column":42}},"type":"cond-expr","locations":[{"start":{"line":57,"column":33},"end":{"line":57,"column":35}},{"start":{"line":57,"column":17},"end":{"line":57,"column":42}}]},"3":{"loc":{"start":{"line":57,"column":17},"end":{"line":57,"column":35}},"type":"binary-expr","locations":[{"start":{"line":57,"column":17},"end":{"line":57,"column":35}},{"start":{"line":57,"column":17},"end":{"line":57,"column":35}}]},"4":{"loc":{"start":{"line":62,"column":12},"end":{"line":64,"column":13}},"type":"if","locations":[{"start":{"line":62,"column":12},"end":{"line":64,"column":13}}]},"5":{"loc":{"start":{"line":67,"column":12},"end":{"line":69,"column":13}},"type":"if","locations":[{"start":{"line":67,"column":12},"end":{"line":69,"column":13}}]},"6":{"loc":{"start":{"line":81,"column":16},"end":{"line":81,"column":55}},"type":"cond-expr","locations":[{"start":{"line":81,"column":47},"end":{"line":81,"column":51}},{"start":{"line":81,"column":51},"end":{"line":81,"column":55}}]},"7":{"loc":{"start":{"line":81,"column":16},"end":{"line":81,"column":51}},"type":"binary-expr","locations":[{"start":{"line":81,"column":16},"end":{"line":81,"column":51}},{"start":{"line":81,"column":47},"end":{"line":81,"column":51}}]},"8":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":68}},"type":"cond-expr","locations":[{"start":{"line":90,"column":63},"end":{"line":90,"column":66}},{"start":{"line":90,"column":63},"end":{"line":90,"column":68}}]},"9":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":66}},"type":"binary-expr","locations":[{"start":{"line":90,"column":43},"end":{"line":90,"column":66}},{"start":{"line":90,"column":63},"end":{"line":90,"column":66}}]},"10":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":63}},"type":"cond-expr","locations":[{"start":{"line":90,"column":56},"end":{"line":90,"column":58}},{"start":{"line":90,"column":56},"end":{"line":90,"column":63}}]},"11":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":58}},"type":"binary-expr","locations":[{"start":{"line":90,"column":43},"end":{"line":90,"column":58}},{"start":{"line":90,"column":56},"end":{"line":90,"column":58}}]},"12":{"loc":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"type":"if","locations":[{"start":{"line":92,"column":12},"end":{"line":96,"column":13}}]},"13":{"loc":{"start":{"line":105,"column":12},"end":{"line":108,"column":13}},"type":"if","locations":[{"start":{"line":105,"column":12},"end":{"line":108,"column":13}}]},"14":{"loc":{"start":{"line":112,"column":12},"end":{"line":122,"column":13}},"type":"if","locations":[{"start":{"line":112,"column":12},"end":{"line":122,"column":13}}]},"15":{"loc":{"start":{"line":114,"column":16},"end":{"line":119,"column":17}},"type":"if","locations":[{"start":{"line":114,"column":16},"end":{"line":119,"column":17}}]},"16":{"loc":{"start":{"line":117,"column":24},"end":{"line":117,"column":63}},"type":"cond-expr","locations":[{"start":{"line":117,"column":55},"end":{"line":117,"column":59}},{"start":{"line":117,"column":59},"end":{"line":117,"column":63}}]},"17":{"loc":{"start":{"line":117,"column":24},"end":{"line":117,"column":59}},"type":"binary-expr","locations":[{"start":{"line":117,"column":24},"end":{"line":117,"column":59}},{"start":{"line":117,"column":55},"end":{"line":117,"column":59}}]},"18":{"loc":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"type":"if","locations":[{"start":{"line":159,"column":8},"end":{"line":163,"column":9}}]},"19":{"loc":{"start":{"line":172,"column":4},"end":{"line":180,"column":5}},"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":180,"column":5}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":11,"7":11,"8":11,"9":11,"10":11,"11":11,"12":11,"13":11,"14":11,"15":3,"16":3,"17":3,"18":0,"19":3,"20":3,"21":2,"22":3,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":11,"32":4,"33":4,"34":4,"35":2,"36":2,"37":2,"38":2,"39":2,"40":0,"41":0,"42":2,"43":2,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":11,"51":1,"52":1,"53":11,"54":11,"55":11,"56":11,"57":11,"58":11,"59":11,"60":11,"61":11,"62":8,"63":0,"64":11,"65":11,"66":11,"67":11,"68":1},"f":{"0":11,"1":11,"2":3,"3":2,"4":4,"5":1,"6":1,"7":11,"8":11,"9":0},"b":{"0":[0],"1":[2],"2":[0,3],"3":[3,3],"4":[1],"5":[2],"6":[0,2],"7":[2,2],"8":[1,3],"9":[4,3],"10":[0,4],"11":[4,4],"12":[2],"13":[0],"14":[1],"15":[1],"16":[0,1],"17":[1,1],"18":[8],"19":[11]}} +,"/workspaces/input-validator/src/utils/getPromptStyles.ts": {"path":"/workspaces/input-validator/src/utils/getPromptStyles.ts","statementMap":{"0":{"start":{"line":11,"column":31},"end":{"line":45,"column":1}},"1":{"start":{"line":15,"column":31},"end":{"line":15,"column":68}},"2":{"start":{"line":16,"column":31},"end":{"line":16,"column":33}},"3":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"4":{"start":{"line":19,"column":8},"end":{"line":19,"column":63}},"5":{"start":{"line":22,"column":4},"end":{"line":27,"column":5}},"6":{"start":{"line":23,"column":8},"end":{"line":26,"column":10}},"7":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"8":{"start":{"line":30,"column":8},"end":{"line":33,"column":10}},"9":{"start":{"line":36,"column":4},"end":{"line":42,"column":5}},"10":{"start":{"line":37,"column":8},"end":{"line":41,"column":9}},"11":{"start":{"line":38,"column":12},"end":{"line":40,"column":14}},"12":{"start":{"line":44,"column":4},"end":{"line":44,"column":24}},"13":{"start":{"line":11,"column":13},"end":{"line":11,"column":31}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"loc":{"start":{"line":14,"column":12},"end":{"line":45,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":31},"end":{"line":15,"column":68}},"type":"cond-expr","locations":[{"start":{"line":15,"column":58},"end":{"line":15,"column":62}},{"start":{"line":15,"column":62},"end":{"line":15,"column":68}}]},"1":{"loc":{"start":{"line":15,"column":31},"end":{"line":15,"column":62}},"type":"binary-expr","locations":[{"start":{"line":15,"column":31},"end":{"line":15,"column":62}},{"start":{"line":15,"column":58},"end":{"line":15,"column":62}}]},"2":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}}]},"3":{"loc":{"start":{"line":22,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":27,"column":5}}]},"4":{"loc":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":34,"column":5}}]},"5":{"loc":{"start":{"line":36,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":42,"column":5}}]},"6":{"loc":{"start":{"line":37,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":41,"column":9}}]},"7":{"loc":{"start":{"line":37,"column":12},"end":{"line":37,"column":54}},"type":"cond-expr","locations":[{"start":{"line":37,"column":46},"end":{"line":37,"column":50}},{"start":{"line":37,"column":50},"end":{"line":37,"column":54}}]},"8":{"loc":{"start":{"line":37,"column":12},"end":{"line":37,"column":50}},"type":"binary-expr","locations":[{"start":{"line":37,"column":12},"end":{"line":37,"column":50}},{"start":{"line":37,"column":46},"end":{"line":37,"column":50}}]}},"s":{"0":2,"1":8,"2":8,"3":8,"4":1,"5":8,"6":4,"7":8,"8":3,"9":8,"10":4,"11":3,"12":8,"13":2},"f":{"0":8},"b":{"0":[5,3],"1":[8,8],"2":[1],"3":[4],"4":[3],"5":[4],"6":[3],"7":[2,2],"8":[4,4]}} +,"/workspaces/input-validator/src/utils/getValidator.ts": {"path":"/workspaces/input-validator/src/utils/getValidator.ts","statementMap":{"0":{"start":{"line":18,"column":28},"end":{"line":35,"column":1}},"1":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"2":{"start":{"line":25,"column":8},"end":{"line":25,"column":15}},"3":{"start":{"line":28,"column":22},"end":{"line":28,"column":76}},"4":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"5":{"start":{"line":30,"column":8},"end":{"line":30,"column":15}},"6":{"start":{"line":33,"column":22},"end":{"line":33,"column":94}},"7":{"start":{"line":34,"column":4},"end":{"line":34,"column":67}},"8":{"start":{"line":18,"column":13},"end":{"line":18,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":28},"end":{"line":18,"column":null}},"loc":{"start":{"line":23,"column":50},"end":{"line":35,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":2},"end":{"line":22,"column":80}},"type":"default-arg","locations":[{"start":{"line":22,"column":61},"end":{"line":22,"column":80}}]},"1":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}]},"2":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":67}},"type":"binary-expr","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":35}},{"start":{"line":24,"column":35},"end":{"line":24,"column":67}}]},"3":{"loc":{"start":{"line":24,"column":9},"end":{"line":24,"column":31}},"type":"cond-expr","locations":[{"start":{"line":24,"column":21},"end":{"line":24,"column":23}},{"start":{"line":24,"column":21},"end":{"line":24,"column":31}}]},"4":{"loc":{"start":{"line":24,"column":9},"end":{"line":24,"column":23}},"type":"binary-expr","locations":[{"start":{"line":24,"column":9},"end":{"line":24,"column":23}},{"start":{"line":24,"column":21},"end":{"line":24,"column":23}}]},"5":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]},"6":{"loc":{"start":{"line":34,"column":11},"end":{"line":34,"column":66}},"type":"cond-expr","locations":[{"start":{"line":34,"column":45},"end":{"line":34,"column":54}},{"start":{"line":34,"column":57},"end":{"line":34,"column":66}}]}},"s":{"0":1,"1":9,"2":2,"3":5,"4":5,"5":1,"6":4,"7":4,"8":1},"f":{"0":9},"b":{"0":[1],"1":[2],"2":[9,6],"3":[0,7],"4":[9,7],"5":[1],"6":[2,2]}} +,"/workspaces/input-validator/src/utils/mergePluginConfig.ts": {"path":"/workspaces/input-validator/src/utils/mergePluginConfig.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":71}},"1":{"start":{"line":9,"column":33},"end":{"line":28,"column":1}},"2":{"start":{"line":12,"column":4},"end":{"line":25,"column":null}},"3":{"start":{"line":9,"column":13},"end":{"line":9,"column":33}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":33},"end":{"line":9,"column":null}},"loc":{"start":{"line":11,"column":18},"end":{"line":28,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":15},"end":{"line":17,"column":45}},"type":"cond-expr","locations":[{"start":{"line":17,"column":27},"end":{"line":17,"column":29}},{"start":{"line":17,"column":15},"end":{"line":17,"column":45}}]},"1":{"loc":{"start":{"line":17,"column":15},"end":{"line":17,"column":29}},"type":"binary-expr","locations":[{"start":{"line":17,"column":15},"end":{"line":17,"column":29}},{"start":{"line":17,"column":15},"end":{"line":17,"column":29}}]},"2":{"loc":{"start":{"line":21,"column":15},"end":{"line":21,"column":48}},"type":"cond-expr","locations":[{"start":{"line":21,"column":27},"end":{"line":21,"column":29}},{"start":{"line":21,"column":15},"end":{"line":21,"column":48}}]},"3":{"loc":{"start":{"line":21,"column":15},"end":{"line":21,"column":29}},"type":"binary-expr","locations":[{"start":{"line":21,"column":15},"end":{"line":21,"column":29}},{"start":{"line":21,"column":15},"end":{"line":21,"column":29}}]},"4":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":52}},"type":"cond-expr","locations":[{"start":{"line":25,"column":27},"end":{"line":25,"column":29}},{"start":{"line":25,"column":15},"end":{"line":25,"column":52}}]},"5":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":29}},"type":"binary-expr","locations":[{"start":{"line":25,"column":15},"end":{"line":25,"column":29}},{"start":{"line":25,"column":15},"end":{"line":25,"column":29}}]}},"s":{"0":2,"1":2,"2":15,"3":2},"f":{"0":15},"b":{"0":[12,3],"1":[15,15],"2":[12,3],"3":[15,15],"4":[12,3],"5":[15,15]}} +,"/workspaces/input-validator/src/utils/validateFile.ts": {"path":"/workspaces/input-validator/src/utils/validateFile.ts","statementMap":{"0":{"start":{"line":7,"column":28},"end":{"line":54,"column":1}},"1":{"start":{"line":8,"column":25},"end":{"line":8,"column":52}},"2":{"start":{"line":9,"column":27},"end":{"line":9,"column":42}},"3":{"start":{"line":10,"column":26},"end":{"line":10,"column":94}},"4":{"start":{"line":13,"column":4},"end":{"line":20,"column":5}},"5":{"start":{"line":14,"column":8},"end":{"line":19,"column":10}},"6":{"start":{"line":23,"column":4},"end":{"line":51,"column":5}},"7":{"start":{"line":25,"column":8},"end":{"line":32,"column":9}},"8":{"start":{"line":26,"column":12},"end":{"line":31,"column":14}},"9":{"start":{"line":35,"column":8},"end":{"line":41,"column":9}},"10":{"start":{"line":36,"column":12},"end":{"line":40,"column":14}},"11":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"12":{"start":{"line":45,"column":12},"end":{"line":49,"column":14}},"13":{"start":{"line":53,"column":4},"end":{"line":53,"column":29}},"14":{"start":{"line":7,"column":13},"end":{"line":7,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":28},"end":{"line":7,"column":29}},"loc":{"start":{"line":7,"column":74},"end":{"line":54,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":26},"end":{"line":10,"column":94}},"type":"cond-expr","locations":[{"start":{"line":10,"column":54},"end":{"line":10,"column":71}},{"start":{"line":10,"column":74},"end":{"line":10,"column":94}}]},"1":{"loc":{"start":{"line":10,"column":74},"end":{"line":10,"column":94}},"type":"cond-expr","locations":[{"start":{"line":10,"column":82},"end":{"line":10,"column":89}},{"start":{"line":10,"column":92},"end":{"line":10,"column":94}}]},"2":{"loc":{"start":{"line":13,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":20,"column":5}}]},"3":{"loc":{"start":{"line":25,"column":8},"end":{"line":32,"column":9}},"type":"if","locations":[{"start":{"line":25,"column":8},"end":{"line":32,"column":9}}]},"4":{"loc":{"start":{"line":35,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":35,"column":8},"end":{"line":41,"column":9}}]},"5":{"loc":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":50,"column":9}}]}},"s":{"0":1,"1":6,"2":6,"3":6,"4":6,"5":1,"6":5,"7":5,"8":1,"9":4,"10":2,"11":2,"12":1,"13":1,"14":1},"f":{"0":6},"b":{"0":[0,6],"1":[5,1],"2":[1],"3":[1],"4":[2],"5":[1]}} +} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/constants/DefaultPluginConfig.ts.html b/coverage/lcov-report/constants/DefaultPluginConfig.ts.html new file mode 100644 index 0000000..c18ac77 --- /dev/null +++ b/coverage/lcov-report/constants/DefaultPluginConfig.ts.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for constants/DefaultPluginConfig.ts + + + + + + + + + +
+
+

All files / constants DefaultPluginConfig.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * Default values for plugin config.
+ */
+export const DefaultPluginConfig = {
+	autoConfig: true, // defaults to true to help users enable required events
+	promptBaseColors: {
+		"info": "#007bff",
+		"warning": "#ffc107",
+		"error": "#dc3545",
+		"success": "#28a745",
+	},
+	promptHoveredColors: {
+		"info": "#0056b3",
+        "warning": "#d39e00",
+        "error": "#c82333",
+        "success": "#218838",
+	},
+	textAreaHighlightColors: {
+		"info": "#007bff",
+		"warning": "#ffc107",
+		"error": "#dc3545",
+		"success": "#28a745",
+	}
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/constants/index.html b/coverage/lcov-report/constants/index.html new file mode 100644 index 0000000..91fef44 --- /dev/null +++ b/coverage/lcov-report/constants/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for constants + + + + + + + + + +
+
+

All files constants

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
DefaultPluginConfig.ts +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/core/index.html b/coverage/lcov-report/core/index.html new file mode 100644 index 0000000..258f6d0 --- /dev/null +++ b/coverage/lcov-report/core/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for core + + + + + + + + + +
+
+

All files core

+
+ +
+ 94.2% + Statements + 65/69 +
+ + +
+ 80% + Branches + 24/30 +
+ + +
+ 90% + Functions + 9/10 +
+ + +
+ 94.02% + Lines + 63/67 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
useRcbPlugin.ts +
+
94.2%65/6980%24/3090%9/1094.02%63/67
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/core/useRcbPlugin.ts.html b/coverage/lcov-report/core/useRcbPlugin.ts.html new file mode 100644 index 0000000..109c83b --- /dev/null +++ b/coverage/lcov-report/core/useRcbPlugin.ts.html @@ -0,0 +1,640 @@ + + + + + + Code coverage report for core/useRcbPlugin.ts + + + + + + + + + +
+
+

All files / core useRcbPlugin.ts

+
+ +
+ 94.2% + Statements + 65/69 +
+ + +
+ 80% + Branches + 24/30 +
+ + +
+ 90% + Functions + 9/10 +
+ + +
+ 94.02% + Lines + 63/67 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +1861x +1x +  +  +  +  +  +  +  +  +  +  +1x +1x +  +1x +  +  +  +  +  +  +1x +11x +11x +11x +11x +  +11x +11x +11x +  +11x +  +  +  +  +  +11x +3x +  +  +3x +  +  +  +  +  +3x +  +  +  +  +3x +  +  +3x +2x +  +  +  +3x +1x +  +  +  +2x +2x +  +2x +  +  +  +  +  +2x +  +  +2x +  +  +  +  +  +2x +  +  +11x +4x +4x +  +4x +2x +2x +2x +  +  +2x +  +  +  +  +  +  +2x +  +  +  +  +2x +  +2x +1x +1x +1x +  +  +  +  +1x +1x +  +  +1x +  +  +  +  +  +  +  +11x +1x +  +  +  +11x +11x +11x +  +11x +  +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +11x +11x +8x +  +  +  +  +  +  +11x +  +  +  +  +11x +11x +  +  +  +  +  +  +  +  +11x +  +  +1x + 
import { useEffect, useRef, useState } from "react";
+import {
+    useBotId,
+    RcbUserSubmitTextEvent,
+    RcbUserUploadFileEvent,
+    useToasts,
+    useFlow,
+    useStyles,
+    Styles,
+} from "react-chatbotify";
+import { Plugin } from "react-chatbotify/dist/types/Plugin";
+import { PluginConfig } from "../types/PluginConfig";
+import { mergePluginConfig } from "../utils/mergePluginConfig";
+import { getPromptStyles } from "../utils/getPromptStyles";
+import { ValidationResult } from "../types/ValidationResult";
+import { getValidator } from "../utils/getValidator";
+ 
+/**
+ * Plugin hook that handles all the core logic.
+ *
+ * @param pluginConfig configurations for the plugin
+ */
+const useRcbPlugin = (pluginConfig?: PluginConfig) => {
+    const { showToast } = useToasts();
+    const { getBotId } = useBotId();
+    const { getFlow } = useFlow();
+    const { styles, updateStyles, replaceStyles } = useStyles();
+ 
+    const mergedPluginConfig = mergePluginConfig(pluginConfig);
+    const [numPluginToasts, setNumPluginToasts] = useState<number>(0);
+    const originalStyles = useRef<Styles>({});
+ 
+    useEffect(() => {
+        /**
+         * Handles the user submitting text input event.
+         *
+         * @param event Event emitted when user submits text input.
+         */
+        const handleUserSubmitText = (event: Event): void => {
+            const rcbEvent = event as RcbUserSubmitTextEvent;
+ 
+            // Get validator and if no validator, return
+            const validator = getValidator<string>(
+                rcbEvent,
+                getBotId(),
+                getFlow(),
+                "validateTextInput"
+            );
+            Iif (!validator) {
+                return;
+            }
+ 
+            // Get and check validation result
+            const validationResult = validator(
+                rcbEvent.data.inputText
+            ) as ValidationResult;
+            if (!validationResult?.success) {
+                event.preventDefault();
+            }
+ 
+            // If nothing to prompt, return
+            if (!validationResult.promptContent) {
+                return;
+            }
+ 
+            // Preserve original styles if this is the first plugin toast
+            if (numPluginToasts === 0) {
+                originalStyles.current = structuredClone(styles);
+            }
+            const promptStyles = getPromptStyles(
+                validationResult,
+                mergedPluginConfig
+            );
+ 
+            // Update styles with prompt styles
+            updateStyles(promptStyles);
+ 
+            // Show prompt toast to user
+            showToast(
+                validationResult.promptContent,
+                validationResult.promptDuration ?? 3000
+            );
+ 
+            // Increase number of plugin toasts by 1
+            setNumPluginToasts((prev) => prev + 1);
+        };
+ 
+        const handleUserUploadFile = (event: Event): void => {
+            const rcbEvent = event as RcbUserUploadFileEvent;
+            const file: File | undefined = rcbEvent.data?.files?.[0];
+ 
+            if (!file) {
+                console.error("No file uploaded.");
+                event.preventDefault();
+                return;
+            }
+ 
+            const validator = getValidator<File>(
+                rcbEvent,
+                getBotId(),
+                getFlow(),
+                "validateFileInput"
+            );
+ 
+            Iif (!validator) {
+                console.error("Validator not found for file input.");
+                return;
+            }
+ 
+            const validationResult = validator(file);
+ 
+            if (!validationResult.success) {
+                console.error("Validation failed:", validationResult);
+                if (validationResult.promptContent) {
+                    showToast(
+                        validationResult.promptContent,
+                        validationResult.promptDuration ?? 3000
+                    );
+                }
+                event.preventDefault();
+                return;
+            }
+ 
+            console.log("Validation successful:", validationResult);
+        };
+ 
+        /**
+         * Handles the dismiss toast event.
+         *
+         * @param event Event emitted when toast is dismissed.
+         */
+        const handleDismissToast = (): void => {
+            setNumPluginToasts((prev) => prev - 1);
+        };
+ 
+        // Add required event listeners
+        window.addEventListener("rcb-user-submit-text", handleUserSubmitText);
+        window.addEventListener("rcb-user-upload-file", handleUserUploadFile);
+        window.addEventListener("rcb-dismiss-toast", handleDismissToast);
+ 
+        return () => {
+            // Remove event listeners
+            window.removeEventListener("rcb-user-submit-text", handleUserSubmitText);
+            window.removeEventListener("rcb-user-upload-file", handleUserUploadFile);
+            window.removeEventListener("rcb-dismiss-toast", handleDismissToast);
+        };
+    }, [
+        getBotId,
+        getFlow,
+        showToast,
+        updateStyles,
+        styles,
+        mergedPluginConfig,
+        numPluginToasts,
+    ]);
+ 
+    // Restore original styles when all plugin toasts are dismissed
+    useEffect(() => {
+        if (numPluginToasts === 0) {
+            setTimeout(() => {
+                replaceStyles(originalStyles.current);
+            });
+        }
+    }, [numPluginToasts, replaceStyles]);
+ 
+    // Initialize plugin metadata with plugin name
+    const pluginMetaData: ReturnType<Plugin> = {
+        name: "@rcb-plugins/input-validator",
+    };
+ 
+    // Add required events in settings if autoConfig is true
+    if (mergedPluginConfig.autoConfig) {
+        pluginMetaData.settings = {
+            event: {
+                rcbUserSubmitText: true,
+                rcbUserUploadFile: true,
+                rcbDismissToast: true,
+            },
+        };
+    }
+ 
+    return pluginMetaData;
+};
+ 
+export default useRcbPlugin;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 96.42% + Statements + 108/112 +
+ + +
+ 89.18% + Branches + 66/74 +
+ + +
+ 92.85% + Functions + 13/14 +
+ + +
+ 96.22% + Lines + 102/106 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
constants +
+
100%1/1100%0/0100%0/0100%1/1
core +
+
94.2%65/6980%24/3090%9/1094.02%63/67
utils +
+
100%42/4295.45%42/44100%4/4100%38/38
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/utils/getPromptStyles.ts.html b/coverage/lcov-report/utils/getPromptStyles.ts.html new file mode 100644 index 0000000..6c5957d --- /dev/null +++ b/coverage/lcov-report/utils/getPromptStyles.ts.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for utils/getPromptStyles.ts + + + + + + + + + +
+
+

All files / utils getPromptStyles.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 13/13 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46  +  +  +  +  +  +  +  +  +  +2x +  +  +  +8x +8x +  +8x +1x +  +  +8x +4x +  +  +  +  +  +8x +3x +  +  +  +  +  +8x +4x +3x +  +  +  +  +  +8x +  + 
import { Styles } from "react-chatbotify";
+import { PluginConfig } from "../types/PluginConfig";
+import { ValidationResult } from "../types/ValidationResult";
+ 
+/**
+ * Computes the styles for prompts based on validation results.
+ *
+ * @param validationResult result of input validation
+ * @param pluginConfig configurations for the plugin
+ */
+export const getPromptStyles = (
+    validationResult: ValidationResult,
+    pluginConfig: PluginConfig
+): Styles => {
+    const promptType: string = validationResult.promptType ?? "info";
+    let promptStyles: Styles = {};
+ 
+    if (pluginConfig.advancedStyles) {
+        promptStyles = pluginConfig.advancedStyles[promptType];
+    }
+ 
+    if (pluginConfig.promptBaseColors) {
+        promptStyles.toastPromptStyle = {
+            color: pluginConfig.promptBaseColors[promptType],
+            borderColor: pluginConfig.promptBaseColors[promptType],
+        };
+    }
+ 
+    if (pluginConfig.promptHoveredColors) {
+        promptStyles.toastPromptHoveredStyle = {
+            color: pluginConfig.promptHoveredColors[promptType],
+            borderColor: pluginConfig.promptHoveredColors[promptType],
+        };
+    }
+ 
+    if (pluginConfig.textAreaHighlightColors) {
+        if (validationResult.highlightTextArea ?? true) {
+            promptStyles.chatInputAreaStyle = {
+                boxShadow: `${pluginConfig.textAreaHighlightColors[promptType]} 0px 0px 5px`,
+            };
+        }
+    }
+ 
+    return promptStyles;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/getValidator.ts.html b/coverage/lcov-report/utils/getValidator.ts.html new file mode 100644 index 0000000..833fd00 --- /dev/null +++ b/coverage/lcov-report/utils/getValidator.ts.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for utils/getValidator.ts + + + + + + + + + +
+
+

All files / utils getValidator.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 90.9% + Branches + 10/11 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +9x +2x +  +  +5x +5x +1x +  +  +4x +4x +  + 
import { Flow, RcbUserSubmitTextEvent, RcbUserUploadFileEvent } from "react-chatbotify";
+import { InputValidatorBlock } from "../types/InputValidatorBlock";
+import { ValidationResult } from "../types/ValidationResult";
+ 
+/**
+ * Union type for user events that can be validated.
+ */
+type RcbUserEvent = RcbUserSubmitTextEvent | RcbUserUploadFileEvent;
+ 
+/**
+ * Retrieves the validator function from the current flow block.
+ *
+ * @param event The event emitted by the user action (text submission or file upload).
+ * @param currBotId The current bot ID.
+ * @param currFlow The current flow object.
+ * @returns The validator function if it exists, otherwise undefined.
+ */
+export const getValidator = <T = string | File>(
+  event: RcbUserEvent,
+  currBotId: string | null,
+  currFlow: Flow,
+  validatorType: "validateTextInput" | "validateFileInput" = "validateTextInput"
+): ((input: T) => ValidationResult) | undefined => {
+    if (!event.detail?.currPath || currBotId !== event.detail.botId) {
+        return;
+    }
+ 
+    const currBlock = currFlow[event.detail.currPath] as InputValidatorBlock;
+    if (!currBlock) {
+        return;
+    }
+ 
+    const validator = currBlock[validatorType] as ((input: T) => ValidationResult) | undefined;
+    return typeof validator === "function" ? validator : undefined;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/index.html b/coverage/lcov-report/utils/index.html new file mode 100644 index 0000000..cf33dda --- /dev/null +++ b/coverage/lcov-report/utils/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for utils + + + + + + + + + +
+
+

All files utils

+
+ +
+ 100% + Statements + 42/42 +
+ + +
+ 95.45% + Branches + 42/44 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 38/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
getPromptStyles.ts +
+
100%14/14100%13/13100%1/1100%13/13
getValidator.ts +
+
100%9/990.9%10/11100%1/1100%8/8
mergePluginConfig.ts +
+
100%4/4100%12/12100%1/1100%3/3
validateFile.ts +
+
100%15/1587.5%7/8100%1/1100%14/14
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/mergePluginConfig.ts.html b/coverage/lcov-report/utils/mergePluginConfig.ts.html new file mode 100644 index 0000000..b0138f8 --- /dev/null +++ b/coverage/lcov-report/utils/mergePluginConfig.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for utils/mergePluginConfig.ts + + + + + + + + + +
+
+

All files / utils mergePluginConfig.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 12/12 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +2x +  +  +  +  +  +  +2x +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { PluginConfig } from "../types/PluginConfig";
+import { DefaultPluginConfig } from "../constants/DefaultPluginConfig";
+ 
+/**
+ * Merges the default plugin configuration with the user-provided configuration.
+ *
+ * @param pluginConfig configurations for the plugin
+ */
+export const mergePluginConfig = (
+    pluginConfig?: PluginConfig
+): PluginConfig => {
+    return {
+        ...DefaultPluginConfig,
+        ...pluginConfig,
+        promptBaseColors: {
+            ...DefaultPluginConfig.promptBaseColors,
+            ...pluginConfig?.promptBaseColors,
+        },
+        promptHoveredColors: {
+            ...DefaultPluginConfig.promptHoveredColors,
+            ...pluginConfig?.promptHoveredColors,
+        },
+        textAreaHighlightColors: {
+            ...DefaultPluginConfig.textAreaHighlightColors,
+            ...pluginConfig?.textAreaHighlightColors,
+        },
+    };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov-report/utils/validateFile.ts.html b/coverage/lcov-report/utils/validateFile.ts.html new file mode 100644 index 0000000..de243af --- /dev/null +++ b/coverage/lcov-report/utils/validateFile.ts.html @@ -0,0 +1,247 @@ + + + + + + Code coverage report for utils/validateFile.ts + + + + + + + + + +
+
+

All files / utils validateFile.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 87.5% + Branches + 7/8 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55  +  +  +  +  +  +1x +6x +6x +6x +  +  +6x +1x +  +  +  +  +  +  +  +  +5x +  +5x +1x +  +  +  +  +  +  +  +  +4x +2x +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +1x +  + 
import { ValidationResult } from "../types/ValidationResult";
+ 
+/**
+ * Validates uploaded files.
+ * Ensures each file is of an allowed type and size, and rejects invalid inputs.
+ */
+export const validateFile = (input?: File | FileList): ValidationResult => {
+    const allowedTypes = ["image/jpeg", "image/png"];
+    const maxSizeInBytes = 5 * 1024 * 1024; // 5MB
+    const files: File[] = input instanceof FileList ? Array.from(input) : input ? [input] : [];
+ 
+    // Check if no files are provided
+    if (files.length === 0) {
+        return {
+            success: false,
+            promptContent: "No files uploaded.",
+            promptDuration: 3000,
+            promptType: "error",
+        };
+    }
+ 
+    // Validate each file
+    for (const file of files) {
+        // Check if the file is empty
+        if (file.size === 0) {
+            return {
+                success: false,
+                promptContent: `The file "${file.name}" is empty. Please upload a valid file.`,
+                promptDuration: 3000,
+                promptType: "error",
+            };
+        }
+ 
+        // Validate file type
+        if (!allowedTypes.includes(file.type)) {
+            return {
+                success: false,
+                promptContent: `The file "${file.name}" is not a valid type. Only JPEG or PNG files are allowed.`,
+                promptType: "error",
+            };
+        }
+ 
+        // Validate file size
+        if (file.size > maxSizeInBytes) {
+            return {
+                success: false,
+                promptContent: `The file "${file.name}" exceeds the 5MB size limit.`,
+                promptType: "error",
+            };
+        }
+    }
+ 
+    return { success: true };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info new file mode 100644 index 0000000..40ca46c --- /dev/null +++ b/coverage/lcov.info @@ -0,0 +1,262 @@ +TN: +SF:src/constants/DefaultPluginConfig.ts +FNF:0 +FNH:0 +DA:4,2 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/core/useRcbPlugin.ts +FN:23,(anonymous_0) +FN:33,(anonymous_1) +FN:39,(anonymous_2) +FN:85,(anonymous_3) +FN:88,(anonymous_4) +FN:132,(anonymous_5) +FN:133,(anonymous_6) +FN:141,(anonymous_7) +FN:158,(anonymous_8) +FN:160,(anonymous_9) +FNF:10 +FNH:9 +FNDA:11,(anonymous_0) +FNDA:11,(anonymous_1) +FNDA:3,(anonymous_2) +FNDA:2,(anonymous_3) +FNDA:4,(anonymous_4) +FNDA:1,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:11,(anonymous_7) +FNDA:11,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,1 +DA:2,1 +DA:13,1 +DA:14,1 +DA:16,1 +DA:23,1 +DA:24,11 +DA:25,11 +DA:26,11 +DA:27,11 +DA:29,11 +DA:30,11 +DA:31,11 +DA:33,11 +DA:39,11 +DA:40,3 +DA:43,3 +DA:49,3 +DA:50,0 +DA:54,3 +DA:57,3 +DA:58,2 +DA:62,3 +DA:63,1 +DA:67,2 +DA:68,2 +DA:70,2 +DA:76,2 +DA:79,2 +DA:85,2 +DA:88,11 +DA:89,4 +DA:90,4 +DA:92,4 +DA:93,2 +DA:94,2 +DA:95,2 +DA:98,2 +DA:105,2 +DA:106,0 +DA:107,0 +DA:110,2 +DA:112,2 +DA:113,1 +DA:114,1 +DA:115,1 +DA:120,1 +DA:121,1 +DA:124,1 +DA:132,11 +DA:133,1 +DA:137,11 +DA:138,11 +DA:139,11 +DA:141,11 +DA:143,11 +DA:144,11 +DA:145,11 +DA:158,11 +DA:159,11 +DA:160,8 +DA:161,0 +DA:167,11 +DA:172,11 +DA:173,11 +DA:182,11 +DA:185,1 +LF:67 +LH:63 +BRDA:49,0,0,0 +BRDA:57,1,0,2 +BRDA:57,2,0,0 +BRDA:57,2,1,3 +BRDA:57,3,0,3 +BRDA:57,3,1,3 +BRDA:62,4,0,1 +BRDA:67,5,0,2 +BRDA:81,6,0,0 +BRDA:81,6,1,2 +BRDA:81,7,0,2 +BRDA:81,7,1,2 +BRDA:90,8,0,1 +BRDA:90,8,1,3 +BRDA:90,9,0,4 +BRDA:90,9,1,3 +BRDA:90,10,0,0 +BRDA:90,10,1,4 +BRDA:90,11,0,4 +BRDA:90,11,1,4 +BRDA:92,12,0,2 +BRDA:105,13,0,0 +BRDA:112,14,0,1 +BRDA:114,15,0,1 +BRDA:117,16,0,0 +BRDA:117,16,1,1 +BRDA:117,17,0,1 +BRDA:117,17,1,1 +BRDA:159,18,0,8 +BRDA:172,19,0,11 +BRF:30 +BRH:24 +end_of_record +TN: +SF:src/utils/getPromptStyles.ts +FN:11,(anonymous_0) +FNF:1 +FNH:1 +FNDA:8,(anonymous_0) +DA:11,2 +DA:15,8 +DA:16,8 +DA:18,8 +DA:19,1 +DA:22,8 +DA:23,4 +DA:29,8 +DA:30,3 +DA:36,8 +DA:37,4 +DA:38,3 +DA:44,8 +LF:13 +LH:13 +BRDA:15,0,0,5 +BRDA:15,0,1,3 +BRDA:15,1,0,8 +BRDA:15,1,1,8 +BRDA:18,2,0,1 +BRDA:22,3,0,4 +BRDA:29,4,0,3 +BRDA:36,5,0,4 +BRDA:37,6,0,3 +BRDA:37,7,0,2 +BRDA:37,7,1,2 +BRDA:37,8,0,4 +BRDA:37,8,1,4 +BRF:13 +BRH:13 +end_of_record +TN: +SF:src/utils/getValidator.ts +FN:18,(anonymous_0) +FNF:1 +FNH:1 +FNDA:9,(anonymous_0) +DA:18,1 +DA:24,9 +DA:25,2 +DA:28,5 +DA:29,5 +DA:30,1 +DA:33,4 +DA:34,4 +LF:8 +LH:8 +BRDA:22,0,0,1 +BRDA:24,1,0,2 +BRDA:24,2,0,9 +BRDA:24,2,1,6 +BRDA:24,3,0,0 +BRDA:24,3,1,7 +BRDA:24,4,0,9 +BRDA:24,4,1,7 +BRDA:29,5,0,1 +BRDA:34,6,0,2 +BRDA:34,6,1,2 +BRF:11 +BRH:10 +end_of_record +TN: +SF:src/utils/mergePluginConfig.ts +FN:9,(anonymous_0) +FNF:1 +FNH:1 +FNDA:15,(anonymous_0) +DA:2,2 +DA:9,2 +DA:12,15 +LF:3 +LH:3 +BRDA:17,0,0,12 +BRDA:17,0,1,3 +BRDA:17,1,0,15 +BRDA:17,1,1,15 +BRDA:21,2,0,12 +BRDA:21,2,1,3 +BRDA:21,3,0,15 +BRDA:21,3,1,15 +BRDA:25,4,0,12 +BRDA:25,4,1,3 +BRDA:25,5,0,15 +BRDA:25,5,1,15 +BRF:12 +BRH:12 +end_of_record +TN: +SF:src/utils/validateFile.ts +FN:7,(anonymous_0) +FNF:1 +FNH:1 +FNDA:6,(anonymous_0) +DA:7,1 +DA:8,6 +DA:9,6 +DA:10,6 +DA:13,6 +DA:14,1 +DA:23,5 +DA:25,5 +DA:26,1 +DA:35,4 +DA:36,2 +DA:44,2 +DA:45,1 +DA:53,1 +LF:14 +LH:14 +BRDA:10,0,0,0 +BRDA:10,0,1,6 +BRDA:10,1,0,5 +BRDA:10,1,1,1 +BRDA:13,2,0,1 +BRDA:25,3,0,1 +BRDA:35,4,0,2 +BRDA:44,5,0,1 +BRF:8 +BRH:7 +end_of_record diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..eba3783 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,13 @@ +export default { + preset: "ts-jest/presets/js-with-ts-esm", // Preset for TypeScript + ES Modules + testEnvironment: "jest-environment-jsdom", + setupFilesAfterEnv: ["/setup.jest.js"], + moduleNameMapper: { + "\\.(css|less|scss|sass)$": "identity-obj-proxy", // Mock styles + }, + transform: { + "^.+\\.ts?$": "ts-jest", // Use ts-jest to handle TypeScript files + }, + extensionsToTreatAsEsm: [".ts", ".tsx"], // Treat TypeScript files as ES Modules + testPathIgnorePatterns: ["__tests__/__mocks__"], // Ignore mocks during tests +}; diff --git a/package-lock.json b/package-lock.json index ae970c6..1bd8fc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,14 +10,22 @@ "license": "MIT", "devDependencies": { "@eslint/js": "^9.11.1", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.0.1", + "@types/jest": "^29.5.14", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", + "@types/testing-library__jest-dom": "^5.14.9", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.12", "globals": "^15.9.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "react-chatbotify": "^2.0.0-beta.24", + "ts-jest": "^29.2.5", "typescript": "^5.5.3", "typescript-eslint": "^8.7.0", "vite": "^5.4.8", @@ -31,6 +39,13 @@ "react-dom": "^18.3.1" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -237,6 +252,245 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", @@ -269,6 +523,19 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", @@ -327,6 +594,13 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", @@ -469,9 +743,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -533,104 +807,513 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">= 8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", - "dependencies": { + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "dev": true, + "license": "MIT", + "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" @@ -911,45 +1594,219 @@ "win32" ] }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "type-detect": "4.0.8" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@babel/types": "^7.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", + "integrity": "sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "license": "MIT", "dependencies": { @@ -963,6 +1820,66 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -970,6 +1887,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", + "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", @@ -998,6 +1925,47 @@ "@types/react": "*" } }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.12.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz", @@ -1260,6 +2228,14 @@ "vite": "^4.2.0 || ^5.0.0" } }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -1273,6 +2249,17 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1283,6 +2270,32 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1300,6 +2313,32 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1316,6 +2355,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1323,50 +2376,190 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "fill-range": "^7.1.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", @@ -1387,6 +2580,36 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1397,6 +2620,16 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001676", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001676.tgz", @@ -1435,6 +2668,72 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1455,6 +2754,19 @@ "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1469,10 +2781,32 @@ "dev": true, "license": "MIT" }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1484,6 +2818,40 @@ "node": ">= 8" } }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1491,6 +2859,21 @@ "dev": true, "license": "MIT" }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -1509,6 +2892,28 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1516,78 +2921,231 @@ "dev": true, "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.49", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz", - "integrity": "sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "node": ">=0.4.0" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz", + "integrity": "sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", "dev": true, "license": "MIT", @@ -1717,6 +3275,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -1770,6 +3342,56 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1831,6 +3453,16 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -1844,6 +3476,39 @@ "node": ">=16.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -1895,6 +3560,28 @@ "dev": true, "license": "ISC" }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1910,6 +3597,16 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1920,6 +3617,61 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -1946,6 +3698,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -1953,6 +3712,13 @@ "dev": true, "license": "MIT" }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1960,85 +3726,1022 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=0.8.19" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } }, "node_modules/js-tokens": { "version": "4.0.0", @@ -2059,6 +4762,52 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -2079,6 +4828,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2116,6 +4872,26 @@ "json-buffer": "3.0.1" } }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2130,6 +4906,13 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2146,6 +4929,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2176,6 +4973,70 @@ "yallist": "^3.0.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2200,6 +5061,49 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2246,6 +5150,13 @@ "dev": true, "license": "MIT" }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -2253,6 +5164,62 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -2303,6 +5270,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2316,6 +5293,38 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2323,7 +5332,17 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, "node_modules/path-key": { @@ -2336,6 +5355,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2356,6 +5382,85 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/postcss": { "version": "8.4.47", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", @@ -2395,6 +5500,58 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.13.0.tgz", + "integrity": "sha512-BFwmFXiJoFqlUpZ5Qssolv15DMyc84gTBds1BjsV1BfXEo1UyyD7GsmN67n7J77uRhoSNW1AXtXKPLcBFQn9Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2405,6 +5562,30 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2464,6 +5645,13 @@ "react": "^18.3.1" } }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -2474,6 +5662,85 @@ "node": ">=0.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2484,6 +5751,16 @@ "node": ">=4" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2571,6 +5848,26 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -2591,37 +5888,187 @@ "semver": "bin/semver.js" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/strip-json-comments": { @@ -2650,6 +6097,41 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2657,6 +6139,13 @@ "dev": true, "license": "MIT" }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2670,6 +6159,35 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/ts-api-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", @@ -2683,6 +6201,68 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2696,6 +6276,29 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", @@ -2734,6 +6337,23 @@ } } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -2775,6 +6395,32 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/vite": { "version": "5.4.10", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", @@ -2863,6 +6509,76 @@ } } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2889,6 +6605,94 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -2896,6 +6700,35 @@ "dev": true, "license": "ISC" }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index fd1dfc3..94605d3 100644 --- a/package.json +++ b/package.json @@ -48,14 +48,22 @@ }, "devDependencies": { "@eslint/js": "^9.11.1", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.0.1", + "@types/jest": "^29.5.14", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", + "@types/testing-library__jest-dom": "^5.14.9", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0", "eslint-plugin-react-refresh": "^0.4.12", "globals": "^15.9.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "react-chatbotify": "^2.0.0-beta.24", + "ts-jest": "^29.2.5", "typescript": "^5.5.3", "typescript-eslint": "^8.7.0", "vite": "^5.4.8", diff --git a/setup.jest.js b/setup.jest.js new file mode 100644 index 0000000..1124331 --- /dev/null +++ b/setup.jest.js @@ -0,0 +1,10 @@ +// Import necessary polyfills for TextEncoder and TextDecoder +import { TextDecoder, TextEncoder } from "util"; + +// Set global TextEncoder and TextDecoder +global.TextEncoder = TextEncoder; +global.TextDecoder = TextDecoder; + +if (typeof global.structuredClone === "undefined") { + global.structuredClone = (obj) => JSON.parse(JSON.stringify(obj)); +} \ No newline at end of file From cfe4abc4faa15af5213b9b7ba0b023f2419e3c16 Mon Sep 17 00:00:00 2001 From: Tasbi Tasbi Date: Fri, 6 Dec 2024 05:02:39 +0000 Subject: [PATCH 2/2] resolve lint issues, remove unused dependencies, and improve test organization --- .gitignore | 3 + __tests__/core/useRcbPlugin.test.ts | 249 ++++--- __tests__/utils/getValidator.test.ts | 94 ++- coverage/clover.xml | 139 ---- coverage/coverage-final.json | 7 - coverage/lcov-report/base.css | 224 ------ coverage/lcov-report/block-navigation.js | 87 --- .../constants/DefaultPluginConfig.ts.html | 154 ----- coverage/lcov-report/constants/index.html | 116 ---- coverage/lcov-report/core/index.html | 116 ---- .../lcov-report/core/useRcbPlugin.ts.html | 640 ------------------ coverage/lcov-report/favicon.png | Bin 445 -> 0 bytes coverage/lcov-report/index.html | 146 ---- coverage/lcov-report/prettify.css | 1 - coverage/lcov-report/prettify.js | 2 - coverage/lcov-report/sort-arrow-sprite.png | Bin 138 -> 0 bytes coverage/lcov-report/sorter.js | 196 ------ .../lcov-report/utils/getPromptStyles.ts.html | 220 ------ .../lcov-report/utils/getValidator.ts.html | 190 ------ coverage/lcov-report/utils/index.html | 161 ----- .../utils/mergePluginConfig.ts.html | 169 ----- .../lcov-report/utils/validateFile.ts.html | 247 ------- coverage/lcov.info | 262 ------- package-lock.json | 11 - package.json | 1 - 25 files changed, 168 insertions(+), 3267 deletions(-) delete mode 100644 coverage/clover.xml delete mode 100644 coverage/coverage-final.json delete mode 100644 coverage/lcov-report/base.css delete mode 100644 coverage/lcov-report/block-navigation.js delete mode 100644 coverage/lcov-report/constants/DefaultPluginConfig.ts.html delete mode 100644 coverage/lcov-report/constants/index.html delete mode 100644 coverage/lcov-report/core/index.html delete mode 100644 coverage/lcov-report/core/useRcbPlugin.ts.html delete mode 100644 coverage/lcov-report/favicon.png delete mode 100644 coverage/lcov-report/index.html delete mode 100644 coverage/lcov-report/prettify.css delete mode 100644 coverage/lcov-report/prettify.js delete mode 100644 coverage/lcov-report/sort-arrow-sprite.png delete mode 100644 coverage/lcov-report/sorter.js delete mode 100644 coverage/lcov-report/utils/getPromptStyles.ts.html delete mode 100644 coverage/lcov-report/utils/getValidator.ts.html delete mode 100644 coverage/lcov-report/utils/index.html delete mode 100644 coverage/lcov-report/utils/mergePluginConfig.ts.html delete mode 100644 coverage/lcov-report/utils/validateFile.ts.html delete mode 100644 coverage/lcov.info diff --git a/.gitignore b/.gitignore index b4bb0f8..b10a8dd 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,9 @@ yarn-error.log* pnpm-debug.log* lerna-debug.log* +# coverage +/coverage + # editors .vscode/* !.vscode/extensions.json diff --git a/__tests__/core/useRcbPlugin.test.ts b/__tests__/core/useRcbPlugin.test.ts index d9a4500..1d6fac6 100644 --- a/__tests__/core/useRcbPlugin.test.ts +++ b/__tests__/core/useRcbPlugin.test.ts @@ -4,6 +4,8 @@ import { getValidator } from "../../src/utils/getValidator"; import useRcbPlugin from "../../src/core/useRcbPlugin"; const mockReplaceStyles = jest.fn(); +const mockShowToast = jest.fn(); + // Mock react-chatbotify dependencies jest.mock("react-chatbotify", () => ({ useToasts: jest.fn(() => ({ showToast: mockShowToast })), @@ -27,7 +29,6 @@ jest.mock("../../src/utils/getValidator", () => ({ const mockedValidateFile = validateFile as jest.Mock; const mockedGetValidator = getValidator as jest.Mock; - mockedValidateFile.mockReturnValue({ success: false, promptContent: "Invalid file type", @@ -35,155 +36,143 @@ mockedValidateFile.mockReturnValue({ mockedGetValidator.mockReturnValue(mockedValidateFile); -const mockShowToast = jest.fn(); +// Define custom event interfaces +interface FileUploadEvent extends Event { + data: { files: File[] | null }; +} + +interface TextInputEvent extends Event { + data: { inputText: string }; +} + +// Helper functions +const createFileUploadEvent = (files: File[] | null): FileUploadEvent => { + const event = new Event("rcb-user-upload-file") as FileUploadEvent; + event.data = { files }; + return event; +}; + +const createTextInputEvent = (inputText: string): TextInputEvent => { + const event = new Event("rcb-user-submit-text") as TextInputEvent; + event.data = { inputText }; + return event; +}; + +const renderRcbPluginHook = () => renderHook(() => useRcbPlugin()); describe("useRcbPlugin", () => { beforeEach(() => { - jest.clearAllMocks(); // Clear mocks before each test + jest.clearAllMocks(); }); - test("handles file upload and displays error for invalid file", () => { - const mockFile = new File(["invalid content"], "test.txt", { type: "text/plain" }); - - // Mock validateFile behavior - mockedValidateFile.mockReturnValue({ - success: false, - promptContent: "Invalid file type", + describe("File Upload Handling", () => { + describe("Valid and Invalid Files", () => { + test("displays error for invalid file", () => { + const mockFile = new File(["invalid content"], "test.txt", { type: "text/plain" }); + mockedValidateFile.mockReturnValue({ + success: false, + promptContent: "Invalid file type", + }); + + renderRcbPluginHook(); + const uploadEvent = createFileUploadEvent([mockFile]); + fireEvent(window, uploadEvent); + + expect(mockedValidateFile).toHaveBeenCalledWith(mockFile); + expect(mockShowToast).toHaveBeenCalledWith("Invalid file type", 3000); + }); + + test("does nothing for valid file", () => { + const mockFile = new File(["valid content"], "test.png", { type: "image/png" }); + mockedValidateFile.mockReturnValue({ success: true }); + + renderRcbPluginHook(); + const uploadEvent = createFileUploadEvent([mockFile]); + fireEvent(window, uploadEvent); + + expect(mockedValidateFile).toHaveBeenCalledWith(mockFile); + expect(mockShowToast).not.toHaveBeenCalled(); + }); }); - - // Render the hook - renderHook(() => useRcbPlugin()); - - // Simulate file upload event - const uploadEvent = new Event("rcb-user-upload-file"); - (uploadEvent as any).data = { files: [mockFile] }; - fireEvent(window, uploadEvent); - - // Debugging output - console.log("validateFile calls:", mockedValidateFile.mock.calls); - console.log("showToast calls:", mockShowToast.mock.calls); - - // Assertions - expect(mockedValidateFile).toHaveBeenCalledWith(mockFile); - expect(mockShowToast).toHaveBeenCalledWith("Invalid file type", 3000); - }); - - test("handles file upload and does nothing for valid file", () => { - const mockFile = new File(["valid content"], "test.png", { type: "image/png" }); - // Mock validateFile to return success - (validateFile as jest.Mock).mockReturnValue({ - success: true, + describe("Edge Cases", () => { + test("handles null file upload", () => { + renderRcbPluginHook(); + const uploadEvent = createFileUploadEvent(null); + fireEvent(window, uploadEvent); + + expect(mockedValidateFile).not.toHaveBeenCalled(); + expect(mockShowToast).not.toHaveBeenCalled(); + }); + + test("handles empty file upload", () => { + renderRcbPluginHook(); + const uploadEvent = createFileUploadEvent([]); + fireEvent(window, uploadEvent); + + expect(mockedValidateFile).not.toHaveBeenCalled(); + expect(mockShowToast).not.toHaveBeenCalled(); + }); }); + }); - // Mock getValidator to return the validateFile function - (getValidator as jest.Mock).mockReturnValue(validateFile); + describe("Text Input Handling", () => { + describe("Valid and Invalid Input", () => { + test("displays error for invalid input", () => { + const mockValidator = jest.fn().mockReturnValue({ + success: false, + promptContent: "Invalid input", + }); - renderHook(() => useRcbPlugin()); + mockedGetValidator.mockReturnValue(mockValidator); - // Simulate file upload event - const uploadEvent = new Event("rcb-user-upload-file"); - (uploadEvent as any).data = { files: [mockFile] }; // Attach mock data - fireEvent(window, uploadEvent); + renderRcbPluginHook(); + const textEvent = createTextInputEvent("invalid text"); + fireEvent(window, textEvent); - // Assertions - expect(validateFile).toHaveBeenCalledWith(mockFile); - expect(mockShowToast).not.toHaveBeenCalled(); // No toast for valid file - }); + expect(mockValidator).toHaveBeenCalledWith("invalid text"); + expect(mockShowToast).toHaveBeenCalledWith("Invalid input", 3000); + }); - test("handles text input and displays error for invalid input", () => { - const mockValidator = jest.fn().mockReturnValue({ - success: false, - promptContent: "Invalid input", - }); + test("does nothing for valid input", () => { + const mockValidator = jest.fn().mockReturnValue({ success: true }); + mockedGetValidator.mockReturnValue(mockValidator); - // Mock getValidator to return the text validator - mockedGetValidator.mockReturnValue(mockValidator); + renderRcbPluginHook(); + const textEvent = createTextInputEvent("valid input"); + fireEvent(window, textEvent); - renderHook(() => useRcbPlugin()); + expect(mockValidator).toHaveBeenCalledWith("valid input"); + expect(mockShowToast).not.toHaveBeenCalled(); + }); + }); - // Simulate text input event - const textEvent = new Event("rcb-user-submit-text"); - (textEvent as any).data = { inputText: "invalid text" }; - fireEvent(window, textEvent); + test("displays error for empty text input", () => { + const mockValidator = jest.fn().mockReturnValue({ + success: false, + promptContent: "Input cannot be empty", + }); - // Assertions - expect(mockValidator).toHaveBeenCalledWith("invalid text"); - expect(mockShowToast).toHaveBeenCalledWith("Invalid input", 3000); - }); + mockedGetValidator.mockReturnValue(mockValidator); - test("handles text input and does nothing for valid input", () => { - const mockValidator = jest.fn().mockReturnValue({ success: true }); - - // Mock getValidator to return the text validator - mockedGetValidator.mockReturnValue(mockValidator); - - renderHook(() => useRcbPlugin()); - - // Simulate text input event - const textEvent = new Event("rcb-user-submit-text"); - (textEvent as any).data = { inputText: "valid input" }; - fireEvent(window, textEvent); - - // Assertions - expect(mockValidator).toHaveBeenCalledWith("valid input"); - expect(mockShowToast).not.toHaveBeenCalled(); // No toast for valid input - }); + renderRcbPluginHook(); + const textEvent = createTextInputEvent(""); + fireEvent(window, textEvent); - test("handles empty text input validation", () => { - const mockValidator = jest.fn().mockReturnValue({ - success: false, - promptContent: "Input cannot be empty", + expect(mockValidator).toHaveBeenCalledWith(""); + expect(mockShowToast).toHaveBeenCalledWith("Input cannot be empty", 3000); }); - - mockedGetValidator.mockReturnValue(mockValidator); - - renderHook(() => useRcbPlugin()); - - const textEvent = new Event("rcb-user-submit-text"); - (textEvent as any).data = { inputText: "" }; - fireEvent(window, textEvent); - - // Assertions - expect(mockValidator).toHaveBeenCalledWith(""); - expect(mockShowToast).toHaveBeenCalledWith("Input cannot be empty", 3000); - }); - - test("handles null file upload", () => { - renderHook(() => useRcbPlugin()); - - const uploadEvent = new Event("rcb-user-upload-file"); - (uploadEvent as any).data = { files: null }; - fireEvent(window, uploadEvent); - - // Assertions - expect(mockedValidateFile).not.toHaveBeenCalled(); - expect(mockShowToast).not.toHaveBeenCalled(); - }); - - test("handles empty file upload", () => { - renderHook(() => useRcbPlugin()); - - // Simulate empty file upload event - const uploadEvent = new Event("rcb-user-upload-file"); - (uploadEvent as any).data = { files: [] }; - fireEvent(window, uploadEvent); - - // Assertions - expect(mockedValidateFile).not.toHaveBeenCalled(); - expect(mockShowToast).not.toHaveBeenCalled(); // No toast for empty file list - }); - test("restores styles after all toasts are dismissed", () => { - renderHook(() => useRcbPlugin()); - - // Simulate toast dismissal event - const dismissEvent = new Event("rcb-dismiss-toast"); - fireEvent(window, dismissEvent); - - // Verify that styles are restored - setTimeout(() => { - expect(mockReplaceStyles).toHaveBeenCalled(); - }, 0); }); + describe("Styles Restoration", () => { + test("restores styles after all toasts are dismissed", () => { + renderRcbPluginHook(); + const dismissEvent = new Event("rcb-dismiss-toast"); + fireEvent(window, dismissEvent); + + setTimeout(() => { + expect(mockReplaceStyles).toHaveBeenCalled(); + }, 0); + }); + }); }); diff --git a/__tests__/utils/getValidator.test.ts b/__tests__/utils/getValidator.test.ts index 85145b8..c6da555 100644 --- a/__tests__/utils/getValidator.test.ts +++ b/__tests__/utils/getValidator.test.ts @@ -17,15 +17,13 @@ describe("getValidator - Valid Cases", () => { const currBotId = "bot-id"; - // Create a proper CustomEvent mock with prevPath - const eventWithPath = new CustomEvent("rcb-user-upload-file", { + const eventWithPath: RcbUserUploadFileEvent = new CustomEvent("rcb-user-upload-file", { detail: { currPath: "start", prevPath: "intro", botId: currBotId }, }) as RcbUserUploadFileEvent; const validator = getValidator(eventWithPath, currBotId, flow, "validateFileInput"); expect(validator).toBe(mockValidateFileInput); - // Call the validator to ensure it behaves correctly const mockFile = new File(["content"], "test.png", { type: "image/png" }); const result = validator?.(mockFile); expect(result).toEqual(mockValidationResult); @@ -38,19 +36,17 @@ describe("getValidator - Valid Cases", () => { validateFileInput: jest.fn(), } as InputValidatorBlock, }; - + const currBotId = "bot-id"; - - // Event with no currPath - const eventWithoutPath = new CustomEvent("rcb-user-upload-file", { - detail: { currPath: null, prevPath: "intro", botId: currBotId }, // Missing currPath - }) as RcbUserUploadFileEvent; - + + const eventWithoutPath: RcbUserUploadFileEvent = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: null, prevPath: "intro", botId: currBotId }, + }) as unknown as RcbUserUploadFileEvent; + const validator = getValidator(eventWithoutPath, currBotId, flow, "validateFileInput"); - - // Assert that validator is undefined expect(validator).toBeUndefined(); }); + test("returns undefined when botId does not match", () => { const flow: Flow = { start: { @@ -58,19 +54,48 @@ describe("getValidator - Valid Cases", () => { validateFileInput: jest.fn(), } as InputValidatorBlock, }; - + const currBotId = "bot-id"; - - // Event with mismatched botId - const eventWithWrongBotId = new CustomEvent("rcb-user-upload-file", { - detail: { currPath: "start", prevPath: "intro", botId: "wrong-bot-id" }, // Mismatched botId + + const eventWithWrongBotId: RcbUserUploadFileEvent = new CustomEvent("rcb-user-upload-file", { + detail: { currPath: "start", prevPath: "intro", botId: "wrong-bot-id" }, }) as RcbUserUploadFileEvent; - + const validator = getValidator(eventWithWrongBotId, currBotId, flow, "validateFileInput"); - - // Assert that validator is undefined expect(validator).toBeUndefined(); }); + + test("returns undefined when event is null or undefined", () => { + const flow: Flow = { + start: { + message: "Upload a file", + validateFileInput: jest.fn(), + } as InputValidatorBlock, + }; + + const currBotId = "bot-id"; + + // Simulate null event + let validatorForNull; + try { + validatorForNull = getValidator(null as unknown as RcbUserUploadFileEvent, currBotId, flow, "validateFileInput"); + } catch { + validatorForNull = undefined; // No need for the error variable + } + expect(validatorForNull).toBeUndefined(); + + // Simulate undefined event + let validatorForUndefined; + try { + validatorForUndefined = getValidator(undefined as unknown as RcbUserUploadFileEvent, currBotId, flow, "validateFileInput"); + } catch { + validatorForUndefined = undefined; // No need for the error variable + } + expect(validatorForUndefined).toBeUndefined(); + }); + + + test("returns undefined when validator does not exist in the flow block", () => { const flow: Flow = { start: { @@ -109,33 +134,6 @@ describe("getValidator - Valid Cases", () => { // Assert that validator is undefined expect(validator).toBeUndefined(); }); - test("returns undefined when event is null or undefined", () => { - const flow: Flow = { - start: { - message: "Upload a file", - validateFileInput: jest.fn(), - } as InputValidatorBlock, - }; - - const currBotId = "bot-id"; - - // Simulate null event - let validator; - try { - validator = getValidator(null as any, currBotId, flow, "validateFileInput"); - } catch (error) { - validator = undefined; // Set to undefined if an error occurs - } - expect(validator).toBeUndefined(); - - // Simulate undefined event - try { - validator = getValidator(undefined as any, currBotId, flow, "validateFileInput"); - } catch (error) { - validator = undefined; // Set to undefined if an error occurs - } - expect(validator).toBeUndefined(); - }); test("defaults to validateTextInput when validatorType is not provided", () => { const mockValidationResult: ValidationResult = { success: true }; const mockValidateTextInput = jest.fn(() => mockValidationResult); @@ -174,6 +172,6 @@ describe("getValidator - Valid Cases", () => { }); - + }); diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index e272841..0000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index e2a7d7b..0000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,7 +0,0 @@ -{"/workspaces/input-validator/src/constants/DefaultPluginConfig.ts": {"path":"/workspaces/input-validator/src/constants/DefaultPluginConfig.ts","statementMap":{"0":{"start":{"line":4,"column":13},"end":{"line":24,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2},"f":{},"b":{}} -,"/workspaces/input-validator/src/core/useRcbPlugin.ts": {"path":"/workspaces/input-validator/src/core/useRcbPlugin.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":52}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"2":{"start":{"line":13,"column":0},"end":{"line":13,"column":63}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":59}},"4":{"start":{"line":16,"column":0},"end":{"line":16,"column":53}},"5":{"start":{"line":23,"column":21},"end":{"line":183,"column":1}},"6":{"start":{"line":24,"column":26},"end":{"line":24,"column":37}},"7":{"start":{"line":25,"column":25},"end":{"line":25,"column":35}},"8":{"start":{"line":26,"column":24},"end":{"line":26,"column":33}},"9":{"start":{"line":27,"column":52},"end":{"line":27,"column":63}},"10":{"start":{"line":29,"column":31},"end":{"line":29,"column":62}},"11":{"start":{"line":30,"column":50},"end":{"line":30,"column":69}},"12":{"start":{"line":31,"column":27},"end":{"line":31,"column":45}},"13":{"start":{"line":33,"column":4},"end":{"line":155,"column":7}},"14":{"start":{"line":39,"column":37},"end":{"line":86,"column":9}},"15":{"start":{"line":40,"column":29},"end":{"line":40,"column":60}},"16":{"start":{"line":43,"column":30},"end":{"line":47,"column":null}},"17":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"18":{"start":{"line":50,"column":16},"end":{"line":50,"column":23}},"19":{"start":{"line":54,"column":37},"end":{"line":55,"column":null}},"20":{"start":{"line":57,"column":12},"end":{"line":59,"column":13}},"21":{"start":{"line":58,"column":16},"end":{"line":58,"column":39}},"22":{"start":{"line":62,"column":12},"end":{"line":64,"column":13}},"23":{"start":{"line":63,"column":16},"end":{"line":63,"column":23}},"24":{"start":{"line":67,"column":12},"end":{"line":69,"column":13}},"25":{"start":{"line":68,"column":16},"end":{"line":68,"column":65}},"26":{"start":{"line":70,"column":33},"end":{"line":72,"column":null}},"27":{"start":{"line":76,"column":12},"end":{"line":76,"column":39}},"28":{"start":{"line":79,"column":12},"end":{"line":82,"column":14}},"29":{"start":{"line":85,"column":12},"end":{"line":85,"column":51}},"30":{"start":{"line":85,"column":41},"end":{"line":85,"column":49}},"31":{"start":{"line":88,"column":37},"end":{"line":125,"column":9}},"32":{"start":{"line":89,"column":29},"end":{"line":89,"column":60}},"33":{"start":{"line":90,"column":43},"end":{"line":90,"column":68}},"34":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"35":{"start":{"line":93,"column":16},"end":{"line":93,"column":51}},"36":{"start":{"line":94,"column":16},"end":{"line":94,"column":39}},"37":{"start":{"line":95,"column":16},"end":{"line":95,"column":23}},"38":{"start":{"line":98,"column":30},"end":{"line":102,"column":null}},"39":{"start":{"line":105,"column":12},"end":{"line":108,"column":13}},"40":{"start":{"line":106,"column":16},"end":{"line":106,"column":69}},"41":{"start":{"line":107,"column":16},"end":{"line":107,"column":23}},"42":{"start":{"line":110,"column":37},"end":{"line":110,"column":52}},"43":{"start":{"line":112,"column":12},"end":{"line":122,"column":13}},"44":{"start":{"line":113,"column":16},"end":{"line":113,"column":70}},"45":{"start":{"line":114,"column":16},"end":{"line":119,"column":17}},"46":{"start":{"line":115,"column":20},"end":{"line":118,"column":22}},"47":{"start":{"line":120,"column":16},"end":{"line":120,"column":39}},"48":{"start":{"line":121,"column":16},"end":{"line":121,"column":23}},"49":{"start":{"line":124,"column":12},"end":{"line":124,"column":68}},"50":{"start":{"line":132,"column":35},"end":{"line":134,"column":9}},"51":{"start":{"line":133,"column":12},"end":{"line":133,"column":51}},"52":{"start":{"line":133,"column":41},"end":{"line":133,"column":49}},"53":{"start":{"line":137,"column":8},"end":{"line":137,"column":78}},"54":{"start":{"line":138,"column":8},"end":{"line":138,"column":78}},"55":{"start":{"line":139,"column":8},"end":{"line":139,"column":73}},"56":{"start":{"line":141,"column":8},"end":{"line":146,"column":10}},"57":{"start":{"line":143,"column":12},"end":{"line":143,"column":85}},"58":{"start":{"line":144,"column":12},"end":{"line":144,"column":85}},"59":{"start":{"line":145,"column":12},"end":{"line":145,"column":80}},"60":{"start":{"line":158,"column":4},"end":{"line":164,"column":41}},"61":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"62":{"start":{"line":160,"column":12},"end":{"line":162,"column":15}},"63":{"start":{"line":161,"column":16},"end":{"line":161,"column":54}},"64":{"start":{"line":167,"column":47},"end":{"line":169,"column":6}},"65":{"start":{"line":172,"column":4},"end":{"line":180,"column":5}},"66":{"start":{"line":173,"column":8},"end":{"line":179,"column":10}},"67":{"start":{"line":182,"column":4},"end":{"line":182,"column":26}},"68":{"start":{"line":185,"column":0},"end":{"line":185,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":23,"column":21},"end":{"line":23,"column":22}},"loc":{"start":{"line":23,"column":53},"end":{"line":183,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":33,"column":14},"end":{"line":33,"column":17}},"loc":{"start":{"line":33,"column":19},"end":{"line":147,"column":5}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":39,"column":37},"end":{"line":39,"column":38}},"loc":{"start":{"line":39,"column":60},"end":{"line":86,"column":9}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":85,"column":31},"end":{"line":85,"column":32}},"loc":{"start":{"line":85,"column":41},"end":{"line":85,"column":49}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":88,"column":37},"end":{"line":88,"column":38}},"loc":{"start":{"line":88,"column":60},"end":{"line":125,"column":9}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":132,"column":35},"end":{"line":132,"column":44}},"loc":{"start":{"line":132,"column":46},"end":{"line":134,"column":9}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":133,"column":31},"end":{"line":133,"column":32}},"loc":{"start":{"line":133,"column":41},"end":{"line":133,"column":49}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":141,"column":15},"end":{"line":141,"column":18}},"loc":{"start":{"line":141,"column":20},"end":{"line":146,"column":9}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":158,"column":14},"end":{"line":158,"column":17}},"loc":{"start":{"line":158,"column":19},"end":{"line":164,"column":5}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":160,"column":23},"end":{"line":160,"column":26}},"loc":{"start":{"line":160,"column":28},"end":{"line":162,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"type":"if","locations":[{"start":{"line":49,"column":12},"end":{"line":51,"column":13}}]},"1":{"loc":{"start":{"line":57,"column":12},"end":{"line":59,"column":13}},"type":"if","locations":[{"start":{"line":57,"column":12},"end":{"line":59,"column":13}}]},"2":{"loc":{"start":{"line":57,"column":17},"end":{"line":57,"column":42}},"type":"cond-expr","locations":[{"start":{"line":57,"column":33},"end":{"line":57,"column":35}},{"start":{"line":57,"column":17},"end":{"line":57,"column":42}}]},"3":{"loc":{"start":{"line":57,"column":17},"end":{"line":57,"column":35}},"type":"binary-expr","locations":[{"start":{"line":57,"column":17},"end":{"line":57,"column":35}},{"start":{"line":57,"column":17},"end":{"line":57,"column":35}}]},"4":{"loc":{"start":{"line":62,"column":12},"end":{"line":64,"column":13}},"type":"if","locations":[{"start":{"line":62,"column":12},"end":{"line":64,"column":13}}]},"5":{"loc":{"start":{"line":67,"column":12},"end":{"line":69,"column":13}},"type":"if","locations":[{"start":{"line":67,"column":12},"end":{"line":69,"column":13}}]},"6":{"loc":{"start":{"line":81,"column":16},"end":{"line":81,"column":55}},"type":"cond-expr","locations":[{"start":{"line":81,"column":47},"end":{"line":81,"column":51}},{"start":{"line":81,"column":51},"end":{"line":81,"column":55}}]},"7":{"loc":{"start":{"line":81,"column":16},"end":{"line":81,"column":51}},"type":"binary-expr","locations":[{"start":{"line":81,"column":16},"end":{"line":81,"column":51}},{"start":{"line":81,"column":47},"end":{"line":81,"column":51}}]},"8":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":68}},"type":"cond-expr","locations":[{"start":{"line":90,"column":63},"end":{"line":90,"column":66}},{"start":{"line":90,"column":63},"end":{"line":90,"column":68}}]},"9":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":66}},"type":"binary-expr","locations":[{"start":{"line":90,"column":43},"end":{"line":90,"column":66}},{"start":{"line":90,"column":63},"end":{"line":90,"column":66}}]},"10":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":63}},"type":"cond-expr","locations":[{"start":{"line":90,"column":56},"end":{"line":90,"column":58}},{"start":{"line":90,"column":56},"end":{"line":90,"column":63}}]},"11":{"loc":{"start":{"line":90,"column":43},"end":{"line":90,"column":58}},"type":"binary-expr","locations":[{"start":{"line":90,"column":43},"end":{"line":90,"column":58}},{"start":{"line":90,"column":56},"end":{"line":90,"column":58}}]},"12":{"loc":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"type":"if","locations":[{"start":{"line":92,"column":12},"end":{"line":96,"column":13}}]},"13":{"loc":{"start":{"line":105,"column":12},"end":{"line":108,"column":13}},"type":"if","locations":[{"start":{"line":105,"column":12},"end":{"line":108,"column":13}}]},"14":{"loc":{"start":{"line":112,"column":12},"end":{"line":122,"column":13}},"type":"if","locations":[{"start":{"line":112,"column":12},"end":{"line":122,"column":13}}]},"15":{"loc":{"start":{"line":114,"column":16},"end":{"line":119,"column":17}},"type":"if","locations":[{"start":{"line":114,"column":16},"end":{"line":119,"column":17}}]},"16":{"loc":{"start":{"line":117,"column":24},"end":{"line":117,"column":63}},"type":"cond-expr","locations":[{"start":{"line":117,"column":55},"end":{"line":117,"column":59}},{"start":{"line":117,"column":59},"end":{"line":117,"column":63}}]},"17":{"loc":{"start":{"line":117,"column":24},"end":{"line":117,"column":59}},"type":"binary-expr","locations":[{"start":{"line":117,"column":24},"end":{"line":117,"column":59}},{"start":{"line":117,"column":55},"end":{"line":117,"column":59}}]},"18":{"loc":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"type":"if","locations":[{"start":{"line":159,"column":8},"end":{"line":163,"column":9}}]},"19":{"loc":{"start":{"line":172,"column":4},"end":{"line":180,"column":5}},"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":180,"column":5}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":11,"7":11,"8":11,"9":11,"10":11,"11":11,"12":11,"13":11,"14":11,"15":3,"16":3,"17":3,"18":0,"19":3,"20":3,"21":2,"22":3,"23":1,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":2,"31":11,"32":4,"33":4,"34":4,"35":2,"36":2,"37":2,"38":2,"39":2,"40":0,"41":0,"42":2,"43":2,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":11,"51":1,"52":1,"53":11,"54":11,"55":11,"56":11,"57":11,"58":11,"59":11,"60":11,"61":11,"62":8,"63":0,"64":11,"65":11,"66":11,"67":11,"68":1},"f":{"0":11,"1":11,"2":3,"3":2,"4":4,"5":1,"6":1,"7":11,"8":11,"9":0},"b":{"0":[0],"1":[2],"2":[0,3],"3":[3,3],"4":[1],"5":[2],"6":[0,2],"7":[2,2],"8":[1,3],"9":[4,3],"10":[0,4],"11":[4,4],"12":[2],"13":[0],"14":[1],"15":[1],"16":[0,1],"17":[1,1],"18":[8],"19":[11]}} -,"/workspaces/input-validator/src/utils/getPromptStyles.ts": {"path":"/workspaces/input-validator/src/utils/getPromptStyles.ts","statementMap":{"0":{"start":{"line":11,"column":31},"end":{"line":45,"column":1}},"1":{"start":{"line":15,"column":31},"end":{"line":15,"column":68}},"2":{"start":{"line":16,"column":31},"end":{"line":16,"column":33}},"3":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"4":{"start":{"line":19,"column":8},"end":{"line":19,"column":63}},"5":{"start":{"line":22,"column":4},"end":{"line":27,"column":5}},"6":{"start":{"line":23,"column":8},"end":{"line":26,"column":10}},"7":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"8":{"start":{"line":30,"column":8},"end":{"line":33,"column":10}},"9":{"start":{"line":36,"column":4},"end":{"line":42,"column":5}},"10":{"start":{"line":37,"column":8},"end":{"line":41,"column":9}},"11":{"start":{"line":38,"column":12},"end":{"line":40,"column":14}},"12":{"start":{"line":44,"column":4},"end":{"line":44,"column":24}},"13":{"start":{"line":11,"column":13},"end":{"line":11,"column":31}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"loc":{"start":{"line":14,"column":12},"end":{"line":45,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":31},"end":{"line":15,"column":68}},"type":"cond-expr","locations":[{"start":{"line":15,"column":58},"end":{"line":15,"column":62}},{"start":{"line":15,"column":62},"end":{"line":15,"column":68}}]},"1":{"loc":{"start":{"line":15,"column":31},"end":{"line":15,"column":62}},"type":"binary-expr","locations":[{"start":{"line":15,"column":31},"end":{"line":15,"column":62}},{"start":{"line":15,"column":58},"end":{"line":15,"column":62}}]},"2":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}}]},"3":{"loc":{"start":{"line":22,"column":4},"end":{"line":27,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":27,"column":5}}]},"4":{"loc":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":34,"column":5}}]},"5":{"loc":{"start":{"line":36,"column":4},"end":{"line":42,"column":5}},"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":42,"column":5}}]},"6":{"loc":{"start":{"line":37,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":41,"column":9}}]},"7":{"loc":{"start":{"line":37,"column":12},"end":{"line":37,"column":54}},"type":"cond-expr","locations":[{"start":{"line":37,"column":46},"end":{"line":37,"column":50}},{"start":{"line":37,"column":50},"end":{"line":37,"column":54}}]},"8":{"loc":{"start":{"line":37,"column":12},"end":{"line":37,"column":50}},"type":"binary-expr","locations":[{"start":{"line":37,"column":12},"end":{"line":37,"column":50}},{"start":{"line":37,"column":46},"end":{"line":37,"column":50}}]}},"s":{"0":2,"1":8,"2":8,"3":8,"4":1,"5":8,"6":4,"7":8,"8":3,"9":8,"10":4,"11":3,"12":8,"13":2},"f":{"0":8},"b":{"0":[5,3],"1":[8,8],"2":[1],"3":[4],"4":[3],"5":[4],"6":[3],"7":[2,2],"8":[4,4]}} -,"/workspaces/input-validator/src/utils/getValidator.ts": {"path":"/workspaces/input-validator/src/utils/getValidator.ts","statementMap":{"0":{"start":{"line":18,"column":28},"end":{"line":35,"column":1}},"1":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"2":{"start":{"line":25,"column":8},"end":{"line":25,"column":15}},"3":{"start":{"line":28,"column":22},"end":{"line":28,"column":76}},"4":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"5":{"start":{"line":30,"column":8},"end":{"line":30,"column":15}},"6":{"start":{"line":33,"column":22},"end":{"line":33,"column":94}},"7":{"start":{"line":34,"column":4},"end":{"line":34,"column":67}},"8":{"start":{"line":18,"column":13},"end":{"line":18,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":28},"end":{"line":18,"column":null}},"loc":{"start":{"line":23,"column":50},"end":{"line":35,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":2},"end":{"line":22,"column":80}},"type":"default-arg","locations":[{"start":{"line":22,"column":61},"end":{"line":22,"column":80}}]},"1":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}]},"2":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":67}},"type":"binary-expr","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":35}},{"start":{"line":24,"column":35},"end":{"line":24,"column":67}}]},"3":{"loc":{"start":{"line":24,"column":9},"end":{"line":24,"column":31}},"type":"cond-expr","locations":[{"start":{"line":24,"column":21},"end":{"line":24,"column":23}},{"start":{"line":24,"column":21},"end":{"line":24,"column":31}}]},"4":{"loc":{"start":{"line":24,"column":9},"end":{"line":24,"column":23}},"type":"binary-expr","locations":[{"start":{"line":24,"column":9},"end":{"line":24,"column":23}},{"start":{"line":24,"column":21},"end":{"line":24,"column":23}}]},"5":{"loc":{"start":{"line":29,"column":4},"end":{"line":31,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":31,"column":5}}]},"6":{"loc":{"start":{"line":34,"column":11},"end":{"line":34,"column":66}},"type":"cond-expr","locations":[{"start":{"line":34,"column":45},"end":{"line":34,"column":54}},{"start":{"line":34,"column":57},"end":{"line":34,"column":66}}]}},"s":{"0":1,"1":9,"2":2,"3":5,"4":5,"5":1,"6":4,"7":4,"8":1},"f":{"0":9},"b":{"0":[1],"1":[2],"2":[9,6],"3":[0,7],"4":[9,7],"5":[1],"6":[2,2]}} -,"/workspaces/input-validator/src/utils/mergePluginConfig.ts": {"path":"/workspaces/input-validator/src/utils/mergePluginConfig.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":71}},"1":{"start":{"line":9,"column":33},"end":{"line":28,"column":1}},"2":{"start":{"line":12,"column":4},"end":{"line":25,"column":null}},"3":{"start":{"line":9,"column":13},"end":{"line":9,"column":33}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":33},"end":{"line":9,"column":null}},"loc":{"start":{"line":11,"column":18},"end":{"line":28,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":15},"end":{"line":17,"column":45}},"type":"cond-expr","locations":[{"start":{"line":17,"column":27},"end":{"line":17,"column":29}},{"start":{"line":17,"column":15},"end":{"line":17,"column":45}}]},"1":{"loc":{"start":{"line":17,"column":15},"end":{"line":17,"column":29}},"type":"binary-expr","locations":[{"start":{"line":17,"column":15},"end":{"line":17,"column":29}},{"start":{"line":17,"column":15},"end":{"line":17,"column":29}}]},"2":{"loc":{"start":{"line":21,"column":15},"end":{"line":21,"column":48}},"type":"cond-expr","locations":[{"start":{"line":21,"column":27},"end":{"line":21,"column":29}},{"start":{"line":21,"column":15},"end":{"line":21,"column":48}}]},"3":{"loc":{"start":{"line":21,"column":15},"end":{"line":21,"column":29}},"type":"binary-expr","locations":[{"start":{"line":21,"column":15},"end":{"line":21,"column":29}},{"start":{"line":21,"column":15},"end":{"line":21,"column":29}}]},"4":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":52}},"type":"cond-expr","locations":[{"start":{"line":25,"column":27},"end":{"line":25,"column":29}},{"start":{"line":25,"column":15},"end":{"line":25,"column":52}}]},"5":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":29}},"type":"binary-expr","locations":[{"start":{"line":25,"column":15},"end":{"line":25,"column":29}},{"start":{"line":25,"column":15},"end":{"line":25,"column":29}}]}},"s":{"0":2,"1":2,"2":15,"3":2},"f":{"0":15},"b":{"0":[12,3],"1":[15,15],"2":[12,3],"3":[15,15],"4":[12,3],"5":[15,15]}} -,"/workspaces/input-validator/src/utils/validateFile.ts": {"path":"/workspaces/input-validator/src/utils/validateFile.ts","statementMap":{"0":{"start":{"line":7,"column":28},"end":{"line":54,"column":1}},"1":{"start":{"line":8,"column":25},"end":{"line":8,"column":52}},"2":{"start":{"line":9,"column":27},"end":{"line":9,"column":42}},"3":{"start":{"line":10,"column":26},"end":{"line":10,"column":94}},"4":{"start":{"line":13,"column":4},"end":{"line":20,"column":5}},"5":{"start":{"line":14,"column":8},"end":{"line":19,"column":10}},"6":{"start":{"line":23,"column":4},"end":{"line":51,"column":5}},"7":{"start":{"line":25,"column":8},"end":{"line":32,"column":9}},"8":{"start":{"line":26,"column":12},"end":{"line":31,"column":14}},"9":{"start":{"line":35,"column":8},"end":{"line":41,"column":9}},"10":{"start":{"line":36,"column":12},"end":{"line":40,"column":14}},"11":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"12":{"start":{"line":45,"column":12},"end":{"line":49,"column":14}},"13":{"start":{"line":53,"column":4},"end":{"line":53,"column":29}},"14":{"start":{"line":7,"column":13},"end":{"line":7,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":28},"end":{"line":7,"column":29}},"loc":{"start":{"line":7,"column":74},"end":{"line":54,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":26},"end":{"line":10,"column":94}},"type":"cond-expr","locations":[{"start":{"line":10,"column":54},"end":{"line":10,"column":71}},{"start":{"line":10,"column":74},"end":{"line":10,"column":94}}]},"1":{"loc":{"start":{"line":10,"column":74},"end":{"line":10,"column":94}},"type":"cond-expr","locations":[{"start":{"line":10,"column":82},"end":{"line":10,"column":89}},{"start":{"line":10,"column":92},"end":{"line":10,"column":94}}]},"2":{"loc":{"start":{"line":13,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":20,"column":5}}]},"3":{"loc":{"start":{"line":25,"column":8},"end":{"line":32,"column":9}},"type":"if","locations":[{"start":{"line":25,"column":8},"end":{"line":32,"column":9}}]},"4":{"loc":{"start":{"line":35,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":35,"column":8},"end":{"line":41,"column":9}}]},"5":{"loc":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":50,"column":9}}]}},"s":{"0":1,"1":6,"2":6,"3":6,"4":6,"5":1,"6":5,"7":5,"8":1,"9":4,"10":2,"11":2,"12":1,"13":1,"14":1},"f":{"0":6},"b":{"0":[0,6],"1":[5,1],"2":[1],"3":[1],"4":[2],"5":[1]}} -} diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css deleted file mode 100644 index f418035..0000000 --- a/coverage/lcov-report/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js deleted file mode 100644 index cc12130..0000000 --- a/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/lcov-report/constants/DefaultPluginConfig.ts.html b/coverage/lcov-report/constants/DefaultPluginConfig.ts.html deleted file mode 100644 index c18ac77..0000000 --- a/coverage/lcov-report/constants/DefaultPluginConfig.ts.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Code coverage report for constants/DefaultPluginConfig.ts - - - - - - - - - -
-
-

All files / constants DefaultPluginConfig.ts

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * Default values for plugin config.
- */
-export const DefaultPluginConfig = {
-	autoConfig: true, // defaults to true to help users enable required events
-	promptBaseColors: {
-		"info": "#007bff",
-		"warning": "#ffc107",
-		"error": "#dc3545",
-		"success": "#28a745",
-	},
-	promptHoveredColors: {
-		"info": "#0056b3",
-        "warning": "#d39e00",
-        "error": "#c82333",
-        "success": "#218838",
-	},
-	textAreaHighlightColors: {
-		"info": "#007bff",
-		"warning": "#ffc107",
-		"error": "#dc3545",
-		"success": "#28a745",
-	}
-}
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/constants/index.html b/coverage/lcov-report/constants/index.html deleted file mode 100644 index 91fef44..0000000 --- a/coverage/lcov-report/constants/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for constants - - - - - - - - - -
-
-

All files constants

-
- -
- 100% - Statements - 1/1 -
- - -
- 100% - Branches - 0/0 -
- - -
- 100% - Functions - 0/0 -
- - -
- 100% - Lines - 1/1 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
DefaultPluginConfig.ts -
-
100%1/1100%0/0100%0/0100%1/1
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/core/index.html b/coverage/lcov-report/core/index.html deleted file mode 100644 index 258f6d0..0000000 --- a/coverage/lcov-report/core/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Code coverage report for core - - - - - - - - - -
-
-

All files core

-
- -
- 94.2% - Statements - 65/69 -
- - -
- 80% - Branches - 24/30 -
- - -
- 90% - Functions - 9/10 -
- - -
- 94.02% - Lines - 63/67 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
useRcbPlugin.ts -
-
94.2%65/6980%24/3090%9/1094.02%63/67
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/core/useRcbPlugin.ts.html b/coverage/lcov-report/core/useRcbPlugin.ts.html deleted file mode 100644 index 109c83b..0000000 --- a/coverage/lcov-report/core/useRcbPlugin.ts.html +++ /dev/null @@ -1,640 +0,0 @@ - - - - - - Code coverage report for core/useRcbPlugin.ts - - - - - - - - - -
-
-

All files / core useRcbPlugin.ts

-
- -
- 94.2% - Statements - 65/69 -
- - -
- 80% - Branches - 24/30 -
- - -
- 90% - Functions - 9/10 -
- - -
- 94.02% - Lines - 63/67 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -1861x -1x -  -  -  -  -  -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -  -  -1x -11x -11x -11x -11x -  -11x -11x -11x -  -11x -  -  -  -  -  -11x -3x -  -  -3x -  -  -  -  -  -3x -  -  -  -  -3x -  -  -3x -2x -  -  -  -3x -1x -  -  -  -2x -2x -  -2x -  -  -  -  -  -2x -  -  -2x -  -  -  -  -  -2x -  -  -11x -4x -4x -  -4x -2x -2x -2x -  -  -2x -  -  -  -  -  -  -2x -  -  -  -  -2x -  -2x -1x -1x -1x -  -  -  -  -1x -1x -  -  -1x -  -  -  -  -  -  -  -11x -1x -  -  -  -11x -11x -11x -  -11x -  -11x -11x -11x -  -  -  -  -  -  -  -  -  -  -  -  -11x -11x -8x -  -  -  -  -  -  -11x -  -  -  -  -11x -11x -  -  -  -  -  -  -  -  -11x -  -  -1x - 
import { useEffect, useRef, useState } from "react";
-import {
-    useBotId,
-    RcbUserSubmitTextEvent,
-    RcbUserUploadFileEvent,
-    useToasts,
-    useFlow,
-    useStyles,
-    Styles,
-} from "react-chatbotify";
-import { Plugin } from "react-chatbotify/dist/types/Plugin";
-import { PluginConfig } from "../types/PluginConfig";
-import { mergePluginConfig } from "../utils/mergePluginConfig";
-import { getPromptStyles } from "../utils/getPromptStyles";
-import { ValidationResult } from "../types/ValidationResult";
-import { getValidator } from "../utils/getValidator";
- 
-/**
- * Plugin hook that handles all the core logic.
- *
- * @param pluginConfig configurations for the plugin
- */
-const useRcbPlugin = (pluginConfig?: PluginConfig) => {
-    const { showToast } = useToasts();
-    const { getBotId } = useBotId();
-    const { getFlow } = useFlow();
-    const { styles, updateStyles, replaceStyles } = useStyles();
- 
-    const mergedPluginConfig = mergePluginConfig(pluginConfig);
-    const [numPluginToasts, setNumPluginToasts] = useState<number>(0);
-    const originalStyles = useRef<Styles>({});
- 
-    useEffect(() => {
-        /**
-         * Handles the user submitting text input event.
-         *
-         * @param event Event emitted when user submits text input.
-         */
-        const handleUserSubmitText = (event: Event): void => {
-            const rcbEvent = event as RcbUserSubmitTextEvent;
- 
-            // Get validator and if no validator, return
-            const validator = getValidator<string>(
-                rcbEvent,
-                getBotId(),
-                getFlow(),
-                "validateTextInput"
-            );
-            Iif (!validator) {
-                return;
-            }
- 
-            // Get and check validation result
-            const validationResult = validator(
-                rcbEvent.data.inputText
-            ) as ValidationResult;
-            if (!validationResult?.success) {
-                event.preventDefault();
-            }
- 
-            // If nothing to prompt, return
-            if (!validationResult.promptContent) {
-                return;
-            }
- 
-            // Preserve original styles if this is the first plugin toast
-            if (numPluginToasts === 0) {
-                originalStyles.current = structuredClone(styles);
-            }
-            const promptStyles = getPromptStyles(
-                validationResult,
-                mergedPluginConfig
-            );
- 
-            // Update styles with prompt styles
-            updateStyles(promptStyles);
- 
-            // Show prompt toast to user
-            showToast(
-                validationResult.promptContent,
-                validationResult.promptDuration ?? 3000
-            );
- 
-            // Increase number of plugin toasts by 1
-            setNumPluginToasts((prev) => prev + 1);
-        };
- 
-        const handleUserUploadFile = (event: Event): void => {
-            const rcbEvent = event as RcbUserUploadFileEvent;
-            const file: File | undefined = rcbEvent.data?.files?.[0];
- 
-            if (!file) {
-                console.error("No file uploaded.");
-                event.preventDefault();
-                return;
-            }
- 
-            const validator = getValidator<File>(
-                rcbEvent,
-                getBotId(),
-                getFlow(),
-                "validateFileInput"
-            );
- 
-            Iif (!validator) {
-                console.error("Validator not found for file input.");
-                return;
-            }
- 
-            const validationResult = validator(file);
- 
-            if (!validationResult.success) {
-                console.error("Validation failed:", validationResult);
-                if (validationResult.promptContent) {
-                    showToast(
-                        validationResult.promptContent,
-                        validationResult.promptDuration ?? 3000
-                    );
-                }
-                event.preventDefault();
-                return;
-            }
- 
-            console.log("Validation successful:", validationResult);
-        };
- 
-        /**
-         * Handles the dismiss toast event.
-         *
-         * @param event Event emitted when toast is dismissed.
-         */
-        const handleDismissToast = (): void => {
-            setNumPluginToasts((prev) => prev - 1);
-        };
- 
-        // Add required event listeners
-        window.addEventListener("rcb-user-submit-text", handleUserSubmitText);
-        window.addEventListener("rcb-user-upload-file", handleUserUploadFile);
-        window.addEventListener("rcb-dismiss-toast", handleDismissToast);
- 
-        return () => {
-            // Remove event listeners
-            window.removeEventListener("rcb-user-submit-text", handleUserSubmitText);
-            window.removeEventListener("rcb-user-upload-file", handleUserUploadFile);
-            window.removeEventListener("rcb-dismiss-toast", handleDismissToast);
-        };
-    }, [
-        getBotId,
-        getFlow,
-        showToast,
-        updateStyles,
-        styles,
-        mergedPluginConfig,
-        numPluginToasts,
-    ]);
- 
-    // Restore original styles when all plugin toasts are dismissed
-    useEffect(() => {
-        if (numPluginToasts === 0) {
-            setTimeout(() => {
-                replaceStyles(originalStyles.current);
-            });
-        }
-    }, [numPluginToasts, replaceStyles]);
- 
-    // Initialize plugin metadata with plugin name
-    const pluginMetaData: ReturnType<Plugin> = {
-        name: "@rcb-plugins/input-validator",
-    };
- 
-    // Add required events in settings if autoConfig is true
-    if (mergedPluginConfig.autoConfig) {
-        pluginMetaData.settings = {
-            event: {
-                rcbUserSubmitText: true,
-                rcbUserUploadFile: true,
-                rcbDismissToast: true,
-            },
-        };
-    }
- 
-    return pluginMetaData;
-};
- 
-export default useRcbPlugin;
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 96.42% - Statements - 108/112 -
- - -
- 89.18% - Branches - 66/74 -
- - -
- 92.85% - Functions - 13/14 -
- - -
- 96.22% - Lines - 102/106 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
constants -
-
100%1/1100%0/0100%0/0100%1/1
core -
-
94.2%65/6980%24/3090%9/1094.02%63/67
utils -
-
100%42/4295.45%42/44100%4/4100%38/38
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js deleted file mode 100644 index b322523..0000000 --- a/coverage/lcov-report/prettify.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/lcov-report/sort-arrow-sprite.png b/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 6ed68316eb3f65dec9063332d2f69bf3093bbfab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc diff --git a/coverage/lcov-report/sorter.js b/coverage/lcov-report/sorter.js deleted file mode 100644 index 2bb296a..0000000 --- a/coverage/lcov-report/sorter.js +++ /dev/null @@ -1,196 +0,0 @@ -/* eslint-disable */ -var addSorting = (function() { - 'use strict'; - var cols, - currentSort = { - index: 0, - desc: false - }; - - // returns the summary table element - function getTable() { - return document.querySelector('.coverage-summary'); - } - // returns the thead element of the summary table - function getTableHeader() { - return getTable().querySelector('thead tr'); - } - // returns the tbody element of the summary table - function getTableBody() { - return getTable().querySelector('tbody'); - } - // returns the th element for nth column - function getNthColumn(n) { - return getTableHeader().querySelectorAll('th')[n]; - } - - function onFilterInput() { - const searchValue = document.getElementById('fileSearch').value; - const rows = document.getElementsByTagName('tbody')[0].children; - for (let i = 0; i < rows.length; i++) { - const row = rows[i]; - if ( - row.textContent - .toLowerCase() - .includes(searchValue.toLowerCase()) - ) { - row.style.display = ''; - } else { - row.style.display = 'none'; - } - } - } - - // loads the search box - function addSearchBox() { - var template = document.getElementById('filterTemplate'); - var templateClone = template.content.cloneNode(true); - templateClone.getElementById('fileSearch').oninput = onFilterInput; - template.parentElement.appendChild(templateClone); - } - - // loads all columns - function loadColumns() { - var colNodes = getTableHeader().querySelectorAll('th'), - colNode, - cols = [], - col, - i; - - for (i = 0; i < colNodes.length; i += 1) { - colNode = colNodes[i]; - col = { - key: colNode.getAttribute('data-col'), - sortable: !colNode.getAttribute('data-nosort'), - type: colNode.getAttribute('data-type') || 'string' - }; - cols.push(col); - if (col.sortable) { - col.defaultDescSort = col.type === 'number'; - colNode.innerHTML = - colNode.innerHTML + ''; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function(a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function(a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc - ? ' sorted-desc' - : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function() { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i = 0; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function() { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(); - addSearchBox(); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/coverage/lcov-report/utils/getPromptStyles.ts.html b/coverage/lcov-report/utils/getPromptStyles.ts.html deleted file mode 100644 index 6c5957d..0000000 --- a/coverage/lcov-report/utils/getPromptStyles.ts.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - Code coverage report for utils/getPromptStyles.ts - - - - - - - - - -
-
-

All files / utils getPromptStyles.ts

-
- -
- 100% - Statements - 14/14 -
- - -
- 100% - Branches - 13/13 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 13/13 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46  -  -  -  -  -  -  -  -  -  -2x -  -  -  -8x -8x -  -8x -1x -  -  -8x -4x -  -  -  -  -  -8x -3x -  -  -  -  -  -8x -4x -3x -  -  -  -  -  -8x -  - 
import { Styles } from "react-chatbotify";
-import { PluginConfig } from "../types/PluginConfig";
-import { ValidationResult } from "../types/ValidationResult";
- 
-/**
- * Computes the styles for prompts based on validation results.
- *
- * @param validationResult result of input validation
- * @param pluginConfig configurations for the plugin
- */
-export const getPromptStyles = (
-    validationResult: ValidationResult,
-    pluginConfig: PluginConfig
-): Styles => {
-    const promptType: string = validationResult.promptType ?? "info";
-    let promptStyles: Styles = {};
- 
-    if (pluginConfig.advancedStyles) {
-        promptStyles = pluginConfig.advancedStyles[promptType];
-    }
- 
-    if (pluginConfig.promptBaseColors) {
-        promptStyles.toastPromptStyle = {
-            color: pluginConfig.promptBaseColors[promptType],
-            borderColor: pluginConfig.promptBaseColors[promptType],
-        };
-    }
- 
-    if (pluginConfig.promptHoveredColors) {
-        promptStyles.toastPromptHoveredStyle = {
-            color: pluginConfig.promptHoveredColors[promptType],
-            borderColor: pluginConfig.promptHoveredColors[promptType],
-        };
-    }
- 
-    if (pluginConfig.textAreaHighlightColors) {
-        if (validationResult.highlightTextArea ?? true) {
-            promptStyles.chatInputAreaStyle = {
-                boxShadow: `${pluginConfig.textAreaHighlightColors[promptType]} 0px 0px 5px`,
-            };
-        }
-    }
- 
-    return promptStyles;
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/utils/getValidator.ts.html b/coverage/lcov-report/utils/getValidator.ts.html deleted file mode 100644 index 833fd00..0000000 --- a/coverage/lcov-report/utils/getValidator.ts.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - Code coverage report for utils/getValidator.ts - - - - - - - - - -
-
-

All files / utils getValidator.ts

-
- -
- 100% - Statements - 9/9 -
- - -
- 90.9% - Branches - 10/11 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 8/8 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -9x -2x -  -  -5x -5x -1x -  -  -4x -4x -  - 
import { Flow, RcbUserSubmitTextEvent, RcbUserUploadFileEvent } from "react-chatbotify";
-import { InputValidatorBlock } from "../types/InputValidatorBlock";
-import { ValidationResult } from "../types/ValidationResult";
- 
-/**
- * Union type for user events that can be validated.
- */
-type RcbUserEvent = RcbUserSubmitTextEvent | RcbUserUploadFileEvent;
- 
-/**
- * Retrieves the validator function from the current flow block.
- *
- * @param event The event emitted by the user action (text submission or file upload).
- * @param currBotId The current bot ID.
- * @param currFlow The current flow object.
- * @returns The validator function if it exists, otherwise undefined.
- */
-export const getValidator = <T = string | File>(
-  event: RcbUserEvent,
-  currBotId: string | null,
-  currFlow: Flow,
-  validatorType: "validateTextInput" | "validateFileInput" = "validateTextInput"
-): ((input: T) => ValidationResult) | undefined => {
-    if (!event.detail?.currPath || currBotId !== event.detail.botId) {
-        return;
-    }
- 
-    const currBlock = currFlow[event.detail.currPath] as InputValidatorBlock;
-    if (!currBlock) {
-        return;
-    }
- 
-    const validator = currBlock[validatorType] as ((input: T) => ValidationResult) | undefined;
-    return typeof validator === "function" ? validator : undefined;
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/utils/index.html b/coverage/lcov-report/utils/index.html deleted file mode 100644 index cf33dda..0000000 --- a/coverage/lcov-report/utils/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for utils - - - - - - - - - -
-
-

All files utils

-
- -
- 100% - Statements - 42/42 -
- - -
- 95.45% - Branches - 42/44 -
- - -
- 100% - Functions - 4/4 -
- - -
- 100% - Lines - 38/38 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
getPromptStyles.ts -
-
100%14/14100%13/13100%1/1100%13/13
getValidator.ts -
-
100%9/990.9%10/11100%1/1100%8/8
mergePluginConfig.ts -
-
100%4/4100%12/12100%1/1100%3/3
validateFile.ts -
-
100%15/1587.5%7/8100%1/1100%14/14
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/utils/mergePluginConfig.ts.html b/coverage/lcov-report/utils/mergePluginConfig.ts.html deleted file mode 100644 index b0138f8..0000000 --- a/coverage/lcov-report/utils/mergePluginConfig.ts.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - Code coverage report for utils/mergePluginConfig.ts - - - - - - - - - -
-
-

All files / utils mergePluginConfig.ts

-
- -
- 100% - Statements - 4/4 -
- - -
- 100% - Branches - 12/12 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 3/3 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29  -2x -  -  -  -  -  -  -2x -  -  -15x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { PluginConfig } from "../types/PluginConfig";
-import { DefaultPluginConfig } from "../constants/DefaultPluginConfig";
- 
-/**
- * Merges the default plugin configuration with the user-provided configuration.
- *
- * @param pluginConfig configurations for the plugin
- */
-export const mergePluginConfig = (
-    pluginConfig?: PluginConfig
-): PluginConfig => {
-    return {
-        ...DefaultPluginConfig,
-        ...pluginConfig,
-        promptBaseColors: {
-            ...DefaultPluginConfig.promptBaseColors,
-            ...pluginConfig?.promptBaseColors,
-        },
-        promptHoveredColors: {
-            ...DefaultPluginConfig.promptHoveredColors,
-            ...pluginConfig?.promptHoveredColors,
-        },
-        textAreaHighlightColors: {
-            ...DefaultPluginConfig.textAreaHighlightColors,
-            ...pluginConfig?.textAreaHighlightColors,
-        },
-    };
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov-report/utils/validateFile.ts.html b/coverage/lcov-report/utils/validateFile.ts.html deleted file mode 100644 index de243af..0000000 --- a/coverage/lcov-report/utils/validateFile.ts.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - Code coverage report for utils/validateFile.ts - - - - - - - - - -
-
-

All files / utils validateFile.ts

-
- -
- 100% - Statements - 15/15 -
- - -
- 87.5% - Branches - 7/8 -
- - -
- 100% - Functions - 1/1 -
- - -
- 100% - Lines - 14/14 -
- - -
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

- -
-
-

-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55  -  -  -  -  -  -1x -6x -6x -6x -  -  -6x -1x -  -  -  -  -  -  -  -  -5x -  -5x -1x -  -  -  -  -  -  -  -  -4x -2x -  -  -  -  -  -  -  -2x -1x -  -  -  -  -  -  -  -1x -  - 
import { ValidationResult } from "../types/ValidationResult";
- 
-/**
- * Validates uploaded files.
- * Ensures each file is of an allowed type and size, and rejects invalid inputs.
- */
-export const validateFile = (input?: File | FileList): ValidationResult => {
-    const allowedTypes = ["image/jpeg", "image/png"];
-    const maxSizeInBytes = 5 * 1024 * 1024; // 5MB
-    const files: File[] = input instanceof FileList ? Array.from(input) : input ? [input] : [];
- 
-    // Check if no files are provided
-    if (files.length === 0) {
-        return {
-            success: false,
-            promptContent: "No files uploaded.",
-            promptDuration: 3000,
-            promptType: "error",
-        };
-    }
- 
-    // Validate each file
-    for (const file of files) {
-        // Check if the file is empty
-        if (file.size === 0) {
-            return {
-                success: false,
-                promptContent: `The file "${file.name}" is empty. Please upload a valid file.`,
-                promptDuration: 3000,
-                promptType: "error",
-            };
-        }
- 
-        // Validate file type
-        if (!allowedTypes.includes(file.type)) {
-            return {
-                success: false,
-                promptContent: `The file "${file.name}" is not a valid type. Only JPEG or PNG files are allowed.`,
-                promptType: "error",
-            };
-        }
- 
-        // Validate file size
-        if (file.size > maxSizeInBytes) {
-            return {
-                success: false,
-                promptContent: `The file "${file.name}" exceeds the 5MB size limit.`,
-                promptType: "error",
-            };
-        }
-    }
- 
-    return { success: true };
-};
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info deleted file mode 100644 index 40ca46c..0000000 --- a/coverage/lcov.info +++ /dev/null @@ -1,262 +0,0 @@ -TN: -SF:src/constants/DefaultPluginConfig.ts -FNF:0 -FNH:0 -DA:4,2 -LF:1 -LH:1 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/core/useRcbPlugin.ts -FN:23,(anonymous_0) -FN:33,(anonymous_1) -FN:39,(anonymous_2) -FN:85,(anonymous_3) -FN:88,(anonymous_4) -FN:132,(anonymous_5) -FN:133,(anonymous_6) -FN:141,(anonymous_7) -FN:158,(anonymous_8) -FN:160,(anonymous_9) -FNF:10 -FNH:9 -FNDA:11,(anonymous_0) -FNDA:11,(anonymous_1) -FNDA:3,(anonymous_2) -FNDA:2,(anonymous_3) -FNDA:4,(anonymous_4) -FNDA:1,(anonymous_5) -FNDA:1,(anonymous_6) -FNDA:11,(anonymous_7) -FNDA:11,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,1 -DA:2,1 -DA:13,1 -DA:14,1 -DA:16,1 -DA:23,1 -DA:24,11 -DA:25,11 -DA:26,11 -DA:27,11 -DA:29,11 -DA:30,11 -DA:31,11 -DA:33,11 -DA:39,11 -DA:40,3 -DA:43,3 -DA:49,3 -DA:50,0 -DA:54,3 -DA:57,3 -DA:58,2 -DA:62,3 -DA:63,1 -DA:67,2 -DA:68,2 -DA:70,2 -DA:76,2 -DA:79,2 -DA:85,2 -DA:88,11 -DA:89,4 -DA:90,4 -DA:92,4 -DA:93,2 -DA:94,2 -DA:95,2 -DA:98,2 -DA:105,2 -DA:106,0 -DA:107,0 -DA:110,2 -DA:112,2 -DA:113,1 -DA:114,1 -DA:115,1 -DA:120,1 -DA:121,1 -DA:124,1 -DA:132,11 -DA:133,1 -DA:137,11 -DA:138,11 -DA:139,11 -DA:141,11 -DA:143,11 -DA:144,11 -DA:145,11 -DA:158,11 -DA:159,11 -DA:160,8 -DA:161,0 -DA:167,11 -DA:172,11 -DA:173,11 -DA:182,11 -DA:185,1 -LF:67 -LH:63 -BRDA:49,0,0,0 -BRDA:57,1,0,2 -BRDA:57,2,0,0 -BRDA:57,2,1,3 -BRDA:57,3,0,3 -BRDA:57,3,1,3 -BRDA:62,4,0,1 -BRDA:67,5,0,2 -BRDA:81,6,0,0 -BRDA:81,6,1,2 -BRDA:81,7,0,2 -BRDA:81,7,1,2 -BRDA:90,8,0,1 -BRDA:90,8,1,3 -BRDA:90,9,0,4 -BRDA:90,9,1,3 -BRDA:90,10,0,0 -BRDA:90,10,1,4 -BRDA:90,11,0,4 -BRDA:90,11,1,4 -BRDA:92,12,0,2 -BRDA:105,13,0,0 -BRDA:112,14,0,1 -BRDA:114,15,0,1 -BRDA:117,16,0,0 -BRDA:117,16,1,1 -BRDA:117,17,0,1 -BRDA:117,17,1,1 -BRDA:159,18,0,8 -BRDA:172,19,0,11 -BRF:30 -BRH:24 -end_of_record -TN: -SF:src/utils/getPromptStyles.ts -FN:11,(anonymous_0) -FNF:1 -FNH:1 -FNDA:8,(anonymous_0) -DA:11,2 -DA:15,8 -DA:16,8 -DA:18,8 -DA:19,1 -DA:22,8 -DA:23,4 -DA:29,8 -DA:30,3 -DA:36,8 -DA:37,4 -DA:38,3 -DA:44,8 -LF:13 -LH:13 -BRDA:15,0,0,5 -BRDA:15,0,1,3 -BRDA:15,1,0,8 -BRDA:15,1,1,8 -BRDA:18,2,0,1 -BRDA:22,3,0,4 -BRDA:29,4,0,3 -BRDA:36,5,0,4 -BRDA:37,6,0,3 -BRDA:37,7,0,2 -BRDA:37,7,1,2 -BRDA:37,8,0,4 -BRDA:37,8,1,4 -BRF:13 -BRH:13 -end_of_record -TN: -SF:src/utils/getValidator.ts -FN:18,(anonymous_0) -FNF:1 -FNH:1 -FNDA:9,(anonymous_0) -DA:18,1 -DA:24,9 -DA:25,2 -DA:28,5 -DA:29,5 -DA:30,1 -DA:33,4 -DA:34,4 -LF:8 -LH:8 -BRDA:22,0,0,1 -BRDA:24,1,0,2 -BRDA:24,2,0,9 -BRDA:24,2,1,6 -BRDA:24,3,0,0 -BRDA:24,3,1,7 -BRDA:24,4,0,9 -BRDA:24,4,1,7 -BRDA:29,5,0,1 -BRDA:34,6,0,2 -BRDA:34,6,1,2 -BRF:11 -BRH:10 -end_of_record -TN: -SF:src/utils/mergePluginConfig.ts -FN:9,(anonymous_0) -FNF:1 -FNH:1 -FNDA:15,(anonymous_0) -DA:2,2 -DA:9,2 -DA:12,15 -LF:3 -LH:3 -BRDA:17,0,0,12 -BRDA:17,0,1,3 -BRDA:17,1,0,15 -BRDA:17,1,1,15 -BRDA:21,2,0,12 -BRDA:21,2,1,3 -BRDA:21,3,0,15 -BRDA:21,3,1,15 -BRDA:25,4,0,12 -BRDA:25,4,1,3 -BRDA:25,5,0,15 -BRDA:25,5,1,15 -BRF:12 -BRH:12 -end_of_record -TN: -SF:src/utils/validateFile.ts -FN:7,(anonymous_0) -FNF:1 -FNH:1 -FNDA:6,(anonymous_0) -DA:7,1 -DA:8,6 -DA:9,6 -DA:10,6 -DA:13,6 -DA:14,1 -DA:23,5 -DA:25,5 -DA:26,1 -DA:35,4 -DA:36,2 -DA:44,2 -DA:45,1 -DA:53,1 -LF:14 -LH:14 -BRDA:10,0,0,0 -BRDA:10,0,1,6 -BRDA:10,1,0,5 -BRDA:10,1,1,1 -BRDA:13,2,0,1 -BRDA:25,3,0,1 -BRDA:35,4,0,2 -BRDA:44,5,0,1 -BRF:8 -BRH:7 -end_of_record diff --git a/package-lock.json b/package-lock.json index 1bd8fc3..436bdf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@types/jest": "^29.5.14", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", - "@types/testing-library__jest-dom": "^5.14.9", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0", @@ -1932,16 +1931,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", - "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jest": "*" - } - }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", diff --git a/package.json b/package.json index 94605d3..7dd2709 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "@types/jest": "^29.5.14", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", - "@types/testing-library__jest-dom": "^5.14.9", "@vitejs/plugin-react": "^4.3.2", "eslint": "^9.11.1", "eslint-plugin-react-hooks": "^5.1.0-rc.0",