diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8b57f367ea..6974f0a878 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,12 +1,50 @@ version: 2 updates: - - package-ecosystem: "npm" - directory: "/" + - package-ecosystem: npm + directory: / schedule: - interval: "daily" + interval: daily ignore: - dependency-name: "@types/*" + - dependency-name: "@sentry/node" + versions: [">= 7.114.0"] open-pull-requests-limit: 5 labels: - - "dependencies" - rebase-strategy: 'disabled' + - dependencies + rebase-strategy: disabled + groups: + dev-minor-dependencies: + applies-to: version-updates + update-types: [minor, patch] + patterns: + - "*" + exclude-patterns: + - "@babel*" + - "@storybook*" + - "@sentry*" + - "@dnd-kit" + - socket.io + babel: + applies-to: version-updates + patterns: + - "@babel*" + storybook: + applies-to: version-updates + patterns: + - "@storybook*" + sentry: + applies-to: version-updates + patterns: + - "@sentry*" + dnd-kit: + applies-to: version-updates + patterns: + - "@dnd-kit*" + socket.io: + applies-to: version-updates + patterns: + - socket.io* + eslint: + applies-to: version-updates + patterns: + - socket.io* \ No newline at end of file diff --git a/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/index.ts b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/index.ts new file mode 100644 index 0000000000..2d46a71aac --- /dev/null +++ b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/index.ts @@ -0,0 +1,17 @@ +import { Db } from 'mongodb'; + +export default { + delta: 169, + + name: 'reindex_persist_filename_with_fullText_object', + + description: + "We're now indexing document.filename within the fullText object on elasticsearch, this is usefull because on search/v2 endpoint we need to return which filename each text snippet belongs to.", + + reindex: true, + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async up(db: Db) { + process.stdout.write(`${this.name}...\r\n`); + }, +}; diff --git a/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/169-reindex_persist_filename_with_fullText_object.spec.ts b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/169-reindex_persist_filename_with_fullText_object.spec.ts new file mode 100644 index 0000000000..30a56fadf0 --- /dev/null +++ b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/169-reindex_persist_filename_with_fullText_object.spec.ts @@ -0,0 +1,37 @@ +import { Db } from 'mongodb'; + +import testingDB from 'api/utils/testing_db'; +import migration from '../index'; +import { Fixture } from '../types'; +import { fixtures } from './fixtures'; + +let db: Db | null; + +const initTest = async (fixture: Fixture) => { + await testingDB.setupFixturesAndContext(fixture); + db = testingDB.mongodb!; + await migration.up(db); +}; + +beforeAll(async () => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + jest.spyOn(process.stdout, 'write').mockImplementation((str: string | Uint8Array) => true); +}); + +afterAll(async () => { + await testingDB.tearDown(); +}); + +describe('migration test', () => { + beforeAll(async () => { + await initTest(fixtures); + }); + + it('should have a delta number', () => { + expect(migration.delta).toBe(169); + }); + + it('should check if a reindex is needed', async () => { + expect(migration.reindex).toBe(true); + }); +}); diff --git a/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/fixtures.ts b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/fixtures.ts new file mode 100644 index 0000000000..e0e2c34cd0 --- /dev/null +++ b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/specs/fixtures.ts @@ -0,0 +1,13 @@ +import { ObjectId } from 'mongodb'; +import { Fixture } from '../types'; + +const fixtures: Fixture = { + entities: [ + { + _id: new ObjectId(), + title: 'test_doc', + }, + ], +}; + +export { fixtures }; diff --git a/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/types.ts b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/types.ts new file mode 100644 index 0000000000..f98b5fcc36 --- /dev/null +++ b/app/api/migrations/migrations/169-reindex_persist_filename_with_fullText_object/types.ts @@ -0,0 +1,13 @@ +import { ObjectId } from 'mongodb'; + +interface Entity { + _id: ObjectId; + title: string; + [k: string]: unknown | undefined; +} + +interface Fixture { + entities: Entity[]; +} + +export type { Entity, Fixture }; diff --git a/app/api/search.v2/buildQuery.ts b/app/api/search.v2/buildQuery.ts index dbbd0a02ac..3a5b2b936a 100644 --- a/app/api/search.v2/buildQuery.ts +++ b/app/api/search.v2/buildQuery.ts @@ -53,7 +53,9 @@ const fullTextSearch = ( type: 'fullText', score_mode: 'max', inner_hits: { - _source: false, + _source: { + excludes: ['fullText*'], + }, ...snippetsHighlight(query, [{ 'fullText_*': {} }]), }, query: { diff --git a/app/api/search.v2/searchResponse.ts b/app/api/search.v2/searchResponse.ts index c39aa5f377..bbf62a2911 100644 --- a/app/api/search.v2/searchResponse.ts +++ b/app/api/search.v2/searchResponse.ts @@ -12,10 +12,10 @@ function getSnippetsForNonFullText(hit: ElasticHit) { } function extractFullTextSnippets(hit: ElasticHit) { - const fullTextSnippets: { text: string; page: number }[] = []; + const fullTextSnippets: { text: string; page: number; filename: string }[] = []; if (hit.inner_hits && hit.inner_hits.fullText.hits.hits[0]?.highlight) { - const { highlight } = hit.inner_hits.fullText.hits.hits[0]; + const { highlight, _source } = hit.inner_hits.fullText.hits.hits[0]; const regex = /\[{2}(\d+)]{2}/g; Object.values(highlight).forEach(snippets => { @@ -24,6 +24,7 @@ function extractFullTextSnippets(hit: ElasticHit) { fullTextSnippets.push({ text: snippet.replace(regex, ''), page: matches ? Number(matches[1]) : 0, + filename: _source.filename, }); }); }); diff --git a/app/api/search.v2/specs/snippetsSearch.spec.ts b/app/api/search.v2/specs/snippetsSearch.spec.ts index b7f77c9aeb..4527f874a1 100644 --- a/app/api/search.v2/specs/snippetsSearch.spec.ts +++ b/app/api/search.v2/specs/snippetsSearch.spec.ts @@ -42,8 +42,8 @@ describe('searchSnippets', () => { count: 2, metadata: [], fullText: [ - { page: 2, text: matches }, - { page: 4, text: matches }, + { page: 2, text: matches, filename: 'entity1SharedId.pdf' }, + { page: 4, text: matches, filename: 'entity1SharedId.pdf' }, ], }, }), @@ -97,7 +97,13 @@ describe('searchSnippets', () => { snippets: { count: 1, metadata: [], - fullText: [{ page: 2, text: expect.stringContaining('searched:term') }], + fullText: [ + { + page: 2, + text: expect.stringContaining('searched:term'), + filename: 'entity4SharedId.pdf', + }, + ], }, }), ]; diff --git a/app/api/search/elasticTypes.ts b/app/api/search/elasticTypes.ts index a3fd4ecf4e..417ee4bc74 100644 --- a/app/api/search/elasticTypes.ts +++ b/app/api/search/elasticTypes.ts @@ -26,7 +26,7 @@ export interface ElasticHit { fields?: any; highlight?: any; // eslint-disable-next-line camelcase - inner_hits?: { fullText: { hits: { hits: [{ highlight: {} }] } } }; + inner_hits?: { fullText: { hits: { hits: [{ highlight: {}; _source: Record }] } } }; // eslint-disable-next-line camelcase matched_queries?: string[]; sort?: string[]; diff --git a/app/api/search/entitiesIndex.js b/app/api/search/entitiesIndex.js index be50c67a7c..3a76cb0642 100644 --- a/app/api/search/entitiesIndex.js +++ b/app/api/search/entitiesIndex.js @@ -54,6 +54,7 @@ function setFullTextSettings(defaultDocument, id, body, doc) { } const fullTextObject = { [`fullText_${language}`]: fullText, + filename: defaultDocument.filename, fullText: { name: 'fullText', parent: id }, }; body.push(fullTextObject); diff --git a/app/api/services/informationextraction/specs/InformationExtraction.spec.ts b/app/api/services/informationextraction/specs/InformationExtraction.spec.ts index 34230e8764..d68681a7e4 100644 --- a/app/api/services/informationextraction/specs/InformationExtraction.spec.ts +++ b/app/api/services/informationextraction/specs/InformationExtraction.spec.ts @@ -759,12 +759,12 @@ describe('InformationExtraction', () => { status: 'processing', state: { labeled: true, + match: null, withValue: true, withSuggestion: true, - match: false, hasContext: true, processing: true, - obsolete: false, + obsolete: true, error: false, }, }) @@ -1011,9 +1011,9 @@ describe('InformationExtraction', () => { error: 'Issue calculation suggestion', state: { labeled: true, + match: null, withValue: true, withSuggestion: false, - match: false, hasContext: false, processing: false, obsolete: false, diff --git a/app/api/services/informationextraction/specs/ixextractors.spec.ts b/app/api/services/informationextraction/specs/ixextractors.spec.ts index 5ed882491b..384f63b780 100644 --- a/app/api/services/informationextraction/specs/ixextractors.spec.ts +++ b/app/api/services/informationextraction/specs/ixextractors.spec.ts @@ -93,7 +93,7 @@ const fixtures: DBFixture = { fixtureFactory.ixExtractor('fungusKindExtractor', 'kind', ['fungusTemplate']), ], ixsuggestions: [ - fixtureFactory.ixSuggestion( + fixtureFactory.ixSuggestion_deprecated( 'sh1_en', 'existingExtractor', 'shared1', @@ -101,7 +101,7 @@ const fixtures: DBFixture = { 'F3', 'kind' ), - fixtureFactory.ixSuggestion( + fixtureFactory.ixSuggestion_deprecated( 'sh1_es', 'existingExtractor', 'shared1', @@ -110,7 +110,7 @@ const fixtures: DBFixture = { 'kind', { language: 'es' } ), - fixtureFactory.ixSuggestion( + fixtureFactory.ixSuggestion_deprecated( 'sh3_en', 'existingExtractor', 'shared3', @@ -118,7 +118,7 @@ const fixtures: DBFixture = { 'F5', 'kind' ), - fixtureFactory.ixSuggestion( + fixtureFactory.ixSuggestion_deprecated( 'sh4_en', 'fungusKindExtractor', 'shared4', @@ -126,7 +126,7 @@ const fixtures: DBFixture = { 'F7', 'kind' ), - fixtureFactory.ixSuggestion( + fixtureFactory.ixSuggestion_deprecated( 'sh4_es', 'fungusKindExtractor', 'shared4', diff --git a/app/api/suggestions/pipelineStages.ts b/app/api/suggestions/pipelineStages.ts index c222e9c315..26702c2e61 100644 --- a/app/api/suggestions/pipelineStages.ts +++ b/app/api/suggestions/pipelineStages.ts @@ -14,46 +14,23 @@ export const baseQueryFragment = (extractorId: ObjectId, ignoreProcessing = true }; export const filterFragments = { - labeled: { - _fragment: { 'state.labeled': true }, - match: { 'state.labeled': true, 'state.match': true }, - mismatch: { 'state.labeled': true, 'state.match': false }, - }, - nonLabeled: { - _fragment: { 'state.labeled': false }, - withSuggestion: { 'state.labeled': false, 'state.withSuggestion': true }, - noSuggestion: { 'state.labeled': false, 'state.withSuggestion': false }, - noContext: { 'state.labeled': false, 'state.hasContext': false }, - obsolete: { 'state.labeled': false, 'state.obsolete': true }, - others: { 'state.labeled': false, 'state.error': true }, - }, + labeled: { 'state.labeled': true }, + nonLabeled: { 'state.labeled': false }, + match: { 'state.match': true }, + mismatch: { 'state.match': false }, + obsolete: { 'state.obsolete': true }, + error: { 'state.error': true }, }; export const translateCustomFilter = (customFilter: SuggestionCustomFilter) => { const orFilters = []; - if (customFilter.labeled.match) { - orFilters.push(filterFragments.labeled.match); - } - if (customFilter.labeled.mismatch) { - orFilters.push(filterFragments.labeled.mismatch); - } - - if (customFilter.nonLabeled.withSuggestion) { - orFilters.push(filterFragments.nonLabeled.withSuggestion); - } + if (customFilter.labeled) orFilters.push(filterFragments.labeled); + if (customFilter.nonLabeled) orFilters.push(filterFragments.nonLabeled); + if (customFilter.match) orFilters.push(filterFragments.match); + if (customFilter.mismatch) orFilters.push(filterFragments.mismatch); + if (customFilter.obsolete) orFilters.push(filterFragments.obsolete); + if (customFilter.error) orFilters.push(filterFragments.error); - if (customFilter.nonLabeled.noSuggestion) { - orFilters.push(filterFragments.nonLabeled.noSuggestion); - } - if (customFilter.nonLabeled.noContext) { - orFilters.push(filterFragments.nonLabeled.noContext); - } - if (customFilter.nonLabeled.obsolete) { - orFilters.push(filterFragments.nonLabeled.obsolete); - } - if (customFilter.nonLabeled.others) { - orFilters.push(filterFragments.nonLabeled.others); - } return orFilters; }; diff --git a/app/api/suggestions/specs/customFilters.spec.ts b/app/api/suggestions/specs/customFilters.spec.ts index bd8fc83228..045d17352a 100644 --- a/app/api/suggestions/specs/customFilters.spec.ts +++ b/app/api/suggestions/specs/customFilters.spec.ts @@ -1,38 +1,34 @@ -import db from 'api/utils/testing_db'; +import { testingDB } from 'api/utils/testing_db'; import { SuggestionCustomFilter } from 'shared/types/suggestionType'; -import { factory, stateFilterFixtures } from './fixtures'; +import { factory as f, stateFilterFixtures } from './fixtures'; import { Suggestions } from '../suggestions'; const blankCustomFilter: SuggestionCustomFilter = { - labeled: { - match: false, - mismatch: false, - }, - nonLabeled: { - withSuggestion: false, - noSuggestion: false, - noContext: false, - obsolete: false, - others: false, - }, + labeled: false, + nonLabeled: false, + match: false, + mismatch: false, + obsolete: false, + error: false, }; beforeAll(async () => { - await db.setupFixturesAndContext(stateFilterFixtures); + await testingDB.setupFixturesAndContext(stateFilterFixtures); await Suggestions.updateStates({}); }); -afterAll(async () => db.disconnect()); +afterAll(async () => testingDB.disconnect()); describe('suggestions with CustomFilters', () => { describe('get()', () => { it('should return all suggestions (except processing) when no custom filter is provided', async () => { const result = await Suggestions.get( { - extractorId: factory.id('test_extractor').toString(), + extractorId: f.id('test_extractor').toString(), }, {} ); + expect(result.suggestions.length).toBe(12); expect(result.suggestions).toMatchObject([ { sharedId: 'unlabeled-obsolete', language: 'en' }, { sharedId: 'unlabeled-obsolete', language: 'es' }, @@ -40,10 +36,10 @@ describe('suggestions with CustomFilters', () => { { sharedId: 'labeled-match', language: 'es' }, { sharedId: 'labeled-mismatch', language: 'en' }, { sharedId: 'labeled-mismatch', language: 'es' }, - { sharedId: 'unlabeled-error', language: 'en' }, - { sharedId: 'unlabeled-error', language: 'es' }, { sharedId: 'unlabeled-no-context', language: 'en' }, { sharedId: 'unlabeled-no-context', language: 'es' }, + { sharedId: 'unlabeled-error', language: 'en' }, + { sharedId: 'unlabeled-error', language: 'es' }, { sharedId: 'unlabeled-no-suggestion', language: 'en' }, { sharedId: 'unlabeled-no-suggestion', language: 'es' }, ]); @@ -52,7 +48,7 @@ describe('suggestions with CustomFilters', () => { it('should be able to paginate', async () => { const result = await Suggestions.get( { - extractorId: factory.id('test_extractor').toString(), + extractorId: f.id('test_extractor').toString(), }, { page: { number: 3, size: 2 } } ); @@ -64,163 +60,114 @@ describe('suggestions with CustomFilters', () => { it.each([ { - description: 'filtering for labeled - match', - customFilter: { - ...blankCustomFilter, - labeled: { - match: true, - mismatch: false, - }, - }, + description: 'filtering for labeled', + customFilter: { ...blankCustomFilter, labeled: true }, expectedSuggestions: [ { sharedId: 'labeled-match', language: 'en' }, { sharedId: 'labeled-match', language: 'es' }, - ], - }, - { - description: 'filtering for labeled - mismatch', - customFilter: { - ...blankCustomFilter, - labeled: { - match: false, - mismatch: true, - }, - }, - expectedSuggestions: [ { sharedId: 'labeled-mismatch', language: 'en' }, { sharedId: 'labeled-mismatch', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - withSuggestion', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - withSuggestion: true, - }, - }, + description: 'filtering for nonLabeled', + customFilter: { ...blankCustomFilter, nonLabeled: true }, expectedSuggestions: [ { sharedId: 'unlabeled-obsolete', language: 'en' }, { sharedId: 'unlabeled-obsolete', language: 'es' }, + { sharedId: 'unlabeled-no-context', language: 'en' }, + { sharedId: 'unlabeled-no-context', language: 'es' }, { sharedId: 'unlabeled-error', language: 'en' }, { sharedId: 'unlabeled-error', language: 'es' }, + { sharedId: 'unlabeled-no-suggestion', language: 'en' }, + { sharedId: 'unlabeled-no-suggestion', language: 'es' }, + ], + }, + { + description: 'filtering for match', + customFilter: { ...blankCustomFilter, match: true }, + expectedSuggestions: [ + { sharedId: 'labeled-match', language: 'en' }, + { sharedId: 'labeled-match', language: 'es' }, { sharedId: 'unlabeled-no-context', language: 'en' }, { sharedId: 'unlabeled-no-context', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - noSuggestion', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - noSuggestion: true, - }, - }, + description: 'filtering for mismatch', + customFilter: { ...blankCustomFilter, mismatch: true }, expectedSuggestions: [ + { sharedId: 'labeled-mismatch', language: 'en' }, + { sharedId: 'labeled-mismatch', language: 'es' }, { sharedId: 'unlabeled-no-suggestion', language: 'en' }, { sharedId: 'unlabeled-no-suggestion', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - withSuggestions and noSuggestion', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - withSuggestion: true, - noSuggestion: true, - }, - }, + description: 'filtering for obsolete', + customFilter: { ...blankCustomFilter, obsolete: true }, expectedSuggestions: [ { sharedId: 'unlabeled-obsolete', language: 'en' }, { sharedId: 'unlabeled-obsolete', language: 'es' }, - { sharedId: 'unlabeled-error', language: 'en' }, - { sharedId: 'unlabeled-error', language: 'es' }, - { sharedId: 'unlabeled-no-context', language: 'en' }, - { sharedId: 'unlabeled-no-context', language: 'es' }, - { sharedId: 'unlabeled-no-suggestion', language: 'en' }, - { sharedId: 'unlabeled-no-suggestion', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - noContext', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - noContext: true, - }, - }, + description: 'filtering for error', + customFilter: { ...blankCustomFilter, error: true }, expectedSuggestions: [ - { sharedId: 'unlabeled-no-context', language: 'en' }, - { sharedId: 'unlabeled-no-context', language: 'es' }, - { sharedId: 'unlabeled-no-suggestion', language: 'en' }, - { sharedId: 'unlabeled-no-suggestion', language: 'es' }, + { sharedId: 'unlabeled-error', language: 'en' }, + { sharedId: 'unlabeled-error', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - obsolete', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - obsolete: true, - }, - }, + description: 'filtering for OR combinations like: error OR obsolete', + customFilter: { ...blankCustomFilter, error: true, obsolete: true }, expectedSuggestions: [ { sharedId: 'unlabeled-obsolete', language: 'en' }, { sharedId: 'unlabeled-obsolete', language: 'es' }, + { sharedId: 'unlabeled-error', language: 'en' }, + { sharedId: 'unlabeled-error', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - others', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - others: true, - }, - }, + description: 'filtering for OR combinations like: mismatch OR error', + customFilter: { ...blankCustomFilter, mismatch: true, error: true }, expectedSuggestions: [ + { sharedId: 'labeled-mismatch', language: 'en' }, + { sharedId: 'labeled-mismatch', language: 'es' }, { sharedId: 'unlabeled-error', language: 'en' }, { sharedId: 'unlabeled-error', language: 'es' }, + { sharedId: 'unlabeled-no-suggestion', language: 'en' }, + { sharedId: 'unlabeled-no-suggestion', language: 'es' }, ], }, { - description: 'filtering for labeled - match and nonLabeled - obsolete', - customFilter: { - ...blankCustomFilter, - labeled: { - match: true, - mismatch: false, - }, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - obsolete: true, - }, - }, + description: 'filtering for OR combinations like: labeled OR match', + customFilter: { ...blankCustomFilter, labeled: true, match: true }, expectedSuggestions: [ - { sharedId: 'unlabeled-obsolete', language: 'en' }, - { sharedId: 'unlabeled-obsolete', language: 'es' }, { sharedId: 'labeled-match', language: 'en' }, { sharedId: 'labeled-match', language: 'es' }, + { sharedId: 'labeled-mismatch', language: 'en' }, + { sharedId: 'labeled-mismatch', language: 'es' }, + { sharedId: 'unlabeled-no-context', language: 'en' }, + { sharedId: 'unlabeled-no-context', language: 'es' }, ], }, { - description: 'filtering for nonLabeled - noSuggestion and nonLabeled - noContext', - customFilter: { - ...blankCustomFilter, - nonLabeled: { - ...blankCustomFilter.nonLabeled, - noSuggestion: true, - noContext: true, - }, - }, + description: + 'filtering for OR combinations of complimentary filters like: labeled OR nonLabeled, which would result in all suggestions', + customFilter: { ...blankCustomFilter, labeled: true, nonLabeled: true }, expectedSuggestions: [ + { sharedId: 'unlabeled-obsolete', language: 'en' }, + { sharedId: 'unlabeled-obsolete', language: 'es' }, + { sharedId: 'labeled-match', language: 'en' }, + { sharedId: 'labeled-match', language: 'es' }, + { sharedId: 'labeled-mismatch', language: 'en' }, + { sharedId: 'labeled-mismatch', language: 'es' }, { sharedId: 'unlabeled-no-context', language: 'en' }, { sharedId: 'unlabeled-no-context', language: 'es' }, + { sharedId: 'unlabeled-error', language: 'en' }, + { sharedId: 'unlabeled-error', language: 'es' }, { sharedId: 'unlabeled-no-suggestion', language: 'en' }, { sharedId: 'unlabeled-no-suggestion', language: 'es' }, ], @@ -229,35 +176,107 @@ describe('suggestions with CustomFilters', () => { 'should use the custom filter properly when $description', async ({ customFilter, expectedSuggestions }) => { const result = await Suggestions.get( - { - extractorId: factory.id('test_extractor').toString(), - customFilter, - }, + { extractorId: f.id('test_extractor').toString(), customFilter }, {} ); + + expect(result.suggestions.length).toBe(expectedSuggestions.length); expect(result.suggestions).toMatchObject(expectedSuggestions); } ); }); describe('aggreagate()', () => { - it('should return correct aggregation', async () => { - const result = await Suggestions.aggregate(factory.id('test_extractor').toString()); - expect(result).toEqual({ - total: 12, - labeled: { - _count: 4, - match: 2, - mismatch: 2, - }, - nonLabeled: { - _count: 8, - withSuggestion: 6, - noSuggestion: 2, - noContext: 4, - obsolete: 2, - others: 2, - }, + it('should return count of labeled and non labeled suggestions', async () => { + await testingDB.setupFixturesAndContext({ + ixsuggestions: [ + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { labeled: true } }), + f.ixSuggestion({ + extractorId: f.id('another_extractor'), + state: { labeled: true }, + }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { labeled: false } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { labeled: false } }), + ], + }); + + const result = await Suggestions.aggregate(f.id('test_extractor').toString()); + expect(result).toMatchObject({ + total: 3, + labeled: 1, + nonLabeled: 2, + }); + }); + + it('should return count of match and missmatch', async () => { + await testingDB.setupFixturesAndContext({ + ixsuggestions: [ + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { match: true } }), + f.ixSuggestion({ extractorId: f.id('another_extractor'), state: { match: true } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { match: true } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { match: false } }), + ], + }); + + const result = await Suggestions.aggregate(f.id('test_extractor').toString()); + expect(result).toMatchObject({ + total: 3, + match: 2, + mismatch: 1, + }); + }); + + it('should return count of obsolete suggestions', async () => { + await testingDB.setupFixturesAndContext({ + ixsuggestions: [ + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { obsolete: true } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { obsolete: true } }), + f.ixSuggestion({ + extractorId: f.id('another_extractor'), + state: { obsolete: true }, + }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { obsolete: false } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: {} }), + ], + }); + + const result = await Suggestions.aggregate(f.id('test_extractor').toString()); + expect(result).toMatchObject({ + total: 4, + obsolete: 2, + }); + }); + + it('should return count of errors in suggestions', async () => { + await testingDB.setupFixturesAndContext({ + ixsuggestions: [ + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: { error: true } }), + f.ixSuggestion({ extractorId: f.id('another_extractor'), state: { error: true } }), + f.ixSuggestion({ extractorId: f.id('test_extractor'), state: {} }), + ], + }); + + const result = await Suggestions.aggregate(f.id('test_extractor').toString()); + expect(result).toMatchObject({ + total: 2, + error: 1, + }); + }); + + it('should correctly return all zeroes if no suggestions found', async () => { + await testingDB.setupFixturesAndContext({ + ixsuggestions: [], + }); + + const result = await Suggestions.aggregate(f.id('test_extractor').toString()); + expect(result).toMatchObject({ + total: 0, + labeled: 0, + nonLabeled: 0, + match: 0, + mismatch: 0, + obsolete: 0, + error: 0, }); }); }); diff --git a/app/api/suggestions/specs/eventListeners.spec.ts b/app/api/suggestions/specs/eventListeners.spec.ts index 0c9d5e7820..14406dd055 100644 --- a/app/api/suggestions/specs/eventListeners.spec.ts +++ b/app/api/suggestions/specs/eventListeners.spec.ts @@ -99,7 +99,7 @@ const fixtures: DBFixture = { fixturesFactory.ixExtractor('extractor8', 'relationship_property', [extractedTemplateName]), ], ixsuggestions: [ - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_prop_1_suggestion', 'extractor1', 'entity for new file', @@ -107,7 +107,7 @@ const fixtures: DBFixture = { 'entfile', 'extracted_property_1' ), - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_prop_2_suggestion', 'extractor2', 'entity for new file', @@ -115,7 +115,7 @@ const fixtures: DBFixture = { 'entfile', 'extracted_property_2' ), - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_title_suggestion', 'title_extractor', 'entity for new file', @@ -123,7 +123,7 @@ const fixtures: DBFixture = { 'entfile', 'title' ), - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_select_suggestion', 'extractor6', 'entity for new file', @@ -131,7 +131,7 @@ const fixtures: DBFixture = { 'entfile', 'select_property' ), - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_multiselect_suggestion', 'extractor7', 'entity for new file', @@ -139,7 +139,7 @@ const fixtures: DBFixture = { 'entfile', 'multiselect_property' ), - fixturesFactory.ixSuggestion( + fixturesFactory.ixSuggestion_deprecated( 'new_relationship_suggestion', 'extractor8', 'entity for new file', diff --git a/app/api/suggestions/specs/fixtures.ts b/app/api/suggestions/specs/fixtures.ts index cb68ca189a..79dc3fc101 100644 --- a/app/api/suggestions/specs/fixtures.ts +++ b/app/api/suggestions/specs/fixtures.ts @@ -1102,7 +1102,7 @@ const stateFilterFixtures: DBFixture = { factory.ixExtractor('unused_extractor', 'unused_prop', ['template1']), ], ixsuggestions: [ - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'label-match-suggestion-en', 'test_extractor', 'labeled-match', @@ -1116,7 +1116,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-labeled-match', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'label-match-suggestion-es', 'test_extractor', 'labeled-match', @@ -1130,7 +1130,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-labeled-match', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'label-mismatch-suggestion-en', 'test_extractor', 'labeled-mismatch', @@ -1144,7 +1144,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-labeled-mismatch-mismatch', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'label-mismatch-suggestion-es', 'test_extractor', 'labeled-mismatch', @@ -1158,7 +1158,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-labeled-mismatch-mismatch', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-no-suggestion-suggestion-en', 'test_extractor', 'unlabeled-no-suggestion', @@ -1172,7 +1172,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: '', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-no-suggestion-suggestion-es', 'test_extractor', 'unlabeled-no-suggestion', @@ -1186,7 +1186,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: '', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-no-context-suggestion-en', 'test_extractor', 'unlabeled-no-context', @@ -1200,7 +1200,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-unlabeled-no-context', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-no-context-suggestion-es', 'test_extractor', 'unlabeled-no-context', @@ -1214,7 +1214,7 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-unlabeled-no-context', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-obsolete-suggestion-en', 'test_extractor', 'unlabeled-obsolete', @@ -1229,7 +1229,7 @@ const stateFilterFixtures: DBFixture = { segment: 'test-unlabeled-obsolete', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-obsolete-suggestion-es', 'test_extractor', 'unlabeled-obsolete', @@ -1244,7 +1244,7 @@ const stateFilterFixtures: DBFixture = { segment: 'test-unlabeled-obsolete', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-processing-suggestion-en', 'test_extractor', 'unlabeled-processing', @@ -1259,7 +1259,7 @@ const stateFilterFixtures: DBFixture = { segment: 'test-unlabeled-processing', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-processing-suggestion-es', 'test_extractor', 'unlabeled-processing', @@ -1274,7 +1274,7 @@ const stateFilterFixtures: DBFixture = { segment: 'test-unlabeled-processing', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-error-suggestion-en', 'test_extractor', 'unlabeled-error', @@ -1290,7 +1290,7 @@ const stateFilterFixtures: DBFixture = { error: 'some error happened', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unlabeled-error-suggestion-es', 'test_extractor', 'unlabeled-error', @@ -1306,7 +1306,7 @@ const stateFilterFixtures: DBFixture = { error: 'some error happened', } ), - factory.ixSuggestion( + factory.ixSuggestion_deprecated( 'unusedsuggestion', 'unused_extractor', 'unused', @@ -1320,6 +1320,15 @@ const stateFilterFixtures: DBFixture = { suggestedValue: 'test-unused', } ), + factory.ixSuggestion({ + extractorId: factory.id('unused_extractor'), + state: { + labeled: true, + match: true, + obsolete: true, + error: true, + }, + }), ], }; diff --git a/app/api/suggestions/specs/routes.spec.ts b/app/api/suggestions/specs/routes.spec.ts index 68b97b1756..e5d92fcc7c 100644 --- a/app/api/suggestions/specs/routes.spec.ts +++ b/app/api/suggestions/specs/routes.spec.ts @@ -208,36 +208,24 @@ describe('suggestions routes', () => { filter: { extractorId: factory.id('enemy_extractor').toString(), customFilter: { - labeled: { - match: false, - mismatch: false, - }, - nonLabeled: { - withSuggestion: false, - noSuggestion: true, - noContext: false, - obsolete: false, - others: false, - }, + labeled: true, + nonLabeled: false, + match: false, + mismatch: false, + obsolete: false, + error: false, }, }, }) .expect(200); expect(response.body.suggestions).toEqual([ expect.objectContaining({ - entityTitle: 'Catwoman', - state: { - labeled: false, - withValue: false, - withSuggestion: false, - match: false, - hasContext: true, - obsolete: false, - processing: false, - error: false, - }, - suggestedValue: '', - currentValue: '', + entityTitle: 'The Penguin', + language: 'en', + }), + expect.objectContaining({ + entityTitle: 'The Penguin', + language: 'es', }), ]); }); @@ -427,21 +415,15 @@ describe('aggregation routes', () => { extractorId: factory.id('test_extractor').toString(), }) .expect(200); + expect(response.body).toEqual({ - total: 12, - labeled: { - _count: 4, - match: 2, - mismatch: 2, - }, - nonLabeled: { - _count: 8, - withSuggestion: 6, - noSuggestion: 2, - noContext: 4, - obsolete: 2, - others: 2, - }, + total: 14, + labeled: 4, + nonLabeled: 10, + match: 4, + mismatch: 4, + obsolete: 4, + error: 2, }); }); }); diff --git a/app/api/suggestions/specs/suggestions.spec.ts b/app/api/suggestions/specs/suggestions.spec.ts index cd54b6124d..09ac72ccce 100644 --- a/app/api/suggestions/specs/suggestions.spec.ts +++ b/app/api/suggestions/specs/suggestions.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-statements */ import db from 'api/utils/testing_db'; import { @@ -6,6 +7,7 @@ import { IXSuggestionType, IXSuggestionsFilter, } from 'shared/types/suggestionType'; +import { ObjectId } from 'mongodb'; import { Suggestions } from '../suggestions'; import { factory, @@ -20,7 +22,6 @@ import { selectAcceptanceFixtureBase, relationshipAcceptanceFixtureBase, } from './fixtures'; -import { ObjectId } from 'mongodb'; const getSuggestions = async (filter: IXSuggestionsFilter, size = 5) => Suggestions.get(filter, { page: { size, number: 1 } }); diff --git a/app/api/suggestions/suggestions.ts b/app/api/suggestions/suggestions.ts index 05db7b7ab8..3f57f55fd7 100644 --- a/app/api/suggestions/suggestions.ts +++ b/app/api/suggestions/suggestions.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-lines */ import { ObjectId } from 'mongodb'; import { files } from 'api/files/files'; @@ -28,14 +29,11 @@ import { import { Extractors } from 'api/services/informationextraction/ixextractors'; import { registerEventListeners } from './eventListeners'; import { - baseQueryFragment, - filterFragments, getCurrentValueStage, getEntityStage, getFileStage, getLabeledValueStage, getMatchStage, - groupByAndCount, } from './pipelineStages'; import { postProcessCurrentValues, updateStates } from './updateState'; import { @@ -44,6 +42,8 @@ import { updateEntitiesWithSuggestion, } from './updateEntities'; +const DEFAULT_LIMIT = 30; + const updateExtractedMetadata = async ( suggestions: IXSuggestionType[], property: PropertySchema @@ -90,10 +90,12 @@ const buildListQuery = ( extractorId: ObjectId, customFilter: SuggestionCustomFilter | undefined, setLanguages: LanguagesListSchema | undefined, - offset: number, - limit: number, - sort?: IXSuggestionsQuery['sort'] + options: { page?: IXSuggestionsQuery['page']; sort?: IXSuggestionsQuery['sort'] } ) => { + const offset = options && options.page ? options.page.size * (options.page.number - 1) : 0; + const limit = options.page?.size || DEFAULT_LIMIT; + const { sort } = options; + const sortOrder = sort?.order === 'desc' ? -1 : 1; const sorting = sort?.property ? { [sort.property]: sortOrder } : { date: 1, state: -1 }; @@ -136,63 +138,6 @@ const buildListQuery = ( return pipeline; }; -async function getLabeledCounts(extractorId: ObjectId) { - const labeledAggregationQuery = [ - { - $match: { - ...baseQueryFragment(extractorId), - ...filterFragments.labeled._fragment, - }, - }, - ...groupByAndCount('$state.match'), - ]; - const labeledAggregation: { _id: boolean; count: number }[] = - await IXSuggestionsModel.db.aggregate(labeledAggregationQuery); - const matchCount = - labeledAggregation.find((aggregation: any) => aggregation._id === true)?.count || 0; - const mismatchCount = - labeledAggregation.find((aggregation: any) => aggregation._id === false)?.count || 0; - const labeledCount = matchCount + mismatchCount; - return { labeledCount, matchCount, mismatchCount }; -} - -const getNonLabeledCounts = async (_extractorId: ObjectId) => { - const extractorId = new ObjectId(_extractorId); - const unlabeledMatch = { - ...baseQueryFragment(extractorId), - ...filterFragments.nonLabeled._fragment, - }; - const nonLabeledCount = await IXSuggestionsModel.count(unlabeledMatch); - const noContextCount = await IXSuggestionsModel.count({ - ...unlabeledMatch, - ...filterFragments.nonLabeled.noContext, - }); - const withSuggestionCount = await IXSuggestionsModel.count({ - ...unlabeledMatch, - ...filterFragments.nonLabeled.withSuggestion, - }); - const noSuggestionCount = await IXSuggestionsModel.count({ - ...unlabeledMatch, - ...filterFragments.nonLabeled.noSuggestion, - }); - const obsoleteCount = await IXSuggestionsModel.count({ - ...unlabeledMatch, - ...filterFragments.nonLabeled.obsolete, - }); - const othersCount = await IXSuggestionsModel.count({ - ...unlabeledMatch, - ...filterFragments.nonLabeled.others, - }); - return { - nonLabeledCount, - noContextCount, - withSuggestionCount, - noSuggestionCount, - obsoleteCount, - othersCount, - }; -}; - const readFilter = (filter: IXSuggestionsFilter) => { const { customFilter, extractorId: _extractorId } = filter; const extractorId = new ObjectId(_extractorId); @@ -247,9 +192,6 @@ const Suggestions = { sort?: IXSuggestionsQuery['sort']; } ) => { - const offset = options && options.page ? options.page.size * (options.page.number - 1) : 0; - const DEFAULT_LIMIT = 30; - const limit = options.page?.size || DEFAULT_LIMIT; const { languages: setLanguages } = await settings.get(); const { customFilter, extractorId } = readFilter(filter); @@ -258,44 +200,78 @@ const Suggestions = { .then(result => (result?.length ? result[0].count : 0)); let suggestions = await IXSuggestionsModel.db.aggregate( - buildListQuery(extractorId, customFilter, setLanguages, offset, limit, options.sort) + buildListQuery(extractorId, customFilter, setLanguages, options) ); suggestions = await postProcessSuggestions(suggestions, extractorId); return { suggestions, - totalPages: Math.ceil(count / limit), + totalPages: Math.ceil(count / (options.page?.size || DEFAULT_LIMIT)), }; }, aggregate: async (_extractorId: ObjectIdSchema): Promise => { const extractorId = new ObjectId(_extractorId); - const { labeledCount, matchCount, mismatchCount } = await getLabeledCounts(extractorId); - const { - nonLabeledCount, - noContextCount, - withSuggestionCount, - noSuggestionCount, - obsoleteCount, - othersCount, - } = await getNonLabeledCounts(extractorId); - const totalCount = labeledCount + nonLabeledCount; - return { - total: totalCount, - labeled: { - _count: labeledCount, - match: matchCount, - mismatch: mismatchCount, - }, - nonLabeled: { - _count: nonLabeledCount, - noContext: noContextCount, - withSuggestion: withSuggestionCount, - noSuggestion: noSuggestionCount, - obsolete: obsoleteCount, - others: othersCount, - }, + + const aggregations: (IXSuggestionAggregation & { _id: ObjectId })[] = + await IXSuggestionsModel.db.aggregate([ + { + $match: { extractorId }, + }, + { + $group: { + _id: null, + total: { $sum: 1 }, + labeled: { $sum: { $cond: ['$state.labeled', 1, 0] } }, + nonLabeled: { + $sum: { + $cond: [ + { + $and: [ + { $ne: ['$state.labeled', undefined] }, + { $ne: ['$state.labeled', null] }, + { $not: '$state.labeled' }, + ], + }, + 1, + 0, + ], + }, + }, + match: { $sum: { $cond: ['$state.match', 1, 0] } }, + mismatch: { + $sum: { + $cond: [ + { + $and: [ + { $ne: ['$state.match', undefined] }, + { $ne: ['$state.match', null] }, + { $not: '$state.match' }, + ], + }, + 1, + 0, + ], + }, + }, + obsolete: { $sum: { $cond: ['$state.obsolete', 1, 0] } }, + error: { $sum: { $cond: ['$state.error', 1, 0] } }, + }, + }, + ]); + + const { _id, ...results } = aggregations[0] || { + _id: null, + total: 0, + labeled: 0, + nonLabeled: 0, + match: 0, + mismatch: 0, + obsolete: 0, + error: 0, }; + + return results; }, updateStates, diff --git a/app/api/suggestions/updateState.ts b/app/api/suggestions/updateState.ts index a352033ed0..f38f6886a6 100644 --- a/app/api/suggestions/updateState.ts +++ b/app/api/suggestions/updateState.ts @@ -109,6 +109,7 @@ export const postProcessCurrentValues = ( propertyType: PropertyTypeSchema ) => suggestions.map(s => postProcessCurrentValue(s, propertyType)); +// eslint-disable-next-line max-statements export const updateStates = async (query: any) => { const { languages } = await settings.get(); const propertyTypes = objectIndex( diff --git a/app/api/utils/fixturesFactory.ts b/app/api/utils/fixturesFactory.ts index a9495886c2..cb6e411490 100644 --- a/app/api/utils/fixturesFactory.ts +++ b/app/api/utils/fixturesFactory.ts @@ -2,7 +2,7 @@ import _ from 'lodash'; import { ObjectId } from 'mongodb'; -import db from 'api/utils/testing_db'; +import { testingDB } from 'api/utils/testing_db'; import { EntitySchema } from 'shared/types/entityType'; import { FileType } from 'shared/types/fileType'; import { UserRole } from 'shared/types/userSchema'; @@ -24,11 +24,15 @@ import { getV2FixturesFactoryElements } from 'api/common.v2/testing/fixturesFact import { IXModelType } from 'shared/types/IXModelType'; import { PermissionSchema } from 'shared/types/permissionType'; +type PartialSuggestion = Partial> & { + state?: Partial; +}; + function getIdMapper() { const map = new Map(); return function setAndGet(key: string) { - if (!map.has(key)) map.set(key, db.id() as ObjectId); + if (!map.has(key)) map.set(key, testingDB.id() as ObjectId); return map.get(key)!; }; @@ -196,7 +200,7 @@ function getFixturesFactory() { originalname: string | undefined = undefined, extractedMetadata: ExtractedMetadataSchema[] = [] ): WithId => ({ - _id: idMapper(`${id}`), + _id: idMapper(id), entity, language, type, @@ -314,7 +318,38 @@ function getFixturesFactory() { extractorId: idMapper(extractor), }), - ixSuggestion: ( + ixSuggestion(props: PartialSuggestion): IXSuggestionType { + const { state, ...otherProps } = props; + + return { + _id: testingDB.id(), + entityId: testingDB.id().toString(), + status: 'ready' as const, + entityTemplate: testingDB.id().toString(), + language: 'en', + fileId: testingDB.id().toString(), + propertyName: 'propertyName', + extractorId: testingDB.id(), + error: '', + segment: '', + suggestedValue: '', + date: 1001, + state: { + labeled: false, + withValue: true, + withSuggestion: false, + hasContext: false, + processing: false, + obsolete: false, + error: false, + ...state, + }, + ...otherProps, + }; + }, + + // eslint-disable-next-line max-params + ixSuggestion_deprecated: ( suggestionId: string, extractor: string, entity: string, @@ -339,10 +374,9 @@ function getFixturesFactory() { labeled: false, withValue: true, withSuggestion: false, - match: false, hasContext: false, - obsolete: false, processing: false, + obsolete: false, error: false, }, ...otherProps, diff --git a/app/react/App/styles/globals.css b/app/react/App/styles/globals.css index 960970b326..97deede448 100644 --- a/app/react/App/styles/globals.css +++ b/app/react/App/styles/globals.css @@ -1740,11 +1740,6 @@ input[type="range"]::-ms-fill-lower { margin-right: 0.5rem; } -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - .mx-auto { margin-left: auto; margin-right: auto; @@ -2444,12 +2439,6 @@ input[type="range"]::-ms-fill-lower { margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } -.space-y-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); -} - .space-y-3 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); @@ -2856,11 +2845,6 @@ input[type="range"]::-ms-fill-lower { background-color: rgb(222 247 236 / var(--tw-bg-opacity)); } -.bg-green-200 { - --tw-bg-opacity: 1; - background-color: rgb(188 240 218 / var(--tw-bg-opacity)); -} - .bg-green-400 { --tw-bg-opacity: 1; background-color: rgb(49 196 141 / var(--tw-bg-opacity)); @@ -3329,11 +3313,6 @@ input[type="range"]::-ms-fill-lower { color: rgb(209 213 219 / var(--tw-text-opacity)) !important; } -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)); -} - .text-blue-600 { --tw-text-opacity: 1; color: rgb(79 70 229 / var(--tw-text-opacity)); @@ -3344,6 +3323,11 @@ input[type="range"]::-ms-fill-lower { color: rgb(55 48 163 / var(--tw-text-opacity)); } +.text-error-500 { + --tw-text-opacity: 1; + color: rgb(236 72 153 / var(--tw-text-opacity)); +} + .text-error-600 { --tw-text-opacity: 1; color: rgb(219 39 119 / var(--tw-text-opacity)); diff --git a/app/react/DocumentForm/components/FormGroup.js b/app/react/DocumentForm/components/FormGroup.js index df56f9b9aa..35e5aa17e5 100644 --- a/app/react/DocumentForm/components/FormGroup.js +++ b/app/react/DocumentForm/components/FormGroup.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; const FormGroup = props => { - let className = `${props.className} form-group`; + let className = `${props.className || ''} form-group`; if ((!props.pristine || props.submitFailed) && props.valid === false) { className += ' has-error'; } @@ -12,10 +12,6 @@ const FormGroup = props => { const childrenType = PropTypes.oneOfType([PropTypes.object, PropTypes.array]); -FormGroup.defaultProps = { - className: '', -}; - FormGroup.propTypes = { className: PropTypes.string, pristine: PropTypes.bool, diff --git a/app/react/Documents/components/SnippetList.js b/app/react/Documents/components/SnippetList.js index 9e2e18e274..eef61cb1b3 100644 --- a/app/react/Documents/components/SnippetList.js +++ b/app/react/Documents/components/SnippetList.js @@ -9,7 +9,7 @@ import SafeHTML from 'app/utils/SafeHTML'; import getFieldLabel from 'app/Templates/utils/getFieldLabel'; import Immutable from 'immutable'; -const MetadataFieldSnippets = ({ fieldSnippets, documentViewUrl, template, searchTerm }) => ( +const MetadataFieldSnippets = ({ fieldSnippets, documentViewUrl, template, searchTerm = '' }) => ( <>
  • @@ -26,10 +26,6 @@ const MetadataFieldSnippets = ({ fieldSnippets, documentViewUrl, template, searc ); -MetadataFieldSnippets.defaultProps = { - searchTerm: '', -}; - MetadataFieldSnippets.propTypes = { fieldSnippets: PropTypes.instanceOf(Immutable.Map).isRequired, documentViewUrl: PropTypes.string.isRequired, @@ -39,10 +35,6 @@ MetadataFieldSnippets.propTypes = { }), }; -MetadataFieldSnippets.defaultProps = { - template: undefined, -}; - const DocumentContentSnippets = ({ selectSnippet, documentSnippets, @@ -132,10 +124,6 @@ SnippetList.propTypes = { }), }; -SnippetList.defaultProps = { - template: undefined, -}; - const mapStateToProps = (state, ownProps) => ({ template: state.templates.find(tmpl => tmpl.get('_id') === ownProps.doc.get('template')), selectedSnippet: state.documentViewer.uiState.get('snippet'), diff --git a/app/react/Documents/components/TocForm.js b/app/react/Documents/components/TocForm.js index fd1432aa67..e35150f2ef 100644 --- a/app/react/Documents/components/TocForm.js +++ b/app/react/Documents/components/TocForm.js @@ -18,7 +18,7 @@ export class TocForm extends Component { ); return ( ); } diff --git a/app/react/Layout/BackButton.js b/app/react/Layout/BackButton.js index 5c01098a04..b9c0e1fccb 100644 --- a/app/react/Layout/BackButton.js +++ b/app/react/Layout/BackButton.js @@ -6,7 +6,7 @@ import { I18NLink, t } from 'app/I18N'; const BackButton = ({ to, className }) => ( - + {t('System', 'Back')} ); diff --git a/app/react/Layout/CurrentLocationLink.js b/app/react/Layout/CurrentLocationLink.js index 8daed3ed15..c79893e946 100644 --- a/app/react/Layout/CurrentLocationLink.js +++ b/app/react/Layout/CurrentLocationLink.js @@ -7,7 +7,7 @@ const validProps = props => { return valid; }; -const CurrentLocationLink = ({ children, queryParams, ...otherProps }) => { +const CurrentLocationLink = ({ children, queryParams = {}, ...otherProps }) => { const location = useLocation(); const query = new URLSearchParams(location.search); Object.keys(queryParams).forEach(key => { @@ -27,11 +27,6 @@ const CurrentLocationLink = ({ children, queryParams, ...otherProps }) => { ); }; -CurrentLocationLink.defaultProps = { - children: '', - queryParams: {}, -}; - CurrentLocationLink.propTypes = { children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), queryParams: PropTypes.object, // eslint-disable-line react/forbid-prop-types diff --git a/app/react/Layout/Lists.js b/app/react/Layout/Lists.js index 697ee155ce..dfabb1cf03 100644 --- a/app/react/Layout/Lists.js +++ b/app/react/Layout/Lists.js @@ -60,7 +60,7 @@ const ItemLabel = ({ children, status }) => { ItemFooter.Label = ItemLabel; ItemFooter.ProgressBar = ProgressBar; -const RowList = ({ children, zoomLevel }) => ( +const RowList = ({ children, zoomLevel = 0 }) => (
    {children}
    ); @@ -99,11 +99,6 @@ const childrenType = PropTypes.oneOfType([PropTypes.object, PropTypes.array, Pro List.propTypes = { children: childrenType }; -RowList.defaultProps = { - children: '', - zoomLevel: 0, -}; - RowList.propTypes = { children: childrenType, zoomLevel: PropTypes.number, diff --git a/app/react/Layout/Tip.js b/app/react/Layout/Tip.js index e7c04f04b8..9841f2dfae 100644 --- a/app/react/Layout/Tip.js +++ b/app/react/Layout/Tip.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import { Icon } from 'UI'; -const Tip = ({ children, icon, position }) => { +const Tip = ({ children, icon = 'question-circle', position = '' }) => { const className = position ? `property-description-${position}` : 'property-description'; return ( @@ -12,11 +12,6 @@ const Tip = ({ children, icon, position }) => { ); }; -Tip.defaultProps = { - icon: 'question-circle', - position: '', -}; - Tip.propTypes = { children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired, icon: PropTypes.string, diff --git a/app/react/Layout/specs/__snapshots__/BackButton.spec.js.snap b/app/react/Layout/specs/__snapshots__/BackButton.spec.js.snap index 42efff2ecd..aec210e42c 100644 --- a/app/react/Layout/specs/__snapshots__/BackButton.spec.js.snap +++ b/app/react/Layout/specs/__snapshots__/BackButton.spec.js.snap @@ -6,7 +6,6 @@ exports[`Icon should render the back button to the provided url 1`] = ` to="/some/url" > ( +const DateFilter = ({ onChange = () => {}, model, label = '', format = '' }) => (
    • @@ -13,12 +13,6 @@ const DateFilter = ({ onChange, model, label, format }) => (
    ); -DateFilter.defaultProps = { - onChange: () => {}, - label: '', - format: '', -}; - DateFilter.propTypes = { model: PropTypes.string.isRequired, format: PropTypes.string, diff --git a/app/react/Library/components/FiltersFromProperties.js b/app/react/Library/components/FiltersFromProperties.js index c26dea95b2..d15afe17aa 100644 --- a/app/react/Library/components/FiltersFromProperties.js +++ b/app/react/Library/components/FiltersFromProperties.js @@ -92,12 +92,13 @@ const getPropertyType = (property, templates) => { }; const FiltersFromProperties = ({ - onChange, + onChange = () => {}, properties, - translationContext, + translationContext = '', modelPrefix = '', storeKey, templates, + dateFormat = '', ...props }) => { const location = useLocation(); @@ -152,7 +153,7 @@ const FiltersFromProperties = ({ case 'multidate': case 'multidaterange': case 'daterange': - filter = ; + filter = ; break; default: @@ -165,13 +166,6 @@ const FiltersFromProperties = ({ ); }; -FiltersFromProperties.defaultProps = { - onChange: () => {}, - dateFormat: '', - modelPrefix: '', - translationContext: '', -}; - FiltersFromProperties.propTypes = { templates: PropTypes.instanceOf(Array).isRequired, onChange: PropTypes.func, diff --git a/app/react/Library/components/SelectFilter.js b/app/react/Library/components/SelectFilter.js index 5e9d89f2c1..bf5fc1bfaf 100644 --- a/app/react/Library/components/SelectFilter.js +++ b/app/react/Library/components/SelectFilter.js @@ -4,16 +4,16 @@ import React from 'react'; import { LookupMultiSelect, Switcher } from 'app/ReactReduxForms'; const SelectFilter = ({ - onChange, + onChange = () => {}, model, - label, - options, - prefix, - showBoolSwitch, - sort, - lookup, - totalPossibleOptions, - allowSelectGroup, + label = '', + options = [], + prefix = '', + showBoolSwitch = false, + sort = false, + lookup = null, + totalPossibleOptions = 0, + allowSelectGroup = false, }) => (
    • @@ -35,18 +35,6 @@ const SelectFilter = ({
    ); -SelectFilter.defaultProps = { - onChange: () => {}, - label: '', - prefix: '', - showBoolSwitch: false, - sort: false, - options: [], - lookup: null, - totalPossibleOptions: 0, - allowSelectGroup: false, -}; - SelectFilter.propTypes = { model: PropTypes.string.isRequired, onChange: PropTypes.func, diff --git a/app/react/Library/components/ViewDocButton.js b/app/react/Library/components/ViewDocButton.js index e765ee592d..6398b7625e 100644 --- a/app/react/Library/components/ViewDocButton.js +++ b/app/react/Library/components/ViewDocButton.js @@ -56,7 +56,7 @@ export class ViewDocButton extends Component { className="btn btn-default btn-xs view-doc" onClick={this.onClick} > - View + View
    ); } diff --git a/app/react/Library/components/specs/__snapshots__/ViewDocButton.spec.js.snap b/app/react/Library/components/specs/__snapshots__/ViewDocButton.spec.js.snap index 492da270c6..25ed0339e7 100644 --- a/app/react/Library/components/specs/__snapshots__/ViewDocButton.spec.js.snap +++ b/app/react/Library/components/specs/__snapshots__/ViewDocButton.spec.js.snap @@ -7,7 +7,6 @@ exports[`ViewDocButton should render a view button poiting to the doc url with t to="/entity/123" > @@ -24,7 +23,6 @@ exports[`ViewDocButton should render a view button poiting to the doc url with t to="/entity/123?searchTerm=something" > @@ -41,7 +39,6 @@ exports[`ViewDocButton when targetReference is provided should render view butto to="/entity/123?ref=ref1" > @@ -58,7 +55,6 @@ exports[`ViewDocButton when targetReference is provided should render view butto to="/entity/123?searchTerm=something&ref=ref1" > diff --git a/app/react/Metadata/components/Metadata.js b/app/react/Metadata/components/Metadata.js index 18c7d1998f..0141246758 100644 --- a/app/react/Metadata/components/Metadata.js +++ b/app/react/Metadata/components/Metadata.js @@ -215,12 +215,12 @@ const flattenInherittedRelationships = metadata => const Metadata = ({ metadata, - compact, - showSubset, - highlight, - groupGeolocations, + compact = false, + showSubset = undefined, + highlight = [], + groupGeolocations = false, templateId, - useV2Player, + useV2Player = false, attachments, }) => { const filteredMetadata = metadata.filter(filterProps(showSubset)); @@ -263,14 +263,6 @@ const Metadata = ({ }); }; -Metadata.defaultProps = { - compact: false, - showSubset: undefined, - highlight: [], - groupGeolocations: false, - useV2Player: false, -}; - Metadata.propTypes = { metadata: PropTypes.arrayOf( PropTypes.shape({ diff --git a/app/react/Metadata/containers/FormatMetadata.js b/app/react/Metadata/containers/FormatMetadata.js index 5bd13577fd..1d4c9f2200 100644 --- a/app/react/Metadata/containers/FormatMetadata.js +++ b/app/react/Metadata/containers/FormatMetadata.js @@ -8,11 +8,12 @@ import Metadata from '../components/Metadata'; const removeUneededProps = ({ templates, thesauris, settings, excludePreview, ...rest }) => rest; const BaseFormatMetadata = ({ - additionalMetadata, - sortedProperty, + additionalMetadata = [], + sortedProperty = '', entity, - relationships, - useV2Player, + relationships = Immutable.fromJS([]), + useV2Player = false, + excludePreview = false, ...props }) => { const { attachments } = entity; @@ -21,7 +22,7 @@ const BaseFormatMetadata = ({ = ({ - semanticSearchActivated, + semanticSearchActivated = false, children, }: PropTypes) => semanticSearchActivated ? ( {children} ) : null; -FeatureToggleSemanticSearch.defaultProps = { - semanticSearchActivated: false, -}; - -export function mapStateToProps({ settings }: any) { +function mapStateToProps({ settings }: any) { const features = settings.collection.toJS().features || {}; return { semanticSearchActivated: features.semanticSearch, @@ -29,4 +25,4 @@ export function mapStateToProps({ settings }: any) { } const container = connect(mapStateToProps)(FeatureToggleSemanticSearch); -export { container as FeatureToggleSemanticSearch }; +export { container as FeatureToggleSemanticSearch, mapStateToProps }; diff --git a/app/react/SemanticSearch/components/specs/__snapshots__/SemanticSearchResults.spec.js.snap b/app/react/SemanticSearch/components/specs/__snapshots__/SemanticSearchResults.spec.js.snap index 459427a050..46235b5664 100644 --- a/app/react/SemanticSearch/components/specs/__snapshots__/SemanticSearchResults.spec.js.snap +++ b/app/react/SemanticSearch/components/specs/__snapshots__/SemanticSearchResults.spec.js.snap @@ -56,9 +56,7 @@ exports[`SemanticSearchResults should render results in ItemList 1`] = ` - + (
    - + Back diff --git a/app/react/Templates/components/MetadataTemplate.tsx b/app/react/Templates/components/MetadataTemplate.tsx index 6f743e468b..fd69005687 100644 --- a/app/react/Templates/components/MetadataTemplate.tsx +++ b/app/react/Templates/components/MetadataTemplate.tsx @@ -250,7 +250,7 @@ class MetadataTemplate extends Component {
    - + Back diff --git a/app/react/Templates/components/specs/__snapshots__/FormConfigMultimedia.spec.js.snap b/app/react/Templates/components/specs/__snapshots__/FormConfigMultimedia.spec.js.snap index 91d04b4ef5..0a7333779f 100644 --- a/app/react/Templates/components/specs/__snapshots__/FormConfigMultimedia.spec.js.snap +++ b/app/react/Templates/components/specs/__snapshots__/FormConfigMultimedia.spec.js.snap @@ -22,10 +22,7 @@ exports[`FormConfigMultimedia should allow excluding "required" 1`] = ` label="Hide label" model="template.data.properties[0].noLabel" > - + This property will be shown without the label. @@ -35,10 +32,7 @@ exports[`FormConfigMultimedia should allow excluding "required" 1`] = ` label="Full width" model="template.data.properties[0].fullWidth" > - + This property will be shown using all the width available. @@ -48,10 +42,7 @@ exports[`FormConfigMultimedia should allow excluding "required" 1`] = ` label="Show in cards" model="template.data.properties[0].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -142,10 +133,7 @@ exports[`FormConfigMultimedia should allow excluding "show in card" 1`] = ` label="Hide label" model="template.data.properties[0].noLabel" > - + This property will be shown without the label. @@ -155,10 +143,7 @@ exports[`FormConfigMultimedia should allow excluding "show in card" 1`] = ` label="Full width" model="template.data.properties[0].fullWidth" > - + This property will be shown using all the width available. @@ -168,10 +153,7 @@ exports[`FormConfigMultimedia should allow excluding "show in card" 1`] = ` label="Required property" model="template.data.properties[0].required" > - + @@ -264,10 +246,7 @@ exports[`FormConfigMultimedia should allow excluding "style" 1`] = ` label="Hide label" model="template.data.properties[0].noLabel" > - + This property will be shown without the label. @@ -277,10 +256,7 @@ exports[`FormConfigMultimedia should allow excluding "style" 1`] = ` label="Full width" model="template.data.properties[0].fullWidth" > - + This property will be shown using all the width available. @@ -290,10 +266,7 @@ exports[`FormConfigMultimedia should allow excluding "style" 1`] = ` label="Required property" model="template.data.properties[0].required" > - + @@ -305,10 +278,7 @@ exports[`FormConfigMultimedia should allow excluding "style" 1`] = ` label="Show in cards" model="template.data.properties[0].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -352,10 +322,7 @@ exports[`FormConfigMultimedia should allow setting a help text 1`] = ` label="Hide label" model="template.data.properties[0].noLabel" > - + This property will be shown without the label. @@ -365,10 +332,7 @@ exports[`FormConfigMultimedia should allow setting a help text 1`] = ` label="Full width" model="template.data.properties[0].fullWidth" > - + This property will be shown using all the width available. @@ -378,10 +342,7 @@ exports[`FormConfigMultimedia should allow setting a help text 1`] = ` label="Required property" model="template.data.properties[0].required" > - + @@ -393,10 +354,7 @@ exports[`FormConfigMultimedia should allow setting a help text 1`] = ` label="Show in cards" model="template.data.properties[0].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -487,10 +445,7 @@ exports[`FormConfigMultimedia should hold show label, show in card and select ca label="Hide label" model="template.data.properties[0].noLabel" > - + This property will be shown without the label. @@ -500,10 +455,7 @@ exports[`FormConfigMultimedia should hold show label, show in card and select ca label="Full width" model="template.data.properties[0].fullWidth" > - + This property will be shown using all the width available. @@ -513,10 +465,7 @@ exports[`FormConfigMultimedia should hold show label, show in card and select ca label="Required property" model="template.data.properties[0].required" > - + @@ -528,10 +477,7 @@ exports[`FormConfigMultimedia should hold show label, show in card and select ca label="Show in cards" model="template.data.properties[0].showInCard" > - + This property will appear in the library cards as part of the basic info. diff --git a/app/react/Templates/components/specs/__snapshots__/PropertyConfigOptions.spec.js.snap b/app/react/Templates/components/specs/__snapshots__/PropertyConfigOptions.spec.js.snap index e630703162..7d57176247 100644 --- a/app/react/Templates/components/specs/__snapshots__/PropertyConfigOptions.spec.js.snap +++ b/app/react/Templates/components/specs/__snapshots__/PropertyConfigOptions.spec.js.snap @@ -6,10 +6,7 @@ exports[`PropertyConfigOptions Additional options should allow to exclude the "u label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -19,10 +16,7 @@ exports[`PropertyConfigOptions Additional options should allow to exclude the "u label="Required property" model="template.data.properties[2].required" > - + @@ -34,10 +28,7 @@ exports[`PropertyConfigOptions Additional options should allow to exclude the "u label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -55,10 +46,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -68,10 +56,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Required property" model="template.data.properties[2].required" > - + @@ -83,10 +68,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -99,10 +81,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Use as filter" model="template.data.properties[2].filter" > - + @@ -114,10 +93,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Default filter" model="template.data.properties[2].defaultfilter" > - + @@ -129,10 +105,7 @@ exports[`PropertyConfigOptions Once the property is checked as filter should ren label="Priority sorting" model="template.data.properties[2].prioritySorting" > - + @@ -153,10 +126,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -166,10 +136,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Required property" model="template.data.properties[2].required" > - + @@ -181,10 +148,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -197,10 +161,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Use as filter" model="template.data.properties[2].filter" > - + @@ -221,10 +182,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -234,10 +192,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Required property" model="template.data.properties[2].required" > - + @@ -249,10 +204,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -265,10 +217,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Use as filter" model="template.data.properties[2].filter" > - + @@ -289,10 +238,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -302,10 +248,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Required property" model="template.data.properties[2].required" > - + @@ -317,10 +260,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -333,10 +273,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Use as filter" model="template.data.properties[2].filter" > - + @@ -357,10 +294,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -370,10 +304,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Required property" model="template.data.properties[2].required" > - + @@ -385,10 +316,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -401,10 +329,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is n label="Use as filter" model="template.data.properties[2].filter" > - + @@ -425,10 +350,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -438,10 +360,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Required property" model="template.data.properties[2].required" > - + @@ -453,10 +372,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -469,10 +385,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Use as filter" model="template.data.properties[2].filter" > - + @@ -484,10 +397,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Default filter" model="template.data.properties[2].defaultfilter" > - + @@ -499,10 +409,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Priority sorting" model="template.data.properties[2].prioritySorting" > - + @@ -523,10 +430,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -536,10 +440,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Required property" model="template.data.properties[2].required" > - + @@ -551,10 +452,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -567,10 +465,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Use as filter" model="template.data.properties[2].filter" > - + @@ -582,10 +477,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Default filter" model="template.data.properties[2].defaultfilter" > - + @@ -597,10 +489,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Priority sorting" model="template.data.properties[2].prioritySorting" > - + @@ -621,10 +510,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -634,10 +520,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Required property" model="template.data.properties[2].required" > - + @@ -649,10 +532,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -665,10 +545,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Use as filter" model="template.data.properties[2].filter" > - + @@ -680,10 +557,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Default filter" model="template.data.properties[2].defaultfilter" > - + @@ -695,10 +569,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Priority sorting" model="template.data.properties[2].prioritySorting" > - + @@ -719,10 +590,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -732,10 +600,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Required property" model="template.data.properties[2].required" > - + @@ -747,10 +612,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -763,10 +625,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Use as filter" model="template.data.properties[2].filter" > - + @@ -778,10 +637,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Default filter" model="template.data.properties[2].defaultfilter" > - + @@ -793,10 +649,7 @@ exports[`PropertyConfigOptions priority sorting option when property filter is t label="Priority sorting" model="template.data.properties[2].prioritySorting" > - + @@ -817,10 +670,7 @@ exports[`PropertyConfigOptions should render fields with the correct datas 1`] = label="Hide label" model="template.data.properties[2].noLabel" > - + This property will be shown without the label. @@ -830,10 +680,7 @@ exports[`PropertyConfigOptions should render fields with the correct datas 1`] = label="Required property" model="template.data.properties[2].required" > - + @@ -845,10 +692,7 @@ exports[`PropertyConfigOptions should render fields with the correct datas 1`] = label="Show in cards" model="template.data.properties[2].showInCard" > - + This property will appear in the library cards as part of the basic info. @@ -861,10 +705,7 @@ exports[`PropertyConfigOptions should render fields with the correct datas 1`] = label="Use as filter" model="template.data.properties[2].filter" > - + diff --git a/app/react/UI/Icon/Icon.js b/app/react/UI/Icon/Icon.js index d207738e00..60548988f3 100644 --- a/app/react/UI/Icon/Icon.js +++ b/app/react/UI/Icon/Icon.js @@ -1,5 +1,3 @@ -/** @format */ - import PropTypes from 'prop-types'; import React from 'react'; import { connect } from 'react-redux'; @@ -10,21 +8,15 @@ import { loadIcons } from './library'; loadIcons(); -const Icon = ({ locale, directionAware, ...ownProps }) => { +const Icon = ({ locale = '', ...ownProps }) => { const languageData = languagesList.find(l => l.key === locale); return ( ); }; -Icon.defaultProps = { - locale: '', - directionAware: false, -}; - Icon.propTypes = { locale: PropTypes.string, - directionAware: PropTypes.bool, }; export const mapStateToProps = ({ locale }) => ({ locale }); diff --git a/app/react/UI/Icon/specs/Icon.spec.js b/app/react/UI/Icon/specs/Icon.spec.js index 3c54c5b315..5d557d6a64 100644 --- a/app/react/UI/Icon/specs/Icon.spec.js +++ b/app/react/UI/Icon/specs/Icon.spec.js @@ -18,11 +18,11 @@ describe('Icon', () => { }); it('should allow configuring the icon as directionAware', () => { - props = { icon: 'angle-left', directionAware: true, locale: 'es' }; + props = { icon: 'angle-left', locale: 'es' }; render(); expect(component).toMatchSnapshot(); - props = { icon: 'angle-left', directionAware: true, locale: 'ar' }; + props = { icon: 'angle-left', locale: 'ar' }; render(); expect(component).toMatchSnapshot(); }); diff --git a/app/react/V2/Routes/Settings/IX/IXSuggestions.tsx b/app/react/V2/Routes/Settings/IX/IXSuggestions.tsx index a8029adba7..ccd9f409f3 100644 --- a/app/react/V2/Routes/Settings/IX/IXSuggestions.tsx +++ b/app/react/V2/Routes/Settings/IX/IXSuggestions.tsx @@ -24,7 +24,7 @@ import { ClientPropertySchema, ClientTemplateSchema } from 'app/istore'; import { notificationAtom } from 'app/V2/atoms'; import { socket } from 'app/socket'; import { SuggestionsTitle } from './components/SuggestionsTitle'; -import { FiltersSidepanel } from './components/FiltersSidepanel.old'; +import { FiltersSidepanel } from './components/FiltersSidepanel'; import { suggestionsTableColumnsBuilder } from './components/TableElements'; import { PDFSidepanel } from './components/PDFSidepanel'; import { @@ -112,6 +112,7 @@ const IXSuggestions = () => { const [sidepanelSuggestion, setSidepanelSuggestion] = useState(); const [selected, setSelected] = useState([]); const [sorting, setSorting] = useState([]); + const [aggregations, setAggregations] = useState(aggregation); const { revalidate } = useRevalidator(); const setNotifications = useSetAtom(notificationAtom); const [status, setStatus] = useState<{ @@ -139,6 +140,10 @@ const IXSuggestions = () => { }; }, [extractor._id, revalidate]); + useEffect(() => { + setAggregations(aggregation); + }, [aggregation]); + useEffect(() => { if (searchParams.has('sort') && !sorting.length) { navigate(location.pathname, { replace: true }); @@ -187,6 +192,8 @@ const IXSuggestions = () => { }); await suggestionsAPI.accept(preparedSuggestions); + const newAggregations = await suggestionsAPI.aggregation(extractor._id); + setAggregations(newAggregations); setCurrentSuggestions(current => updateSuggestions(current, acceptedSuggestions)); setNotifications({ type: 'success', @@ -272,7 +279,7 @@ const IXSuggestions = () => {
    @@ -353,7 +360,7 @@ const IXSuggestions = () => { >; - aggregation: any; -} - -const Header = ({ label, total }: { label: string; total: number }) => ( -
    -
    {label}
    -
    -
    {total}
    -
    -); - -const getPercentage = (match: number, total: number): string => { - const percentage = (match / total) * 100; - - if (Number.isNaN(percentage)) { - return '-'; - } - - return `${Math.round(percentage)}%`; -}; - -const FiltersSidepanel = ({ - showSidepanel, - setShowSidepanel, - aggregation, -}: FiltersSidepanelProps) => { - const [searchParams, setSearchParams] = useSearchParams(); - - const defaultFilter: SuggestionCustomFilter = { - labeled: { - match: false, - mismatch: false, - }, - nonLabeled: { - noContext: false, - withSuggestion: false, - noSuggestion: false, - obsolete: false, - others: false, - }, - }; - - let initialFilters: SuggestionCustomFilter = defaultFilter; - - try { - if (searchParams.has('filter')) { - initialFilters = JSON.parse(searchParams.get('filter')!); - } - } catch (e) {} - - const { register, handleSubmit, reset, setValue } = useForm({ - values: initialFilters, - defaultValues: defaultFilter, - }); - - const submitFilters = async (filters: SuggestionCustomFilter) => { - setSearchParams((prev: URLSearchParams) => { - prev.set('page', '1'); - prev.set('filter', JSON.stringify(filters)); - return prev; - }); - setShowSidepanel(false); - }; - - const checkOption = (e: any, optionName: any) => { - const { checked } = e.target; - setValue(optionName, checked); - }; - - const clearFilters = () => { - setSearchParams(prev => { - prev.delete('filter'); - return prev; - }); - setShowSidepanel(false); - reset(); - }; - - return ( - setShowSidepanel(false)} - title={ - - Stats & Filters - - } - > -
    - - } - > -
    -
    -
    - Accuracy -
    -
    -
    - {getPercentage(aggregation.labeled.match, aggregation.labeled._count)} -
    -
    -
    - { - checkOption(e, 'labeled.match'); - }} - /> -
    -
    {aggregation.labeled.match}
    -
    -
    - { - checkOption(e, 'labeled.mismatch'); - }} - /> -
    -
    {aggregation.labeled.mismatch}
    -
    -
    - - - } - > -
    -
    -
    - Pending -
    -
    -
    - {getPercentage(aggregation.nonLabeled._count, aggregation.total)} -
    -
    -
    - With suggestion} - {...register('nonLabeled.withSuggestion')} - onChange={e => { - checkOption(e, 'nonLabeled.withSuggestion'); - }} - /> -
    -
    {aggregation.nonLabeled.withSuggestion}
    -
    -
    - No suggestion} - {...register('nonLabeled.noSuggestion')} - onChange={e => { - checkOption(e, 'nonLabeled.noSuggestion'); - }} - /> -
    -
    {aggregation.nonLabeled.noSuggestion}
    -
    -
    - No context} - {...register('nonLabeled.noContext')} - onChange={e => { - checkOption(e, 'nonLabeled.noContext'); - }} - /> -
    -
    {aggregation.nonLabeled.noContext}
    -
    -
    - Obsolete} - {...register('nonLabeled.obsolete')} - onChange={e => { - checkOption(e, 'nonLabeled.obsolete'); - }} - /> -
    -
    {aggregation.nonLabeled.obsolete}
    -
    -
    - Others} - {...register('nonLabeled.others')} - onChange={e => { - checkOption(e, 'nonLabeled.others'); - }} - /> -
    -
    {aggregation.nonLabeled.others}
    -
    -
    - - - -
    - - -
    -
    - - - ); -}; - -export { FiltersSidepanel }; diff --git a/app/react/V2/Routes/Settings/IX/components/FiltersSidepanel.tsx b/app/react/V2/Routes/Settings/IX/components/FiltersSidepanel.tsx index f03ad2d8e5..8f96df6399 100644 --- a/app/react/V2/Routes/Settings/IX/components/FiltersSidepanel.tsx +++ b/app/react/V2/Routes/Settings/IX/components/FiltersSidepanel.tsx @@ -89,13 +89,6 @@ const FiltersSidepanel = ({
    -
    -
    - Accuracy (labeled data) -
    -
    -
    {aggregation.accuracy}%
    -
    Labeled} diff --git a/app/react/V2/Routes/Settings/IX/components/TableElements.tsx b/app/react/V2/Routes/Settings/IX/components/TableElements.tsx index 8cf3714660..ff249a3d71 100644 --- a/app/react/V2/Routes/Settings/IX/components/TableElements.tsx +++ b/app/react/V2/Routes/Settings/IX/components/TableElements.tsx @@ -77,6 +77,44 @@ const PropertyCell = ({ cell }: CellContext { + const suggestions = suggestion.subRows; + const ammountOfSuggestions = suggestions.length; + const amountOfValues = suggestions.filter(s => s.currentValue).length; + const amountOfMatches = suggestions.filter(s => s.currentValue === s.suggestedValue).length; + const amountOfMissmatches = ammountOfSuggestions - amountOfMatches; + + return ( +
    + + {amountOfValues} values + + | + + {ammountOfSuggestions} suggestions + + {amountOfMatches > 0 && ( + <> + | + + {amountOfMatches}{' '} + matching + + + )} + {amountOfMissmatches > 0 && ( + <> + | + + {amountOfMissmatches}{' '} + mismatching + + + )} +
    + ); +}; + const CurrentValueCell = ({ cell, allProperties, @@ -87,43 +125,29 @@ const CurrentValueCell = ({ >; allProperties: ClientPropertySchema[]; }) => { - if ('subRows' in cell.row.original) { - const suggestions = cell.row.original.subRows; - const ammountOfSuggestions = suggestions.length; - const amountOfValues = suggestions.filter(suggestion => suggestion.currentValue).length; - const amountOfMatches = suggestions.filter(s => s.currentValue === s.suggestedValue).length; - const amountOfMissmatches = ammountOfSuggestions - amountOfMatches; - + if (cell.row.original.state.obsolete) { return (
    - {amountOfValues} values + Obsolete - | +
    + ); + } + + if (cell.row.original.state.error) { + return ( +
    - {ammountOfSuggestions} suggestions + Error - {amountOfMatches > 0 && ( - <> - | - - {amountOfMatches}{' '} - matching - - - )} - {amountOfMissmatches > 0 && ( - <> - | - - {amountOfMissmatches}{' '} - mismatching - - - )}
    ); } + + if ('subRows' in cell.row.original) { + return ; + } return ( ({ rel: page === pageToDisable ? 'nofollow' : undefined, }); -const Paginator = ({ page, totalPages, onPageChange }) => { +const Paginator = ({ page = 1, totalPages = 1, onPageChange = () => {} }) => { const prevPage = page - 1 || 1; const nextPage = page + 1 > totalPages ? totalPages : page + 1; return ( @@ -41,12 +41,6 @@ const Paginator = ({ page, totalPages, onPageChange }) => { ); }; -Paginator.defaultProps = { - page: 1, - totalPages: 1, - onPageChange: () => {}, -}; - Paginator.propTypes = { page: PropTypes.number, totalPages: PropTypes.number, diff --git a/app/react/Viewer/components/specs/__snapshots__/Paginator.spec.js.snap b/app/react/Viewer/components/specs/__snapshots__/Paginator.spec.js.snap index 641c92f287..91de2eb172 100644 --- a/app/react/Viewer/components/specs/__snapshots__/Paginator.spec.js.snap +++ b/app/react/Viewer/components/specs/__snapshots__/Paginator.spec.js.snap @@ -19,7 +19,6 @@ exports[`Paginator should render a previous button and next button based on the > @@ -132,7 +131,6 @@ exports[`Paginator when base Url already has the query string "?" should add the > @@ -245,7 +243,6 @@ exports[`Paginator when on first page should disable the prev link 1`] = ` > @@ -361,7 +358,6 @@ exports[`Paginator when on last page should disable the next link 1`] = ` > diff --git a/app/react/components/Elements/FeatureToggle.tsx b/app/react/components/Elements/FeatureToggle.tsx index 4171bda373..a3c2e3c5d2 100644 --- a/app/react/components/Elements/FeatureToggle.tsx +++ b/app/react/components/Elements/FeatureToggle.tsx @@ -11,14 +11,10 @@ type OwnPropTypes = { }; const FeatureToggle: React.FC = ({ - featureActivated, + featureActivated = false, children, }: ComponentPropTypes) => (featureActivated ? <>{children} : null); -FeatureToggle.defaultProps = { - featureActivated: false, -}; - function mapStateToProps({ settings }: any, ownProps: OwnPropTypes) { const features = settings.collection.get('features'); diff --git a/app/shared/getIXSuggestionState.ts b/app/shared/getIXSuggestionState.ts index bac8f4ff5c..e45dfa2b34 100644 --- a/app/shared/getIXSuggestionState.ts +++ b/app/shared/getIXSuggestionState.ts @@ -46,7 +46,7 @@ class IXSuggestionState implements IXSuggestionStateType { withSuggestion = false; - match = false; + match: boolean | undefined; hasContext = false; @@ -104,9 +104,13 @@ class IXSuggestionState implements IXSuggestionStateType { ) { const equals = equalsForType(propertyType); - if (suggestedValue === '' || (Array.isArray(suggestedValue) && suggestedValue.length === 0)) { - this.match = false; - } else if (equals(suggestedValue, currentValue)) { + this.match = false; + + if ( + suggestedValue !== '' && + (!Array.isArray(suggestedValue) || suggestedValue.length !== 0) && + equals(suggestedValue, currentValue) + ) { this.match = true; } } @@ -124,18 +128,22 @@ class IXSuggestionState implements IXSuggestionStateType { setObsolete({ modelCreationDate, date }: SuggestionValues) { if (date < modelCreationDate) { this.obsolete = true; + this.match = undefined; } } setProcessing({ status }: SuggestionValues) { if (status === 'processing') { this.processing = true; + this.obsolete = true; + this.match = undefined; } } setError({ error, status }: SuggestionValues) { if ((error && error !== '') || (status && status === 'failed')) { this.error = true; + this.match = undefined; } } } diff --git a/app/shared/specs/getIXSuggestionState.spec.ts b/app/shared/specs/getIXSuggestionState.spec.ts index d0b73915be..1cf06008bc 100644 --- a/app/shared/specs/getIXSuggestionState.spec.ts +++ b/app/shared/specs/getIXSuggestionState.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-statements */ import { getSuggestionState, SuggestionValues } from '../getIXSuggestionState'; describe('getIXSuggestionState', () => { @@ -86,7 +87,7 @@ describe('getIXSuggestionState', () => { labeled: false, withValue: true, withSuggestion: false, - match: false, + match: undefined, hasContext: false, obsolete: false, processing: false, @@ -140,7 +141,7 @@ describe('getIXSuggestionState', () => { }); }); - it('should mark when currentValue != suggestedValue, labeledValue are empty', () => { + it('should mark when currentValue != suggestedValue, labeledValue is empty', () => { const values = { currentValue: 'some other value', date: 1234, @@ -224,12 +225,36 @@ describe('getIXSuggestionState', () => { labeled: false, withValue: false, withSuggestion: true, - match: false, + match: undefined, hasContext: false, obsolete: true, processing: false, error: false, }); }); + + it('should mark processing when status is processing and set obsolete as true', () => { + const values = { + currentValue: '', + date: 1234, + labeledValue: '', + suggestedValue: 'some value', + modelCreationDate: 1, + status: 'processing', + }; + + const state = getSuggestionState(values, 'text'); + + expect(state).toEqual({ + labeled: false, + withValue: false, + withSuggestion: true, + match: undefined, + hasContext: false, + obsolete: true, + processing: true, + error: false, + }); + }); }); }); diff --git a/app/shared/types/suggestionSchema.ts b/app/shared/types/suggestionSchema.ts index 8a0f80f393..e0ce40cf38 100644 --- a/app/shared/types/suggestionSchema.ts +++ b/app/shared/types/suggestionSchema.ts @@ -1,3 +1,4 @@ +/* eslint-disable max-lines */ import { objectIdSchema, propertyValueSchema, @@ -5,14 +6,14 @@ import { } from 'shared/types/commonSchemas'; import { propertyTypes } from 'shared/propertyTypes'; -export const emitSchemaTypes = true; - const commonSuggestionMessageProperties = { tenant: { type: 'string', minLength: 1 }, id: { type: 'string', minLength: 1 }, xml_file_name: { type: 'string', minLength: 1 }, }; +export const emitSchemaTypes = true; + export const CommonSuggestionSchema = { type: 'object', title: 'CommonSuggestion', @@ -88,10 +89,9 @@ export const IXSuggestionStateSchema = { 'labeled', 'withValue', 'withSuggestion', - 'match', 'hasContext', - 'obsolete', 'processing', + 'obsolete', 'error', ], }; @@ -204,29 +204,14 @@ export const SuggestionCustomFilterSchema = { title: 'SuggestionCustomFilter', additionalProperties: false, properties: { - labeled: { - type: 'object', - properties: { - match: { type: 'boolean' }, - mismatch: { type: 'boolean' }, - }, - additionalProperties: false, - required: ['match', 'mismatch'], - }, - nonLabeled: { - type: 'object', - properties: { - withSuggestion: { type: 'boolean' }, - noSuggestion: { type: 'boolean' }, - noContext: { type: 'boolean' }, - obsolete: { type: 'boolean' }, - others: { type: 'boolean' }, - }, - additionalProperties: false, - required: ['withSuggestion', 'noSuggestion', 'noContext', 'obsolete', 'others'], - }, + labeled: { type: 'boolean' }, + match: { type: 'boolean' }, + mismatch: { type: 'boolean' }, + nonLabeled: { type: 'boolean' }, + obsolete: { type: 'boolean' }, + error: { type: 'boolean' }, }, - required: ['labeled', 'nonLabeled'], + required: ['labeled', 'nonLabeled', 'match', 'mismatch', 'obsolete', 'error'], }; export const SuggestionsQueryFilterSchema = { @@ -285,31 +270,14 @@ export const IXSuggestionAggregationSchema = { type: 'object', title: 'IXSuggestionAggregation', additionalProperties: false, - required: ['labeled', 'nonLabeled', 'total'], + required: ['total', 'labeled', 'nonLabeled', 'match', 'mismatch', 'obsolete', 'error'], properties: { total: { type: 'number' }, - labeled: { - type: 'object', - additionalProperties: false, - required: ['_count', 'match', 'mismatch'], - properties: { - _count: { type: 'number' }, - match: { type: 'number' }, - mismatch: { type: 'number' }, - }, - }, - nonLabeled: { - type: 'object', - additionalProperties: false, - required: ['_count', 'withSuggestion', 'noSuggestion', 'noContext', 'obsolete', 'others'], - properties: { - _count: { type: 'number' }, - withSuggestion: { type: 'number' }, - noSuggestion: { type: 'number' }, - noContext: { type: 'number' }, - obsolete: { type: 'number' }, - others: { type: 'number' }, - }, - }, + labeled: { type: 'number' }, + nonLabeled: { type: 'number' }, + match: { type: 'number' }, + mismatch: { type: 'number' }, + obsolete: { type: 'number' }, + error: { type: 'number' }, }, }; diff --git a/app/shared/types/suggestionType.d.ts b/app/shared/types/suggestionType.d.ts index 504cb24983..be4626461a 100644 --- a/app/shared/types/suggestionType.d.ts +++ b/app/shared/types/suggestionType.d.ts @@ -47,19 +47,12 @@ export interface IXAggregationQuery { export interface IXSuggestionAggregation { total: number; - labeled: { - _count: number; - match: number; - mismatch: number; - }; - nonLabeled: { - _count: number; - withSuggestion: number; - noSuggestion: number; - noContext: number; - obsolete: number; - others: number; - }; + labeled: number; + nonLabeled: number; + match: number; + mismatch: number; + obsolete: number; + error: number; } export interface IXSuggestionType { @@ -91,7 +84,7 @@ export interface IXSuggestionStateType { labeled: boolean; withValue: boolean; withSuggestion: boolean; - match: boolean; + match?: boolean; hasContext: boolean; obsolete: boolean; processing: boolean; @@ -112,17 +105,12 @@ export interface IXSuggestionsQuery { } export interface SuggestionCustomFilter { - labeled: { - match: boolean; - mismatch: boolean; - }; - nonLabeled: { - withSuggestion: boolean; - noSuggestion: boolean; - noContext: boolean; - obsolete: boolean; - others: boolean; - }; + labeled: boolean; + match: boolean; + mismatch: boolean; + nonLabeled: boolean; + obsolete: boolean; + error: boolean; } export interface IXSuggestionsFilter { diff --git a/contents/ui-translations/ar.csv b/contents/ui-translations/ar.csv index 0e1dfd6608..26694581e5 100644 --- a/contents/ui-translations/ar.csv +++ b/contents/ui-translations/ar.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,عمل/ إجراء Activate,Activate Activated,Activated @@ -957,7 +955,6 @@ Welcome to Uwazi,مرحباً بكم في أوازي will be updated with the same value.,سيحدث بالقيمة نفسها with,مع With great power comes great responsibility!,كلما ازدادت القوة، ازدادت معها المسؤولية! -With suggestion,With suggestion x less,X أقل x more,X أكثر Year,سنة diff --git a/contents/ui-translations/en.csv b/contents/ui-translations/en.csv index 9f39892291..e032c667de 100644 --- a/contents/ui-translations/en.csv +++ b/contents/ui-translations/en.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,Action Activate,Activate Activated,Activated @@ -960,7 +958,6 @@ Welcome to Uwazi,Welcome to Uwazi will be updated with the same value.,will be updated with the same value. with,with With great power comes great responsibility!,With great power comes great responsibility! -With suggestion,With suggestion x less,less x more,more Year,Year diff --git a/contents/ui-translations/es.csv b/contents/ui-translations/es.csv index 6ba6d9beac..4430fdb383 100644 --- a/contents/ui-translations/es.csv +++ b/contents/ui-translations/es.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Cuenta bloqueada. Revisa tu correo electrónico para desbloquearla. Account unlocked successfully,Cuenta desbloqueada satisfactoriamente Account updated,Account updated -Accuracy,Precisión -Accuracy (labeled data),Accuracy (labeled data) Action,Acción Activate,Activate Activated,Activated @@ -955,7 +953,6 @@ Welcome to Uwazi,Bienvenido a Uwazi will be updated with the same value.,se actualizará con el mismo valor with,con With great power comes great responsibility!,"¡Con un gran poder, viene una gran responsabilidad!" -With suggestion,With suggestion x less,menos x more,más Year,Año diff --git a/contents/ui-translations/fr.csv b/contents/ui-translations/fr.csv index 550f8525a9..f7ff8cd65d 100644 --- a/contents/ui-translations/fr.csv +++ b/contents/ui-translations/fr.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,Action Activate,Activate Activated,Activated @@ -957,7 +955,6 @@ Welcome to Uwazi,Bienvenue à Uwazi will be updated with the same value.,sera mis à jour avec la même valeur. with,avec With great power comes great responsibility!,De grands pouvoirs impliquent de grandes responsabilités ! -With suggestion,With suggestion x less,x en moins x more,x en plus Year,Année diff --git a/contents/ui-translations/ko.csv b/contents/ui-translations/ko.csv index 4f3b372d3e..dde1cc601e 100644 --- a/contents/ui-translations/ko.csv +++ b/contents/ui-translations/ko.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,활동 Activate,Activate Activated,Activated @@ -958,7 +956,6 @@ Welcome to Uwazi,Uwazi 에 오신 것을 환영합니다. will be updated with the same value.,동일 값으로 업데이트됩니다. with,with With great power comes great responsibility!,큰 일에는 큰 책임이 따르는 법! -With suggestion,With suggestion x less,덜 보기 x more,더 보기 Year,연도 diff --git a/contents/ui-translations/my.csv b/contents/ui-translations/my.csv index 2add7198d2..51c1e8fa7b 100644 --- a/contents/ui-translations/my.csv +++ b/contents/ui-translations/my.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,လုပ်ဆောင်ချက် Activate,Activate Activated,Activated @@ -958,7 +956,6 @@ Welcome to Uwazi,Uwazi မှ ကြိုဆိုပါသည် will be updated with the same value.,တူညီသော တန်ဖိုးဖြင့် အပ်ဒိတ်လုပ်ပါမည်။ with,ဖြင့် With great power comes great responsibility!,လုပ်ပိုင်ခွင့်ကြီးလျှင် တာဝန်ပိုကြီးသည်! -With suggestion,With suggestion x less,x လျော့ x more,x ပို Year,နှစ် diff --git a/contents/ui-translations/ru.csv b/contents/ui-translations/ru.csv index ddc4b7a716..33f9a84742 100644 --- a/contents/ui-translations/ru.csv +++ b/contents/ui-translations/ru.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,Действие Activate,Activate Activated,Activated @@ -955,7 +953,6 @@ Welcome to Uwazi,Добро пожаловать в Uwazi will be updated with the same value.,будет обновляться с тем же значением with,с With great power comes great responsibility!,С большой силой приходит большая ответственность! -With suggestion,With suggestion x less,x меньше x more,х больше Year,Год diff --git a/contents/ui-translations/th.csv b/contents/ui-translations/th.csv index 370829a7e5..beea2c4b79 100644 --- a/contents/ui-translations/th.csv +++ b/contents/ui-translations/th.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,เริ่มทำ Activate,Activate Activated,Activated @@ -958,7 +956,6 @@ Welcome to Uwazi,ยินดีต้อนรับสู่ Uwazi will be updated with the same value.,จะถูกอัปเดทด้วยค่าเดียวกัน with,กับ With great power comes great responsibility!,พลังที่ยิ่งใหญ่มากับความรับผิดชอบที่ใหญ่ยิ่ง! -With suggestion,With suggestion x less,ลดขนาดลง x more,เพิ่มขนาดขึ้น Year,ปี diff --git a/contents/ui-translations/tr.csv b/contents/ui-translations/tr.csv index 8839cbc6a7..aa491c5dd3 100644 --- a/contents/ui-translations/tr.csv +++ b/contents/ui-translations/tr.csv @@ -14,8 +14,6 @@ Account locked,Account locked Account locked. Check your email to unlock.,Account locked. Check your email to unlock. Account unlocked successfully,Account unlocked successfully Account updated,Account updated -Accuracy,Accuracy -Accuracy (labeled data),Accuracy (labeled data) Action,Eylem Activate,Activate Activated,Activated @@ -958,7 +956,6 @@ Welcome to Uwazi,Uwazi'ye hoş geldiniz will be updated with the same value.,aynı değerle güncellenecektir. with,ile With great power comes great responsibility!,Büyük güç büyük sorumluluk getirir! -With suggestion,With suggestion x less,daha az x more,daha az Year,Yıl diff --git a/package.json b/package.json index cc8ca627d7..57fc91909c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uwazi", - "version": "1.189.0-rc9", + "version": "1.190.0-rc1", "description": "Uwazi is a free, open-source solution for organising, analysing and publishing your documents.", "keywords": [ "react" @@ -149,7 +149,7 @@ "flowbite-react": "^0.10.1", "formatcoords": "^1.1.3", "franc": "5.0.0", - "helmet": "^7.1.0", + "helmet": "^8.0.0", "html-to-react": "^1.7.0", "htmlparser2": "^9.1.0", "immutability-helper": "^3.1.1", @@ -247,8 +247,8 @@ "devDependencies": { "@4tw/cypress-drag-drop": "^2.2.5", "@babel/cli": "7.25.7", - "@babel/core": "7.25.7", - "@babel/eslint-parser": "7.25.7", + "@babel/core": "7.25.8", + "@babel/eslint-parser": "7.25.8", "@babel/helper-call-delegate": "^7.12.13", "@babel/helper-get-function-arity": "^7.16.7", "@babel/helper-string-parser": "^7.25.7", @@ -261,7 +261,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.25.7", "@babel/plugin-transform-react-constant-elements": "^7.25.7", "@babel/plugin-transform-react-inline-elements": "^7.25.7", - "@babel/preset-env": "^7.25.7", + "@babel/preset-env": "^7.25.8", "@babel/preset-react": "^7.25.7", "@babel/preset-typescript": "^7.25.7", "@babel/register": "^7.25.7", @@ -269,14 +269,14 @@ "@cfaester/enzyme-adapter-react-18": "^0.8.0", "@chromatic-com/storybook": "^2.0.2", "@cypress/react18": "^2.0.1", - "@storybook/addon-actions": "^8.1.11", - "@storybook/addon-essentials": "^8.3.4", - "@storybook/addon-interactions": "^8.1.11", - "@storybook/addon-links": "^8.3.4", + "@storybook/addon-actions": "^8.3.5", + "@storybook/addon-essentials": "^8.3.5", + "@storybook/addon-interactions": "^8.3.5", + "@storybook/addon-links": "^8.3.5", "@storybook/addon-viewport": "^8.1.11", "@storybook/addon-webpack5-compiler-babel": "^3.0.3", - "@storybook/react": "^8.1.11", - "@storybook/react-webpack5": "^8.1.11", + "@storybook/react": "^8.3.5", + "@storybook/react-webpack5": "^8.3.5", "@storybook/test": "^8.1.11", "@testing-library/jest-dom": "6.5.0", "@testing-library/react": "^15.0.7", @@ -327,7 +327,7 @@ "@typescript-eslint/parser": "5.62.0", "assets-webpack-plugin": "7.1.1", "babel-jest": "^29.7.0", - "babel-loader": "9.1.3", + "babel-loader": "9.2.1", "babel-plugin-module-resolver": "5.0.2", "babel-plugin-transform-react-remove-prop-types": "0.4.24", "canvas": "^2.11.2", diff --git a/webpack/webpack.server.js b/webpack/webpack.server.js index e94708930f..274afaf216 100644 --- a/webpack/webpack.server.js +++ b/webpack/webpack.server.js @@ -39,8 +39,6 @@ app.get('/CSS/:file', (req, res) => { process.stdout.write('Processing RTL...\r\n'); data = rtlcss.process(data); process.stdout.write('Done!\r\n'); - } else { - process.stdout.write('Using standard CSS.\r\n'); } res.end(data); }); diff --git a/yarn.lock b/yarn.lock index 2a2dee770b..c1543c624c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,7 +12,7 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adobe/css-tools@^4.3.2", "@adobe/css-tools@^4.4.0": +"@adobe/css-tools@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== @@ -655,15 +655,15 @@ "@babel/highlight" "^7.25.7" picocolors "^1.0.0" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" - integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== +"@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.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402" + integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== -"@babel/core@7.25.7", "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.7", "@babel/core@^7.23.9": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" - integrity sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow== +"@babel/core@7.25.8", "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.7", "@babel/core@^7.23.9": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6" + integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.25.7" @@ -671,26 +671,26 @@ "@babel/helper-compilation-targets" "^7.25.7" "@babel/helper-module-transforms" "^7.25.7" "@babel/helpers" "^7.25.7" - "@babel/parser" "^7.25.7" + "@babel/parser" "^7.25.8" "@babel/template" "^7.25.7" "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" + "@babel/types" "^7.25.8" 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.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz#27b43de786c83cbabbcb328efbb4f099ae85415e" - integrity sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw== +"@babel/eslint-parser@7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz#0119dec46be547d7a339978dedb9d29e517c2443" + integrity sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.4", "@babel/generator@^7.25.7", "@babel/generator@^7.7.2": +"@babel/generator@^7.25.7", "@babel/generator@^7.7.2": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== @@ -822,7 +822,7 @@ dependencies: "@babel/types" "^7.25.7" -"@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", "@babel/helper-plugin-utils@^7.8.3": +"@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.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== @@ -903,12 +903,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.4", "@babel/parser@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590" - integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7", "@babel/parser@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" + integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== dependencies: - "@babel/types" "^7.25.7" + "@babel/types" "^7.25.8" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7": version "7.25.7" @@ -1004,20 +1004,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -1025,13 +1018,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-import-assertions@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz#8ce248f9f4ed4b7ed4cb2e0eb4ed9efd9f52921f" @@ -1046,7 +1032,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -1067,7 +1053,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -1081,7 +1067,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -1109,14 +1095,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -1145,14 +1124,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-async-generator-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.7.tgz#af61a02b30d7bff5108c63bd39ac7938403426d7" - integrity sha512-4B6OhTrwYKHYYgcwErvZjbmH9X5TxQBsaBHdzEIB4l71gR5jh/tuHGlb9in47udL2+wVUcOz5XXhhfhVJwEpEg== +"@babel/plugin-transform-async-generator-functions@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz#3331de02f52cc1f2c75b396bec52188c85b0b1ec" + integrity sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA== dependencies: "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-remap-async-to-generator" "^7.25.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/traverse" "^7.25.7" "@babel/plugin-transform-async-to-generator@^7.25.7": @@ -1186,14 +1164,13 @@ "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-class-static-block@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.7.tgz#d2cf3c812e3b3162d56aadf4566f45c30538cb2c" - integrity sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg== +"@babel/plugin-transform-class-static-block@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz#a8af22028920fe404668031eceb4c3aadccb5262" + integrity sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-transform-classes@^7.25.7": version "7.25.7" @@ -1245,13 +1222,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-dynamic-import@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.7.tgz#31905ab2cfa94dcf1b1f8ce66096720b2908e518" - integrity sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w== +"@babel/plugin-transform-dynamic-import@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz#f1edbe75b248cf44c70c8ca8ed3818a668753aaa" + integrity sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-transform-exponentiation-operator@^7.25.7": version "7.25.7" @@ -1261,13 +1237,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-export-namespace-from@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.7.tgz#beb2679db6fd3bdfe6ad6de2c8cac84a86ef2da1" - integrity sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ== +"@babel/plugin-transform-export-namespace-from@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz#d1988c3019a380b417e0516418b02804d3858145" + integrity sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-for-of@^7.25.7": version "7.25.7" @@ -1286,13 +1261,12 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/traverse" "^7.25.7" -"@babel/plugin-transform-json-strings@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.7.tgz#6626433554aff4bd6f76a2c621a1f40e802dfb0a" - integrity sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA== +"@babel/plugin-transform-json-strings@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz#6fb3ec383a2ea92652289fdba653e3f9de722694" + integrity sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-transform-literals@^7.25.7": version "7.25.7" @@ -1301,13 +1275,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-logical-assignment-operators@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.7.tgz#93847feb513a1f191c5f5d903d991a0ee24fe99b" - integrity sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA== +"@babel/plugin-transform-logical-assignment-operators@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz#01868ff92daa9e525b4c7902aa51979082a05710" + integrity sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-transform-member-expression-literals@^7.25.7": version "7.25.7" @@ -1366,30 +1339,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.7.tgz#0af84b86d4332654c43cf028dbdcf878b00ac168" - integrity sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz#befb4900c130bd52fccf2b926314557987f1b552" + integrity sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz#a516b78f894d1c08283f39d809b2048fd2f29448" - integrity sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA== +"@babel/plugin-transform-numeric-separator@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz#91e370486371637bd42161052f2602c701386891" + integrity sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz#fa0916521be96fd434e2db59780b24b308c6d169" - integrity sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg== +"@babel/plugin-transform-object-rest-spread@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz#0904ac16bcce41df4db12d915d6780f85c7fb04b" + integrity sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g== dependencies: "@babel/helper-compilation-targets" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.25.7" "@babel/plugin-transform-object-super@^7.25.7": @@ -1400,22 +1370,20 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-replace-supers" "^7.25.7" -"@babel/plugin-transform-optional-catch-binding@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.7.tgz#400e2d891f9288f5231694234696aa67164e4913" - integrity sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg== +"@babel/plugin-transform-optional-catch-binding@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz#2649b86a3bb202c6894ec81a6ddf41b94d8f3103" + integrity sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg== dependencies: "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz#b7f7c9321aa1d8414e67799c28d87c23682e4d68" - integrity sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg== +"@babel/plugin-transform-optional-chaining@^7.25.7", "@babel/plugin-transform-optional-chaining@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz#f46283b78adcc5b6ab988a952f989e7dce70653f" + integrity sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg== dependencies: "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.25.7": version "7.25.7" @@ -1432,15 +1400,14 @@ "@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.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz#aff877efd05b57c4ad04611d8de97bf155a53369" - integrity sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g== +"@babel/plugin-transform-private-property-in-object@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz#1234f856ce85e061f9688764194e51ea7577c434" + integrity sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow== dependencies: "@babel/helper-annotate-as-pure" "^7.25.7" "@babel/helper-create-class-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.25.7": version "7.25.7" @@ -1590,12 +1557,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" -"@babel/preset-env@^7.25.7": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.7.tgz#fc1b092152db4b58377b85dc05c890081c1157e0" - integrity sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g== +"@babel/preset-env@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.8.tgz#dc6b719627fb29cd9cccbbbe041802fd575b524c" + integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg== dependencies: - "@babel/compat-data" "^7.25.7" + "@babel/compat-data" "^7.25.8" "@babel/helper-compilation-targets" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" "@babel/helper-validator-option" "^7.25.7" @@ -1605,45 +1572,30 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-import-assertions" "^7.25.7" "@babel/plugin-syntax-import-attributes" "^7.25.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.25.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.8" "@babel/plugin-transform-async-to-generator" "^7.25.7" "@babel/plugin-transform-block-scoped-functions" "^7.25.7" "@babel/plugin-transform-block-scoping" "^7.25.7" "@babel/plugin-transform-class-properties" "^7.25.7" - "@babel/plugin-transform-class-static-block" "^7.25.7" + "@babel/plugin-transform-class-static-block" "^7.25.8" "@babel/plugin-transform-classes" "^7.25.7" "@babel/plugin-transform-computed-properties" "^7.25.7" "@babel/plugin-transform-destructuring" "^7.25.7" "@babel/plugin-transform-dotall-regex" "^7.25.7" "@babel/plugin-transform-duplicate-keys" "^7.25.7" "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7" - "@babel/plugin-transform-dynamic-import" "^7.25.7" + "@babel/plugin-transform-dynamic-import" "^7.25.8" "@babel/plugin-transform-exponentiation-operator" "^7.25.7" - "@babel/plugin-transform-export-namespace-from" "^7.25.7" + "@babel/plugin-transform-export-namespace-from" "^7.25.8" "@babel/plugin-transform-for-of" "^7.25.7" "@babel/plugin-transform-function-name" "^7.25.7" - "@babel/plugin-transform-json-strings" "^7.25.7" + "@babel/plugin-transform-json-strings" "^7.25.8" "@babel/plugin-transform-literals" "^7.25.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.8" "@babel/plugin-transform-member-expression-literals" "^7.25.7" "@babel/plugin-transform-modules-amd" "^7.25.7" "@babel/plugin-transform-modules-commonjs" "^7.25.7" @@ -1651,15 +1603,15 @@ "@babel/plugin-transform-modules-umd" "^7.25.7" "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7" "@babel/plugin-transform-new-target" "^7.25.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.7" - "@babel/plugin-transform-numeric-separator" "^7.25.7" - "@babel/plugin-transform-object-rest-spread" "^7.25.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.8" + "@babel/plugin-transform-numeric-separator" "^7.25.8" + "@babel/plugin-transform-object-rest-spread" "^7.25.8" "@babel/plugin-transform-object-super" "^7.25.7" - "@babel/plugin-transform-optional-catch-binding" "^7.25.7" - "@babel/plugin-transform-optional-chaining" "^7.25.7" + "@babel/plugin-transform-optional-catch-binding" "^7.25.8" + "@babel/plugin-transform-optional-chaining" "^7.25.8" "@babel/plugin-transform-parameters" "^7.25.7" "@babel/plugin-transform-private-methods" "^7.25.7" - "@babel/plugin-transform-private-property-in-object" "^7.25.7" + "@babel/plugin-transform-private-property-in-object" "^7.25.8" "@babel/plugin-transform-property-literals" "^7.25.7" "@babel/plugin-transform-regenerator" "^7.25.7" "@babel/plugin-transform-reserved-words" "^7.25.7" @@ -1738,7 +1690,7 @@ "@babel/parser" "^7.25.7" "@babel/types" "^7.25.7" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.1", "@babel/traverse@^7.25.7": +"@babel/traverse@^7.18.9", "@babel/traverse@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== @@ -1751,10 +1703,10 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.16.7", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.24.0", "@babel/types@^7.24.7", "@babel/types@^7.25.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" - integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== +"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.16.7", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.7", "@babel/types@^7.25.8", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" + integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== dependencies: "@babel/helper-string-parser" "^7.25.7" "@babel/helper-validator-identifier" "^7.25.7" @@ -1895,181 +1847,91 @@ ms "^2.1.3" secure-json-parse "^2.4.0" -"@esbuild/aix-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" - integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== - "@esbuild/aix-ppc64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== -"@esbuild/android-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" - integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== - "@esbuild/android-arm64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== -"@esbuild/android-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" - integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== - "@esbuild/android-arm@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== -"@esbuild/android-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" - integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== - "@esbuild/android-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== -"@esbuild/darwin-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" - integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== - "@esbuild/darwin-arm64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== -"@esbuild/darwin-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" - integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== - "@esbuild/darwin-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== -"@esbuild/freebsd-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" - integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== - "@esbuild/freebsd-arm64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== -"@esbuild/freebsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" - integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== - "@esbuild/freebsd-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== -"@esbuild/linux-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" - integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== - "@esbuild/linux-arm64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== -"@esbuild/linux-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" - integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== - "@esbuild/linux-arm@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== -"@esbuild/linux-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" - integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== - "@esbuild/linux-ia32@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== -"@esbuild/linux-loong64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" - integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== - "@esbuild/linux-loong64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== -"@esbuild/linux-mips64el@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" - integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== - "@esbuild/linux-mips64el@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== -"@esbuild/linux-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" - integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== - "@esbuild/linux-ppc64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== -"@esbuild/linux-riscv64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" - integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== - "@esbuild/linux-riscv64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== -"@esbuild/linux-s390x@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" - integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== - "@esbuild/linux-s390x@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== -"@esbuild/linux-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" - integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== - "@esbuild/linux-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== -"@esbuild/netbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" - integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== - "@esbuild/netbsd-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" @@ -2080,51 +1942,26 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== -"@esbuild/openbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" - integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== - "@esbuild/openbsd-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== -"@esbuild/sunos-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" - integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== - "@esbuild/sunos-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== -"@esbuild/win32-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" - integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== - "@esbuild/win32-arm64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== -"@esbuild/win32-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" - integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== - "@esbuild/win32-ia32@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== -"@esbuild/win32-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" - integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== - "@esbuild/win32-x64@0.23.1": version "0.23.1" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" @@ -3789,10 +3626,10 @@ notepack.io "~3.0.1" socket.io-parser "~4.2.1" -"@storybook/addon-actions@8.3.4", "@storybook/addon-actions@^8.1.11": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.3.4.tgz#236333853ab656215907fef153042d09b18f314a" - integrity sha512-1y0yD3upKcyzNwwA6loAGW2cRDqExwl4oAT7GJQA4tmabI+fNwmANSgU/ezLvvSUf4Qo0eJHg2Zcn8y+Apq2eA== +"@storybook/addon-actions@8.3.5", "@storybook/addon-actions@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.3.5.tgz#03fdb891114439ed47cb7df6ef21826530449db7" + integrity sha512-t8D5oo+4XfD+F8091wLa2y/CDd/W2lExCeol5Vm1tp5saO+u6f2/d7iykLhTowWV84Uohi3D073uFeyTAlGebg== dependencies: "@storybook/global" "^5.0.0" "@types/uuid" "^9.0.1" @@ -3800,35 +3637,35 @@ polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-backgrounds@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.4.tgz#2c367ca27c3148d8bb300363a3b77b1e71810726" - integrity sha512-o3nl7cN3x8erJNxLEv8YptanEQAnbqnaseOAsvSC6/nnSAcRYBSs3BvekKvo4CcpS2mxn7F5NJTBFYnCXzy8EA== +"@storybook/addon-backgrounds@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.5.tgz#479ecb6181441e7f8429569bd7cefdb74058c12f" + integrity sha512-IQGjDujuw8+iSqKREdkL8I5E/5CAHZbfOWd4A75PQK2D6qZ0fu/xRwTOQOH4jP6xn/abvfACOdL6A0d5bU90ag== dependencies: "@storybook/global" "^5.0.0" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.3.4.tgz#fb4c5974beb576f7bada6859f67827c756e0c46c" - integrity sha512-qQcaK6dczsb6wXkzGZKOjUYNA7FfKBewRv6NvoVKYY6LfhllGOkmUAtYpdtQG8adsZWTSoZaAOJS2vP2uM67lw== +"@storybook/addon-controls@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.3.5.tgz#d9b7aec16e2673a473ab018b3b453cd114628181" + integrity sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ== dependencies: "@storybook/global" "^5.0.0" dequal "^2.0.2" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.3.4.tgz#9dc6c9d873b50848346e5a3c807a907918561c8a" - integrity sha512-TWauhqF/gJgfwPuWeM6KM3LwC+ErCOM+K2z16w3vgao9s67sij8lnrdAoQ0hjA+kw2/KAdCakFS6FyciG81qog== +"@storybook/addon-docs@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.3.5.tgz#df9e3310b7a63355184f5a2a7f2e2aa396588765" + integrity sha512-MOVfo1bY8kXTzbvmWnx3UuSO4WNykFz7Edvb3mxltNyuW7UDRZGuIuSe32ddT/EtLJfurrC9Ja3yBy4KBUGnMA== dependencies: "@mdx-js/react" "^3.0.0" - "@storybook/blocks" "8.3.4" - "@storybook/csf-plugin" "8.3.4" + "@storybook/blocks" "8.3.5" + "@storybook/csf-plugin" "8.3.5" "@storybook/global" "^5.0.0" - "@storybook/react-dom-shim" "8.3.4" + "@storybook/react-dom-shim" "8.3.5" "@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" @@ -3837,75 +3674,74 @@ rehype-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.3.4.tgz#2260cc927b6f5aa2cfc89ec233f918e158d95df5" - integrity sha512-C3+3hpmSn/8zdx5sXEP0eE6zMzxgRosHVZYfe9nBcMiEDp6UKVUyHVetWxEULOEgN46ysjcpllZ0bUkRYxi2IQ== - dependencies: - "@storybook/addon-actions" "8.3.4" - "@storybook/addon-backgrounds" "8.3.4" - "@storybook/addon-controls" "8.3.4" - "@storybook/addon-docs" "8.3.4" - "@storybook/addon-highlight" "8.3.4" - "@storybook/addon-measure" "8.3.4" - "@storybook/addon-outline" "8.3.4" - "@storybook/addon-toolbars" "8.3.4" - "@storybook/addon-viewport" "8.3.4" +"@storybook/addon-essentials@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@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" ts-dedent "^2.0.0" -"@storybook/addon-highlight@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.3.4.tgz#77d6f2793e371723f9184900f4ceb6aef0a24f46" - integrity sha512-rxZTeuZyZ7RnU+xmRhS01COFLbGnVEmlUNxBw8ArsrTEZKW5PbKpIxNLTj9F0zdH8H0MfryJGP+Aadcm0oHWlw== +"@storybook/addon-highlight@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.3.5.tgz#62293e7b39844ded33bb4ba7ee79c3c96d997fe2" + integrity sha512-ku0epul9aReCR3Gv/emwYnsqg3vgux5OmYMjoDcJC7s+LyfweSzLV/f5t9gSHazikJElh5TehtVkWbC4QfbGSw== dependencies: "@storybook/global" "^5.0.0" -"@storybook/addon-interactions@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.1.11.tgz#af72827200dc6b62b47c773952146f5e34b708f2" - integrity sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA== +"@storybook/addon-interactions@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz#c971925937aeb6d66bf108dc27a90a4a9cbbf8f4" + integrity sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A== dependencies: "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.1.11" - "@storybook/test" "8.1.11" - "@storybook/types" "8.1.11" + "@storybook/instrumenter" "8.3.5" + "@storybook/test" "8.3.5" polished "^4.2.2" ts-dedent "^2.2.0" -"@storybook/addon-links@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.3.4.tgz#556217a6e14dd37c1344dacfd9db5a4400ab6e0a" - integrity sha512-R1DjARmxRIKJDGIG6uxmQ1yFNyoQbb+QIPUFjgWCak8+AdLJbC7W+Esvo9F5hQfh6czyy0piiM3qj5hpQJVh3A== +"@storybook/addon-links@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.3.5.tgz#1621afd8be06af6de5e942644053d5136cc5bb83" + integrity sha512-giRCpn6cfJMYPnVJkojoQDO5ae6098fgY9YgAhwaJej/9dufNcioFdbiyfK1vyzbG6TGeTmJ9ncWCXgWRtzxPQ== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.3.4.tgz#a6f9965f4ee84d2330af65ad443893b2dc821c51" - integrity sha512-IJ6WKEbqmG+r7sukFjo+bVmPB2Zry04sylGx/OGyOh7zIhhqAqpwOwMHP0uQrc3tLNnUM6qB/o83UyYX79ql+A== +"@storybook/addon-measure@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.3.5.tgz#4eef622137f9ee615eb179e5e2af050ea0f7ab8b" + integrity sha512-6GVehgbHhFIFS69xSfRV+12VK0cnuIAtZdp1J3eUCc2ATrcigqVjTM6wzZz6kBuX6O3dcusr7Wg46KtNliqLqg== dependencies: "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" -"@storybook/addon-outline@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.3.4.tgz#57c66665dd771a039f29098adb3a251cd108f961" - integrity sha512-kRRJTTLKM8gMfeh/e83djN5XLlc0hFtr9zKWxuZxaXt9Hmr+9tH/PRFtVK/S4SgqnBDoXk49Wgv6raiwj5/e3A== +"@storybook/addon-outline@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.3.5.tgz#274a497b9a6b391bf3c47aa61e19ddc28cbae395" + integrity sha512-dwmK6GzjEnQP9Yo0VnBUQtJkXZlXdfjWyskZ/IlUVc+IFdeeCtIiMyA92oMfHo8eXt0k1g21ZqMaIn7ZltOuHw== dependencies: "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-toolbars@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.3.4.tgz#4662b80984f011025eddb143856f923291e68938" - integrity sha512-Km1YciVIxqluDbd1xmHjANNFyMonEOtnA6e4MrnBnC9XkPXSigeFlj0JvxyI/zjBsLBoFRmQiwq55W6l3hQ9sA== +"@storybook/addon-toolbars@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.3.5.tgz#7328fed0f4a24c6828ba23e06b9cddd0d3e00e2b" + integrity sha512-Ml2gc9q8WbteDvmuAZGgBxt5SqWMXzuTkMjlsA8EB53hlkN1w9esX4s8YtBeNqC3HKoUzcdq8uexSBqU8fDbSA== -"@storybook/addon-viewport@8.3.4", "@storybook/addon-viewport@^8.1.11": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.3.4.tgz#f30404c6badfa8a5da17a99b900871580d9eb6ef" - integrity sha512-fU4LdXSSqIOLbCEh2leq/tZUYlFliXZBWr/+igQHdUoU7HY8RIImXqVUaR9wlCaTb48WezAWT60vJtwNijyIiQ== +"@storybook/addon-viewport@8.3.5", "@storybook/addon-viewport@^8.1.11": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz#10f10871eba32cf6c484db199241122184a4324b" + integrity sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw== dependencies: memoizerific "^1.11.3" @@ -3917,10 +3753,10 @@ "@babel/core" "^7.23.7" babel-loader "^9.1.3" -"@storybook/blocks@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.3.4.tgz#2fed433f6fa1bce01a750b8d3b02167a32d506ec" - integrity sha512-1g4aCrd5CcN+pVhF2ATu9ZRVvAIgBMb2yF9KkCuTpdvqKDuDNK3sGb0CxjS7jp3LOvyjJr9laTOQsz8v8MQc5A== +"@storybook/blocks@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.3.5.tgz#35e20efb0c13a235832dd945520ff8ac61f40717" + integrity sha512-8cHTdTywolTHlgwN8I7YH7saWAIjGzV617AwjhJ95AKlC0VtpO1gAFcAgCqr4DU9eMc+LZuvbnaU/RSvA5eCCQ== dependencies: "@storybook/csf" "^0.1.11" "@storybook/global" "^5.0.0" @@ -3937,20 +3773,13 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-webpack5@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.1.11.tgz#a0c0208142fa248e6e5c9313d00a7666649e3e9c" - integrity sha512-3/aKmnZu+mHj5LB4VyvzrlHzn2iVjH5y8EUPtFYOkjc2KBkPpF39jBHecfDVCWeO/6kgvAI41t7LLnYB6DZqhw== - dependencies: - "@storybook/channels" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/core-common" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/core-webpack" "8.1.11" - "@storybook/node-logger" "8.1.11" - "@storybook/preview" "8.1.11" - "@storybook/preview-api" "8.1.11" - "@types/node" "^18.0.0" +"@storybook/builder-webpack5@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz#86eba6b8f3546aa1a4b264bb0253e8444b69c6f8" + integrity sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA== + dependencies: + "@storybook/core-webpack" "8.3.5" + "@types/node" "^22.0.0" "@types/semver" "^7.3.4" browser-assert "^1.2.1" case-sensitive-paths-webpack-plugin "^2.4.0" @@ -3958,7 +3787,7 @@ constants-browserify "^1.0.0" css-loader "^6.7.1" es-module-lexer "^1.5.0" - express "^4.17.3" + express "^4.19.2" fork-ts-checker-webpack-plugin "^8.0.0" fs-extra "^11.1.0" html-webpack-plugin "^5.5.0" @@ -3975,78 +3804,19 @@ webpack "5" webpack-dev-middleware "^6.1.2" webpack-hot-middleware "^2.25.1" - webpack-virtual-modules "^0.5.0" + webpack-virtual-modules "^0.6.0" -"@storybook/channels@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.1.11.tgz#7d4b1877ae31d4c073c17a36b157067e2a71f231" - integrity sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA== - dependencies: - "@storybook/client-logger" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/global" "^5.0.0" - telejson "^7.2.0" - tiny-invariant "^1.3.1" +"@storybook/components@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.3.5.tgz#6a8e7f95f1b1f45df7ffcbdeeb3eef3c6cce0d3f" + integrity sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A== -"@storybook/client-logger@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.1.11.tgz#4fbf660869466d5faff89827ac9dee2fc1a084b0" - integrity sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA== +"@storybook/core-webpack@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.3.5.tgz#3e058fdb4bd73ca5deee5b3ce5621f599dfa248d" + integrity sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A== dependencies: - "@storybook/global" "^5.0.0" - -"@storybook/core-common@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.1.11.tgz#02600936b5285ebefbfe9d6caf653aab5e213257" - integrity sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q== - dependencies: - "@storybook/core-events" "8.1.11" - "@storybook/csf-tools" "8.1.11" - "@storybook/node-logger" "8.1.11" - "@storybook/types" "8.1.11" - "@yarnpkg/fslib" "2.10.3" - "@yarnpkg/libzip" "2.3.0" - chalk "^4.1.0" - cross-spawn "^7.0.3" - esbuild "^0.18.0 || ^0.19.0 || ^0.20.0" - esbuild-register "^3.5.0" - execa "^5.0.0" - file-system-cache "2.3.0" - find-cache-dir "^3.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^10.0.0" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - node-fetch "^2.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - prettier-fallback "npm:prettier@^3" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - semver "^7.3.7" - tempy "^3.1.0" - tiny-invariant "^1.3.1" - ts-dedent "^2.0.0" - util "^0.12.4" - -"@storybook/core-events@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.1.11.tgz#e72f9563aef3286c106021d9926723bc24614f4a" - integrity sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A== - dependencies: - "@storybook/csf" "^0.1.7" - ts-dedent "^2.0.0" - -"@storybook/core-webpack@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.1.11.tgz#7ef4b40c54520725fdf2f8bfd1a358d7aebe2cf1" - integrity sha512-UQY+t0BDb408OuxW6jQN1ghXcejZlFNgprgvuKlhY3MSv1XwmjrxBDwnLDat4QfBJHFbjdn4eR7pSBzrfE6tKA== - dependencies: - "@storybook/core-common" "8.1.11" - "@storybook/node-logger" "8.1.11" - "@storybook/types" "8.1.11" - "@types/node" "^18.0.0" + "@types/node" "^22.0.0" ts-dedent "^2.0.0" "@storybook/core@8.3.4": @@ -4068,28 +3838,13 @@ util "^0.12.5" ws "^8.2.3" -"@storybook/csf-plugin@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.3.4.tgz#e9294c5f67245486d2b257a8a6105d72e079ce00" - integrity sha512-ZMFWYxeTN4GxCn8dyIH4roECyLDy29yv/QKM+pHM3AC5Ny2HWI35SohWao4fGBAFxPQFbR5hPN8xa6ofHPSSTg== +"@storybook/csf-plugin@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.3.5.tgz#198946c438be8915b63abde04a19f26610a6d88a" + integrity sha512-ODVqNXwJt90hG7QW8I9w/XUyOGlr0l7XltmIJgXwB/2cYDvaGu3JV5Ybg7O0fxPV8uXk7JlRuUD8ZYv5Low6pA== dependencies: unplugin "^1.3.1" -"@storybook/csf-tools@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.1.11.tgz#e89699f6fdc336778f7174a01734f37025ca09c9" - integrity sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg== - dependencies: - "@babel/generator" "^7.24.4" - "@babel/parser" "^7.24.4" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - "@storybook/csf" "^0.1.7" - "@storybook/types" "8.1.11" - fs-extra "^11.1.0" - recast "^0.23.5" - ts-dedent "^2.0.0" - "@storybook/csf@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" @@ -4097,27 +3852,13 @@ dependencies: lodash "^4.17.15" -"@storybook/csf@^0.1.11", "@storybook/csf@^0.1.7": +"@storybook/csf@^0.1.11": version "0.1.11" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.11.tgz#ad685a4fe564a47a6b73571c2e7c07b526f4f71b" integrity sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg== dependencies: type-fest "^2.19.0" -"@storybook/docs-tools@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.1.11.tgz#f779d3dd0fc4545c7c6a74c6c38663e72c51a52e" - integrity sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw== - dependencies: - "@storybook/core-common" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/preview-api" "8.1.11" - "@storybook/types" "8.1.11" - "@types/doctrine" "^0.0.3" - assert "^2.1.0" - doctrine "^3.0.0" - lodash "^4.17.21" - "@storybook/global@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" @@ -4128,35 +3869,29 @@ resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db" integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q== -"@storybook/instrumenter@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.1.11.tgz#e2ab66c8f36c43e72d7b0cf3502816cc521e2073" - integrity sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ== +"@storybook/instrumenter@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.3.5.tgz#ba3c6adcd928ef98859ac4ed1e5addb1164659ea" + integrity sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw== dependencies: - "@storybook/channels" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/core-events" "8.1.11" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "8.1.11" - "@vitest/utils" "^1.3.1" + "@vitest/utils" "^2.0.5" util "^0.12.4" -"@storybook/node-logger@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.1.11.tgz#451750347869cf128a02acfee8232d9952f99953" - integrity sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg== +"@storybook/manager-api@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.3.5.tgz#73560ffc3774901e503e31aefac91cd4a1579bbb" + integrity sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q== -"@storybook/preset-react-webpack@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.11.tgz#4d43985cdbbcafd2c52be327156d5079f2828e23" - integrity sha512-2a+1TyztCOlwZAcfBUinzjTpaqsWNrco9Vfq5ueJTmNl/EwtN33sxoAu2bBaUkka8MvPZl5a1VP1b5e2GXHFEQ== +"@storybook/preset-react-webpack@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz#5886d265027e7854cb4d15d8ca728990894ac4f8" + integrity sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw== dependencies: - "@storybook/core-webpack" "8.1.11" - "@storybook/docs-tools" "8.1.11" - "@storybook/node-logger" "8.1.11" - "@storybook/react" "8.1.11" + "@storybook/core-webpack" "8.3.5" + "@storybook/react" "8.3.5" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" - "@types/node" "^18.0.0" + "@types/node" "^22.0.0" "@types/semver" "^7.3.4" find-up "^5.0.0" fs-extra "^11.1.0" @@ -4167,30 +3902,10 @@ tsconfig-paths "^4.2.0" webpack "5" -"@storybook/preview-api@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.1.11.tgz#37734167dac68a7397b3a0245bf636535057af7b" - integrity sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ== - dependencies: - "@storybook/channels" "8.1.11" - "@storybook/client-logger" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/csf" "^0.1.7" - "@storybook/global" "^5.0.0" - "@storybook/types" "8.1.11" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - tiny-invariant "^1.3.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.1.11.tgz#da251aa4789332154b1837abae0a3186a5442421" - integrity sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg== +"@storybook/preview-api@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.3.5.tgz#d30debc89793a912cdd26aea1e18b92527f2cf76" + integrity sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg== "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" @@ -4205,47 +3920,40 @@ react-docgen-typescript "^2.2.2" tslib "^2.0.0" -"@storybook/react-dom-shim@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.11.tgz#d4cc6222eb1f169d10c5403dbb580e4c3e29c142" - integrity sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA== +"@storybook/react-dom-shim@8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz#dda5356d3bf55623b9b1429fac7bf185e59c58fd" + integrity sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw== -"@storybook/react-dom-shim@8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.3.4.tgz#493a89cd859206bfbbf50d4024410dd6bd62d35c" - integrity sha512-L4llDvjaAzqPx6h4ddZMh36wPr75PrI2S8bXy+flLqAeVRYnRt4WNKGuxqH0t0U6MwId9+vlCZ13JBfFuY7eQQ== - -"@storybook/react-webpack5@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.1.11.tgz#ebf7647a2e71c6c0107e11edc88b38c856c73fc3" - integrity sha512-VzugGZv9xsZo/mMBj7LsAbQChXIzqKGPRTIO+CQEkDe9HaWBYTJ5Ak46bKw318WYB6QdJcIe8v5sGv68TCStVA== - dependencies: - "@storybook/builder-webpack5" "8.1.11" - "@storybook/preset-react-webpack" "8.1.11" - "@storybook/react" "8.1.11" - "@storybook/types" "8.1.11" - "@types/node" "^18.0.0" - -"@storybook/react@8.1.11", "@storybook/react@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.1.11.tgz#89408fa34b1ce79a3df17c2f41745fd37ba9f492" - integrity sha512-t+EYXOkgwg3ropLGS9y8gGvX5/Okffu/6JYL3YWksrBGAZSqVV4NkxCnVJZepS717SyhR0tN741gv/SxxFPJMg== - dependencies: - "@storybook/client-logger" "8.1.11" - "@storybook/docs-tools" "8.1.11" +"@storybook/react-webpack5@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.3.5.tgz#31556eb7a7d296be9489adde71a9c1da83d0044b" + integrity sha512-J7jCxjCuWvRJrAtOwe4ij8rjfTGm1Dpsfbz8xar4ItVw7ikiyALr34E3FJzfgq7M40uGXZhvCl2IVRdGeiLmzg== + dependencies: + "@storybook/builder-webpack5" "8.3.5" + "@storybook/preset-react-webpack" "8.3.5" + "@storybook/react" "8.3.5" + "@types/node" "^22.0.0" + +"@storybook/react@8.3.5", "@storybook/react@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.3.5.tgz#d4e333b09f275f06b38fb1367234ad1619fbe4fa" + integrity sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ== + dependencies: + "@storybook/components" "^8.3.5" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "8.1.11" - "@storybook/react-dom-shim" "8.1.11" - "@storybook/types" "8.1.11" + "@storybook/manager-api" "^8.3.5" + "@storybook/preview-api" "^8.3.5" + "@storybook/react-dom-shim" "8.3.5" + "@storybook/theming" "^8.3.5" "@types/escodegen" "^0.0.6" "@types/estree" "^0.0.51" - "@types/node" "^18.0.0" + "@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" - lodash "^4.17.21" prop-types "^15.7.2" react-element-to-jsx-string "^15.0.0" semver "^7.3.7" @@ -4253,30 +3961,25 @@ type-fest "~2.19" util-deprecate "^1.0.2" -"@storybook/test@8.1.11", "@storybook/test@^8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.1.11.tgz#f95f6c63c5488ba79e3f2dc3460ae7d475cc0fd0" - integrity sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ== - dependencies: - "@storybook/client-logger" "8.1.11" - "@storybook/core-events" "8.1.11" - "@storybook/instrumenter" "8.1.11" - "@storybook/preview-api" "8.1.11" - "@testing-library/dom" "10.1.0" - "@testing-library/jest-dom" "6.4.5" +"@storybook/test@8.3.5", "@storybook/test@^8.1.11": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.3.5.tgz#0dffc9d4a1eaa9552e69457b16b5085e36883c8a" + integrity sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA== + dependencies: + "@storybook/csf" "^0.1.11" + "@storybook/global" "^5.0.0" + "@storybook/instrumenter" "8.3.5" + "@testing-library/dom" "10.4.0" + "@testing-library/jest-dom" "6.5.0" "@testing-library/user-event" "14.5.2" - "@vitest/expect" "1.6.0" - "@vitest/spy" "1.6.0" + "@vitest/expect" "2.0.5" + "@vitest/spy" "2.0.5" util "^0.12.4" -"@storybook/types@8.1.11": - version "8.1.11" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.1.11.tgz#c6e89fb6d543ebd4d3445a465af6aa27fbbe6aaa" - integrity sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw== - dependencies: - "@storybook/channels" "8.1.11" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" +"@storybook/theming@^8.3.5": + version "8.3.5" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.3.5.tgz#c6b807193099a8f9d1afb5d71a59037c0ef54e85" + integrity sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w== "@supercharge/promise-pool@^3.2.0": version "3.2.0" @@ -4302,7 +4005,21 @@ resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.20.5.tgz#3974f0b090bed11243d4107283824167a395cf1d" integrity sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg== -"@testing-library/dom@10.1.0", "@testing-library/dom@^10.0.0": +"@testing-library/dom@10.4.0": + version "10.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" + integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/dom@^10.0.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.1.0.tgz#2d073e49771ad614da999ca48f199919e5176fb6" integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== @@ -4316,20 +4033,6 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@6.4.5": - version "6.4.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" - integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== - dependencies: - "@adobe/css-tools" "^4.3.2" - "@babel/runtime" "^7.9.2" - 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/jest-dom@6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz#50484da3f80fb222a853479f618a9ce5c47bfe54" @@ -4557,21 +4260,11 @@ resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.0.tgz#e2505f1c21ec08bda8915238e397fb71d2fc54ce" integrity sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g== -"@types/doctrine@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" - integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== - "@types/doctrine@^0.0.9": version "0.0.9" resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.9.tgz#d86a5f452a15e3e3113b99e39616a9baa0f9863f" integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA== -"@types/emscripten@^1.39.6": - version "1.39.7" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.7.tgz#3025183ea56e12bf4d096aadc48ce74ca051233d" - integrity sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA== - "@types/enzyme-adapter-react-16@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.2.tgz#15ae37c64d6221a6f4b3a4aacc357cf773859de4" @@ -4634,7 +4327,7 @@ dependencies: "@types/express" "*" -"@types/express@*", "@types/express@^4.17.21", "@types/express@^4.7.0": +"@types/express@*", "@types/express@^4.17.21": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -4880,25 +4573,18 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=10.0.0": - version "20.10.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.0.tgz#16ddf9c0a72b832ec4fcce35b8249cf149214617" - integrity sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ== +"@types/node@*", "@types/node@>=10.0.0", "@types/node@^22.0.0": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== dependencies: - undici-types "~5.26.4" + undici-types "~6.19.2" "@types/node@^16.18.3": version "16.18.58" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== -"@types/node@^18.0.0": - version "18.19.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.2.tgz#865107157bda220eef9fa8c2173152d6559a41ae" - integrity sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg== - dependencies: - undici-types "~5.26.4" - "@types/nodemailer@^6.4.15": version "6.4.15" resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.15.tgz#494be695e11c438f7f5df738fb4ab740312a6ed2" @@ -4930,7 +4616,7 @@ dependencies: "@types/node" "*" -"@types/qs@*", "@types/qs@^6.9.15", "@types/qs@^6.9.5": +"@types/qs@*", "@types/qs@^6.9.15": version "6.9.15" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== @@ -5323,31 +5009,55 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitest/expect@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.6.0.tgz#0b3ba0914f738508464983f4d811bc122b51fb30" - integrity sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ== +"@vitest/expect@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.0.5.tgz#f3745a6a2c18acbea4d39f5935e913f40d26fa86" + integrity sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA== dependencies: - "@vitest/spy" "1.6.0" - "@vitest/utils" "1.6.0" - chai "^4.3.10" + "@vitest/spy" "2.0.5" + "@vitest/utils" "2.0.5" + chai "^5.1.1" + tinyrainbow "^1.2.0" -"@vitest/spy@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" - integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== +"@vitest/pretty-format@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.0.5.tgz#91d2e6d3a7235c742e1a6cc50e7786e2f2979b1e" + integrity sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ== dependencies: - tinyspy "^2.2.0" + tinyrainbow "^1.2.0" -"@vitest/utils@1.6.0", "@vitest/utils@^1.3.1": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" - integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== +"@vitest/pretty-format@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.3.tgz#48b9b03de75507d1d493df7beb48dc39a1946a3e" + integrity sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ== dependencies: - diff-sequences "^29.6.3" + tinyrainbow "^1.2.0" + +"@vitest/spy@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.0.5.tgz#590fc07df84a78b8e9dd976ec2090920084a2b9f" + integrity sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA== + dependencies: + tinyspy "^3.0.0" + +"@vitest/utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.0.5.tgz#6f8307a4b6bc6ceb9270007f73c67c915944e926" + integrity sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ== + dependencies: + "@vitest/pretty-format" "2.0.5" estree-walker "^3.0.3" - loupe "^2.3.7" - pretty-format "^29.7.0" + loupe "^3.1.1" + tinyrainbow "^1.2.0" + +"@vitest/utils@^2.0.5": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.3.tgz#e52aa5745384091b151cbdf79bb5a3ad2bea88d2" + integrity sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA== + dependencies: + "@vitest/pretty-format" "2.1.3" + loupe "^3.1.1" + tinyrainbow "^1.2.0" "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" @@ -5493,22 +5203,6 @@ version "4.2.2" resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" -"@yarnpkg/fslib@2.10.3": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" - integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== - dependencies: - "@yarnpkg/libzip" "^2.3.0" - tslib "^1.13.0" - -"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" - integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== - dependencies: - "@types/emscripten" "^1.39.6" - tslib "^1.13.0" - abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -5719,11 +5413,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-root-dir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" - integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== - append-field@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" @@ -5959,10 +5648,10 @@ assert@^2.1.0: object.assign "^4.1.4" util "^0.12.5" -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== assets-webpack-plugin@7.1.1: version "7.1.1" @@ -6057,10 +5746,10 @@ babel-jest@^29.7.0: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@9.1.3, babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== +babel-loader@9.2.1, babel-loader@^9.1.3: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== dependencies: find-cache-dir "^4.0.0" schema-utils "^4.0.0" @@ -6569,18 +6258,16 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chai@^4.3.10: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== +chai@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c" + integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA== dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" chalk@^2.4.2: version "2.4.2" @@ -6639,12 +6326,10 @@ chardet@^0.7.0: resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== check-more-types@^2.24.0: version "2.24.0" @@ -7292,13 +6977,6 @@ crypto-js@^4.2.0: resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - css-declaration-sorter@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" @@ -7801,12 +7479,10 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== deep-equal@^2.0.5: version "2.2.3" @@ -8229,12 +7905,7 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv-expand@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@^16.0.0, dotenv@^16.4.5: +dotenv@^16.4.5: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== @@ -8638,35 +8309,6 @@ esbuild-register@^3.5.0: dependencies: debug "^4.3.4" -"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0": - version "0.20.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" - integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== - optionalDependencies: - "@esbuild/aix-ppc64" "0.20.2" - "@esbuild/android-arm" "0.20.2" - "@esbuild/android-arm64" "0.20.2" - "@esbuild/android-x64" "0.20.2" - "@esbuild/darwin-arm64" "0.20.2" - "@esbuild/darwin-x64" "0.20.2" - "@esbuild/freebsd-arm64" "0.20.2" - "@esbuild/freebsd-x64" "0.20.2" - "@esbuild/linux-arm" "0.20.2" - "@esbuild/linux-arm64" "0.20.2" - "@esbuild/linux-ia32" "0.20.2" - "@esbuild/linux-loong64" "0.20.2" - "@esbuild/linux-mips64el" "0.20.2" - "@esbuild/linux-ppc64" "0.20.2" - "@esbuild/linux-riscv64" "0.20.2" - "@esbuild/linux-s390x" "0.20.2" - "@esbuild/linux-x64" "0.20.2" - "@esbuild/netbsd-x64" "0.20.2" - "@esbuild/openbsd-x64" "0.20.2" - "@esbuild/sunos-x64" "0.20.2" - "@esbuild/win32-arm64" "0.20.2" - "@esbuild/win32-ia32" "0.20.2" - "@esbuild/win32-x64" "0.20.2" - "esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0", esbuild@~0.23.0: version "0.23.1" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" @@ -9178,7 +8820,7 @@ express-session@^1.18.0: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@^4.17.3, express@^4.18.2, express@^4.19.2, express@^4.21.0: +express@^4.18.2, express@^4.19.2, express@^4.21.0: version "4.21.0" resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== @@ -9378,14 +9020,6 @@ file-selector@^0.6.0: dependencies: tslib "^2.4.0" -file-system-cache@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" - integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== - dependencies: - fs-extra "11.1.1" - ramda "0.29.0" - file-type@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" @@ -9433,7 +9067,7 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -9700,19 +9334,19 @@ fs-exists-sync@^0.1.0: resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= -fs-extra@11.1.1, fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -9813,11 +9447,6 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" @@ -9916,7 +9545,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.0.0, glob@^10.3.12: +glob@^10.3.12: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -10110,7 +9739,7 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" -handlebars@^4.7.7, handlebars@^4.7.8: +handlebars@^4.7.8: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -10241,10 +9870,10 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" -helmet@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/helmet/-/helmet-7.1.0.tgz#287279e00f8a3763d5dccbaf1e5ee39b8c3784ca" - integrity sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg== +helmet@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/helmet/-/helmet-8.0.0.tgz#05370fb1953aa7b81bd0ddfa459221247be6ea5c" + integrity sha512-VyusHLEIIO5mjQPUI1wpOAEu+wl6Q0998jzTxqUYGE45xCIcAxy3MsbEK/yyJUJ3ADeMoB6MornPH6GMWAf+Pw== hexoid@^1.0.0: version "1.0.0" @@ -10948,11 +10577,6 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -11958,15 +11582,6 @@ lazy-cache@^1.0.3: resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lazy-universal-dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" - integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== - dependencies: - app-root-dir "^1.0.2" - dotenv "^16.0.0" - dotenv-expand "^10.0.0" - leaflet.gridlayer.googlemutant@^0.14.1: version "0.14.1" resolved "https://registry.yarnpkg.com/leaflet.gridlayer.googlemutant/-/leaflet.gridlayer.googlemutant-0.14.1.tgz#c282209aa1a39eb2f87d8aaa4e9894181c9e20a0" @@ -12254,12 +11869,10 @@ 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@^2.3.6, loupe@^2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" +loupe@^3.1.0, loupe@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" + integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== lower-case@^2.0.2: version "2.0.2" @@ -12835,7 +12448,7 @@ node-abort-controller@^3.0.1: resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-fetch@2.6.7, node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -13559,10 +13172,10 @@ path2d@^0.2.1: resolved "https://registry.yarnpkg.com/path2d/-/path2d-0.2.1.tgz#faf98e5e2222541805a6ac232adc026332330765" integrity sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA== -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== pause@0.0.1: version "0.0.1" @@ -13606,7 +13219,7 @@ picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +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" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -13665,13 +13278,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - pkg-dir@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" @@ -14023,11 +13629,6 @@ prepend-http@^3.0.1: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-3.0.1.tgz" integrity sha512-BLxfZh+m6UiAiCPZFJ4+vYoL7NrRs5XgCTRrjseATAggXhdZKKxn+JUNmuVYWY23bDHgaEHodxw8mnmtVEDtHw== -"prettier-fallback@npm:prettier@^3": - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" @@ -14076,11 +13677,6 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -14223,7 +13819,7 @@ qrcode.react@^4.0.1: resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-4.0.1.tgz#1caf1d3f45bf1b6d9cf800cb0f0d671f6a89e68f" integrity sha512-Lpj0tPBn561WiQ3QQWXbkx8xTtB8BZkJeMZWLJIL8iaPBCoWzW1IpCeU3gY5MDqsb0+efCvEGkl9O0naP64crA== -qs@6.13.0, qs@^6.10.0, qs@^6.11.0, qs@^6.11.2, qs@^6.13.0: +qs@6.13.0, qs@^6.11.0, qs@^6.11.2, qs@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== @@ -14260,11 +13856,6 @@ railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" -ramda@0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== - randexp@0.4.6: version "0.4.6" resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" @@ -16197,21 +15788,6 @@ telejson@^7.2.0: dependencies: memoizerific "^1.11.3" -temp-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa" - integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw== - -tempy@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-3.1.0.tgz#00958b6df85db8589cb595465e691852aac038e9" - integrity sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g== - dependencies: - is-stream "^3.0.0" - temp-dir "^3.0.0" - type-fest "^2.12.2" - unique-string "^3.0.0" - terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" @@ -16309,10 +15885,15 @@ tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz" -tinyspy@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" - integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== +tinyrainbow@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" + integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== + +tinyspy@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== title-case@^3.0.3: version "3.0.3" @@ -16482,7 +16063,7 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -16538,7 +16119,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -16553,12 +16134,7 @@ type-fest@^0.21.3: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.12.2, type-fest@^2.19.0, type-fest@~2.19: +type-fest@^2.19.0, type-fest@~2.19: version "2.19.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== @@ -16704,10 +16280,10 @@ underscore@~1.4.4: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" integrity sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -16744,13 +16320,6 @@ unidiff@1.0.2: dependencies: diff "^2.2.2" -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - unist-util-is@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" @@ -17133,6 +16702,11 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== +webpack-virtual-modules@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" + integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== + webpack@5, webpack@^5.94.0: version "5.94.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f"