From 16b4b3924e2be45337741493953eac3e9ce06d7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20K=C4=99dziak?= Date: Wed, 30 Oct 2024 16:10:15 +0000 Subject: [PATCH 01/34] docs: fix warning panels (#1418) **Issue number:** ## Summary ### Changes > Please provide a summary of what's being changed There are 2 warning texts in the documentation that are not rendered correctly. This PR replaces them to another variant that renders properly. ### User experience > Please describe what the user experience looks like before and after this change No changes from the UX. ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [ ] I have performed a self-review of this change * [ ] Changes have been tested * [ ] Changes are documented * [ ] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --- docs/advanced/oauth_support.md | 5 +++-- docs/entity/index.md | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/advanced/oauth_support.md b/docs/advanced/oauth_support.md index 1d78a29ea..6a80f327a 100644 --- a/docs/advanced/oauth_support.md +++ b/docs/advanced/oauth_support.md @@ -42,8 +42,9 @@ Auth can be used inside the entity tag. Use `type: "oauth"` in the entity list a + `disableonEdit`: When the form is in edit mode, the field becomes unable to be edited. The default value is false. + `enable`: The enable property sets whether a field is enabled or not. The default value is true. -> [!WARNING] -> The [Placeholder](https://splunkui.splunkeng.com/Packages/react-ui/Text?section=develop) attribute is deprecated and renounced. Instead, we recommend to use the "help" attribute. +!!! warning "Placeholder deprecation" + + The [Placeholder](https://splunkui.splunkeng.com/Packages/react-ui/Text?section=develop) attribute is deprecated and renounced. Instead, we recommend to use the "help" attribute. ### Usage diff --git a/docs/entity/index.md b/docs/entity/index.md index f02b08681..a29ebf06c 100644 --- a/docs/entity/index.md +++ b/docs/entity/index.md @@ -18,9 +18,10 @@ title: Entity | [validators](./validators.md) | array | It is used to validate the values of fields using various validators. It is strongly advised to specify validators for every entity. | - | | [modifyFieldsOnValue](./modifyFieldsOnValue.md) | array | It is used to specify values and parameters that will influence visually other entities. | - | -> [!WARNING] -> The [Placeholder](https://splunkui.splunk.com/Packages/react-ui/Text?section=develop) attribute is deprecated and renounced. -> The placeholder text is no longer displayed in the UI. Instead, use the `help` attribute. +!!! warning "Placeholder deprecation" + + The [Placeholder](https://splunkui.splunk.com/Packages/react-ui/Text?section=develop) attribute is deprecated and renounced. + The placeholder text is no longer displayed in the UI. Instead, use the `help` attribute. ## Common Options From 15400fdd4fb7d900a7c28bf176344f02ccb12d80 Mon Sep 17 00:00:00 2001 From: soleksy-splunk <143183665+soleksy-splunk@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:17:51 +0100 Subject: [PATCH 02/34] chore: single select with default empty string value (#1416) **Issue number:** ## Summary ### Changes > Use empty string when single select does not have value. ### User experience > No changes. It removes error from console. ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [ ] Changes have been tested * [ ] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --- ui/src/components/ControlWrapper/ControlWrapper.tsx | 1 - .../SingleInputComponent/SingleInputComponent.tsx | 13 ++++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ui/src/components/ControlWrapper/ControlWrapper.tsx b/ui/src/components/ControlWrapper/ControlWrapper.tsx index 9bd79f6c9..4fc0c0cde 100644 --- a/ui/src/components/ControlWrapper/ControlWrapper.tsx +++ b/ui/src/components/ControlWrapper/ControlWrapper.tsx @@ -72,7 +72,6 @@ class ControlWrapper extends React.PureComponent { const { text, link, color, markdownType, token, linkText } = this.props.markdownMessage || {}; let rowView; - // console.log('render custom component', this.props); if (this.props?.entity?.type === 'custom') { const data = { diff --git a/ui/src/components/SingleInputComponent/SingleInputComponent.tsx b/ui/src/components/SingleInputComponent/SingleInputComponent.tsx index c4b8b92fc..ee5115c18 100755 --- a/ui/src/components/SingleInputComponent/SingleInputComponent.tsx +++ b/ui/src/components/SingleInputComponent/SingleInputComponent.tsx @@ -174,11 +174,15 @@ function SingleInputComponent(props: SingleInputComponentProps) { // hideClearBtn=true only passed for OAuth else its undefined // effectiveIsClearable button will be visible only for the required=false and createSearchChoice=false single-select fields. const effectiveIsClearable = !(effectiveDisabled || restProps.required || hideClearBtn); - return createSearchChoice ? ( Date: Thu, 31 Oct 2024 12:33:10 +0100 Subject: [PATCH 03/34] refactor: add types for Splunk modules (#1422) --- ui/src/types/modules.d.ts | 48 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/ui/src/types/modules.d.ts b/ui/src/types/modules.d.ts index aa9f8f7bc..16698a4a1 100644 --- a/ui/src/types/modules.d.ts +++ b/ui/src/types/modules.d.ts @@ -1,4 +1,22 @@ -declare module '@splunk/splunk-utils/config'; +declare module '@splunk/splunk-utils/config' { + export const CSRFToken: string | null; + export function getCSRFToken(): string | null; + export const isAvailable: boolean; + export function extractAppName(pathname?: string): string | undefined; + export const app: string | undefined; + export const appBuild: string | undefined; + export const buildNumber: number | undefined; + export const buildPushNumber: number | undefined; + export const config: Record | undefined; + export const locale: string | undefined; + export const portNumber: number | undefined; + export const rootPath: string | undefined; + export const serverTimezoneInfo: string | undefined; + export const splunkdPath: string | undefined; + export const username: string | undefined; + export const versionLabel: string | undefined; +} + declare module '@splunk/splunk-utils/url' { export type Sharing = '' | 'app' | 'global' | 'system'; @@ -32,6 +50,34 @@ declare module '@splunk/splunk-utils/url' { configOptions?: ConfigOptions ): string; } +declare module '@splunk/splunk-utils/fetch' { + export interface FetchInit { + method: string; + credentials: RequestCredentials; + headers: Record; + } + + export const defaultFetchInit: FetchInit; + + export function getDefaultFetchInit(): FetchInit; + + export interface ErrorMessage { + type: 'ERROR' | 'FATAL' | 'risky_command'; + text: string; + } + + export interface ResponseData { + messages?: ErrorMessage[]; + } + + export function findErrorMessage(response?: ResponseData): ErrorMessage | undefined; + + export function handleResponse( + expectedStatus: number | number[] + ): (res: Response) => Promise; + + export function handleError(defaultMessage: string): (res: Response) => Promise; +} declare module '@splunk/search-job'; // declaring modules as utils does not seem to have types From 6487bd7e585a3d571b8210b267b4e067513c9c0e Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Thu, 31 Oct 2024 13:33:18 +0100 Subject: [PATCH 04/34] test(ui): check actual request for oauth (#1419) --- .../components/BaseFormView/BaseFormView.tsx | 2 +- .../EntityModal/EntityModal.test.tsx | 98 ++++++++++++++----- ui/src/components/EntityModal/TestConfig.ts | 2 +- ui/src/types/window.d.ts | 2 +- 4 files changed, 79 insertions(+), 25 deletions(-) diff --git a/ui/src/components/BaseFormView/BaseFormView.tsx b/ui/src/components/BaseFormView/BaseFormView.tsx index 48ec38401..53a3366e4 100644 --- a/ui/src/components/BaseFormView/BaseFormView.tsx +++ b/ui/src/components/BaseFormView/BaseFormView.tsx @@ -1119,7 +1119,7 @@ class BaseFormView extends PureComponent { * using rest call once oauth code received from child window */ // eslint-disable-next-line consistent-return - handleOauthToken = (message: { code: string; error: unknown; state: unknown }) => { + handleOauthToken = (message: { code: string; error: unknown; state?: string }) => { // Check message for error. If error show error message. if (!message || (message && message.error) || message.code === undefined) { this.setErrorMsg(ERROR_OCCURRED_TRY_AGAIN); diff --git a/ui/src/components/EntityModal/EntityModal.test.tsx b/ui/src/components/EntityModal/EntityModal.test.tsx index 9b61a8809..c18ddf671 100644 --- a/ui/src/components/EntityModal/EntityModal.test.tsx +++ b/ui/src/components/EntityModal/EntityModal.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { AxiosResponse } from 'axios'; +import { http, HttpResponse } from 'msw'; import EntityModal, { EntityModalProps } from './EntityModal'; import { setUnifiedConfig } from '../../util/util'; import { @@ -18,10 +18,14 @@ import { getConfigWarningMessageAlwaysDisplay, WARNING_MESSAGES_ALWAYS_DISPLAY, } from './TestConfig'; -import { ERROR_AUTH_PROCESS_TERMINATED_TRY_AGAIN } from '../../constants/oAuthErrorMessage'; +import { + ERROR_AUTH_PROCESS_TERMINATED_TRY_AGAIN, + ERROR_STATE_MISSING_TRY_AGAIN, +} from '../../constants/oAuthErrorMessage'; import { Mode } from '../../constants/modes'; -import * as axiosWrapper from '../../util/axiosCallWrapper'; import { StandardPages } from '../../types/components/shareableTypes'; +import { server } from '../../mocks/server'; +import { invariant } from '../../util/invariant'; describe('Oauth field disabled on edit - diableonEdit property', () => { const handleRequestClose = jest.fn(); @@ -242,7 +246,7 @@ describe('EntityModal - auth_endpoint_token_access_type', () => { await userEvent.type(secretField, 'aaa'); } - const addButton = await screen.getByText('Add'); + const addButton = screen.getByText('Add'); expect(addButton).toBeInTheDocument(); const windowOpenSpy = jest.spyOn(window, 'open') as jest.Mock; @@ -384,7 +388,12 @@ describe('Default value', () => { }); describe('Oauth - separated endpoint authorization', () => { - const handleRequestClose = jest.fn(); + let handleRequestClose: jest.Mock<() => void>; + + beforeEach(() => { + handleRequestClose = jest.fn(); + }); + const setUpConfigWithSeparatedEndpoints = () => { const newConfig = getConfigWithSeparatedEndpointsOAuth(); setUnifiedConfig(newConfig); @@ -412,15 +421,16 @@ describe('Oauth - separated endpoint authorization', () => { // mock opening verification window windowOpenSpy.mockImplementation((url) => { - expect(url).toEqual( + expect(url).toContain( 'https://authendpoint/services/oauth2/authorize?response_type=code&client_id=Client%20Id&redirect_uri=http%3A%2F%2Flocalhost%2F' ); - + expect(url).toContain('state='); return { closed: true }; }); await userEvent.click(addButton); - windowOpenSpy.mockRestore(); + + return windowOpenSpy; }; const props = { @@ -459,29 +469,73 @@ describe('Oauth - separated endpoint authorization', () => { }); it('check if correct auth token endpoint created', async () => { + const requestHandler = jest.fn(); + server.use( + http.post('/servicesNS/nobody/-/demo_addon_for_splunk_oauth/oauth', ({ request }) => { + requestHandler(request); + return new HttpResponse(null, { status: 200 }); + }) + ); setUpConfigWithSeparatedEndpoints(); renderModalWithProps(props); - const backendTokenFunction = jest.fn(); await getFilledOauthFields(); const addButton = screen.getByRole('button', { name: /add/i }); - expect(addButton).toBeInTheDocument(); - await spyOnWindowOpen(addButton); + const openFn = await spyOnWindowOpen(addButton); + + expect(openFn).toHaveBeenCalled(); + const url = new URL(openFn.mock.calls[0][0]); + const stateCodeFromUrl = url.searchParams.get('state'); + invariant(stateCodeFromUrl, 'State code is not present in the url'); + + // triggering manually external oauth window behaviour after success authorization + const code = '200'; + window.getMessage({ code, state: stateCodeFromUrl, error: undefined }); + + await waitFor(async () => { + expect(requestHandler).toHaveBeenCalledTimes(1); + }); + + const receivedRequest: Request = requestHandler.mock.calls[0][0]; + const receivedBody = await receivedRequest.text(); + + const params = new URLSearchParams(receivedBody); + const receivedParsedBodyParams: Record = {}; + + params.forEach((value, key) => { + receivedParsedBodyParams[key] = value; + }); - // token is aquired on backend side so only thing we can check is if there is correct url created - jest.spyOn(axiosWrapper, 'axiosCallWrapper').mockImplementation((params) => { - backendTokenFunction((params?.body as unknown as URLSearchParams)?.get('url')); - return new Promise((r) => r({} as unknown as PromiseLike)); + expect(receivedParsedBodyParams).toMatchObject({ + method: 'POST', + url: 'https://tokenendpoint/services/oauth2/token', + grant_type: 'authorization_code', + client_id: 'Client Id', + client_secret: 'Client Secret', + code, + redirect_uri: 'http://localhost/', }); + }); + + it('should throw error if state value mismatch', async () => { + setUpConfigWithSeparatedEndpoints(); + renderModalWithProps(props); + + await getFilledOauthFields(); + const addButton = screen.getByRole('button', { name: /add/i }); + + const openFn = await spyOnWindowOpen(addButton); + + expect(openFn).toHaveBeenCalled(); + const url = new URL(openFn.mock.calls[0][0]); + const stateCodeFromUrl = url.searchParams.get('state'); // triggering manually external oauth window behaviour after success authorization - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (window as any).getMessage({ code: 200, msg: 'testing message for oauth' }); + const code = '200'; + const passedState = `tests${stateCodeFromUrl}`; + window.getMessage({ code, state: passedState, error: undefined }); - // only purpose is to check if backend function receinved correct token url - expect(backendTokenFunction).toHaveBeenCalledWith( - 'https://tokenendpoint/services/oauth2/token' - ); + expect(screen.getByText(ERROR_STATE_MISSING_TRY_AGAIN)).toBeInTheDocument(); }); }); diff --git a/ui/src/components/EntityModal/TestConfig.ts b/ui/src/components/EntityModal/TestConfig.ts index 85884b6e8..6a5a85070 100644 --- a/ui/src/components/EntityModal/TestConfig.ts +++ b/ui/src/components/EntityModal/TestConfig.ts @@ -419,7 +419,7 @@ const entityOauthOauthSeparatedEndpoints = [ auth_code_endpoint: '/services/oauth2/authorize', access_token_endpoint: '/services/oauth2/token', oauth_timeout: 3000, - oauth_state_enabled: false, + oauth_state_enabled: true, display: true, disableonEdit: false, enable: true, diff --git a/ui/src/types/window.d.ts b/ui/src/types/window.d.ts index f1b7cf20b..74c82457c 100644 --- a/ui/src/types/window.d.ts +++ b/ui/src/types/window.d.ts @@ -1,4 +1,4 @@ interface Window { open: () => void; - getMessage: (message: { code: string; error: unknown; state: unknown }) => void; + getMessage: (message: { code: string; error: unknown; state: string }) => void; } From 70c7e9d6bb2302c405bd48e0fb19aa2a552d967f Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Thu, 31 Oct 2024 14:34:05 +0100 Subject: [PATCH 05/34] refactor(types): allow to parse unknown errors (#1423) --- ui/jest.config.ts | 8 ++-- ui/src/util/messageUtil.test.ts | 76 +++++++++++++++++++++++++++++++++ ui/src/util/messageUtil.ts | 28 +++++++++--- 3 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 ui/src/util/messageUtil.test.ts diff --git a/ui/jest.config.ts b/ui/jest.config.ts index 0d4510a2d..625e56977 100644 --- a/ui/jest.config.ts +++ b/ui/jest.config.ts @@ -23,10 +23,10 @@ export default { coverageDirectory: 'coverage', coverageThreshold: { global: { - statements: 65, - branches: 56, - functions: 64, - lines: 65, + statements: 66, + branches: 57, + functions: 65, + lines: 66, }, }, testEnvironmentOptions: { diff --git a/ui/src/util/messageUtil.test.ts b/ui/src/util/messageUtil.test.ts new file mode 100644 index 000000000..1598b6963 --- /dev/null +++ b/ui/src/util/messageUtil.test.ts @@ -0,0 +1,76 @@ +import { parseErrorMsg } from './messageUtil'; +import messageDict from '../constants/messageDict'; + +describe('parseErrorMsg', () => { + it('should parse error message from error object', () => { + const error = { + response: { + data: { + messages: [{ text: 'Error message' }], + }, + }, + }; + const result = parseErrorMsg(error); + expect(result).toBe('Error message'); + }); + + it('should return unknown message if error object is not in expected format', () => { + const error = { response: {} }; + const result = parseErrorMsg(error); + expect(result).toBe(messageDict.unknown); + }); + + it('should return default error message if an exception occurs', () => { + const error = null; + const result = parseErrorMsg(error); + expect(result).toBe(messageDict.unknown); + }); + + it('should parse REST error with JSON message', () => { + const error = { + response: { + data: { + messages: [ + { + text: 'Unexpected error "" from python handler: "REST Error [404]: Not Found -- HTTP 404 Not Found -- b\'{"messages":[{"type":"ERROR","text":"Not Found"}]}\'". See splunkd.log/python.log for more details.', + }, + ], + }, + }, + }; + const result = parseErrorMsg(error); + expect(result).toBe('Not Found'); + }); + + it('should return original message if REST error message is not valid JSON', () => { + const error = { + response: { + data: { + messages: [ + { + text: 'Unexpected error "" from python handler: "REST Error [404]: Not Found -- HTTP 404 Not Found -- b\'Invalid JSON\'". See splunkd.log/python.log for more details.', + }, + ], + }, + }, + }; + const result = parseErrorMsg(error); + expect(result).toBe(`b'Invalid JSON'`); + }); + + it('should return original message if REST error message does not contain expected structure', () => { + const error = { + response: { + data: { + messages: [ + { + text: `Unexpected error "" from python handler: "REST Error [404]: Not Found -- HTTP 404 Not Found -- b'{"invalid":"structure"}'". See splunkd.log/python.log for more details.`, + }, + ], + }, + }, + }; + const result = parseErrorMsg(error); + expect(result).toBe(`b'{"invalid":"structure"}'`); + }); +}); diff --git a/ui/src/util/messageUtil.ts b/ui/src/util/messageUtil.ts index d34a8fb50..4cdf841f8 100644 --- a/ui/src/util/messageUtil.ts +++ b/ui/src/util/messageUtil.ts @@ -49,15 +49,29 @@ export const tryTrimErrorMessage = (msg: string) => { return msg; }; -export const parseErrorMsg = (err?: { - response?: { data?: { messages?: { text?: string }[] } }; -}) => { +export const parseErrorMsg = (err?: unknown) => { try { - const msg = err?.response?.data?.messages?.[0]?.text; - if (!msg) { - return messageDict.unknown; + if ( + err && + typeof err === 'object' && + 'response' in err && + typeof err.response === 'object' && + err.response && + 'data' in err.response && + typeof err.response.data === 'object' && + err.response.data && + 'messages' in err.response.data && + Array.isArray(err.response.data.messages) && + err.response.data.messages.length > 0 && + 'text' in err.response.data.messages[0] + ) { + const msg = err.response.data?.messages?.[0]?.text; + if (!msg) { + return messageDict.unknown; + } + return tryTrimErrorMessage(msg); } - return tryTrimErrorMessage(msg); + return messageDict.unknown; } catch (e) { return _('Error in processing the request'); } From 86b3a3ba33aee49c21ede8561f870b814025e50b Mon Sep 17 00:00:00 2001 From: Hetang Modi <62056057+hetangmodi-crest@users.noreply.github.com> Date: Tue, 5 Nov 2024 20:03:16 +0530 Subject: [PATCH 06/34] docs: update order list prefix and add lint (#1414) **Issue number:** - ## Summary ### Changes > Updating the order list convention and add lint check for the same. ### User experience > No impact to the user, they would see the doc as it is. ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [x] Changes have been tested * [ ] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --- .markdownlint.yaml | 4 ++++ docs/contributing.md | 10 +++++----- docs/entity/components.md | 2 +- docs/openapi.md | 9 +++++---- ui/README.md | 6 +++--- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 826fa9337..f8e2a2b71 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -33,6 +33,10 @@ MD025: false # MD028/no-blanks-blockquote MD028: false +# MD029/ordered-list-item-prefix +MD029: + style: one + # MD033/no-inline-html MD033: false diff --git a/docs/contributing.md b/docs/contributing.md index 0074c0191..f7141c226 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -47,7 +47,7 @@ UI tests will run automatically for any PR towards the `main` / `develop` branch poetry run ucc-gen build --source tests/testdata/test_addons/package_global_config_everything/package ``` -2. Install docker, and run containerized Splunk Enterprise using script: +1. Install docker, and run containerized Splunk Enterprise using script: ```bash ./scripts/run_splunk.sh @@ -55,9 +55,9 @@ UI tests will run automatically for any PR towards the `main` / `develop` branch There are mapped default Splunk ports to host. To use a different configuration, see [docker-splunk](https://splunk.github.io/docker-splunk/). Remember to mount the output package to the Splunk apps directory. -3. Install any browser specific to this browser driver, such as [chromedriver](https://chromedriver.chromium.org/getting-started/) for Chrome. +1. Install any browser specific to this browser driver, such as [chromedriver](https://chromedriver.chromium.org/getting-started/) for Chrome. -4. Run tests using the following command: +1. Run tests using the following command: ```bash poetry run pytest tests/ui @@ -85,8 +85,8 @@ UCC is a tool for Technology Add-ons (TAs), so it's important to test TA generat ### Overview 1. Install Dependencies for Your TA -2. Build the TA Using Your Local UCC Version -3. Package the TA into a .tar.gz file using `ucc-gen package` +1. Build the TA Using Your Local UCC Version +1. Package the TA into a .tar.gz file using `ucc-gen package` ### Installing TA Dependencies diff --git a/docs/entity/components.md b/docs/entity/components.md index 354489243..4c1aa1a43 100644 --- a/docs/entity/components.md +++ b/docs/entity/components.md @@ -582,7 +582,7 @@ All attributes provided: Index field has two internal validators: 1. REGEX that forces index names to start with a letter or digit and can only contain letters, numbers, underscores or hyphens. -2. LENGTH which allows for an index name to have of 1 to 80 characters. +1. LENGTH which allows for an index name to have of 1 to 80 characters. `endpointUrl` for that entity is `data/indexes?search=isInternal=0+disabled=0` diff --git a/docs/openapi.md b/docs/openapi.md index db28484ad..de925b3dc 100644 --- a/docs/openapi.md +++ b/docs/openapi.md @@ -50,6 +50,7 @@ Check [swagger](https://swagger.io/) or [other tools](https://github.com/OAI/Ope docker run -p 8081:8080 swaggerapi/swagger-editor ``` + Then go to: http://localhost:8081/ 1. Load the OpenAPI description document (File > Import file) @@ -81,7 +82,7 @@ Make sure you clicked the Authorize button, gave the username and password, and ### Instruction 1. Go to the directory where you downloaded `openapi.json` file -2. Run the following command: `docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/openapi.json -g python -o /local/restapi_client` +1. Run the following command: `docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate -i /local/openapi.json -g python -o /local/restapi_client` - make sure `openapi.json` is in the current directory - you can generate clients for other languages as well - run @@ -90,9 +91,9 @@ Make sure you clicked the Authorize button, gave the username and password, and to see the list of supported languages -3. The client should appear in `restapi_client`. Open that directory (`cd restapi_client`) -4. Install the client (`pip install .`) -5. See `README.md` for an example of usage +1. The client should appear in `restapi_client`. Open that directory (`cd restapi_client`) +1. Install the client (`pip install .`) +1. See `README.md` for an example of usage ### Troubleshooting diff --git a/ui/README.md b/ui/README.md index 0748b74cd..5c4817fd9 100644 --- a/ui/README.md +++ b/ui/README.md @@ -9,8 +9,8 @@ For a quickstart, please check [quick_start_ui.sh](../scripts/quick_start_ui.sh) ## Getting Started 1. Clone the repo. -2. Install yarn (>= 1.2) if you haven't already: `npm install --global yarn`. -3. Run the setup task: `yarn run setup`. +1. Install yarn (>= 1.2) if you haven't already: `npm install --global yarn`. +1. Run the setup task: `yarn run setup`. After completing these steps, the following tasks will be available: @@ -82,7 +82,7 @@ Due to differences in application appearance between MacOS and Linux (especially yarn run storybook ``` -2. Capture and Update Screenshots: +1. Capture and Update Screenshots: Once Storybook is running, use Docker Compose to update the screenshots: From 65f199c09f22f08822337f4a6510ed4c220c71f7 Mon Sep 17 00:00:00 2001 From: Hetang Modi <62056057+hetangmodi-crest@users.noreply.github.com> Date: Tue, 5 Nov 2024 20:05:52 +0530 Subject: [PATCH 07/34] ci: add expected failure for appinspect-api check (#1427) **Issue number:** - ## Summary ### Changes > Added the expected failure for appinspect-api check, the failure is coming from splunk-sdk. ### User experience > No impact to users as this test belongs to CI pipeline ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [ ] Changes have been tested * [ ] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --- .../.appinspect_api.expect.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/.appinspect_api.expect.yaml b/tests/testdata/expected_addons/expected_output_global_config_everything/.appinspect_api.expect.yaml index d57b094a2..d160dc003 100644 --- a/tests/testdata/expected_addons/expected_output_global_config_everything/.appinspect_api.expect.yaml +++ b/tests/testdata/expected_addons/expected_output_global_config_everything/.appinspect_api.expect.yaml @@ -1,2 +1,4 @@ check_for_compiled_python: - comment: 'Expected failure as compiled python file was detected in your build.' \ No newline at end of file + comment: 'Expected failure as compiled python file was detected in your build.' +check_for_search_v1_endpoint: + comment: 'The error is generated from splunklib, hence will be fixed once fixed in the library' From 88a5bdd0c4fb79a75679d6fa6bea832ec7d6ade7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 17:25:02 +0100 Subject: [PATCH 08/34] chore(deps): update npm (#1402) --- ui/jest.polyfills.ts | 2 + ui/package.json | 44 +- ui/src/public/mockServiceWorker.js | 15 +- ui/yarn.lock | 1410 +++++++++++++++++++++------- 4 files changed, 1130 insertions(+), 341 deletions(-) diff --git a/ui/jest.polyfills.ts b/ui/jest.polyfills.ts index 6fadf302e..c57c336d6 100644 --- a/ui/jest.polyfills.ts +++ b/ui/jest.polyfills.ts @@ -10,10 +10,12 @@ */ const { TextDecoder, TextEncoder } = require('node:util'); +const { TransformStream } = require('node:stream/web'); Object.defineProperties(globalThis, { TextDecoder: { value: TextDecoder }, TextEncoder: { value: TextEncoder }, + TransformStream: { value: TransformStream }, }); const { Blob } = require('node:buffer'); diff --git a/ui/package.json b/ui/package.json index fffea826f..14e7bd860 100644 --- a/ui/package.json +++ b/ui/package.json @@ -36,7 +36,7 @@ "@splunk/themes": "^0.22.0", "@splunk/ui-utils": "^1.7.1", "@splunk/visualization-context": "^26.3.0", - "@storybook/test": "^8.3.5", + "@storybook/test": "^8.3.6", "axios": "^1.7.7", "immutability-helper": "^3.1.1", "license-webpack-plugin": "^4.0.2", @@ -51,32 +51,32 @@ "zod": "^3.23.8" }, "devDependencies": { - "@babel/core": "^7.25.8", - "@babel/eslint-parser": "^7.25.8", - "@babel/plugin-transform-runtime": "^7.25.7", - "@babel/preset-env": "^7.25.8", - "@babel/preset-react": "^7.25.7", - "@kickstartds/core": "^4.0.5", + "@babel/core": "^7.26.0", + "@babel/eslint-parser": "^7.25.9", + "@babel/plugin-transform-runtime": "^7.25.9", + "@babel/preset-env": "^7.26.0", + "@babel/preset-react": "^7.25.9", + "@kickstartds/core": "^4.1.0", "@kickstartds/storybook-addon-jsonschema": "^4.0.0", "@splunk/babel-preset": "^4.0.0", "@splunk/eslint-config": "^4.0.0", "@splunk/webpack-configs": "^7.0.2", - "@storybook/addon-a11y": "^8.3.5", - "@storybook/addon-essentials": "^8.3.5", - "@storybook/addon-interactions": "^8.3.5", - "@storybook/addon-links": "^8.3.5", + "@storybook/addon-a11y": "^8.3.6", + "@storybook/addon-essentials": "^8.3.6", + "@storybook/addon-interactions": "^8.3.6", + "@storybook/addon-links": "^8.3.6", "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/blocks": "^8.3.5", - "@storybook/react": "^8.3.5", - "@storybook/react-webpack5": "^8.3.5", + "@storybook/blocks": "^8.3.6", + "@storybook/react": "^8.3.6", + "@storybook/react-webpack5": "^8.3.6", "@storybook/test-runner": "^0.19.1", "@testing-library/dom": "^8.20.1", - "@testing-library/jest-dom": "^6.5.0", + "@testing-library/jest-dom": "^6.6.2", "@testing-library/react": "^12.1.5", "@testing-library/user-event": "^14.5.2", - "@types/jest": "^29.5.13", + "@types/jest": "^29.5.14", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.16.11", + "@types/node": "^20.17.1", "@types/react": "^16.14.62", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", @@ -91,21 +91,21 @@ "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest": "^28.8.3", - "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.37.1", + "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-storybook": "^0.9.0", + "eslint-plugin-storybook": "^0.10.1", "fork-ts-checker-webpack-plugin": "^9.0.2", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-image-snapshot": "^6.4.0", "js-yaml": "^4.1.0", - "msw": "2.4.11", + "msw": "2.5.2", "msw-storybook-addon": "^2.0.3", "prettier": "^2.8.8", "querystring-es3": "^0.2.1", - "storybook": "^8.3.5", + "storybook": "^8.3.6", "style-loader": "^4.0.0", "stylelint": "^14.16.1", "ts-node": "^10.9.2", diff --git a/ui/src/public/mockServiceWorker.js b/ui/src/public/mockServiceWorker.js index b65d2b97b..ecabdda5d 100644 --- a/ui/src/public/mockServiceWorker.js +++ b/ui/src/public/mockServiceWorker.js @@ -8,8 +8,8 @@ * - Please do NOT serve this file on production. */ -const PACKAGE_VERSION = '2.4.8' -const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' +const PACKAGE_VERSION = '2.5.2' +const INTEGRITY_CHECKSUM = '07a8241b182f8a246a7cd39894799a9e' const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') const activeClientIds = new Set() @@ -62,7 +62,12 @@ self.addEventListener('message', async function (event) { sendToClient(client, { type: 'MOCKING_ENABLED', - payload: true, + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, }) break } @@ -155,6 +160,10 @@ async function handleRequest(event, requestId) { async function resolveMainClient(event) { const client = await self.clients.get(event.clientId) + if (activeClientIds.has(event.clientId)) { + return client + } + if (client?.frameType === 'top-level') { return client } diff --git a/ui/yarn.lock b/ui/yarn.lock index f19e8b440..270b3e8c0 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -23,12 +23,26 @@ "@babel/highlight" "^7.25.7" picocolors "^1.0.0" +"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz#9374b5cd068d128dac0b94ff482594273b1c2815" + integrity sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7", "@babel/compat-data@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402" integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.22.5", "@babel/core@^7.23.7", "@babel/core@^7.23.9", "@babel/core@^7.25.8", "@babel/core@^7.7.5": +"@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz#f02ba6d34e88fadd5e8861e8b38902f43cc1c819" + integrity sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.22.5", "@babel/core@^7.23.7", "@babel/core@^7.23.9", "@babel/core@^7.7.5": version "7.25.8" resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6" integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== @@ -49,10 +63,31 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz#0119dec46be547d7a339978dedb9d29e517c2443" - integrity sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg== +"@babel/core@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" + integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" @@ -68,6 +103,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" +"@babel/generator@^7.25.9", "@babel/generator@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz#505cc7c90d92513f458a477e5ef0703e7c91b8d7" + integrity sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w== + dependencies: + "@babel/parser" "^7.26.0" + "@babel/types" "^7.26.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972" @@ -75,6 +121,13 @@ dependencies: "@babel/types" "^7.25.7" +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + dependencies: + "@babel/types" "^7.25.9" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz#d721650c1f595371e0a23ee816f1c3c488c0d622" @@ -83,6 +136,14 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" @@ -94,6 +155,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz#5d65074c76cae75607421c00d6bd517fe1892d6b" @@ -107,6 +179,19 @@ "@babel/traverse" "^7.25.7" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz#dcb464f0e2cdfe0c25cc2a0a59c37ab940ce894e" @@ -116,6 +201,15 @@ regexpu-core "^6.1.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.1.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.6.2": version "0.6.2" resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" @@ -135,6 +229,14 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" @@ -143,6 +245,14 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-transforms@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" @@ -153,6 +263,15 @@ "@babel/helper-validator-identifier" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-optimise-call-expression@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz#1de1b99688e987af723eed44fa7fc0ee7b97d77a" @@ -160,11 +279,23 @@ dependencies: "@babel/types" "^7.25.7" +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== +"@babel/helper-plugin-utils@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + "@babel/helper-remap-async-to-generator@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz#9efdc39df5f489bcd15533c912b6c723a0a65021" @@ -174,6 +305,15 @@ "@babel/helper-wrap-function" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-replace-supers@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz#38cfda3b6e990879c71d08d0fef9236b62bd75f5" @@ -183,6 +323,15 @@ "@babel/helper-optimise-call-expression" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-simple-access@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" @@ -191,6 +340,14 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz#382831c91038b1a6d32643f5f49505b8442cb87c" @@ -199,21 +356,44 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-string-parser@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + "@babel/helper-wrap-function@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz#9f6021dd1c4fdf4ad515c809967fc4bac9a70fe7" @@ -223,6 +403,15 @@ "@babel/traverse" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helpers@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" @@ -231,6 +420,14 @@ "@babel/template" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + "@babel/highlight@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" @@ -248,6 +445,13 @@ dependencies: "@babel/types" "^7.25.8" +"@babel/parser@^7.25.9", "@babel/parser@^7.26.0": + version "7.26.1" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz#44e02499960df2cdce2c456372a3e8e0c3c5c975" + integrity sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw== + dependencies: + "@babel/types" "^7.26.0" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz#93969ac50ef4d68b2504b01b758af714e4cbdd64" @@ -256,6 +460,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz#a338d611adb9dcd599b8b1efa200c88ebeffe046" @@ -263,6 +475,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz#c5f755e911dfac7ef6957300c0f9c4a8c18c06f4" @@ -270,6 +489,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz#3b7ea04492ded990978b6deaa1dfca120ad4455a" @@ -279,6 +505,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" "@babel/plugin-transform-optional-chaining" "^7.25.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz#9622b1d597a703aa3a921e6f58c9c2d9a028d2c5" @@ -287,6 +522,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-proposal-class-properties@^7.2.1": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" @@ -346,6 +589,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz#d78dd0499d30df19a598e63ab895e21b909bc43f" @@ -353,6 +603,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -374,6 +631,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -452,6 +716,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-async-generator-functions@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz#3331de02f52cc1f2c75b396bec52188c85b0b1ec" @@ -461,6 +732,15 @@ "@babel/helper-remap-async-to-generator" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-transform-async-to-generator@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52" @@ -470,6 +750,15 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-remap-async-to-generator" "^7.25.7" +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz#e0b8843d5571719a2f1bf7e284117a3379fcc17c" @@ -477,6 +766,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-block-scoping@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz#6dab95e98adf780ceef1b1c3ab0e55cd20dd410a" @@ -484,6 +780,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-class-properties@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz#a389cfca7a10ac80e3ff4c75fca08bd097ad1523" @@ -492,6 +795,14 @@ "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-class-static-block@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz#a8af22028920fe404668031eceb4c3aadccb5262" @@ -500,6 +811,14 @@ "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-classes@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz#5103206cf80d02283bbbd044509ea3b65d0906bb" @@ -512,6 +831,18 @@ "@babel/traverse" "^7.25.7" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz#7f621f0aa1354b5348a935ab12e3903842466f65" @@ -520,6 +851,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/template" "^7.25.7" +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/plugin-transform-destructuring@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz#f6f26a9feefb5aa41fd45b6f5838901b5333d560" @@ -527,6 +866,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-dotall-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz#9d775c4a3ff1aea64045300fcd4309b4a610ef02" @@ -535,6 +881,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-duplicate-keys@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz#fbba7d1155eab76bd4f2a038cbd5d65883bd7a93" @@ -542,6 +896,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz#102b31608dcc22c08fbca1894e104686029dc141" @@ -550,6 +911,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-dynamic-import@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz#f1edbe75b248cf44c70c8ca8ed3818a668753aaa" @@ -557,6 +926,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz#5961a3a23a398faccd6cddb34a2182807d75fb5f" @@ -565,6 +941,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-export-namespace-from@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz#d1988c3019a380b417e0516418b02804d3858145" @@ -572,6 +956,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-for-of@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz#0acfea0f27aa290818b5b48a5a44b3f03fc13669" @@ -580,6 +971,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-function-name@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz#7e394ccea3693902a8b50ded8b6ae1fa7b8519fd" @@ -589,6 +988,15 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-transform-json-strings@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz#6fb3ec383a2ea92652289fdba653e3f9de722694" @@ -596,6 +1004,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-literals@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz#70cbdc742f2cfdb1a63ea2cbd018d12a60b213c3" @@ -603,6 +1018,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz#01868ff92daa9e525b4c7902aa51979082a05710" @@ -610,6 +1032,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-member-expression-literals@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz#0a36c3fbd450cc9e6485c507f005fa3d1bc8fca5" @@ -617,6 +1046,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-modules-amd@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz#bb4e543b5611f6c8c685a2fd485408713a3adf3d" @@ -625,6 +1061,14 @@ "@babel/helper-module-transforms" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-modules-commonjs@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz#173f0c791bb7407c092ce6d77ee90eb3f2d1d2fd" @@ -634,6 +1078,15 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-simple-access" "^7.25.7" +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" + "@babel/plugin-transform-modules-systemjs@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz#8b14d319a177cc9c85ef8b0512afd429d9e2e60b" @@ -644,6 +1097,16 @@ "@babel/helper-validator-identifier" "^7.25.7" "@babel/traverse" "^7.25.7" +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-transform-modules-umd@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz#00ee7a7e124289549381bfb0e24d87fd7f848367" @@ -652,6 +1115,14 @@ "@babel/helper-module-transforms" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz#a2f3f6d7f38693b462542951748f0a72a34d196d" @@ -660,6 +1131,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-new-target@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz#52b2bde523b76c548749f38dc3054f1f45e82bc9" @@ -667,6 +1146,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz#befb4900c130bd52fccf2b926314557987f1b552" @@ -674,6 +1160,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-numeric-separator@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz#91e370486371637bd42161052f2602c701386891" @@ -681,6 +1174,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-object-rest-spread@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz#0904ac16bcce41df4db12d915d6780f85c7fb04b" @@ -690,6 +1190,15 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-transform-parameters" "^7.25.7" +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-object-super@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz#582a9cea8cf0a1e02732be5b5a703a38dedf5661" @@ -698,6 +1207,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-replace-supers" "^7.25.7" +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz#2649b86a3bb202c6894ec81a6ddf41b94d8f3103" @@ -705,6 +1222,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-optional-chaining@^7.25.7", "@babel/plugin-transform-optional-chaining@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz#f46283b78adcc5b6ab988a952f989e7dce70653f" @@ -713,6 +1237,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz#80c38b03ef580f6d6bffe1c5254bb35986859ac7" @@ -720,6 +1252,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-private-methods@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz#c790a04f837b4bd61d6b0317b43aa11ff67dce80" @@ -728,6 +1267,14 @@ "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-private-property-in-object@^7.25.8": version "7.25.8" resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz#1234f856ce85e061f9688764194e51ea7577c434" @@ -737,6 +1284,15 @@ "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-property-literals@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz#a8612b4ea4e10430f00012ecf0155662c7d6550d" @@ -744,6 +1300,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-react-display-name@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz#2753e875a1b702fb1d806c4f5d4c194d64cadd88" @@ -751,6 +1314,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-react-jsx-development@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz#2fbd77887b8fa2942d7cb61edf1029ea1b048554" @@ -758,6 +1328,13 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.25.7" +"@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz#f5e2af6020a562fe048dd343e571c4428e6c5632" @@ -769,6 +1346,17 @@ "@babel/plugin-syntax-jsx" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz#6d0b8dadb2d3c5cbb8ade68c5efd49470b0d65f7" @@ -777,6 +1365,14 @@ "@babel/helper-annotate-as-pure" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-regenerator@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz#6eb006e6d26f627bc2f7844a9f19770721ad6f3e" @@ -785,6 +1381,22 @@ "@babel/helper-plugin-utils" "^7.25.7" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-reserved-words@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz#dc56b25e02afaabef3ce0c5b06b0916e8523e995" @@ -792,13 +1404,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-runtime@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz#435a4fab67273f00047dc806e05069c9c6344e12" - integrity sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg== +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-runtime@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" @@ -811,6 +1430,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-spread@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz#df83e899a9fc66284ee601a7b738568435b92998" @@ -819,6 +1445,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-sticky-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz#341c7002bef7f29037be7fb9684e374442dd0d17" @@ -826,6 +1460,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-template-literals@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz#e566c581bb16d8541dd8701093bb3457adfce16b" @@ -833,6 +1474,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-typeof-symbol@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz#debb1287182efd20488f126be343328c679b66eb" @@ -840,6 +1488,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-typescript@^7.8.3": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz#8fc7c3d28ddd36bce45b9b48594129d0e560cfbe" @@ -858,6 +1513,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz#25349197cce964b1343f74fa7cfdf791a1b1919e" @@ -866,6 +1528,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-unicode-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz#f93a93441baf61f713b6d5552aaa856bfab34809" @@ -874,6 +1544,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex@^7.25.7": version "7.25.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz#d1b3295d29e0f8f4df76abc909ad1ebee919560c" @@ -882,7 +1560,15 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" -"@babel/preset-env@^7.2.0", "@babel/preset-env@^7.25.8": +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/preset-env@^7.2.0": version "7.25.8" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz#dc6b719627fb29cd9cccbbbe041802fd575b524c" integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg== @@ -956,6 +1642,81 @@ core-js-compat "^3.38.1" semver "^6.3.1" +"@babel/preset-env@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.38.1" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -965,7 +1726,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.25.7": +"@babel/preset-react@^7.0.0": version "7.25.7" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.7.tgz#081cbe1dea363b732764d06a0fdda67ffa17735d" integrity sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg== @@ -977,6 +1738,18 @@ "@babel/plugin-transform-react-jsx-development" "^7.25.7" "@babel/plugin-transform-react-pure-annotations" "^7.25.7" +"@babel/preset-react@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz#5f473035dc2094bcfdbc7392d0766bd42dce173e" + integrity sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.17.8", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.25.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.25.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" @@ -993,6 +1766,15 @@ "@babel/parser" "^7.25.7" "@babel/types" "^7.25.7" +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/traverse@^7.18.9", "@babel/traverse@^7.25.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.25.7" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" @@ -1006,6 +1788,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.25.7", "@babel/types@^7.25.8", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.25.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" @@ -1015,6 +1810,14 @@ "@babel/helper-validator-identifier" "^7.25.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.9", "@babel/types@^7.26.0": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -1431,50 +2234,38 @@ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@inquirer/confirm@^3.0.0": - version "3.2.0" - resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz#6af1284670ea7c7d95e3f1253684cfbd7228ad6a" - integrity sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw== +"@inquirer/confirm@^5.0.0": + version "5.0.1" + resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.1.tgz#35e0aa0f9fdaadee3acb1c42024e707af308fced" + integrity sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw== dependencies: - "@inquirer/core" "^9.1.0" - "@inquirer/type" "^1.5.3" + "@inquirer/core" "^10.0.1" + "@inquirer/type" "^3.0.0" -"@inquirer/core@^9.1.0": - version "9.2.1" - resolved "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1" - integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg== - dependencies: - "@inquirer/figures" "^1.0.6" - "@inquirer/type" "^2.0.0" - "@types/mute-stream" "^0.0.4" - "@types/node" "^22.5.5" - "@types/wrap-ansi" "^3.0.0" +"@inquirer/core@^10.0.1": + version "10.0.1" + resolved "https://registry.npmjs.org/@inquirer/core/-/core-10.0.1.tgz#22068da87d8f6317452172dfd521e811ccbcb90e" + integrity sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ== + dependencies: + "@inquirer/figures" "^1.0.7" + "@inquirer/type" "^3.0.0" ansi-escapes "^4.3.2" cli-width "^4.1.0" - mute-stream "^1.0.0" + mute-stream "^2.0.0" signal-exit "^4.1.0" strip-ansi "^6.0.1" wrap-ansi "^6.2.0" yoctocolors-cjs "^2.1.2" -"@inquirer/figures@^1.0.6": +"@inquirer/figures@^1.0.7": version "1.0.7" resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b" integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw== -"@inquirer/type@^1.5.3": - version "1.5.5" - resolved "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b" - integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA== - dependencies: - mute-stream "^1.0.0" - -"@inquirer/type@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6" - integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag== - dependencies: - mute-stream "^1.0.0" +"@inquirer/type@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@inquirer/type/-/type-3.0.0.tgz#1762ebe667ec1d838012b20bf0cf90b841ba68bc" + integrity sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1759,10 +2550,10 @@ resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz#6008e35b9d9d8ee27bc4bfaa70c8cbf33a537b4c" integrity sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA== -"@kickstartds/core@^4.0.5": - version "4.0.5" - resolved "https://registry.npmjs.org/@kickstartds/core/-/core-4.0.5.tgz#9f786127729324611a97edf84052e8b752bc915e" - integrity sha512-O18cSJub+UyDZaVNAvXiIH5U96HdCHb4ufID3QBOz+9/zkMgBT4XnEOa/f0owd85HbH3edWz88CPHxytMI4wdA== +"@kickstartds/core@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@kickstartds/core/-/core-4.1.0.tgz#9d5f103fe3c8808665146ab652d8096195bc9c85" + integrity sha512-QvL1LORgI61CdLKX5wCZ/+/D61ywbIfmUqrNHp1QrqnnTQ8hHKW1qSBUKLsolctCjDCj5xJ0H/vvKE/YKxwjkA== dependencies: "@babel/runtime" "^7.21.5" bourbon "^7.3.0" @@ -1855,10 +2646,10 @@ dependencies: "@types/mdx" "^2.0.0" -"@mswjs/interceptors@^0.35.8": - version "0.35.9" - resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz#1e1488ff2f333683d374eccc8c0f4d5d851c6d3d" - integrity sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ== +"@mswjs/interceptors@^0.36.5": + version "0.36.6" + resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.36.6.tgz#97560cca0d7f42c41d185ad404205fe14735cd30" + integrity sha512-issnYydStyH0wPEeU7CMwfO7kI668ffVtzKRMRS7H7BliOYuPuwEZxh9dwiXV+oeHBxT5SXT0wPwV8T7V2PJUA== dependencies: "@open-draft/deferred-promise" "^2.2.0" "@open-draft/logger" "^0.3.0" @@ -2896,18 +3687,18 @@ resolved "https://registry.npmjs.org/@splunkdev/cloud-sdk/-/cloud-sdk-15.0.0.tgz#30a49eb2e8f26eb1569c4e97402a473dc7f96883" integrity sha512-6oqdH9ljEpnnt6TjkkZuCo3w0IBJH6fiTKMsVIVjaZDBPaoUhxSdRFuXOO+SI/8qf21p+xaGYbepeKZ1ne2HTQ== -"@storybook/addon-a11y@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.5.tgz#b40d519013961c87af8c1394253a2651d90793ae" - integrity sha512-/19UO8IXbyfcYK5K8ejSYF+hC+EK79c0bBPHMNeYSFOHSqQM3KoMo+TLIcLsuhuRClmlM+4Zs+VSIYDwc+d3ig== +"@storybook/addon-a11y@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.6.tgz#4d4528718b378886b7f5602880162145f819abad" + integrity sha512-EeVzUN+WaLtz/DXVBL3rIGvP8+pTuJXA3lEz9CbTQXRO7QMhzTTXLKmp8xmSA2w5H01a8XpjLcZ5LYjdKrvw0g== dependencies: - "@storybook/addon-highlight" "8.3.5" + "@storybook/addon-highlight" "8.3.6" axe-core "^4.2.0" -"@storybook/addon-actions@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.5.tgz#03fdb891114439ed47cb7df6ef21826530449db7" - integrity sha512-t8D5oo+4XfD+F8091wLa2y/CDd/W2lExCeol5Vm1tp5saO+u6f2/d7iykLhTowWV84Uohi3D073uFeyTAlGebg== +"@storybook/addon-actions@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.6.tgz#80c5dbfc2278d72dc461a954bb729165ee1dfecb" + integrity sha512-nOqgl0WoZK2KwjaABaXMoIgrIHOQl9inOzJvqQau0HOtsvnXGXYfJXYnpjZenoZDoZXKbUDl0U2haDFx2a2fJw== dependencies: "@storybook/global" "^5.0.0" "@types/uuid" "^9.0.1" @@ -2915,35 +3706,35 @@ polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-backgrounds@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.5.tgz#479ecb6181441e7f8429569bd7cefdb74058c12f" - integrity sha512-IQGjDujuw8+iSqKREdkL8I5E/5CAHZbfOWd4A75PQK2D6qZ0fu/xRwTOQOH4jP6xn/abvfACOdL6A0d5bU90ag== +"@storybook/addon-backgrounds@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.6.tgz#81a92ca45e05858f3cee54ce33766de397abb324" + integrity sha512-yBn+a8i5OJzJaX6Bx5MAkfei7c2nvq+RRmvuyvxw11rtDGR6Nz4OBBe56reWxo868wVUggpRTPJCMVe5tDYgVg== dependencies: "@storybook/global" "^5.0.0" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.5.tgz#d9b7aec16e2673a473ab018b3b453cd114628181" - integrity sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ== +"@storybook/addon-controls@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.6.tgz#a61449e50077e9f90d2e15d2594b2bcffb4c03b3" + integrity sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA== dependencies: "@storybook/global" "^5.0.0" dequal "^2.0.2" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.5.tgz#df9e3310b7a63355184f5a2a7f2e2aa396588765" - integrity sha512-MOVfo1bY8kXTzbvmWnx3UuSO4WNykFz7Edvb3mxltNyuW7UDRZGuIuSe32ddT/EtLJfurrC9Ja3yBy4KBUGnMA== +"@storybook/addon-docs@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.6.tgz#b03ad160475b7920ef03833bd2674ea62f872d23" + integrity sha512-31Rk1TOhDIzGM2wNCUIB1xKuWtArW0D2Puua9warEXlQ3FtvwmxnPrwbIzw6ufYZDWPwl9phDYTcRh8WqZIoGg== dependencies: "@mdx-js/react" "^3.0.0" - "@storybook/blocks" "8.3.5" - "@storybook/csf-plugin" "8.3.5" + "@storybook/blocks" "8.3.6" + "@storybook/csf-plugin" "8.3.6" "@storybook/global" "^5.0.0" - "@storybook/react-dom-shim" "8.3.5" + "@storybook/react-dom-shim" "8.3.6" "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" fs-extra "^11.1.0" react "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -2952,74 +3743,74 @@ rehype-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.5.tgz#59599a75e3f72d1048d715f3ec35a4c07149b2f8" - integrity sha512-hXTtPuN4/IsXjUrkMPAuz1qKAl8DovdXpjQgjQs7jSAVx3kc4BZaGqJ3gaVenKtO8uDchmA92BoQygpkc8eWhw== - dependencies: - "@storybook/addon-actions" "8.3.5" - "@storybook/addon-backgrounds" "8.3.5" - "@storybook/addon-controls" "8.3.5" - "@storybook/addon-docs" "8.3.5" - "@storybook/addon-highlight" "8.3.5" - "@storybook/addon-measure" "8.3.5" - "@storybook/addon-outline" "8.3.5" - "@storybook/addon-toolbars" "8.3.5" - "@storybook/addon-viewport" "8.3.5" +"@storybook/addon-essentials@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.6.tgz#b8a0bbcad10ecd26cddddb517b4a864e4b65de37" + integrity sha512-MQPFvThlGU7wlda1xhBPQCmDh90cSSZ31OsVs1uC5kJh0aLbY2gYXPurq1G54kzrYo8SMfBxsXrCplz8Ir6UTg== + dependencies: + "@storybook/addon-actions" "8.3.6" + "@storybook/addon-backgrounds" "8.3.6" + "@storybook/addon-controls" "8.3.6" + "@storybook/addon-docs" "8.3.6" + "@storybook/addon-highlight" "8.3.6" + "@storybook/addon-measure" "8.3.6" + "@storybook/addon-outline" "8.3.6" + "@storybook/addon-toolbars" "8.3.6" + "@storybook/addon-viewport" "8.3.6" ts-dedent "^2.0.0" -"@storybook/addon-highlight@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.5.tgz#62293e7b39844ded33bb4ba7ee79c3c96d997fe2" - integrity sha512-ku0epul9aReCR3Gv/emwYnsqg3vgux5OmYMjoDcJC7s+LyfweSzLV/f5t9gSHazikJElh5TehtVkWbC4QfbGSw== +"@storybook/addon-highlight@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.6.tgz#34c28e8ee0f71b2dad579ab11bf66962d5393bf9" + integrity sha512-A7uU+1OPVXGpkklEUJjSl2VEEDLCSNvmffUJlvW1GjajsNFIHOW2CSD+KnfFlQyPxyVbnWAYLqUP4XJxoqrvDw== dependencies: "@storybook/global" "^5.0.0" -"@storybook/addon-interactions@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz#c971925937aeb6d66bf108dc27a90a4a9cbbf8f4" - integrity sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A== +"@storybook/addon-interactions@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.6.tgz#ae03320903688e97934c37a211b3f1a45312248c" + integrity sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw== dependencies: "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.3.5" - "@storybook/test" "8.3.5" + "@storybook/instrumenter" "8.3.6" + "@storybook/test" "8.3.6" polished "^4.2.2" ts-dedent "^2.2.0" -"@storybook/addon-links@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.5.tgz#1621afd8be06af6de5e942644053d5136cc5bb83" - integrity sha512-giRCpn6cfJMYPnVJkojoQDO5ae6098fgY9YgAhwaJej/9dufNcioFdbiyfK1vyzbG6TGeTmJ9ncWCXgWRtzxPQ== +"@storybook/addon-links@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.6.tgz#2388083f7f53936061cb8cd5d5a40ea116fad785" + integrity sha512-EGEH/kEjndEldbqyiJ8XSASkxqwzL/lgA/+6mHpa6Ljxhk1s5IMGcdA1ymJYJ2BpNdkUxRj/uxAa38eGcQiJ/g== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.5.tgz#4eef622137f9ee615eb179e5e2af050ea0f7ab8b" - integrity sha512-6GVehgbHhFIFS69xSfRV+12VK0cnuIAtZdp1J3eUCc2ATrcigqVjTM6wzZz6kBuX6O3dcusr7Wg46KtNliqLqg== +"@storybook/addon-measure@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.6.tgz#874939b2b6aafb29aed23cd74ee7db3c7f338f33" + integrity sha512-VHWeGgYjhzhwb2WAqYW/qyEPqg5pwKR/XqFfd+3tEirUs/64olL1l3lzLwZ8Cm07cJ81T8Z4myywb9kObZfQlw== dependencies: "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" -"@storybook/addon-outline@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.5.tgz#274a497b9a6b391bf3c47aa61e19ddc28cbae395" - integrity sha512-dwmK6GzjEnQP9Yo0VnBUQtJkXZlXdfjWyskZ/IlUVc+IFdeeCtIiMyA92oMfHo8eXt0k1g21ZqMaIn7ZltOuHw== +"@storybook/addon-outline@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.6.tgz#0c68a26b54a9294ecf6369473c70132c8d1c23a4" + integrity sha512-+VXpM8SIHX2cn30qLlMvER9/6iioFRSn2sAfLniqy4RrcQmcMP+qgE7ZzbzExt7cneJh3VFsYqBS/HElu14Vgg== dependencies: "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.5.tgz#7328fed0f4a24c6828ba23e06b9cddd0d3e00e2b" - integrity sha512-Ml2gc9q8WbteDvmuAZGgBxt5SqWMXzuTkMjlsA8EB53hlkN1w9esX4s8YtBeNqC3HKoUzcdq8uexSBqU8fDbSA== +"@storybook/addon-toolbars@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.6.tgz#d06068c96f5a80da2040f15f521c0927e8b0c2d4" + integrity sha512-FJH+lRoZXENfpMR/G09ZqB0TmL/k6bv07GN1ysoVs420tKRgjfz6uXaZz5COrhcdISr5mTNmG+mw9x7xXTfX3Q== -"@storybook/addon-viewport@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz#10f10871eba32cf6c484db199241122184a4324b" - integrity sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw== +"@storybook/addon-viewport@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.6.tgz#3b95fc33335f75010f0ba6fd552ada388ab64add" + integrity sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA== dependencies: memoizerific "^1.11.3" @@ -3031,10 +3822,10 @@ "@babel/core" "^7.23.7" babel-loader "^9.1.3" -"@storybook/blocks@8.3.5", "@storybook/blocks@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.5.tgz#35e20efb0c13a235832dd945520ff8ac61f40717" - integrity sha512-8cHTdTywolTHlgwN8I7YH7saWAIjGzV617AwjhJ95AKlC0VtpO1gAFcAgCqr4DU9eMc+LZuvbnaU/RSvA5eCCQ== +"@storybook/blocks@8.3.6", "@storybook/blocks@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.6.tgz#ac2e4f07a4df23004b3361c592c2cffe6b95464a" + integrity sha512-Oc5jU6EzfsENjrd91KcKyEKBh60RT+8uyLi1RIrymC2C/mzZMTEoNIrbnQt0eIqbjlHxn6y9JMJxHu4NJ4EmZg== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" @@ -3051,12 +3842,12 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-webpack5@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz#86eba6b8f3546aa1a4b264bb0253e8444b69c6f8" - integrity sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA== +"@storybook/builder-webpack5@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.6.tgz#dbe5ddd9db2f760d60036ea4fb8a674658ca5006" + integrity sha512-Eqn2k8aA9f0o6IMQNAxGAMfSDeTP3YYCQAtOL5Gt5lgrqLV5JMTbZOfmaRBZ82ej/BBSAopnQKIJjQBBFx6kAQ== dependencies: - "@storybook/core-webpack" "8.3.5" + "@storybook/core-webpack" "8.3.6" "@types/node" "^22.0.0" "@types/semver" "^7.3.4" browser-assert "^1.2.1" @@ -3084,28 +3875,33 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.6.0" -"@storybook/components@^8", "@storybook/components@^8.3.5": +"@storybook/components@^8": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz#6a8e7f95f1b1f45df7ffcbdeeb3eef3c6cce0d3f" integrity sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A== +"@storybook/components@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.6.tgz#2f5e9a755a964c94f0bab3cd400cc7a71d0489d2" + integrity sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw== + "@storybook/core-common@^8.0.0": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.3.5.tgz#366af0eff857e01504fc648b0387d66761733210" integrity sha512-Dz91pcUH4mGgKRyo5AKiD6bhjC511d7J30SmMs5lgQl7nJWlepqon7Qhy+SzsEWTWtFTgRGPs//lKTmEaVT9ug== -"@storybook/core-webpack@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.5.tgz#3e058fdb4bd73ca5deee5b3ce5621f599dfa248d" - integrity sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A== +"@storybook/core-webpack@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.6.tgz#4e4d78e52fe88e8f325c7be21b05e7e42cbea730" + integrity sha512-ks306CFKD7FePQzRYyTjddiLsSriceblzv4rI+IjVtftkJvcEbxub2yWkV27kPP/e9kSd4Li3M34bX5mkiwkZA== dependencies: "@types/node" "^22.0.0" ts-dedent "^2.0.0" -"@storybook/core@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.5.tgz#d77c93bb67c2df12e3bf84ae7def4693891b225d" - integrity sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q== +"@storybook/core@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.6.tgz#fb439d4edc0722e3bf6fdaff0469bb21566edab1" + integrity sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag== dependencies: "@storybook/csf" "^0.1.11" "@types/express" "^4.17.21" @@ -3121,10 +3917,10 @@ util "^0.12.5" ws "^8.2.3" -"@storybook/csf-plugin@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.5.tgz#198946c438be8915b63abde04a19f26610a6d88a" - integrity sha512-ODVqNXwJt90hG7QW8I9w/XUyOGlr0l7XltmIJgXwB/2cYDvaGu3JV5Ybg7O0fxPV8uXk7JlRuUD8ZYv5Low6pA== +"@storybook/csf-plugin@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.6.tgz#8e6fd04f1dd4662f85f6c1e8fa56d4331f3be4c7" + integrity sha512-TJyJPFejO6Gyr3+bXqE/+LomQbivvfHEbee/GwtlRj0XF4KQlqnvuEdEdcK25JbD0NXT8AbyncEUmjoxE7ojQw== dependencies: unplugin "^1.3.1" @@ -3133,13 +3929,6 @@ resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.3.5.tgz#9227655a641427ff98f7b8ad88367ca12e297a89" integrity sha512-vx+8FYwrSNbaotHVbKTO7aKjtQ5ghvMRXNYYoYve2YZ/vm7Os4hbfmEjR90+XcJR5LgOQ4adlhiPWCf+pU8sEg== -"@storybook/csf@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" - integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== - dependencies: - lodash "^4.17.15" - "@storybook/csf@^0.1.11": version "0.1.11" resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz#ad685a4fe564a47a6b73571c2e7c07b526f4f71b" @@ -3157,27 +3946,32 @@ resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db" integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q== -"@storybook/instrumenter@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.5.tgz#ba3c6adcd928ef98859ac4ed1e5addb1164659ea" - integrity sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw== +"@storybook/instrumenter@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.6.tgz#0696a8ba1549080c0670109a9e78beece6e358f5" + integrity sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg== dependencies: "@storybook/global" "^5.0.0" "@vitest/utils" "^2.0.5" util "^0.12.4" -"@storybook/manager-api@^8", "@storybook/manager-api@^8.3.5": +"@storybook/manager-api@^8": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz#73560ffc3774901e503e31aefac91cd4a1579bbb" integrity sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q== -"@storybook/preset-react-webpack@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz#5886d265027e7854cb4d15d8ca728990894ac4f8" - integrity sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw== +"@storybook/manager-api@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.6.tgz#6dfb268a5f1f8228d0bac69fd6e63f6bd2620c2d" + integrity sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ== + +"@storybook/preset-react-webpack@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.6.tgz#f1fd392ecfe9462b597d2d9cb5e5fadd69e61f5a" + integrity sha512-Ar0vhJITXa4xsXT3RdgYZ2mhXxE3jfUisQzsITey5a2RVgnSBIENggmRZ/6j1oVgEXFthbarNEsebGiA+2vDZg== dependencies: - "@storybook/core-webpack" "8.3.5" - "@storybook/react" "8.3.5" + "@storybook/core-webpack" "8.3.6" + "@storybook/react" "8.3.6" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" "@types/node" "^22.0.0" "@types/semver" "^7.3.4" @@ -3190,11 +3984,16 @@ tsconfig-paths "^4.2.0" webpack "5" -"@storybook/preview-api@^8", "@storybook/preview-api@^8.0.0", "@storybook/preview-api@^8.3.5": +"@storybook/preview-api@^8", "@storybook/preview-api@^8.0.0": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz#d30debc89793a912cdd26aea1e18b92527f2cf76" integrity sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg== +"@storybook/preview-api@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.6.tgz#7891b0d9f86bfb49c98eb34487c432354710b468" + integrity sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg== + "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz#7f10f3c641f32e4513a8b6ffb5036933e7059534" @@ -3208,32 +4007,32 @@ react-docgen-typescript "^2.2.2" tslib "^2.0.0" -"@storybook/react-dom-shim@8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz#dda5356d3bf55623b9b1429fac7bf185e59c58fd" - integrity sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw== +"@storybook/react-dom-shim@8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.6.tgz#40ce82a4e6559a617c4a7288b532652fefcd271e" + integrity sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA== -"@storybook/react-webpack5@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.3.5.tgz#31556eb7a7d296be9489adde71a9c1da83d0044b" - integrity sha512-J7jCxjCuWvRJrAtOwe4ij8rjfTGm1Dpsfbz8xar4ItVw7ikiyALr34E3FJzfgq7M40uGXZhvCl2IVRdGeiLmzg== +"@storybook/react-webpack5@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.3.6.tgz#5f8aa77bdd66a7d6774ec25ef208fd5639f14c36" + integrity sha512-8HBnBab6kPJuX0gQGIl6voZXLRdvyXxd5wmHXc0db0T9Ozq5iuNbo9sUEk9QCwJpuQc7lDDmuOkXHVq1WjSibw== dependencies: - "@storybook/builder-webpack5" "8.3.5" - "@storybook/preset-react-webpack" "8.3.5" - "@storybook/react" "8.3.5" + "@storybook/builder-webpack5" "8.3.6" + "@storybook/preset-react-webpack" "8.3.6" + "@storybook/react" "8.3.6" "@types/node" "^22.0.0" -"@storybook/react@8.3.5", "@storybook/react@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.5.tgz#d4e333b09f275f06b38fb1367234ad1619fbe4fa" - integrity sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ== +"@storybook/react@8.3.6", "@storybook/react@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.6.tgz#da7dedf28c9985476409ab118142337db1bd03d0" + integrity sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A== dependencies: - "@storybook/components" "^8.3.5" + "@storybook/components" "^8.3.6" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "^8.3.5" - "@storybook/preview-api" "^8.3.5" - "@storybook/react-dom-shim" "8.3.5" - "@storybook/theming" "^8.3.5" + "@storybook/manager-api" "^8.3.6" + "@storybook/preview-api" "^8.3.6" + "@storybook/react-dom-shim" "8.3.6" + "@storybook/theming" "^8.3.6" "@types/escodegen" "^0.0.6" "@types/estree" "^0.0.51" "@types/node" "^22.0.0" @@ -3277,14 +4076,14 @@ nyc "^15.1.0" playwright "^1.14.0" -"@storybook/test@8.3.5", "@storybook/test@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.5.tgz#0dffc9d4a1eaa9552e69457b16b5085e36883c8a" - integrity sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA== +"@storybook/test@8.3.6", "@storybook/test@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.6.tgz#a1b92be405004f479319127bba833a52e8d075b1" + integrity sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.3.5" + "@storybook/instrumenter" "8.3.6" "@testing-library/dom" "10.4.0" "@testing-library/jest-dom" "6.5.0" "@testing-library/user-event" "14.5.2" @@ -3292,10 +4091,10 @@ "@vitest/spy" "2.0.5" util "^0.12.4" -"@storybook/theming@^8.3.5": - version "8.3.5" - resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.5.tgz#c6b807193099a8f9d1afb5d71a59037c0ef54e85" - integrity sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w== +"@storybook/theming@^8.3.6": + version "8.3.6" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.6.tgz#57c5789903e50b84844aa8e7ce0e1f031e98a948" + integrity sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ== "@swc/core-darwin-arm64@1.7.35": version "1.7.35" @@ -3415,7 +4214,7 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@6.5.0", "@testing-library/jest-dom@^6.5.0": +"@testing-library/jest-dom@6.5.0": version "6.5.0" resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz#50484da3f80fb222a853479f618a9ce5c47bfe54" integrity sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA== @@ -3428,6 +4227,19 @@ lodash "^4.17.21" redent "^3.0.0" +"@testing-library/jest-dom@^6.6.2": + version "6.6.2" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.2.tgz#8186aa9a07263adef9cc5a59a4772db8c31f4a5b" + integrity sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw== + 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" + "@testing-library/react@^12.1.5": version "12.1.5" resolved "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz#bb248f72f02a5ac9d949dea07279095fa577963b" @@ -3683,10 +4495,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.13": - version "29.5.13" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz#8bc571659f401e6a719a7bf0dbcb8b78c71a8adc" - integrity sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg== +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -3749,13 +4561,6 @@ resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== -"@types/mute-stream@^0.0.4": - version "0.0.4" - resolved "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" - integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== - dependencies: - "@types/node" "*" - "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -3763,17 +4568,17 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^22.0.0", "@types/node@^22.5.5": +"@types/node@*", "@types/node@^22.0.0": version "22.7.5" resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: undici-types "~6.19.2" -"@types/node@^20.16.11": - version "20.16.11" - resolved "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz#9b544c3e716b1577ac12e70f9145193f32750b33" - integrity sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw== +"@types/node@^20.17.1": + version "20.17.1" + resolved "https://registry.npmjs.org/@types/node/-/node-20.17.1.tgz#2b968e060dfb04b7f9550fe3db5f552721c14566" + integrity sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q== dependencies: undici-types "~6.19.2" @@ -3843,7 +4648,7 @@ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== -"@types/semver@^7.3.12", "@types/semver@^7.3.4", "@types/semver@^7.5.0": +"@types/semver@^7.3.4", "@types/semver@^7.5.0": version "7.5.8" resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -3937,11 +4742,6 @@ dependencies: "@types/node" "*" -"@types/wrap-ansi@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" - integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== - "@types/ws@^8.5.10": version "8.5.12" resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" @@ -3989,14 +4789,6 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" @@ -4005,6 +4797,14 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" +"@typescript-eslint/scope-manager@8.11.0": + version "8.11.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405" + integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== + dependencies: + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" + "@typescript-eslint/scope-manager@8.9.0": version "8.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz#c98fef0c4a82a484e6a1eb610a55b154d14d46f3" @@ -4023,34 +4823,21 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - "@typescript-eslint/types@6.21.0": version "6.21.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/types@8.11.0": + version "8.11.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8" + integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== + "@typescript-eslint/types@8.9.0": version "8.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz#b733af07fb340b32e962c6c63b1062aec2dc0fe6" integrity sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ== -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" @@ -4065,6 +4852,20 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@8.11.0": + version "8.11.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b" + integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== + dependencies: + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/typescript-estree@8.9.0": version "8.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz#1714f167e9063062dc0df49c1d25afcbc7a96199" @@ -4092,20 +4893,6 @@ "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" -"@typescript-eslint/utils@^5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": version "8.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz#748bbe3ea5bee526d9786d9405cf1b0df081c299" @@ -4116,13 +4903,15 @@ "@typescript-eslint/types" "8.9.0" "@typescript-eslint/typescript-estree" "8.9.0" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== +"@typescript-eslint/utils@^8.8.1": + version "8.11.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d" + integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" "@typescript-eslint/visitor-keys@6.21.0": version "6.21.0" @@ -4132,6 +4921,14 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@8.11.0": + version "8.11.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92" + integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== + dependencies: + "@typescript-eslint/types" "8.11.0" + eslint-visitor-keys "^3.4.3" + "@typescript-eslint/visitor-keys@8.9.0": version "8.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz#5f11f4d9db913f37da42776893ffe0dd1ae78f78" @@ -4541,7 +5338,7 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3, aria-query@~5.1.3: +aria-query@5.1.3: version "5.1.3" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== @@ -4555,7 +5352,7 @@ aria-query@5.3.0: dependencies: dequal "^2.0.3" -aria-query@^5.0.0: +aria-query@^5.0.0, aria-query@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== @@ -6369,7 +7166,7 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.19: +es-iterator-helpers@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz#f6d745d342aea214fe09497e7152170dc333a7a6" integrity sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw== @@ -6617,12 +7414,12 @@ eslint-plugin-jest@^28.8.3: dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" -eslint-plugin-jsx-a11y@^6.10.0: - version "6.10.0" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz#36fb9dead91cafd085ddbe3829602fb10ef28339" - integrity sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg== +eslint-plugin-jsx-a11y@^6.10.2: + version "6.10.2" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== dependencies: - aria-query "~5.1.3" + aria-query "^5.3.2" array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" @@ -6630,14 +7427,13 @@ eslint-plugin-jsx-a11y@^6.10.0: axobject-query "^4.1.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.19" hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" object.fromentries "^2.0.8" safe-regex-test "^1.0.3" - string.prototype.includes "^2.0.0" + string.prototype.includes "^2.0.1" eslint-plugin-prettier@^4.2.1: version "4.2.1" @@ -6651,17 +7447,17 @@ eslint-plugin-react-hooks@^4.6.2: resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react@^7.37.1: - version "7.37.1" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd" - integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg== +eslint-plugin-react@^7.37.2: + version "7.37.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" + integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.19" + es-iterator-helpers "^1.1.0" estraverse "^5.3.0" hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" @@ -6675,17 +7471,16 @@ eslint-plugin-react@^7.37.1: string.prototype.matchall "^4.0.11" string.prototype.repeat "^1.0.0" -eslint-plugin-storybook@^0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0.tgz#8f985899b957748d5780f8e6eb5d37c705976bc8" - integrity sha512-qOT/2vQBo0VqrG/BhZv8IdSsKQiyzJw+2Wqq+WFCiblI/PfxLSrGkF/buiXF+HumwfsCyBdaC94UhqhmYFmAvA== +eslint-plugin-storybook@^0.10.1: + version "0.10.1" + resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.1.tgz#1c8acf11098f1abe2ac565e4ee0b499a2428a464" + integrity sha512-YpxkdqyiKpMIrRquuvBaCinsqmZJ86JvXRX/gtRa4Qctpk0ipFt2cWqEjkB1HHWWG0DVRXlUBKHjRogC2Ig1fg== dependencies: - "@storybook/csf" "^0.0.1" - "@typescript-eslint/utils" "^5.62.0" - requireindex "^1.2.0" + "@storybook/csf" "^0.1.11" + "@typescript-eslint/utils" "^8.8.1" ts-dedent "^2.2.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -9103,7 +9898,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9431,16 +10226,16 @@ msw-storybook-addon@^2.0.3: dependencies: is-node-process "^1.0.1" -msw@2.4.11: - version "2.4.11" - resolved "https://registry.npmjs.org/msw/-/msw-2.4.11.tgz#17001366c7c8de1540436d06d194f8facffed0f4" - integrity sha512-TVEw9NOPTc6ufOQLJ53234S9NBRxQbu7xFMxs+OCP43JQcNEIOKiZHxEm2nDzYIrwccoIhUxUf8wr99SukD76A== +msw@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/msw/-/msw-2.5.2.tgz#dfce10b68dbabc2d5dafeb6d7fb82c3c7073a4d1" + integrity sha512-eBsFgU30NYtrfC62XzS1rdAzFK+Br0zKU4ORqD9Qliq86362DWZyPiD6FLfMgy0Ktik83DPTXmqPMz2bqwmJdA== dependencies: "@bundled-es-modules/cookie" "^2.0.0" "@bundled-es-modules/statuses" "^1.0.1" "@bundled-es-modules/tough-cookie" "^0.1.6" - "@inquirer/confirm" "^3.0.0" - "@mswjs/interceptors" "^0.35.8" + "@inquirer/confirm" "^5.0.0" + "@mswjs/interceptors" "^0.36.5" "@open-draft/until" "^2.1.0" "@types/cookie" "^0.6.0" "@types/statuses" "^2.0.4" @@ -9467,10 +10262,10 @@ murmurhash-js@^1.0.0: resolved "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw== -mute-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== nanoid@^3.3.7: version "3.3.7" @@ -10775,11 +11570,6 @@ require-main-filename@^2.0.0: resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requireindex@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -11400,12 +12190,12 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -storybook@^8.3.5: - version "8.3.5" - resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.5.tgz#aef0542c08e245b7ac22742c1e1633a125063b8e" - integrity sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw== +storybook@^8.3.6: + version "8.3.6" + resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.6.tgz#c5e733504fac26c1a31c527a645c04ec7da4222f" + integrity sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ== dependencies: - "@storybook/core" "8.3.5" + "@storybook/core" "8.3.6" strict-event-emitter@^0.5.1: version "0.5.1" @@ -11447,7 +12237,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.includes@^2.0.0: +string.prototype.includes@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== @@ -11930,23 +12720,11 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0: version "2.7.0" resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" From beb561b25755cbcc51326848bc78891f89cf47b3 Mon Sep 17 00:00:00 2001 From: Hetang Modi <62056057+hetangmodi-crest@users.noreply.github.com> Date: Wed, 6 Nov 2024 12:09:00 +0530 Subject: [PATCH 09/34] fix: generate oauth authentication fields for OpenAPI integration (#1425) **Issue number:** ADDON-75778 ## Summary ### Changes > Added changes to include OAuth 2.0 authentication parameters in the openapi.json generated by framework. ### User experience > Previously OAuth 2.0 fields weren't generated in `openapi.json` and hence users had to manually add them in the curl command provided by Swagger or any openapi tool used to render the json file. ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [x] Changes have been tested * [ ] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --- .../commands/openapi_generator/ucc_to_oas.py | 20 +- .../appserver/static/openapi.json | 40 +- .../openapi_generator/test_ucc_to_oas.py | 14 + tests/unit/conftest.py | 9 + .../openapi.json.multiple_account.generated | 50 +- ...enapi.json.single_authentication.generated | 3399 +++++++++++++++++ .../openapi.json.valid_config.generated | 32 +- .../valid_single_authentication_config.json | 1766 +++++++++ 8 files changed, 5318 insertions(+), 12 deletions(-) create mode 100644 tests/unit/testdata/openapi.json.single_authentication.generated create mode 100644 tests/unit/testdata/valid_single_authentication_config.json diff --git a/splunk_add_on_ucc_framework/commands/openapi_generator/ucc_to_oas.py b/splunk_add_on_ucc_framework/commands/openapi_generator/ucc_to_oas.py index fd7c91990..b2cdeaa76 100644 --- a/splunk_add_on_ucc_framework/commands/openapi_generator/ucc_to_oas.py +++ b/splunk_add_on_ucc_framework/commands/openapi_generator/ucc_to_oas.py @@ -109,13 +109,25 @@ def __get_schema_object( if entity.field == "oauth": # check for oauth as basic authentication is also mentioned in oauth if "basic" in entity.options.auth_type: - schema_object.properties["auth_type"] = {"type": "string"} for fields in entity.options.basic: schema_object.properties[fields.field] = {"type": "string"} if hasattr(fields, "encrypted") and (fields.encrypted is True): schema_object.properties[fields.field][ "format" ] = "password" + if "oauth" in entity.options.auth_type: + for fields in entity.options.oauth: + schema_object.properties[fields.field] = {"type": "string"} + if hasattr(fields, "encrypted") and (fields.encrypted is True): + schema_object.properties[fields.field][ + "format" + ] = "password" + if len(entity.options.auth_type) == 2: + # As per documentation we can have 2 types of authentication defined in `auth_type` + schema_object.properties["auth_type"] = { + "type": "string", + "enum": ["basic", "oauth"], + } continue schema_object.properties[entity.field] = {"type": "string"} if hasattr(entity, "options") and hasattr( @@ -223,7 +235,11 @@ def __get_media_type_object_with_schema_ref( return oas.MediaTypeObject(schema=schema) -def __get_path_get(*, name: str, description: str) -> oas.OperationObject: +def __get_path_get( + *, + name: str, + description: str, +) -> oas.OperationObject: return oas.OperationObject( description=description, responses={ diff --git a/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/appserver/static/openapi.json b/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/appserver/static/openapi.json index 65dc6e3ef..d119bd205 100644 --- a/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/appserver/static/openapi.json +++ b/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/appserver/static/openapi.json @@ -50,9 +50,6 @@ "account_multiple_select": { "type": "string" }, - "auth_type": { - "type": "string" - }, "username": { "type": "string" }, @@ -63,6 +60,23 @@ "token": { "type": "string", "format": "password" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "auth_type": { + "type": "string", + "enum": [ + "basic", + "oauth" + ] } } }, @@ -89,9 +103,6 @@ "account_multiple_select": { "type": "string" }, - "auth_type": { - "type": "string" - }, "username": { "type": "string" }, @@ -102,6 +113,23 @@ "token": { "type": "string", "format": "password" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "auth_type": { + "type": "string", + "enum": [ + "basic", + "oauth" + ] } } }, diff --git a/tests/unit/commands/openapi_generator/test_ucc_to_oas.py b/tests/unit/commands/openapi_generator/test_ucc_to_oas.py index 208659e2f..15099822f 100644 --- a/tests/unit/commands/openapi_generator/test_ucc_to_oas.py +++ b/tests/unit/commands/openapi_generator/test_ucc_to_oas.py @@ -24,3 +24,17 @@ def test_transform_multiple_account( "openapi.json.multiple_account.generated" ) assert json.loads(expected_open_api_json) == openapi_object.json + + +def test_transform_one_auth_type( + global_config_single_authentication, app_manifest_correct +): + global_config_single_authentication.expand() + openapi_object = ucc_to_oas.transform( + global_config_single_authentication, app_manifest_correct + ) + + expected_open_api_json = get_testdata_file( + "openapi.json.single_authentication.generated" + ) + assert json.loads(expected_open_api_json) == openapi_object.json diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 7a926b04e..99ade67a7 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -65,6 +65,15 @@ def global_config_multiple_account() -> global_config_lib.GlobalConfig: return global_config +@pytest.fixture +def global_config_single_authentication() -> global_config_lib.GlobalConfig: + global_config_path = helpers.get_testdata_file_path( + "valid_single_authentication_config.json" + ) + global_config = global_config_lib.GlobalConfig(global_config_path) + return global_config + + @pytest.fixture() def os_dependent_library_config(): return lambda name="lib1", python_version="37", target="t", os="os": OSDependentLibraryConfig( diff --git a/tests/unit/testdata/openapi.json.multiple_account.generated b/tests/unit/testdata/openapi.json.multiple_account.generated index eb5d5c76a..d8a2a5b88 100644 --- a/tests/unit/testdata/openapi.json.multiple_account.generated +++ b/tests/unit/testdata/openapi.json.multiple_account.generated @@ -65,7 +65,11 @@ "type": "string" }, "auth_type": { - "type": "string" + "type": "string", + "enum": [ + "basic", + "oauth" + ] }, "username": { "type": "string" @@ -80,6 +84,25 @@ }, "basic_oauth_text": { "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "endpoint_token": { + "type": "string" + }, + "endpoint_authorize": { + "type": "string" + }, + "oauth_oauth_text": { + "type": "string" } } }, @@ -116,7 +139,11 @@ "type": "string" }, "auth_type": { - "type": "string" + "type": "string", + "enum": [ + "basic", + "oauth" + ] }, "username": { "type": "string" @@ -131,6 +158,25 @@ }, "basic_oauth_text": { "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "endpoint_token": { + "type": "string" + }, + "endpoint_authorize": { + "type": "string" + }, + "oauth_oauth_text": { + "type": "string" } } }, diff --git a/tests/unit/testdata/openapi.json.single_authentication.generated b/tests/unit/testdata/openapi.json.single_authentication.generated new file mode 100644 index 000000000..048f325a0 --- /dev/null +++ b/tests/unit/testdata/openapi.json.single_authentication.generated @@ -0,0 +1,3399 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Splunk_TA_UCCExample", + "version": "5.52.0+443c82a36", + "description": "Splunk UCC test Add-on", + "contact": { + "name": "Splunk", + "email": "addonfactory@splunk.com" + }, + "license": { + "name": "Apache-2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + }, + "servers": [ + { + "url": "https://{domain}:{port}/servicesNS/-/Splunk_TA_UCCExample", + "variables": { + "domain": { + "default": "localhost" + }, + "port": { + "default": "8089" + } + }, + "description": "Access via management interface" + } + ], + "components": { + "schemas": { + "account": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "field_no_validators": { + "type": "string" + }, + "field_no_validators_suppressed": { + "type": "string" + }, + "custom_endpoint": { + "type": "string", + "enum": [ + "login.example.com", + "test.example.com", + "other" + ] + }, + "endpoint": { + "type": "string" + }, + "text_field_hidden_for_cloud": { + "type": "string" + }, + "text_field_hidden_for_enterprise": { + "type": "string" + }, + "url": { + "type": "string" + }, + "account_checkbox": { + "type": "string" + }, + "account_radio": { + "type": "string" + }, + "account_multiple_select": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "endpoint_token": { + "type": "string" + }, + "endpoint_authorize": { + "type": "string" + }, + "oauth_oauth_text": { + "type": "string" + } + } + }, + "account_without_name": { + "type": "object", + "properties": { + "field_no_validators": { + "type": "string" + }, + "field_no_validators_suppressed": { + "type": "string" + }, + "custom_endpoint": { + "type": "string", + "enum": [ + "login.example.com", + "test.example.com", + "other" + ] + }, + "endpoint": { + "type": "string" + }, + "text_field_hidden_for_cloud": { + "type": "string" + }, + "text_field_hidden_for_enterprise": { + "type": "string" + }, + "url": { + "type": "string" + }, + "account_checkbox": { + "type": "string" + }, + "account_radio": { + "type": "string" + }, + "account_multiple_select": { + "type": "string" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, + "endpoint_token": { + "type": "string" + }, + "endpoint_authorize": { + "type": "string" + }, + "oauth_oauth_text": { + "type": "string" + } + } + }, + "proxy": { + "type": "object", + "properties": { + "proxy_enabled": { + "type": "string" + }, + "proxy_type": { + "type": "string", + "enum": [ + "http", + "socks4", + "socks5" + ] + }, + "proxy_url": { + "type": "string" + }, + "proxy_port": { + "type": "string" + }, + "proxy_username": { + "type": "string" + }, + "proxy_password": { + "type": "string", + "format": "password" + }, + "proxy_rdns": { + "type": "string" + } + } + }, + "proxy_without_name": { + "type": "object", + "properties": { + "proxy_enabled": { + "type": "string" + }, + "proxy_type": { + "type": "string", + "enum": [ + "http", + "socks4", + "socks5" + ] + }, + "proxy_url": { + "type": "string" + }, + "proxy_port": { + "type": "string" + }, + "proxy_username": { + "type": "string" + }, + "proxy_password": { + "type": "string", + "format": "password" + }, + "proxy_rdns": { + "type": "string" + } + } + }, + "logging": { + "type": "object", + "properties": { + "loglevel": { + "type": "string", + "enum": [ + "DEBUG", + "INFO", + "WARNING", + "ERROR", + "CRITICAL" + ] + } + } + }, + "logging_without_name": { + "type": "object", + "properties": { + "loglevel": { + "type": "string", + "enum": [ + "DEBUG", + "INFO", + "WARNING", + "ERROR", + "CRITICAL" + ] + } + } + }, + "custom_abc": { + "type": "object", + "properties": { + "testString": { + "type": "string" + }, + "testNumber": { + "type": "string" + }, + "testRegex": { + "type": "string" + }, + "testEmail": { + "type": "string" + }, + "testIpv4": { + "type": "string" + }, + "testDate": { + "type": "string" + }, + "testUrl": { + "type": "string" + } + } + }, + "custom_abc_without_name": { + "type": "object", + "properties": { + "testString": { + "type": "string" + }, + "testNumber": { + "type": "string" + }, + "testRegex": { + "type": "string" + }, + "testEmail": { + "type": "string" + }, + "testIpv4": { + "type": "string" + }, + "testDate": { + "type": "string" + }, + "testUrl": { + "type": "string" + } + } + }, + "custom_row_tab": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "text_test": { + "type": "string" + } + } + }, + "custom_row_tab_without_name": { + "type": "object", + "properties": { + "text_test": { + "type": "string" + } + } + }, + "tab_hidden_for_cloud": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "text_test": { + "type": "string" + } + } + }, + "tab_hidden_for_cloud_without_name": { + "type": "object", + "properties": { + "text_test": { + "type": "string" + } + } + }, + "tab_hidden_for_enterprise": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "text_test": { + "type": "string" + } + } + }, + "tab_hidden_for_enterprise_without_name": { + "type": "object", + "properties": { + "text_test": { + "type": "string" + } + } + }, + "example_input_one": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "input_one_checkbox": { + "type": "string" + }, + "input_one_radio": { + "type": "string" + }, + "singleSelectTest": { + "type": "string", + "enum": [ + "one", + "two", + "three", + "four" + ] + }, + "multipleSelectTest": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "object": { + "type": "string" + }, + "object_fields": { + "type": "string" + }, + "order_by": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "limit": { + "type": "string" + }, + "example_textarea_field": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_one_without_name": { + "type": "object", + "properties": { + "input_one_checkbox": { + "type": "string" + }, + "input_one_radio": { + "type": "string" + }, + "singleSelectTest": { + "type": "string", + "enum": [ + "one", + "two", + "three", + "four" + ] + }, + "multipleSelectTest": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "object": { + "type": "string" + }, + "object_fields": { + "type": "string" + }, + "order_by": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "limit": { + "type": "string" + }, + "example_textarea_field": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_one_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "input_one_checkbox": { + "type": "string" + }, + "input_one_radio": { + "type": "string" + }, + "singleSelectTest": { + "type": "string", + "enum": [ + "one", + "two", + "three", + "four" + ] + }, + "multipleSelectTest": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "object": { + "type": "string" + }, + "object_fields": { + "type": "string" + }, + "order_by": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "limit": { + "type": "string" + }, + "example_textarea_field": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + } + } + }, + "example_input_two": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "input_two_text_hidden_for_cloud": { + "type": "string" + }, + "input_two_text_hidden_for_enterprise": { + "type": "string" + }, + "input_two_multiple_select": { + "type": "string" + }, + "input_two_checkbox": { + "type": "string" + }, + "input_two_radio": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "apis": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_two_without_name": { + "type": "object", + "properties": { + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "input_two_text_hidden_for_cloud": { + "type": "string" + }, + "input_two_text_hidden_for_enterprise": { + "type": "string" + }, + "input_two_multiple_select": { + "type": "string" + }, + "input_two_checkbox": { + "type": "string" + }, + "input_two_radio": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "apis": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_two_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "index": { + "type": "string" + }, + "account": { + "type": "string" + }, + "input_two_text_hidden_for_cloud": { + "type": "string" + }, + "input_two_text_hidden_for_enterprise": { + "type": "string" + }, + "input_two_multiple_select": { + "type": "string" + }, + "input_two_checkbox": { + "type": "string" + }, + "input_two_radio": { + "type": "string" + }, + "use_existing_checkpoint": { + "type": "string" + }, + "start_date": { + "type": "string" + }, + "apis": { + "type": "string" + }, + "hide_in_ui": { + "type": "string" + }, + "hard_disabled": { + "type": "string" + } + } + }, + "example_input_three": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_three_without_name": { + "type": "object", + "properties": { + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_three_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + } + } + }, + "example_input_four": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_four_without_name": { + "type": "object", + "properties": { + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "example_input_four_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + } + } + }, + "service_hidden_for_cloud": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "service_hidden_for_cloud_without_name": { + "type": "object", + "properties": { + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "service_hidden_for_cloud_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + } + } + }, + "service_hidden_for_enterprise": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "service_hidden_for_enterprise_without_name": { + "type": "object", + "properties": { + "interval": { + "type": "string" + }, + "disabled": { + "type": "string", + "enum": [ + "False", + "True" + ] + } + } + }, + "service_hidden_for_enterprise_without_disabled": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "interval": { + "type": "string" + } + } + } + }, + "securitySchemes": { + "BasicAuth": { + "type": "http", + "scheme": "basic" + } + } + }, + "paths": { + "/splunk_ta_uccexample_account": { + "get": { + "responses": { + "200": { + "description": "Get list of items for account", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/account_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for account", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in account", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/account_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in account", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/account" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_account/{name}": { + "get": { + "responses": { + "200": { + "description": "Get account item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/account_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get account item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update account item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/account_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update account item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/account_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete account item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/account_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete account item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_settings/proxy": { + "get": { + "responses": { + "200": { + "description": "Get list of items for proxy", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/proxy_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for proxy", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in proxy", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/proxy_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in proxy", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/proxy" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_settings/logging": { + "get": { + "responses": { + "200": { + "description": "Get list of items for logging", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/logging_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for logging", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in logging", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/logging_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in logging", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/logging" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_settings/custom_abc": { + "get": { + "responses": { + "200": { + "description": "Get list of items for custom_abc", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_abc_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for custom_abc", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in custom_abc", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_abc_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in custom_abc", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/custom_abc" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_custom_row_tab": { + "get": { + "responses": { + "200": { + "description": "Get list of items for custom_row_tab", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for custom_row_tab", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in custom_row_tab", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in custom_row_tab", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/custom_row_tab" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_custom_row_tab/{name}": { + "get": { + "responses": { + "200": { + "description": "Get custom_row_tab item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get custom_row_tab item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update custom_row_tab item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update custom_row_tab item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete custom_row_tab item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/custom_row_tab_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete custom_row_tab item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_tab_hidden_for_cloud": { + "get": { + "responses": { + "200": { + "description": "Get list of items for tab_hidden_for_cloud", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for tab_hidden_for_cloud", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in tab_hidden_for_cloud", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in tab_hidden_for_cloud", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/tab_hidden_for_cloud" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_tab_hidden_for_cloud/{name}": { + "get": { + "responses": { + "200": { + "description": "Get tab_hidden_for_cloud item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get tab_hidden_for_cloud item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update tab_hidden_for_cloud item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update tab_hidden_for_cloud item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete tab_hidden_for_cloud item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete tab_hidden_for_cloud item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_tab_hidden_for_enterprise": { + "get": { + "responses": { + "200": { + "description": "Get list of items for tab_hidden_for_enterprise", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for tab_hidden_for_enterprise", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in tab_hidden_for_enterprise", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in tab_hidden_for_enterprise", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_tab_hidden_for_enterprise/{name}": { + "get": { + "responses": { + "200": { + "description": "Get tab_hidden_for_enterprise item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get tab_hidden_for_enterprise item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update tab_hidden_for_enterprise item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update tab_hidden_for_enterprise item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete tab_hidden_for_enterprise item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/tab_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete tab_hidden_for_enterprise item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_one": { + "get": { + "responses": { + "200": { + "description": "Get list of items for example_input_one", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for example_input_one", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in example_input_one", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in example_input_one", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_one_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_one/{name}": { + "get": { + "responses": { + "200": { + "description": "Get example_input_one item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get example_input_one item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update example_input_one item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update example_input_one item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete example_input_one item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_one_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete example_input_one item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_two": { + "get": { + "responses": { + "200": { + "description": "Get list of items for example_input_two", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for example_input_two", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in example_input_two", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in example_input_two", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_two_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_two/{name}": { + "get": { + "responses": { + "200": { + "description": "Get example_input_two item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get example_input_two item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update example_input_two item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update example_input_two item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete example_input_two item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_two_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete example_input_two item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_three": { + "get": { + "responses": { + "200": { + "description": "Get list of items for example_input_three", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for example_input_three", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in example_input_three", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in example_input_three", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_three_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_three/{name}": { + "get": { + "responses": { + "200": { + "description": "Get example_input_three item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get example_input_three item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update example_input_three item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update example_input_three item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete example_input_three item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_three_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete example_input_three item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_four": { + "get": { + "responses": { + "200": { + "description": "Get list of items for example_input_four", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for example_input_four", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in example_input_four", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in example_input_four", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_four_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_example_input_four/{name}": { + "get": { + "responses": { + "200": { + "description": "Get example_input_four item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get example_input_four item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update example_input_four item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update example_input_four item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete example_input_four item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/example_input_four_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete example_input_four item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_service_hidden_for_cloud": { + "get": { + "responses": { + "200": { + "description": "Get list of items for service_hidden_for_cloud", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for service_hidden_for_cloud", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in service_hidden_for_cloud", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in service_hidden_for_cloud", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_service_hidden_for_cloud/{name}": { + "get": { + "responses": { + "200": { + "description": "Get service_hidden_for_cloud item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get service_hidden_for_cloud item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update service_hidden_for_cloud item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update service_hidden_for_cloud item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete service_hidden_for_cloud item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_cloud_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete service_hidden_for_cloud item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_service_hidden_for_enterprise": { + "get": { + "responses": { + "200": { + "description": "Get list of items for service_hidden_for_enterprise", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get list of items for service_hidden_for_enterprise", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Create item in service_hidden_for_enterprise", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Create item in service_hidden_for_enterprise", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_disabled" + } + } + }, + "required": false + }, + "deprecated": false + }, + "parameters": [ + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + }, + "/splunk_ta_uccexample_service_hidden_for_enterprise/{name}": { + "get": { + "responses": { + "200": { + "description": "Get service_hidden_for_enterprise item details", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Get service_hidden_for_enterprise item details", + "deprecated": false + }, + "post": { + "responses": { + "200": { + "description": "Update service_hidden_for_enterprise item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Update service_hidden_for_enterprise item", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + }, + "required": false + }, + "deprecated": false + }, + "delete": { + "responses": { + "200": { + "description": "Delete service_hidden_for_enterprise item", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entry": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "content": { + "$ref": "#/components/schemas/service_hidden_for_enterprise_without_name" + } + } + } + } + } + } + } + } + } + }, + "description": "Delete service_hidden_for_enterprise item", + "deprecated": false + }, + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the item to operate on", + "schema": { + "type": "string" + } + }, + { + "name": "output_mode", + "in": "query", + "required": true, + "description": "Output mode", + "schema": { + "type": "string", + "enum": [ + "json" + ], + "default": "json" + } + } + ] + } + }, + "security": [ + { + "BasicAuth": [] + } + ] +} \ No newline at end of file diff --git a/tests/unit/testdata/openapi.json.valid_config.generated b/tests/unit/testdata/openapi.json.valid_config.generated index 5df7314c0..1584f9ece 100644 --- a/tests/unit/testdata/openapi.json.valid_config.generated +++ b/tests/unit/testdata/openapi.json.valid_config.generated @@ -59,7 +59,11 @@ "type": "string" }, "auth_type": { - "type": "string" + "type": "string", + "enum": [ + "basic", + "oauth" + ] }, "username": { "type": "string" @@ -72,6 +76,16 @@ "type": "string", "format": "password" }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, "textarea_field": { "type": "string" }, @@ -108,7 +122,11 @@ "type": "string" }, "auth_type": { - "type": "string" + "type": "string", + "enum": [ + "basic", + "oauth" + ] }, "username": { "type": "string" @@ -121,6 +139,16 @@ "type": "string", "format": "password" }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string", + "format": "password" + }, + "redirect_url": { + "type": "string" + }, "textarea_field": { "type": "string" }, diff --git a/tests/unit/testdata/valid_single_authentication_config.json b/tests/unit/testdata/valid_single_authentication_config.json new file mode 100644 index 000000000..b072ef921 --- /dev/null +++ b/tests/unit/testdata/valid_single_authentication_config.json @@ -0,0 +1,1766 @@ +{ + "pages": { + "configuration": { + "tabs": [ + { + "name": "account", + "warning": { + "create": { + "message": "Some warning for account text create", + "alwaysDisplay": true + }, + "edit": { + "message": "Some warning for account text edit" + }, + "clone": { + "message": "Some warning for account text clone" + } + }, + "table": { + "actions": [ + "edit", + "delete", + "clone" + ], + "header": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Auth Type", + "field": "auth_type" + } + ] + }, + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "string", + "errorMsg": "Length of ID should be between 1 and 50", + "minLength": 1, + "maxLength": 50 + }, + { + "type": "regex", + "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + } + ], + "field": "name", + "help": "Enter a unique name for this account.", + "required": true + }, + { + "type": "text", + "label": "Field no validators", + "field": "field_no_validators", + "help": "Some field", + "required": false + }, + { + "type": "text", + "label": "Field no validators (suppressed)", + "field": "field_no_validators_suppressed", + "help": "Some field", + "required": false, + "validators": [] + }, + { + "type": "singleSelect", + "label": "Example Environment", + "options": { + "disableSearch": true, + "autoCompleteFields": [ + { + "value": "login.example.com", + "label": "Value1" + }, + { + "value": "test.example.com", + "label": "Value2" + }, + { + "value": "other", + "label": "Other" + } + ], + "display": true + }, + "help": "", + "field": "custom_endpoint", + "defaultValue": "login.example.com", + "required": true + }, + { + "type": "text", + "label": "Endpoint URL", + "help": "Enter the endpoint URL.", + "field": "endpoint", + "options": { + "display": false, + "requiredWhenVisible": true + } + }, + { + "type": "text", + "label": "Example text hidden for cloud", + "help": "Enter text for field hidden for cloud", + "field": "text_field_hidden_for_cloud", + "options": { + "hideForPlatform": "cloud" + } + }, + { + "type": "text", + "label": "Example text hidden for enterprise", + "help": "Enter text for field hidden for enterprise", + "field": "text_field_hidden_for_enterprise", + "options": { + "hideForPlatform": "enterprise" + } + }, + { + "field": "url", + "label": "URL", + "type": "text", + "help": "Enter the URL, for example", + "required": false, + "validators": [ + { + "errorMsg": "Invalid URL provided. URL should start with 'https' as only secure URLs are supported. Provide URL in this format", + "type": "regex", + "pattern": "^(https://)[^/]+/?$" + } + ] + }, + { + "type": "checkbox", + "label": "Example Checkbox", + "field": "account_checkbox", + "help": "This is an example checkbox for the account entity" + }, + { + "type": "radio", + "label": "Example Radio", + "field": "account_radio", + "defaultValue": "yes", + "help": "This is an example radio button for the account entity", + "required": true, + "options": { + "items": [ + { + "value": "yes", + "label": "Yes" + }, + { + "value": "no", + "label": "No" + } + ], + "display": true + } + }, + { + "type": "multipleSelect", + "label": "Example Multiple Select", + "field": "account_multiple_select", + "help": "This is an example multipleSelect for account entity", + "required": true, + "options": { + "items": [ + { + "value": "one", + "label": "Option One" + }, + { + "value": "two", + "label": "Option Two" + } + ] + } + }, + { + "type": "oauth", + "field": "oauth", + "label": "Not used", + "options": { + "auth_type": [ + "oauth" + ], + "oauth": [ + { + "oauth_field": "client_id", + "label": "Client Id", + "field": "client_id", + "help": "Enter the Client Id for this account." + }, + { + "oauth_field": "client_secret", + "label": "Client Secret", + "field": "client_secret", + "encrypted": true, + "help": "Enter the Client Secret key for this account." + }, + { + "oauth_field": "redirect_url", + "label": "Redirect url", + "field": "redirect_url", + "help": "Copy and paste this URL into your app." + }, + { + "oauth_field": "endpoint_token", + "label": "Token endpoint", + "field": "endpoint_token", + "help": "Put here endpoint used for token acqusition ie. login.salesforce.com", + "modifyFieldsOnValue": [ + { + "fieldValue": "[[any_other_value]]", + "fieldsToModify": [ + { + "fieldId": "oauth_oauth_text", + "label": "Disabled on edit for oauth 55555" + } + ] + }, + { + "fieldValue": "aaaaaa", + "fieldsToModify": [ + { + "fieldId": "oauth_oauth_text", + "disabled": false, + "label": "Disabled on edit for oauth 1111" + }, + { + "fieldId": "endpoint_authorize", + "display": true + } + ] + }, + { + "fieldValue": "bbbbb", + "fieldsToModify": [ + { + "fieldId": "oauth_oauth_text", + "disabled": true, + "label": "Disabled on edit for oauth 2222" + }, + { + "fieldId": "endpoint_authorize", + "display": false + } + ] + }, + { + "fieldValue": "ccccc", + "mode": "edit", + "fieldsToModify": [ + { + "fieldId": "oauth_oauth_text", + "disabled": false, + "label": "Disabled on edit for oauth 3333" + }, + { + "fieldId": "endpoint_authorize", + "display": false + } + ] + }, + { + "fieldValue": "dddddd", + "mode": "create", + "fieldsToModify": [ + { + "fieldId": "oauth_oauth_text", + "disabled": true, + "label": "Disabled on edit for oauth 44444" + }, + { + "fieldId": "endpoint_authorize", + "display": false + } + ] + } + ] + }, + { + "oauth_field": "endpoint_authorize", + "label": "Authorize endpoint", + "field": "endpoint_authorize", + "help": "Put here endpoint used for authorization ie. login.salesforce.com" + }, + { + "oauth_field": "oauth_some_text", + "label": "Disabled on edit for oauth", + "help": "Enter text for field disabled on edit", + "field": "oauth_oauth_text", + "required": false, + "options": { + "disableonEdit": true, + "enable": false + } + } + ], + "auth_code_endpoint": "/services/oauth2/authorize", + "access_token_endpoint": "/services/oauth2/token", + "oauth_timeout": 30, + "oauth_state_enabled": false + } + }, + { + "field": "example_help_link", + "label": "", + "type": "helpLink", + "options": { + "text": "Help Link", + "link": "https://docs.splunk.com/Documentation" + } + }, + { + "field": "config1_help_link", + "type": "helpLink", + "options": { + "text": "Add-on configuration documentation", + "link": "https://docs.splunk.com/Documentation" + } + }, + { + "field": "config2_help_link", + "type": "helpLink", + "options": { + "text": "SSL configuration documentation", + "link": "https://docs.splunk.com/Documentation" + } + } + ], + "title": "Account", + "restHandlerModule": "splunk_ta_uccexample_validate_account_rh", + "restHandlerClass": "CustomAccountValidator" + }, + { + "name": "proxy", + "warning": { + "config": { + "message": "Some warning for account text config" + } + }, + "entity": [ + { + "type": "checkbox", + "label": "Enable", + "field": "proxy_enabled" + }, + { + "type": "singleSelect", + "label": "Proxy Type", + "options": { + "disableSearch": true, + "autoCompleteFields": [ + { + "value": "http", + "label": "http" + }, + { + "value": "socks4", + "label": "socks4" + }, + { + "value": "socks5", + "label": "socks5" + } + ] + }, + "defaultValue": "http", + "field": "proxy_type" + }, + { + "type": "text", + "label": "Host", + "validators": [ + { + "type": "string", + "errorMsg": "Max host length is 4096", + "minLength": 0, + "maxLength": 4096 + }, + { + "type": "regex", + "errorMsg": "Proxy Host should not have special characters", + "pattern": "^[a-zA-Z]\\w*$" + } + ], + "field": "proxy_url" + }, + { + "type": "text", + "label": "Port", + "validators": [ + { + "type": "number", + "range": [ + 1, + 65535 + ], + "isInteger": true + } + ], + "field": "proxy_port" + }, + { + "type": "text", + "label": "Username", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of username is 50", + "minLength": 0, + "maxLength": 50 + } + ], + "field": "proxy_username" + }, + { + "type": "text", + "label": "Password", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of password is 8192", + "minLength": 0, + "maxLength": 8192 + } + ], + "encrypted": true, + "field": "proxy_password" + }, + { + "type": "checkbox", + "label": "Reverse DNS resolution", + "field": "proxy_rdns" + } + ], + "options": { + "saveValidator": "function(formData) { if(!formData.proxy_enabled || formData.proxy_enabled === '0') {return true; } if(!formData.proxy_url) { return 'Proxy Host can not be empty'; } if(!formData.proxy_port) { return 'Proxy Port can not be empty'; } return true; }" + }, + "title": "Proxy" + }, + { + "type": "loggingTab" + }, + { + "name": "custom_abc", + "title": "Customized tab", + "entity": [ + { + "field": "testString", + "label": "Test String", + "type": "text", + "validators": [ + { + "type": "string", + "maxLength": 10, + "minLength": 5 + } + ] + }, + { + "field": "testNumber", + "label": "Test Number", + "type": "text", + "validators": [ + { + "type": "number", + "range": [ + 1, + 10 + ] + } + ] + }, + { + "field": "testRegex", + "label": "Test Regex", + "type": "text", + "validators": [ + { + "type": "regex", + "pattern": "^\\w+$", + "errorMsg": "Characters of Name should match regex ^\\w+$ ." + } + ] + }, + { + "field": "testEmail", + "label": "Test Email", + "type": "text", + "validators": [ + { + "type": "email" + } + ] + }, + { + "field": "testIpv4", + "label": "Test Ipv4", + "type": "text", + "validators": [ + { + "type": "ipv4" + } + ] + }, + { + "field": "testDate", + "label": "Test Date", + "type": "text", + "validators": [ + { + "type": "date" + } + ] + }, + { + "field": "testUrl", + "label": "Test Url", + "type": "text", + "validators": [ + { + "type": "url" + } + ] + } + ] + }, + { + "name": "custom_row_tab", + "table": { + "actions": [ + "edit", + "delete", + "clone" + ], + "header": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Text Test", + "field": "text_test" + } + ], + "moreInfo": [ + { + "field": "name", + "label": "Name" + }, + { + "field": "text_test", + "label": "Text Test" + } + ], + "customRow": { + "src": "custom_input_row_replace", + "type": "external" + } + }, + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "string", + "errorMsg": "Length of ID should be between 1 and 50", + "minLength": 1, + "maxLength": 50 + }, + { + "type": "regex", + "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + } + ], + "field": "name", + "help": "Enter a unique name for this account.", + "required": true + }, + { + "field": "text_test", + "label": "Text Test", + "help": "This is a text test", + "type": "text", + "validators": [ + { + "type": "string", + "minLength": 1, + "maxLength": 100 + } + ], + "required": true + } + ], + "title": "Custom table row" + }, + { + "name": "tab_hidden_for_cloud", + "table": { + "actions": [ + "edit", + "delete", + "clone" + ], + "header": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Text Test", + "field": "text_test" + } + ], + "moreInfo": [ + { + "field": "name", + "label": "Name" + }, + { + "field": "text_test", + "label": "Text Test" + } + ] + }, + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "string", + "errorMsg": "Length of ID should be between 1 and 50", + "minLength": 1, + "maxLength": 50 + }, + { + "type": "regex", + "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + } + ], + "field": "name", + "help": "Enter a unique name for this account.", + "required": true + }, + { + "field": "text_test", + "label": "Text Test", + "help": "This is a text test", + "type": "text", + "validators": [ + { + "type": "string", + "minLength": 1, + "maxLength": 100 + } + ], + "required": true + } + ], + "title": "Tab hidden for cloud", + "hideForPlatform": "cloud" + }, + { + "name": "tab_hidden_for_enterprise", + "table": { + "actions": [ + "edit", + "delete", + "clone" + ], + "header": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Text Test", + "field": "text_test" + } + ], + "moreInfo": [ + { + "field": "name", + "label": "Name" + }, + { + "field": "text_test", + "label": "Text Test" + } + ] + }, + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "string", + "errorMsg": "Length of ID should be between 1 and 50", + "minLength": 1, + "maxLength": 50 + }, + { + "type": "regex", + "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + } + ], + "field": "name", + "help": "Enter a unique name for this account.", + "required": true + }, + { + "field": "text_test", + "label": "Text Test", + "help": "This is a text test", + "type": "text", + "validators": [ + { + "type": "string", + "minLength": 1, + "maxLength": 100 + } + ], + "required": true + } + ], + "title": "Tab hidden for enterprise", + "hideForPlatform": "enterprise" + } + ], + "title": "Configuration", + "description": "Set up your add-on", + "subDescription": { + "text": "Configuration page - Ingesting data from to Splunk Cloud? Have you tried the new Splunk Data Manager yet?\nData Manager makes AWS data ingestion simpler, more automated and centrally managed for you, while co-existing with AWS and/or Kinesis TAs.\nRead our [[blogPost]] to learn more about Data Manager and it's availability on your Splunk Cloud instance.", + "links": [ + { + "slug": "blogPost", + "link": "https://splk.it/31oy2b2", + "linkText": "blog post" + } + ] + } + }, + "inputs": { + "services": [ + { + "name": "example_input_one", + "inputHelperModule": "helper_one", + "warning": { + "create": { + "message": "Some warning for account text create" + }, + "edit": { + "message": "Some warning for account text edit" + }, + "clone": { + "message": "Some warning for account text clone" + }, + "delete": { + "message": "Some warning for account text delete" + } + }, + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "checkbox", + "label": "Example Checkbox", + "field": "input_one_checkbox", + "help": "This is an example checkbox for the input one entity", + "defaultValue": true + }, + { + "type": "radio", + "label": "Example Radio", + "field": "input_one_radio", + "defaultValue": "yes", + "help": "This is an example radio button for the input one entity", + "required": false, + "options": { + "items": [ + { + "value": "yes", + "label": "Yes" + }, + { + "value": "no", + "label": "No" + } + ], + "display": true + } + }, + { + "field": "singleSelectTest", + "label": "Single Select Group Test", + "type": "singleSelect", + "options": { + "createSearchChoice": true, + "autoCompleteFields": [ + { + "label": "Group1", + "children": [ + { + "value": "one", + "label": "One" + }, + { + "value": "two", + "label": "Two" + } + ] + }, + { + "label": "Group2", + "children": [ + { + "value": "three", + "label": "Three" + }, + { + "value": "four", + "label": "Four" + } + ] + } + ] + } + }, + { + "field": "multipleSelectTest", + "label": "Multiple Select Test", + "type": "multipleSelect", + "defaultValue": "a|b", + "options": { + "delimiter": "|", + "items": [ + { + "value": "a", + "label": "A" + }, + { + "value": "b", + "label": "B" + } + ] + } + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + }, + { + "type": "singleSelect", + "label": "Index", + "validators": [ + { + "type": "string", + "errorMsg": "Length of index name should be between 1 and 80.", + "minLength": 1, + "maxLength": 80 + } + ], + "defaultValue": "default", + "options": { + "endpointUrl": "data/indexes", + "denyList": "^_.*$", + "createSearchChoice": true + }, + "field": "index", + "required": true + }, + { + "type": "singleSelect", + "label": "Example Account", + "options": { + "referenceName": "account" + }, + "help": "", + "field": "account", + "required": true + }, + { + "type": "text", + "label": "Object", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of text input is 8192", + "minLength": 0, + "maxLength": 8192 + } + ], + "field": "object", + "help": "The name of the object to query for.", + "required": true + }, + { + "type": "text", + "label": "Object Fields", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of text input is 8192", + "minLength": 0, + "maxLength": 8192 + } + ], + "field": "object_fields", + "help": "Object fields from which to collect data. Delimit multiple fields using a comma.", + "required": true + }, + { + "type": "text", + "label": "Order By", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of text input is 8192", + "minLength": 0, + "maxLength": 8192 + } + ], + "defaultValue": "LastModifiedDate", + "field": "order_by", + "help": "The datetime field by which to query results in ascending order for indexing.", + "required": true + }, + { + "type": "radio", + "label": "Use existing data input?", + "field": "use_existing_checkpoint", + "defaultValue": "yes", + "help": "Data input already exists. Select `No` if you want to reset the data collection.", + "required": false, + "options": { + "items": [ + { + "value": "yes", + "label": "Yes" + }, + { + "value": "no", + "label": "No" + } + ], + "display": false + } + }, + { + "type": "text", + "label": "Query Start Date", + "validators": [ + { + "type": "regex", + "errorMsg": "Invalid date and time format", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}z)?$" + } + ], + "field": "start_date", + "help": "The datetime after which to query and index records, in this format: \"YYYY-MM-DDThh:mm:ss.000z\".\nDefaults to 90 days earlier from now.", + "tooltip": "Changing this parameter may result in gaps or duplication in data collection.", + "required": false + }, + { + "type": "text", + "label": "Limit", + "validators": [ + { + "type": "string", + "errorMsg": "Max length of text input is 8192", + "minLength": 0, + "maxLength": 8192 + } + ], + "defaultValue": "1000", + "field": "limit", + "help": "The maximum number of results returned by the query.", + "required": false + }, + { + "type": "textarea", + "label": "Example Textarea Field", + "field": "example_textarea_field", + "help": "Help message", + "options": { + "rowsMin": 3, + "rowsMax": 15 + }, + "required": true + }, + { + "field": "example_help_link", + "label": "", + "type": "helpLink", + "options": { + "text": "Help Link", + "link": "https://docs.splunk.com/Documentation" + } + }, + { + "type": "checkbox", + "label": "Hide in UI boolean value", + "field": "hide_in_ui", + "options": { + "display": false + } + }, + { + "type": "checkbox", + "label": "Is input readonly?", + "field": "hard_disabled", + "options": { + "display": false + } + } + ], + "title": "Example Input One" + }, + { + "name": "example_input_two", + "inputHelperModule": "helper_two", + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + }, + { + "type": "index", + "label": "Index", + "field": "index", + "required": true + }, + { + "type": "singleSelect", + "label": "Example Account", + "options": { + "referenceName": "account" + }, + "help": "", + "field": "account", + "required": true + }, + { + "type": "text", + "label": "Text input hidden for cloud", + "field": "input_two_text_hidden_for_cloud", + "help": "Should be hidden for cloud", + "tooltip": "Should be hidden for cloud", + "required": false, + "options": { + "hideForPlatform": "cloud" + } + }, + { + "type": "text", + "label": "Text input hidden for enterprise", + "field": "input_two_text_hidden_for_enterprise", + "help": "Should be hidden for enterprise", + "tooltip": "Should be hidden for enterprise", + "required": false, + "options": { + "hideForPlatform": "enterprise" + } + }, + { + "type": "multipleSelect", + "label": "Example Multiple Select", + "field": "input_two_multiple_select", + "help": "This is an example multipleSelect for input two entity", + "required": true, + "options": { + "items": [ + { + "value": "one", + "label": "Option One" + }, + { + "value": "two", + "label": "Option Two" + } + ] + } + }, + { + "type": "checkbox", + "label": "Example Checkbox", + "field": "input_two_checkbox", + "help": "This is an example checkbox for the input two entity" + }, + { + "type": "radio", + "label": "Example Radio", + "field": "input_two_radio", + "help": "This is an example radio button for the input two entity", + "required": true, + "options": { + "items": [ + { + "value": "yes", + "label": "Yes" + }, + { + "value": "no", + "label": "No" + } + ], + "display": true + } + }, + { + "type": "radio", + "label": "Use existing data input?", + "field": "use_existing_checkpoint", + "defaultValue": "yes", + "help": "Data input already exists. Select `No` if you want to reset the data collection.", + "required": false, + "options": { + "items": [ + { + "value": "yes", + "label": "Yes" + }, + { + "value": "no", + "label": "No" + } + ], + "display": false + } + }, + { + "type": "text", + "label": "Query Start Date", + "validators": [ + { + "type": "regex", + "errorMsg": "Invalid date and time format", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}z)?$" + } + ], + "field": "start_date", + "help": "The date and time, in \"YYYY-MM-DDThh:mm:ss.000z\" format, after which to query and index records. \nThe default is 90 days before today.", + "tooltip": "Changing this parameter may result in gaps or duplication in data collection.", + "required": false + }, + { + "field": "example_help_link", + "label": "", + "type": "helpLink", + "options": { + "text": "Help Link", + "link": "https://docs.splunk.com/Documentation" + } + }, + { + "field": "apis", + "label": "APIs/Interval (in seconds)", + "type": "checkboxGroup", + "options": { + "groups": [ + { + "label": "EC2", + "options": { + "isExpandable": true + }, + "fields": [ + "ec2_volumes", + "ec2_instances", + "ec2_reserved_instances", + "ebs_snapshots", + "rds_instances", + "rds_reserved_instances", + "ec2_key_pairs", + "ec2_security_groups", + "ec2_images", + "ec2_addresses" + ] + }, + { + "label": "ELB", + "options": { + "isExpandable": true + }, + "fields": [ + "classic_load_balancers", + "application_load_balancers" + ] + }, + { + "label": "VPC", + "options": { + "isExpandable": true + }, + "fields": [ + "vpcs", + "vpc_network_acls", + "vpc_subnets" + ] + } + ], + "rows": [ + { + "field": "ec2_volumes", + "checkbox": { + "defaultValue": true + }, + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_instances", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_reserved_instances", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ebs_snapshots", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "rds_instances", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "rds_reserved_instances", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_key_pairs", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_security_groups", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_images", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "ec2_addresses", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "classic_load_balancers", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "application_load_balancers", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "vpcs", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "vpc_network_acls", + "input": { + "defaultValue": 3600, + "required": true + } + }, + { + "field": "vpc_subnets", + "input": { + "defaultValue": 3600, + "required": true + } + } + ] + } + }, + { + "type": "checkbox", + "label": "Hide in UI boolean value", + "field": "hide_in_ui", + "options": { + "display": false + } + }, + { + "type": "checkbox", + "label": "Is input readonly?", + "field": "hard_disabled", + "options": { + "display": false + } + } + ], + "title": "Example Input Two" + }, + { + "name": "example_input_three", + "restHandlerName": "splunk_ta_uccexample_rh_three_custom", + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + } + ], + "title": "Example Input Three" + }, + { + "name": "example_input_four", + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + } + ], + "title": "Example Input Four" + }, + { + "name": "service_hidden_for_cloud", + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + } + ], + "title": "Service hidden for cloud", + "hideForPlatform": "cloud" + }, + { + "name": "service_hidden_for_enterprise", + "entity": [ + { + "type": "text", + "label": "Name", + "validators": [ + { + "type": "regex", + "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.", + "pattern": "^[a-zA-Z]\\w*$" + }, + { + "type": "string", + "errorMsg": "Length of input name should be between 1 and 100", + "minLength": 1, + "maxLength": 100 + } + ], + "field": "name", + "help": "A unique name for the data input.", + "required": true + }, + { + "type": "interval", + "field": "interval", + "label": "Interval", + "help": "Time interval of the data input, in seconds.", + "required": true + } + ], + "title": "Service hidden for enterprise", + "hideForPlatform": "enterprise" + } + ], + "title": "Inputs", + "description": "Manage your data inputs", + "subDescription": { + "text": "Input page - Ingesting data from to Splunk Cloud? Have you tried the new Splunk Data Manager yet?\nData Manager makes AWS data ingestion simpler, more automated and centrally managed for you, while co-existing with AWS and/or Kinesis TAs.\nRead our [[blogPost]] to learn more about Data Manager and it's availability on your Splunk Cloud instance.", + "links": [ + { + "slug": "blogPost", + "link": "https://splk.it/31oy2b2", + "linkText": "blog post" + } + ] + }, + "table": { + "actions": [ + "edit", + "delete", + "clone", + "search" + ], + "header": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Account", + "field": "account" + }, + { + "label": "Interval", + "field": "interval" + }, + { + "label": "Index", + "field": "index" + }, + { + "label": "Status", + "field": "disabled" + } + ], + "customRow": { + "src": "custom_input_row", + "type": "external" + }, + "moreInfo": [ + { + "label": "Name", + "field": "name" + }, + { + "label": "Interval", + "field": "interval" + }, + { + "label": "Index", + "field": "index" + }, + { + "label": "Status", + "field": "disabled", + "mapping": { + "true": "Inactive", + "false": "Active" + } + }, + { + "label": "Example Account", + "field": "account" + }, + { + "label": "Object", + "field": "object" + }, + { + "label": "Object Fields", + "field": "object_fields" + }, + { + "label": "Order By", + "field": "order_by" + }, + { + "label": "Query Start Date", + "field": "start_date" + }, + { + "label": "Limit", + "field": "limit" + } + ] + }, + "hideFieldId": "hide_in_ui", + "readonlyFieldId": "hard_disabled" + }, + "dashboard": { + "panels": [ + { + "name": "default" + } + ] + } + }, + "alerts": [ + { + "name": "test_alert", + "label": "Test Alert", + "description": "Description for test Alert Action", + "iconFileName": "test icon.png", + "adaptiveResponse": { + "task": [ + "Create", + "Update" + ], + "supportsAdhoc": true, + "supportsCloud": true, + "subject": [ + "endpoint" + ], + "category": [ + "Information Conveyance", + "Information Portrayal" + ], + "technology": [ + { + "version": [ + "1.0.0" + ], + "product": "Test Incident Update", + "vendor": "Splunk" + } + ], + "drilldownUri": "search?q=search%20index%3D\"_internal\"&earliest=0&latest=", + "sourcetype": "test:incident" + }, + "entity": [ + { + "type": "text", + "label": "Name", + "field": "name", + "defaultValue": "xyz", + "required": true, + "help": "Please enter your name" + }, + { + "type": "textarea", + "label": "Description", + "field": "description", + "defaultValue": "some sample description", + "required": true, + "help": "Please enter the description for the alert" + }, + { + "type": "checkbox", + "label": "All Incidents", + "field": "all_incidents", + "defaultValue": 0, + "required": false, + "help": "Tick if you want to update all incidents/problems" + }, + { + "type": "singleSelect", + "label": "Table List", + "field": "table_list", + "options": { + "items": [ + { + "value": "incident", + "label": "Incident" + }, + { + "value": "problem", + "label": "Problem" + } + ] + }, + "help": "Please select the table", + "required": false, + "defaultValue": "problem" + }, + { + "type": "radio", + "label": "Action:", + "field": "action", + "options": { + "items": [ + { + "value": "update", + "label": "Update" + }, + { + "value": "delete", + "label": "Delete" + } + ] + }, + "help": "Select the action you want to perform", + "required": true, + "defaultValue": "update" + }, + { + "type": "singleSelectSplunkSearch", + "label": "Select Account", + "field": "account", + "search": "| rest /servicesNS/nobody/Splunk_TA_UCCExample/splunk_ta_uccexample_account | dedup title", + "options": { + "items": [ + { + "label": "earliest", + "value": "-4@h" + }, + { + "label": "latest", + "value": "now" + } + ] + }, + "valueField": "title", + "labelField": "title", + "help": "Select the account from the dropdown", + "required": true + } + ], + "customScript": "myAlertLogic" + } + ], + "meta": { + "name": "Splunk_TA_UCCExample", + "restRoot": "splunk_ta_uccexample", + "version": "5.52.0+443c82a36", + "displayName": "Splunk UCC test Add-on", + "schemaVersion": "0.0.9", + "_uccVersion": "5.52.0", + "supportedThemes": [ + "light", + "dark" + ], + "isVisible": true + } +} From 7173077ec7aa8da02c53858271e158d8675f64a3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:55:53 +0100 Subject: [PATCH 10/34] chore(deps): update npm (#1431) --- ui/jest.polyfills.ts | 3 + ui/package.json | 36 +- ui/src/public/mockServiceWorker.js | 2 +- ui/yarn.lock | 915 ++++++++++++----------------- 4 files changed, 414 insertions(+), 542 deletions(-) diff --git a/ui/jest.polyfills.ts b/ui/jest.polyfills.ts index c57c336d6..94ad52b31 100644 --- a/ui/jest.polyfills.ts +++ b/ui/jest.polyfills.ts @@ -11,11 +11,13 @@ const { TextDecoder, TextEncoder } = require('node:util'); const { TransformStream } = require('node:stream/web'); +const { BroadcastChannel } = require('node:worker_threads'); Object.defineProperties(globalThis, { TextDecoder: { value: TextDecoder }, TextEncoder: { value: TextEncoder }, TransformStream: { value: TransformStream }, + BroadcastChannel: { value: BroadcastChannel }, }); const { Blob } = require('node:buffer'); @@ -26,6 +28,7 @@ Object.defineProperties(globalThis, { Blob: { value: Blob }, Headers: { value: Headers }, FormData: { value: FormData }, + BroadcastChannel: { value: BroadcastChannel }, Request: { value: Request, configurable: true }, Response: { value: Response, configurable: true }, }); diff --git a/ui/package.json b/ui/package.json index 14e7bd860..2fba332fd 100644 --- a/ui/package.json +++ b/ui/package.json @@ -35,8 +35,8 @@ "@splunk/splunk-utils": "^3.1.0", "@splunk/themes": "^0.22.0", "@splunk/ui-utils": "^1.7.1", - "@splunk/visualization-context": "^26.3.0", - "@storybook/test": "^8.3.6", + "@splunk/visualization-context": "^26.4.1", + "@storybook/test": "^8.4.2", "axios": "^1.7.7", "immutability-helper": "^3.1.1", "license-webpack-plugin": "^4.0.2", @@ -47,7 +47,7 @@ "react-is": "^16.13.1", "react-router-dom": "^6.27.0", "styled-components": "^5.3.11", - "uuid": "^11.0.1", + "uuid": "^11.0.2", "zod": "^3.23.8" }, "devDependencies": { @@ -61,22 +61,22 @@ "@splunk/babel-preset": "^4.0.0", "@splunk/eslint-config": "^4.0.0", "@splunk/webpack-configs": "^7.0.2", - "@storybook/addon-a11y": "^8.3.6", - "@storybook/addon-essentials": "^8.3.6", - "@storybook/addon-interactions": "^8.3.6", - "@storybook/addon-links": "^8.3.6", + "@storybook/addon-a11y": "^8.4.2", + "@storybook/addon-essentials": "^8.4.2", + "@storybook/addon-interactions": "^8.4.2", + "@storybook/addon-links": "^8.4.2", "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/blocks": "^8.3.6", - "@storybook/react": "^8.3.6", - "@storybook/react-webpack5": "^8.3.6", + "@storybook/blocks": "^8.4.2", + "@storybook/react": "^8.4.2", + "@storybook/react-webpack5": "^8.4.2", "@storybook/test-runner": "^0.19.1", "@testing-library/dom": "^8.20.1", - "@testing-library/jest-dom": "^6.6.2", + "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^12.1.5", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.14", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.17.1", + "@types/node": "^20.17.6", "@types/react": "^16.14.62", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", @@ -90,29 +90,29 @@ "eslint-config-prettier": "^7.2.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-jest": "^28.9.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-storybook": "^0.10.1", + "eslint-plugin-storybook": "^0.11.0", "fork-ts-checker-webpack-plugin": "^9.0.2", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-image-snapshot": "^6.4.0", "js-yaml": "^4.1.0", - "msw": "2.5.2", - "msw-storybook-addon": "^2.0.3", + "msw": "2.6.0", + "msw-storybook-addon": "^2.0.4", "prettier": "^2.8.8", "querystring-es3": "^0.2.1", - "storybook": "^8.3.6", + "storybook": "^8.4.2", "style-loader": "^4.0.0", "stylelint": "^14.16.1", "ts-node": "^10.9.2", "typescript": "^5.6.3", "undici": "^5.28.4", "url": "^0.11.4", - "webpack": "^5.95.0", + "webpack": "^5.96.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.1.0", "webpack-merge": "^6.0.1" diff --git a/ui/src/public/mockServiceWorker.js b/ui/src/public/mockServiceWorker.js index ecabdda5d..6eb805221 100644 --- a/ui/src/public/mockServiceWorker.js +++ b/ui/src/public/mockServiceWorker.js @@ -8,7 +8,7 @@ * - Please do NOT serve this file on production. */ -const PACKAGE_VERSION = '2.5.2' +const PACKAGE_VERSION = '2.6.0' const INTEGRITY_CHECKSUM = '07a8241b182f8a246a7cd39894799a9e' const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') const activeClientIds = new Set() diff --git a/ui/yarn.lock b/ui/yarn.lock index 270b3e8c0..236d46486 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -1757,6 +1757,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.25.9": + version "7.26.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.5", "@babel/template@^7.25.7", "@babel/template@^7.3.3": version "7.25.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" @@ -1818,11 +1825,6 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" -"@base2/pretty-print-object@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" - integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1936,235 +1938,235 @@ resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@esbuild/aix-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" - integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== +"@esbuild/aix-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c" + integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw== "@esbuild/android-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== -"@esbuild/android-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" - integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== +"@esbuild/android-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0" + integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w== "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== -"@esbuild/android-arm@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" - integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== +"@esbuild/android-arm@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810" + integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew== "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== -"@esbuild/android-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" - integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== +"@esbuild/android-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705" + integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ== "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== -"@esbuild/darwin-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" - integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== +"@esbuild/darwin-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd" + integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw== "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== -"@esbuild/darwin-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" - integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== +"@esbuild/darwin-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107" + integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA== "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== -"@esbuild/freebsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" - integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== +"@esbuild/freebsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7" + integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA== "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== -"@esbuild/freebsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" - integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== +"@esbuild/freebsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93" + integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ== "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== -"@esbuild/linux-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" - integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== +"@esbuild/linux-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75" + integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g== "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== -"@esbuild/linux-arm@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" - integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== +"@esbuild/linux-arm@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d" + integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw== "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" - integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== +"@esbuild/linux-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb" + integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA== "@esbuild/linux-loong64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== -"@esbuild/linux-loong64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" - integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== +"@esbuild/linux-loong64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c" + integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g== "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== -"@esbuild/linux-mips64el@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" - integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== +"@esbuild/linux-mips64el@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3" + integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA== "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== -"@esbuild/linux-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" - integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== +"@esbuild/linux-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e" + integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ== "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== -"@esbuild/linux-riscv64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" - integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== +"@esbuild/linux-riscv64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25" + integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw== "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== -"@esbuild/linux-s390x@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" - integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== +"@esbuild/linux-s390x@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319" + integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g== "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== -"@esbuild/linux-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" - integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== +"@esbuild/linux-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef" + integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA== "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== -"@esbuild/netbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" - integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== +"@esbuild/netbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c" + integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg== -"@esbuild/openbsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" - integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== +"@esbuild/openbsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2" + integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg== "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== -"@esbuild/openbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" - integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== +"@esbuild/openbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf" + integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q== "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== -"@esbuild/sunos-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" - integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== +"@esbuild/sunos-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4" + integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA== "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== -"@esbuild/win32-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" - integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== +"@esbuild/win32-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b" + integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA== "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== -"@esbuild/win32-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" - integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== +"@esbuild/win32-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103" + integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw== "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== -"@esbuild/win32-x64@0.23.1": - version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" - integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== +"@esbuild/win32-x64@0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244" + integrity sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -3550,12 +3552,12 @@ dependencies: "@babel/runtime" "^7.25.6" -"@splunk/visualization-context@^26.3.0": - version "26.3.0" - resolved "https://registry.npmjs.org/@splunk/visualization-context/-/visualization-context-26.3.0.tgz#1eb5e094f71d05b4a9c6bad0dcf310c69e93be41" - integrity sha512-sIY9cuivY4usbXdCHyYxFj6wKuRI/WZoACo77f0z4XERUYora0TFAbOXdJyllPzH2zfIqCeQbawHLcqPsxuvtQ== +"@splunk/visualization-context@^26.4.1": + version "26.4.1" + resolved "https://registry.npmjs.org/@splunk/visualization-context/-/visualization-context-26.4.1.tgz#896d90f5d068b62f47fbe123a1d370242b228189" + integrity sha512-8pzH7OsmW4DW+ebAhyhrNXi59MZTnA4gWgSS2kF2KBgduQqmArSoNq73ccPbSf6H5VtOS8jYvZSZTXZOutN1cg== dependencies: - "@babel/runtime" "^7.25.6" + "@babel/runtime" "^7.25.9" "@splunk/ui-utils" "^1.7.1" uuid-v4 "^0.1.0" @@ -3687,18 +3689,18 @@ resolved "https://registry.npmjs.org/@splunkdev/cloud-sdk/-/cloud-sdk-15.0.0.tgz#30a49eb2e8f26eb1569c4e97402a473dc7f96883" integrity sha512-6oqdH9ljEpnnt6TjkkZuCo3w0IBJH6fiTKMsVIVjaZDBPaoUhxSdRFuXOO+SI/8qf21p+xaGYbepeKZ1ne2HTQ== -"@storybook/addon-a11y@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.6.tgz#4d4528718b378886b7f5602880162145f819abad" - integrity sha512-EeVzUN+WaLtz/DXVBL3rIGvP8+pTuJXA3lEz9CbTQXRO7QMhzTTXLKmp8xmSA2w5H01a8XpjLcZ5LYjdKrvw0g== +"@storybook/addon-a11y@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.4.2.tgz#e827b69ae57dec2b6eeac9835ae125613c32ee34" + integrity sha512-v6Tl+qr3Eslf06qmt2hq1ticYi7oRLIFosePQUOlW1+cgdIbV+r1IxsZ7creCDWX4kIMTbUFhbET9LTYGHem1A== dependencies: - "@storybook/addon-highlight" "8.3.6" + "@storybook/addon-highlight" "8.4.2" axe-core "^4.2.0" -"@storybook/addon-actions@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.6.tgz#80c5dbfc2278d72dc461a954bb729165ee1dfecb" - integrity sha512-nOqgl0WoZK2KwjaABaXMoIgrIHOQl9inOzJvqQau0HOtsvnXGXYfJXYnpjZenoZDoZXKbUDl0U2haDFx2a2fJw== +"@storybook/addon-actions@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.4.2.tgz#3aead1b324ff78144f004f22aa6784b1c1d8a13b" + integrity sha512-+hA200XN5aeA4T3jq8IifQq6Y+9FyNQ0Q+blM1L0Tl7WLzBc7B1kHQnKvhSj5pvMSBWc/Q/kY7Ev5t9gdOu13g== dependencies: "@storybook/global" "^5.0.0" "@types/uuid" "^9.0.1" @@ -3706,111 +3708,105 @@ polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-backgrounds@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.6.tgz#81a92ca45e05858f3cee54ce33766de397abb324" - integrity sha512-yBn+a8i5OJzJaX6Bx5MAkfei7c2nvq+RRmvuyvxw11rtDGR6Nz4OBBe56reWxo868wVUggpRTPJCMVe5tDYgVg== +"@storybook/addon-backgrounds@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.4.2.tgz#56adb5772df3b9c0625aaca63ac3d867c952680c" + integrity sha512-s4uag5VKuk8q2MSnuNS7Sv+v1/mykzGPXe/zZRW2ammtkdHp8Uy78eQS2G0aiG02chXCX+qQgWMyy5QItDcTFQ== dependencies: "@storybook/global" "^5.0.0" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.6.tgz#a61449e50077e9f90d2e15d2594b2bcffb4c03b3" - integrity sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA== +"@storybook/addon-controls@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.2.tgz#441320611e5f3aff7bdc5c740e0925b9728bd137" + integrity sha512-raCbHEj1xl4F3wKH6IdfEXNRaxKpY4QGhjSTE8Pte5iJSVhKG86taLqqRr+4dC7H1/LVMPU1XCGV4mkgDGtyxQ== dependencies: "@storybook/global" "^5.0.0" dequal "^2.0.2" - lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.6.tgz#b03ad160475b7920ef03833bd2674ea62f872d23" - integrity sha512-31Rk1TOhDIzGM2wNCUIB1xKuWtArW0D2Puua9warEXlQ3FtvwmxnPrwbIzw6ufYZDWPwl9phDYTcRh8WqZIoGg== +"@storybook/addon-docs@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.4.2.tgz#43533b43bbaa8662bfcc69c343444a703d434a69" + integrity sha512-jIpykha7hv2Inlrq31ZoYg2QhuCuvcO+Q+uvhT45RDTB+2US/fg3rJINKlw2Djq8RPPOXvty5W0yvE6CrWKhnQ== dependencies: "@mdx-js/react" "^3.0.0" - "@storybook/blocks" "8.3.6" - "@storybook/csf-plugin" "8.3.6" - "@storybook/global" "^5.0.0" - "@storybook/react-dom-shim" "8.3.6" - "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" - fs-extra "^11.1.0" + "@storybook/blocks" "8.4.2" + "@storybook/csf-plugin" "8.4.2" + "@storybook/react-dom-shim" "8.4.2" react "^16.8.0 || ^17.0.0 || ^18.0.0" react-dom "^16.8.0 || ^17.0.0 || ^18.0.0" - rehype-external-links "^3.0.0" - rehype-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.6.tgz#b8a0bbcad10ecd26cddddb517b4a864e4b65de37" - integrity sha512-MQPFvThlGU7wlda1xhBPQCmDh90cSSZ31OsVs1uC5kJh0aLbY2gYXPurq1G54kzrYo8SMfBxsXrCplz8Ir6UTg== - dependencies: - "@storybook/addon-actions" "8.3.6" - "@storybook/addon-backgrounds" "8.3.6" - "@storybook/addon-controls" "8.3.6" - "@storybook/addon-docs" "8.3.6" - "@storybook/addon-highlight" "8.3.6" - "@storybook/addon-measure" "8.3.6" - "@storybook/addon-outline" "8.3.6" - "@storybook/addon-toolbars" "8.3.6" - "@storybook/addon-viewport" "8.3.6" +"@storybook/addon-essentials@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.2.tgz#c633cb7eee48e2c6c5dbdc7cadebdf8191adf78c" + integrity sha512-+/vfPrXM/GWU3Kbrg92PepwAZr7lOeulTTYF4THK0CL3DfUUlkGNpBPLP5PtjCuIkVrTCjXiIEdVWk47d5m2+w== + dependencies: + "@storybook/addon-actions" "8.4.2" + "@storybook/addon-backgrounds" "8.4.2" + "@storybook/addon-controls" "8.4.2" + "@storybook/addon-docs" "8.4.2" + "@storybook/addon-highlight" "8.4.2" + "@storybook/addon-measure" "8.4.2" + "@storybook/addon-outline" "8.4.2" + "@storybook/addon-toolbars" "8.4.2" + "@storybook/addon-viewport" "8.4.2" ts-dedent "^2.0.0" -"@storybook/addon-highlight@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.6.tgz#34c28e8ee0f71b2dad579ab11bf66962d5393bf9" - integrity sha512-A7uU+1OPVXGpkklEUJjSl2VEEDLCSNvmffUJlvW1GjajsNFIHOW2CSD+KnfFlQyPxyVbnWAYLqUP4XJxoqrvDw== +"@storybook/addon-highlight@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.2.tgz#77fae7df40e178d33ff8e0bcf34282768d34dc5a" + integrity sha512-vTtwp7nyJ09SXrsMnH+pukCjHjRMjQXgHZHxvbrv09uoH8ldQMv9B7u+X+9Wcy/jYSKFz/ng7pWo4b4a2oXHkg== dependencies: "@storybook/global" "^5.0.0" -"@storybook/addon-interactions@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.6.tgz#ae03320903688e97934c37a211b3f1a45312248c" - integrity sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw== +"@storybook/addon-interactions@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.2.tgz#1808b6961ec5422347bcc2fe10ba15dfc921e620" + integrity sha512-+/NTENTApeOcONgFNQ6Olbk0GH3pTDG3w0eh00slCB+2agD1BcVKg8SSlHQV0lQF1cK3vWL/X3jeaxdFLYOjjg== dependencies: "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.3.6" - "@storybook/test" "8.3.6" + "@storybook/instrumenter" "8.4.2" + "@storybook/test" "8.4.2" polished "^4.2.2" ts-dedent "^2.2.0" -"@storybook/addon-links@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.6.tgz#2388083f7f53936061cb8cd5d5a40ea116fad785" - integrity sha512-EGEH/kEjndEldbqyiJ8XSASkxqwzL/lgA/+6mHpa6Ljxhk1s5IMGcdA1ymJYJ2BpNdkUxRj/uxAa38eGcQiJ/g== +"@storybook/addon-links@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.4.2.tgz#facbfe343579ba76e391cd261862eeb29b44b5ab" + integrity sha512-8nncReA/drR2cyAcUz484FIv+MXbyCQxYrA6yfWHthZfGu+vMIETvhh+eP4OpluVnxySoQ+hCVK/V8G2jcyAZg== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.6.tgz#874939b2b6aafb29aed23cd74ee7db3c7f338f33" - integrity sha512-VHWeGgYjhzhwb2WAqYW/qyEPqg5pwKR/XqFfd+3tEirUs/64olL1l3lzLwZ8Cm07cJ81T8Z4myywb9kObZfQlw== +"@storybook/addon-measure@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.2.tgz#43b24d3246502e34b3f26780e380f143bd057fac" + integrity sha512-z+j6xQwcUBSpgzl1XDU+xU4YYgLraLMljECW7NvRNyJ/PYixvol8R3wtzWbr+CBpxmvbXjEJCPlF+EjF9/mBWQ== dependencies: "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" -"@storybook/addon-outline@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.6.tgz#0c68a26b54a9294ecf6369473c70132c8d1c23a4" - integrity sha512-+VXpM8SIHX2cn30qLlMvER9/6iioFRSn2sAfLniqy4RrcQmcMP+qgE7ZzbzExt7cneJh3VFsYqBS/HElu14Vgg== +"@storybook/addon-outline@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.2.tgz#cbf0f8fbb5c9a0a0a00a7ffdc67a823eeef05def" + integrity sha512-oTMlPEyT4CBqzcQbfemoJzJ6yzeRAmvrAx9ssaBcnQQRsKxo0D2Ri/Jmm6SNcR0yBHxYRkvIH+2phLw8aiflCQ== dependencies: "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.6.tgz#d06068c96f5a80da2040f15f521c0927e8b0c2d4" - integrity sha512-FJH+lRoZXENfpMR/G09ZqB0TmL/k6bv07GN1ysoVs420tKRgjfz6uXaZz5COrhcdISr5mTNmG+mw9x7xXTfX3Q== +"@storybook/addon-toolbars@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.2.tgz#0662c884ebc5c09b369644fc0f8ee3dca92ab1e9" + integrity sha512-DidzW/NQS224niMJIjcJI2ls83emqygUcS9GYNGgdc5Xwro/TPgGYOXP2qnXgYUxXQTHbrxmIbHdEehxC7CcYQ== -"@storybook/addon-viewport@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.6.tgz#3b95fc33335f75010f0ba6fd552ada388ab64add" - integrity sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA== +"@storybook/addon-viewport@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.2.tgz#cc7014c9a64046de574334767936ee361e6f28c0" + integrity sha512-qVQ2UaxCNsUSFHnAAAizNPIJ/QwfMg7p5bBdpYROTZXJe+bxVp0rFzZmQgHZ3/sn+lzE4ItM4QEfxkfQUWi1ag== dependencies: memoizerific "^1.11.3" @@ -3822,32 +3818,21 @@ "@babel/core" "^7.23.7" babel-loader "^9.1.3" -"@storybook/blocks@8.3.6", "@storybook/blocks@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.6.tgz#ac2e4f07a4df23004b3361c592c2cffe6b95464a" - integrity sha512-Oc5jU6EzfsENjrd91KcKyEKBh60RT+8uyLi1RIrymC2C/mzZMTEoNIrbnQt0eIqbjlHxn6y9JMJxHu4NJ4EmZg== +"@storybook/blocks@8.4.2", "@storybook/blocks@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.2.tgz#69f4458e4aeab1265ae6a304052c5239a0cb82da" + integrity sha512-yAAvmOWaD8gIrepOxCh/RxQqd/1xZIwd/V+gsvAhW/thawN+SpI+zK63gmcqAPLX84hJ3Dh5pegRk0SoHNuDVA== dependencies: "@storybook/csf" "^0.1.11" - "@storybook/global" "^5.0.0" - "@storybook/icons" "^1.2.10" - "@types/lodash" "^4.14.167" - color-convert "^2.0.1" - dequal "^2.0.2" - lodash "^4.17.21" - markdown-to-jsx "^7.4.5" - memoizerific "^1.11.3" - polished "^4.2.2" - react-colorful "^5.1.2" - telejson "^7.2.0" + "@storybook/icons" "^1.2.12" ts-dedent "^2.0.0" - util-deprecate "^1.0.2" -"@storybook/builder-webpack5@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.6.tgz#dbe5ddd9db2f760d60036ea4fb8a674658ca5006" - integrity sha512-Eqn2k8aA9f0o6IMQNAxGAMfSDeTP3YYCQAtOL5Gt5lgrqLV5JMTbZOfmaRBZ82ej/BBSAopnQKIJjQBBFx6kAQ== +"@storybook/builder-webpack5@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.2.tgz#ea2dce291f84c40e6c977c7dcdc6b9ffaab42aa8" + integrity sha512-Pqa0/sqqEujzcvs+/Cwf/5qRLC+atmceROCFokMOgpIaorTXlbmiQdJ2dBhMFNugLvXfL7dVQBjBfiuzhsQ57g== dependencies: - "@storybook/core-webpack" "8.3.6" + "@storybook/core-webpack" "8.4.2" "@types/node" "^22.0.0" "@types/semver" "^7.3.4" browser-assert "^1.2.1" @@ -3856,9 +3841,7 @@ constants-browserify "^1.0.0" css-loader "^6.7.1" es-module-lexer "^1.5.0" - express "^4.19.2" fork-ts-checker-webpack-plugin "^8.0.0" - fs-extra "^11.1.0" html-webpack-plugin "^5.5.0" magic-string "^0.30.5" path-browserify "^1.0.1" @@ -3875,41 +3858,39 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.6.0" +"@storybook/components@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/components/-/components-8.4.2.tgz#e9e7d5dfaef3e36a2654c6bfbd79aa5a4f307a20" + integrity sha512-+W59oF7D73LAxLNmCfFrfs98cH9pyNHK9HlJoO5/lKbK4IdWhhOoqUR/AJ3ueksoLuetFat4DxyE8SN1H4Bvrg== + "@storybook/components@^8": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz#6a8e7f95f1b1f45df7ffcbdeeb3eef3c6cce0d3f" integrity sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A== -"@storybook/components@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.6.tgz#2f5e9a755a964c94f0bab3cd400cc7a71d0489d2" - integrity sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw== - "@storybook/core-common@^8.0.0": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.3.5.tgz#366af0eff857e01504fc648b0387d66761733210" integrity sha512-Dz91pcUH4mGgKRyo5AKiD6bhjC511d7J30SmMs5lgQl7nJWlepqon7Qhy+SzsEWTWtFTgRGPs//lKTmEaVT9ug== -"@storybook/core-webpack@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.6.tgz#4e4d78e52fe88e8f325c7be21b05e7e42cbea730" - integrity sha512-ks306CFKD7FePQzRYyTjddiLsSriceblzv4rI+IjVtftkJvcEbxub2yWkV27kPP/e9kSd4Li3M34bX5mkiwkZA== +"@storybook/core-webpack@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.2.tgz#989c109c6cae7542b269ef9b4351138f1350b1c0" + integrity sha512-bzGvzrLK/oDE9YlKayDEplcECURSa1oRkvV7rxI2sOTNfwuoxHJapvxFxazEKAHMVeSwfWDf4uKK0XeG2R/arA== dependencies: "@types/node" "^22.0.0" ts-dedent "^2.0.0" -"@storybook/core@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.6.tgz#fb439d4edc0722e3bf6fdaff0469bb21566edab1" - integrity sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag== +"@storybook/core@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/core/-/core-8.4.2.tgz#1e591fc6efef30e4e4fde4f266ca0cc9e756e516" + integrity sha512-hF8GWoUZTjwwuV5j4OLhMHZtZQL/NYcVUBReC2Ba06c8PkFIKqKZwATr1zKd301gQ5Qwcn9WgmZxJTMgdKQtOg== dependencies: "@storybook/csf" "^0.1.11" - "@types/express" "^4.17.21" better-opn "^3.0.2" browser-assert "^1.2.1" - esbuild "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0" + esbuild "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0" esbuild-register "^3.5.0" - express "^4.19.2" jsdoc-type-pratt-parser "^4.0.0" process "^0.11.10" recast "^0.23.5" @@ -3917,10 +3898,10 @@ util "^0.12.5" ws "^8.2.3" -"@storybook/csf-plugin@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.6.tgz#8e6fd04f1dd4662f85f6c1e8fa56d4331f3be4c7" - integrity sha512-TJyJPFejO6Gyr3+bXqE/+LomQbivvfHEbee/GwtlRj0XF4KQlqnvuEdEdcK25JbD0NXT8AbyncEUmjoxE7ojQw== +"@storybook/csf-plugin@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.4.2.tgz#3d098179c6ece8f4a053fdb258981cc6b467a1cb" + integrity sha512-1f0t6W5xbC1sSAHHs3uXYPIQs2NXAEtIGqn6X9i3xbbub6hDS8PF8BIm7dOjQ8dZOPp7d9ltR64V5CoLlsOigA== dependencies: unplugin "^1.3.1" @@ -3941,42 +3922,40 @@ resolved "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/icons@^1.2.10": +"@storybook/icons@^1.2.12": version "1.2.12" resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db" integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q== -"@storybook/instrumenter@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.6.tgz#0696a8ba1549080c0670109a9e78beece6e358f5" - integrity sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg== +"@storybook/instrumenter@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.2.tgz#6599abf2b698328659eb0cd5568d553f8d649776" + integrity sha512-gPYCZ/0O6gRLI3zmenu2N6QtKzxDZFdT2xf4RWcNUSZyp28RZkRCIgKFMt3fTmvE0yMzAjQyRSkBdrONjQ44HA== dependencies: "@storybook/global" "^5.0.0" - "@vitest/utils" "^2.0.5" - util "^0.12.4" + "@vitest/utils" "^2.1.1" + +"@storybook/manager-api@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.2.tgz#6bf972accfa6339034b50a7338654ad433aac6d1" + integrity sha512-rhPc4cgQDKDH8NUyRh/ZaJW7QIhR/PO5MNX4xc+vz71sM2nO7ONA/FrgLtCuu4SULdwilEPvGefYvLK0dE+Caw== "@storybook/manager-api@^8": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz#73560ffc3774901e503e31aefac91cd4a1579bbb" integrity sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q== -"@storybook/manager-api@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.6.tgz#6dfb268a5f1f8228d0bac69fd6e63f6bd2620c2d" - integrity sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ== - -"@storybook/preset-react-webpack@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.6.tgz#f1fd392ecfe9462b597d2d9cb5e5fadd69e61f5a" - integrity sha512-Ar0vhJITXa4xsXT3RdgYZ2mhXxE3jfUisQzsITey5a2RVgnSBIENggmRZ/6j1oVgEXFthbarNEsebGiA+2vDZg== +"@storybook/preset-react-webpack@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.2.tgz#7c67cbbfe54131019931732558dea8b838018592" + integrity sha512-Gt9hQRo1ythGFzATNV4WgQDlMDzBgiq7ks+YkW2/Xu5ZkrRrM/gK75fhmbICrknZl2pPPfNFXlECPWKAeTmwFA== dependencies: - "@storybook/core-webpack" "8.3.6" - "@storybook/react" "8.3.6" + "@storybook/core-webpack" "8.4.2" + "@storybook/react" "8.4.2" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" "@types/node" "^22.0.0" "@types/semver" "^7.3.4" find-up "^5.0.0" - fs-extra "^11.1.0" magic-string "^0.30.5" react-docgen "^7.0.0" resolve "^1.22.8" @@ -3984,16 +3963,16 @@ tsconfig-paths "^4.2.0" webpack "5" +"@storybook/preview-api@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.2.tgz#77640e16c8662b9aa3a9dd4ec1b7362b9b4f6b3f" + integrity sha512-5X/xvIvDPaWJKUBCo5zVeBbbjkhnwcI2KPkuOgrHVRRhuQ5WqD0RYxVtOOFNyQXme7g0nNl5RFNgvT7qv9qGeg== + "@storybook/preview-api@^8", "@storybook/preview-api@^8.0.0": version "8.3.5" resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz#d30debc89793a912cdd26aea1e18b92527f2cf76" integrity sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg== -"@storybook/preview-api@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.6.tgz#7891b0d9f86bfb49c98eb34487c432354710b468" - integrity sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg== - "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz#7f10f3c641f32e4513a8b6ffb5036933e7059534" @@ -4007,46 +3986,32 @@ react-docgen-typescript "^2.2.2" tslib "^2.0.0" -"@storybook/react-dom-shim@8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.6.tgz#40ce82a4e6559a617c4a7288b532652fefcd271e" - integrity sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA== +"@storybook/react-dom-shim@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.2.tgz#cefc4b2cb7d3f632492867a3d5edbf568418c66a" + integrity sha512-FZVTM1f34FpGnf6e3MDIKkz05gmn8H9wEccvQAgr8pEFe8VWfrpVWeUrmatSAfgrCMNXYC1avDend8UX6IM8Fg== -"@storybook/react-webpack5@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.3.6.tgz#5f8aa77bdd66a7d6774ec25ef208fd5639f14c36" - integrity sha512-8HBnBab6kPJuX0gQGIl6voZXLRdvyXxd5wmHXc0db0T9Ozq5iuNbo9sUEk9QCwJpuQc7lDDmuOkXHVq1WjSibw== +"@storybook/react-webpack5@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.2.tgz#4d769f0c8d0309b275cd9f888cb95fdeb35f0edc" + integrity sha512-d2/kA7X7bFYnf3WI/aVKfg6ICMHiBIheSmgeY43R1E4K3KUjsJIVJDIliT+UKVZkEo0ie+rglZu0la1DO5Kl+Q== dependencies: - "@storybook/builder-webpack5" "8.3.6" - "@storybook/preset-react-webpack" "8.3.6" - "@storybook/react" "8.3.6" + "@storybook/builder-webpack5" "8.4.2" + "@storybook/preset-react-webpack" "8.4.2" + "@storybook/react" "8.4.2" "@types/node" "^22.0.0" -"@storybook/react@8.3.6", "@storybook/react@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.6.tgz#da7dedf28c9985476409ab118142337db1bd03d0" - integrity sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A== +"@storybook/react@8.4.2", "@storybook/react@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/react/-/react-8.4.2.tgz#a8d61902e0b72e99e96dfde4251eb0ce79249905" + integrity sha512-rO5/aVKBVhIKENcL7G8ud4QKC5OyWBPCkJIvY6XUHIuhErJy9/4pP+sZ85jypVwx5kq+EqCPF8AEOWjIxB/4/Q== dependencies: - "@storybook/components" "^8.3.6" + "@storybook/components" "8.4.2" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "^8.3.6" - "@storybook/preview-api" "^8.3.6" - "@storybook/react-dom-shim" "8.3.6" - "@storybook/theming" "^8.3.6" - "@types/escodegen" "^0.0.6" - "@types/estree" "^0.0.51" - "@types/node" "^22.0.0" - acorn "^7.4.1" - acorn-jsx "^5.3.1" - acorn-walk "^7.2.0" - escodegen "^2.1.0" - html-tags "^3.1.0" - prop-types "^15.7.2" - react-element-to-jsx-string "^15.0.0" - semver "^7.3.7" - ts-dedent "^2.0.0" - type-fest "~2.19" - util-deprecate "^1.0.2" + "@storybook/manager-api" "8.4.2" + "@storybook/preview-api" "8.4.2" + "@storybook/react-dom-shim" "8.4.2" + "@storybook/theming" "8.4.2" "@storybook/test-runner@^0.19.1": version "0.19.1" @@ -4076,25 +4041,24 @@ nyc "^15.1.0" playwright "^1.14.0" -"@storybook/test@8.3.6", "@storybook/test@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.6.tgz#a1b92be405004f479319127bba833a52e8d075b1" - integrity sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg== +"@storybook/test@8.4.2", "@storybook/test@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/test/-/test-8.4.2.tgz#aab7b4c6848b961f7550fa98157fca3bf2ac817c" + integrity sha512-MipTdboStv0hsqF2Sw8TZgP0YnxCcDYwxkTOd4hmRzev/7Brtvpi4pqjqh8k98ZCvhrCPAPVIoX5drk+oi3YUA== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.3.6" + "@storybook/instrumenter" "8.4.2" "@testing-library/dom" "10.4.0" "@testing-library/jest-dom" "6.5.0" "@testing-library/user-event" "14.5.2" "@vitest/expect" "2.0.5" "@vitest/spy" "2.0.5" - util "^0.12.4" -"@storybook/theming@^8.3.6": - version "8.3.6" - resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.6.tgz#57c5789903e50b84844aa8e7ce0e1f031e98a948" - integrity sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ== +"@storybook/theming@8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.2.tgz#0e385869a225040e326cfba301b6cdccd31dcb21" + integrity sha512-9j4fnu5LcV+qSs1rdwf61Bt14lms0T1LOZkHxGNcS1c1oH+cPS+sxECh2lxtni+mvOAHUlBs9pKhVZzRPdWpvg== "@swc/core-darwin-arm64@1.7.35": version "1.7.35" @@ -4227,10 +4191,10 @@ lodash "^4.17.21" redent "^3.0.0" -"@testing-library/jest-dom@^6.6.2": - version "6.6.2" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.2.tgz#8186aa9a07263adef9cc5a59a4772db8c31f4a5b" - integrity sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw== +"@testing-library/jest-dom@^6.6.3": + version "6.6.3" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz#26ba906cf928c0f8172e182c6fe214eb4f9f2bd2" + integrity sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA== dependencies: "@adobe/css-tools" "^4.4.0" aria-query "^5.0.0" @@ -4377,17 +4341,23 @@ resolved "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== -"@types/escodegen@^0.0.6": - version "0.0.6" - resolved "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c" - integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig== +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" -"@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": version "1.0.6" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== @@ -4444,13 +4414,6 @@ dependencies: "@types/node" "*" -"@types/hast@^3.0.0": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - "@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.1": version "3.3.5" resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" @@ -4517,7 +4480,7 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -4527,7 +4490,7 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.156", "@types/lodash@^4.14.167": +"@types/lodash@^4.14.156": version "4.17.10" resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz#64f3edf656af2fe59e7278b73d3e62404144a6e6" integrity sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ== @@ -4575,10 +4538,10 @@ dependencies: undici-types "~6.19.2" -"@types/node@^20.17.1": - version "20.17.1" - resolved "https://registry.npmjs.org/@types/node/-/node-20.17.1.tgz#2b968e060dfb04b7f9550fe3db5f552721c14566" - integrity sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q== +"@types/node@^20.17.6": + version "20.17.6" + resolved "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz#6e4073230c180d3579e8c60141f99efdf5df0081" + integrity sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ== dependencies: undici-types "~6.19.2" @@ -4624,7 +4587,7 @@ dependencies: "@types/react" "^17" -"@types/react@*", "@types/react@^16.14.62", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.38", "@types/react@^17": +"@types/react@*", "@types/react@^16.14.62", "@types/react@^16.9.38", "@types/react@^17": version "16.14.62" resolved "https://registry.npmjs.org/@types/react/-/react-16.14.62.tgz#449e4e81caaf132d0c2c390644e577702db1dd9e" integrity sha512-BWf7hqninZav6nerxXj+NeZT/mTpDeG6Lk2zREHAy63CrnXoOGPGtNqTFYFN/sqpSaREDP5otVV88axIXmKfGA== @@ -4720,11 +4683,6 @@ resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - "@types/use-sync-external-store@^0.0.3": version "0.0.3" resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" @@ -4937,7 +4895,7 @@ "@typescript-eslint/types" "8.9.0" eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": +"@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== @@ -4959,10 +4917,10 @@ dependencies: tinyrainbow "^1.2.0" -"@vitest/pretty-format@2.1.3": - version "2.1.3" - resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz#48b9b03de75507d1d493df7beb48dc39a1946a3e" - integrity sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ== +"@vitest/pretty-format@2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.4.tgz#fc31993bdc1ef5a6c1a4aa6844e7ba55658a4f9f" + integrity sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww== dependencies: tinyrainbow "^1.2.0" @@ -4983,13 +4941,13 @@ loupe "^3.1.1" tinyrainbow "^1.2.0" -"@vitest/utils@^2.0.5": - version "2.1.3" - resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz#e52aa5745384091b151cbdf79bb5a3ad2bea88d2" - integrity sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA== +"@vitest/utils@^2.1.1": + version "2.1.4" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.4.tgz#6d67ac966647a21ce8bc497472ce230de3b64537" + integrity sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg== dependencies: - "@vitest/pretty-format" "2.1.3" - loupe "^3.1.1" + "@vitest/pretty-format" "2.1.4" + loupe "^3.1.2" tinyrainbow "^1.2.0" "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": @@ -5174,16 +5132,11 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.0.2, acorn-walk@^8.1.1: version "8.3.4" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" @@ -5191,16 +5144,16 @@ acorn-walk@^8.0.2, acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^7.4.1: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - acorn@^8.1.0, acorn@^8.11.0, acorn@^8.12.1, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -7263,35 +7216,35 @@ esbuild@^0.17.18: "@esbuild/win32-ia32" "0.17.19" "@esbuild/win32-x64" "0.17.19" -"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0": - version "0.23.1" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" - integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": + version "0.24.0" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz#f2d470596885fcb2e91c21eb3da3b3c89c0b55e7" + integrity sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.23.1" - "@esbuild/android-arm" "0.23.1" - "@esbuild/android-arm64" "0.23.1" - "@esbuild/android-x64" "0.23.1" - "@esbuild/darwin-arm64" "0.23.1" - "@esbuild/darwin-x64" "0.23.1" - "@esbuild/freebsd-arm64" "0.23.1" - "@esbuild/freebsd-x64" "0.23.1" - "@esbuild/linux-arm" "0.23.1" - "@esbuild/linux-arm64" "0.23.1" - "@esbuild/linux-ia32" "0.23.1" - "@esbuild/linux-loong64" "0.23.1" - "@esbuild/linux-mips64el" "0.23.1" - "@esbuild/linux-ppc64" "0.23.1" - "@esbuild/linux-riscv64" "0.23.1" - "@esbuild/linux-s390x" "0.23.1" - "@esbuild/linux-x64" "0.23.1" - "@esbuild/netbsd-x64" "0.23.1" - "@esbuild/openbsd-arm64" "0.23.1" - "@esbuild/openbsd-x64" "0.23.1" - "@esbuild/sunos-x64" "0.23.1" - "@esbuild/win32-arm64" "0.23.1" - "@esbuild/win32-ia32" "0.23.1" - "@esbuild/win32-x64" "0.23.1" + "@esbuild/aix-ppc64" "0.24.0" + "@esbuild/android-arm" "0.24.0" + "@esbuild/android-arm64" "0.24.0" + "@esbuild/android-x64" "0.24.0" + "@esbuild/darwin-arm64" "0.24.0" + "@esbuild/darwin-x64" "0.24.0" + "@esbuild/freebsd-arm64" "0.24.0" + "@esbuild/freebsd-x64" "0.24.0" + "@esbuild/linux-arm" "0.24.0" + "@esbuild/linux-arm64" "0.24.0" + "@esbuild/linux-ia32" "0.24.0" + "@esbuild/linux-loong64" "0.24.0" + "@esbuild/linux-mips64el" "0.24.0" + "@esbuild/linux-ppc64" "0.24.0" + "@esbuild/linux-riscv64" "0.24.0" + "@esbuild/linux-s390x" "0.24.0" + "@esbuild/linux-x64" "0.24.0" + "@esbuild/netbsd-x64" "0.24.0" + "@esbuild/openbsd-arm64" "0.24.0" + "@esbuild/openbsd-x64" "0.24.0" + "@esbuild/sunos-x64" "0.24.0" + "@esbuild/win32-arm64" "0.24.0" + "@esbuild/win32-ia32" "0.24.0" + "@esbuild/win32-x64" "0.24.0" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -7318,7 +7271,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0, escodegen@^2.1.0: +escodegen@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== @@ -7407,10 +7360,10 @@ eslint-plugin-import@^2.31.0: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-jest@^28.8.3: - version "28.8.3" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz#c5699bba0ad06090ad613535e4f1572f4c2567c0" - integrity sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ== +eslint-plugin-jest@^28.9.0: + version "28.9.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz#19168dfaed124339cd2252c4c4d1ac3688aeb243" + integrity sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ== dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -7471,10 +7424,10 @@ eslint-plugin-react@^7.37.2: string.prototype.matchall "^4.0.11" string.prototype.repeat "^1.0.0" -eslint-plugin-storybook@^0.10.1: - version "0.10.1" - resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.1.tgz#1c8acf11098f1abe2ac565e4ee0b499a2428a464" - integrity sha512-YpxkdqyiKpMIrRquuvBaCinsqmZJ86JvXRX/gtRa4Qctpk0ipFt2cWqEjkB1HHWWG0DVRXlUBKHjRogC2Ig1fg== +eslint-plugin-storybook@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.0.tgz#97adc63512816a6f8b86040d1364af43d3336099" + integrity sha512-MvPJgF+ORwgK04a1CY5itO4pwdAOFIRqczlNEHL62+4Ocvj1d61GWRqIdeX1BNCKno6fdPC6TksUHCZMGsq26g== dependencies: "@storybook/csf" "^0.1.11" "@typescript-eslint/utils" "^8.8.1" @@ -8009,7 +7962,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.0, fs-extra@^11.2.0: +fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -8125,11 +8078,6 @@ get-value@^2.0.2, get-value@^2.0.6: resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -github-slugger@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" - integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== - gl-matrix@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" @@ -8326,27 +8274,6 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hast-util-heading-rank@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz#2d5c6f2807a7af5c45f74e623498dd6054d2aba8" - integrity sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-is-element@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz#6e31a6532c217e5b533848c7e52c9d9369ca0932" - integrity sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-to-string@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz#a4f15e682849326dd211c97129c94b0c3e76527c" - integrity sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A== - dependencies: - "@types/hast" "^3.0.0" - he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -8423,7 +8350,7 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" -html-tags@^3.1.0, html-tags@^3.2.0: +html-tags@^3.2.0: version "3.3.1" resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== @@ -8692,11 +8619,6 @@ ipaddr.js@^2.1.0: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== -is-absolute-url@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz#16e4d487d4fded05cfe0685e53ec86804a5e94dc" - integrity sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A== - is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -8897,11 +8819,6 @@ is-plain-obj@^3.0.0: resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@5.0.0, is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -8909,6 +8826,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -9910,7 +9832,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^3.1.0, loupe@^3.1.1: +loupe@^3.1.0, loupe@^3.1.1, loupe@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== @@ -10020,11 +9942,6 @@ maplibre-gl@^3.6.2: tinyqueue "^2.0.3" vt-pbf "^3.1.3" -markdown-to-jsx@^7.4.5: - version "7.5.0" - resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150" - integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw== - mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" @@ -10219,23 +10136,24 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msw-storybook-addon@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-2.0.3.tgz#6a9ccf19f89ec9dde1d17e4a3be71d93b42e857a" - integrity sha512-CzHmGO32JeOPnyUnRWnB0PFTXCY1HKfHiEB/6fYoUYiFm2NYosLjzs9aBd3XJUryYEN0avJqMNh7nCRDxE5JjQ== +msw-storybook-addon@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-2.0.4.tgz#ff1f583c95aef5f8c2014299f235e13cdd34dc1b" + integrity sha512-rstO8+r01sRMg6PPP7OxM8LG5/6r4+wmp2uapHeHvm9TQQRHvpPXOU/Y9/Somysz8Oi4Ea1aummXH3JlnP2LIA== dependencies: is-node-process "^1.0.1" -msw@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/msw/-/msw-2.5.2.tgz#dfce10b68dbabc2d5dafeb6d7fb82c3c7073a4d1" - integrity sha512-eBsFgU30NYtrfC62XzS1rdAzFK+Br0zKU4ORqD9Qliq86362DWZyPiD6FLfMgy0Ktik83DPTXmqPMz2bqwmJdA== +msw@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/msw/-/msw-2.6.0.tgz#ab50752feb5c63de90d70e8165746e2ea84580dd" + integrity sha512-n3tx2w0MZ3H4pxY0ozrQ4sNPzK/dGtlr2cIIyuEsgq2Bhy4wvcW6ZH2w/gXM9+MEUY6HC1fWhqtcXDxVZr5Jxw== dependencies: "@bundled-es-modules/cookie" "^2.0.0" "@bundled-es-modules/statuses" "^1.0.1" "@bundled-es-modules/tough-cookie" "^0.1.6" "@inquirer/confirm" "^5.0.0" "@mswjs/interceptors" "^0.36.5" + "@open-draft/deferred-promise" "^2.2.0" "@open-draft/until" "^2.1.0" "@types/cookie" "^0.6.0" "@types/statuses" "^2.0.4" @@ -11183,11 +11101,6 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -react-colorful@^5.1.2: - version "5.6.1" - resolved "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" - integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== - react-docgen-typescript@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" @@ -11227,15 +11140,6 @@ react-dom@^16.14.0: loose-envify "^1.1.0" scheduler "^0.23.2" -react-element-to-jsx-string@^15.0.0: - version "15.0.0" - resolved "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" - integrity sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ== - dependencies: - "@base2/pretty-print-object" "1.0.1" - is-plain-object "5.0.0" - react-is "18.1.0" - react-event-listener@^0.6.4, react-event-listener@^0.6.6: version "0.6.6" resolved "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a" @@ -11257,11 +11161,6 @@ react-full-screen@^1.0.2: dependencies: fscreen "^1.0.2" -react-is@18.1.0: - version "18.1.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== - react-is@^16.10.0, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -11509,29 +11408,6 @@ regjsparser@^0.11.0: dependencies: jsesc "~3.0.2" -rehype-external-links@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz#2b28b5cda1932f83f045b6f80a3e1b15f168c6f6" - integrity sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw== - dependencies: - "@types/hast" "^3.0.0" - "@ungap/structured-clone" "^1.0.0" - hast-util-is-element "^3.0.0" - is-absolute-url "^4.0.0" - space-separated-tokens "^2.0.0" - unist-util-visit "^5.0.0" - -rehype-slug@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz#1d21cf7fc8a83ef874d873c15e6adaee6344eaf1" - integrity sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A== - dependencies: - "@types/hast" "^3.0.0" - github-slugger "^2.0.0" - hast-util-heading-rank "^3.0.0" - hast-util-to-string "^3.0.0" - unist-util-visit "^5.0.0" - relateurl@^0.2.7: version "0.2.7" resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -12063,11 +11939,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" @@ -12190,12 +12061,12 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -storybook@^8.3.6: - version "8.3.6" - resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.6.tgz#c5e733504fac26c1a31c527a645c04ec7da4222f" - integrity sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ== +storybook@^8.4.2: + version "8.4.2" + resolved "https://registry.npmjs.org/storybook/-/storybook-8.4.2.tgz#02e71cf32db25af713b3681b1b52be1403b478dd" + integrity sha512-GMCgyAulmLNrkUtDkCpFO4SB77YrpiIxq6e5tzaQdXEuaDu1mdNwOuP3VG7nE2FzxmqDvagSgriM68YW9iFaZA== dependencies: - "@storybook/core" "8.3.6" + "@storybook/core" "8.4.2" strict-event-emitter@^0.5.1: version "0.5.1" @@ -12522,13 +12393,6 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -telejson@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" - integrity sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ== - dependencies: - memoizerific "^1.11.3" - terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" @@ -12762,7 +12626,7 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.19.0, type-fest@~2.19: +type-fest@^2.19.0: version "2.19.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== @@ -12903,30 +12767,6 @@ union-value@^1.0.1: is-extendable "^0.1.1" set-value "^2.0.1" -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - universalify@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" @@ -13039,10 +12879,10 @@ uuid-v4@^0.1.0: resolved "https://registry.npmjs.org/uuid-v4/-/uuid-v4-0.1.0.tgz#62d7b310406f6cecfea1528c69f1e8e0bcec5a3a" integrity sha512-m11RYDtowtAIihBXMoGajOEKpAXrKbpKlpmxqyztMYQNGSY5nZAZ/oYch/w2HNS1RMA4WLGcZvuD8/wFMuCEzA== -uuid@^11.0.1: - version "11.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-11.0.1.tgz#a527e188c4c11a7ff5d139e59f229a9f90440669" - integrity sha512-wt9UB5EcLhnboy1UvA1mvGPXkIIrHSu+3FmUksARfdVw9tuPf3CH/CohxO0Su1ApoKAeT6BVzAJIvjTuQVSmuQ== +uuid@^11.0.2: + version "11.0.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-11.0.2.tgz#a8d68ba7347d051e7ea716cc8dcbbab634d66875" + integrity sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ== uuid@^8.3.2: version "8.3.2" @@ -13286,7 +13126,7 @@ webpack-virtual-modules@^0.6.0, webpack-virtual-modules@^0.6.2: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== -webpack@5, webpack@^5.95.0: +webpack@5: version "5.95.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz#8fd8c454fa60dad186fbe36c400a55848307b4c0" integrity sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q== @@ -13315,6 +13155,35 @@ webpack@5, webpack@^5.95.0: watchpack "^2.4.1" webpack-sources "^3.2.3" +webpack@^5.96.1: + version "5.96.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz#3676d1626d8312b6b10d0c18cc049fba7ac01f0c" + integrity sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.14.0" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.1" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" From 37306ac4a726b9a4affe5ca55e08e5d501f012cc Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:03:08 +0100 Subject: [PATCH 11/34] chore(quick_start_ui.sh): fix container name (#1435) --- scripts/quick_start_ui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/quick_start_ui.sh b/scripts/quick_start_ui.sh index 6b8c06961..2ade29f01 100755 --- a/scripts/quick_start_ui.sh +++ b/scripts/quick_start_ui.sh @@ -52,7 +52,7 @@ docker run \ -e "SPLUNK_DISABLE_POPUPS=true" \ -d \ --pull=always \ - --name splunk splunk/splunk:${1:-"latest"} + --name $CONTAINER_NAME splunk/splunk:${1:-"latest"} echo -n "Waiting Splunk for run" until curl -Lsk "https://localhost:8088/services/collector/health" &>/dev/null ; do echo -n "." && sleep 5 ; done From 443010377a675e99483134d81a2911e8b0284732 Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:58:06 +0100 Subject: [PATCH 12/34] docs(contributing): update commands for building TA (#1434) --- docs/contributing.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index f7141c226..c5e564f16 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -93,41 +93,40 @@ UCC is a tool for Technology Add-ons (TAs), so it's important to test TA generat The method for installing dependencies may vary among different TAs. Common approaches include running Poetry, but please refer to your TA's documentation for specific instructions. ```bash -# Navigate to your TA repository -cd /path/to/your/ta +# These variables would be used in the further steps +ta_repo=/path/to/ta +ta_name=TA_Name_From_app.manifest -poetry install +poetry install --directory=$ta_repo -mkdir -p package/lib +mkdir -p $ta_repo/package/lib # Export dependencies to 'requirements.txt' -poetry export --without-hashes -o package/lib/requirements.txt +poetry export --without-hashes -o $ta_repo/package/lib/requirements.txt --directory $ta_repo ``` > Note: ucc-gen expects dependencies to be listed in `package/lib/requirements.txt`. ### Building TA -Run the following commands from the UCC repository: - ```bash -poetry run ucc-gen build --source /path/to/your/ta/package +poetry run ucc-gen build --source $ta_repo/package ``` -Ensure you specify the package folder, not the repository root. Monitor the build process for any errors. +Ensure you specify the `package` folder, not the repository root. Monitor the build process for any errors. **Caveat**: The build command may run scripts from the TA repository that may not be tested if running from a non-TA repository. For example, `build-ui.sh` may use relative paths for building custom components. You might need to manually run the script and/or copy the files to the output directory of UCC. ```bash -$ta_repo = /path/to/your/ta -$ta_name = TA_name +# in case if TA has custom UI components +mkdir -p output/$ta_name/appserver/static/js/build cp -a $ta_repo/output/$ta_name/appserver/static/js/build/custom output/$ta_name/appserver/static/js/build ``` ### Packaging TA ```bash -poetry run ucc-gen package --path output/TA_name +poetry run ucc-gen package --path output/$ta_name ``` This command will generate a packaged TA (.tar.gz file) that you can install into Splunk. From c452207ad7d9f4d674f77fb83e5ba89931230655 Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:20:40 +0100 Subject: [PATCH 13/34] test(ui): check showing network error (#1428) --- .../tests/ConfigurationPage.test.tsx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx b/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx index 7f2ba0962..77aa00be8 100644 --- a/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx +++ b/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx @@ -9,6 +9,7 @@ import { mockServerResponseWithContent } from '../../../mocks/server-response'; import { getUnifiedConfigs } from '../../../util/util'; import ConfigurationPage from '../ConfigurationPage'; import { type meta as metaType } from '../../../types/globalConfig/meta'; +import { consoleError } from '../../../../jest.setup'; jest.mock('../../../util/util'); @@ -64,3 +65,29 @@ it('should show UCC version', async () => { const uccVersion = await page.findByTestId('ucc-credit'); expect(uccVersion).toHaveTextContent(expectedUccVersion); }); + +it('should display error when server returns error', async () => { + consoleError.mockImplementation(() => {}); + const errorMessage = 'Oopsie doopsie'; + server.use( + http.get(`/servicesNS/nobody/-/:endpointUrl`, () => + HttpResponse.json( + { + messages: [ + { + text: errorMessage, + }, + ], + }, + { status: 500 } + ) + ) + ); + + const page = setup({ + _uccVersion: undefined, + }); + + const errorText = await page.findByText(errorMessage); + expect(errorText).toBeInTheDocument(); +}); From b4b4cef2aeb2e067dc13f4bc97780e10f8929def Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:31:19 +0100 Subject: [PATCH 14/34] test(delete-modal): add network error test case (#1429) --- .../DeleteModal/DeleteModal.test.tsx | 28 +++++++++++++++++-- ui/src/components/DeleteModal/DeleteModal.tsx | 9 +++--- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/ui/src/components/DeleteModal/DeleteModal.test.tsx b/ui/src/components/DeleteModal/DeleteModal.test.tsx index 063e75013..37de666b3 100644 --- a/ui/src/components/DeleteModal/DeleteModal.test.tsx +++ b/ui/src/components/DeleteModal/DeleteModal.test.tsx @@ -51,9 +51,8 @@ it('close model and callback after cancel click', async () => { it('correct delete request', async () => { server.use( - http.delete( - '/servicesNS/nobody/-/restRoot_serviceName/stanzaName', - () => new HttpResponse(undefined, { status: 201 }) + http.delete('/servicesNS/nobody/-/restRoot_serviceName/stanzaName', () => + HttpResponse.json({}, { status: 201 }) ) ); const deleteButton = screen.getByRole('button', { name: /delete/i }); @@ -61,3 +60,26 @@ it('correct delete request', async () => { expect(handleClose).toHaveBeenCalled(); }); + +it('failed delete request', async () => { + const errorMessage = 'Oopsy doopsy'; + server.use( + http.delete('/servicesNS/nobody/-/restRoot_serviceName/stanzaName', () => + HttpResponse.json( + { + messages: [ + { + text: `Unexpected error "" from python handler: "REST Error [400]: Bad Request -- ${errorMessage}". See splunkd.log/python.log for more details.`, + }, + ], + }, + { status: 500 } + ) + ) + ); + const deleteButton = screen.getByRole('button', { name: /delete/i }); + await userEvent.click(deleteButton); + + expect(handleClose).not.toHaveBeenCalled(); + expect(screen.getByText(errorMessage)).toBeInTheDocument(); +}); diff --git a/ui/src/components/DeleteModal/DeleteModal.tsx b/ui/src/components/DeleteModal/DeleteModal.tsx index e7dc8fa42..c19bcee6b 100644 --- a/ui/src/components/DeleteModal/DeleteModal.tsx +++ b/ui/src/components/DeleteModal/DeleteModal.tsx @@ -61,11 +61,6 @@ class DeleteModal extends Component { method: 'delete', handleError: false, }) - .catch((err) => { - const errorSubmitMsg = parseErrorMsg(err); - this.setState({ ErrorMsg: errorSubmitMsg, isDeleting: false }); - return Promise.reject(err); - }) .then(() => { this.context?.setRowData( update(this.context.rowData, { @@ -75,6 +70,10 @@ class DeleteModal extends Component { this.setState({ isDeleting: false }); this.handleRequestClose(); generateToast(`Deleted "${this.props.stanzaName}"`, 'success'); + }) + .catch((err) => { + const errorSubmitMsg = parseErrorMsg(err); + this.setState({ ErrorMsg: errorSubmitMsg, isDeleting: false }); }); } ); From ba3ce588733486ed335095f35a45ca9eb908d02f Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Fri, 8 Nov 2024 13:12:47 +0100 Subject: [PATCH 15/34] test(selectors): add numeric values (#1436) --- ui/src/components/table/CustomTableRow.jsx | 3 ++ .../stories/ConfigurationPage.stories.tsx | 13 ++++++ ...onPage-configuration-view-add-chromium.png | 3 ++ .../Configuration/stories/globalConfig.json | 11 ++--- .../pages/Input/stories/InputPage.stories.tsx | 27 +++++++++-- ...tPage-input-page-expanded-row-chromium.png | 4 +- ...InputPage-input-page-view-add-chromium.png | 4 +- .../InputPage-input-page-view-chromium.png | 4 +- ...-input-page-view-update-input-chromium.png | 3 ++ ui/src/pages/Input/stories/globalConfig.json | 45 +++++++++++++++++++ 10 files changed, 103 insertions(+), 14 deletions(-) create mode 100644 ui/src/pages/Configuration/stories/__images__/ConfigurationPage-configuration-view-add-chromium.png create mode 100644 ui/src/pages/Input/stories/__images__/InputPage-input-page-view-update-input-chromium.png diff --git a/ui/src/components/table/CustomTableRow.jsx b/ui/src/components/table/CustomTableRow.jsx index 20f45300a..5ed7a8ea6 100644 --- a/ui/src/components/table/CustomTableRow.jsx +++ b/ui/src/components/table/CustomTableRow.jsx @@ -59,6 +59,7 @@ function CustomTableRow(props) { } onClick={() => handleEditActionClick(selectedRow)} className="editBtn" @@ -69,6 +70,7 @@ function CustomTableRow(props) { } onClick={() => handleCloneActionClick(selectedRow)} className="cloneBtn" @@ -95,6 +97,7 @@ function CustomTableRow(props) { } onClick={() => handleDeleteActionClick(selectedRow)} className="deleteBtn" diff --git a/ui/src/pages/Configuration/stories/ConfigurationPage.stories.tsx b/ui/src/pages/Configuration/stories/ConfigurationPage.stories.tsx index 8a806a62a..c94694595 100644 --- a/ui/src/pages/Configuration/stories/ConfigurationPage.stories.tsx +++ b/ui/src/pages/Configuration/stories/ConfigurationPage.stories.tsx @@ -1,6 +1,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import React from 'react'; import { http, HttpResponse } from 'msw'; +import { userEvent, within } from '@storybook/test'; import { setUnifiedConfig } from '../../../util/util'; import globalConfig from './globalConfig.json'; import ConfigurationPage from '../ConfigurationPage'; @@ -42,3 +43,15 @@ export default meta; type Story = StoryObj; export const ConfigurationPageView: Story = {}; + +export const ConfigurationViewAdd: Story = { + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const closeBtn = canvas.queryByRole('button', { name: /(Close)|(Cancel)/ }); + if (closeBtn) { + await userEvent.click(closeBtn); + } + const addButton = await canvas.findByRole('button', { name: 'Add' }); + await userEvent.click(addButton); + }, +}; diff --git a/ui/src/pages/Configuration/stories/__images__/ConfigurationPage-configuration-view-add-chromium.png b/ui/src/pages/Configuration/stories/__images__/ConfigurationPage-configuration-view-add-chromium.png new file mode 100644 index 000000000..df2f50037 --- /dev/null +++ b/ui/src/pages/Configuration/stories/__images__/ConfigurationPage-configuration-view-add-chromium.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd00ee8f7af8b9d4ace10324586edfe6b71ef78921944f3ec602b54b9e9991c9 +size 108349 diff --git a/ui/src/pages/Configuration/stories/globalConfig.json b/ui/src/pages/Configuration/stories/globalConfig.json index 9c0a123f3..c18835402 100644 --- a/ui/src/pages/Configuration/stories/globalConfig.json +++ b/ui/src/pages/Configuration/stories/globalConfig.json @@ -57,7 +57,7 @@ "disableSearch": true, "autoCompleteFields": [ { - "value": "login.example.com", + "value": 1, "label": "Value1" }, { @@ -73,7 +73,7 @@ }, "help": "", "field": "custom_endpoint", - "defaultValue": "login.example.com", + "defaultValue": 1, "required": true }, { @@ -160,16 +160,17 @@ "type": "multipleSelect", "label": "Example Multiple Select", "field": "account_multiple_select", - "help": "This is an example multipleSelect for account entity", + "help": "default value is Numeric Two", "required": true, + "defaultValue": "2", "options": { "items": [ { - "value": "one", + "value": 1, "label": "Option One" }, { - "value": "two", + "value": 2, "label": "Option Two" } ] diff --git a/ui/src/pages/Input/stories/InputPage.stories.tsx b/ui/src/pages/Input/stories/InputPage.stories.tsx index 5886f4c51..b457f70cb 100644 --- a/ui/src/pages/Input/stories/InputPage.stories.tsx +++ b/ui/src/pages/Input/stories/InputPage.stories.tsx @@ -29,21 +29,22 @@ const meta = { return HttpResponse.json( getMockServerResponseForInput([ { - name: 'my disabled input', + name: 'my_disabled_input', content: { disabled: '1', hard_disabled: 'f', hide_in_ui: 'N', + account: 'value1', }, }, { - name: 'my read only input', + name: 'my_read_only_input', content: { hard_disabled: '1', }, }, { - name: 'my hidden input', + name: 'my_hidden_input', content: { hide_in_ui: 'y', }, @@ -102,6 +103,26 @@ export const InputPageViewAdd: Story = { await userEvent.click(await body.findByText('demo_input')); }, }; + +export const InputPageViewUpdateInput: Story = { + play: async ({ canvasElement }) => { + const body = within(canvasElement.ownerDocument.body); + const canvas = within(canvasElement); + + const closeBtn = canvas.queryByRole('button', { name: /(Close)|(Cancel)/ }); + if (closeBtn) { + await userEvent.click(closeBtn); + } + + const editButtons = await canvas.findAllByRole('button', { name: 'Edit' }); + await userEvent.click(editButtons[0]); + + await expect( + await body.findByRole('dialog', { name: 'Update demo_input' }) + ).toBeInTheDocument(); + }, +}; + export const InputTabViewAdd: Story = { play: async ({ canvasElement }) => { const body = within(canvasElement.ownerDocument.body); diff --git a/ui/src/pages/Input/stories/__images__/InputPage-input-page-expanded-row-chromium.png b/ui/src/pages/Input/stories/__images__/InputPage-input-page-expanded-row-chromium.png index 7c8be001e..dcc98f323 100644 --- a/ui/src/pages/Input/stories/__images__/InputPage-input-page-expanded-row-chromium.png +++ b/ui/src/pages/Input/stories/__images__/InputPage-input-page-expanded-row-chromium.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da66686cf67903cc17c782b3e7e34b3b7374de528b273db993f4d0a66f6b4525 -size 47539 +oid sha256:7f0cacf018fc363c693cd7a149cd771898e2e34742cfcabd600b924c1277ae06 +size 48439 diff --git a/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-add-chromium.png b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-add-chromium.png index 8f1188576..ac67394cd 100644 --- a/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-add-chromium.png +++ b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-add-chromium.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:60afb91e9133f946070c37500495bb20830040b828ee59540c3aa23d1d5e473c -size 72703 +oid sha256:f6e65a88269e01686737a77a929f339f0b41161aa1c6d7904244c794b639d42f +size 87746 diff --git a/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-chromium.png b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-chromium.png index e8edddd23..98b79d6fd 100644 --- a/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-chromium.png +++ b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-chromium.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1af6a372d92392853b636aafacf8ef8f1510af947688dc42b5fa7f3dfbb8169b -size 40184 +oid sha256:ac995df944a3ec1fc31a8a4db2144441d89ef55a72c871912f7f27ba1fa7ca29 +size 40748 diff --git a/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-update-input-chromium.png b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-update-input-chromium.png new file mode 100644 index 000000000..c20cd2a87 --- /dev/null +++ b/ui/src/pages/Input/stories/__images__/InputPage-input-page-view-update-input-chromium.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05cba4e67993b6a1b152628b574b9e765428c1ec6addea5f8951bc9e47ebd1fa +size 89167 diff --git a/ui/src/pages/Input/stories/globalConfig.json b/ui/src/pages/Input/stories/globalConfig.json index a35567da3..ca39a52b9 100644 --- a/ui/src/pages/Input/stories/globalConfig.json +++ b/ui/src/pages/Input/stories/globalConfig.json @@ -50,6 +50,51 @@ "help": "Time interval of the data input, in seconds.", "required": true }, + { + "type": "singleSelect", + "field": "select1", + "label": "Select 1", + "help": "Default value is Numeric 1", + "defaultValue": 1, + "options": { + "autoCompleteFields": [ + { + "value": 1, + "label": "Numeric 1" + } + ] + } + }, + { + "type": "singleSelect", + "field": "select2", + "label": "Select 2", + "help": "Default value is Numeric 3", + "defaultValue": 1, + "options": { + "autoCompleteFields": [ + { + "value": 3, + "label": "Numeric 3" + } + ] + } + }, + { + "type": "multipleSelect", + "field": "multipleselect1", + "label": "MultiSelect 1", + "help": "Default value is Numeric 1", + "defaultValue": "1", + "options": { + "items": [ + { + "value": 1, + "label": "Numeric 1" + } + ] + } + }, { "type": "singleSelect", "label": "Account to use", From ac851df744434c88e572977d00b18149891e6fcb Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Fri, 8 Nov 2024 15:42:25 +0100 Subject: [PATCH 16/34] test(coverage): exclude untestable types from coverage (#1438) --- ui/jest.config.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ui/jest.config.ts b/ui/jest.config.ts index 625e56977..2d87313a5 100644 --- a/ui/jest.config.ts +++ b/ui/jest.config.ts @@ -15,10 +15,15 @@ export default { coveragePathIgnorePatterns: [ '/node_modules/', '/stories/', - // ignore *.d.ts files - '\\.d\\.ts$', 'mockServiceWorker.js', 'styleMock.js', + /* + TYPES + */ + // *.d.ts files + '\\.d\\.ts$', + '/types/', + '\\.types\\.ts$', ], coverageDirectory: 'coverage', coverageThreshold: { From 0513fbf6044144ecd2f9ee23517b7a672f0a3491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20K=C4=99dziak?= Date: Fri, 8 Nov 2024 15:05:48 +0000 Subject: [PATCH 17/34] docs: add the print page (#1433) **Issue number:** ADDON-75611 ## Summary ### Changes > Please provide a summary of what's being changed Documentation changes: added print button that shows the whole documentation on one page. Zrzut ekranu 2024-11-6 o 15 16 30 In order to enable this feature, first level headings needed to be added to files. ### User experience > Please describe what the user experience looks like before and after this change None ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [x] Changes have been tested * [x] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --------- Co-authored-by: srv-rr-github-token <94607705+srv-rr-github-token@users.noreply.github.com> --- .markdownlint.yaml | 2 +- .markdownlintignore | 1 + docs/advanced/custom_mapping.md | 2 + docs/advanced/custom_warning.md | 2 + docs/advanced/dependent_dropdown.md | 2 + docs/advanced/groups_feature.md | 2 + docs/advanced/oauth_support.md | 2 + docs/advanced/os-dependent_libraries.md | 2 + docs/advanced/save_validator.md | 2 + docs/advanced/sub_description.md | 2 + docs/alert_actions/adaptive_response.md | 2 + docs/alert_actions/alert_scripts.md | 2 + docs/alert_actions/index.md | 2 + docs/configurations/index.md | 2 + docs/configurations/logging.md | 2 + docs/configurations/proxy.md | 2 + docs/custom_ui_extensions/custom_cell.md | 2 + docs/custom_ui_extensions/custom_control.md | 2 + docs/custom_ui_extensions/custom_hook.md | 2 + docs/custom_ui_extensions/custom_menu.md | 2 + docs/custom_ui_extensions/custom_row.md | 2 + docs/custom_ui_extensions/custom_tab.md | 2 + docs/custom_ui_extensions/overview.md | 2 + docs/entity/index.md | 2 + docs/entity/modifyFieldsOnValue.md | 2 + docs/entity/validators.md | 2 + docs/generated_files.md | 2 + docs/inputs/helper.md | 2 + docs/inputs/index.md | 4 +- docs/inputs/multilevel_menu.md | 2 + docs/inputs/tabs.md | 2 + docs/metadata.md | 2 + docs/table.md | 10 +- docs/theme_overrides/partials/header.html | 104 ++++++++++++++++++ docs/ui_tests_alert_actions_page.md | 2 + docs/ui_tests_config_page_account.md | 2 + docs/ui_tests_config_page_custom.md | 2 + docs/ui_tests_config_page_general.md | 2 + docs/ui_tests_config_page_logging.md | 2 + docs/ui_tests_config_page_proxy.md | 2 + docs/ui_tests_inputs_page.md | 2 + mkdocs.yml | 3 + poetry.lock | 27 ++++- pyproject.toml | 1 + .../generators/doc_generator.py | 2 + tests/smoke/__init__.py | 0 tests/unit/__init__.py | 0 tests/unit/generators/test_doc_generator.py | 4 + 48 files changed, 218 insertions(+), 12 deletions(-) create mode 100644 .markdownlintignore create mode 100644 docs/theme_overrides/partials/header.html create mode 100644 tests/smoke/__init__.py create mode 100644 tests/unit/__init__.py diff --git a/.markdownlint.yaml b/.markdownlint.yaml index f8e2a2b71..fdc2c1b12 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -47,7 +47,7 @@ MD034: false MD040: false # MD041/first-line-heading/first-line-h1 -MD041: false +MD041: true # MD046/code-block-style MD046: false \ No newline at end of file diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 000000000..cc28b92ee --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1 @@ +.github/PULL_REQUEST_TEMPLATE.md diff --git a/docs/advanced/custom_mapping.md b/docs/advanced/custom_mapping.md index 746b139b7..4449c731a 100644 --- a/docs/advanced/custom_mapping.md +++ b/docs/advanced/custom_mapping.md @@ -1,3 +1,5 @@ +# Custom Mapping + We can use this feature to map each field with meaningful value to display in the table. For example, the category field contains 1, 2, and 4 values, but when those values are displayed, the user might get confused as those values do not signify the meaning of their mapping. To avoid this confusion, the user can map each field with meaningful value as shown in the following example: If you have fields that are not mandatory but you would like to display them inside table, you can use default value option by providing ```"[[default]]"``` as one of parameters (check example bellow). It is a way to provide some meaningful information for form fields that have not been filled (fill empty cells in table). diff --git a/docs/advanced/custom_warning.md b/docs/advanced/custom_warning.md index d891fa153..51ae8a3ee 100644 --- a/docs/advanced/custom_warning.md +++ b/docs/advanced/custom_warning.md @@ -1,3 +1,5 @@ +# Custom Warning + This feature allows us to pass broarder description on Input and Configuration page displayed under main description. ### Warning Properties diff --git a/docs/advanced/dependent_dropdown.md b/docs/advanced/dependent_dropdown.md index b3c524a79..4f628d91e 100644 --- a/docs/advanced/dependent_dropdown.md +++ b/docs/advanced/dependent_dropdown.md @@ -1,3 +1,5 @@ +# Dependent Dropdown + This feature allows dynamic loading options for the `singleSelect` and the `multipleSelect` fields when the options for that field depend on other fields' values. It loads options via an API call to the endpoint mentioned in `endpointUrl` under options when any dependencies field is updated and all required dependencies fields are non-null. All non-required dependencies fields can be of any type, but all required dependencies fields should only be of single-select type. diff --git a/docs/advanced/groups_feature.md b/docs/advanced/groups_feature.md index 17234c8b7..1866e5538 100644 --- a/docs/advanced/groups_feature.md +++ b/docs/advanced/groups_feature.md @@ -1,3 +1,5 @@ +# Groups Feature + Using this functionality, the Inputs page form can be divided into distinct sections, each comprising relevant fields. If the `isExpandable` property is set to true in the global configuration file, the group will be in the [collapsible panel](https://splunkui.splunk.com/Packages/react-ui/CollapsiblePanel) type. The groups will be displayed at the bottom of the form. diff --git a/docs/advanced/oauth_support.md b/docs/advanced/oauth_support.md index 6a80f327a..512ecf938 100644 --- a/docs/advanced/oauth_support.md +++ b/docs/advanced/oauth_support.md @@ -1,3 +1,5 @@ +# OAuth Support + UCC allows you to add Auth support in the configuration page. In UCC, OAuth2.0 of the Authorization Code Flow `grant` type is used. It only supports the standard parameters specified in [RFCP749](https://www.rfc-editor.org/rfc/rfc6749) for obtaining an authorization code. Auth can be used inside the entity tag. Use `type: "oauth"` in the entity list and specify the `options` next to the `type: "oauth"`. diff --git a/docs/advanced/os-dependent_libraries.md b/docs/advanced/os-dependent_libraries.md index c387d1cfd..a8f97d38a 100644 --- a/docs/advanced/os-dependent_libraries.md +++ b/docs/advanced/os-dependent_libraries.md @@ -1,3 +1,5 @@ +# OS-dependent libraries + This feature allows you to download and unpack libraries with appropriate binaries for the indicated operating system during the build process. To do this, you need to expand the **meta** section in the global configuration with the **os-dependentLibraries** field. This field takes the following attributes: diff --git a/docs/advanced/save_validator.md b/docs/advanced/save_validator.md index eefa464d1..ebe42ef51 100644 --- a/docs/advanced/save_validator.md +++ b/docs/advanced/save_validator.md @@ -1,3 +1,5 @@ +# Save Validator + This feature allows you to pass a Javascript function as a string to apply customized validation to form data. By using this approach, you can write custom JavaScript code where you can write your business logic, and validating can return error messages which will be displayed at the top of the form. diff --git a/docs/advanced/sub_description.md b/docs/advanced/sub_description.md index f429d669b..bde4d1d9d 100644 --- a/docs/advanced/sub_description.md +++ b/docs/advanced/sub_description.md @@ -1,3 +1,5 @@ +# Sub Description + This feature allows us to pass a broader description on the Input and Configuration pages displayed under main description. ### Sub Descritpion Properties diff --git a/docs/alert_actions/adaptive_response.md b/docs/alert_actions/adaptive_response.md index b10433a4a..11fb9ac71 100644 --- a/docs/alert_actions/adaptive_response.md +++ b/docs/alert_actions/adaptive_response.md @@ -1,3 +1,5 @@ +# Adaptive Response + The Adaptive Response framework provides a mechanism for running preconfigured actions within the Splunk platform or by integrating with external applications. These actions can be automatically triggered by correlation search results or manually diff --git a/docs/alert_actions/alert_scripts.md b/docs/alert_actions/alert_scripts.md index 612f9cebb..66bbc4b8a 100644 --- a/docs/alert_actions/alert_scripts.md +++ b/docs/alert_actions/alert_scripts.md @@ -1,3 +1,5 @@ +# Alert Action Scripts + The following files would be created/ updated in the output folder once you executed the `ucc-gen` command: | File Location | Content Description | Action | diff --git a/docs/alert_actions/index.md b/docs/alert_actions/index.md index 7716b4487..924816858 100644 --- a/docs/alert_actions/index.md +++ b/docs/alert_actions/index.md @@ -2,6 +2,8 @@ title: Alert Actions --- +# Alert Actions + The alert action can help a user to take action on the alerts that have been triggered. The knowledge from Splunk can be sent to an outside service or to pull additional or detailed information related to the trigger details. An add-on can have multiple alert actions based on the use cases the add-on provides. You can know more about alert actions from [this documentation](https://docs.splunk.com/Documentation/Splunk/latest/Alert/Aboutalerts). diff --git a/docs/configurations/index.md b/docs/configurations/index.md index ffbf4687d..0d971a699 100644 --- a/docs/configurations/index.md +++ b/docs/configurations/index.md @@ -1,3 +1,5 @@ +# Configuration + The `Configuration` tab can have multiple subtabs, for example, a tab for account configuration (to configure the account by adding account credentials), proxy configuration, and logging level configuration. diff --git a/docs/configurations/logging.md b/docs/configurations/logging.md index 2177933ec..8a52e12cb 100644 --- a/docs/configurations/logging.md +++ b/docs/configurations/logging.md @@ -1,3 +1,5 @@ +# Logging + The logging tab is a predefined component that allows to create the page for changing the log level. It is added in the `pages.configuration.tabs` array diff --git a/docs/configurations/proxy.md b/docs/configurations/proxy.md index 7effd45d6..55dddd22a 100644 --- a/docs/configurations/proxy.md +++ b/docs/configurations/proxy.md @@ -1,3 +1,5 @@ +# Proxy + There are fields that need to be specified in order to enable proxy. ### Fields diff --git a/docs/custom_ui_extensions/custom_cell.md b/docs/custom_ui_extensions/custom_cell.md index e0167f9d2..77df80dc8 100644 --- a/docs/custom_ui_extensions/custom_cell.md +++ b/docs/custom_ui_extensions/custom_cell.md @@ -1,3 +1,5 @@ +# Custom Cell + A Custom Cell is used to update the content of a table cell. `customCell` attribute will be used in the table header on the inputs and configuration page. diff --git a/docs/custom_ui_extensions/custom_control.md b/docs/custom_ui_extensions/custom_control.md index 5b51c2a46..5226aa0ca 100644 --- a/docs/custom_ui_extensions/custom_control.md +++ b/docs/custom_ui_extensions/custom_control.md @@ -1,3 +1,5 @@ +# Custom Control + The Custom Control feature allows you to display any customised input component in a form. The developer can easily design and render any complex input component with this feature. Modern add-ons frequently require the use of complex input components, and this feature will allow you to use the custom component in the form that is best suited to your needs, without relying on newer releases of UCC for support. ### Properties diff --git a/docs/custom_ui_extensions/custom_hook.md b/docs/custom_ui_extensions/custom_hook.md index 7726ddab3..2be4d8ea8 100644 --- a/docs/custom_ui_extensions/custom_hook.md +++ b/docs/custom_ui_extensions/custom_hook.md @@ -1,3 +1,5 @@ +# Custom Hook + Custom Hook is a JavaScript function that allows us to reuse some code throughout the app. It is used to validate form/dialog inputs. Hook is nothing more than a Javascript event handling on the events `onCreate`, `onChange`, `onRender`, `onSave`, `onSaveSuccess`, `onSaveFail`, and `onEditLoad`. diff --git a/docs/custom_ui_extensions/custom_menu.md b/docs/custom_ui_extensions/custom_menu.md index 4c70c47bc..1a679a61b 100644 --- a/docs/custom_ui_extensions/custom_menu.md +++ b/docs/custom_ui_extensions/custom_menu.md @@ -1,3 +1,5 @@ +# Custom Menu + Custom Menu can be created when there is more than one input present on the inputs page. > This feature is deprecated (will be removed in the next major version) as [`Multilevel Menu`](../inputs/multilevel_menu.md) is now ready to use if more than one input is available. diff --git a/docs/custom_ui_extensions/custom_row.md b/docs/custom_ui_extensions/custom_row.md index dd9a1c6b2..2446dd86b 100644 --- a/docs/custom_ui_extensions/custom_row.md +++ b/docs/custom_ui_extensions/custom_row.md @@ -1,3 +1,5 @@ +# Custom Row + When a row is expanded on the Inputs table or Configuration Table, Custom Row is utilized to incorporate a customized element. By clicking on the icon provided on the left side of each row, the input-specific details are displayed. ### Properties diff --git a/docs/custom_ui_extensions/custom_tab.md b/docs/custom_ui_extensions/custom_tab.md index 668d4afb7..8883452de 100644 --- a/docs/custom_ui_extensions/custom_tab.md +++ b/docs/custom_ui_extensions/custom_tab.md @@ -1,3 +1,5 @@ +# Custom Tab + Custom Tab feature can be used to render any customized UI component in the Configuration tabs. With this feature, you can design and render any complex input with ease. This is an advanced feature and can be leveraged with limitless functionalities. Modern add-ons are receiving complex use cases and this feature will allow you to design the UI perfectly for your case without having to depend on newer releases of UCC for support. ### Properties diff --git a/docs/custom_ui_extensions/overview.md b/docs/custom_ui_extensions/overview.md index 61e011d8d..5d2b6920f 100644 --- a/docs/custom_ui_extensions/overview.md +++ b/docs/custom_ui_extensions/overview.md @@ -1,3 +1,5 @@ +# Overview + The UCC package simplifies the deployment of React applications featuring the Splunk UI by eliminating the need for NodeJS, Yarn, or front-end dependencies installation. The core requirement for deployment is a `globalConfig.json` file. While UCC is designed to support a broad spectrum of use cases, there may be scenarios where the provided API options do not fully meet your needs. For such instances, UCC has a runtime custom JavaScript loading mechanism. This feature allows for the invocation of specific functionalities at pivotal moments within the application lifecycle, including `onChange` and `onRender` events. diff --git a/docs/entity/index.md b/docs/entity/index.md index a29ebf06c..6fe8ade7d 100644 --- a/docs/entity/index.md +++ b/docs/entity/index.md @@ -2,6 +2,8 @@ title: Entity --- +# Entity + ## Entity Properties | Property | Type | Description | Default Value | diff --git a/docs/entity/modifyFieldsOnValue.md b/docs/entity/modifyFieldsOnValue.md index b58bf2183..f379f1125 100644 --- a/docs/entity/modifyFieldsOnValue.md +++ b/docs/entity/modifyFieldsOnValue.md @@ -1,3 +1,5 @@ +# Modify Fields On Change + This feature allows to specify conditions to modify other fields based on current field value change. ### Modification Object Properties diff --git a/docs/entity/validators.md b/docs/entity/validators.md index 1ae85c72b..21996e7b4 100644 --- a/docs/entity/validators.md +++ b/docs/entity/validators.md @@ -1,3 +1,5 @@ +# Validators + Validators define acceptable values for fields. !!! warning "" diff --git a/docs/generated_files.md b/docs/generated_files.md index 8f6e3801b..1394be8b7 100644 --- a/docs/generated_files.md +++ b/docs/generated_files.md @@ -2,6 +2,8 @@ title: UCC framework generated files --- +# Generated files + Below table describes the files generated by UCC framework ## File Description diff --git a/docs/inputs/helper.md b/docs/inputs/helper.md index 438b025b7..c26858220 100644 --- a/docs/inputs/helper.md +++ b/docs/inputs/helper.md @@ -2,6 +2,8 @@ title: Input Helper Module --- +# Input Helper Module + Input scripts are regenerated during every build step, in order to keep the arguments and options up to date with the global config. To not discard changes made by developers, additional helper modules were introduced. Those modules must contain diff --git a/docs/inputs/index.md b/docs/inputs/index.md index 3fd3f8bbe..cd32f4b78 100644 --- a/docs/inputs/index.md +++ b/docs/inputs/index.md @@ -2,6 +2,8 @@ title: Inputs --- +# Inputs + The input page stores configuration information for data collection. Multiple inputs can be created on the Inputs page. Developers are required to add services in the global config file to create a new Input. If multiple services are @@ -53,4 +55,4 @@ This is how the global configuration looks like without tabs ### Output - diff --git a/docs/inputs/multilevel_menu.md b/docs/inputs/multilevel_menu.md index db1a2bde9..ce510447b 100644 --- a/docs/inputs/multilevel_menu.md +++ b/docs/inputs/multilevel_menu.md @@ -1,3 +1,5 @@ +# Multi-level Menu + This feature allows us to organize the input services into different categories. As a result, each group/category will have a separate sub-menu that can include numerous types of input services. Inputs services can also belong to multiple groups/categories. Using the [Custom Hook](../custom_ui_extensions/custom_hook.md), `groupName` can be saved in any form field for a specific inputs service stanza. diff --git a/docs/inputs/tabs.md b/docs/inputs/tabs.md index 2b0b5ffd0..93528ecdf 100644 --- a/docs/inputs/tabs.md +++ b/docs/inputs/tabs.md @@ -1,3 +1,5 @@ +# Tabs + This feature allows you to separate inputs based on their service name. Use the tabs feature when multiple inputs services are provided in the global configuration file, and you want to display each input service in a separate tab (and table). The `table` property must be present in the services to use the tabs feature. diff --git a/docs/metadata.md b/docs/metadata.md index 227a3549d..17508db76 100644 --- a/docs/metadata.md +++ b/docs/metadata.md @@ -2,6 +2,8 @@ title: globalConfig Meta Data --- +# Metadata + Metadata contains general information about add-on build. ## Metadata Properties diff --git a/docs/table.md b/docs/table.md index 543f2b274..1d87f1d84 100644 --- a/docs/table.md +++ b/docs/table.md @@ -1,8 +1,10 @@ +# Table + This is a common feature that is used to display the account and input stanzas on the [Inputs](inputs/index.md) and [Configuration](configurations/index.md) pages, respectively. Tables include many built-in features such as sorting, filtering, and pagination. -### Properties +## Properties - `header`* (Array Objects) specifies the list of columns in the table. + `field`* is he name of the field where the column data will be displayed. @@ -16,7 +18,7 @@ Tables include many built-in features such as sorting, filtering, and pagination + [mapping](advanced/custom_mapping.md) is used to map field values to more meaningful values. - [customRow](custom_ui_extensions/custom_row.md) can be used to customise the moreInfo Component. -### List of built-in table fields for Modular Input +## List of built-in table fields for Modular Input If your add-on has multiple modular inputs and you want to show the input type of each one, use the following in-built field: @@ -25,7 +27,7 @@ If your add-on has multiple modular inputs and you want to show the input type o | serviceName | It indicates the name of the Input service to be displayed in the table, for example, "example_input_one". | | serviceTitle | It indicates the title of the Input service to be displayed in the table, for example, "Example Input One". | -### Usage +## Usage ```json "table": { @@ -77,7 +79,7 @@ If your add-on has multiple modular inputs and you want to show the input type o } ``` -### Output +## Output This is how it looks in the UI: diff --git a/docs/theme_overrides/partials/header.html b/docs/theme_overrides/partials/header.html new file mode 100644 index 000000000..cdc8022e9 --- /dev/null +++ b/docs/theme_overrides/partials/header.html @@ -0,0 +1,104 @@ + + +{% set class = "md-header" %} +{% if "navigation.tabs.sticky" in features %} + {% set class = class ~ " md-header--shadow md-header--lifted" %} +{% elif "navigation.tabs" not in features %} + {% set class = class ~ " md-header--shadow" %} +{% endif %} + + +
+ + + + {% if "navigation.tabs.sticky" in features %} + {% if "navigation.tabs" in features %} + {% include "partials/tabs.html" %} + {% endif %} + {% endif %} +
\ No newline at end of file diff --git a/docs/ui_tests_alert_actions_page.md b/docs/ui_tests_alert_actions_page.md index aa35bf684..77417dfd7 100644 --- a/docs/ui_tests_alert_actions_page.md +++ b/docs/ui_tests_alert_actions_page.md @@ -1 +1,3 @@ +# Alert Action Page + ::: tests.ui.test_alert_actions_page diff --git a/docs/ui_tests_config_page_account.md b/docs/ui_tests_config_page_account.md index 58250f689..c9d1ba9e1 100644 --- a/docs/ui_tests_config_page_account.md +++ b/docs/ui_tests_config_page_account.md @@ -1 +1,3 @@ +# Account + ::: tests.ui.test_configuration_page_account_tab diff --git a/docs/ui_tests_config_page_custom.md b/docs/ui_tests_config_page_custom.md index 89763b2b8..7dd473b73 100644 --- a/docs/ui_tests_config_page_custom.md +++ b/docs/ui_tests_config_page_custom.md @@ -1 +1,3 @@ +# Custom + ::: tests.ui.test_configuration_page_custom_tab diff --git a/docs/ui_tests_config_page_general.md b/docs/ui_tests_config_page_general.md index ab6e5055f..ef6f6a9f7 100644 --- a/docs/ui_tests_config_page_general.md +++ b/docs/ui_tests_config_page_general.md @@ -1 +1,3 @@ +# General + ::: tests.ui.test_configuration_page diff --git a/docs/ui_tests_config_page_logging.md b/docs/ui_tests_config_page_logging.md index af068e6e5..6fcbadd77 100644 --- a/docs/ui_tests_config_page_logging.md +++ b/docs/ui_tests_config_page_logging.md @@ -1 +1,3 @@ +# Logging + ::: tests.ui.test_configuration_page_logging_tab diff --git a/docs/ui_tests_config_page_proxy.md b/docs/ui_tests_config_page_proxy.md index 0304833d9..09c6ac396 100644 --- a/docs/ui_tests_config_page_proxy.md +++ b/docs/ui_tests_config_page_proxy.md @@ -1 +1,3 @@ +# Proxy + ::: tests.ui.test_configuration_page_proxy_tab diff --git a/docs/ui_tests_inputs_page.md b/docs/ui_tests_inputs_page.md index 10b9d19b2..9e5bb1180 100644 --- a/docs/ui_tests_inputs_page.md +++ b/docs/ui_tests_inputs_page.md @@ -1 +1,3 @@ +# Input Page + ::: tests.ui.test_input_page diff --git a/mkdocs.yml b/mkdocs.yml index 4943a9214..0a6ce98b4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -21,6 +21,7 @@ markdown_extensions: theme: name: "material" + custom_dir: docs/theme_overrides palette: - media: "(prefers-color-scheme: light)" scheme: default @@ -52,6 +53,8 @@ plugins: show_if_no_docstring: true filters: ["!^_"] show_source: true + - autorefs + - print-site # should be at the end nav: - Home: "index.md" diff --git a/poetry.lock b/poetry.lock index e42aedc6f..933eeb515 100644 --- a/poetry.lock +++ b/poetry.lock @@ -886,6 +886,20 @@ files = [ {file = "mkdocs_material_extensions-1.2.tar.gz", hash = "sha256:27e2d1ed2d031426a6e10d5ea06989d67e90bb02acd588bc5673106b5ee5eedf"}, ] +[[package]] +name = "mkdocs-print-site-plugin" +version = "2.3.6" +description = "MkDocs plugin that combines all pages into one, allowing for easy export to PDF and standalone HTML." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-print-site-plugin-2.3.6.tar.gz", hash = "sha256:82e5cabcfb7fe3074daecea018f28ccb4bff086f965e3103fe91019a76752f22"}, + {file = "mkdocs_print_site_plugin-2.3.6-py3-none-any.whl", hash = "sha256:01ccb1ceccc87f29e1612bebb77c3bf9980809fbce750fc2113f9d6acea589d4"}, +] + +[package.dependencies] +mkdocs-material = ">=7.3.0" + [[package]] name = "mkdocstrings" version = "0.22.0" @@ -1227,13 +1241,13 @@ pytest = ">=5.3" [[package]] name = "pytest-splunk-addon" -version = "5.4.0" +version = "5.4.1" description = "A Dynamic test tool for Splunk Apps and Add-ons" optional = false python-versions = "<4.0,>=3.7" files = [ - {file = "pytest_splunk_addon-5.4.0-py3-none-any.whl", hash = "sha256:b2c6482bbeb4ce9dc225e487e32299431bc94cd17c74574a7e7126a63612c1ca"}, - {file = "pytest_splunk_addon-5.4.0.tar.gz", hash = "sha256:78212c0583a5c7c5101ee3690e5cf75dba1e7f4edb444255e2a3cc6eee0c6a5a"}, + {file = "pytest_splunk_addon-5.4.1-py3-none-any.whl", hash = "sha256:634156197954573d8efceca0bd54de9973936cd1601af1ade413b9718b205fb0"}, + {file = "pytest_splunk_addon-5.4.1.tar.gz", hash = "sha256:df7b07c16e1da3f0f3fd2a6d88779829ba7e5acdfe6631e18a683162d201d81b"}, ] [package.dependencies] @@ -1358,6 +1372,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1567,12 +1582,12 @@ files = [ [[package]] name = "splunk-sdk" -version = "2.0.2" +version = "2.1.0" description = "The Splunk Software Development Kit for Python." optional = false python-versions = "*" files = [ - {file = "splunk-sdk-2.0.2.tar.gz", hash = "sha256:d5ccf6e1b96e493b1399e071ef10f8337e0a39ac2b2acc73fdd375b87b4104cb"}, + {file = "splunk-sdk-2.1.0.tar.gz", hash = "sha256:63f9a259a7c84d0c3b0b32cae652365b03f0f926acdb894b51456005df74ae21"}, ] [package.dependencies] @@ -1753,4 +1768,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "5ce229450418d58e52d0d6dc05f04b0ef7e36b0ef1f71c4ae37f4cb73659347d" +content-hash = "8a01c2a730b73b14bfd3a826d7a5926a82e36d28675e7d74494bb65d25ad73c2" diff --git a/pyproject.toml b/pyproject.toml index 420de2bd5..7dea04deb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,6 +58,7 @@ pytest-splunk-addon-ui-smartx = "^5.3.0" pytest-rerunfailures = "^11.1.1" mkdocs-material = "^9.1.3" mkdocstrings = {version=">=0", extras=["python"]} +mkdocs-print-site-plugin = "^2.3.6" pytest-cov = "^4.0.0" covdefaults = "^2.3.0" xmldiff = "^2.6.3" diff --git a/splunk_add_on_ucc_framework/generators/doc_generator.py b/splunk_add_on_ucc_framework/generators/doc_generator.py index fd6fa5128..09ed99c56 100644 --- a/splunk_add_on_ucc_framework/generators/doc_generator.py +++ b/splunk_add_on_ucc_framework/generators/doc_generator.py @@ -25,6 +25,8 @@ def generate_docs() -> None: title: UCC framework generated files --- +# Generated files + Below table describes the files generated by UCC framework ## File Description diff --git a/tests/smoke/__init__.py b/tests/smoke/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit/generators/test_doc_generator.py b/tests/unit/generators/test_doc_generator.py index 0b6ac311f..0f7c0b1d0 100644 --- a/tests/unit/generators/test_doc_generator.py +++ b/tests/unit/generators/test_doc_generator.py @@ -34,6 +34,8 @@ def test_generate_docs(mock_open, mock_dirname, mock_realpath): "title: UCC framework generated files", "---", "", + "# Generated files", + "", "Below table describes the files generated by UCC framework", "", "## File Description", @@ -73,6 +75,8 @@ def test_generate_docs_empty_list(mock_open_file, mock_dirname, mock_realpath): "title: UCC framework generated files", "---", "", + "# Generated files", + "", "Below table describes the files generated by UCC framework", "", "## File Description", From 8ccdc0a40529565915b4860573f5bb64d34d809a Mon Sep 17 00:00:00 2001 From: annabog0 Date: Tue, 12 Nov 2024 14:22:39 +0100 Subject: [PATCH 18/34] docs: reorganize quickstart and home pages (#1393) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Issue number:** https://splunk.atlassian.net/browse/ADDON-68816 ## Summary ### Changes > Please provide a summary of what's being changed ### User experience > Please describe what the user experience looks like before and after this change ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [ ] I have performed a self-review of this change * [ ] Changes have been tested * [ ] Changes are documented * [ ] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --------- Co-authored-by: Kamil Kędziak Co-authored-by: Artem Rys Co-authored-by: abogusz0 --- docs/commands.md | 111 ++++++++++++++++++++ docs/dot_conf_files.md | 25 ++--- docs/generated_files.md | 8 +- docs/index.md | 60 +++++------ docs/quickstart.md | 226 ++++++++-------------------------------- mkdocs.yml | 49 ++++----- 6 files changed, 220 insertions(+), 259 deletions(-) create mode 100644 docs/commands.md diff --git a/docs/commands.md b/docs/commands.md new file mode 100644 index 000000000..00894744b --- /dev/null +++ b/docs/commands.md @@ -0,0 +1,111 @@ +# Commands + +These are the commands that are available in UCC framework. + +## `ucc-gen build` + +The `ucc-gen build` command builds the add-on. As of now, running `ucc-gen` does the same thing as running `ucc-gen build`, +but eventually calling `ucc-gen` without specifying a subcommand will be +deprecated. + +It takes the following parameters: + +* `--source` - [optional] folder containing the `app.manifest` and app + source. The default is `package`. +* `--config` - [optional] path to the configuration file. It defaults to + the globalConfig file in the parent directory of the source provided. + Only *.json* and *.yaml* files are accepted. +* `--ta-version` - [optional] override current version of TA. The default + version is version specified in `globalConfig.json` or `globalConfig.yaml`. + A Splunkbase compatible version of SEMVER is used by default. +* `-o` / `--output` - [optional] output folder to store the build add-on. + By default, it is saved in the `current directory/output` folder. + Absolute paths are accepted as well. +* `--python-binary-name` - [optional] Python binary name to use when + installing Python libraries. The default is `python3`. +* `-v` / `--verbose` - [optional] shows detailed information about + created/copied/modified/conflict files after build is complete. + This option is in the experimental mode. The default is `False`. +* `--pip-version` - [optional] pip version that is used to install python libraries. The default is `latest`. +* `--pip-legacy-resolver` - [optional] Use old pip dependency resolver by adding flag '--use-deprecated=legacy-resolver' + to pip install command. The default is`False`. + >**NOTE:** This flag is deprecated and will be removed from pip in the future. + Instead of using this flag, the correct solution would be to fix the packages your project depends on to work properly with the new resolver. Additionally, this flag is not compatible with pip version `23.2`. Use `23.2.1` instead. +* `--ui-source-map` - [optional] if present generates front-end source maps (.js.map files), that helps with code debugging. + +### Verbose mode + +The verbose mode is available for `v5.35.0` and later. + +Running `ucc-gen build -v` or `ucc-gen build --verbose` prints additional information about +what was exactly created / copied / modified / conflicted after the build is complete. It does +not scan the `lib` folder due to the nature of the folder. + +See the following description of what each state means: + +* `created`: the file is not in the original package and was created during the build process. +* `copied`: the file is in the original package and was copied during the build process. +* `modified`: the file is in the original package and was modified during the build process. +* `conflict`: the file is in the original package and was copied during the build process, but may be generated by UCC itself, so incorrect usage can stop the add-on from working. + +## `ucc-gen init` + +`ucc-gen init` initializes the add-on. This is available on `v5.19.0` and later. +The `ucc-gen init` command initializes the add-on and bootstraps some code in the +modular input which you, as a developer, can extend for your needs. + +Apart from standard files needed for the add-on, it also adds search head +clustering files in the `default/server.conf` file and reload triggers in the +`default/app.conf` file. Those files will be soon generated automatically by the +`ucc-gen build` command itself. +during the add-on development. + +It takes the following parameters: + +* `--addon-name` - [required] add-on name. See the + [official naming convention guide](https://dev.splunk.com/enterprise/docs/releaseapps/splunkbase/namingguidelines/). +* `--addon-rest-root` - [optional] add-on REST root, defaults to `--addon-name` if not provided. +* `--addon-display-name` - [required] add-on "official" name. +* `--addon-input-name` - [required] name of the generated input. +* `--addon-version` - [optional] version of the generated add-on, with `0.0.1` by default. +* `--overwrite` - [optional] overwrites the already existing folder. + By default, you can't generate a new add-on to an already existing folder. + +## `ucc-gen import-from-aob` + +Import from AoB (Add-on Builder), from `v5.24.0` and later. It is in the +**experimental** state as of now, meaning that running this command may not +produce a 100% UCC compatible add-on, but we are going to work on future +improvements for the script itself. + +> **Note:** the `import-from-aob` command does not currently support Windows. + +The import functionality is based on the +[ucc_migration_test](https://github.com/tmartin14/ucc_migration_test) bash +script. +One of the ways you can use it is to download an AoB-based add-on from +Splunkbase, unarchive the folder, and then use +`ucc-gen import-from-aob --addon-name `. Or you can +run the same command against your locally developed add-on, but it should be +exported from AoB. + +It accepts the following parameters: + +* `--addon-name` - [required] add-on name. + +## `ucc-gen package` + +`ucc-gen package` can be used for `v5.30.0` and later. It packages the add-on so it can be installed. +It mimics the basics of the `slim package` command. This command can be used for most of the simple cases. + +It does not support: + +* the `.slimignore` file. +* the [dependencies section](https://dev.splunk.com/enterprise/docs/releaseapps/packageapps/packagingtoolkit/#Dependencies-section). + +It accepts the following parameters: + +* `--path` - [required] path to the built add-on (should include the `app.manifest` file). +* `-o` / `--output` - [optional] output folder to store the packaged add-on. + By default, it will be saved in the `current directory` folder. + It accepts absolute paths as well. diff --git a/docs/dot_conf_files.md b/docs/dot_conf_files.md index 4f70536b5..b595cc8c8 100644 --- a/docs/dot_conf_files.md +++ b/docs/dot_conf_files.md @@ -1,17 +1,16 @@ # .conf files -`ucc-gen` generates the following `.conf` files in the `default` directory. -If any of the `.conf` files are present in the source directory, `ucc-gen` will -just copy that file to the output folder. The only exception is the `app.conf` file. +`ucc-gen build` generates the following `.conf` files in the `default` directory. +If any of the `.conf` files are present in the source directory, `ucc-gen` copies that file to the output folder. The only exception is the `app.conf` file. -> Note: for most of the use cases, the generated configuration is sufficient. If you -> need to adjust the file being generated, please ping us for a feature +> For most of the use cases, the generated configuration is sufficient. If you +> need to adjust the file that is generated, contact Splunk with a feature > request. Alternatively, create a file in the `default` location, so it will accepted > without being generated. ## `app.conf` -`ucc-gen` will merge the file present in the `default` folder with some +`ucc-gen` merges the file present in the `default` folder with some additional information generated during the build time. But if you don't need anything specific generated, you don't need to have `app.conf` in the source folder. @@ -19,26 +18,24 @@ app.conf uses the `app.manifest` file to determine the add-on description, the a the add-on title, and the add-on author (taking the first one if multiple are defined). Make sure that your `app.manifest` is up-to-date, so `app.conf` will have all relevant information. -Also, the `triggers` stanza will be created by `ucc-gen`. It will determine what +Also the `triggers` stanza is created by the `ucc-gen build` command. `ucc-gen build` determines what the `.conf` files are used in the add-on and generates the relevant key-value pairs. ## `inputs.conf` -`ucc-gen` will generate a stanza for every input defined in the `globalConfig` -file and set `python.version` to `python3`. +`ucc-gen` generates a stanza for every input defined in the `globalConfig` +file and sets `python.version` to `python3`. ## `server.conf` -`ucc-gen` will generate the `shclustering` stanza, which will determine what +`ucc-gen` generates the `shclustering` stanza. This stanza determines which `.conf` files are used in the add-on and generates the relevant key-value pairs. ## `web.conf` -`ucc-gen` will generate all needed information about the exposed endpoints -from the add-on. +`ucc-gen` generates information about the exposed endpoints from the add-on. ## `restmap.conf` -`ucc-gen` will generate all necessary information about the configuration of every -endpoint. +`ucc-gen` generates information about the configuration of every endpoint. diff --git a/docs/generated_files.md b/docs/generated_files.md index 1394be8b7..8295ee269 100644 --- a/docs/generated_files.md +++ b/docs/generated_files.md @@ -2,13 +2,9 @@ title: UCC framework generated files --- -# Generated files +The following table describes the files generated by UCC framework. -Below table describes the files generated by UCC framework - -## File Description - -| File Name | File Location | File Description | +| File name | File location | File description | | ------------ | ------------ | ----------------- | | app.conf | output/<YOUR_ADDON_NAME>/default | Generates `app.conf` with the details mentioned in globalConfig[meta] | | inputs.conf | output/<YOUR_ADDON_NAME>/default | Generates `inputs.conf` and `inputs.conf.spec` file for the services mentioned in globalConfig | diff --git a/docs/index.md b/docs/index.md index b07a5e4ad..194f2f627 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,49 +1,39 @@ -# Overview +# About UCC -`splunk-add-on-ucc-framework` is a framework to generate UI-based Splunk -add-ons. It includes UI, REST handlers, Modular inputs, OAuth and Alert -action templates. +Universal Configuration Console (UCC) is a framework that simplifies the process of add-on creation for developers. You can use UCC to generate UI-based Splunk add-ons. UCC includes UI, REST handlers, modular inputs, OAuth, and alert action templates. -Only add-ons that use Python 3 are supported. +The UCC framework helps you to maintain consistency and a uniform look and feel across different add-ons. You can easily update and modify your add-ons. -It is available as a GitHub action here: - +The UCC framework is available as a GitHub action. See . -You can use [Splunk Extension for VSCode](https://marketplace.visualstudio.com/items?itemName=Splunk.splunk) -as well. +To work with UCC framework, you can also use Splunk Extension. It helps you to create, test, and debug the add-ons in a simple way. For more information, see [Visual Studio Code Extension for Splunk](https://marketplace.visualstudio.com/items?itemName=Splunk.splunk). -## What is UCC? +## Libraries -UCC stands for Universal Configuration Console. The purpose of having a -framework for add-on generation is to simplify the process of add-on -creation for developers. UCC 5 uses [SplunkUI](https://splunkui.splunk.com/), -which is a new UI framework based on React. The UCC UI repository can be found in the `ui` folder. +UCC-based add-ons are powered by the following Splunk libraries: -UCC-based add-ons are being powered by Splunk libraries: -[`solnlib`](https://github.com/splunk/addonfactory-solutions-library-python) and -[`splunktaucclib`](https://github.com/splunk/addonfactory-ucc-library). More -information [here](ucc_related_libraries.md). +* `solnlib`, see [https://github.com/splunk/addonfactory-solutions-library-python](https://github.com/splunk/addonfactory-solutions-library-python) +* `splunktaucclib`, see [https://github.com/splunk/addonfactory-ucc-library](https://github.com/splunk/addonfactory-ucc-library). -## Features +For more information, see [UCC-related libraries](ucc_related_libraries.md). -The `splunk-add-on-ucc-framework`: +> Note: Some specific Python libraries (such as `google-cloud-bigquery`) use `.so` files to operate. `pip` installs OS-specific versions of those `.so` files, which makes it impossible to use such add-ons on a Windows machine because it was built for macOS. -* generates UI (`appserver` folder). -* generates Python REST handlers to support UI CRUD operations (`bin` folder). -* generates [inputs](./inputs/index.md) and their [helper modules](./inputs/helper.md) -* generates OpenAPI description documents (`appserver/static/openapi.json` file) (for more information, see [here](openapi.md)). -* generates `.conf` files (more information, see [here](dot_conf_files.md)). -* installs Python requirements (`lib` folder). -* generate metadata files (`metadata` folder). -* generates the monitoring dashboard (for more information, see [here](dashboard.md)). -* it possibly extends the UI with custom codes (for more information, see [here](custom_ui_extensions/custom_hook.md)). -* it possibly extends the build process via a `additional_packaging.py` file (more information, [here](additional_packaging.md)). -* generates the necessary files defined for the Alert Action, if defined in globalConfig (for more informaiton, see [here](alert_actions/index.md)). +## What UCC generates -## Installation +When you use UCC to create an add-on, the following elements are generated and stored in the appropriate folders: -`splunk-add-on-ucc-framework` is available on [PyPI](https://pypi.org/project/splunk-add-on-ucc-framework/). +* UI is stored in the `appserver` folder, +* Python REST handlers that support UI CRUD operations are stored in the `bin` folder, +* inputs and their helper modules. For more information, see [Inputs](./inputs/index.md) and [Helper modules](./inputs/helper.md), +* OpenAPI description documents are stored in the `appserver/static/openapi.json` file. For more information, see [OpenAPI description document](openapi.md), +* `.conf` files. For more information, see [.conf files](dot_conf_files.md), +* Python requirements are installed in the `lib` folder, +* metadata files are stored in the `metadata` folder, +* the monitoring dashboard. For more information, see [Dashboard](dashboard.md), +* the necessary files defined for the alert action, if you defined the alert action in the `globalConfig` file. For more information, see [Alert actions](alert_actions/index.md). -## Caveats +You can extend your add-ons with the following files: -* Some specific Python libraries (such as `google-cloud-bigquery`) use `.so` files to operate. `pip` will install OS-specific versions of those `.so` files, which makes it impossible to use such add-ons on a Windows machine since it was built for macOS. +* to extend the UI, use custom codes. For more information, see [Custom hook](custom_ui_extensions/custom_hook.md). +* to extend the build process, use the `additional_packaging.py` file. For more information, see [additional_packaging.py file](additional_packaging.md). diff --git a/docs/quickstart.md b/docs/quickstart.md index 2589914bf..917028ebf 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,225 +1,91 @@ -# Quickstart +# Getting started -## Prerequisites - -You need to have Python 3.7+ and Git available in your machine to be able to use the `ucc-gen` command. - -> Git is used to generate the add-on version from Git tags. Alternatively, you can use the `--ta-version` parameter. -To be able to create an add-on using the UCC framework, you need to have at least: +Install the UCC framework and start building your first add-on. Then you can build new add-ons from the existing ones. -* a `globalConfig` file (in `JSON` or `YAML` format, `JSON` is mostly used). -* a `package` folder. -* `app.manifest` in the `package` folder ([documentation here](https://dev.splunk.com/enterprise/reference/packagingtoolkit/pkgtoolkitappmanifest/)). - -The `app.manifest` file now is being validated. See [Splunk Packaging Toolkit app.manifest schema definition](https://dev.splunk.com/enterprise/reference/packagingtoolkit/pkgtoolkitappmanifest/#JSON-schema-200) for more details. +## Prerequisites -> If both the globalConfig.json and globalConfig.yaml files are present, then the globalConfig.json file will take precedence. +Make sure that the following software is installed on your machine: -The JSON schema for the `globalConfig` file can be found in the `splunk_add_on_ucc_framework/schema/schema.json` file. +* Python 3.7 or later +* Git -### Add-on naming convention +> **Note:** Git is used to generate the add-on version from the Git tags. Alternatively, you can use the `--ta-version` parameter and specify the version by yourself. -See [Naming conventions for apps and add-ons in Splunkbase](https://dev.splunk.com/enterprise/docs/releaseapps/splunkbase/namingguidelines/) -for help naming your add-on. +## Install -## Initialize new add-on +### Create and activate the virtual environment -> Initialization of the new add-on is available from version `5.19.0` and up of `ucc-gen`. +Depending on which operating system you use, follow one of the procedures: -The following commands are macOS and Linux specific. +#### Windows -* Set up and activate the Python virtual environment: +Set up the Python virtual environment: ```bash -python3 -m venv .venv -source .venv/bin/activate + python3 -m venv .venv ``` -* Install `splunk-add-on-ucc-framework`: +If you use cmd.exe, activate the virtual environment with the following command: ```bash -pip install splunk-add-on-ucc-framework +.venv\Scripts\activate.bat ``` -* Initialize the new add-on: +If you use PowerShell, activate the virtual environment with the following command: ```bash -ucc-gen init --addon-name "demo_addon_for_splunk" --addon-display-name "Demo Add-on for Splunk" --addon-input-name demo_input +.venv\Scripts\activate.ps1 ``` -The new add-on is located in the `demo_addon_for_splunk` folder and can be built using -the [the following commands](#build-the-already-existing-add-on): +#### macOS, Linux -## Build the already existing add-on +Set up and activate the Python virtual environment: -The following commands are macOS and Linux specific: +```bash + python3 -m venv .venv + source .venv/bin/activate +``` -* Set up and activate the Python virtual environment (skip if you already have an environment): +### Install UCC package + +Install UCC package, it is available on PyPI, see . ```bash -python3 -m venv .venv -source .venv/bin/activate +pip install splunk-add-on-ucc-framework ``` -* Install `splunk-add-on-ucc-framework` and `splunk-packaging-toolkit` (skip if you already installed the libraries): +## Create a new add-on + +### Initialize a new add-on ```bash -pip install splunk-add-on-ucc-framework splunk-packaging-toolkit +ucc-gen init --addon-name "demo_addon_for_splunk" --addon-display-name "Demo Add-on for Splunk" --addon-input-name demo_input ``` -> Note: `splunk-packaging-toolkit` does not work with Python 3.10+. +For more information about the add-ons naming convention, see [Naming conventions for apps and add-ons in Splunkbase](https://dev.splunk.com/enterprise/docs/releaseapps/splunkbase/namingguidelines/) -> Note: If you use UCC `v5.30.0+`, `ucc-gen package` can be used instead of `slim`. +The new add-on is located in the `demo_addon_for_splunk` folder. -* Run `ucc-gen build` and package it - -> Provide a `--ta-version=` parameter if this repository is not version controlled. +### Build the add-on ```bash -ucc-gen build -slim package output/ +ucc-gen build --source demo_addon_for_splunk/package ``` -> Please use `ucc-gen build` instead of `ucc-gen` if you are using UCC `v5.19.0` or higher. - -Now you should see an archive created on the same level as your `globalConfig.json`. - -Now you can go to Splunk and install this add-on using the generated archive. +### Package the add-on + +```bash +ucc-gen package --path output/ +``` -After validating that the add-on was loaded correctly and all the basic operations -are working, you can extend the functionality of the input by copying and -pasting the automatically generated modular inputs file into the `package/bin` -folder. The generated inputs use the -[Splunk SDK for Python](https://github.com/splunk/splunk-sdk-python). After you -update the modular input code, you can run `ucc-gen` again, and then `ucc-gen` will -use updated modular inputs from `package/bin` instead of generating new ones. +The archive is created on the same level as your `globalConfig.json` file. -## Commands +For more information regarding commands, see [Commands](commands.md). -### `ucc-gen build` +### Install the add-on -The `ucc-gen build` command builds the add-on. As of now, running `ucc-gen` does the same thing as running `ucc-gen build`, -but eventually calling `ucc-gen` without specifying a subcommand will be -deprecated. +Go to your Splunk app instance and install this add-on using the generated archive. -It takes the following parameters: +After you check that the add-on was loaded correctly and all the basic operations are working, you can extend the functionality of the input by copying and pasting the automatically generated modular inputs file into the `package/bin` folder. The generated inputs use the Splunk SDK for Python. See [https://github.com/splunk/splunk-sdk-python](https://github.com/splunk/splunk-sdk-python). -* `--source` - [optional] folder containing the `app.manifest` and app - source. The default is `package`. -* `--config` - [optional] path to the configuration file. It defaults to - the globalConfig file in the parent directory of the source provided. - Only *.json* and *.yaml* files are accepted. -* `--ta-version` - [optional] override current version of TA. The default - version is version specified in `globalConfig.json` or `globalConfig.yaml`. - A Splunkbase compatible version of SEMVER will be used by default. -* `-o` / `--output` - [optional] output folder to store the build add-on. - By default, it will be saved in the `current directory/output` folder. - Absolute paths are accepted as well. -* `--python-binary-name` - [optional] Python binary name to use when - installing Python libraries. The default is `python3`. -* `-v` / `--verbose` - [optional] shows detailed information about - created/copied/modified/conflict files after build is complete. - This option is in experimental mode. The default is `False`. -* `--pip-version` - [optional] pip version that will be used to install python libraries. The default is `latest`. -* `--pip-legacy-resolver` - [optional] Use old pip dependency resolver by adding flag '--use-deprecated=legacy-resolver' - to pip install command. The default is`False`. NOTE: This flag is deprecated and will be removed from pip in the future. - Instead of using this flag, the correct solution would be to fix the packages your project depends on to work properly with the new resolver. Additionally, this flag is not compatible with pip version `23.2`. Use `23.2.1` instead. -* `--ui-source-map` - [optional] if present generates front-end source maps (.js.map files), that helps with code debugging. - -#### Verbose mode - -Verbose mode is available for `v5.35.0` and up. - -Running `ucc-gen build -v` or `ucc-gen build --verbose` prints additional information about -what was exactly created / copied / modified / conflicted after the build is complete. It does -not scan the `lib` folder due to the nature of the folder. - -See the following explanation on what exactly each state means: - -* `created`: The file is not in the original package and was created during the build process. -* `copied`: The file is in the original package and was copied during the build process. -* `modified`: The file is in the original package and was modified during the build process. -* `conflict`: The file is in the original package and was copied during the build process, but may be generated by UCC itself, so incorrect usage can stop the add-on from working. - -### `ucc-gen init` - -`ucc-gen init` initializes the add-on. This is available on `v5.19.0` and up. -The `ucc-gen init` command initializes the add-on and bootstraps some code in the -modular input which you, as a developer, can extend for your needs. - -Apart from standard files needed for the add-on, it also adds search head -clustering files in the `default/server.conf` file and reload triggers in the -`default/app.conf` file. Those files will be soon by generated automatically by the -`ucc-gen build` command itself. For now, you need to include them manually -during the add-on development. - -It takes the following parameters: - -* `--addon-name` - [required] add-on name. See the - [official naming convention guide](https://dev.splunk.com/enterprise/docs/releaseapps/splunkbase/namingguidelines/). -* `--addon-rest-root` - [optional] add-on REST root, defaults to `--addon-name` if not provided. -* `--addon-display-name` - [required] add-on "official" name. -* `--addon-input-name` - [required] name of the generated input. -* `--addon-version` - [optional] version of the generated add-on, with `0.0.1` by default. -* `--overwrite` - [optional] overwrites the already existing folder. - By default, you can't generate a new add-on to an already existing folder. - -### `ucc-gen import-from-aob` - -Import from AoB (Add-on Builder), from `v5.24.0` and up. It is in the -**experimental** state as of now, meaning that running this command may not -produce a 100% UCC compatible add-on, but we are going to work on future -improvements for the script itself. - -> Note: the `import-from-aob` command does not currently support Windows. - -The import functionality is based on the -[ucc_migration_test](https://github.com/tmartin14/ucc_migration_test) bash -script. -One of the ways you can use it is to download an AoB-based add-on from -Splunkbase, unarchive the folder, and then use -`ucc-gen import-from-aob --addon-name `. Or you can -run the same command against your locally developed add-on, but it should be -exported from AoB. - -It accepts the following parameters: - -* `--addon-name` - [required] add-on name. - -### `ucc-gen package` - -`ucc-gen package` can be used for `v5.30.0` and up. It packages the add-on so it can be installed. -It mimics the basics of the `slim package` command. This command can be used for most of the simple cases. - -It does not support: - -* the `.slimignore` file. -* the [dependencies section](https://dev.splunk.com/enterprise/docs/releaseapps/packageapps/packagingtoolkit/#Dependencies-section). - -It accepts the following parameters: - -* `--path` - [required] path to the built add-on (should include the `app.manifest` file). -* `-o` / `--output` - [optional] output folder to store the packaged add-on. - By default, it will be saved in the `current directory` folder. - It accepts absolute paths as well. - -## `ucc-gen build` - -`ucc-gen build`: - -* cleans the output folder. -* retrieves the package ID of the add-on. -* copies the UCC template directory under the `output/` directory. -* copies the globalConfig.json or the globalConfig.yaml file to - the `output//appserver/static/js/build` directory. -* collects and installs the add-on's requirements into the - `output//lib` directory of add-on's package. -* replaces tokens in views. -* copies the add-on's `package/*` to the `output//*` directory. -* If an add-on requires some additional configurations in packaging, - then `ucc-gen` runs the code in the `additional_packaging.py` file as well. -* **NOTE:** For the add-on's requirements, the packages are installed according to following information: - - `lib/requirements.txt` installs Python3 compatible packages into the `output//lib`. - - It removes `setuptools*`, `bin*`, `pip*`, `distribute*`, and `wheel*` if they exist from `output//lib` - - It removes the execute bit from every file under `output//lib`. -* **NOTE:** The build won't be generated only when the add-on name in `meta[name]` of `globalConfig` and `info[id][name]` in `app.manifest` are not same. +After you update the modular input code, you can run `ucc-gen` again, and then `ucc-gen` uses updated modular inputs from `package/bin` instead of generating new ones. diff --git a/mkdocs.yml b/mkdocs.yml index 0a6ce98b4..f034c1484 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -57,56 +57,57 @@ plugins: - print-site # should be at the end nav: - - Home: "index.md" - - Quickstart: "quickstart.md" + - About UCC: "index.md" + - Getting started: "quickstart.md" + - Commands: "commands.md" - ".conf files": "dot_conf_files.md" - Generated files: "generated_files.md" - Inputs: - "inputs/index.md" - Introduction: "inputs/index.md" - Tabs: "inputs/tabs.md" - - Multi-level Menu: "inputs/multilevel_menu.md" - - Helper Module: "inputs/helper.md" + - Multi-level menu: "inputs/multilevel_menu.md" + - Helper module: "inputs/helper.md" - Configuration: - "configurations/index.md" - Introduction: "configurations/index.md" - Logging: "configurations/logging.md" - Proxy: "configurations/proxy.md" - Dashboard: "dashboard.md" - - Alert Actions: + - Alert actions: - "alert_actions/index.md" - - Alert Action Scripts: "alert_actions/alert_scripts.md" - - Adaptive Response: "alert_actions/adaptive_response.md" + - Alert action scripts: "alert_actions/alert_scripts.md" + - Adaptive response: "alert_actions/adaptive_response.md" - Entity: - "entity/index.md" - Introduction: "entity/index.md" - Components: "entity/components.md" - Validators: "entity/validators.md" - - Modify Fields On Change: "entity/modifyFieldsOnValue.md" + - Modify fields On change: "entity/modifyFieldsOnValue.md" - Table: "table.md" - Additional packaging: "additional_packaging.md" - - UCC Ignore: "uccignore.md" + - UCC ignore: "uccignore.md" - OpenAPI: "openapi.md" - UCC-related libraries: "ucc_related_libraries.md" - - Custom UI Extensions: + - Custom UI extensions: - Overview: "custom_ui_extensions/overview.md" - - Custom Hook: "custom_ui_extensions/custom_hook.md" - - Custom Control: "custom_ui_extensions/custom_control.md" - - Custom Row: "custom_ui_extensions/custom_row.md" - - Custom Cell: "custom_ui_extensions/custom_cell.md" - - Custom Menu: "custom_ui_extensions/custom_menu.md" - - Custom Tab: "custom_ui_extensions/custom_tab.md" + - Custom hook: "custom_ui_extensions/custom_hook.md" + - Custom control: "custom_ui_extensions/custom_control.md" + - Custom row: "custom_ui_extensions/custom_row.md" + - Custom cell: "custom_ui_extensions/custom_cell.md" + - Custom menu: "custom_ui_extensions/custom_menu.md" + - Custom tab: "custom_ui_extensions/custom_tab.md" - Advanced: - - Custom Mapping: "advanced/custom_mapping.md" - - Dependent Dropdown: "advanced/dependent_dropdown.md" - - OAuth Support: "advanced/oauth_support.md" - - Custom REST Handler: "advanced/custom_rest_handler.md" - - Groups Feature: "advanced/groups_feature.md" - - Save Validator: "advanced/save_validator.md" + - Custom mapping: "advanced/custom_mapping.md" + - Dependent dropdown: "advanced/dependent_dropdown.md" + - OAuth support: "advanced/oauth_support.md" + - Custom REST handler: "advanced/custom_rest_handler.md" + - Groups feature: "advanced/groups_feature.md" + - Save validator: "advanced/save_validator.md" - OS-dependent libraries: "advanced/os-dependent_libraries.md" - - Sub Description: "advanced/sub_description.md" - - Custom Warning: "advanced/custom_warning.md" + - Sub description: "advanced/sub_description.md" + - Custom warning: "advanced/custom_warning.md" - Troubleshooting: "troubleshooting.md" - Contributing: "contributing.md" - Changelog: "CHANGELOG.md" From c74355918fd3bc0cb866a62ec6bf227e5682f6a9 Mon Sep 17 00:00:00 2001 From: Artem Rys Date: Tue, 12 Nov 2024 15:24:12 +0100 Subject: [PATCH 19/34] docs(generated_files): update generation script (#1449) **Issue number:** N/A ## Summary ### Changes Update generated files Python script to reflect documentation changes done in #1393. ### User experience N/A ## Checklist If your change doesn't seem to apply, please leave them unchecked. * [x] I have performed a self-review of this change * [ ] Changes have been tested * [ ] Changes are documented * [x] PR title follows [conventional commit semantics](https://www.conventionalcommits.org/en/v1.0.0/) --------- Co-authored-by: srv-rr-github-token <94607705+srv-rr-github-token@users.noreply.github.com> --- .github/workflows/automatic_doc_generation.yml | 2 +- docs/generated_files.md | 2 +- .../generators/doc_generator.py | 6 +----- tests/unit/generators/test_doc_generator.py | 12 ++---------- 4 files changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/automatic_doc_generation.yml b/.github/workflows/automatic_doc_generation.yml index c65561ce5..45444cd5e 100644 --- a/.github/workflows/automatic_doc_generation.yml +++ b/.github/workflows/automatic_doc_generation.yml @@ -44,4 +44,4 @@ jobs: if: ${{ env.isPR }} run: | git add \*.md - git diff --staged --exit-code || (git commit -S -m "doc: updated docs regarding generated conf, xml and html files" && git push) + git diff --staged --exit-code || (git commit -S -m "docs: updated docs regarding generated conf, xml and html files" && git push) diff --git a/docs/generated_files.md b/docs/generated_files.md index 8295ee269..582f41de5 100644 --- a/docs/generated_files.md +++ b/docs/generated_files.md @@ -4,7 +4,7 @@ title: UCC framework generated files The following table describes the files generated by UCC framework. -| File name | File location | File description | +| File Name | File Location | File Description | | ------------ | ------------ | ----------------- | | app.conf | output/<YOUR_ADDON_NAME>/default | Generates `app.conf` with the details mentioned in globalConfig[meta] | | inputs.conf | output/<YOUR_ADDON_NAME>/default | Generates `inputs.conf` and `inputs.conf.spec` file for the services mentioned in globalConfig | diff --git a/splunk_add_on_ucc_framework/generators/doc_generator.py b/splunk_add_on_ucc_framework/generators/doc_generator.py index 09ed99c56..e322554f2 100644 --- a/splunk_add_on_ucc_framework/generators/doc_generator.py +++ b/splunk_add_on_ucc_framework/generators/doc_generator.py @@ -25,11 +25,7 @@ def generate_docs() -> None: title: UCC framework generated files --- -# Generated files - -Below table describes the files generated by UCC framework - -## File Description +The following table describes the files generated by UCC framework. """ ) doc_content.append("| File Name | File Location | File Description |") diff --git a/tests/unit/generators/test_doc_generator.py b/tests/unit/generators/test_doc_generator.py index 0f7c0b1d0..820b76b29 100644 --- a/tests/unit/generators/test_doc_generator.py +++ b/tests/unit/generators/test_doc_generator.py @@ -34,11 +34,7 @@ def test_generate_docs(mock_open, mock_dirname, mock_realpath): "title: UCC framework generated files", "---", "", - "# Generated files", - "", - "Below table describes the files generated by UCC framework", - "", - "## File Description", + "The following table describes the files generated by UCC framework.", "", "| File Name | File Location | File Description |", "| ------------ | ------------ | ----------------- |", @@ -75,11 +71,7 @@ def test_generate_docs_empty_list(mock_open_file, mock_dirname, mock_realpath): "title: UCC framework generated files", "---", "", - "# Generated files", - "", - "Below table describes the files generated by UCC framework", - "", - "## File Description", + "The following table describes the files generated by UCC framework.", "", "| File Name | File Location | File Description |", "| ------------ | ------------ | ----------------- |", From 9e7394a2312238a79b9b5cb8d55f1427a6073696 Mon Sep 17 00:00:00 2001 From: Viktor Tsvetkov <142901247+vtsvetkov-splunk@users.noreply.github.com> Date: Tue, 12 Nov 2024 16:06:44 +0100 Subject: [PATCH 20/34] fix(Dropdown): fix showing selected option when value is numeric (#1439) --- .../MultiInputComponent.test.tsx | 79 ++++++++++++++++++- .../MultiInputComponent.tsx | 7 +- .../SingleInputComponent.test.tsx | 37 ++++++++- .../SingleInputComponent.tsx | 32 +++++--- ...onPage-configuration-view-add-chromium.png | 4 +- ...InputPage-input-page-view-add-chromium.png | 4 +- ui/src/pages/Input/stories/globalConfig.json | 2 +- 7 files changed, 143 insertions(+), 22 deletions(-) diff --git a/ui/src/components/MultiInputComponent/MultiInputComponent.test.tsx b/ui/src/components/MultiInputComponent/MultiInputComponent.test.tsx index 52d9ea035..30958e470 100644 --- a/ui/src/components/MultiInputComponent/MultiInputComponent.test.tsx +++ b/ui/src/components/MultiInputComponent/MultiInputComponent.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; import { http, HttpResponse } from 'msw'; -import { render, screen } from '@testing-library/react'; +import { render, screen, within } from '@testing-library/react'; import MultiInputComponent, { MultiInputComponentProps } from './MultiInputComponent'; import { server } from '../../mocks/server'; @@ -160,3 +160,80 @@ describe.each(mockedEntries)('handler endpoint data loading', (mockedEntry) => { ); }); }); + +it('should render label (boolean-like)', () => { + renderFeature({ + value: 'true', + controlOptions: { + items: [ + { + label: 'truevalue', + value: true, + }, + { + label: 'falsevalue', + value: false, + }, + { + label: 'optionone', + value: 1, + }, + ], + }, + }); + const inputComponent = screen.getByTestId('multiselect'); + + expect(within(inputComponent).getByText('truevalue')).toBeInTheDocument(); + expect(within(inputComponent).queryByText('falsevalue')).not.toBeInTheDocument(); + expect(within(inputComponent).queryByText('optionone')).not.toBeInTheDocument(); +}); + +it('should render singe value (numeric)', () => { + renderFeature({ + value: 1, + controlOptions: { + items: [ + { + label: 'label1', + value: 1, + }, + { + label: 'label2', + value: 2, + }, + ], + }, + }); + const inputComponent = screen.getByTestId('multiselect'); + + expect(within(inputComponent).getByText('label1')).toBeInTheDocument(); + expect(within(inputComponent).queryByText('label2')).not.toBeInTheDocument(); +}); + +it('should render two values (number + boolean)', () => { + renderFeature({ + value: '1;false', + controlOptions: { + delimiter: ';', + items: [ + { + label: 'label1', + value: 1, + }, + { + label: 'label2', + value: false, + }, + { + label: 'label3', + value: 3, + }, + ], + }, + }); + const inputComponent = screen.getByTestId('multiselect'); + + expect(within(inputComponent).getByText('label1')).toBeInTheDocument(); + expect(within(inputComponent).getByText('label2')).toBeInTheDocument(); + expect(within(inputComponent).queryByText('label3')).not.toBeInTheDocument(); +}); diff --git a/ui/src/components/MultiInputComponent/MultiInputComponent.tsx b/ui/src/components/MultiInputComponent/MultiInputComponent.tsx index 28e2eb446..b0e7adbf8 100644 --- a/ui/src/components/MultiInputComponent/MultiInputComponent.tsx +++ b/ui/src/components/MultiInputComponent/MultiInputComponent.tsx @@ -8,6 +8,7 @@ import { AxiosCallType, axiosCallWrapper, generateEndPointUrl } from '../../util import { filterResponse } from '../../util/util'; import { MultipleSelectCommonOptions } from '../../types/globalConfig/entities'; import { invariant } from '../../util/invariant'; +import { AcceptableFormValue } from '../../types/components/shareableTypes'; const MultiSelectWrapper = styled(Multiselect)` width: 320px !important; @@ -23,7 +24,7 @@ export interface MultiInputComponentProps { field: string; controlOptions: z.TypeOf; disabled?: boolean; - value?: string; + value?: AcceptableFormValue; error?: boolean; dependencyValues?: Record; } @@ -62,7 +63,7 @@ function MultiInputComponent(props: MultiInputComponentProps) { return itemList.map((item) => ( )); @@ -133,7 +134,7 @@ function MultiInputComponent(props: MultiInputComponentProps) { const effectiveDisabled = loading ? true : disabled; const loadingIndicator = loading ? : null; - const valueList = value ? value.split(delimiter) : []; + const valueList = value ? String(value).split(delimiter) : []; return ( <> diff --git a/ui/src/components/SingleInputComponent/SingleInputComponent.test.tsx b/ui/src/components/SingleInputComponent/SingleInputComponent.test.tsx index 032cc1b49..eec9726e6 100644 --- a/ui/src/components/SingleInputComponent/SingleInputComponent.test.tsx +++ b/ui/src/components/SingleInputComponent/SingleInputComponent.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; import { http, HttpResponse } from 'msw'; -import { render, screen } from '@testing-library/react'; +import { render, screen, within } from '@testing-library/react'; import SingleInputComponent, { SingleInputComponentProps } from './SingleInputComponent'; import { setUnifiedConfig } from '../../util/util'; @@ -132,3 +132,38 @@ describe.each(mockedEntries)('handler endpoint data loading', (entry) => { ); }); }); + +it('should render Select... when value does not exist in autoCompleteFields', () => { + renderFeature({ + value: 'notExistingValue', + controlOptions: { + autoCompleteFields: [ + { + label: 'label1', + value: 'value1', + }, + ], + }, + }); + const inputComponent = screen.getByRole('combobox'); + expect(inputComponent).toBeInTheDocument(); + expect(within(inputComponent).getByText('Select...')).toBeInTheDocument(); +}); + +it.each([ + { value: true, autoCompleteFields: [{ label: 'trueLabel', value: true }] }, + { + value: false, + autoCompleteFields: [{ label: 'falseLabel', value: false }], + }, + { value: 0, autoCompleteFields: [{ label: 'falseLabel', value: '0' }] }, + { value: 0, autoCompleteFields: [{ label: 'falseLabel', value: 0 }] }, +])('should render label with value $value', ({ value, autoCompleteFields }) => { + renderFeature({ + value, + controlOptions: { autoCompleteFields }, + }); + const inputComponent = screen.getByRole('combobox'); + const { label } = autoCompleteFields[0]; + expect(within(inputComponent).getByText(label)).toBeInTheDocument(); +}); diff --git a/ui/src/components/SingleInputComponent/SingleInputComponent.tsx b/ui/src/components/SingleInputComponent/SingleInputComponent.tsx index ee5115c18..cd5e49436 100755 --- a/ui/src/components/SingleInputComponent/SingleInputComponent.tsx +++ b/ui/src/components/SingleInputComponent/SingleInputComponent.tsx @@ -11,7 +11,7 @@ import { AxiosCallType, axiosCallWrapper, generateEndPointUrl } from '../../util import { SelectCommonOptions } from '../../types/globalConfig/entities'; import { filterResponse } from '../../util/util'; import { getValueMapTruthyFalse } from '../../util/considerFalseAndTruthy'; -import { StandardPages } from '../../types/components/shareableTypes'; +import { AcceptableFormValue, StandardPages } from '../../types/components/shareableTypes'; const SelectWrapper = styled(Select)` width: 320px !important; @@ -27,7 +27,7 @@ const StyledDiv = styled.div` } `; -type BasicFormItem = { value: string | number | boolean; label: string }; +type BasicFormItem = { value: AcceptableFormValue; label: string }; type FormItem = | BasicFormItem @@ -39,9 +39,9 @@ type FormItem = export interface SingleInputComponentProps { id?: string; disabled?: boolean; - value: string; + value: AcceptableFormValue; error?: boolean; - handleChange: (field: string, value: string | number | boolean) => void; + handleChange: (field: string, value: string) => void; field: string; dependencyValues?: Record; controlOptions: z.TypeOf & { @@ -74,8 +74,8 @@ function SingleInputComponent(props: SingleInputComponentProps) { hideClearBtn, } = controlOptions; - const handleChange = (e: unknown, obj: { value: string | number | boolean }) => { - restProps.handleChange(field, obj.value); + const handleChange = (e: unknown, obj: { value: AcceptableFormValue }) => { + restProps.handleChange(field, String(obj.value)); }; const Option = createSearchChoice ? ComboBox.Option : Select.Option; const Heading = createSearchChoice ? ComboBox.Heading : Select.Heading; @@ -83,10 +83,16 @@ function SingleInputComponent(props: SingleInputComponentProps) { function generateOptions(items: FormItem[]) { const data: ReactElement[] = []; items.forEach((item) => { - if ('value' in item && item.value && item.label) { - // splunk will mape those when sending post form + if ( + 'value' in item && + item.value !== null && + item.value !== undefined && + item.value !== '' && + item.label + ) { + // splunk will maps those when sending post form // so worth doing it earlier to keep same state before and after post - const itemValue = getValueMapTruthyFalse(item.value, props.page); + const itemValue = String(getValueMapTruthyFalse(item.value, props.page)); // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore JSX element type 'Option' does not have any construct or call signatures. data.push(