diff --git a/CHANGELOG.md b/CHANGELOG.md index 039091a4c6..6d5173dc84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# [1.182.0](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.181.2...v1.182.0) (2024-08-22) + +### Features + +- add project page timeout for excel upload ([ba9e9b5](https://github.com/bcgov/CONN-CCBC-portal/commit/ba9e9b5e5f6d40095d29ef2a860b1d7678fadf40)) + ## [1.181.2](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.181.1...v1.181.2) (2024-08-22) ## [1.181.1](https://github.com/bcgov/CONN-CCBC-portal/compare/v1.181.0...v1.181.1) (2024-08-22) diff --git a/app/components/Analyst/Project/ProjectInformation/ProjectInformationForm.tsx b/app/components/Analyst/Project/ProjectInformation/ProjectInformationForm.tsx index db56afb1b5..e861b59c6c 100644 --- a/app/components/Analyst/Project/ProjectInformation/ProjectInformationForm.tsx +++ b/app/components/Analyst/Project/ProjectInformation/ProjectInformationForm.tsx @@ -247,109 +247,113 @@ const ProjectInformationForm: React.FC = ({ }); } - validateSow(sowFile, false).then((response) => { - const isSowErrors = sowValidationErrors.length > 0; - const isSowUploaded = - formData?.statementOfWorkUpload?.length > 0 && sowFile !== null; - - // If there are sow errors, persist sow error in form data if not delete - const newFormData = { ...formData }; - if (isSowErrors) { - newFormData.isSowUploadError = true; - } else if (isSowUploaded) { - delete newFormData?.isSowUploadError; - } - if (isChangeRequest) { - createChangeRequest({ - variables: { - connections: [connectionId], - input: { - _applicationId: rowId, - _amendmentNumber: changeRequestAmendmentNumber, - _jsonData: newFormData, - _oldChangeRequestId: parseInt( - currentChangeRequestData?.rowId, - 10 - ), + validateSow(sowFile, false) + .then((response) => { + const isSowErrors = sowValidationErrors.length > 0; + const isSowUploaded = + formData?.statementOfWorkUpload?.length > 0 && sowFile !== null; + + // If there are sow errors, persist sow error in form data if not delete + const newFormData = { ...formData }; + if (isSowErrors) { + newFormData.isSowUploadError = true; + } else if (isSowUploaded) { + delete newFormData?.isSowUploadError; + } + if (isChangeRequest) { + createChangeRequest({ + variables: { + connections: [connectionId], + input: { + _applicationId: rowId, + _amendmentNumber: changeRequestAmendmentNumber, + _jsonData: newFormData, + _oldChangeRequestId: parseInt( + currentChangeRequestData?.rowId, + 10 + ), + }, }, - }, - onCompleted: () => { - handleResetFormData(); + onCompleted: () => { + handleResetFormData(); - if (isSowUploaded && response?.status === 200) { - setShowToast(true); - } + if (isSowUploaded && response?.status === 200) { + setShowToast(true); + } - setCurrentChangeRequestData(null); - }, - updater: (store) => { - // add new amendment number to the amendment numbers computed column - const applicationStore = store.get(id); - - // remove amendment number if editing a change request and changing the amendment number - const newAmendmentNumbers = !isSameAmendmentNumber - ? amendmentNumbers - .split(' ') - .filter( - (number) => - number !== oldChangeRequestAmendmentNumber?.toString() - ) - .join(' ') - : amendmentNumbers; - - const updatedAmendmentNumbers = `${newAmendmentNumbers} ${changeRequestAmendmentNumber}`; - - applicationStore.setValue( - updatedAmendmentNumbers, - 'amendmentNumbers' - ); - - // Don't need to update store if we are creating a new change request - if (!currentChangeRequestData?.id) return; - const relayConnectionId = changeRequestDataByApplicationId.__id; - // Get the connection from the store - - const connection = store.get(relayConnectionId); - - store.delete(currentChangeRequestData.id); - // Remove the old announcement from the connection - ConnectionHandler.deleteNode( - connection, - currentChangeRequestData.id - ); - }, - onError: () => { - setIsFormSubmitting(false); - }, - }); - } else { - createProjectInformation({ - variables: { - input: { _applicationId: rowId, _jsonData: newFormData }, - }, - onCompleted: () => { - handleResetFormData(!formData?.hasFundingAgreementBeenSigned); - setHasFormSaved(true); - if (isSowUploaded && response?.status === 200) { - setShowToast(true); - } - }, - updater: (store, data) => { - store - .get(id) - .setLinkedRecord( - store.get( - data.createProjectInformation.projectInformationData.id - ), - 'projectInformation' + setCurrentChangeRequestData(null); + }, + updater: (store) => { + // add new amendment number to the amendment numbers computed column + const applicationStore = store.get(id); + + // remove amendment number if editing a change request and changing the amendment number + const newAmendmentNumbers = !isSameAmendmentNumber + ? amendmentNumbers + .split(' ') + .filter( + (number) => + number !== oldChangeRequestAmendmentNumber?.toString() + ) + .join(' ') + : amendmentNumbers; + + const updatedAmendmentNumbers = `${newAmendmentNumbers} ${changeRequestAmendmentNumber}`; + + applicationStore.setValue( + updatedAmendmentNumbers, + 'amendmentNumbers' ); - }, - onError: () => { - setIsFormSubmitting(false); - }, - }); - } - }); + + // Don't need to update store if we are creating a new change request + if (!currentChangeRequestData?.id) return; + const relayConnectionId = changeRequestDataByApplicationId.__id; + // Get the connection from the store + + const connection = store.get(relayConnectionId); + + store.delete(currentChangeRequestData.id); + // Remove the old announcement from the connection + ConnectionHandler.deleteNode( + connection, + currentChangeRequestData.id + ); + }, + onError: () => { + setIsFormSubmitting(false); + }, + }); + } else { + createProjectInformation({ + variables: { + input: { _applicationId: rowId, _jsonData: newFormData }, + }, + onCompleted: () => { + handleResetFormData(!formData?.hasFundingAgreementBeenSigned); + setHasFormSaved(true); + if (isSowUploaded && response?.status === 200) { + setShowToast(true); + } + }, + updater: (store, data) => { + store + .get(id) + .setLinkedRecord( + store.get( + data.createProjectInformation.projectInformationData.id + ), + 'projectInformation' + ); + }, + onError: () => { + setIsFormSubmitting(false); + }, + }); + } + }) + .catch(() => { + setIsFormSubmitting(false); + }); }; const isOriginalSowUpload = projectInformation?.jsonData; diff --git a/app/components/Analyst/Project/ProjectInformation/widgets/ExcelImportFileWidget.tsx b/app/components/Analyst/Project/ProjectInformation/widgets/ExcelImportFileWidget.tsx index 36c5588842..25b33c4508 100644 --- a/app/components/Analyst/Project/ProjectInformation/widgets/ExcelImportFileWidget.tsx +++ b/app/components/Analyst/Project/ProjectInformation/widgets/ExcelImportFileWidget.tsx @@ -13,6 +13,7 @@ import styled, { keyframes } from 'styled-components'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCircleCheck } from '@fortawesome/free-solid-svg-icons'; import { Alert } from '@button-inc/bcgov-theme'; +import parse from 'html-react-parser'; const StyledAlert = styled(Alert)` margin-bottom: 8px; @@ -94,7 +95,6 @@ export const displayExcelUploadErrors = (err) => { error: errorMessage, filename = 'Statement of Work', } = err; - let title = `An unknown error has occured while validating the ${filename} data`; if (errorType?.includes('tab')) { title = `There was an error importing the ${filename} data at ${errorType}`; @@ -113,6 +113,9 @@ export const displayExcelUploadErrors = (err) => { if (errorType === 'claimNumber') { title = `A Claim & Progress Report already exists with this claim number. Data were not imported.`; } + if (errorType === 'timeout') { + title = `The upload of ${filename} timed out. Please try again later.`; + } // for cell level errors if (typeof errorMessage !== 'string') { return errorMessage.map(({ error: message }) => { @@ -139,7 +142,7 @@ export const displayExcelUploadErrors = (err) => { content={ <>
{title}
-
{errorMessage}
+
{parse(errorMessage)}
} /> diff --git a/app/lib/helpers/excelValidate.ts b/app/lib/helpers/excelValidate.ts index 77ebbbc57e..e2f1094cae 100644 --- a/app/lib/helpers/excelValidate.ts +++ b/app/lib/helpers/excelValidate.ts @@ -1,4 +1,5 @@ import { Dispatch } from 'react'; +import fetchWithTimeout from './fetchWithTimeout'; /** * Function generator made to get around the "no code copying" for sonarcloud, to be used in a callback or by itself @@ -18,23 +19,45 @@ function excelValidateGenerator( fileFormData.append('file', file); if (setExcelFile) setExcelFile(file); if (setExcelValidationErrors) setExcelValidationErrors([]); - const response = await fetch(`${apiPath}/?validate=${validateOnly}`, { - method: 'POST', - body: fileFormData, - }); + try { + const response = await fetchWithTimeout( + `${apiPath}/?validate=${validateOnly}`, + { + method: 'POST', + body: fileFormData, + } + ); - const errorListResponse = await response.json(); - if (Array.isArray(errorListResponse) && errorListResponse.length > 0) { - const errorList = errorListResponse.map((item) => { - return { ...item, filename: file.name }; - }); - if (setExcelValidationErrors) setExcelValidationErrors(errorList); - } else if (setExcelValidationErrors) { - setExcelValidationErrors([]); - } + const errorListResponse = await response.json(); + if (Array.isArray(errorListResponse) && errorListResponse.length > 0) { + const errorList = errorListResponse.map((item) => { + return { ...item, filename: file.name }; + }); + if (setExcelValidationErrors) setExcelValidationErrors(errorList); + } else if (setExcelValidationErrors) { + setExcelValidationErrors([]); + } - // return error list and status since response.json has been consumed and locked - return { ...errorListResponse, status: response.status }; + // return error list and status since response.json has been consumed and locked + return { ...errorListResponse, status: response.status }; + } catch (error) { + if (setExcelValidationErrors) { + setExcelValidationErrors([ + { + error: + ' If the issue persists, contact the development team.', + level: 'timeout', + filename: file.name, + }, + ]); + } + return { + level: 'timeout', + error: + ' If the issue persists, contact the development team.', + filename: file.name, + }; + } } if (setExcelValidationErrors) setExcelValidationErrors([]); return null; diff --git a/app/lib/helpers/fetchWithTimeout.ts b/app/lib/helpers/fetchWithTimeout.ts new file mode 100644 index 0000000000..0513a4a3fd --- /dev/null +++ b/app/lib/helpers/fetchWithTimeout.ts @@ -0,0 +1,27 @@ +const fetchWithTimeout = async ( + url: string, + options: RequestInit = {}, + // default timeout is the equivalent of the max + // liveness of a pod in OpenShift + 15 seconds + timeout: number = 105000 +): Promise => { + const controller = new AbortController(); + const { signal } = controller; + const fetchOptions = { ...options, signal }; + + const timeoutId = setTimeout(() => controller.abort(), timeout); + + try { + const response = await fetch(url, fetchOptions); + clearTimeout(timeoutId); + return response; + } catch (error) { + clearTimeout(timeoutId); + if (error.name === 'AbortError') { + throw new Error(`Fetch request to ${url} timed out after ${timeout}ms`); + } + throw error; + } +}; + +export default fetchWithTimeout; diff --git a/app/package.json b/app/package.json index 4c9a0dd48a..fd29f5abf7 100644 --- a/app/package.json +++ b/app/package.json @@ -52,6 +52,7 @@ "@rjsf/utils": "^5.17.1", "@rjsf/validator-ajv8": "5.17.1", "@sentry/nextjs": "^7.36.0", + "@smithy/node-http-handler": "^3.0.0", "@snowplow/browser-tracker": "^3.23.0", "@types/eslint": "^8.44.2", "@types/formidable": "^3.4.5", @@ -76,6 +77,7 @@ "graphql": "^15.6.1", "graphql-upload": "^15.0.2", "helmet": "^7.1.0", + "html-react-parser": "^5.1.12", "iframe-resizer-react": "^1.1.0", "js-cookie": "^3.0.5", "json-diff": "^1.0.6", @@ -103,7 +105,6 @@ "react-typography": "^0.16.23", "relay-nextjs": "^0.8.0", "relay-runtime": "^13.2.0", - "@smithy/node-http-handler": "^3.0.0", "styled-components": "^5.3.5", "typography": "^0.16.21", "url": "^0.11.3", @@ -151,6 +152,7 @@ "eslint-plugin-jest": "^28.5.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-relay": "^1.8.3", + "fetch-mock": "9.11.0", "fse": "^4.0.1", "happo-cypress": "^4.2.0", "happo-e2e": "^2.6.0", diff --git a/app/tests/lib/helpers/excelValidate.test.ts b/app/tests/lib/helpers/excelValidate.test.ts index 157cbfecfa..3999c407e1 100644 --- a/app/tests/lib/helpers/excelValidate.test.ts +++ b/app/tests/lib/helpers/excelValidate.test.ts @@ -26,6 +26,20 @@ describe('excelValidateGenerator', () => { expect(mockSetExcelFile).toHaveBeenCalledWith(mockFile); }); + test('should fail when the operation takes too long', async () => { + global.fetch = jest.fn().mockRejectedValue(new Error('Timeout')); + const mockFile = new File(['test'], 'test.txt'); + const validate = excelValidateGenerator( + mockApiPath, + mockSetExcelFile, + mockSetExcelValidationErrors + ); + + await validate(mockFile); + + expect(mockSetExcelFile).toHaveBeenCalledWith(mockFile); + }); + test('should call setExcelValidationErrors with an empty array', async () => { const mockFile = new File(['test'], 'test.txt'); const validate = excelValidateGenerator( diff --git a/app/tests/lib/helpers/fetchWithTimeout.test.ts b/app/tests/lib/helpers/fetchWithTimeout.test.ts new file mode 100644 index 0000000000..1212e9bc3f --- /dev/null +++ b/app/tests/lib/helpers/fetchWithTimeout.test.ts @@ -0,0 +1,26 @@ +import fetchMock from 'fetch-mock'; +import fetchWithTimeout from '../../../lib/helpers/fetchWithTimeout'; + +describe('fetchWithTimeout', () => { + afterEach(() => { + fetchMock.restore(); + }); + + it('should fetch successfully within timeout', async () => { + fetchMock.get('https://test.ca', { status: 200, body: 'Success' }); + + const response = await fetchWithTimeout('https://test.ca', {}, 1000); + const text = await response.text(); + + expect(response.ok).toBe(true); + expect(text).toBe('Success'); + }); + + it('should timeout if the fetch takes too long', async () => { + fetchMock.get('https://test.ca', new Promise(() => {})); // Mock a never-resolving promise + + await expect(fetchWithTimeout('https://test.ca', {}, 10)).rejects.toThrow( + 'Fetch request to https://test.ca timed out after 10ms' + ); + }); +}); diff --git a/app/yarn.lock b/app/yarn.lock index a42b819883..d2a15e3ec5 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -20,6 +20,14 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@aws-crypto/crc32@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" @@ -1916,6 +1924,32 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== +"@babel/compat-data@^7.25.2": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== + +"@babel/core@^7.0.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + 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/core@^7.11.6", "@babel/core@^7.12.3": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" @@ -1966,6 +2000,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.4.tgz#1dc63c1c9caae9e6dc24e264eac254eb25005669" + integrity sha512-NFtZmZsyzDPJnk9Zg3BbTfKKc9UlHYzD0E//p2Z3B9nCwwtJW9T0gVbCz8+fBngnn4zf1Dr3IK8PHQQHq0lDQw== + dependencies: + "@babel/types" "^7.25.4" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.7", "@babel/helper-annotate-as-pure@^7.22.5": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" @@ -1983,6 +2027,17 @@ browserslist "^4.20.2" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -2010,7 +2065,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== @@ -2032,6 +2087,16 @@ "@babel/traverse" "^7.17.3" "@babel/types" "^7.17.0" +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@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.16.7", "@babel/helper-plugin-utils@^7.8.0": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" @@ -2049,6 +2114,14 @@ dependencies: "@babel/types" "^7.17.0" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -2093,6 +2166,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helpers@^7.17.9": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" @@ -2102,6 +2180,14 @@ "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/highlight@^7.16.7": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" @@ -2147,6 +2233,13 @@ dependencies: "@babel/types" "^7.25.2" +"@babel/parser@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a" + integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA== + dependencies: + "@babel/types" "^7.25.4" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -2353,6 +2446,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.2": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.4.tgz#648678046990f2957407e3086e97044f13c3e18e" + integrity sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.4" + "@babel/parser" "^7.25.4" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.4" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" @@ -2379,6 +2485,15 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.4.tgz#6bcb46c72fdf1012a209d016c07f769e10adcb5f" + integrity sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcgov-cas/sso-express@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@bcgov-cas/sso-express/-/sso-express-3.2.0.tgz#1f857d9590539b23d082e1ec1300ac9fac4865e3" @@ -6528,6 +6643,16 @@ browserslist@^4.20.2: node-releases "^2.0.3" picocolors "^1.0.0" +browserslist@^4.23.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -6691,6 +6816,11 @@ caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001579: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== +caniuse-lite@^1.0.30001646: + version "1.0.30001651" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" + integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -7070,6 +7200,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + convict@^6.2.4: version "6.2.4" resolved "https://registry.yarnpkg.com/convict/-/convict-6.2.4.tgz#be290672bf6397eec808d3b11fc5f71785b02a4b" @@ -7673,7 +7808,7 @@ domhandler@4.3.1, domhandler@^4.2.0, domhandler@^4.2.2: dependencies: domelementtype "^2.2.0" -domhandler@^5.0.2, domhandler@^5.0.3: +domhandler@5.0.3, domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== @@ -7689,7 +7824,7 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -domutils@^3.0.1: +domutils@^3.0.1, domutils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== @@ -7740,6 +7875,11 @@ electron-to-chromium@^1.4.118: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz#186180a45617283f1c012284458510cd99d6787f" integrity sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA== +electron-to-chromium@^1.5.4: + version "1.5.13" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" + integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== + element-resize-detector@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1" @@ -7808,7 +7948,7 @@ entities@^3.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@^4.2.0, entities@^4.4.0: +entities@^4.2.0, entities@^4.4.0, entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -7951,6 +8091,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -8593,6 +8738,22 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +fetch-mock@9.11.0: + version "9.11.0" + resolved "https://registry.yarnpkg.com/fetch-mock/-/fetch-mock-9.11.0.tgz#371c6fb7d45584d2ae4a18ee6824e7ad4b637a3f" + integrity sha512-PG1XUv+x7iag5p/iNHD4/jdpxL9FtVSqRMUQhPab4hVDt80T1MH5ehzVrL2IdXO9Q2iBggArFvPqjUbHFuI58Q== + dependencies: + "@babel/core" "^7.0.0" + "@babel/runtime" "^7.0.0" + core-js "^3.0.0" + debug "^4.1.1" + glob-to-regexp "^0.4.0" + is-subset "^0.1.1" + lodash.isequal "^4.5.0" + path-to-regexp "^2.2.1" + querystring "^0.2.0" + whatwg-url "^6.5.0" + figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -8952,6 +9113,11 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-to-regexp@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -9378,6 +9544,14 @@ html-dom-parser@1.2.0: domhandler "4.3.1" htmlparser2 "7.2.0" +html-dom-parser@5.0.9: + version "5.0.9" + resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-5.0.9.tgz#8c600e3407340c9a148cc8b3bf9bc390948cd9c1" + integrity sha512-QGeoFYwgQ582EDvrBx0+ejIz76/LuQcwwkmSR4ueKncjl2yWbciA45Kfz/LrHvWR3CgtKnxKFkr4Mpq2Sh1QNg== + dependencies: + domhandler "5.0.3" + htmlparser2 "9.1.0" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -9407,6 +9581,16 @@ html-react-parser@^1.2.6: react-property "2.0.0" style-to-js "1.1.0" +html-react-parser@^5.1.12: + version "5.1.12" + resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-5.1.12.tgz#6c537b5371be8ba4b81b8d0ede17d1bc3924efd8" + integrity sha512-OPv8fsIvxxv/+pLj9mYvyNu8PE5dPMowTRdd5VHpcoZpXlstp8eYCxQ5rzqAE5Tb75rhdiWUXnPltfb62zCVjg== + dependencies: + domhandler "5.0.3" + html-dom-parser "5.0.9" + react-property "2.0.2" + style-to-js "1.1.12" + htmlparser2@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" @@ -9417,6 +9601,16 @@ htmlparser2@7.2.0: domutils "^2.8.0" entities "^3.0.1" +htmlparser2@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" + integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.1.0" + entities "^4.5.0" + htmlparser2@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" @@ -9638,6 +9832,11 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +inline-style-parser@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.3.tgz#e35c5fb45f3a83ed7849fe487336eb7efa25971c" + integrity sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g== + internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -9925,6 +10124,11 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw== + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -10999,6 +11203,11 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" @@ -11034,6 +11243,11 @@ lodash.once@^4.0.0, lodash.once@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + lodash.template@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -11115,7 +11329,7 @@ lru-cache@^10.2.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== -lru-cache@^5.0.0: +lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== @@ -11445,6 +11659,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + node-releases@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" @@ -11989,6 +12208,11 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-to-regexp@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz#35ce7f333d5616f1c1e1bfe266c3aba2e5b2e704" + integrity sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w== + path-to-regexp@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -12085,6 +12309,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -12407,6 +12636,11 @@ qs@^6.10.0, qs@^6.11.0, qs@^6.11.2: dependencies: side-channel "^1.0.6" +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -12538,6 +12772,11 @@ react-property@2.0.0: resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136" integrity sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw== +react-property@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.2.tgz#d5ac9e244cef564880a610bc8d868bd6f60fdda6" + integrity sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug== + react-relay-network-modern@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/react-relay-network-modern/-/react-relay-network-modern-6.2.1.tgz#34e93110cf1bb0e666bffb00b513335c37950bc9" @@ -13055,6 +13294,11 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -13591,6 +13835,13 @@ style-to-js@1.1.0: dependencies: style-to-object "0.3.0" +style-to-js@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.12.tgz#112dd054231e71643514013a4475d4649bb2b581" + integrity sha512-tv+/FkgNYHI2fvCoBMsqPHh5xovwiw+C3X0Gfnss/Syau0Nr3IqGOJ9XiOYXoPnToHVbllKFf5qCNFJGwFg5mg== + dependencies: + style-to-object "1.0.6" + style-to-object@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -13598,6 +13849,13 @@ style-to-object@0.3.0: dependencies: inline-style-parser "0.1.1" +style-to-object@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.6.tgz#0c28aed8be1813d166c60d962719b2907c26547b" + integrity sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA== + dependencies: + inline-style-parser "0.2.3" + styled-components@^5.2.1, styled-components@^5.3.5: version "5.3.5" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" @@ -13858,6 +14116,13 @@ tough-cookie@^4.1.3: universalify "^0.2.0" url-parse "^1.5.3" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -14100,6 +14365,14 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -14310,6 +14583,11 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -14378,6 +14656,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" diff --git a/db/sqitch.plan b/db/sqitch.plan index 826f8e40e2..aadb4a93d2 100644 --- a/db/sqitch.plan +++ b/db/sqitch.plan @@ -638,3 +638,4 @@ tables/cbc_add_fk_update_constraint 2024-07-11T20:32:11Z Rafael Solorzano <61289 @1.181.0 2024-08-20T20:20:29Z CCBC Service Account # release v1.181.0 @1.181.1 2024-08-22T14:38:05Z CCBC Service Account # release v1.181.1 @1.181.2 2024-08-22T16:09:35Z CCBC Service Account # release v1.181.2 +@1.182.0 2024-08-22T16:48:01Z CCBC Service Account # release v1.182.0 diff --git a/package.json b/package.json index 431f97701c..8a2abac840 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "CONN-CCBC-portal", - "version": "1.181.2", + "version": "1.182.0", "main": "index.js", "repository": "https://github.com/bcgov/CONN-CCBC-portal.git", "author": "Romer, Meherzad CITZ:EX ",