From be7d8d24e5a9551b56683e93af86a5e1e11b2fa8 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 21 Nov 2024 16:12:42 +0000 Subject: [PATCH 001/100] add EBI fields --- app/views/shared/metadata/edit/_study.html.erb | 3 +++ config/locales/metadata/en.yml | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index 4f16c90e52..6649da7d3d 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -18,6 +18,9 @@ <%= group.radio_select(:study_sra_hold, Study::STUDY_SRA_HOLDS) %> <% end %> + <%# add here for EBI required fields_for %> + <%= metadata_fields.select_by_association(:reference_genome, {}, { class: 'select2' }) %> + <%= metadata_fields.radio_select(:contains_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:contaminated_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:commercially_available, Study::YES_OR_NO) %> diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index 2abb785013..4d0f9be00c 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -380,7 +380,7 @@ en: study_type_id: label: Study Type - edit_info: "ENA requirement" + edit_info: "to remove ENA requirement" study_ebi_accession_number: label: ENA Study Accession Number @@ -517,6 +517,18 @@ en: contaminated_human_data_access_group: label: Contaminated Human Data Access Group help: "Allows specified Unix groups and users access to data segregated from the main data product, which is potentially contaminated with human data. This access is typically rarely used and is primarily for validating the separation process, as we may not have the ethical or legal clearance." + + EBI:Library Strategy: + label: Library Strategy + help: "" + + EBI:Library Source: + label: Library Source + help: "" + + EBI:Library Selection: + label: Library Selection + help: "" project: metadata: project_manager_id: From 285ac586f9ecd881804e112c6718cb02ac8383e5 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Mon, 25 Nov 2024 09:02:14 +0000 Subject: [PATCH 002/100] save the changes temperately --- config/ENA_requirement_fields.yml | 47 +++++++++++++++++++ config/initializers/ena_requirement_fields.rb | 1 + 2 files changed, 48 insertions(+) create mode 100644 config/ENA_requirement_fields.yml create mode 100644 config/initializers/ena_requirement_fields.rb diff --git a/config/ENA_requirement_fields.yml b/config/ENA_requirement_fields.yml new file mode 100644 index 0000000000..244de962ce --- /dev/null +++ b/config/ENA_requirement_fields.yml @@ -0,0 +1,47 @@ +EBI_Library_strategy: + - "RNA-Seq" + - "ChIP-Seq" + - "WGS" + - "WXS" + - "AMPLICON" + - "CLONE" + - "POOLCLONE" + - "CLONEEND" + - "Bisulfite-Seq" + - "MNase-Seq" + - "DNase-Hypersensitivity" + - "FAIRE-seq" + - "SELEX" + - "RIP-Seq" + - "ChIA-PET" + - "OTHER" +EBI_Library_source: + - "GENOMIC" + - "TRANSCRIPTOMIC" + - "METAGENOMIC" + - "METATRANSCRIPTOMIC" + - "SYNTHETIC" + - "VIRAL RNA" + - "OTHER" +EBI_Library_selection: + - "RANDOM" + - "PCR" + - "RANDOM PCR" + - "RT-PCR" + - "HMPR" + - "MF" + - "CF-S" + - "CF-M" + - "CF-T" + - "MDA" + - "MSLL" + - "cDNA" + - "ChIP" + - "MNase" + - "DNAse" + - "Hybrid Selection" + - "Reduced Representation" + - "Restriction Digest" + - "5-methylcytidine antibody" + - "MBD2 protein methyl-CpG binding domain" + - \ No newline at end of file diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb new file mode 100644 index 0000000000..60dbdab7aa --- /dev/null +++ b/config/initializers/ena_requirement_fields.rb @@ -0,0 +1 @@ +EBI_REQUIREMENT_FIELDS = YAML.load(File.open("#{Rails.root}/config/ena_requirement_fields.yml")) \ No newline at end of file From 5b9d468ba17a9e1f66dc88be420ee29eeb679034 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 26 Nov 2024 15:52:53 +0000 Subject: [PATCH 003/100] save changes --- app/api/io/study.rb | 5 ++++- app/models/api/study_io.rb | 3 +++ app/models/study.rb | 9 +++++++++ app/views/shared/metadata/edit/_study.html.erb | 4 +++- app/views/shared/metadata/show/_study.html.erb | 4 ++++ config/ENA_requirement_fields.yml | 2 +- ...115246_add_ebi_library_strategy_to_studay_metadata.rb | 5 +++++ .../20241126135131_add_ebi_library_source_to_st.rb | 5 +++++ .../20241126135217_add_ebi_library_selection_to_st.rb | 5 +++++ db/schema.rb | 5 ++++- 10 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb create mode 100644 db/migrate/20241126135131_add_ebi_library_source_to_st.rb create mode 100644 db/migrate/20241126135217_add_ebi_library_selection_to_st.rb diff --git a/app/api/io/study.rb b/app/api/io/study.rb index ff3165c4f4..afea43549d 100644 --- a/app/api/io/study.rb +++ b/app/api/io/study.rb @@ -26,7 +26,10 @@ class Io::Study < Core::Io::Base study_metadata.commercially_available => commercially_available study_metadata.data_release_study_type.name => data_release_sort_of_study study_metadata.data_release_strategy => data_release_strategy -study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group +study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group +study_metadata.ebi_library_strategy => ebi_library_strategy +study_metadata.ebi_library_source => ebi_library_source +study_metadata.ebi_library_selection => ebi_library_selection ' ) end diff --git a/app/models/api/study_io.rb b/app/models/api/study_io.rb index 5101ca1d33..606879eb9c 100644 --- a/app/models/api/study_io.rb +++ b/app/models/api/study_io.rb @@ -101,5 +101,8 @@ def render_class map_attribute_to_json_attribute(:data_deletion_period) map_attribute_to_json_attribute(:contaminated_human_data_access_group) with_association(:program, lookup_by: :id) { map_attribute_to_json_attribute(:name, 'programme') } + map_attribute_to_json_attribute(:ebi_library_strategy) + map_attribute_to_json_attribute(:ebi_library_source) + map_attribute_to_json_attribute(:ebi_library_selection) end end diff --git a/app/models/study.rb b/app/models/study.rb index ebfd589446..fae2770b90 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -90,6 +90,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze + EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_strategy"] + EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_source"] + EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_selection"] + # Class variables self.per_page = 500 @@ -197,6 +201,11 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength custom_attribute(:commercially_available, required: true, in: YES_OR_NO) custom_attribute(:study_name_abbreviation) + # add ebi library strategy + custom_attribute(:ebi_library_strategy, required: true, in: EBI_LIBRARY_STRATEGY_OPTIONS) + custom_attribute(:ebi_library_source, required: true, in: EBI_LIBRARY_SOURCE_OPTIONS) + custom_attribute(:ebi_library_selection, required: true, in: EBI_LIBRARY_SELECTION_OPTIONS) + custom_attribute( :data_release_strategy, required: true, diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index 6649da7d3d..b138d12dad 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -19,7 +19,9 @@ <% end %> <%# add here for EBI required fields_for %> - <%= metadata_fields.select_by_association(:reference_genome, {}, { class: 'select2' }) %> + <%= metadata_fields.select(:ebi_library_strategy, Study::EBI_LIBRARY_STRATEGY_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_source, Study::EBI_LIBRARY_SOURCE_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_selection, Study::EBI_LIBRARY_SELECTION_OPTIONS) %> <%= metadata_fields.radio_select(:contains_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:contaminated_human_dna, Study::YES_OR_NO) %> diff --git a/app/views/shared/metadata/show/_study.html.erb b/app/views/shared/metadata/show/_study.html.erb index d6ebe29a7c..62acd207aa 100644 --- a/app/views/shared/metadata/show/_study.html.erb +++ b/app/views/shared/metadata/show/_study.html.erb @@ -14,6 +14,10 @@ <%= group.plain_value(:study_sra_hold) %> <% end %> + <%= metadata_fields.plain_value(:ebi_library_strategy) %> + <%= metadata_fields.plain_value(:ebi_library_source) %> + <%= metadata_fields.plain_value(:ebi_library_selection) %> + <%= metadata_fields.plain_value(:contains_human_dna) %> <%= metadata_fields.plain_value(:contaminated_human_dna) %> <%= metadata_fields.plain_value(:commercially_available) %> diff --git a/config/ENA_requirement_fields.yml b/config/ENA_requirement_fields.yml index 244de962ce..ac15d2d506 100644 --- a/config/ENA_requirement_fields.yml +++ b/config/ENA_requirement_fields.yml @@ -44,4 +44,4 @@ EBI_Library_selection: - "Restriction Digest" - "5-methylcytidine antibody" - "MBD2 protein methyl-CpG binding domain" - - \ No newline at end of file + \ No newline at end of file diff --git a/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb b/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb new file mode 100644 index 0000000000..a998a439ae --- /dev/null +++ b/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb @@ -0,0 +1,5 @@ +class AddEbiLibraryStrategyToStudayMetadata < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_strategy, :string, default: nil + end +end diff --git a/db/migrate/20241126135131_add_ebi_library_source_to_st.rb b/db/migrate/20241126135131_add_ebi_library_source_to_st.rb new file mode 100644 index 0000000000..e9a9683a65 --- /dev/null +++ b/db/migrate/20241126135131_add_ebi_library_source_to_st.rb @@ -0,0 +1,5 @@ +class AddEbiLibrarySourceToSt < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_source, :string, default: nil + end +end diff --git a/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb b/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb new file mode 100644 index 0000000000..9e15ce43c5 --- /dev/null +++ b/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb @@ -0,0 +1,5 @@ +class AddEbiLibrarySelectionToSt < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_selection, :string, default: nil + end +end diff --git a/db/schema.rb b/db/schema.rb index 940e4e5f29..b2b10be66e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2024_10_18_131928) do +ActiveRecord::Schema.define(version: 2024_11_26_135217) do create_table "aliquot_indices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", options: "ENGINE=InnoDB ROW_FORMAT=DYNAMIC", force: :cascade do |t| t.integer "aliquot_id", null: false @@ -1548,6 +1548,9 @@ t.string "s3_email_list" t.string "data_deletion_period" t.string "contaminated_human_data_access_group" + t.string "ebi_library_strategy" + t.string "ebi_library_source" + t.string "ebi_library_selection" t.index ["faculty_sponsor_id"], name: "index_study_metadata_on_faculty_sponsor_id" t.index ["study_id"], name: "index_study_metadata_on_study_id" end From 865264362db49f243229a67ad3858125d8ad7262 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 27 Nov 2024 13:53:58 +0000 Subject: [PATCH 004/100] update the label --- config/locales/metadata/en.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index 4d0f9be00c..5c45fcbcfe 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -408,7 +408,7 @@ en: label: Reference Genome study_type: - label: Study Type + label: Study Typemm data_release_study_type: label: What sort of study is this? @@ -518,15 +518,15 @@ en: label: Contaminated Human Data Access Group help: "Allows specified Unix groups and users access to data segregated from the main data product, which is potentially contaminated with human data. This access is typically rarely used and is primarily for validating the separation process, as we may not have the ethical or legal clearance." - EBI:Library Strategy: + ebi_library_strategy: label: Library Strategy help: "" - EBI:Library Source: + ebi_library_source: label: Library Source help: "" - EBI:Library Selection: + ebi_library_selection: label: Library Selection help: "" project: From 58bd083a9a7da0c1bda002d64a284418e79e8db6 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 3 Dec 2024 09:16:36 +0000 Subject: [PATCH 005/100] add extra ebi requirements fields --- app/models/api/study_io.rb | 2 +- app/models/study.rb | 12 +++++------ .../shared/metadata/edit/_study.html.erb | 12 +++++------ config/ENA_requirement_fields.yml | 1 - config/initializers/ena_requirement_fields.rb | 3 ++- config/locales/metadata/en.yml | 20 +++++++++---------- ...ebi_library_strategy_to_studay_metadata.rb | 1 + ...1126135131_add_ebi_library_source_to_st.rb | 1 + ...6135217_add_ebi_library_selection_to_st.rb | 1 + spec/models/api/study_io_spec.rb | 12 ++++++++--- spec/models/study_spec.rb | 17 +++++++++++++++- 11 files changed, 52 insertions(+), 30 deletions(-) diff --git a/app/models/api/study_io.rb b/app/models/api/study_io.rb index 606879eb9c..fa289a5bae 100644 --- a/app/models/api/study_io.rb +++ b/app/models/api/study_io.rb @@ -103,6 +103,6 @@ def render_class with_association(:program, lookup_by: :id) { map_attribute_to_json_attribute(:name, 'programme') } map_attribute_to_json_attribute(:ebi_library_strategy) map_attribute_to_json_attribute(:ebi_library_source) - map_attribute_to_json_attribute(:ebi_library_selection) + map_attribute_to_json_attribute(:ebi_library_selection) end end diff --git a/app/models/study.rb b/app/models/study.rb index fae2770b90..b2a6e25b47 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -90,10 +90,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_strategy"] - EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_source"] - EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS["EBI_Library_selection"] - + EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] + EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] + EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] + # Class variables self.per_page = 500 @@ -204,8 +204,8 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength # add ebi library strategy custom_attribute(:ebi_library_strategy, required: true, in: EBI_LIBRARY_STRATEGY_OPTIONS) custom_attribute(:ebi_library_source, required: true, in: EBI_LIBRARY_SOURCE_OPTIONS) - custom_attribute(:ebi_library_selection, required: true, in: EBI_LIBRARY_SELECTION_OPTIONS) - + custom_attribute(:ebi_library_selection, required: true, in: EBI_LIBRARY_SELECTION_OPTIONS) + custom_attribute( :data_release_strategy, required: true, diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index b138d12dad..68d87f3376 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -9,19 +9,17 @@ <%= metadata_fields.text_field(:prelim_id) %> <%= metadata_fields.select_by_association(:reference_genome, {}, { class: 'select2' }) %> + <%= metadata_fields.select_by_association(:study_type)%> <% metadata_fields.with_options(grouping: 'ENA requirement') do |group| %> <%= group.text_field(:study_study_title) %> - <%= group.select_by_association(:study_type)%> <%= group.text_area(:study_description) %> <%= group.text_area(:study_abstract) %> <%= group.radio_select(:study_sra_hold, Study::STUDY_SRA_HOLDS) %> - <% end %> - - <%# add here for EBI required fields_for %> - <%= metadata_fields.select(:ebi_library_strategy, Study::EBI_LIBRARY_STRATEGY_OPTIONS) %> - <%= metadata_fields.select(:ebi_library_source, Study::EBI_LIBRARY_SOURCE_OPTIONS) %> - <%= metadata_fields.select(:ebi_library_selection, Study::EBI_LIBRARY_SELECTION_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_strategy, Study::EBI_LIBRARY_STRATEGY_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_source, Study::EBI_LIBRARY_SOURCE_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_selection, Study::EBI_LIBRARY_SELECTION_OPTIONS) %> + <% end %> <%= metadata_fields.radio_select(:contains_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:contaminated_human_dna, Study::YES_OR_NO) %> diff --git a/config/ENA_requirement_fields.yml b/config/ENA_requirement_fields.yml index ac15d2d506..99ed51f724 100644 --- a/config/ENA_requirement_fields.yml +++ b/config/ENA_requirement_fields.yml @@ -44,4 +44,3 @@ EBI_Library_selection: - "Restriction Digest" - "5-methylcytidine antibody" - "MBD2 protein methyl-CpG binding domain" - \ No newline at end of file diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb index 60dbdab7aa..cd561b81aa 100644 --- a/config/initializers/ena_requirement_fields.rb +++ b/config/initializers/ena_requirement_fields.rb @@ -1 +1,2 @@ -EBI_REQUIREMENT_FIELDS = YAML.load(File.open("#{Rails.root}/config/ena_requirement_fields.yml")) \ No newline at end of file +# frozen_string_literal: true +EBI_REQUIREMENT_FIELDS = YAML.load(File.open(Rails.root.join('config/ena_requirement_fields.yml'))) diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index 5c45fcbcfe..aa080ed9fb 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -380,7 +380,6 @@ en: study_type_id: label: Study Type - edit_info: "to remove ENA requirement" study_ebi_accession_number: label: ENA Study Accession Number @@ -517,18 +516,19 @@ en: contaminated_human_data_access_group: label: Contaminated Human Data Access Group help: "Allows specified Unix groups and users access to data segregated from the main data product, which is potentially contaminated with human data. This access is typically rarely used and is primarily for validating the separation process, as we may not have the ethical or legal clearance." - + ebi_library_strategy: - label: Library Strategy - help: "" - + label: EBI Library Strategy + edit_info: "ENA requirement" + ebi_library_source: - label: Library Source - help: "" - + label: EBI Library Source + edit_info: "ENA requirement" + ebi_library_selection: - label: Library Selection - help: "" + label: EBI Library Selection + edit_info: "ENA requirement" + project: metadata: project_manager_id: diff --git a/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb b/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb index a998a439ae..282904b730 100644 --- a/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb +++ b/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class AddEbiLibraryStrategyToStudayMetadata < ActiveRecord::Migration[6.1] def change add_column :study_metadata, :ebi_library_strategy, :string, default: nil diff --git a/db/migrate/20241126135131_add_ebi_library_source_to_st.rb b/db/migrate/20241126135131_add_ebi_library_source_to_st.rb index e9a9683a65..c9d060f455 100644 --- a/db/migrate/20241126135131_add_ebi_library_source_to_st.rb +++ b/db/migrate/20241126135131_add_ebi_library_source_to_st.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class AddEbiLibrarySourceToSt < ActiveRecord::Migration[6.1] def change add_column :study_metadata, :ebi_library_source, :string, default: nil diff --git a/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb b/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb index 9e15ce43c5..22274a9cf6 100644 --- a/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb +++ b/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class AddEbiLibrarySelectionToSt < ActiveRecord::Migration[6.1] def change add_column :study_metadata, :ebi_library_selection, :string, default: nil diff --git a/spec/models/api/study_io_spec.rb b/spec/models/api/study_io_spec.rb index 7695205f3b..7356201a5f 100644 --- a/spec/models/api/study_io_spec.rb +++ b/spec/models/api/study_io_spec.rb @@ -14,9 +14,12 @@ reference_genome: reference_genome, array_express_accession_number: 'AE111', ega_policy_accession_number: 'EGA222', - ega_dac_accession_number: 'DAC333', - program: create(:program, name: 'General'), - contaminated_human_data_access_group: 'contaminated human data access group test' + ega_dac_accession_number: 'DAC333' + # program: create(:program, name: 'General'), + # contaminated_human_data_access_group: 'contaminated human data access group test', + # ebi_library_strategy: 'WGS', + # ebi_library_source: 'GENOMIC', + # ebi_library_selection: 'PCR' } ) end @@ -57,6 +60,9 @@ 'data_deletion_period' => '3 months', 'contaminated_human_data_access_group' => 'contaminated human data access group test', 'programme' => 'General', + 'ebi_library_strategy' => 'WGS', + 'ebi_library_source' => 'GENOMIC', + 'ebi_library_selection' => 'PCR', 'manager' => [ { login: manager.login, email: manager.email, name: manager.name }, { login: manager2.login, email: manager2.email, name: manager2.name } diff --git a/spec/models/study_spec.rb b/spec/models/study_spec.rb index e6547b6917..37b456ad19 100644 --- a/spec/models/study_spec.rb +++ b/spec/models/study_spec.rb @@ -465,7 +465,10 @@ number_of_gigabases_per_sample: 6, hmdmc_approval_number: 'HDMC123456', s3_email_list: 'aa1@sanger.ac.uk;aa2@sanger.ac.uk', - data_deletion_period: '3 months' + data_deletion_period: '3 months', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } end @@ -592,6 +595,18 @@ expect(study.study_metadata.faculty_sponsor).not_to be_nil end + it 'must have a ebi library strategy' do + expect(study.study_metadata.ebi_library_strategy).not_to be_nil + end + + it 'must have a ebi library source' do + expect(study.study_metadata.ebi_library_source).not_to be_nil + end + + it 'must have a ebi library selection' do + expect(study.study_metadata.ebi_library_selection).not_to be_nil + end + context 'contaminated human data access group' do it 'defaults to null when not specified' do expect(study.study_metadata.contaminated_human_data_access_group).to be_nil From 6135ba3b4aa8e8b240583381795b7b4d76b585d4 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 3 Dec 2024 14:45:51 +0000 Subject: [PATCH 006/100] added ebi fields in study creation --- .rubocop_todo.yml | 1 + app/models/study.rb | 4 ++++ .../uat_actions/generate_sample_manifest.rb | 5 ++++- app/uat_actions/uat_actions/generate_study.rb | 5 ++++- app/uat_actions/uat_actions/static_records.rb | 5 ++++- features/support/step_definitions/study_steps.rb | 5 ++++- lib/working_setup/standard_seeder.rb | 5 ++++- spec/models/api/study_io_spec.rb | 12 ++++++------ 8 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 87034510a8..882ce1efa9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1373,6 +1373,7 @@ Rails/FilePath: - 'config/initializers/i18n.rb' - 'config/initializers/load_config.rb' - 'config/initializers/sample_manifest_excel.rb' + - 'config/initializers/ena_requirement_fields.rb' - 'features/support/step_definitions/49061511_qc_file_steps.rb' - 'features/support/step_definitions/bulk_submission_steps.rb' - 'lib/tasks/cucumber.rake' diff --git a/app/models/study.rb b/app/models/study.rb index b2a6e25b47..469a085338 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -295,6 +295,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength allow_blank: true } + validates :ebi_library_strategy, presence: true + validates :ebi_library_source, presence: true + validates :ebi_library_selection, presence: true + before_validation do |record| record.reference_genome_id = 1 if record.reference_genome_id.blank? diff --git a/app/uat_actions/uat_actions/generate_sample_manifest.rb b/app/uat_actions/uat_actions/generate_sample_manifest.rb index 593993d515..aabb4552fd 100644 --- a/app/uat_actions/uat_actions/generate_sample_manifest.rb +++ b/app/uat_actions/uat_actions/generate_sample_manifest.rb @@ -98,7 +98,10 @@ def study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program + program: UatActions::StaticRecords.program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/generate_study.rb b/app/uat_actions/uat_actions/generate_study.rb index 7ca534603f..ff4edfe317 100644 --- a/app/uat_actions/uat_actions/generate_study.rb +++ b/app/uat_actions/uat_actions/generate_study.rb @@ -31,7 +31,10 @@ def create_study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program + program: UatActions::StaticRecords.program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/static_records.rb b/app/uat_actions/uat_actions/static_records.rb index a5a4f63e62..9e44ff9770 100644 --- a/app/uat_actions/uat_actions/static_records.rb +++ b/app/uat_actions/uat_actions/static_records.rb @@ -33,7 +33,10 @@ def self.study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: program + program: program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: 'UAT Study') end diff --git a/features/support/step_definitions/study_steps.rb b/features/support/step_definitions/study_steps.rb index e3bacbb72b..a6d0d15c44 100644 --- a/features/support/step_definitions/study_steps.rb +++ b/features/support/step_definitions/study_steps.rb @@ -334,7 +334,10 @@ def assign_asset_to_study(asset, study_name) data_release_study_type: DataReleaseStudyType.first, contaminated_human_dna: 'No', contains_human_dna: 'Yes', - commercially_available: 'No' + commercially_available: 'No', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) end diff --git a/lib/working_setup/standard_seeder.rb b/lib/working_setup/standard_seeder.rb index 9966b65906..5d85697013 100644 --- a/lib/working_setup/standard_seeder.rb +++ b/lib/working_setup/standard_seeder.rb @@ -140,7 +140,10 @@ def create_study(name) contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program_id: program.id + program_id: program.id, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) do |study| study.activate! diff --git a/spec/models/api/study_io_spec.rb b/spec/models/api/study_io_spec.rb index 7356201a5f..c4572013f4 100644 --- a/spec/models/api/study_io_spec.rb +++ b/spec/models/api/study_io_spec.rb @@ -14,12 +14,12 @@ reference_genome: reference_genome, array_express_accession_number: 'AE111', ega_policy_accession_number: 'EGA222', - ega_dac_accession_number: 'DAC333' - # program: create(:program, name: 'General'), - # contaminated_human_data_access_group: 'contaminated human data access group test', - # ebi_library_strategy: 'WGS', - # ebi_library_source: 'GENOMIC', - # ebi_library_selection: 'PCR' + ega_dac_accession_number: 'DAC333', + program: create(:program, name: 'General'), + contaminated_human_data_access_group: 'contaminated human data access group test', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) end From cbf932b2b8f568a164fb8dce7fd611118e76f0ca Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 3 Dec 2024 20:34:53 +0000 Subject: [PATCH 007/100] deal with file not exist case --- config/initializers/ena_requirement_fields.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb index cd561b81aa..af3a681294 100644 --- a/config/initializers/ena_requirement_fields.rb +++ b/config/initializers/ena_requirement_fields.rb @@ -1,2 +1,9 @@ # frozen_string_literal: true -EBI_REQUIREMENT_FIELDS = YAML.load(File.open(Rails.root.join('config/ena_requirement_fields.yml'))) + +file_path = Rails.root.join('config/ena_requirement_fields.yml') + +if File.exist?(file_path) + EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) +else + Rails.logger.warn "File #{file_path} does not exist" +end From d0b65e23a67ebd0d9f9d31d9d8468cd697c46760 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 2 Jan 2025 14:58:07 +0000 Subject: [PATCH 008/100] tidy up the code --- config/initializers/ena_requirement_fields.rb | 4 ++-- spec/factories/study_metadata_factories.rb | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb index af3a681294..7c38c0e5fe 100644 --- a/config/initializers/ena_requirement_fields.rb +++ b/config/initializers/ena_requirement_fields.rb @@ -3,7 +3,7 @@ file_path = Rails.root.join('config/ena_requirement_fields.yml') if File.exist?(file_path) - EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) + EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) else - Rails.logger.warn "File #{file_path} does not exist" + Rails.logger.warn "File #{file_path} does not exist" end diff --git a/spec/factories/study_metadata_factories.rb b/spec/factories/study_metadata_factories.rb index 9994cb4272..0c8bb06748 100644 --- a/spec/factories/study_metadata_factories.rb +++ b/spec/factories/study_metadata_factories.rb @@ -22,6 +22,10 @@ s3_email_list { 'aa1@sanger.ac.uk;aa2@sanger.ac.uk' } data_deletion_period { '3 months' } + # ebi_library_strategy { 'WGS' } + # ebi_library_source { 'GENOMIC' } + # ebi_library_selection { 'PCR' } + transient { contaminated_human_data_access_group { nil } } after(:build) do |study_metadata, evaluator| From 87be704e6d856adb4bdb9379cbea26224034cd8d Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 2 Jan 2025 16:14:02 +0000 Subject: [PATCH 009/100] fix the test --- config/locales/metadata/en.yml | 2 +- spec/factories/study_metadata_factories.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index aa080ed9fb..da15d2af70 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -407,7 +407,7 @@ en: label: Reference Genome study_type: - label: Study Typemm + label: Study Type data_release_study_type: label: What sort of study is this? diff --git a/spec/factories/study_metadata_factories.rb b/spec/factories/study_metadata_factories.rb index 0c8bb06748..22b81dd446 100644 --- a/spec/factories/study_metadata_factories.rb +++ b/spec/factories/study_metadata_factories.rb @@ -22,9 +22,9 @@ s3_email_list { 'aa1@sanger.ac.uk;aa2@sanger.ac.uk' } data_deletion_period { '3 months' } - # ebi_library_strategy { 'WGS' } - # ebi_library_source { 'GENOMIC' } - # ebi_library_selection { 'PCR' } + ebi_library_strategy { 'WGS' } + ebi_library_source { 'GENOMIC' } + ebi_library_selection { 'PCR' } transient { contaminated_human_data_access_group { nil } } From 4aeff63412d7bf195163727867f2c24e516419be Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Fri, 3 Jan 2025 14:30:40 +0000 Subject: [PATCH 010/100] test the EBI_REQUIREMENT_FIELDS valuable --- app/models/study.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/models/study.rb b/app/models/study.rb index 469a085338..0108bd47e4 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -89,11 +89,12 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_REASONS_ASSAY = ['phd study', 'assay of no other use', DATA_RELEASE_DELAY_FOR_OTHER].freeze DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - - EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] - EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] - EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] - + + EBI_LIBRARY_STRATEGY_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] + EBI_LIBRARY_SOURCE_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_source'] + EBI_LIBRARY_SELECTION_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] + puts ::EBI_REQUIREMENT_FIELDS + # Class variables self.per_page = 500 @@ -295,9 +296,9 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength allow_blank: true } - validates :ebi_library_strategy, presence: true - validates :ebi_library_source, presence: true - validates :ebi_library_selection, presence: true + validates :ebi_library_strategy, inclusion: { in: EBI_LIBRARY_STRATEGY_OPTIONS } + validates :ebi_library_source, inclusion: { in: EBI_LIBRARY_SOURCE_OPTIONS } + validates :ebi_library_selection, inclusion: { in: EBI_LIBRARY_SELECTION_OPTIONS } before_validation do |record| record.reference_genome_id = 1 if record.reference_genome_id.blank? From 1fde3e29bbb98ef77f80f21ca1b95fbf31844dd6 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Mon, 6 Jan 2025 12:46:51 +0000 Subject: [PATCH 011/100] remove debug message --- app/models/study.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/models/study.rb b/app/models/study.rb index 0108bd47e4..a4216b1275 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -89,12 +89,11 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_REASONS_ASSAY = ['phd study', 'assay of no other use', DATA_RELEASE_DELAY_FOR_OTHER].freeze DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - - EBI_LIBRARY_STRATEGY_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] - EBI_LIBRARY_SOURCE_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_source'] - EBI_LIBRARY_SELECTION_OPTIONS = ::EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] - puts ::EBI_REQUIREMENT_FIELDS - + + EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] + EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] + EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] + # Class variables self.per_page = 500 From 5ad53eae740a1b942608b0e6c8445b640312d83c Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 7 Jan 2025 10:21:16 +0000 Subject: [PATCH 012/100] rename ena field file name --- .rubocop_todo.yml | 1 - app/models/study.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 882ce1efa9..87034510a8 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1373,7 +1373,6 @@ Rails/FilePath: - 'config/initializers/i18n.rb' - 'config/initializers/load_config.rb' - 'config/initializers/sample_manifest_excel.rb' - - 'config/initializers/ena_requirement_fields.rb' - 'features/support/step_definitions/49061511_qc_file_steps.rb' - 'features/support/step_definitions/bulk_submission_steps.rb' - 'lib/tasks/cucumber.rake' diff --git a/app/models/study.rb b/app/models/study.rb index a4216b1275..d9372378fc 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -93,7 +93,7 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] - + puts EBI_REQUIREMENT_FIELDS[:EBI_Library_strategy] # Class variables self.per_page = 500 From 46f63c55e801e0ffc361c2c2342a6d8512490fe5 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 7 Jan 2025 10:40:59 +0000 Subject: [PATCH 013/100] rename ena requirement fields file --- config/{ENA_requirement_fields.yml => ena_requirement_fields.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/{ENA_requirement_fields.yml => ena_requirement_fields.yml} (100%) diff --git a/config/ENA_requirement_fields.yml b/config/ena_requirement_fields.yml similarity index 100% rename from config/ENA_requirement_fields.yml rename to config/ena_requirement_fields.yml From b57c62ae0440a60f25a5e90da2f37dc07554951c Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 7 Jan 2025 17:04:33 +0000 Subject: [PATCH 014/100] combine migration files to one --- app/api/io/study.rb | 3 --- ..._ebi_library_strategy_to_studay_metadata.rb | 6 ------ ...41126135131_add_ebi_library_source_to_st.rb | 6 ------ ...26135217_add_ebi_library_selection_to_st.rb | 6 ------ ...07165726_add_ebi_field_to_study_metadata.rb | 18 ++++++++++++++++++ 5 files changed, 18 insertions(+), 21 deletions(-) delete mode 100644 db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb delete mode 100644 db/migrate/20241126135131_add_ebi_library_source_to_st.rb delete mode 100644 db/migrate/20241126135217_add_ebi_library_selection_to_st.rb create mode 100644 db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb diff --git a/app/api/io/study.rb b/app/api/io/study.rb index afea43549d..3ec028f69e 100644 --- a/app/api/io/study.rb +++ b/app/api/io/study.rb @@ -27,9 +27,6 @@ class Io::Study < Core::Io::Base study_metadata.data_release_study_type.name => data_release_sort_of_study study_metadata.data_release_strategy => data_release_strategy study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group -study_metadata.ebi_library_strategy => ebi_library_strategy -study_metadata.ebi_library_source => ebi_library_source -study_metadata.ebi_library_selection => ebi_library_selection ' ) end diff --git a/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb b/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb deleted file mode 100644 index 282904b730..0000000000 --- a/db/migrate/20241126115246_add_ebi_library_strategy_to_studay_metadata.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true -class AddEbiLibraryStrategyToStudayMetadata < ActiveRecord::Migration[6.1] - def change - add_column :study_metadata, :ebi_library_strategy, :string, default: nil - end -end diff --git a/db/migrate/20241126135131_add_ebi_library_source_to_st.rb b/db/migrate/20241126135131_add_ebi_library_source_to_st.rb deleted file mode 100644 index c9d060f455..0000000000 --- a/db/migrate/20241126135131_add_ebi_library_source_to_st.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true -class AddEbiLibrarySourceToSt < ActiveRecord::Migration[6.1] - def change - add_column :study_metadata, :ebi_library_source, :string, default: nil - end -end diff --git a/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb b/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb deleted file mode 100644 index 22274a9cf6..0000000000 --- a/db/migrate/20241126135217_add_ebi_library_selection_to_st.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true -class AddEbiLibrarySelectionToSt < ActiveRecord::Migration[6.1] - def change - add_column :study_metadata, :ebi_library_selection, :string, default: nil - end -end diff --git a/db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb b/db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb new file mode 100644 index 0000000000..54e9e68251 --- /dev/null +++ b/db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true +class AddEbiLibraryStrategyToStudyMetadata < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_strategy, :string, default: nil + end +end + +class AddEbiLibrarySourceToStudyMetadata < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_source, :string, default: nil + end +end + +class AddEbiLibrarySelectionToStudyMetadata < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_selection, :string, default: nil + end +end From 0c938c264a9ed8e58fe37294a5636ce3a60b7e73 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 7 Jan 2025 17:13:37 +0000 Subject: [PATCH 015/100] combine migration files to one --- ...250107170807_add_ebi_fields_to_study_metadata.rb} | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) rename db/migrate/{20250107165726_add_ebi_field_to_study_metadata.rb => 20250107170807_add_ebi_fields_to_study_metadata.rb} (51%) diff --git a/db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb b/db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb similarity index 51% rename from db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb rename to db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb index 54e9e68251..83cbdda803 100644 --- a/db/migrate/20250107165726_add_ebi_field_to_study_metadata.rb +++ b/db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb @@ -1,18 +1,8 @@ # frozen_string_literal: true -class AddEbiLibraryStrategyToStudyMetadata < ActiveRecord::Migration[6.1] +class AddEbiFieldsToStudyMetadata < ActiveRecord::Migration[6.1] def change add_column :study_metadata, :ebi_library_strategy, :string, default: nil - end -end - -class AddEbiLibrarySourceToStudyMetadata < ActiveRecord::Migration[6.1] - def change add_column :study_metadata, :ebi_library_source, :string, default: nil - end -end - -class AddEbiLibrarySelectionToStudyMetadata < ActiveRecord::Migration[6.1] - def change add_column :study_metadata, :ebi_library_selection, :string, default: nil end end From fd345da0679a8f3b4e261d34495bbd3ba892d68d Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 7 Jan 2025 18:28:01 +0000 Subject: [PATCH 016/100] tidy up the codes --- app/models/study.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/study.rb b/app/models/study.rb index d9372378fc..a4216b1275 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -93,7 +93,7 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] - puts EBI_REQUIREMENT_FIELDS[:EBI_Library_strategy] + # Class variables self.per_page = 500 From 10356863a5853ec6ed94541e68e9dc1495fa8511 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:26:57 +0000 Subject: [PATCH 017/100] Update sample_public_name for RVI Program - Bait Capture study --- ...date_sample_public_name_for_rvi_study.rake | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/tasks/update_sample_public_name_for_rvi_study.rake diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake new file mode 100644 index 0000000000..6066b8345c --- /dev/null +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -0,0 +1,20 @@ +namespace :samples do + desc "Update sample_public_name for RVI Program - Bait Capture study" + task update_public_name: :environment do + ActiveRecord::Base.connection.execute('SET autocommit = 0') + + ActiveRecord::Base.connection.execute(<<~SQLQUERY) + UPDATE sample_metadata + JOIN samples ON sample_metadata.sample_id = samples.id + JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id + JOIN studies ON study_samples.study_id = studies.id + SET sample_metadata.sample_public_name = samples.sanger_sample_id + WHERE studies.name = 'RVI Program - Bait Capture' AND sanger_sample_id LIKE 'RVI%'; + SQLQUERY + + ActiveRecord::Base.connection.execute('COMMIT') + ActiveRecord::Base.connection.execute('SET autocommit = 1') + + puts "Sample public names updated successfully for RVI Program - Bait Capture study." + end +end \ No newline at end of file From a989cd1ffcb99c0f4c87ac64275b7bc6ddeb7276 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:34:31 +0000 Subject: [PATCH 018/100] formatting --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index 6066b8345c..bf732d93f1 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,5 +1,5 @@ namespace :samples do - desc "Update sample_public_name for RVI Program - Bait Capture study" + desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do ActiveRecord::Base.connection.execute('SET autocommit = 0') @@ -15,6 +15,6 @@ namespace :samples do ActiveRecord::Base.connection.execute('COMMIT') ActiveRecord::Base.connection.execute('SET autocommit = 1') - puts "Sample public names updated successfully for RVI Program - Bait Capture study." + puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' end -end \ No newline at end of file +end From 190186e6c20d58b1b9ce0dfe2879c632484e5ce7 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:40:50 +0000 Subject: [PATCH 019/100] run rubocop --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index bf732d93f1..57c95d8969 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,3 +1,4 @@ +# frozen_string_literal: true namespace :samples do desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do From ca8b43c1765d18a9c4dd1143b9c5761a2d72c9ba Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 8 Jan 2025 17:30:40 +0000 Subject: [PATCH 020/100] update migration file --- ...249_add_ebi_requirement_fields_to_study_metadata.rb | 10 ++++++++++ db/schema.rb | 5 +---- 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb diff --git a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb new file mode 100644 index 0000000000..4c268230c3 --- /dev/null +++ b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true +class AddEbiRequirementFieldsToStudyMetadata < ActiveRecord::Migration[6.1] + def change + def change + add_column :study_metadata, :ebi_library_strategy, :string, default: nil + add_column :study_metadata, :ebi_library_source, :string, default: nil + add_column :study_metadata, :ebi_library_selection, :string, default: nil + end + end +end diff --git a/db/schema.rb b/db/schema.rb index b2b10be66e..2600b10c5f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2024_11_26_135217) do +ActiveRecord::Schema.define(version: 2025_01_08_172249) do create_table "aliquot_indices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", options: "ENGINE=InnoDB ROW_FORMAT=DYNAMIC", force: :cascade do |t| t.integer "aliquot_id", null: false @@ -1548,9 +1548,6 @@ t.string "s3_email_list" t.string "data_deletion_period" t.string "contaminated_human_data_access_group" - t.string "ebi_library_strategy" - t.string "ebi_library_source" - t.string "ebi_library_selection" t.index ["faculty_sponsor_id"], name: "index_study_metadata_on_faculty_sponsor_id" t.index ["study_id"], name: "index_study_metadata_on_study_id" end From ae6504229668d9fa8fb1d67bc0143a17068bd867 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 8 Jan 2025 17:51:14 +0000 Subject: [PATCH 021/100] fix the migration file --- ...172249_add_ebi_requirement_fields_to_study_metadata.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb index 4c268230c3..d68f279835 100644 --- a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb +++ b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb @@ -1,10 +1,8 @@ # frozen_string_literal: true class AddEbiRequirementFieldsToStudyMetadata < ActiveRecord::Migration[6.1] def change - def change - add_column :study_metadata, :ebi_library_strategy, :string, default: nil - add_column :study_metadata, :ebi_library_source, :string, default: nil - add_column :study_metadata, :ebi_library_selection, :string, default: nil - end + add_column :study_metadata, :ebi_library_strategy, :string, default: nil + add_column :study_metadata, :ebi_library_source, :string, default: nil + add_column :study_metadata, :ebi_library_selection, :string, default: nil end end From 85a7ad325658815528fd759c06e9ca77afba81f4 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 8 Jan 2025 17:57:46 +0000 Subject: [PATCH 022/100] remove migrate file --- .../20250107170807_add_ebi_fields_to_study_metadata.rb | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb diff --git a/db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb b/db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb deleted file mode 100644 index 83cbdda803..0000000000 --- a/db/migrate/20250107170807_add_ebi_fields_to_study_metadata.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true -class AddEbiFieldsToStudyMetadata < ActiveRecord::Migration[6.1] - def change - add_column :study_metadata, :ebi_library_strategy, :string, default: nil - add_column :study_metadata, :ebi_library_source, :string, default: nil - add_column :study_metadata, :ebi_library_selection, :string, default: nil - end -end From 58d961a1343ae9cab6d3abdbcbdf3fba886e2dfb Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 8 Jan 2025 18:56:23 +0000 Subject: [PATCH 023/100] update schema --- db/schema.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/db/schema.rb b/db/schema.rb index 2600b10c5f..9308d35e0a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1396,6 +1396,7 @@ t.integer "user_id_of_consent_withdrawn" t.boolean "consent_withdrawn", default: false, null: false t.string "collected_by", comment: "Name of persons or institute who collected the specimen" + t.string "huMFre_code", limit: 16 t.index ["sample_ebi_accession_number"], name: "index_sample_metadata_on_sample_ebi_accession_number" t.index ["sample_id"], name: "index_sample_metadata_on_sample_id" t.index ["supplier_name"], name: "index_sample_metadata_on_supplier_name" @@ -1548,6 +1549,9 @@ t.string "s3_email_list" t.string "data_deletion_period" t.string "contaminated_human_data_access_group" + t.string "ebi_library_strategy" + t.string "ebi_library_source" + t.string "ebi_library_selection" t.index ["faculty_sponsor_id"], name: "index_study_metadata_on_faculty_sponsor_id" t.index ["study_id"], name: "index_study_metadata_on_study_id" end From 4ef4d6b0a5b8989d34254675b1e131c04d6cbba6 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 13:50:30 +0000 Subject: [PATCH 024/100] adding the requested new plate purpose removing outdated code responsible for creating links between the source plate and the target purpose plate --- app/models/submission/flexible_request_graph.rb | 2 ++ app/models/submission/linear_request_graph.rb | 8 -------- .../plate_purposes/005_limber_purposes.yml | 5 +++++ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/models/submission/flexible_request_graph.rb b/app/models/submission/flexible_request_graph.rb index a2106ca74f..e892e0f7ba 100644 --- a/app/models/submission/flexible_request_graph.rb +++ b/app/models/submission/flexible_request_graph.rb @@ -110,6 +110,8 @@ def build! # rubocop:todo Metrics/AbcSize .order .create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset) .tap do |request| + # Removed from linear_request_graph module as it caused unnecessary links in pipelines where + # limber_request is the first step. if source_asset&.labware.present? && target_asset&.labware.present? AssetLink.create_edge(source_asset.labware, target_asset.labware) end diff --git a/app/models/submission/linear_request_graph.rb b/app/models/submission/linear_request_graph.rb index 0e2ca84894..d61cc7f2ad 100644 --- a/app/models/submission/linear_request_graph.rb +++ b/app/models/submission/linear_request_graph.rb @@ -88,14 +88,6 @@ def create_request_chain!(request_type_and_multiplier_pairs, source_data_set, mu target_asset = target_assets[index] create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset).tap do |request| - # TODO: AssetLink is supposed to disappear at some point in the future because it makes no real sense - # given that the request graph describes this relationship. - # JG: Its removal only really makes sense if we can walk the request graph in a timely manner. - # We use save not save! as AssetLink throws validation errors when the link already exists - if source_asset&.labware.present? && target_asset&.labware.present? - AssetLink.create_edge(source_asset.labware, target_asset.labware) - end - request.qc_metrics = qc_metrics.compact.uniq request.update_responsibilities! diff --git a/config/default_records/plate_purposes/005_limber_purposes.yml b/config/default_records/plate_purposes/005_limber_purposes.yml index fa603dd415..308b57e3aa 100644 --- a/config/default_records/plate_purposes/005_limber_purposes.yml +++ b/config/default_records/plate_purposes/005_limber_purposes.yml @@ -77,3 +77,8 @@ LTN Lib PCR XP: RVI Lib PCR XP: type: PlatePurpose stock_plate: false + +# A plate provided as ready-made libraries. +# These used to be imported as Stock Plates and then 'fake cherrypicked' onto 'LB Lib PCR XP', which were allowed down the multiplexing pipelines. +# Now, they can be imported and submitted as this more accurate plate purpose. +Library Stock Plate: *limber_input_96 From 205f66847fedab238783b0834fa068ab90363902 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 14:46:52 +0000 Subject: [PATCH 025/100] adding the requested new plate purpose removing outdated code responsible for creating links between the source plate and the target purpose plate --- app/models/submission/flexible_request_graph.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/submission/flexible_request_graph.rb b/app/models/submission/flexible_request_graph.rb index e892e0f7ba..46b7897a4d 100644 --- a/app/models/submission/flexible_request_graph.rb +++ b/app/models/submission/flexible_request_graph.rb @@ -111,7 +111,7 @@ def build! # rubocop:todo Metrics/AbcSize .create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset) .tap do |request| # Removed from linear_request_graph module as it caused unnecessary links in pipelines where - # limber_request is the first step. + # a limber_multiplexing request is the first step. if source_asset&.labware.present? && target_asset&.labware.present? AssetLink.create_edge(source_asset.labware, target_asset.labware) end From 6f565df085cc594500340103e88587fec148bba2 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:26:57 +0000 Subject: [PATCH 026/100] Update sample_public_name for RVI Program - Bait Capture study --- ...date_sample_public_name_for_rvi_study.rake | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/tasks/update_sample_public_name_for_rvi_study.rake diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake new file mode 100644 index 0000000000..6066b8345c --- /dev/null +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -0,0 +1,20 @@ +namespace :samples do + desc "Update sample_public_name for RVI Program - Bait Capture study" + task update_public_name: :environment do + ActiveRecord::Base.connection.execute('SET autocommit = 0') + + ActiveRecord::Base.connection.execute(<<~SQLQUERY) + UPDATE sample_metadata + JOIN samples ON sample_metadata.sample_id = samples.id + JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id + JOIN studies ON study_samples.study_id = studies.id + SET sample_metadata.sample_public_name = samples.sanger_sample_id + WHERE studies.name = 'RVI Program - Bait Capture' AND sanger_sample_id LIKE 'RVI%'; + SQLQUERY + + ActiveRecord::Base.connection.execute('COMMIT') + ActiveRecord::Base.connection.execute('SET autocommit = 1') + + puts "Sample public names updated successfully for RVI Program - Bait Capture study." + end +end \ No newline at end of file From 899fa6f21183820a20cbac67e61ed9701cb5e326 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:34:31 +0000 Subject: [PATCH 027/100] formatting --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index 6066b8345c..bf732d93f1 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,5 +1,5 @@ namespace :samples do - desc "Update sample_public_name for RVI Program - Bait Capture study" + desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do ActiveRecord::Base.connection.execute('SET autocommit = 0') @@ -15,6 +15,6 @@ namespace :samples do ActiveRecord::Base.connection.execute('COMMIT') ActiveRecord::Base.connection.execute('SET autocommit = 1') - puts "Sample public names updated successfully for RVI Program - Bait Capture study." + puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' end -end \ No newline at end of file +end From 9549c99effa7e607f9473b34b95ef5875bdf1ef8 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:40:50 +0000 Subject: [PATCH 028/100] run rubocop --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index bf732d93f1..57c95d8969 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,3 +1,4 @@ +# frozen_string_literal: true namespace :samples do desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do From 4f2c7b76dcccfde0a6d6dda5fb23b5bd806e34b1 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 16:04:04 +0000 Subject: [PATCH 029/100] Convert to a migration to use ORM functionalities and trigger MLHW event updates if needed --- ...pdate_sample_public_name_for_rvi_program.rb | 18 ++++++++++++++++++ db/schema.rb | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb diff --git a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb new file mode 100644 index 0000000000..1e6a4c3a33 --- /dev/null +++ b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb @@ -0,0 +1,18 @@ +class UpdateSamplePublicNameForRviProgram < ActiveRecord::Migration[7.0] + def change + ActiveRecord::Base.connection.execute('SET autocommit = 0') + ActiveRecord::Base.connection.execute(<<~SQLQUERY) + UPDATE sample_metadata + JOIN samples ON sample_metadata.sample_id = samples.id + JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id + JOIN studies ON study_samples.study_id = studies.id + SET sample_metadata.sample_public_name = samples.sanger_sample_id + WHERE sample_metadata.sample_public_name IS NULL + AND sanger_sample_id LIKE 'RVI%' + AND studies.name = 'RVI Program - Bait Capture'; + SQLQUERY + + ActiveRecord::Base.connection.execute('COMMIT') + ActiveRecord::Base.connection.execute('SET autocommit = 1') + end +end diff --git a/db/schema.rb b/db/schema.rb index 187e3c4e3e..d43b0305a1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_12_11_143636) do +ActiveRecord::Schema[7.0].define(version: 2025_01_13_154650) do create_table "aliquot_indices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", options: "ENGINE=InnoDB ROW_FORMAT=DYNAMIC", force: :cascade do |t| t.integer "aliquot_id", null: false t.integer "lane_id", null: false From a06bb3abea0bca38910bb33c74bdbf3f2ec07913 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 16:06:53 +0000 Subject: [PATCH 030/100] remove task as it is moved to migration --- ...date_sample_public_name_for_rvi_study.rake | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 lib/tasks/update_sample_public_name_for_rvi_study.rake diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake deleted file mode 100644 index 57c95d8969..0000000000 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true -namespace :samples do - desc 'Update sample_public_name for RVI Program - Bait Capture study' - task update_public_name: :environment do - ActiveRecord::Base.connection.execute('SET autocommit = 0') - - ActiveRecord::Base.connection.execute(<<~SQLQUERY) - UPDATE sample_metadata - JOIN samples ON sample_metadata.sample_id = samples.id - JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id - JOIN studies ON study_samples.study_id = studies.id - SET sample_metadata.sample_public_name = samples.sanger_sample_id - WHERE studies.name = 'RVI Program - Bait Capture' AND sanger_sample_id LIKE 'RVI%'; - SQLQUERY - - ActiveRecord::Base.connection.execute('COMMIT') - ActiveRecord::Base.connection.execute('SET autocommit = 1') - - puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' - end -end From 74cfd6d602100313ddb0f605e8b10e4e26353de1 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 16:10:00 +0000 Subject: [PATCH 031/100] run format --- .../20250113154650_update_sample_public_name_for_rvi_program.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb index 1e6a4c3a33..72afc46f4c 100644 --- a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb +++ b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class UpdateSamplePublicNameForRviProgram < ActiveRecord::Migration[7.0] def change ActiveRecord::Base.connection.execute('SET autocommit = 0') From 34a6a77ddaeee23dd9174ac2cca2e96674cd3f1a Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:26:57 +0000 Subject: [PATCH 032/100] Update sample_public_name for RVI Program - Bait Capture study --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index 57c95d8969..6066b8345c 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,6 +1,5 @@ -# frozen_string_literal: true namespace :samples do - desc 'Update sample_public_name for RVI Program - Bait Capture study' + desc "Update sample_public_name for RVI Program - Bait Capture study" task update_public_name: :environment do ActiveRecord::Base.connection.execute('SET autocommit = 0') @@ -16,6 +15,6 @@ namespace :samples do ActiveRecord::Base.connection.execute('COMMIT') ActiveRecord::Base.connection.execute('SET autocommit = 1') - puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' + puts "Sample public names updated successfully for RVI Program - Bait Capture study." end -end +end \ No newline at end of file From 3c3cd0914088a2dde44785502f929c199a6fee68 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:34:31 +0000 Subject: [PATCH 033/100] formatting --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index 6066b8345c..bf732d93f1 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,5 +1,5 @@ namespace :samples do - desc "Update sample_public_name for RVI Program - Bait Capture study" + desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do ActiveRecord::Base.connection.execute('SET autocommit = 0') @@ -15,6 +15,6 @@ namespace :samples do ActiveRecord::Base.connection.execute('COMMIT') ActiveRecord::Base.connection.execute('SET autocommit = 1') - puts "Sample public names updated successfully for RVI Program - Bait Capture study." + puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' end -end \ No newline at end of file +end From 0cab318b08b3f3dee2ea890ed5063e4d855ef406 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Wed, 8 Jan 2025 09:40:50 +0000 Subject: [PATCH 034/100] run rubocop --- lib/tasks/update_sample_public_name_for_rvi_study.rake | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake index bf732d93f1..57c95d8969 100644 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ b/lib/tasks/update_sample_public_name_for_rvi_study.rake @@ -1,3 +1,4 @@ +# frozen_string_literal: true namespace :samples do desc 'Update sample_public_name for RVI Program - Bait Capture study' task update_public_name: :environment do From cf5be4ee1e28b6871a66da2033ae3922d02e88fd Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 16:06:53 +0000 Subject: [PATCH 035/100] remove task as it is moved to migration --- ...date_sample_public_name_for_rvi_study.rake | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 lib/tasks/update_sample_public_name_for_rvi_study.rake diff --git a/lib/tasks/update_sample_public_name_for_rvi_study.rake b/lib/tasks/update_sample_public_name_for_rvi_study.rake deleted file mode 100644 index 57c95d8969..0000000000 --- a/lib/tasks/update_sample_public_name_for_rvi_study.rake +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true -namespace :samples do - desc 'Update sample_public_name for RVI Program - Bait Capture study' - task update_public_name: :environment do - ActiveRecord::Base.connection.execute('SET autocommit = 0') - - ActiveRecord::Base.connection.execute(<<~SQLQUERY) - UPDATE sample_metadata - JOIN samples ON sample_metadata.sample_id = samples.id - JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id - JOIN studies ON study_samples.study_id = studies.id - SET sample_metadata.sample_public_name = samples.sanger_sample_id - WHERE studies.name = 'RVI Program - Bait Capture' AND sanger_sample_id LIKE 'RVI%'; - SQLQUERY - - ActiveRecord::Base.connection.execute('COMMIT') - ActiveRecord::Base.connection.execute('SET autocommit = 1') - - puts 'Sample public names updated successfully for RVI Program - Bait Capture study.' - end -end From 62a8de8aebe6a717f7a831bbaff1b05aaa83eb7c Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 16:10:00 +0000 Subject: [PATCH 036/100] run format --- .../20250113154650_update_sample_public_name_for_rvi_program.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb index 1e6a4c3a33..72afc46f4c 100644 --- a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb +++ b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class UpdateSamplePublicNameForRviProgram < ActiveRecord::Migration[7.0] def change ActiveRecord::Base.connection.execute('SET autocommit = 0') From c6f76059542a8071981adf2922fe9686d4383764 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 14 Jan 2025 14:39:01 +0000 Subject: [PATCH 037/100] update to use config_for, not working yet --- app/models/study.rb | 8 ++++---- config/application.rb | 3 +++ config/initializers/ena_requirement_fields.rb | 12 ++++++------ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/models/study.rb b/app/models/study.rb index a4216b1275..52b6c3ea69 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -89,10 +89,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_REASONS_ASSAY = ['phd study', 'assay of no other use', DATA_RELEASE_DELAY_FOR_OTHER].freeze DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - - EBI_LIBRARY_STRATEGY_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_strategy'] - EBI_LIBRARY_SOURCE_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_source'] - EBI_LIBRARY_SELECTION_OPTIONS = EBI_REQUIREMENT_FIELDS['EBI_Library_selection'] + + EBI_LIBRARY_STRATEGY_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_strategy"] + EBI_LIBRARY_SOURCE_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_source"] + EBI_LIBRARY_SELECTION_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_selection"] # Class variables self.per_page = 500 diff --git a/config/application.rb b/config/application.rb index ea862d1b5c..b5e4b75f40 100644 --- a/config/application.rb +++ b/config/application.rb @@ -91,6 +91,9 @@ class Application < Rails::Application config.phi_x = config_for(:phi_x).with_indifferent_access + # add ena requirement fields here + config.ena_requirement_fields = config_for(:ena_requirement_fields) + config.generators do |g| g.test_framework :rspec, fixtures: true, diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb index 7c38c0e5fe..74fc35c0cf 100644 --- a/config/initializers/ena_requirement_fields.rb +++ b/config/initializers/ena_requirement_fields.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true -file_path = Rails.root.join('config/ena_requirement_fields.yml') +# file_path = Rails.root.join('config/ena_requirement_fields.yml') -if File.exist?(file_path) - EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) -else - Rails.logger.warn "File #{file_path} does not exist" -end +# if File.exist?(file_path) +# # EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) +# else +# Rails.logger.warn "File #{file_path} does not exist" +# end From f4a4147eae21ae66a88f3b59be61ae6364bc104f Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Tue, 14 Jan 2025 16:01:41 +0000 Subject: [PATCH 038/100] make config available for all environments --- app/models/study.rb | 8 +- config/ena_requirement_fields.yml | 110 ++++++++++-------- config/initializers/ena_requirement_fields.rb | 9 -- 3 files changed, 68 insertions(+), 59 deletions(-) delete mode 100644 config/initializers/ena_requirement_fields.rb diff --git a/app/models/study.rb b/app/models/study.rb index 52b6c3ea69..d624a31c0c 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -89,10 +89,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_REASONS_ASSAY = ['phd study', 'assay of no other use', DATA_RELEASE_DELAY_FOR_OTHER].freeze DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - - EBI_LIBRARY_STRATEGY_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_strategy"] - EBI_LIBRARY_SOURCE_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_source"] - EBI_LIBRARY_SELECTION_OPTIONS = Rails.configuration.ena_requirement_fields["EBI_Library_selection"] + + EBI_LIBRARY_STRATEGY_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_strategy'] + EBI_LIBRARY_SOURCE_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_source'] + EBI_LIBRARY_SELECTION_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_selection'] # Class variables self.per_page = 500 diff --git a/config/ena_requirement_fields.yml b/config/ena_requirement_fields.yml index 99ed51f724..e487597d3d 100644 --- a/config/ena_requirement_fields.yml +++ b/config/ena_requirement_fields.yml @@ -1,46 +1,64 @@ -EBI_Library_strategy: - - "RNA-Seq" - - "ChIP-Seq" - - "WGS" - - "WXS" - - "AMPLICON" - - "CLONE" - - "POOLCLONE" - - "CLONEEND" - - "Bisulfite-Seq" - - "MNase-Seq" - - "DNase-Hypersensitivity" - - "FAIRE-seq" - - "SELEX" - - "RIP-Seq" - - "ChIA-PET" - - "OTHER" -EBI_Library_source: - - "GENOMIC" - - "TRANSCRIPTOMIC" - - "METAGENOMIC" - - "METATRANSCRIPTOMIC" - - "SYNTHETIC" - - "VIRAL RNA" - - "OTHER" -EBI_Library_selection: - - "RANDOM" - - "PCR" - - "RANDOM PCR" - - "RT-PCR" - - "HMPR" - - "MF" - - "CF-S" - - "CF-M" - - "CF-T" - - "MDA" - - "MSLL" - - "cDNA" - - "ChIP" - - "MNase" - - "DNAse" - - "Hybrid Selection" - - "Reduced Representation" - - "Restriction Digest" - - "5-methylcytidine antibody" - - "MBD2 protein methyl-CpG binding domain" +default: &DEFAULT + EBI_Library_strategy: + - "RNA-Seq" + - "ChIP-Seq" + - "WGS" + - "WXS" + - "AMPLICON" + - "CLONE" + - "POOLCLONE" + - "CLONEEND" + - "Bisulfite-Seq" + - "MNase-Seq" + - "DNase-Hypersensitivity" + - "FAIRE-seq" + - "SELEX" + - "RIP-Seq" + - "ChIA-PET" + - "OTHER" + EBI_Library_source: + - "GENOMIC" + - "TRANSCRIPTOMIC" + - "METAGENOMIC" + - "METATRANSCRIPTOMIC" + - "SYNTHETIC" + - "VIRAL RNA" + - "OTHER" + EBI_Library_selection: + - "RANDOM" + - "PCR" + - "RANDOM PCR" + - "RT-PCR" + - "HMPR" + - "MF" + - "CF-S" + - "CF-M" + - "CF-T" + - "MDA" + - "MSLL" + - "cDNA" + - "ChIP" + - "MNase" + - "DNAse" + - "Hybrid Selection" + - "Reduced Representation" + - "Restriction Digest" + - "5-methylcytidine antibody" + - "MBD2 protein methyl-CpG binding domain" + +development: + <<: *DEFAULT +next_release: + <<: *DEFAULT +test: + <<: *DEFAULT +cucumber: + <<: *DEFAULT +production: + <<: *DEFAULT +staging: + <<: *DEFAULT +staging_2: + <<: *DEFAULT +training: + <<: *DEFAULT diff --git a/config/initializers/ena_requirement_fields.rb b/config/initializers/ena_requirement_fields.rb deleted file mode 100644 index 74fc35c0cf..0000000000 --- a/config/initializers/ena_requirement_fields.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -# file_path = Rails.root.join('config/ena_requirement_fields.yml') - -# if File.exist?(file_path) -# # EBI_REQUIREMENT_FIELDS = YAML.load(File.open(file_path)) -# else -# Rails.logger.warn "File #{file_path} does not exist" -# end From 2b09474f9ba26225bc90eb6edc043e4cf0d8b4bb Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 15 Jan 2025 11:39:47 +0000 Subject: [PATCH 039/100] run migration --- db/schema.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 02df2bc3a4..9523143fcb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_12_11_143636) do +ActiveRecord::Schema[7.0].define(version: 2025_01_08_172249) do create_table "aliquot_indices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", options: "ENGINE=InnoDB ROW_FORMAT=DYNAMIC", force: :cascade do |t| t.integer "aliquot_id", null: false t.integer "lane_id", null: false From 7ac7f2e5adc928d192f3c5bb7f92353c51fc0019 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 15 Jan 2025 13:34:55 +0000 Subject: [PATCH 040/100] add ena fields to XML output test --- ...y_xml_needs_to_be_reverted_to_old_version.feature | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature index 331c614d46..7499459895 100644 --- a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature +++ b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature @@ -205,6 +205,18 @@ Feature: The XML for the sequencescape API Policy Url Policy title ArrayExpress Accession Number + + EBI Library Strategy + RNA-Seq + + + EBI Library Source + GENOMIC + + + EBI Library Selection + RANDOM + """ From f36b3ca3990600635addb29de8110c4e3e0a2c51 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 15 Jan 2025 14:22:51 +0000 Subject: [PATCH 041/100] add ebi fields to tests --- ...391_study_xml_needs_to_be_reverted_to_old_version.feature | 4 ++-- spec/controllers/studies_controller_spec.rb | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature index 7499459895..98f7426cff 100644 --- a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature +++ b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature @@ -207,7 +207,7 @@ Feature: The XML for the sequencescape API ArrayExpress Accession Number EBI Library Strategy - RNA-Seq + WGS EBI Library Source @@ -215,7 +215,7 @@ Feature: The XML for the sequencescape API EBI Library Selection - RANDOM + PCR diff --git a/spec/controllers/studies_controller_spec.rb b/spec/controllers/studies_controller_spec.rb index 81cf178756..87e4de3141 100644 --- a/spec/controllers/studies_controller_spec.rb +++ b/spec/controllers/studies_controller_spec.rb @@ -23,7 +23,10 @@ 'commercially_available' => 'No', 'data_release_study_type_id' => data_release_study_type, 'data_release_strategy' => 'open', - 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id + 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id, + 'ebi_library_strategy' => 'WGS', + 'ebi_library_source' => 'GENOMIC', + 'ebi_library_selection' => 'PCR', } } } From 8516ed72e9cd01865cd845f8830a0641c29a9f99 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Wed, 15 Jan 2025 14:34:49 +0000 Subject: [PATCH 042/100] fix the linting --- spec/controllers/studies_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/studies_controller_spec.rb b/spec/controllers/studies_controller_spec.rb index 87e4de3141..3e22e4bed9 100644 --- a/spec/controllers/studies_controller_spec.rb +++ b/spec/controllers/studies_controller_spec.rb @@ -26,7 +26,7 @@ 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id, 'ebi_library_strategy' => 'WGS', 'ebi_library_source' => 'GENOMIC', - 'ebi_library_selection' => 'PCR', + 'ebi_library_selection' => 'PCR' } } } From 29d84423c21fa6f20549cf25d53b508076b945fe Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 13:50:30 +0000 Subject: [PATCH 043/100] adding the requested new plate purpose removing outdated code responsible for creating links between the source plate and the target purpose plate --- app/models/submission/flexible_request_graph.rb | 2 ++ app/models/submission/linear_request_graph.rb | 8 -------- .../plate_purposes/005_limber_purposes.yml | 5 +++++ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/models/submission/flexible_request_graph.rb b/app/models/submission/flexible_request_graph.rb index a2106ca74f..e892e0f7ba 100644 --- a/app/models/submission/flexible_request_graph.rb +++ b/app/models/submission/flexible_request_graph.rb @@ -110,6 +110,8 @@ def build! # rubocop:todo Metrics/AbcSize .order .create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset) .tap do |request| + # Removed from linear_request_graph module as it caused unnecessary links in pipelines where + # limber_request is the first step. if source_asset&.labware.present? && target_asset&.labware.present? AssetLink.create_edge(source_asset.labware, target_asset.labware) end diff --git a/app/models/submission/linear_request_graph.rb b/app/models/submission/linear_request_graph.rb index 0e2ca84894..d61cc7f2ad 100644 --- a/app/models/submission/linear_request_graph.rb +++ b/app/models/submission/linear_request_graph.rb @@ -88,14 +88,6 @@ def create_request_chain!(request_type_and_multiplier_pairs, source_data_set, mu target_asset = target_assets[index] create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset).tap do |request| - # TODO: AssetLink is supposed to disappear at some point in the future because it makes no real sense - # given that the request graph describes this relationship. - # JG: Its removal only really makes sense if we can walk the request graph in a timely manner. - # We use save not save! as AssetLink throws validation errors when the link already exists - if source_asset&.labware.present? && target_asset&.labware.present? - AssetLink.create_edge(source_asset.labware, target_asset.labware) - end - request.qc_metrics = qc_metrics.compact.uniq request.update_responsibilities! diff --git a/config/default_records/plate_purposes/005_limber_purposes.yml b/config/default_records/plate_purposes/005_limber_purposes.yml index fa603dd415..308b57e3aa 100644 --- a/config/default_records/plate_purposes/005_limber_purposes.yml +++ b/config/default_records/plate_purposes/005_limber_purposes.yml @@ -77,3 +77,8 @@ LTN Lib PCR XP: RVI Lib PCR XP: type: PlatePurpose stock_plate: false + +# A plate provided as ready-made libraries. +# These used to be imported as Stock Plates and then 'fake cherrypicked' onto 'LB Lib PCR XP', which were allowed down the multiplexing pipelines. +# Now, they can be imported and submitted as this more accurate plate purpose. +Library Stock Plate: *limber_input_96 From 2554a12137abf5412673eb3b29c44f81d78ae238 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Mon, 13 Jan 2025 14:46:52 +0000 Subject: [PATCH 044/100] adding the requested new plate purpose removing outdated code responsible for creating links between the source plate and the target purpose plate --- app/models/submission/flexible_request_graph.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/submission/flexible_request_graph.rb b/app/models/submission/flexible_request_graph.rb index e892e0f7ba..46b7897a4d 100644 --- a/app/models/submission/flexible_request_graph.rb +++ b/app/models/submission/flexible_request_graph.rb @@ -111,7 +111,7 @@ def build! # rubocop:todo Metrics/AbcSize .create_request_of_type!(request_type, asset: source_asset, target_asset: target_asset) .tap do |request| # Removed from linear_request_graph module as it caused unnecessary links in pipelines where - # limber_request is the first step. + # a limber_multiplexing request is the first step. if source_asset&.labware.present? && target_asset&.labware.present? AssetLink.create_edge(source_asset.labware, target_asset.labware) end From 42bdfebef929985b118729471479bedfd2bbbad9 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Mon, 20 Jan 2025 10:25:55 +0000 Subject: [PATCH 045/100] feat(study): removes data release prevention comment from study setup page --- app/models/study.rb | 2 +- app/views/shared/metadata/edit/_study.html.erb | 1 - features/studies/data_release_timings.feature | 2 -- spec/factories/study_factories.rb | 3 +-- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/models/study.rb b/app/models/study.rb index f893ad111b..5771efdcee 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -260,7 +260,7 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength required: true, if: :data_release_prevention_reason_other? ) - custom_attribute(:data_release_prevention_reason_comment, required: true) + custom_attribute(:data_release_prevention_reason_comment) custom_attribute(:data_release_prevention_approval) end diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index 8741a9f4aa..905dedfb3c 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -64,7 +64,6 @@ <%= group.text_area(:data_release_prevention_other_comment) %> <% end %> <%= group.text_area(:data_release_prevention_approval) %> - <%= group.text_area(:data_release_prevention_reason_comment) %> <% end %> <% metadata_fields.related_fields(to: :data_release_strategy, in: Study::DATA_RELEASE_STRATEGIES, not: Study::DATA_RELEASE_STRATEGY_NOT_APPLICABLE) do %> <% metadata_fields.related_fields(to: :data_release_timing, when: Study::DATA_RELEASE_TIMING_DELAYED) do %> diff --git a/features/studies/data_release_timings.feature b/features/studies/data_release_timings.feature index 38458bf41a..7b7fbe66f7 100644 --- a/features/studies/data_release_timings.feature +++ b/features/studies/data_release_timings.feature @@ -49,7 +49,6 @@ Feature: Studies have timings for release of their data And I select "never" from "How is the data release to be timed?" And I select "Other (please specify)" from "What is the reason for preventing data release?" And I fill in "Please explain the reason for preventing data release" with "Some reason" - And I fill in "Comment regarding prevention of data release and approval" with "Some reason" And I fill in "If reason for exemption requires DAC approval, what is the approval number?" with "12345" When I press "Create" Then I should be on the study information page for "Testing data release strategies" @@ -59,7 +58,6 @@ Feature: Studies have timings for release of their data When I choose "Not Applicable" from "What is the data release strategy for this study?" And I select "never" from "How is the data release to be timed?" And I select "Protecting IP - DAC approval required" from "What is the reason for preventing data release?" - And I fill in "Comment regarding prevention of data release and approval" with "Some reason" And I fill in "If reason for exemption requires DAC approval, what is the approval number?" with "12345" When I press "Create" Then I should be on the study information page for "Testing data release strategies" diff --git a/spec/factories/study_factories.rb b/spec/factories/study_factories.rb index 9603449b12..2ea773cb5f 100644 --- a/spec/factories/study_factories.rb +++ b/spec/factories/study_factories.rb @@ -55,8 +55,7 @@ data_release_strategy: 'not applicable', data_release_timing: 'never', data_release_prevention_reason: 'Protecting IP - DAC approval required', - data_release_prevention_approval: 'Yes', - data_release_prevention_reason_comment: 'This is the reason context' + data_release_prevention_approval: 'Yes' } study.study_metadata.update!(new_field_values) end From f3349d5cec1547faa6fdbc53e0ec6aad815475fd Mon Sep 17 00:00:00 2001 From: Shiv <44001656+SHIV5T3R@users.noreply.github.com> Date: Mon, 20 Jan 2025 10:42:54 +0000 Subject: [PATCH 046/100] Bumped to v4 --- .github/workflows/ruby_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby_test.yml b/.github/workflows/ruby_test.yml index e8ef8dce8b..01e20b7e53 100644 --- a/.github/workflows/ruby_test.yml +++ b/.github/workflows/ruby_test.yml @@ -101,7 +101,7 @@ jobs: node-version-file: ".nvmrc" # Establish a cache of js modules to improve performance - name: Cache js - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | public/assets From 31a632e8ffeb5d7b5fc66d1704cf8bedbd7ce5b6 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 13:25:54 +0000 Subject: [PATCH 047/100] Unwip LCM Triomics records --- ...plate_purposes.wip.yml => 013_lcm_triomics_plate_purposes.yml} | 0 ..._triomics_catalogue.wip.yml => 013_lcm_triomics_catalogue.yml} | 0 ...st_types.wip.yml => 018_limber_lcm_triomics_request_types.yml} | 0 ...emplates.wip.yml => 014_lcm_triomics_submission_templates.yml} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename config/default_records/plate_purposes/{013_lcm_triomics_plate_purposes.wip.yml => 013_lcm_triomics_plate_purposes.yml} (100%) rename config/default_records/product_catalogues/{013_lcm_triomics_catalogue.wip.yml => 013_lcm_triomics_catalogue.yml} (100%) rename config/default_records/request_types/{018_limber_lcm_triomics_request_types.wip.yml => 018_limber_lcm_triomics_request_types.yml} (100%) rename config/default_records/submission_templates/{014_lcm_triomics_submission_templates.wip.yml => 014_lcm_triomics_submission_templates.yml} (100%) diff --git a/config/default_records/plate_purposes/013_lcm_triomics_plate_purposes.wip.yml b/config/default_records/plate_purposes/013_lcm_triomics_plate_purposes.yml similarity index 100% rename from config/default_records/plate_purposes/013_lcm_triomics_plate_purposes.wip.yml rename to config/default_records/plate_purposes/013_lcm_triomics_plate_purposes.yml diff --git a/config/default_records/product_catalogues/013_lcm_triomics_catalogue.wip.yml b/config/default_records/product_catalogues/013_lcm_triomics_catalogue.yml similarity index 100% rename from config/default_records/product_catalogues/013_lcm_triomics_catalogue.wip.yml rename to config/default_records/product_catalogues/013_lcm_triomics_catalogue.yml diff --git a/config/default_records/request_types/018_limber_lcm_triomics_request_types.wip.yml b/config/default_records/request_types/018_limber_lcm_triomics_request_types.yml similarity index 100% rename from config/default_records/request_types/018_limber_lcm_triomics_request_types.wip.yml rename to config/default_records/request_types/018_limber_lcm_triomics_request_types.yml diff --git a/config/default_records/submission_templates/014_lcm_triomics_submission_templates.wip.yml b/config/default_records/submission_templates/014_lcm_triomics_submission_templates.yml similarity index 100% rename from config/default_records/submission_templates/014_lcm_triomics_submission_templates.wip.yml rename to config/default_records/submission_templates/014_lcm_triomics_submission_templates.yml From 9e9d82413f31b503071ede1a6084aa615a14cd60 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:19:30 +0000 Subject: [PATCH 048/100] Remove processing additional options via poly_metadata from the create action --- app/controllers/studies_controller.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/controllers/studies_controller.rb b/app/controllers/studies_controller.rb index 7b12853eed..d7dfc0a534 100644 --- a/app/controllers/studies_controller.rb +++ b/app/controllers/studies_controller.rb @@ -83,10 +83,6 @@ def create # rubocop:todo Metrics/AbcSize, Metrics/MethodLength @study.save! current_user.grant_manager(@study) User.find(params[:study_owner_id]).grant_owner(@study) if params[:study_owner_id].present? - - # Process Study PolyMetadata options within the same transaction. - poly_metadata_params = params[:poly_metadata] - Study::PolyMetadataHandler.new(@study).process(poly_metadata_params) if poly_metadata_params end flash[:notice] = 'Your study has been created' From 6d8ad2133487d2c097f3e614453b7954e594e09f Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:20:25 +0000 Subject: [PATCH 049/100] Remove processing additional options via poly_metadata from the update action --- app/controllers/studies_controller.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/controllers/studies_controller.rb b/app/controllers/studies_controller.rb index d7dfc0a534..d3a9f5506e 100644 --- a/app/controllers/studies_controller.rb +++ b/app/controllers/studies_controller.rb @@ -114,10 +114,6 @@ def update # rubocop:todo Metrics/AbcSize end end - # Process Study PolyMetadata options within the same transaction. - poly_metadata_params = params[:poly_metadata] - Study::PolyMetadataHandler.new(@study).process(poly_metadata_params) if poly_metadata_params - flash[:notice] = 'Your study has been updated' redirect_to study_path(@study) From b21fe843c14996dd0f90157035c707a6807c2f5a Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:21:41 +0000 Subject: [PATCH 050/100] Remove the poly_metadatum_by_key helper method from the study model --- app/models/study.rb | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/app/models/study.rb b/app/models/study.rb index f893ad111b..5dcd88b709 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -577,19 +577,6 @@ def rebroadcast broadcast end - # Returns the PolyMetadatum object associated with the given key. - # - # @param key [String] The key of the PolyMetadatum to find. - # - # @return [PolyMetadatum, nil] The PolyMetadatum object with the given key, - # or nil if no such PolyMetadatum exists. - # - # @example - # study.poly_metadatum_by_key("sample_key") - def poly_metadatum_by_key(key) - poly_metadata.find { |pm| pm.key == key.to_s } - end - # Helper method for edit dropdowns to support backwards compatibility with old options. # # @return [Array] the list of options for the data release prevention reason dropdown From a1b73868432a48a652d4f07e92ec14d10eeac66d Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:24:34 +0000 Subject: [PATCH 051/100] Remove the handler for processing additional study options via poly_metadata --- app/models/study/poly_metadata_handler.rb | 107 ---------------------- 1 file changed, 107 deletions(-) delete mode 100644 app/models/study/poly_metadata_handler.rb diff --git a/app/models/study/poly_metadata_handler.rb b/app/models/study/poly_metadata_handler.rb deleted file mode 100644 index 7aa7c99f08..0000000000 --- a/app/models/study/poly_metadata_handler.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true - -# Handles the processing of polymorphic metadata for a study. -class Study::PolyMetadataHandler - include ActiveModel::Validations - - # Add the attribute accessor for each polymorphic metadata key here. - - # @!attribute [rw] scrna_core_pbmc_donor_pooling_required_number_of_cells - # @return [Integer] The number of cells required for PBMC donor pooling. - # :reek:Attribute - attr_accessor :scrna_core_pbmc_donor_pooling_required_number_of_cells - - # Add validations for each polymorphic metadata key here. - - validates :scrna_core_pbmc_donor_pooling_required_number_of_cells, - numericality: { - greater_than: 0, - allow_blank: true - } - - # Initializes a new instance of the PolyMetadataHandler class. The studies - # controller creates an instance of this class in the create and update - # actions and passes the study instance. - # - # @param study [Study] The study to handle polymorphic metadata for. - # @return [void] - def initialize(study) - @study = study - end - - # Processes the provided poly_metadta parameters. This involves three steps: - # 1. Assigning the parameters to corresponding attributes. - # 2. Validating the assigned attributes. - # 3. Dispatching the parameters to their specific handler methods. - # The parameters passed from the controller are solely poly_metadata keys and values. - # This is because they are nested under the poly_metadata key in the form fields, - # which allows for straightforward iterations within this class. - # - # @param params [Hash] The poly_metadata parameters to process. - # @return [void] - def process(params) - assign_attributes(params) - validate_attributes - dispatch(params) - end - - # Assigns the given parameters to attributes if they are defined. - # - # @param params [Hash] The parameters to assign. - # @return [void] - def assign_attributes(params) - params.each { |key, value| send(:"#{key}=", value) if self.class.method_defined?(key) } - end - - # Validates the assigned attributes. If any attributes are invalid, their - # errors are added to the study's errors, and an ActiveRecord::RecordInvalid - # exception is raised with the study as its record. Adding errors to the - # study is important to render messages in the UI. Raising the specific - # exception is important to rollback the active transaction. - # - # @return [void] - # @raise [ActiveRecord::RecordInvalid] If any attributes are invalid. - def validate_attributes - return if valid? - errors.each { |error| @study.errors.add(error.attribute, error.message) } - raise ActiveRecord::RecordInvalid, @study - end - - # Dispatches the given parameters by calling a handler method for each one - # if it exists. The convention for the handler methods is to prefix the key - # with 'handle_'. For example, if the key is - # 'scrna_core_pbmc_donor_pooling_required_number_of_cells', the handler method - # would be 'handle_scrna_core_pbmc_donor_pooling_required_number_of_cells'. - # - # @param params [Hash] The parameters to dispatch. - # @return [void] - # :reek:ManualDispatch - def dispatch(params) - params.each do |key, value| - method = "handle_#{key}" - send(method, key, value) if respond_to?(method) - end - end - - # Handles 'scrna_core_pbmc_donor_pooling_required_number_of_cells' parameter. - # A blank value defaults to Limber's configuration. Limber will warn but allow - # proceeding with the default value for the study. If a matching PolyMetadatum - # exists with the same value as the parameter, the method exits early to avoid - # redundant updates. Otherwise, a new PolyMetadatum is created or updated with - # the new value, followed by a save operation. - # - # @param value [String] The value of the - # scrna_core_pbmc_donor_pooling_required_number_of_cells parameter. - # @return [void] - def handle_scrna_core_pbmc_donor_pooling_required_number_of_cells(key, value) - poly_metadatum = @study.poly_metadatum_by_key(key) - - if value.blank? - poly_metadatum&.destroy! - elsif poly_metadatum&.value != value - poly_metadatum ||= PolyMetadatum.new(key: key, metadatable: @study) - poly_metadatum.value = value - poly_metadatum.save! - end - end -end From 2fdb63586c7348baf8a6438ee8a3e35cd06a8583 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:27:50 +0000 Subject: [PATCH 052/100] Remove the partials used for showing and editing additional study options --- app/views/shared/poly_metadata/.gitkeep | 0 .../shared/poly_metadata/edit/_study.html.erb | 30 ------------------- .../shared/poly_metadata/show/_study.html.erb | 14 --------- 3 files changed, 44 deletions(-) delete mode 100644 app/views/shared/poly_metadata/.gitkeep delete mode 100644 app/views/shared/poly_metadata/edit/_study.html.erb delete mode 100644 app/views/shared/poly_metadata/show/_study.html.erb diff --git a/app/views/shared/poly_metadata/.gitkeep b/app/views/shared/poly_metadata/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/app/views/shared/poly_metadata/edit/_study.html.erb b/app/views/shared/poly_metadata/edit/_study.html.erb deleted file mode 100644 index cb4f5cf95b..0000000000 --- a/app/views/shared/poly_metadata/edit/_study.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -<%# This partial contains poly_metadata form fields for a study. It is included -in the form to edit a study, i.e. for creating or updating a study. - -The key assignment is used to avoid repetition of the key string. form_collection -is a helper method that generates a form group with a label and an input field. - -The label is generated using label_tag and the input field is generated using -text_field_tag. The name for label_tag includes poly_metadata_ to match id of -the input field. - -The name for text_field_tag includes poly_metadata[] to create a grouping in the -params hash available in the controller. The value of the input field is set to -the value of the poly_metadatum record found by the key. - -The last argument of the form_collection method is a string that provides -information about the field, which is displayed as a help text under the input -field. -%> -<% key = 'scrna_core_pbmc_donor_pooling_required_number_of_cells' %> -<%= form_collection( - label_tag("poly_metadata_#{key}", - 'scRNA Core PBMC donor pooling required number of cells'), - text_field_tag("poly_metadata[#{key}]", - @study.poly_metadatum_by_key(key)&.value, - class: 'form-control'), - "This option is used to generate the driver file for the scRNA Core " + - "Pipeline's PBMC donor pooling. If this value is not set for each study " + - "involved in the pooling process, Limber will issue a warning. However, " + - "the process can still proceed using the default value configured in Limber." -) %> diff --git a/app/views/shared/poly_metadata/show/_study.html.erb b/app/views/shared/poly_metadata/show/_study.html.erb deleted file mode 100644 index f79d1b1cb2..0000000000 --- a/app/views/shared/poly_metadata/show/_study.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%# This partial contains poly_metadata summary for a study. It is included -in the study details listing. - -The key assignment is used to avoid repetition of the key string. - -If the value of a poly_metadatum is blank, 'Not specified' is displayed. -%> -<% key = 'scrna_core_pbmc_donor_pooling_required_number_of_cells' %> - - - - - -
<%= 'scRNA Core PBMC donor pooling required number of cells' %>:<%= @study.poly_metadatum_by_key(key)&.value || 'Not specified' %>
\ No newline at end of file From 617f5be575bbe0f200e33898389b6044f4a0efc4 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:30:42 +0000 Subject: [PATCH 053/100] Remove the Additional Properties panel from admin edit form for study --- app/views/studies/_managed_study.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/studies/_managed_study.html.erb b/app/views/studies/_managed_study.html.erb index 3b0d37f65d..80844c29d0 100644 --- a/app/views/studies/_managed_study.html.erb +++ b/app/views/studies/_managed_study.html.erb @@ -13,10 +13,6 @@ <%= render partial: "shared/data_release_enforce", locals: { study: study, form: form } -%> <% end %> <% end %> -<%= panel(:info,title:'Additional Properties') do %> - Following fields are optional and specific to certain studies. - <%= render partial: 'shared/poly_metadata/edit/study', locals: { study: study } %> -<% end %> From bd15655f0058502c1ad18dee4f6080f2c1034c69 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:32:01 +0000 Subject: [PATCH 054/100] Remove the Additional Properties panel from the edit form for study --- app/views/studies/_study.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/studies/_study.html.erb b/app/views/studies/_study.html.erb index 0281688c50..3ba170b7c4 100644 --- a/app/views/studies/_study.html.erb +++ b/app/views/studies/_study.html.erb @@ -23,10 +23,6 @@

Properties

<%= render partial: 'shared/metadata/edit/study', locals: { study: study } %> -

Additional Properties

-Following fields are optional and specific to certain studies. -<%= render partial: 'shared/poly_metadata/edit/study', locals: { study: study } %> -
<%= form.submit class: 'btn btn-success' %> <%= link_to "cancel", :back, class: 'btn btn-danger' %> From 1ff65cc95380bd3736e4d5ebce8576d37905d3cb Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:33:03 +0000 Subject: [PATCH 055/100] Remove the additional properties section from study details --- app/views/studies/properties.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/studies/properties.html.erb b/app/views/studies/properties.html.erb index a3e4b47cfb..2dabc1e796 100644 --- a/app/views/studies/properties.html.erb +++ b/app/views/studies/properties.html.erb @@ -31,8 +31,4 @@
<%= render partial: 'shared/metadata/show/study', locals: { study: @study } %> -
-

Additional Properties

- Following fields are optional and specific to certain studies. - <%= render partial: 'shared/poly_metadata/show/study', locals: { study: @study } %>
From c41a02cddbffa46dd3a58cbd3cbe82ef11fd5fd6 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:37:41 +0000 Subject: [PATCH 056/100] Remove specific route for study additional properties --- config/routes.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 3a2223498c..544494cc5a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -336,7 +336,6 @@ resources :primer_panels, except: :destroy resources :studies, except: [:destroy] do - resources :poly_metadata, controller: 'studies/poly_metadata' collection do get :index post :filter From 7b10089bf555bb7ca49b4c93eeb2a6fa62163de0 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 14:42:33 +0000 Subject: [PATCH 057/100] Remove additional option processing tests --- spec/controllers/studies_controller_spec.rb | 123 -------------------- 1 file changed, 123 deletions(-) diff --git a/spec/controllers/studies_controller_spec.rb b/spec/controllers/studies_controller_spec.rb index 81cf178756..cb6bf5ae17 100644 --- a/spec/controllers/studies_controller_spec.rb +++ b/spec/controllers/studies_controller_spec.rb @@ -76,129 +76,6 @@ expect(Study.count).to eq(@initial_study_count) end end - - context 'with poly_metadata options' do - let(:option_key) { 'scrna_core_pbmc_donor_pooling_required_number_of_cells' } - let(:option_value) { '1000' } - let(:params) do - # Extend parent context's params with poly_metadata options. - super().merge('poly_metadata' => { option_key => option_value }) - end - - context 'with specified value' do - it 'creates poly_metadatum with the value' do - poly_metadatum = Study.last.poly_metadatum_by_key(option_key) - expect(poly_metadatum.value).to eq(option_value) - end - end - - context 'with empty value' do - let(:option_value) { '' } # Override parent context's option_value. - - it 'does not create poly_metadatum' do - poly_metadatum = Study.last.poly_metadatum_by_key(option_key) - expect(poly_metadatum).to be_nil - end - end - end - end - - describe '#update' do - context 'with poly_metadata options' do - let(:option_key) { 'scrna_core_pbmc_donor_pooling_required_number_of_cells' } - let(:option_value) { '1000' } - - let!(:study) do - # Create a study without poly_metadata options. - post(:create, params:) - Study.last - end - - let(:update_params) { params.merge('id' => study.id).merge('poly_metadata' => { option_key => option_value }) } - - context 'without existing poly_metadatum' do - context 'with specified value' do - it 'creates poly_metadatum with the value' do - # Existing - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).to be_nil - - post :update, params: update_params - study.reload - - # Updated - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).not_to be_nil - expect(poly_metadatum.value).to eq(option_value) - end - end - - context 'with empty value' do - let(:option_value) { '' } - - it 'does not create poly_metadatum' do - # Existing - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).to be_nil - - post :update, params: update_params - study.reload - - # Updated - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).to be_nil - end - end - end - - context 'with existing poly_metadatum' do - let(:new_option_value) { '2000' } - let(:new_update_params) do - params.merge('poly_metadata' => { option_key => new_option_value }).merge('id' => study.id) - end - - before do - post :update, params: update_params # Update once - study.reload - end - - context 'with specified value' do - it 'creates poly_metadatum with the value' do - # Existing - poly_metadatum_existing = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum_existing).not_to be_nil - expect(poly_metadatum_existing.value).to eq(option_value) - - post :update, params: new_update_params # Update with new value - study.reload - - # Updated - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).not_to be_nil - expect(poly_metadatum.value).to eq(new_option_value) # New value - expect(poly_metadatum.id).to eq(poly_metadatum_existing.id) # Same record - end - end - - context 'with empty value' do - let(:new_option_value) { '' } - - it 'does not create poly_metadatum' do - # Existing - poly_metadatum_existing = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum_existing).not_to be_nil - expect(poly_metadatum_existing.value).to eq(option_value) - - post :update, params: new_update_params # Update with new value - study.reload - - # Updated - poly_metadatum = study.poly_metadatum_by_key(option_key) - expect(poly_metadatum).to be_nil # Deleted - end - end - end - end end describe '#grant_role' do From f04d59ba43edd7dafa0a529be845005252c9d558 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 19:09:19 +0000 Subject: [PATCH 058/100] Sanitise barcodes before checking tubes --- app/uat_actions/uat_actions/tube_submission.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/uat_actions/uat_actions/tube_submission.rb b/app/uat_actions/uat_actions/tube_submission.rb index 190a640704..085d5ff4f3 100644 --- a/app/uat_actions/uat_actions/tube_submission.rb +++ b/app/uat_actions/uat_actions/tube_submission.rb @@ -125,10 +125,12 @@ def validate_tubes_exist barcodes = tube_barcodes .gsub(/(\\[trfvn])+/, ' ') + .strip .split .select do |barcode| Tube.find_by_barcode(barcode).blank? # not found end + return if barcodes.empty? message = format(ERROR_TUBES_DO_NOT_EXIST, barcodes.join(', ')) errors.add(:tube_barcodes, message) From 99f135e5022f3c6060edd2e45c9f01b2e39f8930 Mon Sep 17 00:00:00 2001 From: yoldas Date: Mon, 20 Jan 2025 19:24:27 +0000 Subject: [PATCH 059/100] Allow zero well_count for the reracking test --- app/uat_actions/uat_actions/generate_plates.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/uat_actions/uat_actions/generate_plates.rb b/app/uat_actions/uat_actions/generate_plates.rb index 95b183e738..a631a24120 100644 --- a/app/uat_actions/uat_actions/generate_plates.rb +++ b/app/uat_actions/uat_actions/generate_plates.rb @@ -52,7 +52,8 @@ class UatActions::GeneratePlates < UatActions validates :plate_purpose_name, presence: true validates :plate_count, numericality: { greater_than: 0, smaller_than: 20, only_integer: true, allow_blank: false } - validates :well_count, numericality: { greater_than: 0, only_integer: true, allow_blank: false } + # well_count is zero for the reracking test. + validates :well_count, numericality: { greater_than_or_equal_to: 0, only_integer: true, allow_blank: false } validates :number_of_samples_in_each_well, numericality: { greater_than: 0, From 4fed9808d019c7b3cf28b6421194cdb91dec214f Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 21 Jan 2025 10:14:49 +0000 Subject: [PATCH 060/100] fix: use variables to silence warnings and keep versions consistent --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8209798ccf..de9e9c5faa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,11 @@ ARG CHIPSET=default +ARG RUBY_VERSION=3.3.6 +ARG APPLE_PLATFORM=linux/amd64 # Use the correct base image depending on the architecture # For Apple M1 Chip, run: docker build --build-arg CHIPSET=m1 . -FROM ruby:3.3.6-slim AS base_default -FROM --platform=linux/amd64 ruby:3.2.5-slim AS base_m1 +FROM ruby:${RUBY_VERSION}-slim AS base_default +FROM --platform=${APPLE_PLATFORM} ruby:${RUBY_VERSION}-slim AS base_m1 FROM base_${CHIPSET} AS base COPY .nvmrc /.nvmrc From 312f33743c44f6a699e550ffd2a5329ea525f74e Mon Sep 17 00:00:00 2001 From: Katy Taylor Date: Tue, 21 Jan 2025 10:42:38 +0000 Subject: [PATCH 061/100] bump release version --- .release-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.release-version b/.release-version index bb1535d6e1..2caddc9ec5 100644 --- a/.release-version +++ b/.release-version @@ -1 +1 @@ -14.52.0 +14.53.0 From fe9899425a7a20e567476d7096e10b6c2658ace4 Mon Sep 17 00:00:00 2001 From: wendyyang Date: Tue, 21 Jan 2025 11:31:23 +0000 Subject: [PATCH 062/100] Revert "4409 y24 379 study setup fields to align to the ena database fields" --- app/api/io/study.rb | 2 +- app/models/api/study_io.rb | 3 - app/models/study.rb | 13 ---- .../uat_actions/generate_sample_manifest.rb | 5 +- app/uat_actions/uat_actions/generate_study.rb | 5 +- app/uat_actions/uat_actions/static_records.rb | 5 +- .../shared/metadata/edit/_study.html.erb | 7 +- .../shared/metadata/show/_study.html.erb | 4 -- config/application.rb | 3 - config/ena_requirement_fields.yml | 64 ------------------- config/locales/metadata/en.yml | 14 +--- ...bi_requirement_fields_to_study_metadata.rb | 8 --- db/schema.rb | 3 - ...eeds_to_be_reverted_to_old_version.feature | 12 ---- .../support/step_definitions/study_steps.rb | 5 +- lib/working_setup/standard_seeder.rb | 5 +- spec/controllers/studies_controller_spec.rb | 5 +- spec/factories/study_metadata_factories.rb | 4 -- spec/models/api/study_io_spec.rb | 8 +-- spec/models/study_spec.rb | 17 +---- 20 files changed, 12 insertions(+), 180 deletions(-) delete mode 100644 config/ena_requirement_fields.yml delete mode 100644 db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb diff --git a/app/api/io/study.rb b/app/api/io/study.rb index 3ec028f69e..ff3165c4f4 100644 --- a/app/api/io/study.rb +++ b/app/api/io/study.rb @@ -26,7 +26,7 @@ class Io::Study < Core::Io::Base study_metadata.commercially_available => commercially_available study_metadata.data_release_study_type.name => data_release_sort_of_study study_metadata.data_release_strategy => data_release_strategy -study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group +study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group ' ) end diff --git a/app/models/api/study_io.rb b/app/models/api/study_io.rb index fa289a5bae..5101ca1d33 100644 --- a/app/models/api/study_io.rb +++ b/app/models/api/study_io.rb @@ -101,8 +101,5 @@ def render_class map_attribute_to_json_attribute(:data_deletion_period) map_attribute_to_json_attribute(:contaminated_human_data_access_group) with_association(:program, lookup_by: :id) { map_attribute_to_json_attribute(:name, 'programme') } - map_attribute_to_json_attribute(:ebi_library_strategy) - map_attribute_to_json_attribute(:ebi_library_source) - map_attribute_to_json_attribute(:ebi_library_selection) end end diff --git a/app/models/study.rb b/app/models/study.rb index 34ea31b8f5..21e3f48bf6 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -107,10 +107,6 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze - EBI_LIBRARY_STRATEGY_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_strategy'] - EBI_LIBRARY_SOURCE_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_source'] - EBI_LIBRARY_SELECTION_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_selection'] - # Class variables self.per_page = 500 @@ -218,11 +214,6 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength custom_attribute(:commercially_available, required: true, in: YES_OR_NO) custom_attribute(:study_name_abbreviation) - # add ebi library strategy - custom_attribute(:ebi_library_strategy, required: true, in: EBI_LIBRARY_STRATEGY_OPTIONS) - custom_attribute(:ebi_library_source, required: true, in: EBI_LIBRARY_SOURCE_OPTIONS) - custom_attribute(:ebi_library_selection, required: true, in: EBI_LIBRARY_SELECTION_OPTIONS) - custom_attribute( :data_release_strategy, required: true, @@ -318,10 +309,6 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength allow_blank: true } - validates :ebi_library_strategy, inclusion: { in: EBI_LIBRARY_STRATEGY_OPTIONS } - validates :ebi_library_source, inclusion: { in: EBI_LIBRARY_SOURCE_OPTIONS } - validates :ebi_library_selection, inclusion: { in: EBI_LIBRARY_SELECTION_OPTIONS } - before_validation do |record| record.reference_genome_id = 1 if record.reference_genome_id.blank? diff --git a/app/uat_actions/uat_actions/generate_sample_manifest.rb b/app/uat_actions/uat_actions/generate_sample_manifest.rb index 4314e05702..6f296bf438 100644 --- a/app/uat_actions/uat_actions/generate_sample_manifest.rb +++ b/app/uat_actions/uat_actions/generate_sample_manifest.rb @@ -114,10 +114,7 @@ def study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program, - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + program: UatActions::StaticRecords.program } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/generate_study.rb b/app/uat_actions/uat_actions/generate_study.rb index ff4edfe317..7ca534603f 100644 --- a/app/uat_actions/uat_actions/generate_study.rb +++ b/app/uat_actions/uat_actions/generate_study.rb @@ -31,10 +31,7 @@ def create_study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program, - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + program: UatActions::StaticRecords.program } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/static_records.rb b/app/uat_actions/uat_actions/static_records.rb index 9e44ff9770..a5a4f63e62 100644 --- a/app/uat_actions/uat_actions/static_records.rb +++ b/app/uat_actions/uat_actions/static_records.rb @@ -33,10 +33,7 @@ def self.study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: program, - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + program: program } ).find_or_create_by!(name: 'UAT Study') end diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index e07c9b2777..905dedfb3c 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -9,17 +9,14 @@ <%= metadata_fields.text_field(:prelim_id) %> <%= metadata_fields.select_by_association(:reference_genome, {}, { class: 'select2' }) %> - <%= metadata_fields.select_by_association(:study_type)%> <% metadata_fields.with_options(grouping: 'ENA requirement') do |group| %> <%= group.text_field(:study_study_title) %> + <%= group.select_by_association(:study_type)%> <%= group.text_area(:study_description) %> <%= group.text_area(:study_abstract) %> <%= group.radio_select(:study_sra_hold, Study::STUDY_SRA_HOLDS) %> - <%= metadata_fields.select(:ebi_library_strategy, Study::EBI_LIBRARY_STRATEGY_OPTIONS) %> - <%= metadata_fields.select(:ebi_library_source, Study::EBI_LIBRARY_SOURCE_OPTIONS) %> - <%= metadata_fields.select(:ebi_library_selection, Study::EBI_LIBRARY_SELECTION_OPTIONS) %> - <% end %> + <% end %> <%= metadata_fields.radio_select(:contains_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:contaminated_human_dna, Study::YES_OR_NO) %> diff --git a/app/views/shared/metadata/show/_study.html.erb b/app/views/shared/metadata/show/_study.html.erb index 2f656b6bec..1030ceeb5d 100644 --- a/app/views/shared/metadata/show/_study.html.erb +++ b/app/views/shared/metadata/show/_study.html.erb @@ -14,10 +14,6 @@ <%= group.plain_value(:study_sra_hold) %> <% end %> - <%= metadata_fields.plain_value(:ebi_library_strategy) %> - <%= metadata_fields.plain_value(:ebi_library_source) %> - <%= metadata_fields.plain_value(:ebi_library_selection) %> - <%= metadata_fields.plain_value(:contains_human_dna) %> <%= metadata_fields.plain_value(:contaminated_human_dna) %> <%= metadata_fields.plain_value(:commercially_available) %> diff --git a/config/application.rb b/config/application.rb index 0537ec2f0d..2158cb9183 100644 --- a/config/application.rb +++ b/config/application.rb @@ -91,9 +91,6 @@ class Application < Rails::Application config.phi_x = config_for(:phi_x).with_indifferent_access - # add ena requirement fields here - config.ena_requirement_fields = config_for(:ena_requirement_fields) - config.generators do |g| g.test_framework :rspec, fixtures: true, diff --git a/config/ena_requirement_fields.yml b/config/ena_requirement_fields.yml deleted file mode 100644 index e487597d3d..0000000000 --- a/config/ena_requirement_fields.yml +++ /dev/null @@ -1,64 +0,0 @@ -default: &DEFAULT - EBI_Library_strategy: - - "RNA-Seq" - - "ChIP-Seq" - - "WGS" - - "WXS" - - "AMPLICON" - - "CLONE" - - "POOLCLONE" - - "CLONEEND" - - "Bisulfite-Seq" - - "MNase-Seq" - - "DNase-Hypersensitivity" - - "FAIRE-seq" - - "SELEX" - - "RIP-Seq" - - "ChIA-PET" - - "OTHER" - EBI_Library_source: - - "GENOMIC" - - "TRANSCRIPTOMIC" - - "METAGENOMIC" - - "METATRANSCRIPTOMIC" - - "SYNTHETIC" - - "VIRAL RNA" - - "OTHER" - EBI_Library_selection: - - "RANDOM" - - "PCR" - - "RANDOM PCR" - - "RT-PCR" - - "HMPR" - - "MF" - - "CF-S" - - "CF-M" - - "CF-T" - - "MDA" - - "MSLL" - - "cDNA" - - "ChIP" - - "MNase" - - "DNAse" - - "Hybrid Selection" - - "Reduced Representation" - - "Restriction Digest" - - "5-methylcytidine antibody" - - "MBD2 protein methyl-CpG binding domain" - -development: - <<: *DEFAULT -next_release: - <<: *DEFAULT -test: - <<: *DEFAULT -cucumber: - <<: *DEFAULT -production: - <<: *DEFAULT -staging: - <<: *DEFAULT -staging_2: - <<: *DEFAULT -training: - <<: *DEFAULT diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index 729722ad95..94242d2d54 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -384,6 +384,7 @@ en: study_type_id: label: Study Type + edit_info: "ENA requirement" study_ebi_accession_number: label: ENA Study Accession Number @@ -521,19 +522,6 @@ en: contaminated_human_data_access_group: label: Contaminated Human Data Access Group help: "Allows specified Unix groups and users access to data segregated from the main data product, which is potentially contaminated with human data. This access is typically rarely used and is primarily for validating the separation process, as we may not have the ethical or legal clearance." - - ebi_library_strategy: - label: EBI Library Strategy - edit_info: "ENA requirement" - - ebi_library_source: - label: EBI Library Source - edit_info: "ENA requirement" - - ebi_library_selection: - label: EBI Library Selection - edit_info: "ENA requirement" - project: metadata: project_manager_id: diff --git a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb deleted file mode 100644 index d68f279835..0000000000 --- a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true -class AddEbiRequirementFieldsToStudyMetadata < ActiveRecord::Migration[6.1] - def change - add_column :study_metadata, :ebi_library_strategy, :string, default: nil - add_column :study_metadata, :ebi_library_source, :string, default: nil - add_column :study_metadata, :ebi_library_selection, :string, default: nil - end -end diff --git a/db/schema.rb b/db/schema.rb index 0d04288654..5e1d87ab6a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1548,9 +1548,6 @@ t.string "s3_email_list" t.string "data_deletion_period" t.string "contaminated_human_data_access_group" - t.string "ebi_library_strategy" - t.string "ebi_library_source" - t.string "ebi_library_selection" t.string "data_release_prevention_other_comment" t.index ["faculty_sponsor_id"], name: "index_study_metadata_on_faculty_sponsor_id" t.index ["study_id"], name: "index_study_metadata_on_study_id" diff --git a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature index 60aa0215cf..83ce342e94 100644 --- a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature +++ b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature @@ -205,18 +205,6 @@ Feature: The XML for the sequencescape API Policy Url Policy title ArrayExpress Accession Number - - EBI Library Strategy - WGS - - - EBI Library Source - GENOMIC - - - EBI Library Selection - PCR - """ diff --git a/features/support/step_definitions/study_steps.rb b/features/support/step_definitions/study_steps.rb index 7279b559e9..05798b7dfb 100644 --- a/features/support/step_definitions/study_steps.rb +++ b/features/support/step_definitions/study_steps.rb @@ -332,10 +332,7 @@ def assign_asset_to_study(asset, study_name) data_release_study_type: DataReleaseStudyType.first, contaminated_human_dna: 'No', contains_human_dna: 'Yes', - commercially_available: 'No', - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + commercially_available: 'No' } ) end diff --git a/lib/working_setup/standard_seeder.rb b/lib/working_setup/standard_seeder.rb index 5d85697013..9966b65906 100644 --- a/lib/working_setup/standard_seeder.rb +++ b/lib/working_setup/standard_seeder.rb @@ -140,10 +140,7 @@ def create_study(name) contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program_id: program.id, - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + program_id: program.id } ) do |study| study.activate! diff --git a/spec/controllers/studies_controller_spec.rb b/spec/controllers/studies_controller_spec.rb index 27ab3b5f0b..cb6bf5ae17 100644 --- a/spec/controllers/studies_controller_spec.rb +++ b/spec/controllers/studies_controller_spec.rb @@ -23,10 +23,7 @@ 'commercially_available' => 'No', 'data_release_study_type_id' => data_release_study_type, 'data_release_strategy' => 'open', - 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id, - 'ebi_library_strategy' => 'WGS', - 'ebi_library_source' => 'GENOMIC', - 'ebi_library_selection' => 'PCR' + 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id } } } diff --git a/spec/factories/study_metadata_factories.rb b/spec/factories/study_metadata_factories.rb index 22b81dd446..9994cb4272 100644 --- a/spec/factories/study_metadata_factories.rb +++ b/spec/factories/study_metadata_factories.rb @@ -22,10 +22,6 @@ s3_email_list { 'aa1@sanger.ac.uk;aa2@sanger.ac.uk' } data_deletion_period { '3 months' } - ebi_library_strategy { 'WGS' } - ebi_library_source { 'GENOMIC' } - ebi_library_selection { 'PCR' } - transient { contaminated_human_data_access_group { nil } } after(:build) do |study_metadata, evaluator| diff --git a/spec/models/api/study_io_spec.rb b/spec/models/api/study_io_spec.rb index c4572013f4..7695205f3b 100644 --- a/spec/models/api/study_io_spec.rb +++ b/spec/models/api/study_io_spec.rb @@ -16,10 +16,7 @@ ega_policy_accession_number: 'EGA222', ega_dac_accession_number: 'DAC333', program: create(:program, name: 'General'), - contaminated_human_data_access_group: 'contaminated human data access group test', - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + contaminated_human_data_access_group: 'contaminated human data access group test' } ) end @@ -60,9 +57,6 @@ 'data_deletion_period' => '3 months', 'contaminated_human_data_access_group' => 'contaminated human data access group test', 'programme' => 'General', - 'ebi_library_strategy' => 'WGS', - 'ebi_library_source' => 'GENOMIC', - 'ebi_library_selection' => 'PCR', 'manager' => [ { login: manager.login, email: manager.email, name: manager.name }, { login: manager2.login, email: manager2.email, name: manager2.name } diff --git a/spec/models/study_spec.rb b/spec/models/study_spec.rb index 4a2a3fcbd9..0b26b961e3 100644 --- a/spec/models/study_spec.rb +++ b/spec/models/study_spec.rb @@ -518,10 +518,7 @@ number_of_gigabases_per_sample: 6, hmdmc_approval_number: 'HDMC123456', s3_email_list: 'aa1@sanger.ac.uk;aa2@sanger.ac.uk', - data_deletion_period: '3 months', - ebi_library_strategy: 'WGS', - ebi_library_source: 'GENOMIC', - ebi_library_selection: 'PCR' + data_deletion_period: '3 months' } end @@ -648,18 +645,6 @@ expect(study.study_metadata.faculty_sponsor).not_to be_nil end - it 'must have a ebi library strategy' do - expect(study.study_metadata.ebi_library_strategy).not_to be_nil - end - - it 'must have a ebi library source' do - expect(study.study_metadata.ebi_library_source).not_to be_nil - end - - it 'must have a ebi library selection' do - expect(study.study_metadata.ebi_library_selection).not_to be_nil - end - context 'contaminated human data access group' do it 'defaults to null when not specified' do expect(study.study_metadata.contaminated_human_data_access_group).to be_nil From b6f34ee00b931d07ca60ea13c4bda498feef1b58 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 20:24:00 +0000 Subject: [PATCH 063/100] Update vite to version 5.4.14 --- package.json | 2 +- yarn.lock | 235 ++++++++++++++++++++++++++++----------------------- 2 files changed, 132 insertions(+), 105 deletions(-) diff --git a/package.json b/package.json index 7fe9dffcc8..9c96b1adb3 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "jest": "^26.6.3", "miragejs": "^0.1.48", "prettier": "^3.3.2", - "vite": "^5.3.6", + "vite": "^5.4.14", "vite-plugin-ruby": "^5.0.0", "vite-plugin-vue2": "^1.9.3", "vue-jest": "^3.0.7" diff --git a/yarn.lock b/yarn.lock index 4c0b385b08..aed0ace9ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1924,100 +1924,115 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@rollup/rollup-android-arm-eabi@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz#f0da481244b7d9ea15296b35f7fe39cd81157396" - integrity sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA== +"@rollup/rollup-android-arm-eabi@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.31.0.tgz#d4dd60da0075a6ce9a6c76d71b8204f3e1822285" + integrity sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA== -"@rollup/rollup-android-arm64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz#82ab3c575f4235fb647abea5e08eec6cf325964e" - integrity sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg== +"@rollup/rollup-android-arm64@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.31.0.tgz#25c4d33259a7a2ccd2f52a5ffcc0bb3ab3f0729d" + integrity sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g== "@rollup/rollup-darwin-arm64@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b" integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q== -"@rollup/rollup-darwin-arm64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz#6a530452e68a9152809ce58de1f89597632a085b" - integrity sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ== - -"@rollup/rollup-darwin-x64@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz#47727479f5ca292cf434d7e75af2725b724ecbc7" - integrity sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA== - -"@rollup/rollup-linux-arm-gnueabihf@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz#46193c498aa7902a8db89ac00128060320e84fef" - integrity sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g== - -"@rollup/rollup-linux-arm-musleabihf@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz#22d831fe239643c1d05c98906420325cee439d85" - integrity sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ== - -"@rollup/rollup-linux-arm64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz#19abd33695ec9d588b4a858d122631433084e4a3" - integrity sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ== - -"@rollup/rollup-linux-arm64-musl@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz#d60af8c0b9be424424ff96a0ba19fce65d26f6ab" - integrity sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz#b1194e5ed6d138fdde0842d126fccde74a90f457" - integrity sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ== - -"@rollup/rollup-linux-riscv64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz#f5a635c017b9bff8b856b0221fbd5c0e3373b7ec" - integrity sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg== - -"@rollup/rollup-linux-s390x-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz#f1043d9f4026bf6995863cb3f8dd4732606e4baa" - integrity sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg== +"@rollup/rollup-darwin-arm64@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.31.0.tgz#d137dff254b19163a6b52ac083a71cd055dae844" + integrity sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g== + +"@rollup/rollup-darwin-x64@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.31.0.tgz#58ff20b5dacb797d3adca19f02a21c532f9d55bf" + integrity sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ== + +"@rollup/rollup-freebsd-arm64@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.31.0.tgz#96ce1a241c591ec3e068f4af765d94eddb24e60c" + integrity sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew== + +"@rollup/rollup-freebsd-x64@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.31.0.tgz#e59e7ede505be41f0b4311b0b943f8eb44938467" + integrity sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA== + +"@rollup/rollup-linux-arm-gnueabihf@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.31.0.tgz#e455ca6e4ff35bd46d62201c153352e717000a7b" + integrity sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw== + +"@rollup/rollup-linux-arm-musleabihf@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.31.0.tgz#bc1a93d807d19e70b1e343a5bfea43723bcd6327" + integrity sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg== + +"@rollup/rollup-linux-arm64-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.31.0.tgz#f38bf843f1dc3d5de680caf31084008846e3efae" + integrity sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA== + +"@rollup/rollup-linux-arm64-musl@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.31.0.tgz#b3987a96c18b7287129cf735be2dbf83e94d9d05" + integrity sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g== + +"@rollup/rollup-linux-loongarch64-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.31.0.tgz#0f0324044e71c4f02e9f49e7ec4e347b655b34ee" + integrity sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.31.0.tgz#809479f27f1fd5b4eecd2aa732132ad952d454ba" + integrity sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ== + +"@rollup/rollup-linux-riscv64-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.31.0.tgz#7bc75c4f22db04d3c972f83431739cfa41c6a36e" + integrity sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw== + +"@rollup/rollup-linux-s390x-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.31.0.tgz#cfe8052345c55864d83ae343362cf1912480170e" + integrity sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ== "@rollup/rollup-linux-x64-gnu@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0" integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg== -"@rollup/rollup-linux-x64-gnu@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz#1e781730be445119f06c9df5f185e193bc82c610" - integrity sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g== +"@rollup/rollup-linux-x64-gnu@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.31.0.tgz#c6b048f1e25f3fea5b4bd246232f4d07a159c5a0" + integrity sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g== -"@rollup/rollup-linux-x64-musl@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz#08f12e1965d6f27d6898ff932592121cca6abc4b" - integrity sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ== +"@rollup/rollup-linux-x64-musl@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.31.0.tgz#615273ac52d1a201f4de191cbd3389016a9d7d80" + integrity sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA== -"@rollup/rollup-win32-arm64-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz#4a5dcbbe7af7d41cac92b09798e7c1831da1f599" - integrity sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g== +"@rollup/rollup-win32-arm64-msvc@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.31.0.tgz#32ed85810c1b831c648eca999d68f01255b30691" + integrity sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw== -"@rollup/rollup-win32-ia32-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz#075b0713de627843a73b4cf0e087c56b53e9d780" - integrity sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg== +"@rollup/rollup-win32-ia32-msvc@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.31.0.tgz#d47effada68bcbfdccd30c4a788d42e4542ff4d3" + integrity sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ== "@rollup/rollup-win32-x64-msvc@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202" integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q== -"@rollup/rollup-win32-x64-msvc@4.18.1": - version "4.18.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz#0cb240c147c0dfd0e3eaff4cc060a772d39e155c" - integrity sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw== +"@rollup/rollup-win32-x64-msvc@4.31.0": + version "4.31.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.31.0.tgz#7a2d89a82cf0388d60304964217dd7beac6de645" + integrity sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw== "@sinonjs/commons@^1.7.0": version "1.8.1" @@ -2103,10 +2118,10 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/graceful-fs@^4.1.2": version "4.1.3" @@ -6122,7 +6137,7 @@ postcss@^7.0.36: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4.14, postcss@^8.4.39: +postcss@^8.4.14: version "8.4.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== @@ -6140,6 +6155,15 @@ postcss@^8.4.33: picocolors "^1.0.0" source-map-js "^1.2.0" +postcss@^8.4.43: + version "8.5.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" + integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + postcss@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.0.tgz#15244b9fd65f809b2819682456f0e7e1e30c145b" @@ -6501,29 +6525,32 @@ rollup@^2.58.0: optionalDependencies: fsevents "~2.3.2" -rollup@^4.13.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.1.tgz#18a606df5e76ca53b8a69f2d8eab256d69dda851" - integrity sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A== +rollup@^4.20.0: + version "4.31.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.31.0.tgz#b84af969a0292cb047dce2c0ec5413a9457597a4" + integrity sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.18.1" - "@rollup/rollup-android-arm64" "4.18.1" - "@rollup/rollup-darwin-arm64" "4.18.1" - "@rollup/rollup-darwin-x64" "4.18.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.18.1" - "@rollup/rollup-linux-arm-musleabihf" "4.18.1" - "@rollup/rollup-linux-arm64-gnu" "4.18.1" - "@rollup/rollup-linux-arm64-musl" "4.18.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.18.1" - "@rollup/rollup-linux-riscv64-gnu" "4.18.1" - "@rollup/rollup-linux-s390x-gnu" "4.18.1" - "@rollup/rollup-linux-x64-gnu" "4.18.1" - "@rollup/rollup-linux-x64-musl" "4.18.1" - "@rollup/rollup-win32-arm64-msvc" "4.18.1" - "@rollup/rollup-win32-ia32-msvc" "4.18.1" - "@rollup/rollup-win32-x64-msvc" "4.18.1" + "@rollup/rollup-android-arm-eabi" "4.31.0" + "@rollup/rollup-android-arm64" "4.31.0" + "@rollup/rollup-darwin-arm64" "4.31.0" + "@rollup/rollup-darwin-x64" "4.31.0" + "@rollup/rollup-freebsd-arm64" "4.31.0" + "@rollup/rollup-freebsd-x64" "4.31.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.31.0" + "@rollup/rollup-linux-arm-musleabihf" "4.31.0" + "@rollup/rollup-linux-arm64-gnu" "4.31.0" + "@rollup/rollup-linux-arm64-musl" "4.31.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.31.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.31.0" + "@rollup/rollup-linux-riscv64-gnu" "4.31.0" + "@rollup/rollup-linux-s390x-gnu" "4.31.0" + "@rollup/rollup-linux-x64-gnu" "4.31.0" + "@rollup/rollup-linux-x64-musl" "4.31.0" + "@rollup/rollup-win32-arm64-msvc" "4.31.0" + "@rollup/rollup-win32-ia32-msvc" "4.31.0" + "@rollup/rollup-win32-x64-msvc" "4.31.0" fsevents "~2.3.2" route-recognizer@^0.3.3: @@ -7320,14 +7347,14 @@ vite-plugin-vue2@^1.9.3: source-map "^0.7.3" vue-template-es2015-compiler "^1.9.1" -vite@^5.3.6: - version "5.3.6" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.6.tgz#e097c0a7b79adb2e60bec9ef7907354f09d027bd" - integrity sha512-es78AlrylO8mTVBygC0gTC0FENv0C6T496vvd33ydbjF/mIi9q3XQ9A3NWo5qLGFKywvz10J26813OkLvcQleA== +vite@^5.4.14: + version "5.4.14" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408" + integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA== dependencies: esbuild "^0.21.3" - postcss "^8.4.39" - rollup "^4.13.0" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" From ce4600501a656b2ec062404dda7be2a50d34cb70 Mon Sep 17 00:00:00 2001 From: Shiv <44001656+SHIV5T3R@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:38:07 +0000 Subject: [PATCH 064/100] Removed underlying code for default_includes --- app/resources/api/v2/base_resource.rb | 54 --------------------------- 1 file changed, 54 deletions(-) diff --git a/app/resources/api/v2/base_resource.rb b/app/resources/api/v2/base_resource.rb index a713b3dfaa..e439e6308b 100644 --- a/app/resources/api/v2/base_resource.rb +++ b/app/resources/api/v2/base_resource.rb @@ -47,60 +47,6 @@ def fetchable_fields super - self.class._attributes.select { |_attr, options| options[:writeonly] }.keys - self.class._relationships.select { |_rel_key, rel| rel.options[:writeonly] }.keys end - - # Eager load specified models by default. Useful when attributes are - # dependent on an associated model. - def self.default_includes(*inclusions) - @default_includes = inclusions.freeze - end - - def self.inclusions - @default_includes || [].freeze - end - - # Extends the default behaviour to add our default inclusions if provided - def self.apply_includes(records, options = {}) - if @default_includes.present? - super(records.preload(*inclusions), options) - else - super - end - end - - # The majority of this is lifted from JSONAPI::Resource - # We've had to modify the when Symbol chunk to handle nested includes - # We disable the cops for the shared section to avoid accidental drift - # due to auto-correct. - # rubocop:disable all - def self.resolve_relationship_names_to_relations(resource_klass, model_includes, options = {}) - case model_includes - when Array - return model_includes.map { |value| resolve_relationship_names_to_relations(resource_klass, value, options) } - when Hash - model_includes.keys.each do |key| - relationship = resource_klass._relationships[key] - value = model_includes[key] - model_includes.delete(key) - - # MODIFICATION BEGINS - included_relationships = - resolve_relationship_names_to_relations(relationship.resource_klass, value, options) - model_includes[relationship.relation_name(options)] = relationship.resource_klass.inclusions + - included_relationships - # MODIFICATION ENDS - end - return model_includes - when Symbol - relationship = resource_klass._relationships[model_includes] - - # MODIFICATION BEGINS - # return relationship.relation_name(options) - inclusions = relationship.resource_klass.inclusions - { relationship.relation_name(options) => inclusions } - # MODIFICATION ENDS - end - end - # rubocop:enable all end end end From 72a36b46f633cfccc1b509df83497d7f7d9134e7 Mon Sep 17 00:00:00 2001 From: Shiv <44001656+SHIV5T3R@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:38:15 +0000 Subject: [PATCH 065/100] Removed references to default_includes --- app/resources/api/v2/aliquot_resource.rb | 2 -- app/resources/api/v2/asset_resource.rb | 2 -- app/resources/api/v2/barcode_printer_resource.rb | 2 -- .../api/v2/custom_metadatum_collection_resource.rb | 2 -- app/resources/api/v2/labware_resource.rb | 2 -- app/resources/api/v2/lot_resource.rb | 2 -- app/resources/api/v2/lot_type_resource.rb | 2 -- app/resources/api/v2/plate_resource.rb | 3 --- app/resources/api/v2/plate_template_resource.rb | 2 -- app/resources/api/v2/pre_capture_pool_resource.rb | 2 -- app/resources/api/v2/project_resource.rb | 2 -- app/resources/api/v2/purpose_resource.rb | 2 -- app/resources/api/v2/qcable_resource.rb | 2 -- app/resources/api/v2/receptacle_resource.rb | 2 -- app/resources/api/v2/request_resource.rb | 6 ------ app/resources/api/v2/request_type_resource.rb | 2 -- app/resources/api/v2/sample_manifest_resource.rb | 2 -- app/resources/api/v2/sample_resource.rb | 2 -- app/resources/api/v2/submission_resource.rb | 2 -- app/resources/api/v2/submission_template_resource.rb | 2 -- app/resources/api/v2/tag_group_resource.rb | 2 -- app/resources/api/v2/transfer_request_resource.rb | 2 -- app/resources/api/v2/transfer_template_resource.rb | 2 -- app/resources/api/v2/tube_rack_resource.rb | 2 -- app/resources/api/v2/tube_rack_status_resource.rb | 2 -- app/resources/api/v2/tube_resource.rb | 2 -- app/resources/api/v2/well_resource.rb | 2 -- app/resources/api/v2/work_order_resource.rb | 2 -- 28 files changed, 61 deletions(-) diff --git a/app/resources/api/v2/aliquot_resource.rb b/app/resources/api/v2/aliquot_resource.rb index 79644e6959..ad0b761511 100644 --- a/app/resources/api/v2/aliquot_resource.rb +++ b/app/resources/api/v2/aliquot_resource.rb @@ -14,8 +14,6 @@ module V2 # or look at the [JSONAPI::Resources](http://jsonapi-resources.com/) package for Sequencescape's implementation # of the JSON:API standard. class AliquotResource < BaseResource - default_includes :tag, :tag2 - # Associations has_one :study has_one :project diff --git a/app/resources/api/v2/asset_resource.rb b/app/resources/api/v2/asset_resource.rb index 543572da58..1ad0dcd111 100644 --- a/app/resources/api/v2/asset_resource.rb +++ b/app/resources/api/v2/asset_resource.rb @@ -16,8 +16,6 @@ module V2 class AssetResource < BaseResource attributes :uuid - default_includes :uuid_object - has_one :custom_metadatum_collection has_many :comments, readonly: true diff --git a/app/resources/api/v2/barcode_printer_resource.rb b/app/resources/api/v2/barcode_printer_resource.rb index 2f7abdff51..98acd74a7b 100644 --- a/app/resources/api/v2/barcode_printer_resource.rb +++ b/app/resources/api/v2/barcode_printer_resource.rb @@ -17,8 +17,6 @@ module V2 class BarcodePrinterResource < BaseResource immutable - default_includes :uuid_object - ### # Attributes ### diff --git a/app/resources/api/v2/custom_metadatum_collection_resource.rb b/app/resources/api/v2/custom_metadatum_collection_resource.rb index 9654e144b7..c61b25f4b4 100644 --- a/app/resources/api/v2/custom_metadatum_collection_resource.rb +++ b/app/resources/api/v2/custom_metadatum_collection_resource.rb @@ -14,8 +14,6 @@ module V2 # or look at the [JSONAPI::Resources](http://jsonapi-resources.com/) package for Sequencescape's implementation # of the JSON:API standard. class CustomMetadatumCollectionResource < BaseResource - default_includes :uuid_object, :custom_metadata - ### # Attributes ### diff --git a/app/resources/api/v2/labware_resource.rb b/app/resources/api/v2/labware_resource.rb index 4662fdbb8b..31e6a826cf 100644 --- a/app/resources/api/v2/labware_resource.rb +++ b/app/resources/api/v2/labware_resource.rb @@ -19,8 +19,6 @@ class LabwareResource < BaseResource # is automatically available on plate and tube. include Api::V2::SharedBehaviour::Labware - default_includes :uuid_object, :barcodes - # Custom methods # These shouldn't be used for business logic, and are more about # I/O and isolating implementation details. diff --git a/app/resources/api/v2/lot_resource.rb b/app/resources/api/v2/lot_resource.rb index 5941649dc9..ae29a74f4b 100644 --- a/app/resources/api/v2/lot_resource.rb +++ b/app/resources/api/v2/lot_resource.rb @@ -18,8 +18,6 @@ class LotResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: has_one :lot_type has_one :user diff --git a/app/resources/api/v2/lot_type_resource.rb b/app/resources/api/v2/lot_type_resource.rb index b67d2e15ae..7fb53dbe2f 100644 --- a/app/resources/api/v2/lot_type_resource.rb +++ b/app/resources/api/v2/lot_type_resource.rb @@ -21,8 +21,6 @@ class LotTypeResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: has_one :target_purpose, write_once: true, class_name: 'Purpose' diff --git a/app/resources/api/v2/plate_resource.rb b/app/resources/api/v2/plate_resource.rb index 709574bff3..c8af0e0aed 100644 --- a/app/resources/api/v2/plate_resource.rb +++ b/app/resources/api/v2/plate_resource.rb @@ -47,9 +47,6 @@ class PlateResource < BaseResource # labware include Api::V2::SharedBehaviour::Labware - # TODO: {Y24-213} Possibly this line doesn't actually do anything and could be removed. - default_includes :uuid_object, :barcodes, :plate_purpose, :transfer_requests - ### # Attributes ### diff --git a/app/resources/api/v2/plate_template_resource.rb b/app/resources/api/v2/plate_template_resource.rb index abdb47375d..9486dcab7d 100644 --- a/app/resources/api/v2/plate_template_resource.rb +++ b/app/resources/api/v2/plate_template_resource.rb @@ -18,8 +18,6 @@ class PlateTemplateResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: # Attributes diff --git a/app/resources/api/v2/pre_capture_pool_resource.rb b/app/resources/api/v2/pre_capture_pool_resource.rb index c3755d0102..222f46ee3d 100644 --- a/app/resources/api/v2/pre_capture_pool_resource.rb +++ b/app/resources/api/v2/pre_capture_pool_resource.rb @@ -18,8 +18,6 @@ class PreCapturePoolResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: # Attributes diff --git a/app/resources/api/v2/project_resource.rb b/app/resources/api/v2/project_resource.rb index 25fdb44d63..46af54efaa 100644 --- a/app/resources/api/v2/project_resource.rb +++ b/app/resources/api/v2/project_resource.rb @@ -17,8 +17,6 @@ module V2 class ProjectResource < BaseResource immutable - default_includes :uuid_object - attribute :name attribute :cost_code, delegate: :project_cost_code attribute :uuid, readonly: true diff --git a/app/resources/api/v2/purpose_resource.rb b/app/resources/api/v2/purpose_resource.rb index 1877eec38c..cefef55974 100644 --- a/app/resources/api/v2/purpose_resource.rb +++ b/app/resources/api/v2/purpose_resource.rb @@ -18,8 +18,6 @@ class PurposeResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: # Attributes diff --git a/app/resources/api/v2/qcable_resource.rb b/app/resources/api/v2/qcable_resource.rb index 3ffc30d7b7..29106b4d1d 100644 --- a/app/resources/api/v2/qcable_resource.rb +++ b/app/resources/api/v2/qcable_resource.rb @@ -18,8 +18,6 @@ class QcableResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object, :barcodes - # Associations: has_one :lot has_one :asset, polymorphic: true diff --git a/app/resources/api/v2/receptacle_resource.rb b/app/resources/api/v2/receptacle_resource.rb index b741ce1d6e..eb91622866 100644 --- a/app/resources/api/v2/receptacle_resource.rb +++ b/app/resources/api/v2/receptacle_resource.rb @@ -18,8 +18,6 @@ class ReceptacleResource < BaseResource # attributes and filters. By adding behaviour here we ensure that it # is automatically available on well. include Api::V2::SharedBehaviour::Receptacle - - default_includes :uuid_object end end end diff --git a/app/resources/api/v2/request_resource.rb b/app/resources/api/v2/request_resource.rb index d8225d5ac6..a3d6dbf8f6 100644 --- a/app/resources/api/v2/request_resource.rb +++ b/app/resources/api/v2/request_resource.rb @@ -14,12 +14,6 @@ module V2 # or look at the [JSONAPI::Resources](http://jsonapi-resources.com/) package for Sequencescape's implementation # of the JSON:API standard. class RequestResource < BaseResource - default_includes :uuid_object, - { request_metadata: %i[bait_library primer_panel] }, - :pooled_request, - :order_role, - :submission - # Attributes attribute :uuid, readonly: true attribute :role, write_once: true diff --git a/app/resources/api/v2/request_type_resource.rb b/app/resources/api/v2/request_type_resource.rb index d0b0b5b716..d2fdadae9e 100644 --- a/app/resources/api/v2/request_type_resource.rb +++ b/app/resources/api/v2/request_type_resource.rb @@ -21,8 +21,6 @@ class RequestTypeResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: # Attributes diff --git a/app/resources/api/v2/sample_manifest_resource.rb b/app/resources/api/v2/sample_manifest_resource.rb index 7ca8d7eb9f..ac2baad20c 100644 --- a/app/resources/api/v2/sample_manifest_resource.rb +++ b/app/resources/api/v2/sample_manifest_resource.rb @@ -17,8 +17,6 @@ module V2 class SampleManifestResource < BaseResource immutable - default_includes :uuid_object - # Name of the supplier of the sample manifest attribute :supplier_name end diff --git a/app/resources/api/v2/sample_resource.rb b/app/resources/api/v2/sample_resource.rb index bc20da8565..66dbf3f966 100644 --- a/app/resources/api/v2/sample_resource.rb +++ b/app/resources/api/v2/sample_resource.rb @@ -14,8 +14,6 @@ module V2 # or look at the [JSONAPI::Resources](http://jsonapi-resources.com/) package for Sequencescape's implementation # of the JSON:API standard. class SampleResource < BaseResource - default_includes :uuid_object - has_one :sample_metadata, class_name: 'SampleMetadata', foreign_key_on: :related has_one :sample_manifest diff --git a/app/resources/api/v2/submission_resource.rb b/app/resources/api/v2/submission_resource.rb index aa17be7fe6..75d0a5600b 100644 --- a/app/resources/api/v2/submission_resource.rb +++ b/app/resources/api/v2/submission_resource.rb @@ -21,8 +21,6 @@ class SubmissionResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object, :sequencing_requests - # Associations: # Attributes diff --git a/app/resources/api/v2/submission_template_resource.rb b/app/resources/api/v2/submission_template_resource.rb index cee638c27d..12d81308d6 100644 --- a/app/resources/api/v2/submission_template_resource.rb +++ b/app/resources/api/v2/submission_template_resource.rb @@ -17,8 +17,6 @@ module V2 class SubmissionTemplateResource < BaseResource immutable - default_includes :uuid_object - ### # Attributes ### diff --git a/app/resources/api/v2/tag_group_resource.rb b/app/resources/api/v2/tag_group_resource.rb index 63678f2ed3..2448e15b17 100644 --- a/app/resources/api/v2/tag_group_resource.rb +++ b/app/resources/api/v2/tag_group_resource.rb @@ -18,8 +18,6 @@ class TagGroupResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object, :tags - # Associations: has_one :tag_group_adapter_type, foreign_key: :adapter_type_id, diff --git a/app/resources/api/v2/transfer_request_resource.rb b/app/resources/api/v2/transfer_request_resource.rb index 926aad3570..d6e336a086 100644 --- a/app/resources/api/v2/transfer_request_resource.rb +++ b/app/resources/api/v2/transfer_request_resource.rb @@ -17,8 +17,6 @@ module V2 class TransferRequestResource < BaseResource immutable - default_includes :uuid_object - # Attributes attribute :uuid, readonly: true attribute :state, readonly: true diff --git a/app/resources/api/v2/transfer_template_resource.rb b/app/resources/api/v2/transfer_template_resource.rb index 38492b7f42..c0267b24f7 100644 --- a/app/resources/api/v2/transfer_template_resource.rb +++ b/app/resources/api/v2/transfer_template_resource.rb @@ -17,8 +17,6 @@ module V2 class TransferTemplateResource < BaseResource immutable - default_includes :uuid_object - ### # Attributes ### diff --git a/app/resources/api/v2/tube_rack_resource.rb b/app/resources/api/v2/tube_rack_resource.rb index 0f0e701ad7..40085b8ccb 100644 --- a/app/resources/api/v2/tube_rack_resource.rb +++ b/app/resources/api/v2/tube_rack_resource.rb @@ -20,8 +20,6 @@ class TubeRackResource < BaseResource # Instead this should be done as part of adding authentication to # the API in the security OKR. - default_includes :uuid_object, :barcodes - # Attributes attribute :created_at, readonly: true attribute :labware_barcode, write_once: true diff --git a/app/resources/api/v2/tube_rack_status_resource.rb b/app/resources/api/v2/tube_rack_status_resource.rb index eedfa63f02..a32d21f4a1 100644 --- a/app/resources/api/v2/tube_rack_status_resource.rb +++ b/app/resources/api/v2/tube_rack_status_resource.rb @@ -16,8 +16,6 @@ module V2 class TubeRackStatusResource < BaseResource # model_name / model_hint if required - default_includes :uuid_object - # Associations: # Attributes diff --git a/app/resources/api/v2/tube_resource.rb b/app/resources/api/v2/tube_resource.rb index a06aa2e6df..84279a7485 100644 --- a/app/resources/api/v2/tube_resource.rb +++ b/app/resources/api/v2/tube_resource.rb @@ -19,8 +19,6 @@ class TubeResource < BaseResource immutable - default_includes :uuid_object, :barcodes, :transfer_requests_as_target - ### # Attributes ### diff --git a/app/resources/api/v2/well_resource.rb b/app/resources/api/v2/well_resource.rb index 273d24aec1..93ffd7e39e 100644 --- a/app/resources/api/v2/well_resource.rb +++ b/app/resources/api/v2/well_resource.rb @@ -16,8 +16,6 @@ module V2 class WellResource < BaseResource include Api::V2::SharedBehaviour::Receptacle - default_includes :uuid_object, :map, :transfer_requests_as_target, plate: :barcodes - # Attributes attribute :position, readonly: true diff --git a/app/resources/api/v2/work_order_resource.rb b/app/resources/api/v2/work_order_resource.rb index 174f7fa2d5..e303cd6c53 100644 --- a/app/resources/api/v2/work_order_resource.rb +++ b/app/resources/api/v2/work_order_resource.rb @@ -19,8 +19,6 @@ module V2 class WorkOrderResource < BaseResource IGNORED_METADATA_FIELDS = %w[id request_id created_at updated_at].freeze - default_includes [{ example_request: :request_metadata }, :work_order_type] - # Attributes attribute :at_risk attribute :options, readonly: true From 2ceb2a60542d79d2eac5036487a6351ada1349ea Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Thu, 23 Jan 2025 10:40:51 +0000 Subject: [PATCH 066/100] add rollback migration and remove autocommit --- ...date_sample_public_name_for_rvi_program.rb | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb index 72afc46f4c..fa6bb421b6 100644 --- a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb +++ b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb @@ -1,19 +1,28 @@ # frozen_string_literal: true class UpdateSamplePublicNameForRviProgram < ActiveRecord::Migration[7.0] - def change - ActiveRecord::Base.connection.execute('SET autocommit = 0') - ActiveRecord::Base.connection.execute(<<~SQLQUERY) - UPDATE sample_metadata - JOIN samples ON sample_metadata.sample_id = samples.id - JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id - JOIN studies ON study_samples.study_id = studies.id - SET sample_metadata.sample_public_name = samples.sanger_sample_id - WHERE sample_metadata.sample_public_name IS NULL - AND sanger_sample_id LIKE 'RVI%' - AND studies.name = 'RVI Program - Bait Capture'; + def up + execute(<<~SQLQUERY) + UPDATE sample_metadata + JOIN samples ON sample_metadata.sample_id = samples.id + JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id + JOIN studies ON study_samples.study_id = studies.id + SET sample_metadata.sample_public_name = samples.sanger_sample_id + WHERE sample_metadata.sample_public_name IS NULL + AND sanger_sample_id LIKE 'RVI%' + AND studies.name = 'RVI Program - Bait Capture'; SQLQUERY + end - ActiveRecord::Base.connection.execute('COMMIT') - ActiveRecord::Base.connection.execute('SET autocommit = 1') + def down + execute(<<~SQLQUERY) + UPDATE sample_metadata + JOIN samples ON sample_metadata.sample_id = samples.id + JOIN study_samples ON sample_metadata.sample_id = study_samples.sample_id + JOIN studies ON study_samples.study_id = studies.id + SET sample_metadata.sample_public_name = NULL + WHERE sample_metadata.sample_public_name = samples.sanger_sample_id + AND sanger_sample_id LIKE 'RVI%' + AND studies.name = 'RVI Program - Bait Capture'; + SQLQUERY end end From 99312609c51e46ee2b10a70429230b1a32ffbc99 Mon Sep 17 00:00:00 2001 From: sabrine33 Date: Thu, 23 Jan 2025 10:46:40 +0000 Subject: [PATCH 067/100] run format --- .../20250113154650_update_sample_public_name_for_rvi_program.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb index fa6bb421b6..abeee7fc31 100644 --- a/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb +++ b/db/migrate/20250113154650_update_sample_public_name_for_rvi_program.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true class UpdateSamplePublicNameForRviProgram < ActiveRecord::Migration[7.0] - def up + def up execute(<<~SQLQUERY) UPDATE sample_metadata JOIN samples ON sample_metadata.sample_id = samples.id From 10b3d513422bf68791f6f18c7d9dbdf53f856002 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Thu, 23 Jan 2025 14:24:49 +0000 Subject: [PATCH 068/100] wip: attempt to move to chrome headless new flag --- features/support/capybara.rb | 2 +- spec/spec_helper.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/features/support/capybara.rb b/features/support/capybara.rb index 2379940c1d..81433a7342 100644 --- a/features/support/capybara.rb +++ b/features/support/capybara.rb @@ -12,7 +12,7 @@ options.add_argument('--window-size=1600,3200') options.add_preference('download.default_directory', DownloadHelpers::PATH.to_s) - options.add_argument('--headless=old') + options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('--disable-search-engine-choice-screen') Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 065d068be9..a643ed542d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -52,7 +52,7 @@ options = Selenium::WebDriver::Chrome::Options.new options.add_preference('download.default_directory', DownloadHelpers::PATH.to_s) - options.add_argument('--headless=old') + options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('--disable-search-engine-choice-screen') Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) From d707d62f1572e7b97cb1e1a3a23f74025631859c Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Thu, 23 Jan 2025 17:04:44 +0000 Subject: [PATCH 069/100] Reapply "4409 y24 379 study setup fields to align to the ena database fields" This reverts commit fe9899425a7a20e567476d7096e10b6c2658ace4. revert the revert of ebi_field in study page --- app/api/io/study.rb | 2 +- app/models/api/study_io.rb | 3 + app/models/study.rb | 13 ++++ .../uat_actions/generate_sample_manifest.rb | 5 +- app/uat_actions/uat_actions/generate_study.rb | 5 +- app/uat_actions/uat_actions/static_records.rb | 5 +- .../shared/metadata/edit/_study.html.erb | 7 +- .../shared/metadata/show/_study.html.erb | 4 ++ config/application.rb | 3 + config/ena_requirement_fields.yml | 64 +++++++++++++++++++ config/locales/metadata/en.yml | 14 +++- ...bi_requirement_fields_to_study_metadata.rb | 8 +++ db/schema.rb | 3 + ...eeds_to_be_reverted_to_old_version.feature | 12 ++++ .../support/step_definitions/study_steps.rb | 5 +- lib/working_setup/standard_seeder.rb | 5 +- spec/controllers/studies_controller_spec.rb | 5 +- spec/factories/study_metadata_factories.rb | 4 ++ spec/models/api/study_io_spec.rb | 8 ++- spec/models/study_spec.rb | 17 ++++- 20 files changed, 180 insertions(+), 12 deletions(-) create mode 100644 config/ena_requirement_fields.yml create mode 100644 db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb diff --git a/app/api/io/study.rb b/app/api/io/study.rb index ff3165c4f4..3ec028f69e 100644 --- a/app/api/io/study.rb +++ b/app/api/io/study.rb @@ -26,7 +26,7 @@ class Io::Study < Core::Io::Base study_metadata.commercially_available => commercially_available study_metadata.data_release_study_type.name => data_release_sort_of_study study_metadata.data_release_strategy => data_release_strategy -study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group +study_metadata.contaminated_human_data_access_group => contaminated_human_data_access_group ' ) end diff --git a/app/models/api/study_io.rb b/app/models/api/study_io.rb index 5101ca1d33..fa289a5bae 100644 --- a/app/models/api/study_io.rb +++ b/app/models/api/study_io.rb @@ -101,5 +101,8 @@ def render_class map_attribute_to_json_attribute(:data_deletion_period) map_attribute_to_json_attribute(:contaminated_human_data_access_group) with_association(:program, lookup_by: :id) { map_attribute_to_json_attribute(:name, 'programme') } + map_attribute_to_json_attribute(:ebi_library_strategy) + map_attribute_to_json_attribute(:ebi_library_source) + map_attribute_to_json_attribute(:ebi_library_selection) end end diff --git a/app/models/study.rb b/app/models/study.rb index 21e3f48bf6..34ea31b8f5 100644 --- a/app/models/study.rb +++ b/app/models/study.rb @@ -107,6 +107,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength DATA_RELEASE_DELAY_PERIODS = ['3 months', '6 months', '9 months', '12 months', '18 months'].freeze + EBI_LIBRARY_STRATEGY_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_strategy'] + EBI_LIBRARY_SOURCE_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_source'] + EBI_LIBRARY_SELECTION_OPTIONS = Rails.configuration.ena_requirement_fields['EBI_Library_selection'] + # Class variables self.per_page = 500 @@ -214,6 +218,11 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength custom_attribute(:commercially_available, required: true, in: YES_OR_NO) custom_attribute(:study_name_abbreviation) + # add ebi library strategy + custom_attribute(:ebi_library_strategy, required: true, in: EBI_LIBRARY_STRATEGY_OPTIONS) + custom_attribute(:ebi_library_source, required: true, in: EBI_LIBRARY_SOURCE_OPTIONS) + custom_attribute(:ebi_library_selection, required: true, in: EBI_LIBRARY_SELECTION_OPTIONS) + custom_attribute( :data_release_strategy, required: true, @@ -309,6 +318,10 @@ class Study < ApplicationRecord # rubocop:todo Metrics/ClassLength allow_blank: true } + validates :ebi_library_strategy, inclusion: { in: EBI_LIBRARY_STRATEGY_OPTIONS } + validates :ebi_library_source, inclusion: { in: EBI_LIBRARY_SOURCE_OPTIONS } + validates :ebi_library_selection, inclusion: { in: EBI_LIBRARY_SELECTION_OPTIONS } + before_validation do |record| record.reference_genome_id = 1 if record.reference_genome_id.blank? diff --git a/app/uat_actions/uat_actions/generate_sample_manifest.rb b/app/uat_actions/uat_actions/generate_sample_manifest.rb index 6f296bf438..4314e05702 100644 --- a/app/uat_actions/uat_actions/generate_sample_manifest.rb +++ b/app/uat_actions/uat_actions/generate_sample_manifest.rb @@ -114,7 +114,10 @@ def study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program + program: UatActions::StaticRecords.program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/generate_study.rb b/app/uat_actions/uat_actions/generate_study.rb index 7ca534603f..ff4edfe317 100644 --- a/app/uat_actions/uat_actions/generate_study.rb +++ b/app/uat_actions/uat_actions/generate_study.rb @@ -31,7 +31,10 @@ def create_study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: UatActions::StaticRecords.program + program: UatActions::StaticRecords.program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: study_name) end diff --git a/app/uat_actions/uat_actions/static_records.rb b/app/uat_actions/uat_actions/static_records.rb index a5a4f63e62..9e44ff9770 100644 --- a/app/uat_actions/uat_actions/static_records.rb +++ b/app/uat_actions/uat_actions/static_records.rb @@ -33,7 +33,10 @@ def self.study contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program: program + program: program, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ).find_or_create_by!(name: 'UAT Study') end diff --git a/app/views/shared/metadata/edit/_study.html.erb b/app/views/shared/metadata/edit/_study.html.erb index 905dedfb3c..e07c9b2777 100644 --- a/app/views/shared/metadata/edit/_study.html.erb +++ b/app/views/shared/metadata/edit/_study.html.erb @@ -9,14 +9,17 @@ <%= metadata_fields.text_field(:prelim_id) %> <%= metadata_fields.select_by_association(:reference_genome, {}, { class: 'select2' }) %> + <%= metadata_fields.select_by_association(:study_type)%> <% metadata_fields.with_options(grouping: 'ENA requirement') do |group| %> <%= group.text_field(:study_study_title) %> - <%= group.select_by_association(:study_type)%> <%= group.text_area(:study_description) %> <%= group.text_area(:study_abstract) %> <%= group.radio_select(:study_sra_hold, Study::STUDY_SRA_HOLDS) %> - <% end %> + <%= metadata_fields.select(:ebi_library_strategy, Study::EBI_LIBRARY_STRATEGY_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_source, Study::EBI_LIBRARY_SOURCE_OPTIONS) %> + <%= metadata_fields.select(:ebi_library_selection, Study::EBI_LIBRARY_SELECTION_OPTIONS) %> + <% end %> <%= metadata_fields.radio_select(:contains_human_dna, Study::YES_OR_NO) %> <%= metadata_fields.radio_select(:contaminated_human_dna, Study::YES_OR_NO) %> diff --git a/app/views/shared/metadata/show/_study.html.erb b/app/views/shared/metadata/show/_study.html.erb index 1030ceeb5d..2f656b6bec 100644 --- a/app/views/shared/metadata/show/_study.html.erb +++ b/app/views/shared/metadata/show/_study.html.erb @@ -14,6 +14,10 @@ <%= group.plain_value(:study_sra_hold) %> <% end %> + <%= metadata_fields.plain_value(:ebi_library_strategy) %> + <%= metadata_fields.plain_value(:ebi_library_source) %> + <%= metadata_fields.plain_value(:ebi_library_selection) %> + <%= metadata_fields.plain_value(:contains_human_dna) %> <%= metadata_fields.plain_value(:contaminated_human_dna) %> <%= metadata_fields.plain_value(:commercially_available) %> diff --git a/config/application.rb b/config/application.rb index 2158cb9183..0537ec2f0d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -91,6 +91,9 @@ class Application < Rails::Application config.phi_x = config_for(:phi_x).with_indifferent_access + # add ena requirement fields here + config.ena_requirement_fields = config_for(:ena_requirement_fields) + config.generators do |g| g.test_framework :rspec, fixtures: true, diff --git a/config/ena_requirement_fields.yml b/config/ena_requirement_fields.yml new file mode 100644 index 0000000000..e487597d3d --- /dev/null +++ b/config/ena_requirement_fields.yml @@ -0,0 +1,64 @@ +default: &DEFAULT + EBI_Library_strategy: + - "RNA-Seq" + - "ChIP-Seq" + - "WGS" + - "WXS" + - "AMPLICON" + - "CLONE" + - "POOLCLONE" + - "CLONEEND" + - "Bisulfite-Seq" + - "MNase-Seq" + - "DNase-Hypersensitivity" + - "FAIRE-seq" + - "SELEX" + - "RIP-Seq" + - "ChIA-PET" + - "OTHER" + EBI_Library_source: + - "GENOMIC" + - "TRANSCRIPTOMIC" + - "METAGENOMIC" + - "METATRANSCRIPTOMIC" + - "SYNTHETIC" + - "VIRAL RNA" + - "OTHER" + EBI_Library_selection: + - "RANDOM" + - "PCR" + - "RANDOM PCR" + - "RT-PCR" + - "HMPR" + - "MF" + - "CF-S" + - "CF-M" + - "CF-T" + - "MDA" + - "MSLL" + - "cDNA" + - "ChIP" + - "MNase" + - "DNAse" + - "Hybrid Selection" + - "Reduced Representation" + - "Restriction Digest" + - "5-methylcytidine antibody" + - "MBD2 protein methyl-CpG binding domain" + +development: + <<: *DEFAULT +next_release: + <<: *DEFAULT +test: + <<: *DEFAULT +cucumber: + <<: *DEFAULT +production: + <<: *DEFAULT +staging: + <<: *DEFAULT +staging_2: + <<: *DEFAULT +training: + <<: *DEFAULT diff --git a/config/locales/metadata/en.yml b/config/locales/metadata/en.yml index 94242d2d54..729722ad95 100644 --- a/config/locales/metadata/en.yml +++ b/config/locales/metadata/en.yml @@ -384,7 +384,6 @@ en: study_type_id: label: Study Type - edit_info: "ENA requirement" study_ebi_accession_number: label: ENA Study Accession Number @@ -522,6 +521,19 @@ en: contaminated_human_data_access_group: label: Contaminated Human Data Access Group help: "Allows specified Unix groups and users access to data segregated from the main data product, which is potentially contaminated with human data. This access is typically rarely used and is primarily for validating the separation process, as we may not have the ethical or legal clearance." + + ebi_library_strategy: + label: EBI Library Strategy + edit_info: "ENA requirement" + + ebi_library_source: + label: EBI Library Source + edit_info: "ENA requirement" + + ebi_library_selection: + label: EBI Library Selection + edit_info: "ENA requirement" + project: metadata: project_manager_id: diff --git a/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb new file mode 100644 index 0000000000..d68f279835 --- /dev/null +++ b/db/migrate/20250108172249_add_ebi_requirement_fields_to_study_metadata.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +class AddEbiRequirementFieldsToStudyMetadata < ActiveRecord::Migration[6.1] + def change + add_column :study_metadata, :ebi_library_strategy, :string, default: nil + add_column :study_metadata, :ebi_library_source, :string, default: nil + add_column :study_metadata, :ebi_library_selection, :string, default: nil + end +end diff --git a/db/schema.rb b/db/schema.rb index 5e1d87ab6a..0d04288654 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1548,6 +1548,9 @@ t.string "s3_email_list" t.string "data_deletion_period" t.string "contaminated_human_data_access_group" + t.string "ebi_library_strategy" + t.string "ebi_library_source" + t.string "ebi_library_selection" t.string "data_release_prevention_other_comment" t.index ["faculty_sponsor_id"], name: "index_study_metadata_on_faculty_sponsor_id" t.index ["study_id"], name: "index_study_metadata_on_study_id" diff --git a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature index 83ce342e94..60aa0215cf 100644 --- a/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature +++ b/features/studies/4295391_study_xml_needs_to_be_reverted_to_old_version.feature @@ -205,6 +205,18 @@ Feature: The XML for the sequencescape API Policy Url Policy title ArrayExpress Accession Number + + EBI Library Strategy + WGS + + + EBI Library Source + GENOMIC + + + EBI Library Selection + PCR + """ diff --git a/features/support/step_definitions/study_steps.rb b/features/support/step_definitions/study_steps.rb index 05798b7dfb..7279b559e9 100644 --- a/features/support/step_definitions/study_steps.rb +++ b/features/support/step_definitions/study_steps.rb @@ -332,7 +332,10 @@ def assign_asset_to_study(asset, study_name) data_release_study_type: DataReleaseStudyType.first, contaminated_human_dna: 'No', contains_human_dna: 'Yes', - commercially_available: 'No' + commercially_available: 'No', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) end diff --git a/lib/working_setup/standard_seeder.rb b/lib/working_setup/standard_seeder.rb index 9966b65906..5d85697013 100644 --- a/lib/working_setup/standard_seeder.rb +++ b/lib/working_setup/standard_seeder.rb @@ -140,7 +140,10 @@ def create_study(name) contaminated_human_dna: 'No', contains_human_dna: 'No', commercially_available: 'No', - program_id: program.id + program_id: program.id, + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) do |study| study.activate! diff --git a/spec/controllers/studies_controller_spec.rb b/spec/controllers/studies_controller_spec.rb index cb6bf5ae17..27ab3b5f0b 100644 --- a/spec/controllers/studies_controller_spec.rb +++ b/spec/controllers/studies_controller_spec.rb @@ -23,7 +23,10 @@ 'commercially_available' => 'No', 'data_release_study_type_id' => data_release_study_type, 'data_release_strategy' => 'open', - 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id + 'study_type_id' => StudyType.find_or_create_by(name: 'Not specified').id, + 'ebi_library_strategy' => 'WGS', + 'ebi_library_source' => 'GENOMIC', + 'ebi_library_selection' => 'PCR' } } } diff --git a/spec/factories/study_metadata_factories.rb b/spec/factories/study_metadata_factories.rb index 9994cb4272..22b81dd446 100644 --- a/spec/factories/study_metadata_factories.rb +++ b/spec/factories/study_metadata_factories.rb @@ -22,6 +22,10 @@ s3_email_list { 'aa1@sanger.ac.uk;aa2@sanger.ac.uk' } data_deletion_period { '3 months' } + ebi_library_strategy { 'WGS' } + ebi_library_source { 'GENOMIC' } + ebi_library_selection { 'PCR' } + transient { contaminated_human_data_access_group { nil } } after(:build) do |study_metadata, evaluator| diff --git a/spec/models/api/study_io_spec.rb b/spec/models/api/study_io_spec.rb index 7695205f3b..c4572013f4 100644 --- a/spec/models/api/study_io_spec.rb +++ b/spec/models/api/study_io_spec.rb @@ -16,7 +16,10 @@ ega_policy_accession_number: 'EGA222', ega_dac_accession_number: 'DAC333', program: create(:program, name: 'General'), - contaminated_human_data_access_group: 'contaminated human data access group test' + contaminated_human_data_access_group: 'contaminated human data access group test', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } ) end @@ -57,6 +60,9 @@ 'data_deletion_period' => '3 months', 'contaminated_human_data_access_group' => 'contaminated human data access group test', 'programme' => 'General', + 'ebi_library_strategy' => 'WGS', + 'ebi_library_source' => 'GENOMIC', + 'ebi_library_selection' => 'PCR', 'manager' => [ { login: manager.login, email: manager.email, name: manager.name }, { login: manager2.login, email: manager2.email, name: manager2.name } diff --git a/spec/models/study_spec.rb b/spec/models/study_spec.rb index 0b26b961e3..4a2a3fcbd9 100644 --- a/spec/models/study_spec.rb +++ b/spec/models/study_spec.rb @@ -518,7 +518,10 @@ number_of_gigabases_per_sample: 6, hmdmc_approval_number: 'HDMC123456', s3_email_list: 'aa1@sanger.ac.uk;aa2@sanger.ac.uk', - data_deletion_period: '3 months' + data_deletion_period: '3 months', + ebi_library_strategy: 'WGS', + ebi_library_source: 'GENOMIC', + ebi_library_selection: 'PCR' } end @@ -645,6 +648,18 @@ expect(study.study_metadata.faculty_sponsor).not_to be_nil end + it 'must have a ebi library strategy' do + expect(study.study_metadata.ebi_library_strategy).not_to be_nil + end + + it 'must have a ebi library source' do + expect(study.study_metadata.ebi_library_source).not_to be_nil + end + + it 'must have a ebi library selection' do + expect(study.study_metadata.ebi_library_selection).not_to be_nil + end + context 'contaminated human data access group' do it 'defaults to null when not specified' do expect(study.study_metadata.contaminated_human_data_access_group).to be_nil From 3b505318fb6f2eab4e9dcc94e557611b031c787e Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Mon, 27 Jan 2025 12:12:10 +0000 Subject: [PATCH 070/100] test: add example test cases --- spec/models/well_spec.rb | 66 +++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 893bd4ed1b..a39762877a 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -261,31 +261,46 @@ end end + # TODO: Y24-383 - add assertions for final source and destination volumes + + # rubocop:todo Layout/LineLength + + # stree-ignore [ - [1000, 10, 50, 50, 0, nil], - [1000, 10, 10, 10, 0, nil], - [1000, 10, 20, 10, 0, 10], - [100, 100, 50, 1, 9, nil], - [1000, 1000, 50, 1, 9, nil], - [5000, 1000, 50, 5, 5, nil], - [10, 100, 50, 1, 9, nil], - [1000, 250, 50, 4, 6, nil], - [10_000, 250, 50, 40, 0, nil], - [10_000, 250, 30, 30, 0, nil] - # rubocop:todo Metrics/ParameterLists - ].each do |target_ng, measured_concentration, measured_volume, stock_to_pick, buffer_added, current_volume| - # rubocop:enable Metrics/ParameterLists + { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 10, measured_vol: 20, min_vol:10, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: 10 }, + { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, current_vol: nil }, + { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, current_vol: nil }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, current_vol: nil }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, current_vol: nil },# Y24-382: SQPD-10861 v14.29, b0.00 + { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, current_vol: nil }, # Y24-382: SQPD-10864 v1.00, b49.00 + { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, # Y24-382: SQPD-10866 v50.00, b0.00 + { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil } # Y24-382: SQPD-10868 v50.00, b0.00 + ].each do |cherrypick| + # rubocop:enable Layout/LineLength + target_ng = cherrypick[:target_ng] + concentration = cherrypick[:measured_conc] + measured_volume = cherrypick[:measured_vol] + stock_to_pick = cherrypick[:source_pick_vol] + buffer_added = cherrypick[:buffer_vol] + current_volume = cherrypick[:current_vol] + minimum_volume = cherrypick[:min_vol] + robot_minimum_picking_volume = cherrypick[:min_pick_vol] + context 'cherrypick by nano grams' do before do @source_well = create(:well) @target_well = create(:well) - minimum_volume = 10 maximum_volume = 50 - robot_minimum_picking_volume = 1.0 @source_well.well_attribute.update!( - concentration: measured_concentration, - measured_volume: measured_volume, - current_volume: current_volume + concentration:, + measured_volume:, + current_volume: ) @target_well.volume_to_cherrypick_by_nano_grams( minimum_volume, @@ -296,15 +311,14 @@ ) end - # rubocop:disable Layout/LineLength - it "output stock_to_pick #{stock_to_pick} for a target of #{target_ng} with vol #{measured_volume} and conc #{measured_concentration}" do - expect(@target_well.well_attribute.picked_volume).to eq(stock_to_pick) + # rubocop:todo Layout/LineLength + it "output stock_to_pick #{stock_to_pick} for a target of #{target_ng} with vol #{measured_volume} and conc #{concentration}" do + expect(@target_well.well_attribute.picked_volume.round(2)).to eq(stock_to_pick) end - # rubocop:enable Layout/LineLength - # rubocop:disable Layout/LineLength - it "output buffer #{buffer_added} for a target of #{target_ng} with vol #{measured_volume} and conc #{measured_concentration}" do + # rubocop:todo Layout/LineLength + it "output buffer #{buffer_added} for a target of #{target_ng} with vol #{measured_volume} and conc #{concentration}" do expect(@target_well.well_attribute.buffer_volume).to eq(buffer_added) end # rubocop:enable Layout/LineLength @@ -419,6 +433,7 @@ expect(well.get_buffer_volume + vol_to_pick).to eq(5.0) end + # TODO: Y24-383 - add assertions for final source and destination volumes [ [100.0, 50.0, 100.0, 200.0, nil, 50.0, 50.0, 'Standard scenario, sufficient material, buffer and dna both added'], [ @@ -437,7 +452,8 @@ [100.0, 5.0, 100.0, 2.0, 5.0, 5.0, 98.0, 'Less DNA than robot minimum pick'], [100.0, 50.0, 1.0, 200.0, 5.0, 100.0, 0.0, 'Low concentration, maximum DNA, no buffer'], [120.0, 50.0, 0, 60.0, 5.0, 60.0, 60.0, 'Zero concentration, with less volume than required'], - [120.0, 50.0, 0, 3.0, 5.0, 5.0, 117.0, 'Zero concentration, with less volume than even the minimum robot pick'] + [120.0, 50.0, 0, 3.0, 5.0, 5.0, 117.0, 'Zero concentration, with less volume than even the minimum robot pick'], + [15.0, 50.0, 70.0, 50, 5.0, 10.7, 5.0, 'Y24-382: SQPD-10859 v10.71 b5.00'] # rubocop:todo Metrics/ParameterLists,Layout/LineLength ].each do |final_volume_desired, final_conc_desired, source_concentration, source_volume, robot_minimum_pick_volume, source_volume_obtained, buffer_volume_obtained, scenario| # rubocop:enable Metrics/ParameterLists,Layout/LineLength From 583820e07dd2f3517dd6e3a11b2faa4eccb60558 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Tue, 28 Jan 2025 10:32:25 +0000 Subject: [PATCH 071/100] wip: remove downloaded files after each test --- features/support/step_definitions/robot_verification_steps.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/features/support/step_definitions/robot_verification_steps.rb b/features/support/step_definitions/robot_verification_steps.rb index c974a84895..e8e84d39c9 100644 --- a/features/support/step_definitions/robot_verification_steps.rb +++ b/features/support/step_definitions/robot_verification_steps.rb @@ -109,6 +109,8 @@ generated_lines.each_with_index do |line, index| assert_equal tecan_file_lines[index], line, "Mismatch on line #{index + 2} in #{generated_file}" end + + DownloadHelpers.remove_downloads end Then /^the source plates should be sorted by bed:$/ do |expected_results_table| From d4640b830d11df64a3ade19d32278cec6175ba95 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Tue, 28 Jan 2025 11:49:15 +0000 Subject: [PATCH 072/100] wip: print out buffer volume calculation variables --- app/models/cherrypick/volume_by_nano_grams.rb | 6 ++++++ .../support/step_definitions/robot_verification_steps.rb | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/cherrypick/volume_by_nano_grams.rb b/app/models/cherrypick/volume_by_nano_grams.rb index d6629f0846..6b3ca6367f 100644 --- a/app/models/cherrypick/volume_by_nano_grams.rb +++ b/app/models/cherrypick/volume_by_nano_grams.rb @@ -78,6 +78,12 @@ def volume_to_cherrypick_by_nano_grams( private def calculate_buffer_volume(final_volume_desired, volume_so_far, robot_minimum_picking_volume) + puts("===== TEST Volumes =====") + + puts("final_volume_desired: #{final_volume_desired}") + puts("volume_so_far: #{volume_so_far}") + puts("robot_minimum_picking_volume: #{robot_minimum_picking_volume}") + buffer_to_add = final_volume_desired - volume_so_far return 0 if buffer_to_add <= 0 diff --git a/features/support/step_definitions/robot_verification_steps.rb b/features/support/step_definitions/robot_verification_steps.rb index e8e84d39c9..c974a84895 100644 --- a/features/support/step_definitions/robot_verification_steps.rb +++ b/features/support/step_definitions/robot_verification_steps.rb @@ -109,8 +109,6 @@ generated_lines.each_with_index do |line, index| assert_equal tecan_file_lines[index], line, "Mismatch on line #{index + 2} in #{generated_file}" end - - DownloadHelpers.remove_downloads end Then /^the source plates should be sorted by bed:$/ do |expected_results_table| From 9a806685569d3ec0ffb89ca334e3455897ca2d4e Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Tue, 28 Jan 2025 12:22:36 +0000 Subject: [PATCH 073/100] wip: clear existing value before entering new value for cherrypicking batch volume required --- features/support/step_definitions/robot_verification_steps.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/support/step_definitions/robot_verification_steps.rb b/features/support/step_definitions/robot_verification_steps.rb index c974a84895..9f0f98b574 100644 --- a/features/support/step_definitions/robot_verification_steps.rb +++ b/features/support/step_definitions/robot_verification_steps.rb @@ -13,7 +13,7 @@ step('I follow "Select Plate Template"') step('I select "testtemplate" from "Plate Template"') step('I select "Infinium 670k" from "Output plate purpose"') - step('I fill in "nano_grams_per_micro_litre_volume_required" with "13"') + fill_in('nano_grams_per_micro_litre_volume_required', with: "13", fill_options: { clear: :backspace }) step('I fill in "nano_grams_per_micro_litre_concentration_required" with "50"') fill_in('nano_grams_per_micro_litre_robot_minimum_picking_volume', with: minimum_robot_pick) step('I press "Next step"') From 1ca3ce4cc3af82a8521195e9609be672412c87a1 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Tue, 28 Jan 2025 12:34:20 +0000 Subject: [PATCH 074/100] misc: removes debugging puts and lints --- app/models/cherrypick/volume_by_nano_grams.rb | 6 ------ .../support/step_definitions/robot_verification_steps.rb | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/app/models/cherrypick/volume_by_nano_grams.rb b/app/models/cherrypick/volume_by_nano_grams.rb index 6b3ca6367f..d6629f0846 100644 --- a/app/models/cherrypick/volume_by_nano_grams.rb +++ b/app/models/cherrypick/volume_by_nano_grams.rb @@ -78,12 +78,6 @@ def volume_to_cherrypick_by_nano_grams( private def calculate_buffer_volume(final_volume_desired, volume_so_far, robot_minimum_picking_volume) - puts("===== TEST Volumes =====") - - puts("final_volume_desired: #{final_volume_desired}") - puts("volume_so_far: #{volume_so_far}") - puts("robot_minimum_picking_volume: #{robot_minimum_picking_volume}") - buffer_to_add = final_volume_desired - volume_so_far return 0 if buffer_to_add <= 0 diff --git a/features/support/step_definitions/robot_verification_steps.rb b/features/support/step_definitions/robot_verification_steps.rb index 9f0f98b574..b31f56ac8e 100644 --- a/features/support/step_definitions/robot_verification_steps.rb +++ b/features/support/step_definitions/robot_verification_steps.rb @@ -13,7 +13,7 @@ step('I follow "Select Plate Template"') step('I select "testtemplate" from "Plate Template"') step('I select "Infinium 670k" from "Output plate purpose"') - fill_in('nano_grams_per_micro_litre_volume_required', with: "13", fill_options: { clear: :backspace }) + fill_in('nano_grams_per_micro_litre_volume_required', with: '13', fill_options: { clear: :backspace }) step('I fill in "nano_grams_per_micro_litre_concentration_required" with "50"') fill_in('nano_grams_per_micro_litre_robot_minimum_picking_volume', with: minimum_robot_pick) step('I press "Next step"') From 873a717ef2f8bfda3d2a82062e6cfb78eb11acab Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Thu, 23 Jan 2025 10:53:01 +0000 Subject: [PATCH 075/100] data(sample-metadata): adds migration to update invalid country_of_origin for redundant values --- ...adata_for_invalid_insdc_country_of_origin.rb | 17 +++++++++++++++++ db/schema.rb | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20250123105050_migrate_sample_metadata_for_invalid_insdc_country_of_origin.rb diff --git a/db/migrate/20250123105050_migrate_sample_metadata_for_invalid_insdc_country_of_origin.rb b/db/migrate/20250123105050_migrate_sample_metadata_for_invalid_insdc_country_of_origin.rb new file mode 100644 index 0000000000..007fd70c4f --- /dev/null +++ b/db/migrate/20250123105050_migrate_sample_metadata_for_invalid_insdc_country_of_origin.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true +# Migrates the data related to invalid INSDC countries of origin to their current equivalent +# See DisableInvalidInsdcCountries migration for more details +class MigrateSampleMetadataForInvalidInsdcCountryOfOrigin < ActiveRecord::Migration[7.0] + def change + sample_metadata = + Sample::Metadata.where(country_of_origin: ['not applicable: control sample', 'not applicable: sample group']) + + sample_metadata.each do |sm| + if sm.country_of_origin == 'not applicable: control sample' + sm.update!(country_of_origin: 'missing: control sample') + elsif sm.country_of_origin == 'not applicable: sample group' + sm.update!(country_of_origin: 'missing: sample group') + end + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5e1d87ab6a..732f99214d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2025_01_14_135342) do +ActiveRecord::Schema[7.0].define(version: 2025_01_23_105050) do create_table "aliquot_indices", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", options: "ENGINE=InnoDB ROW_FORMAT=DYNAMIC", force: :cascade do |t| t.integer "aliquot_id", null: false t.integer "lane_id", null: false From 32507f9e5d135144f682ccdd82ac416552a59527 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 28 Jan 2025 15:54:07 +0000 Subject: [PATCH 076/100] build: add unpacked gems --- Gemfile | 6 ++++++ Gemfile.lock | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/Gemfile b/Gemfile index cb46bb3235..ddc384993d 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,10 @@ group :default do gem 'bootsnap' gem 'rails', '~> 7.0.8' + # Previously part of ruby or rails, now separate gems + gem "drb", "~> 2.2" + gem "mutex_m", "~> 0.3.0" + # Fix incompatibility with between Ruby 3.1 and Psych 4 (used for yaml) # see https://stackoverflow.com/a/71192990 gem 'psych', '< 4' @@ -79,6 +83,8 @@ group :default do # - Load the gem from the branch gem 'jsonapi-resources', github: 'sanger/jsonapi-resources', branch: 'develop' + gem "csv", "~> 3.3" # Required by jsonapi-resources, previously part of ruby + # Wraps bunny with connection pooling and consumer process handling gem 'sanger_warren' diff --git a/Gemfile.lock b/Gemfile.lock index 7884dad4d3..194a24c9e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -159,6 +159,7 @@ GEM bigdecimal rexml crass (1.0.6) + csv (3.3.2) cucumber (9.1.2) builder (~> 3.2, >= 3.2.4) cucumber-ci-environment (~> 9.2, >= 9.2.0) @@ -205,6 +206,7 @@ GEM diff-lcs (1.5.1) docile (1.4.0) domain_name (0.6.20240107) + drb (2.2.1) dry-cli (1.0.0) erubi (1.13.1) exception_notification (4.5.0) @@ -284,6 +286,7 @@ GEM multi_test (1.1.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) + mutex_m (0.3.0) mysql2 (0.5.6) net-imap (0.5.5) date @@ -578,11 +581,13 @@ DEPENDENCIES carrierwave caxlsx configatron + csv (~> 3.3) cucumber-rails cucumber_github_formatter daemons database_cleaner delayed_job_active_record + drb (~> 2.2) exception_notification factory_bot_rails flipper (~> 0.25.0) @@ -599,6 +604,7 @@ DEPENDENCIES minitest-profiler mocha multi_json + mutex_m (~> 0.3.0) mysql2 net-ldap nokogiri From e15fbd4b565bf9d9ae2b8d9659d9e29e294c7fbb Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 28 Jan 2025 15:58:22 +0000 Subject: [PATCH 077/100] style: lint --- Gemfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index ddc384993d..2adff1e994 100644 --- a/Gemfile +++ b/Gemfile @@ -7,8 +7,8 @@ group :default do gem 'rails', '~> 7.0.8' # Previously part of ruby or rails, now separate gems - gem "drb", "~> 2.2" - gem "mutex_m", "~> 0.3.0" + gem 'drb', '~> 2.2' + gem 'mutex_m', '~> 0.3.0' # Fix incompatibility with between Ruby 3.1 and Psych 4 (used for yaml) # see https://stackoverflow.com/a/71192990 @@ -83,7 +83,7 @@ group :default do # - Load the gem from the branch gem 'jsonapi-resources', github: 'sanger/jsonapi-resources', branch: 'develop' - gem "csv", "~> 3.3" # Required by jsonapi-resources, previously part of ruby + gem 'csv', '~> 3.3' # Required by jsonapi-resources, previously part of ruby # Wraps bunny with connection pooling and consumer process handling gem 'sanger_warren' From fd6bd4261d3e2cab79f7086ca741e8ff6ff77eb7 Mon Sep 17 00:00:00 2001 From: Wendy Yang Date: Mon, 3 Feb 2025 21:57:34 +0000 Subject: [PATCH 078/100] remove redundent methods --- .../validations_by_template_name.rb | 116 +----------------- app/views/bulk_submissions/_upload.html.erb | 2 +- 2 files changed, 2 insertions(+), 116 deletions(-) diff --git a/app/models/submission/validations_by_template_name.rb b/app/models/submission/validations_by_template_name.rb index ec20128089..863712faf0 100644 --- a/app/models/submission/validations_by_template_name.rb +++ b/app/models/submission/validations_by_template_name.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -# rubocop:todo Metrics/ModuleLength + module Submission::ValidationsByTemplateName include Submission::ScrnaCoreCdnaPrepFeasibilityValidator @@ -41,7 +41,6 @@ def apply_additional_validations_by_template_name when SCRNA_CORE_CDNA_PREP_GEM_X_5P validate_consistent_column_value(HEADER_NUMBER_OF_POOLS) validate_consistent_column_value(HEADER_CELLS_PER_CHIP_WELL) - validate_samples_per_pool_for_labware validate_scrna_core_cdna_prep_feasibility end end @@ -73,21 +72,6 @@ def validate_consistent_column_value(column_header) end end - # Validates the number of samples per pool for labware. - # - # This method checks if the headers for barcode and plate wells are present. - # If they are, it groups the rows by study and project, and processes each group. - # The processing involves determining if the labware is a plate or tube and - # validating the number of samples per pool accordingly. - # - # @return [void] - def validate_samples_per_pool_for_labware - return if headers.index(HEADER_BARCODE).nil? && headers.index(HEADER_PLATE_WELLS).nil? - - grouped_rows = group_rows_by_study_and_project - grouped_rows.each_value { |rows| process_rows(rows) } - end - private # Validates that the specified column has unique values for each study and project. @@ -111,72 +95,6 @@ def validate_unique_values(study_project, rows, index_of_column, column_header) ) end - # Processes the rows to determine the type of labware and validate accordingly. - # - # This method extracts the barcodes and well locations from the rows and determines if the labware is a plate or tube. - # It then calls the appropriate validation method based on the labware type. - # - # @param rows [Array>] The rows of CSV data to process. - # @return [void] - # rubocop:disable Metrics/MethodLength - def process_rows(rows) - barcodes = rows.pluck(headers.index(HEADER_BARCODE)) - well_locations = rows.pluck(headers.index(HEADER_PLATE_WELLS)) - - if plate?(barcodes, well_locations) - validate_for_plates(barcodes, well_locations, rows) - elsif tube?(barcodes, well_locations) - validate_for_tubes(barcodes, rows) - else - errors.add( - :spreadsheet, - 'Invalid labware type. Please provide either a plate barcode with well locations or tube barcodes only' - ) - end - end - # rubocop:enable Metrics/MethodLength - - # Validates the number of samples per pool for plates. - # - # This method finds the plate using the provided barcodes and retrieves the wells located at the specified well - # locations. - # It then calculates the total number of samples per study and project and the number of pools. - # Finally, it validates the number of samples per pool. - # - # @param barcodes [Array] The barcodes of the plates. - # @param well_locations [Array] The well locations on the plate. - # @param rows [Array>] The rows of CSV data to process. - # @return [void] - # rubocop:disable Metrics/AbcSize - def validate_for_plates(barcodes, well_locations, rows) - plate = Plate.find_from_any_barcode(barcodes.uniq.first) - return if plate.nil? - - wells = plate.wells.for_bulk_submission.located_at(well_locations) - total_number_of_samples_per_study_project = wells.map(&:samples).flatten.count.to_i - number_of_pools = rows.pluck(headers.index(HEADER_NUMBER_OF_POOLS)).uniq.first.to_i - - validate_samples_per_pool(rows, total_number_of_samples_per_study_project, number_of_pools) - end - # rubocop:enable Metrics/AbcSize - - # Validates the number of samples per pool for tubes. - # - # This method finds the tubes using the provided barcodes and calculates the total number of samples per study and - # project. - # It then retrieves the number of pools from the rows and validates the number of samples per pool. - # - # @param barcodes [Array] The barcodes of the tubes. - # @param rows [Array>] The rows of CSV data to process. - # @return [void] - def validate_for_tubes(barcodes, rows) - tubes = find_tubes(barcodes) - total_number_of_samples_per_study_project = calculate_total_samples(tubes) - number_of_pools = extract_number_of_pools(rows) - - validate_samples_per_pool(rows, total_number_of_samples_per_study_project, number_of_pools) - end - # Finds the tubes using the provided barcodes. # # This method retrieves the tubes that match the provided barcodes and raises an error if any barcodes are missing. @@ -247,36 +165,4 @@ def plate?(barcodes, well_locations) def tube?(barcodes, well_locations) barcodes.present? && well_locations.all?(&:nil?) end - - # Validates the number of samples per pool. - # - # This method calculates the number of samples per pool by dividing the total number of samples by the number of - # pools. - # It then iterates through each pool and checks if the number of samples per pool is within the allowed range. - # If the number of samples per pool is less than the minimum or greater than the maximum allowed, an error is added. - # - # @param rows [Array>] The rows of CSV data to process. - # @param total_samples [Integer] The total number of samples. - # @param number_of_pools [Integer] The number of pools. - # @return [void] - # rubocop:disable Metrics/MethodLength - def validate_samples_per_pool(rows, total_samples, number_of_pools) - int_division = total_samples / number_of_pools - remainder = total_samples % number_of_pools - - number_of_pools.times do |pool_number| - samples_per_pool = int_division - samples_per_pool += 1 if pool_number < remainder - next unless samples_per_pool > SAMPLES_PER_POOL[:max] || samples_per_pool < SAMPLES_PER_POOL[:min] - - errors.add( - :spreadsheet, - "Number of samples per pool for Study name '#{rows.first[headers.index(HEADER_STUDY_NAME)]}' " \ - "and Project name '#{rows.first[headers.index(HEADER_PROJECT_NAME)]}' " \ - "is less than 5 or greater than 25 for pool number #{pool_number}" - ) - end - end - # rubocop:enable Metrics/MethodLength end -# rubocop:enable Metrics/ModuleLength diff --git a/app/views/bulk_submissions/_upload.html.erb b/app/views/bulk_submissions/_upload.html.erb index b7e8bca0d5..476972a57e 100644 --- a/app/views/bulk_submissions/_upload.html.erb +++ b/app/views/bulk_submissions/_upload.html.erb @@ -3,7 +3,7 @@ none of them will be processed. You will get feedback about any problems.

<% end %> <%= semantic_form_for @bulk_submission, html: { multipart: true } do |form| %> - <%= form.semantic_errors :base %> + <%= form.inputs do %> <%= form.input :spreadsheet, as: :file, required: true %> <%= form.input :encoding, as: :select, collection: Encoding.list.map(&:to_s) %> From b18f7510da5f6e12bd566f928b968c75476571b5 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 4 Feb 2025 11:04:09 +0000 Subject: [PATCH 079/100] test: add maximum_volume as test parameter --- spec/models/well_spec.rb | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index a39762877a..977fc09356 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -267,20 +267,20 @@ # stree-ignore [ - { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 10, measured_vol: 20, min_vol:10, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: 10 }, - { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, current_vol: nil }, - { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, current_vol: nil }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, current_vol: nil }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, current_vol: nil },# Y24-382: SQPD-10861 v14.29, b0.00 - { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, current_vol: nil }, # Y24-382: SQPD-10864 v1.00, b49.00 - { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, # Y24-382: SQPD-10866 v50.00, b0.00 - { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil } # Y24-382: SQPD-10868 v50.00, b0.00 + { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 10, measured_vol: 20, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: 10 }, + { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, current_vol: nil }, + { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, + { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, current_vol: nil }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, current_vol: nil }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, current_vol: nil }, + { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, current_vol: nil },# Y24-382: SQPD-10861 v14.29, b0.00 + { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, current_vol: nil }, # Y24-382: SQPD-10864 v1.00, b49.00 + { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, # Y24-382: SQPD-10866 v50.00, b0.00 + { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil } # Y24-382: SQPD-10868 v50.00, b0.00 ].each do |cherrypick| # rubocop:enable Layout/LineLength target_ng = cherrypick[:target_ng] @@ -290,13 +290,13 @@ buffer_added = cherrypick[:buffer_vol] current_volume = cherrypick[:current_vol] minimum_volume = cherrypick[:min_vol] + maximum_volume = cherrypick[:max_vol] robot_minimum_picking_volume = cherrypick[:min_pick_vol] context 'cherrypick by nano grams' do before do @source_well = create(:well) @target_well = create(:well) - maximum_volume = 50 @source_well.well_attribute.update!( concentration:, measured_volume:, From e512baea7eed1d42a846cf45c854ddd26640a41d Mon Sep 17 00:00:00 2001 From: Seena Nair <55585488+seenanair@users.noreply.github.com> Date: Tue, 4 Feb 2025 11:28:47 +0000 Subject: [PATCH 080/100] fix: add sample collection date to summary view --- app/views/samples/_summary.html.erb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/views/samples/_summary.html.erb b/app/views/samples/_summary.html.erb index ded75ca695..154a5cab5b 100644 --- a/app/views/samples/_summary.html.erb +++ b/app/views/samples/_summary.html.erb @@ -26,6 +26,10 @@
+ + + + From b80add896c3d3b1be3da5ec2402077b9ea366fd3 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 4 Feb 2025 11:37:22 +0000 Subject: [PATCH 081/100] build: add syslog as separate gem --- Gemfile | 1 + Gemfile.lock | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Gemfile b/Gemfile index 2adff1e994..c4ae306bd6 100644 --- a/Gemfile +++ b/Gemfile @@ -9,6 +9,7 @@ group :default do # Previously part of ruby or rails, now separate gems gem 'drb', '~> 2.2' gem 'mutex_m', '~> 0.3.0' + gem 'syslog', '~> 0.2.0' # Fix incompatibility with between Ruby 3.1 and Psych 4 (used for yaml) # see https://stackoverflow.com/a/71192990 diff --git a/Gemfile.lock b/Gemfile.lock index 194a24c9e0..54740a91ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -513,6 +513,7 @@ GEM syntax_tree (>= 2.0.1) sys-uname (1.2.3) ffi (~> 1.1) + syslog (0.2.0) temple (0.10.3) test-prof (1.4.2) thor (1.3.2) @@ -649,6 +650,7 @@ DEPENDENCIES syntax_tree syntax_tree-haml syntax_tree-rbs + syslog (~> 0.2.0) test-prof timecop traceroute From 2aa1b7a6cd708e308302e474a35c66543bbcfb52 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Tue, 4 Feb 2025 12:22:02 +0000 Subject: [PATCH 082/100] test: move estimated_volume to a separate check --- spec/models/well_attribute_spec.rb | 18 ++++++++++++++++++ spec/models/well_spec.rb | 29 +++++++++++++---------------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/spec/models/well_attribute_spec.rb b/spec/models/well_attribute_spec.rb index d4ba87ac3f..b990f55dd6 100644 --- a/spec/models/well_attribute_spec.rb +++ b/spec/models/well_attribute_spec.rb @@ -24,4 +24,22 @@ ) expect(Warren.handler.messages_matching("queue_broadcast.messenger.#{warehouse_message.id}")).to be 2 end + + describe '#estimated_volume' do + it 'returns the estimated volume as a float' do + well_attribute.current_volume = 10 + expect(well_attribute.estimated_volume).to eq 10.0 + end + + it 'returns the current volume if it is set' do + well_attribute.current_volume = 10 + well_attribute.measured_volume = 20 + expect(well_attribute.estimated_volume).to eq 10.0 + end + + it 'returns the measured volume if the current volume is not set' do + well_attribute.measured_volume = 20 + expect(well_attribute.estimated_volume).to eq 20.0 + end + end end diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 977fc09356..e1565d79d2 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -267,20 +267,19 @@ # stree-ignore [ - { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 10, measured_vol: 20, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, current_vol: 10 }, - { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, current_vol: nil }, - { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, current_vol: nil }, - { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, current_vol: nil }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, current_vol: nil }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, current_vol: nil }, - { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, current_vol: nil },# Y24-382: SQPD-10861 v14.29, b0.00 - { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, current_vol: nil }, # Y24-382: SQPD-10864 v1.00, b49.00 - { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil }, # Y24-382: SQPD-10866 v50.00, b0.00 - { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, current_vol: nil } # Y24-382: SQPD-10868 v50.00, b0.00 + { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0 }, + { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0 }, + { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, + { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, + { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5 }, + { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, + { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6 }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0 }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0 }, + { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0 },# Y24-382: SQPD-10861 v14.29, b0.00 + { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49 }, # Y24-382: SQPD-10864 v1.00, b49.00 + { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0 }, # Y24-382: SQPD-10866 v50.00, b0.00 + { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0 } # Y24-382: SQPD-10868 v50.00, b0.00 ].each do |cherrypick| # rubocop:enable Layout/LineLength target_ng = cherrypick[:target_ng] @@ -288,7 +287,6 @@ measured_volume = cherrypick[:measured_vol] stock_to_pick = cherrypick[:source_pick_vol] buffer_added = cherrypick[:buffer_vol] - current_volume = cherrypick[:current_vol] minimum_volume = cherrypick[:min_vol] maximum_volume = cherrypick[:max_vol] robot_minimum_picking_volume = cherrypick[:min_pick_vol] @@ -300,7 +298,6 @@ @source_well.well_attribute.update!( concentration:, measured_volume:, - current_volume: ) @target_well.volume_to_cherrypick_by_nano_grams( minimum_volume, From bc7de79ebdf6401d07e0c10844559ed05007ed92 Mon Sep 17 00:00:00 2001 From: Seena Nair <55585488+seenanair@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:10:01 +0000 Subject: [PATCH 083/100] test: include sample collection date in samples feature --- features/samples/samples.feature | 2 ++ 1 file changed, 2 insertions(+) diff --git a/features/samples/samples.feature b/features/samples/samples.feature index c676d24689..49203de51b 100644 --- a/features/samples/samples.feature +++ b/features/samples/samples.feature @@ -26,6 +26,7 @@ Feature: Show/update samples Then I should see "Sequencescape Sample ID" And I should see "Public Name" And I should see "TAXON ID" + And I should see "Sample Collection Date" Scenario: All sample metadata should show in genotyping workflow Given I have a sample called "sample_test" with metadata @@ -37,6 +38,7 @@ Feature: Show/update samples Then I should see "Sequencescape Sample ID" And I should see "Public Name" And I should see "TAXON ID" + And I should see "Sample Collection Date" Scenario: User is an administrator From 292a30be0611e855eef66b4aca6ac6f90d771873 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Wed, 5 Feb 2025 09:02:42 +0000 Subject: [PATCH 084/100] test: add assertions for amount final source and destination volumes --- spec/models/well_spec.rb | 64 ++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index e1565d79d2..81ea6d5529 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -261,25 +261,23 @@ end end - # TODO: Y24-383 - add assertions for final source and destination volumes - # rubocop:todo Layout/LineLength # stree-ignore [ - { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0 }, - { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0 }, - { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, - { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, - { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5 }, - { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9 }, - { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6 }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0 }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0 }, - { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0 },# Y24-382: SQPD-10861 v14.29, b0.00 - { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49 }, # Y24-382: SQPD-10864 v1.00, b49.00 - { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0 }, # Y24-382: SQPD-10866 v50.00, b0.00 - { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0 } # Y24-382: SQPD-10868 v50.00, b0.00 + { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, + { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, + { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, + { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, + { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, final_src_vol: 45, final_dest_vol: 10 }, + { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, + { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, final_src_vol: 46, final_dest_vol: 10 }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, final_src_vol: 10, final_dest_vol: 10 }, + { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, + { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, final_src_vol: 35.7143, final_dest_vol: 10 }, # Y24-382: SQPD-10861 v14.29, b0.00 + { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, final_src_vol: 0, final_dest_vol: 50 }, # Y24-382: SQPD-10864 v1.00, b49.00 + { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 50, final_dest_vol: 50 }, # Y24-382: SQPD-10866 v50.00, b0.00 + { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 50, final_dest_vol: 50 }, # Y24-382: SQPD-10868 v50.00, b0.00 ].each do |cherrypick| # rubocop:enable Layout/LineLength target_ng = cherrypick[:target_ng] @@ -290,15 +288,14 @@ minimum_volume = cherrypick[:min_vol] maximum_volume = cherrypick[:max_vol] robot_minimum_picking_volume = cherrypick[:min_pick_vol] + final_source_volume = cherrypick[:final_src_vol] + final_destination_volume = cherrypick[:final_dest_vol] context 'cherrypick by nano grams' do before do @source_well = create(:well) @target_well = create(:well) - @source_well.well_attribute.update!( - concentration:, - measured_volume:, - ) + @source_well.well_attribute.update!(concentration:, measured_volume:) @target_well.volume_to_cherrypick_by_nano_grams( minimum_volume, maximum_volume, @@ -308,17 +305,28 @@ ) end - # rubocop:todo Layout/LineLength - it "output stock_to_pick #{stock_to_pick} for a target of #{target_ng} with vol #{measured_volume} and conc #{concentration}" do - expect(@target_well.well_attribute.picked_volume.round(2)).to eq(stock_to_pick) - end - # rubocop:enable Layout/LineLength + context "for a target of #{target_ng} with conc #{concentration} and vol #{measured_volume}" do + it "output stock_to_pick #{stock_to_pick}" do + expect(@target_well.well_attribute.picked_volume.round(2)).to eq(stock_to_pick) + end - # rubocop:todo Layout/LineLength - it "output buffer #{buffer_added} for a target of #{target_ng} with vol #{measured_volume} and conc #{concentration}" do - expect(@target_well.well_attribute.buffer_volume).to eq(buffer_added) + it "output buffer #{buffer_added}" do + expect(@target_well.well_attribute.buffer_volume).to eq(buffer_added) + end + + it "leaves a final source volume of #{final_source_volume}" do + # mirrored from CherrypickRequest.reduce_source_volume + # asset.get_current_volume - target_asset.get_picked_volume + current_volume = @source_well.get_current_volume + picked_volume = @target_well.get_picked_volume + calculated_volume = current_volume - picked_volume + expect(calculated_volume.round(2)).to eq(final_source_volume.round(2)) + end + + it "provides a final destination volume of #{final_destination_volume}" do + expect(@target_well.well_attribute.current_volume).to eq(final_destination_volume) + end end - # rubocop:enable Layout/LineLength end end From 708a6e46a01cc5a779e8f238056f3e5bf44b993e Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Wed, 5 Feb 2025 14:12:21 +0000 Subject: [PATCH 085/100] test: refactor value assignment --- spec/models/well_spec.rb | 46 +++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 81ea6d5529..911b84357b 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -439,29 +439,31 @@ end # TODO: Y24-383 - add assertions for final source and destination volumes + # rubocop:todo Layout/LineLength + + # stree-ignore [ - [100.0, 50.0, 100.0, 200.0, nil, 50.0, 50.0, 'Standard scenario, sufficient material, buffer and dna both added'], - [ - 100.0, - 50.0, - 100.0, - 20.0, - nil, - 20.0, - 80.0, - 'Insufficient source material for concentration or volume. Make up with buffer' - ], - [100.0, 5.0, 100.0, 2.0, nil, 2.0, 98.0, 'As above, just more extreme'], - [100.0, 5.0, 100.0, 5.0, 5.0, 5.0, 95.0, 'High concentration, minimum robot volume increases source pick'], - [100.0, 50.0, 52.0, 200.0, 5.0, 96.2, 5.0, 'Lowish concentration, non zero, but less than robot buffer required'], - [100.0, 5.0, 100.0, 2.0, 5.0, 5.0, 98.0, 'Less DNA than robot minimum pick'], - [100.0, 50.0, 1.0, 200.0, 5.0, 100.0, 0.0, 'Low concentration, maximum DNA, no buffer'], - [120.0, 50.0, 0, 60.0, 5.0, 60.0, 60.0, 'Zero concentration, with less volume than required'], - [120.0, 50.0, 0, 3.0, 5.0, 5.0, 117.0, 'Zero concentration, with less volume than even the minimum robot pick'], - [15.0, 50.0, 70.0, 50, 5.0, 10.7, 5.0, 'Y24-382: SQPD-10859 v10.71 b5.00'] - # rubocop:todo Metrics/ParameterLists,Layout/LineLength - ].each do |final_volume_desired, final_conc_desired, source_concentration, source_volume, robot_minimum_pick_volume, source_volume_obtained, buffer_volume_obtained, scenario| - # rubocop:enable Metrics/ParameterLists,Layout/LineLength + { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, + { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, + { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, scenario: 'As above, just more extreme' }, + { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, scenario: 'High concentration, minimum robot volume increases source pick' }, + { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, + { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, scenario: 'Less DNA than robot minimum pick' }, + { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, scenario: 'Low concentration, maximum DNA, no buffer' }, + { final_volume_desired: 120.0, final_conc_desired: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, scenario: 'Zero concentration, with less volume than required' }, + { final_volume_desired: 120.0, final_conc_desired: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, + { final_volume_desired: 15.0, final_conc_desired: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, + ].each do |cherrypick| + # rubocop:enable Layout/LineLength + final_volume_desired = cherrypick[:final_volume_desired] + final_conc_desired = cherrypick[:final_conc_desired] + source_concentration = cherrypick[:source_concentration] + source_volume = cherrypick[:source_volume] + robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] + source_volume_obtained = cherrypick[:source_volume_obtained] + buffer_volume_obtained = cherrypick[:buffer_volume_obtained] + scenario = cherrypick[:scenario] + context "when testing #{scenario}" do before do @result_volume = From 090f7f525bbdbeb97f044cca3dba3b2aeb2f05cf Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Wed, 5 Feb 2025 14:13:53 +0000 Subject: [PATCH 086/100] test: rename desired to target --- spec/models/well_spec.rb | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 911b84357b..94aa3fea3b 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -443,20 +443,20 @@ # stree-ignore [ - { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, - { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, - { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, scenario: 'As above, just more extreme' }, - { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, scenario: 'High concentration, minimum robot volume increases source pick' }, - { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, - { final_volume_desired: 100.0, final_conc_desired: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, scenario: 'Less DNA than robot minimum pick' }, - { final_volume_desired: 100.0, final_conc_desired: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, scenario: 'Low concentration, maximum DNA, no buffer' }, - { final_volume_desired: 120.0, final_conc_desired: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, scenario: 'Zero concentration, with less volume than required' }, - { final_volume_desired: 120.0, final_conc_desired: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, - { final_volume_desired: 15.0, final_conc_desired: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, scenario: 'As above, just more extreme' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, scenario: 'High concentration, minimum robot volume increases source pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, scenario: 'Less DNA than robot minimum pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, scenario: 'Low concentration, maximum DNA, no buffer' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, scenario: 'Zero concentration, with less volume than required' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, + { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, ].each do |cherrypick| # rubocop:enable Layout/LineLength - final_volume_desired = cherrypick[:final_volume_desired] - final_conc_desired = cherrypick[:final_conc_desired] + target_volume = cherrypick[:target_volume] + target_concentration = cherrypick[:target_concentration] source_concentration = cherrypick[:source_concentration] source_volume = cherrypick[:source_volume] robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] @@ -470,8 +470,8 @@ format( '%.1f', well.volume_to_cherrypick_by_nano_grams_per_micro_litre( - final_volume_desired, - final_conc_desired, + target_volume, + target_concentration, source_concentration, source_volume, robot_minimum_pick_volume From e7069c3dbc726a7a9d3256fd5a36dacc1c119e75 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Wed, 5 Feb 2025 16:58:24 +0000 Subject: [PATCH 087/100] feat(vitest): replace jest with vitest and removes babel --- app/frontend/.eslintrc.js | 4 +- .../plate-picks/components/HelpToggle.test.js | 1 - .../components/PicksSection.test.js | 1 - .../components/PicksSectionBatch.test.js | 1 - .../components/PicksSectionBatchPick.test.js | 3 +- .../components/PlatesSection.test.js | 5 +- .../components/PlatesSectionPlate.test.js | 1 - .../plate-picks/store/actions.test.js | 26 +- .../plate-picks/store/mutations.test.js | 4 +- .../shared/components/BaseRadio.test.js | 1 - babel.config.js | 41 - package.json | 28 +- vite.config.ts => vite.config.js | 12 + yarn.lock | 5070 +++-------------- 14 files changed, 955 insertions(+), 4243 deletions(-) delete mode 100644 babel.config.js rename vite.config.ts => vite.config.js (72%) diff --git a/app/frontend/.eslintrc.js b/app/frontend/.eslintrc.js index 5325db6df8..e51cb4a6d9 100644 --- a/app/frontend/.eslintrc.js +++ b/app/frontend/.eslintrc.js @@ -3,13 +3,11 @@ module.exports = { browser: true, es6: true, amd: true, - "jest/globals": true, node: true, }, - plugins: ["vue", "jest"], + plugins: ["vue"], extends: ["eslint:recommended", "plugin:vue/recommended", "prettier"], parserOptions: { - parser: "babel-eslint", sourceType: "module", ecmaVersion: 2018, }, diff --git a/app/frontend/plate-picks/components/HelpToggle.test.js b/app/frontend/plate-picks/components/HelpToggle.test.js index de93882857..74bdb1b6b2 100644 --- a/app/frontend/plate-picks/components/HelpToggle.test.js +++ b/app/frontend/plate-picks/components/HelpToggle.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import HelpToggle from "./HelpToggle.vue"; describe("HelpToggle.vue", () => { diff --git a/app/frontend/plate-picks/components/PicksSection.test.js b/app/frontend/plate-picks/components/PicksSection.test.js index abd123e93b..bb67941fa6 100644 --- a/app/frontend/plate-picks/components/PicksSection.test.js +++ b/app/frontend/plate-picks/components/PicksSection.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import PicksSection from "./PicksSection.vue"; import PicksSectionBatch from "./PicksSectionBatch.vue"; import defaultState from "../store/state"; diff --git a/app/frontend/plate-picks/components/PicksSectionBatch.test.js b/app/frontend/plate-picks/components/PicksSectionBatch.test.js index e08a49d353..5903a05a02 100644 --- a/app/frontend/plate-picks/components/PicksSectionBatch.test.js +++ b/app/frontend/plate-picks/components/PicksSectionBatch.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import PicksSectionBatch from "./PicksSectionBatch.vue"; import PicksSectionBatchPick from "./PicksSectionBatchPick.vue"; diff --git a/app/frontend/plate-picks/components/PicksSectionBatchPick.test.js b/app/frontend/plate-picks/components/PicksSectionBatchPick.test.js index c7c11ed82b..5fe933b3d5 100644 --- a/app/frontend/plate-picks/components/PicksSectionBatchPick.test.js +++ b/app/frontend/plate-picks/components/PicksSectionBatchPick.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import PicksSectionBatchPick from "./PicksSectionBatchPick.vue"; import defaultState from "../store/state"; import { storePlateWithPicks } from "../_test_examples_"; @@ -81,7 +80,7 @@ describe("PicksSectionBatchPick.vue", () => { }); it("includes an editable short name", async () => { - const commit = jest.fn(); + const commit = vi.fn(); const wrapper = shallowMount(PicksSectionBatchPick, { propsData: { name, diff --git a/app/frontend/plate-picks/components/PlatesSection.test.js b/app/frontend/plate-picks/components/PlatesSection.test.js index 9d95a17a0b..0bc80ee1e9 100644 --- a/app/frontend/plate-picks/components/PlatesSection.test.js +++ b/app/frontend/plate-picks/components/PlatesSection.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import PlatesSection from "./PlatesSection.vue"; import PlatesSectionPlate from "./PlatesSectionPlate.vue"; import defaultState from "../store/state"; @@ -33,7 +32,7 @@ describe("PlatesSection.vue", () => { it("triggers plate lookup", async () => { const mockStore = { state: defaultState(), - dispatch: jest.fn(), + dispatch: vi.fn(), getters: { sortedScannedPlates: [] }, }; const wrapper = shallowMount(PlatesSection, { @@ -52,7 +51,7 @@ describe("PlatesSection.vue", () => { it("ignores empty input", async () => { const mockStore = { state: defaultState(), - dispatch: jest.fn(), + dispatch: vi.fn(), getters: { sortedScannedPlates: [] }, }; const wrapper = shallowMount(PlatesSection, { diff --git a/app/frontend/plate-picks/components/PlatesSectionPlate.test.js b/app/frontend/plate-picks/components/PlatesSectionPlate.test.js index f965a47cd4..1cb70aae37 100644 --- a/app/frontend/plate-picks/components/PlatesSectionPlate.test.js +++ b/app/frontend/plate-picks/components/PlatesSectionPlate.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import PlatesSectionPlate from "./PlatesSectionPlate.vue"; import defaultState from "../store/state"; diff --git a/app/frontend/plate-picks/store/actions.test.js b/app/frontend/plate-picks/store/actions.test.js index 4eac00e1a0..cee14f3f20 100644 --- a/app/frontend/plate-picks/store/actions.test.js +++ b/app/frontend/plate-picks/store/actions.test.js @@ -20,8 +20,8 @@ describe("actions.js", () => { // mock commit const plates = { 1: plateWithPicks() }; const state = { ...defaultState(), plates }; - const dispatch = jest.fn(); - const commit = jest.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode, id: 1 })); + const dispatch = vi.fn(); + const commit = vi.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode, id: 1 })); // apply action await plateBarcodeScan({ commit, state, dispatch }, exampleBarcode); // assert result @@ -36,8 +36,8 @@ describe("actions.js", () => { mirageServer.create("plate", plateWithoutPicks({ id: "1" })); // mock commit const state = defaultState(); - const commit = jest.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode })); - const dispatch = jest.fn(); + const commit = vi.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode })); + const dispatch = vi.fn(); // apply action await plateBarcodeScan({ commit, state, dispatch }, exampleBarcode); // assert result @@ -53,8 +53,8 @@ describe("actions.js", () => { mirageServer.create("plate", plateWithoutPicks({ id: "1", control: true })); // mock commit const state = defaultState(); - const commit = jest.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode })); - const dispatch = jest.fn(); + const commit = vi.fn((_) => (state.scanStore[`_${exampleBarcode}`] = { barcode: exampleBarcode })); + const dispatch = vi.fn(); // apply action await plateBarcodeScan({ commit, state, dispatch }, exampleBarcode); // assert result @@ -73,10 +73,10 @@ describe("actions.js", () => { // mock the console // We don't *need* to do this, but it clutters the output and confuses // actual failing tests - console.error = jest.fn(); + console.error = vi.fn(); // mock commit const state = defaultState(); - const commit = jest.fn((_) => (state.scanStore["_BadPlate"] = { barcode: "BadPlate" })); + const commit = vi.fn((_) => (state.scanStore["_BadPlate"] = { barcode: "BadPlate" })); // mock dependencies // apply action await plateBarcodeScan({ commit, state }, "BadPlate"); @@ -93,8 +93,8 @@ describe("actions.js", () => { describe("fetchBatches", () => { it("fetches each batch`", () => { // mock commit - const commit = jest.fn(); - const dispatch = jest.fn(); + const commit = vi.fn(); + const dispatch = vi.fn(); const state = defaultState(); // apply action fetchBatches({ commit, dispatch, state }, { ids: [1, 2] }); @@ -132,8 +132,8 @@ describe("actions.js", () => { // mock commit const state = defaultState(); - const commit = jest.fn().mockImplementationOnce((_) => (state.batches["b1"] = { id: "1" })); - const dispatch = jest.fn((_) => (state.pickCount += 1)); + const commit = vi.fn().mockImplementationOnce((_) => (state.batches["b1"] = { id: "1" })); + const dispatch = vi.fn((_) => (state.pickCount += 1)); // apply action await fetchBatch({ commit, dispatch, state }, { id: "1" }); @@ -170,7 +170,7 @@ describe("actions.js", () => { // Set up initial state const state = defaultState(); // apply action - const commit = jest.fn((_) => (state.pickCount += 1)); + const commit = vi.fn((_) => (state.pickCount += 1)); const returned = nextPickId({ commit, state }); expect(commit).toHaveBeenCalledWith("incrementPick"); expect(returned).toBe(1); diff --git a/app/frontend/plate-picks/store/mutations.test.js b/app/frontend/plate-picks/store/mutations.test.js index cd779bd50a..d088f42c76 100644 --- a/app/frontend/plate-picks/store/mutations.test.js +++ b/app/frontend/plate-picks/store/mutations.test.js @@ -38,7 +38,7 @@ describe("mutations.js", () => { it("updates plates when they exist already", () => { // Provided by the browser. We mock it. Currently just mock a string as we're not doing anything fancy global.SpeechSynthesisUtterance = class extends String {}; - global.speechSynthesis = { speak: jest.fn() }; + global.speechSynthesis = { speak: vi.fn() }; // mock state const state = defaultState(); state.plates = { 1: plateWithoutPicks({ id: 1 }) }; @@ -64,7 +64,7 @@ describe("mutations.js", () => { it("updates picks when they exist already", () => { // Provided by the browser. We mock it. Currently just mock a string as we're not doing anything fancy global.SpeechSynthesisUtterance = class extends String {}; - global.speechSynthesis = { speak: jest.fn() }; + global.speechSynthesis = { speak: vi.fn() }; // mock state const state = { ...defaultState(), diff --git a/app/frontend/shared/components/BaseRadio.test.js b/app/frontend/shared/components/BaseRadio.test.js index 52399cecd1..174fbac3a5 100644 --- a/app/frontend/shared/components/BaseRadio.test.js +++ b/app/frontend/shared/components/BaseRadio.test.js @@ -1,5 +1,4 @@ import { shallowMount } from "@vue/test-utils"; -import "@testing-library/jest-dom"; import BaseRadio from "./BaseRadio.vue"; describe("BaseRadio.vue", () => { diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 35a55a23be..0000000000 --- a/babel.config.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = function (api) { - var validEnv = ["development", "test", "production"]; - var currentEnv = api.env(); - var isDevelopmentEnv = api.env("development"); - var isProductionEnv = api.env("production"); - var isTestEnv = api.env("test"); - - if (!validEnv.includes(currentEnv)) { - throw new Error( - "Please specify a valid `NODE_ENV` or " + - '`BABEL_ENV` environment variables. Valid values are "development", ' + - '"test", and "production". Instead, received: ' + - JSON.stringify(currentEnv) + - ".", - ); - } - - return { - presets: [ - isTestEnv && [ - require("@babel/preset-env").default, - { - targets: { - node: "current", - }, - }, - ], - (isProductionEnv || isDevelopmentEnv) && [ - require("@babel/preset-env").default, - { - forceAllTransforms: true, - useBuiltIns: "entry", - corejs: 3, - modules: false, - exclude: ["transform-typeof-symbol"], - }, - ], - ].filter(Boolean), - plugins: [].filter(Boolean), - }; -}; diff --git a/package.json b/package.json index 9c96b1adb3..1290ff5bd6 100644 --- a/package.json +++ b/package.json @@ -31,26 +31,20 @@ "whatwg-fetch": "^3.6.20" }, "devDependencies": { - "@babel/core": "^7.24.7", - "@babel/preset-env": "^7.24.7", "@prettier/plugin-ruby": "^4.0.0", - "@testing-library/jest-dom": "^5.17.0", "@vitejs/plugin-legacy": "^1.8.2", "@vue/test-utils": "^1.3.6", - "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^10.1.0", - "babel-jest": "^26.6.3", "eslint": "^7.32.0", "eslint-config-prettier": "^8.10.0", - "eslint-plugin-jest": "^23.20.0", + "eslint-plugin-vitest": "^0.5.4", "eslint-plugin-vue": "^6.2.2", - "jest": "^26.6.3", + "jsdom": "^26.0.0", "miragejs": "^0.1.48", "prettier": "^3.3.2", "vite": "^5.4.14", "vite-plugin-ruby": "^5.0.0", "vite-plugin-vue2": "^1.9.3", - "vue-jest": "^3.0.7" + "vitest": "^3.0.5" }, "_comment": "Required to address https://github.com/npm/cli/issues/4828", "optionalDependencies": { @@ -59,22 +53,8 @@ "@rollup/rollup-win32-x64-msvc": "*" }, "scripts": { - "test": "jest", + "test": "vitest run", "lint": "eslint --ext .js --ext .vue app/frontend", "lintOnly": "eslint --ext .js --ext .vue" - }, - "jest": { - "roots": [ - "app/frontend" - ], - "moduleFileExtensions": [ - "js", - "json", - "vue" - ], - "transform": { - "^.+\\.(vue)$": "vue-jest", - "^.+\\.js$": "babel-jest" - } } } diff --git a/vite.config.ts b/vite.config.js similarity index 72% rename from vite.config.ts rename to vite.config.js index d97d2c4b44..9ca17a0f6a 100644 --- a/vite.config.ts +++ b/vite.config.js @@ -20,4 +20,16 @@ export default defineConfig({ "@formtastic": process.env.FORMTASTIC_STYLESHEET_PATH, }, }, + test: { + globals: true, + environment: 'jsdom', + coverage: { + provider: 'v8', + reporter: ['lcov', 'text'], + }, + // This hides the "Download the Vue Devtools extension" message from the console + onConsoleLog(log) { + if (log.includes('Download the Vue Devtools extension')) return false + }, + }, }); diff --git a/yarn.lock b/yarn.lock index aed0ace9ef..764692d6aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,18 +2,16 @@ # yarn lockfile v1 -"@adobe/css-tools@^4.0.1": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" - integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== +"@asamuzakjp/css-color@^2.8.2": + version "2.8.3" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-2.8.3.tgz#665f0f5e8edb95d8f543847529e30fe5cc437ef7" + integrity sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw== dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" + "@csstools/css-calc" "^2.1.1" + "@csstools/css-color-parser" "^3.0.7" + "@csstools/css-parser-algorithms" "^3.0.4" + "@csstools/css-tokenizer" "^3.0.3" + lru-cache "^10.4.3" "@babel/code-frame@7.12.11": version "7.12.11" @@ -22,7 +20,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": +"@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== @@ -37,25 +35,12 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - "@babel/compat-data@^7.16.4": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.9.tgz#53eee4e68f1c1d0282aa0eb05ddb02d033fc43a0" - integrity sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng== - -"@babel/core@^7.1.0", "@babel/core@^7.16.10", "@babel/core@^7.7.5": +"@babel/core@^7.16.10": version "7.16.12" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== @@ -76,27 +61,6 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.24.7": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82" - integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.9" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-module-transforms" "^7.24.9" - "@babel/helpers" "^7.24.8" - "@babel/parser" "^7.24.8" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.9" - 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/generator@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" @@ -116,16 +80,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.24.8", "@babel/generator@^7.24.9": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.9.tgz#5c2575a1070e661bbbc9df82a853989c9a656f12" - integrity sha512-G8v3jRg+z8IwY1jHFxvCNhOPYPterE4XljNgdGTYfSTtzzwjIswIzIaSPSLs3R7yFuqnqNeay5rjICfqVr+/6A== - dependencies: - "@babel/types" "^7.24.9" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -133,21 +87,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-compilation-targets@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" @@ -158,17 +97,6 @@ browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271" - integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw== - dependencies: - "@babel/compat-data" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" - lru-cache "^5.1.1" - semver "^6.3.1" - "@babel/helper-create-class-features-plugin@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" @@ -182,41 +110,6 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-class-features-plugin@^7.24.7": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz#47f546408d13c200c0867f9d935184eaa0851b09" - integrity sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" - integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -229,13 +122,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - "@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" @@ -253,14 +139,6 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -275,13 +153,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - "@babel/helper-member-expression-to-functions@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" @@ -289,14 +160,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.24.7", "@babel/helper-member-expression-to-functions@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" - integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== - dependencies: - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.8" - "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -304,14 +167,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-module-transforms@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" @@ -326,17 +181,6 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz#e13d26306b89eea569180868e652e7f514de9d29" - integrity sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -344,32 +188,11 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-optimise-call-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" - integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== - dependencies: - "@babel/types" "^7.24.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.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - "@babel/helper-plugin-utils@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-remap-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" - integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-wrap-function" "^7.24.7" - "@babel/helper-replace-supers@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" @@ -381,15 +204,6 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-replace-supers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" - integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.7" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-simple-access@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" @@ -397,22 +211,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" - integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -427,23 +225,11 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - "@babel/helper-string-parser@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-string-parser@^7.24.7", "@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - "@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" @@ -459,21 +245,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helper-wrap-function@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" - integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== - dependencies: - "@babel/helper-function-name" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - "@babel/helpers@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" @@ -483,15 +254,7 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helpers@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.8.tgz#2820d64d5d6686cca8789dd15b074cd862795873" - integrity sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.8" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.7": +"@babel/highlight@^7.10.4": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== @@ -519,7 +282,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0": +"@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7": version "7.16.12" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== @@ -534,43 +297,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== -"@babel/parser@^7.24.7", "@babel/parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.8.tgz#58a4dbbcad7eb1d48930524a3fd93d93e9084c6f" - integrity sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w== - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" - integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" - integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" - integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" - integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-proposal-class-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" @@ -588,39 +314,6 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-decorators" "^7.16.7" -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@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-decorators@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3" @@ -628,48 +321,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@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" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" - integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" - integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-jsx@^7.2.0": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" @@ -677,62 +328,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - 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": - 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== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" @@ -740,370 +335,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" - integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-async-generator-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" - integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" - integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" - -"@babel/plugin-transform-block-scoped-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" - integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-block-scoping@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" - integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-class-static-block@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" - integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz#ad23301fe5bc153ca4cf7fb572a9bc8b0b711cf7" - integrity sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-replace-supers" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" - integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/template" "^7.24.7" - -"@babel/plugin-transform-destructuring@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" - integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - -"@babel/plugin-transform-dotall-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" - integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-duplicate-keys@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" - integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-dynamic-import@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" - integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" - integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-export-namespace-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" - integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - -"@babel/plugin-transform-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" - integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== - dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-json-strings@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" - integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" - integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-logical-assignment-operators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" - integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" - integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-modules-amd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" - integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== - dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-modules-commonjs@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" - integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== - dependencies: - "@babel/helper-module-transforms" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-simple-access" "^7.24.7" - -"@babel/plugin-transform-modules-systemjs@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" - integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== - dependencies: - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/plugin-transform-modules-umd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" - integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== - dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" - integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-new-target@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" - integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" - integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" - integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== - dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" - -"@babel/plugin-transform-object-super@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" - integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" - -"@babel/plugin-transform-optional-catch-binding@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" - integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" - integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" - integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-private-property-in-object@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" - integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" - integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-regenerator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" - integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-shorthand-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" - integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" - integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - -"@babel/plugin-transform-sticky-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" - integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-template-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" - integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-typeof-symbol@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" - integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-transform-typescript@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" @@ -1113,158 +344,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript" "^7.16.7" -"@babel/plugin-transform-unicode-escapes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" - integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-property-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" - integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" - integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/preset-env@^7.24.7": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.8.tgz#e0db94d7f17d6f0e2564e8d29190bc8cdacec2d1" - integrity sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ== - dependencies: - "@babel/compat-data" "^7.24.8" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.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.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.24.7" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.24.7" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.24.8" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.8" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.24.7" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.24.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.8" - "@babel/plugin-transform-modules-systemjs" "^7.24.7" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.8" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.37.1" - semver "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.8.4": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" - integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.9.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/standalone@^7.17.11": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.24.7.tgz#54349b6c6dc9bfe3521b36d1c18035c20334a15a" integrity sha512-QRIRMJ2KTeN+vt4l9OjYlxDVXEpcor1Z6V7OeYzeBOw6Q8ew9oMTHjzTx8s6ClsZO7wVf6JgTRutihatN6K0yA== -"@babel/template@^7.16.7", "@babel/template@^7.3.3": +"@babel/template@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== @@ -1282,16 +367,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -1307,23 +383,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.8.tgz#6c14ed5232b7549df3371d820fbd9abfcd7dfab7" - integrity sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.8" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.8" - "@babel/types" "^7.24.8" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": +"@babel/types@^7.16.7", "@babel/types@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== @@ -1331,15 +391,6 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.20.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" @@ -1349,27 +400,33 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.4.4": - version "7.24.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.9.tgz#228ce953d7b0d16646e755acf204f4cf3d08cc73" - integrity sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ== - dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" +"@csstools/color-helpers@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.1.tgz#829f1c76f5800b79c51c709e2f36821b728e0e10" + integrity sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA== -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@csstools/css-calc@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.1.tgz#a7dbc66627f5cf458d42aed14bda0d3860562383" + integrity sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag== -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== +"@csstools/css-color-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz#442d61d58e54ad258d52c309a787fceb33906484" + integrity sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA== dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" + "@csstools/color-helpers" "^5.0.1" + "@csstools/css-calc" "^2.1.1" + +"@csstools/css-parser-algorithms@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz#74426e93bd1c4dcab3e441f5cc7ba4fb35d94356" + integrity sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A== + +"@csstools/css-tokenizer@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz#a5502c8539265fecbd873c1e395a890339f119c2" + integrity sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw== "@csstools/postcss-cascade-layers@^1.1.1": version "1.1.1" @@ -1482,116 +539,248 @@ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== +"@esbuild/aix-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" + integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== + "@esbuild/android-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== +"@esbuild/android-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" + integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== + "@esbuild/android-arm@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== +"@esbuild/android-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" + integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== + "@esbuild/android-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== +"@esbuild/android-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" + integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== + "@esbuild/darwin-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== +"@esbuild/darwin-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" + integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== + "@esbuild/darwin-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== +"@esbuild/darwin-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" + integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== + "@esbuild/freebsd-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== +"@esbuild/freebsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" + integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== + "@esbuild/freebsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== +"@esbuild/freebsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" + integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== + "@esbuild/linux-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== +"@esbuild/linux-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" + integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== + "@esbuild/linux-arm@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== +"@esbuild/linux-arm@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" + integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== + "@esbuild/linux-ia32@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== +"@esbuild/linux-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" + integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== + "@esbuild/linux-loong64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== +"@esbuild/linux-loong64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" + integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== + "@esbuild/linux-mips64el@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== +"@esbuild/linux-mips64el@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" + integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== + "@esbuild/linux-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== +"@esbuild/linux-ppc64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" + integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== + "@esbuild/linux-riscv64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== +"@esbuild/linux-riscv64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" + integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== + "@esbuild/linux-s390x@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== +"@esbuild/linux-s390x@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" + integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== + "@esbuild/linux-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== +"@esbuild/linux-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" + integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== + +"@esbuild/netbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" + integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== + "@esbuild/netbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== +"@esbuild/netbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" + integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== + +"@esbuild/openbsd-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" + integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== + "@esbuild/openbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== +"@esbuild/openbsd-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" + integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== + "@esbuild/sunos-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== +"@esbuild/sunos-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" + integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== + "@esbuild/win32-arm64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== +"@esbuild/win32-arm64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" + integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== + "@esbuild/win32-ia32@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== +"@esbuild/win32-ia32@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" + integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== + "@esbuild/win32-x64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== +"@esbuild/win32-x64@0.24.2": + version "0.24.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" + integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== + +"@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -1621,207 +810,10 @@ debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" @@ -1859,7 +851,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== @@ -1929,11 +921,21 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.31.0.tgz#d4dd60da0075a6ce9a6c76d71b8204f3e1822285" integrity sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA== +"@rollup/rollup-android-arm-eabi@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.3.tgz#eb1b0a1d75c5f048b8d41eb30188c22292676c02" + integrity sha512-8kq/NjMKkMTGKMPldWihncOl62kgnLYk7cW+/4NCUWfS70/wz4+gQ7rMxMMpZ3dIOP/xw7wKNzIuUnN/H2GfUg== + "@rollup/rollup-android-arm64@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.31.0.tgz#25c4d33259a7a2ccd2f52a5ffcc0bb3ab3f0729d" integrity sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g== +"@rollup/rollup-android-arm64@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.3.tgz#850f0962a7a98a698dfc4b7530a3932b486d84c0" + integrity sha512-1PqMHiuRochQ6++SDI7SaRDWJKr/NgAlezBi5nOne6Da6IWJo3hK0TdECBDwd92IUDPG4j/bZmWuwOnomNT8wA== + "@rollup/rollup-darwin-arm64@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b" @@ -1944,61 +946,121 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.31.0.tgz#d137dff254b19163a6b52ac083a71cd055dae844" integrity sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g== +"@rollup/rollup-darwin-arm64@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.3.tgz#150c4cfacd11ca3fe2904a25bcfd3f948aa8fd39" + integrity sha512-fqbrykX4mGV3DlCDXhF4OaMGcchd2tmLYxVt3On5oOZWVDFfdEoYAV2alzNChl8OzNaeMAGqm1f7gk7eIw/uDg== + "@rollup/rollup-darwin-x64@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.31.0.tgz#58ff20b5dacb797d3adca19f02a21c532f9d55bf" integrity sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ== +"@rollup/rollup-darwin-x64@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.3.tgz#27501960a733043c2b0634c884d20cd456d1cdef" + integrity sha512-8Wxrx/KRvMsTyLTbdrMXcVKfpW51cCNW8x7iQD72xSEbjvhCY3b+w83Bea3nQfysTMR7K28esc+ZFITThXm+1w== + "@rollup/rollup-freebsd-arm64@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.31.0.tgz#96ce1a241c591ec3e068f4af765d94eddb24e60c" integrity sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew== +"@rollup/rollup-freebsd-arm64@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.3.tgz#a54caebb98ab71aaf67e826cc9e6a145fb30ffb5" + integrity sha512-lpBmV2qSiELh+ATQPTjQczt5hvbTLsE0c43Rx4bGxN2VpnAZWy77we7OO62LyOSZNY7CzjMoceRPc+Lt4e9J6A== + "@rollup/rollup-freebsd-x64@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.31.0.tgz#e59e7ede505be41f0b4311b0b943f8eb44938467" integrity sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA== +"@rollup/rollup-freebsd-x64@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.3.tgz#2312f47788b3e334b14edb7eee748e9d545fd856" + integrity sha512-sNPvBIXpgaYcI6mAeH13GZMXFrrw5mdZVI1M9YQPRG2LpjwL8DSxSIflZoh/B5NEuOi53kxsR/S2GKozK1vDXA== + "@rollup/rollup-linux-arm-gnueabihf@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.31.0.tgz#e455ca6e4ff35bd46d62201c153352e717000a7b" integrity sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw== +"@rollup/rollup-linux-arm-gnueabihf@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.3.tgz#aaaa3f678ab3bcdf8ebda600ed2a9f04fe00d9cc" + integrity sha512-MW6N3AoC61OfE1VgnN5O1OW0gt8VTbhx9s/ZEPLBM11wEdHjeilPzOxVmmsrx5YmejpGPvez8QwGGvMU+pGxpw== + "@rollup/rollup-linux-arm-musleabihf@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.31.0.tgz#bc1a93d807d19e70b1e343a5bfea43723bcd6327" integrity sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg== +"@rollup/rollup-linux-arm-musleabihf@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.3.tgz#ec7c8d98c79091afda6804fdf72d1d202217b9e4" + integrity sha512-2SQkhr5xvatYq0/+H6qyW0zvrQz9LM4lxGkpWURLoQX5+yP8MsERh4uWmxFohOvwCP6l/+wgiHZ1qVwLDc7Qmw== + "@rollup/rollup-linux-arm64-gnu@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.31.0.tgz#f38bf843f1dc3d5de680caf31084008846e3efae" integrity sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA== +"@rollup/rollup-linux-arm64-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.3.tgz#df198a61a48db932426eee593f3699aa289e90f5" + integrity sha512-R3JLYt8YoRwKI5shJsovLpcR6pwIMui/MGG/MmxZ1DYI3iRSKI4qcYrvYgDf4Ss2oCR3RL3F3dYK7uAGQgMIuQ== + "@rollup/rollup-linux-arm64-musl@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.31.0.tgz#b3987a96c18b7287129cf735be2dbf83e94d9d05" integrity sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g== +"@rollup/rollup-linux-arm64-musl@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.3.tgz#97b231d2ca6fdeaa8d0e02de2f1f3896bedf14a3" + integrity sha512-4XQhG8v/t3S7Rxs7rmFUuM6j09hVrTArzONS3fUZ6oBRSN/ps9IPQjVhp62P0W3KhqJdQADo/MRlYRMdgxr/3w== + "@rollup/rollup-linux-loongarch64-gnu@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.31.0.tgz#0f0324044e71c4f02e9f49e7ec4e347b655b34ee" integrity sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ== +"@rollup/rollup-linux-loongarch64-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.3.tgz#a1149b186e16d009d8fd715285e84ed63ba3cbbc" + integrity sha512-QlW1jCUZ1LHUIYCAK2FciVw1ptHsxzApYVi05q7bz2A8oNE8QxQ85NhM4arLxkAlcnS42t4avJbSfzSQwbIaKg== + "@rollup/rollup-linux-powerpc64le-gnu@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.31.0.tgz#809479f27f1fd5b4eecd2aa732132ad952d454ba" integrity sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ== +"@rollup/rollup-linux-powerpc64le-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.3.tgz#df3c2c25f800bc0bdf5e8cfc00372b5ac761bc5b" + integrity sha512-kMbLToizVeCcN69+nnm20Dh0hrRIAjgaaL+Wh0gWZcNt8e542d2FUGtsyuNsHVNNF3gqTJrpzUGIdwMGLEUM7g== + "@rollup/rollup-linux-riscv64-gnu@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.31.0.tgz#7bc75c4f22db04d3c972f83431739cfa41c6a36e" integrity sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw== +"@rollup/rollup-linux-riscv64-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.3.tgz#c57b3e2c12969586f3513295cb36da96746edbf6" + integrity sha512-YgD0DnZ3CHtvXRH8rzjVSxwI0kMTr0RQt3o1N92RwxGdx7YejzbBO0ELlSU48DP96u1gYYVWfUhDRyaGNqJqJg== + "@rollup/rollup-linux-s390x-gnu@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.31.0.tgz#cfe8052345c55864d83ae343362cf1912480170e" integrity sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ== +"@rollup/rollup-linux-s390x-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.3.tgz#e6ac0788471a9f7400b358eb5f91292efcc900c4" + integrity sha512-dIOoOz8altjp6UjAi3U9EW99s8nta4gzi52FeI45GlPyrUH4QixUoBMH9VsVjt+9A2RiZBWyjYNHlJ/HmJOBCQ== + "@rollup/rollup-linux-x64-gnu@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0" @@ -2009,21 +1071,41 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.31.0.tgz#c6b048f1e25f3fea5b4bd246232f4d07a159c5a0" integrity sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g== +"@rollup/rollup-linux-x64-gnu@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.3.tgz#017bb2808665d69ba55740cae02708ea8cb45885" + integrity sha512-lOyG3aF4FTKrhpzXfMmBXgeKUUXdAWmP2zSNf8HTAXPqZay6QYT26l64hVizBjq+hJx3pl0DTEyvPi9sTA6VGA== + "@rollup/rollup-linux-x64-musl@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.31.0.tgz#615273ac52d1a201f4de191cbd3389016a9d7d80" integrity sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA== +"@rollup/rollup-linux-x64-musl@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.3.tgz#ac3de953f8e31b08f1528e17f0524af15b2df38c" + integrity sha512-usztyYLu2i+mYzzOjqHZTaRXbUOqw3P6laNUh1zcqxbPH1P2Tz/QdJJCQSnGxCtsRQeuU2bCyraGMtMumC46rw== + "@rollup/rollup-win32-arm64-msvc@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.31.0.tgz#32ed85810c1b831c648eca999d68f01255b30691" integrity sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw== +"@rollup/rollup-win32-arm64-msvc@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.3.tgz#183fb4b849accdf68d430894ada2b88eea95a140" + integrity sha512-ojFOKaz/ZyalIrizdBq2vyc2f0kFbJahEznfZlxdB6pF9Do6++i1zS5Gy6QLf8D7/S57MHrmBLur6AeRYeQXSA== + "@rollup/rollup-win32-ia32-msvc@4.31.0": version "4.31.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.31.0.tgz#d47effada68bcbfdccd30c4a788d42e4542ff4d3" integrity sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ== +"@rollup/rollup-win32-ia32-msvc@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.3.tgz#3fd1b93867442ecd3d2329b902b111853600cc6c" + integrity sha512-K/V97GMbNa+Da9mGcZqmSl+DlJmWfHXTuI9V8oB2evGsQUtszCl67+OxWjBKpeOnYwox9Jpmt/J6VhpeRCYqow== + "@rollup/rollup-win32-x64-msvc@*": version "4.22.4" resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202" @@ -2034,224 +1116,140 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.31.0.tgz#7a2d89a82cf0388d60304964217dd7beac6de645" integrity sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw== -"@sinonjs/commons@^1.7.0": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" - integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@testing-library/jest-dom@^5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" - integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== - dependencies: - "@adobe/css-tools" "^4.0.1" - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@rollup/rollup-win32-x64-msvc@4.34.3": + version "4.34.3" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.3.tgz#2cd47d213ddd921bab1470a3e31312ee37aac08a" + integrity sha512-CUypcYP31Q8O04myV6NKGzk9GVXslO5EJNfmARNSzLF2A+5rmZUlDJ4et6eoJaZgBT9wrC2p4JZH04Vkic8HdQ== "@ttskch/select2-bootstrap4-theme@^1.5.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@ttskch/select2-bootstrap4-theme/-/select2-bootstrap4-theme-1.5.2.tgz#3b4519b349f3e7831c28752a1e9617312a192656" integrity sha512-gAj8qNy/VYwQDBkACm0USM66kxFai8flX83ayRXPNhzZckEgSqIBB9sM74SCM3ssgeX+ZVy4BifTnLis+KpIyg== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.13.tgz#1874914be974a492e1b4cb00585cabb274e8ba18" - integrity sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babel__traverse@^7.0.4": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@1.0.6": +"@types/estree@1.0.6", "@types/estree@^1.0.0": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== dependencies: - "@types/node" "*" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: - "@types/istanbul-lib-coverage" "*" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@^7.7.1": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== + dependencies: + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== +"@vitejs/plugin-legacy@^1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-1.8.2.tgz#2f315bcb6685b12719813fb9412851445cca636f" + integrity sha512-NCOKU+pU+cxLMR9P9RTolEuOK+h+zYBXlknj+zGcKSj/NXBZYgA1GAH1FnO4zijoWRiTaiOm2ha9LQrELE7XHg== dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" + "@babel/standalone" "^7.17.11" + core-js "^3.22.3" + magic-string "^0.26.1" + regenerator-runtime "^0.13.9" + systemjs "^6.12.1" -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== +"@vitest/expect@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.0.5.tgz#aa0acd0976cf56842806e5dcaebd446543966b14" + integrity sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA== dependencies: - "@types/istanbul-lib-report" "*" + "@vitest/spy" "3.0.5" + "@vitest/utils" "3.0.5" + chai "^5.1.2" + tinyrainbow "^2.0.0" -"@types/jest@*": - version "26.0.8" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.8.tgz#f5c5559cf25911ce227f7ce30f1f160f24966369" - integrity sha512-eo3VX9jGASSuv680D4VQ89UmuLZneNxv2MCZjfwlInav05zXVJTzfc//lavdV0GPwSxsXJTy2jALscB7Acqg0g== +"@vitest/mocker@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.0.5.tgz#8dce3dc4cb0adfd9d554531cea836244f8c36bcd" + integrity sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw== dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/json-schema@^7.0.3": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/node@*": - version "14.0.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" - integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/prettier@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" - integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/strip-bom@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" - integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + "@vitest/spy" "3.0.5" + estree-walker "^3.0.3" + magic-string "^0.30.17" -"@types/strip-json-comments@0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" - integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.9.2" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.2.tgz#59e4771a1cf87d51e89a5cc8195cd3b647cba322" - integrity sha512-K7nUSpH/5i8i0NagTJ+uFUDRueDlnMNhJtMjMwTGPPSqyImbWC/hgKPDCKt6Phu2iMJg2kWqlax+Ucj2DKMwpA== +"@vitest/pretty-format@3.0.5", "@vitest/pretty-format@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.0.5.tgz#10ae6a83ccc1a866e31b2d0c1a7a977ade02eff9" + integrity sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA== dependencies: - "@types/jest" "*" + tinyrainbow "^2.0.0" -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== +"@vitest/runner@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.0.5.tgz#c5960a1169465a2b9ac21f1d24a4cf1fe67c7501" + integrity sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A== dependencies: - "@types/yargs-parser" "*" + "@vitest/utils" "3.0.5" + pathe "^2.0.2" -"@typescript-eslint/experimental-utils@^2.5.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@vitest/snapshot@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.0.5.tgz#afd0ae472dc5893b0bb10e3e673ef649958663f4" + integrity sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@vitest/pretty-format" "3.0.5" + magic-string "^0.30.17" + pathe "^2.0.2" -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@vitest/spy@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.0.5.tgz#7bb5d84ec21cc0d62170fda4e31cd0b46c1aeb8b" + integrity sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg== dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + tinyspy "^3.0.2" -"@vitejs/plugin-legacy@^1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-1.8.2.tgz#2f315bcb6685b12719813fb9412851445cca636f" - integrity sha512-NCOKU+pU+cxLMR9P9RTolEuOK+h+zYBXlknj+zGcKSj/NXBZYgA1GAH1FnO4zijoWRiTaiOm2ha9LQrELE7XHg== +"@vitest/utils@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.0.5.tgz#dc3eaefd3534598917e939af59d9a9b6a5be5082" + integrity sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg== dependencies: - "@babel/standalone" "^7.17.11" - core-js "^3.22.3" - magic-string "^0.26.1" - regenerator-runtime "^0.13.9" - systemjs "^6.12.1" + "@vitest/pretty-format" "3.0.5" + loupe "^3.1.2" + tinyrainbow "^2.0.0" "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": version "1.2.1" @@ -2369,24 +1367,11 @@ lodash "^4.17.15" pretty "^2.0.0" -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" @@ -2397,32 +1382,20 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - acorn@^8.8.2: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" @@ -2449,18 +1422,6 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" @@ -2471,11 +1432,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -2491,22 +1447,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -2522,37 +1462,15 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +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== astral-regex@^2.0.0: version "2.0.0" @@ -2569,11 +1487,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - autoprefixer@^10.4.13: version "10.4.19" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" @@ -2586,209 +1499,11 @@ autoprefixer@^10.4.13: picocolors "^1.0.0" postcss-value-parser "^4.2.0" -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - -babel-plugin-transform-es2015-modules-commonjs@^6.26.0: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@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-top-level-await" "^7.8.3" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2799,13 +1514,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bluebird@^3.1.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2824,21 +1532,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + balanced-match "^1.0.0" braces@^3.0.1: version "3.0.2" @@ -2847,18 +1546,13 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserslist@^4.17.5: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" @@ -2880,7 +1574,7 @@ browserslist@^4.21.4: node-releases "^2.0.14" update-browserslist-db "^1.0.16" -browserslist@^4.23.0, browserslist@^4.23.1: +browserslist@^4.23.0: version "4.23.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== @@ -2890,82 +1584,43 @@ browserslist@^4.23.0, browserslist@^4.23.1: node-releases "^2.0.14" update-browserslist-db "^1.1.0" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== - -caniuse-lite@^1.0.30001286: - version "1.0.30001512" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz" - integrity sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw== +caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001629, caniuse-lite@^1.0.30001640: + version "1.0.30001697" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz" + integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ== -caniuse-lite@^1.0.30001599: - version "1.0.30001639" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz#972b3a6adeacdd8f46af5fc7f771e9639f6c1521" - integrity sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg== - -caniuse-lite@^1.0.30001629, caniuse-lite@^1.0.30001640: - version "1.0.30001642" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f" - integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chai@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" + integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + 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.0.0, chalk@^2.1.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2974,14 +1629,6 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -2990,10 +1637,10 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +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== "chokidar@>=3.0.0 <4.0.0": version "3.6.0" @@ -3010,58 +1657,6 @@ char-regex@^1.0.2: optionalDependencies: fsevents "~2.3.2" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -3098,11 +1693,6 @@ commander@^2.19.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3139,35 +1729,13 @@ consolidate@^0.16.0: dependencies: bluebird "^3.7.2" -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.36.1, core-js-compat@^3.37.1: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" - integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== - dependencies: - browserslist "^4.23.0" - -core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - core-js@^3.22.3: version "3.37.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" @@ -3178,18 +1746,7 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3231,21 +1788,6 @@ css-prefers-color-scheme@^6.0.3: resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - cssdb@^7.1.0: version "7.11.2" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" @@ -3256,36 +1798,26 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== +cssstyle@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.2.1.tgz#5142782410fea95db66fb68147714a652a7c2381" + integrity sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw== dependencies: - cssom "~0.3.6" + "@asamuzakjp/css-color" "^2.8.2" + rrweb-cssom "^0.8.0" csstype@^3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" datatables.net-bs4@>=1.11.3, datatables.net-bs4@^1.10.15, datatables.net-bs4@^1.11.3: version "1.11.3" @@ -3409,14 +1941,6 @@ de-indent@^1.0.2: resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -deasync@^0.1.15: - version "0.1.20" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.20.tgz#546fd2660688a1eeed55edce2308c5cf7104f9da" - integrity sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ== - dependencies: - bindings "^1.5.0" - node-addon-api "^1.7.1" - debug@4, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -3424,13 +1948,6 @@ debug@4, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^4.0.1, debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -3438,89 +1955,46 @@ debug@^4.0.1, debug@^4.3.2: dependencies: ms "2.1.2" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +debug@^4.1.0, debug@^4.1.1: version "4.3.5" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +debug@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== +decimal.js@^10.4.3: + version "10.5.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" + integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +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-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" @@ -3529,23 +2003,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - dom-event-types@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - editorconfig@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" @@ -3566,11 +2028,6 @@ electron-to-chromium@^1.4.796, electron-to-chromium@^1.4.820: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02" integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ== -emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -3581,13 +2038,6 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -3595,12 +2045,15 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +es-module-lexer@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" + integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== esbuild@^0.21.3: version "0.21.5" @@ -3631,49 +2084,63 @@ esbuild@^0.21.3: "@esbuild/win32-ia32" "0.21.5" "@esbuild/win32-x64" "0.21.5" +esbuild@^0.24.2: + version "0.24.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" + integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.2" + "@esbuild/android-arm" "0.24.2" + "@esbuild/android-arm64" "0.24.2" + "@esbuild/android-x64" "0.24.2" + "@esbuild/darwin-arm64" "0.24.2" + "@esbuild/darwin-x64" "0.24.2" + "@esbuild/freebsd-arm64" "0.24.2" + "@esbuild/freebsd-x64" "0.24.2" + "@esbuild/linux-arm" "0.24.2" + "@esbuild/linux-arm64" "0.24.2" + "@esbuild/linux-ia32" "0.24.2" + "@esbuild/linux-loong64" "0.24.2" + "@esbuild/linux-mips64el" "0.24.2" + "@esbuild/linux-ppc64" "0.24.2" + "@esbuild/linux-riscv64" "0.24.2" + "@esbuild/linux-s390x" "0.24.2" + "@esbuild/linux-x64" "0.24.2" + "@esbuild/netbsd-arm64" "0.24.2" + "@esbuild/netbsd-x64" "0.24.2" + "@esbuild/openbsd-arm64" "0.24.2" + "@esbuild/openbsd-x64" "0.24.2" + "@esbuild/sunos-x64" "0.24.2" + "@esbuild/win32-arm64" "0.24.2" + "@esbuild/win32-ia32" "0.24.2" + "@esbuild/win32-x64" "0.24.2" + escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-prettier@^8.10.0: version "8.10.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== -eslint-plugin-jest@^23.20.0: - version "23.20.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099" - integrity sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw== +eslint-plugin-vitest@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-vitest/-/eslint-plugin-vitest-0.5.4.tgz#2838a40ee116ba7c15eb6132df31371d960e3bf5" + integrity sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ== dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" + "@typescript-eslint/utils" "^7.7.1" eslint-plugin-vue@^6.2.2: version "6.2.2" @@ -3700,14 +2167,14 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -3717,6 +2184,11 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + eslint@^7.32.0: version "7.32.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" @@ -3781,7 +2253,7 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3834,73 +2306,22 @@ estree-walker@^2.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" +expect-type@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75" + integrity sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA== extend-shallow@^2.0.1: version "2.0.1" @@ -3909,35 +2330,6 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-from-css@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92" - integrity sha1-HqffLnx8brmSL6COitrqSG9vj5I= - dependencies: - css "^2.1.0" - fake-xml-http-request@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fake-xml-http-request/-/fake-xml-http-request-2.1.2.tgz#f1786720cae50bbb46273035a0173414f3e85e74" @@ -3948,6 +2340,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -3964,7 +2367,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3976,13 +2379,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3990,21 +2386,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1, fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -4012,22 +2393,6 @@ fill-range@^7.0.1, fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-babel-config@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -4042,15 +2407,10 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -4061,13 +2421,6 @@ fraction.js@^4.3.7: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -4083,11 +2436,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -4108,35 +2456,6 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -4144,7 +2463,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -4168,28 +2487,23 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4200,37 +2514,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" @@ -4253,56 +2536,40 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + whatwg-encoding "^3.1.1" html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== +https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "6" + agent-base "^7.1.2" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - safer-buffer ">= 2.1.2 < 3" + safer-buffer ">= 2.1.2 < 3.0.0" icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" @@ -4314,6 +2581,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -4340,24 +2612,11 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - inflected@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inflected/-/inflected-2.0.4.tgz#323770961ccbe992a98ea930512e9a82d3d3ef77" @@ -4371,7 +2630,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4381,642 +2640,78 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.13.0, is-core-module@^2.9.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-whitespace@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" - integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== +is-core-module@^2.9.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" + integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" + hasown "^2.0.2" -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" + is-extglob "^2.1.1" -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" + is-extglob "^2.1.1" -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= -jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== - dependencies: - "@jest/core" "^26.6.3" - import-local "^3.0.2" - jest-cli "^26.6.3" +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= jquery@>=1.7: version "3.5.1" @@ -5028,7 +2723,7 @@ jquery@^3.7.1: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== -js-beautify@^1.6.12, js-beautify@^1.6.14: +js-beautify@^1.6.12: version "1.11.0" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== @@ -5039,16 +2734,11 @@ js-beautify@^1.6.12, js-beautify@^1.6.14: mkdirp "~1.0.3" nopt "^4.0.3" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -5062,59 +2752,43 @@ jsbarcode@^3.11.6: resolved "https://registry.yarnpkg.com/jsbarcode/-/jsbarcode-3.11.6.tgz#96e8fbc3395476e162982a6064b98a09b5ea02c0" integrity sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA== -jsdom@^16.4.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" +jsdom@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-26.0.0.tgz#446dd1ad8cfc50df7e714e58f1f972c1763b354c" + integrity sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw== + dependencies: + cssstyle "^4.2.1" + data-urls "^5.0.0" + decimal.js "^10.4.3" + form-data "^4.0.1" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" + nwsapi "^2.2.16" + parse5 "^7.2.1" + rrweb-cssom "^0.8.0" + saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" + tough-cookie "^5.0.0" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.1.0" + ws "^8.18.0" + xml-name-validator "^5.0.0" jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -5130,11 +2804,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -5149,11 +2818,6 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -5180,40 +2844,13 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -5222,14 +2859,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lie@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" @@ -5237,11 +2866,6 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" @@ -5251,18 +2875,6 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -5278,17 +2890,20 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.0.0, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.0.0, lodash@^4.17.15: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" +loupe@^3.1.0, loupe@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" + integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== + +lru-cache@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" @@ -5298,13 +2913,6 @@ lru-cache@^4.1.2, lru-cache@^4.1.5: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -5326,31 +2934,12 @@ magic-string@^0.26.1: dependencies: sourcemap-codec "^1.4.8" -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +magic-string@^0.30.17: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== dependencies: - object-visit "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.5.0" merge-source-map@^1.1.0: version "1.1.0" @@ -5359,36 +2948,12 @@ merge-source-map@^1.1.0: dependencies: source-map "^0.6.1" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== @@ -5396,6 +2961,14 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -5408,16 +2981,6 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -5425,16 +2988,23 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" minimist@^1.2.0: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== +minimist@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + miragejs@^0.1.48: version "0.1.48" resolved "https://registry.yarnpkg.com/miragejs/-/miragejs-0.1.48.tgz#f30babc00186ac556f0058e5b050fa1137807c5c" @@ -5445,29 +3015,21 @@ miragejs@^0.1.48: lodash "^4.0.0" pretender "^3.4.7" -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp@~1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -5478,68 +3040,11 @@ nanoid@^3.3.8: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-addon-api@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - -node-cache@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-4.2.1.tgz#efd8474dee4edec4138cdded580f5516500f7334" - integrity sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A== - dependencies: - clone "2.x" - lodash "^4.17.15" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -5558,23 +3063,6 @@ nopt@^4.0.3: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -5585,79 +3073,18 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" +nwsapi@^2.2.16: + version "2.2.16" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.16.tgz#177760bba02c351df1d2644e220c31dfec8cdb43" + integrity sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -5688,35 +3115,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -5729,47 +3127,19 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.1.tgz#7cfe35c1ccd641bce3981467e6c2ece61b3b3878" - integrity sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== +parse5@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + entities "^4.5.0" path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -5779,6 +3149,21 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathe@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.2.tgz#5ed86644376915b3c7ee4d00ac8c348d671da3a5" + integrity sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w== + +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== + picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" @@ -5794,7 +3179,7 @@ picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, 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== @@ -5804,30 +3189,11 @@ pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - popper.js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - postcss-attribute-case-insensitive@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" @@ -6155,7 +3521,7 @@ postcss@^8.4.33: picocolors "^1.0.0" source-map-js "^1.2.0" -postcss@^8.4.43: +postcss@^8.4.43, postcss@^8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214" integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== @@ -6178,11 +3544,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - pretender@^3.4.7: version "3.4.7" resolved "https://registry.yarnpkg.com/pretender/-/pretender-3.4.7.tgz#34a2ae2d1fc9db440a990d50e6c0f5481d8755fc" @@ -6201,26 +3562,6 @@ prettier@^3.3.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - pretty@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" @@ -6240,14 +3581,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -6258,49 +3591,26 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + querystring@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -6308,25 +3618,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -6345,145 +3636,29 @@ readdirp@~3.6.0: resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + picomatch "^2.2.1" regenerator-runtime@^0.13.9: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0: +resolve@^1.1.7: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -6492,26 +3667,12 @@ resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2, resolve@^1.18.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -6553,15 +3714,43 @@ rollup@^4.20.0: "@rollup/rollup-win32-x64-msvc" "4.31.0" fsevents "~2.3.2" +rollup@^4.30.1: + version "4.34.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.34.3.tgz#319a3c3065d9f80fef2faef24ef8aba7773e7f77" + integrity sha512-ORCtU0UBJyiAIn9m0llUXJXAswG/68pZptCrqxHG7//Z2DDzAUeyyY5hqf4XrsGlUxscMr9GkQ2QI7KTLqeyPw== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.34.3" + "@rollup/rollup-android-arm64" "4.34.3" + "@rollup/rollup-darwin-arm64" "4.34.3" + "@rollup/rollup-darwin-x64" "4.34.3" + "@rollup/rollup-freebsd-arm64" "4.34.3" + "@rollup/rollup-freebsd-x64" "4.34.3" + "@rollup/rollup-linux-arm-gnueabihf" "4.34.3" + "@rollup/rollup-linux-arm-musleabihf" "4.34.3" + "@rollup/rollup-linux-arm64-gnu" "4.34.3" + "@rollup/rollup-linux-arm64-musl" "4.34.3" + "@rollup/rollup-linux-loongarch64-gnu" "4.34.3" + "@rollup/rollup-linux-powerpc64le-gnu" "4.34.3" + "@rollup/rollup-linux-riscv64-gnu" "4.34.3" + "@rollup/rollup-linux-s390x-gnu" "4.34.3" + "@rollup/rollup-linux-x64-gnu" "4.34.3" + "@rollup/rollup-linux-x64-musl" "4.34.3" + "@rollup/rollup-win32-arm64-msvc" "4.34.3" + "@rollup/rollup-win32-ia32-msvc" "4.34.3" + "@rollup/rollup-win32-x64-msvc" "4.34.3" + fsevents "~2.3.2" + route-recognizer@^0.3.3: version "0.3.4" resolved "https://registry.yarnpkg.com/route-recognizer/-/route-recognizer-0.3.4.tgz#39ab1ffbce1c59e6d2bdca416f0932611e4f3ca3" integrity sha512-2+MhsfPhvauN1O8KaXpXAOfR/fwe8dnUXVM+xw7yt40lJRfPVQxV6yryZm0cgRvAj5fMF/mdRZbL2ptwbs5i2g== -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rrweb-cssom@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" + integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== run-parallel@^1.1.9: version "1.2.0" @@ -6575,33 +3764,11 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - sass@^1.77.6: version "1.77.8" resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" @@ -6611,10 +3778,10 @@ sass@^1.77.6: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" @@ -6623,22 +3790,17 @@ select2@^4.1.0-rc.0: resolved "https://registry.yarnpkg.com/select2/-/select2-4.1.0-rc.0.tgz#ba3cd3901dda0155e1c0219ab41b74ba51ea22d8" integrity sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A== -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: +semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.3.0: +semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.2.1, semver@^7.3.2: +semver@^7.2.1: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -6652,33 +3814,16 @@ semver@^7.5.4: dependencies: lru-cache "^6.0.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" +semver@^7.6.0: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -6686,36 +3831,21 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== sigmund@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6730,36 +3860,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - sortablejs@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393" @@ -6775,18 +3875,7 @@ source-map-js@^1.2.1: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -6794,12 +3883,7 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -6819,75 +3903,20 @@ sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" +std-env@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" + integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== string-width@^4.2.3: version "4.2.3" @@ -6905,13 +3934,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -6926,48 +3948,11 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -6975,21 +3960,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -7021,14 +3998,6 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser@^5.31.1: version "5.31.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.2.tgz#b5ca188107b706084dca82f988089fa6102eba11" @@ -7039,54 +4008,52 @@ terser@^5.31.1: commander "^2.20.0" source-map-support "~0.5.20" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +tinyexec@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" + integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +tinypool@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" + integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== -to-fast-properties@^2.0.0: +tinyrainbow@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" + integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" +tinyspy@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= +tldts-core@^6.1.76: + version "6.1.76" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.76.tgz#1ea632bbf11b288645dd7e2f3fb9cb6fa41e6bd7" + integrity sha512-uzhJ02RaMzgQR3yPoeE65DrcHI6LoM4saUqXOt/b5hmb3+mc4YWpdSeAQqVqRUlQ14q8ZuLRWyBR1ictK1dzzg== + +tldts@^6.1.32: + version "6.1.76" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.76.tgz#c8b60fba55ca78e1c228bead4f69d18731526079" + integrity sha512-6U2ti64/nppsDxQs9hw8ephA3nO6nSQvVVfxwRw8wLQPFtLI1cFI1a1eP22g+LUP+1TA2pKKjUTwWB+K2coqmQ== dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + tldts-core "^6.1.76" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" @@ -7095,54 +4062,24 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tough-cookie@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.0.tgz#0667b0f2fbb5901fe6f226c3e0b710a9a4292f87" + integrity sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg== dependencies: - punycode "^2.1.1" + tldts "^6.1.32" -tsconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" - integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== +tr46@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" + integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== dependencies: - "@types/strip-bom" "^3.0.0" - "@types/strip-json-comments" "0.0.30" - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - -tslib@^1.8.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + punycode "^2.3.1" -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" +ts-api-utils@^1.3.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -7151,96 +4088,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -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== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - update-browserslist-db@^1.0.16, update-browserslist-db@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" @@ -7263,55 +4120,26 @@ uri-js@^4.4.1: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +vite-node@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.0.5.tgz#6a0d06f7a4bdaae6ddcdedc12d910d886cf7d62f" + integrity sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + cac "^6.7.14" + debug "^4.4.0" + es-module-lexer "^1.6.0" + pathe "^2.0.2" + vite "^5.0.0 || ^6.0.0" vite-plugin-ruby@^5.0.0: version "5.0.0" @@ -7347,6 +4175,17 @@ vite-plugin-vue2@^1.9.3: source-map "^0.7.3" vue-template-es2015-compiler "^1.9.1" +"vite@^5.0.0 || ^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.1.0.tgz#00a4e99a23751af98a2e4701c65ba89ce23858a6" + integrity sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ== + dependencies: + esbuild "^0.24.2" + postcss "^8.5.1" + rollup "^4.30.1" + optionalDependencies: + fsevents "~2.3.3" + vite@^5.4.14: version "5.4.14" resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408" @@ -7358,6 +4197,32 @@ vite@^5.4.14: optionalDependencies: fsevents "~2.3.3" +vitest@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.0.5.tgz#a9a3fa1203d85869c9ba66f3ea990b72d00ddeb0" + integrity sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q== + dependencies: + "@vitest/expect" "3.0.5" + "@vitest/mocker" "3.0.5" + "@vitest/pretty-format" "^3.0.5" + "@vitest/runner" "3.0.5" + "@vitest/snapshot" "3.0.5" + "@vitest/spy" "3.0.5" + "@vitest/utils" "3.0.5" + chai "^5.1.2" + debug "^4.4.0" + expect-type "^1.1.0" + magic-string "^0.30.17" + pathe "^2.0.2" + std-env "^3.8.0" + tinybench "^2.9.0" + tinyexec "^0.3.2" + tinypool "^1.0.2" + tinyrainbow "^2.0.0" + vite "^5.0.0 || ^6.0.0" + vite-node "3.0.5" + why-is-node-running "^2.3.0" + vue-eslint-parser@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" @@ -7375,23 +4240,6 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== -vue-jest@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-3.0.7.tgz#a6d29758a5cb4d750f5d1242212be39be4296a33" - integrity sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w== - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.26.0" - chalk "^2.1.0" - deasync "^0.1.15" - extract-from-css "^0.4.4" - find-babel-config "^1.1.0" - js-beautify "^1.6.14" - node-cache "^4.1.1" - object-assign "^4.1.1" - source-map "^0.5.6" - tsconfig "^7.0.0" - vue-template-es2015-compiler "^1.6.0" - vue-loader@^15.11.1: version "15.11.1" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.11.1.tgz#dee91169211276ed43c5715caef88a56b1f497b0" @@ -7419,7 +4267,7 @@ vue-template-compiler@^2.7.16: de-indent "^1.0.2" he "^1.2.0" -vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0, vue-template-es2015-compiler@^1.9.1: +vue-template-es2015-compiler@^1.9.0, vue-template-es2015-compiler@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== @@ -7437,167 +4285,89 @@ vuex@^3.6.2: resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^5.0.0: +w3c-xmlserializer@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" whatwg-fetch@^3.6.20: version "3.6.20" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +whatwg-url@^14.0.0, whatwg-url@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.1.0.tgz#fffebec86cc8e6c2a657e50dc606207b870f0ab3" + integrity sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w== dependencies: - isexe "^2.0.0" + tr46 "^5.0.0" + webidl-conversions "^7.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +word-wrap@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" From a124453401e9eb183c433c9a3abc41634c40f367 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 10:50:58 +0000 Subject: [PATCH 088/100] test: add final source volumes --- spec/models/well_spec.rb | 44 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 94aa3fea3b..18f0098ca1 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -438,21 +438,20 @@ expect(well.get_buffer_volume + vol_to_pick).to eq(5.0) end - # TODO: Y24-383 - add assertions for final source and destination volumes # rubocop:todo Layout/LineLength # stree-ignore [ - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, scenario: 'As above, just more extreme' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, scenario: 'High concentration, minimum robot volume increases source pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, scenario: 'Less DNA than robot minimum pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, scenario: 'Low concentration, maximum DNA, no buffer' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, scenario: 'Zero concentration, with less volume than required' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, - { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'As above, just more extreme' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'High concentration, minimum robot volume increases source pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Less DNA than robot minimum pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Low concentration, maximum DNA, no buffer' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, source_volume_remaining: 120.0, destination_volume: 50.0, scenario: 'Zero concentration, with less volume than required' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, source_volume_remaining: 120.0, destination_volume: 50.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, + { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, source_volume_remaining: 15.0, destination_volume: 50.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, ].each do |cherrypick| # rubocop:enable Layout/LineLength target_volume = cherrypick[:target_volume] @@ -462,22 +461,22 @@ robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] source_volume_obtained = cherrypick[:source_volume_obtained] buffer_volume_obtained = cherrypick[:buffer_volume_obtained] + source_volume_remaining = cherrypick[:source_volume_remaining] + destination_volume = cherrypick[:destination_volume] scenario = cherrypick[:scenario] context "when testing #{scenario}" do before do - @result_volume = - format( - '%.1f', - well.volume_to_cherrypick_by_nano_grams_per_micro_litre( + @result_volume = well.volume_to_cherrypick_by_nano_grams_per_micro_litre( target_volume, target_concentration, source_concentration, source_volume, robot_minimum_pick_volume - ) - ).to_f - @result_buffer_volume = format('%.1f', well.get_buffer_volume).to_f + ).round(1) + @result_buffer_volume = well.get_buffer_volume.round(1) + @source_volume_remaining = well.get_current_volume.round(1) + @destination_volume = @target_well.well_attribute.current_volume.round(1) end it 'gets correct volume quantity' do @@ -487,6 +486,15 @@ it 'gets correct buffer volume measures' do expect(@result_buffer_volume).to eq(buffer_volume_obtained) end + + it 'gets correct source volume remaining' do + expect(@source_volume_remaining).to eq(source_volume_remaining) + end + + it 'gets correct destination volume' do + expect(@target_well.well_attribute.current_volume.round(2)).to eq(destination_volume.round(2)) + end + end end end From 3689bf503ad22cbb0d23585cdfdfcfdd84293e8a Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Thu, 6 Feb 2025 11:39:36 +0000 Subject: [PATCH 089/100] deps: updates eslint and its config --- app/frontend/.eslintrc.js | 25 - app/frontend/shared/components/BaseRadio.vue | 1 + eslint.config.js | 78 ++ package.json | 8 +- postcss.config.js => postcss.config.cjs | 0 vite.config.js | 8 +- yarn.lock | 717 ++++++++----------- 7 files changed, 397 insertions(+), 440 deletions(-) delete mode 100644 app/frontend/.eslintrc.js create mode 100644 eslint.config.js rename postcss.config.js => postcss.config.cjs (100%) diff --git a/app/frontend/.eslintrc.js b/app/frontend/.eslintrc.js deleted file mode 100644 index e51cb4a6d9..0000000000 --- a/app/frontend/.eslintrc.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - env: { - browser: true, - es6: true, - amd: true, - node: true, - }, - plugins: ["vue"], - extends: ["eslint:recommended", "plugin:vue/recommended", "prettier"], - parserOptions: { - sourceType: "module", - ecmaVersion: 2018, - }, - rules: { - "no-unused-vars": [ - "error", - { - vars: "all", - args: "after-used", - ignoreRestSiblings: false, - argsIgnorePattern: "^_", - }, - ], - }, -}; diff --git a/app/frontend/shared/components/BaseRadio.vue b/app/frontend/shared/components/BaseRadio.vue index 5b233e5852..6b030c45fc 100644 --- a/app/frontend/shared/components/BaseRadio.vue +++ b/app/frontend/shared/components/BaseRadio.vue @@ -56,6 +56,7 @@ export default { name: { type: String, required: true }, id: { type: String, required: true }, // Unique id essential for generating labels }, + emits: ["change"], data: function () { return { value: this.selected, diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000000..b3e84b88d0 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,78 @@ +import vitest from "eslint-plugin-vitest"; +import pluginVue from "eslint-plugin-vue"; +import eslintConfigPrettier from "eslint-config-prettier"; +import js from "@eslint/js"; +import globals from "globals"; + +export default [ + ...pluginVue.configs["flat/recommended"], + js.configs.recommended, + eslintConfigPrettier, + { + env: { + "vitest/env": true, + }, + files: ["**/*.js,**/*.vue,**/*.cjs"], + plugins: { + vitest, + }, + rules: { + ...vitest.configs.recommended.rules, + "vitest/max-nested-describe": ["error", { max: 3 }], + }, + }, + { + rules: { + "no-unused-vars": [ + "error", + { + vars: "all", + args: "after-used", + ignoreRestSiblings: false, + argsIgnorePattern: "^_", + }, + ], + }, + }, + { + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + globals: { + ...vitest.environments.env.globals, + ...globals.browser, + ...globals.node, + // Global vitest and Cypress variables so they don't violate no-undef + vi: "readonly", + cy: "readonly", + Cypress: "readonly", + }, + }, + }, +]; + +// module.exports = { +// env: { +// browser: true, +// es6: true, +// amd: true, +// node: true, +// }, +// plugins: ["vue", "vitest"], +// extends: ["eslint:recommended", "plugin:vue/recommended", "prettier"], +// parserOptions: { +// sourceType: "module", +// ecmaVersion: 2018, +// }, +// rules: { +// "no-unused-vars": [ +// "error", +// { +// vars: "all", +// args: "after-used", +// ignoreRestSiblings: false, +// argsIgnorePattern: "^_", +// }, +// ], +// }, +// }; diff --git a/package.json b/package.json index 1290ff5bd6..a0cdeabc0f 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "type": "module", "dependencies": { "@fortawesome/fontawesome-free": "^6.5.2", "@rails/ujs": "^7.1.501", @@ -34,10 +35,11 @@ "@prettier/plugin-ruby": "^4.0.0", "@vitejs/plugin-legacy": "^1.8.2", "@vue/test-utils": "^1.3.6", - "eslint": "^7.32.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^8.10.0", "eslint-plugin-vitest": "^0.5.4", - "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-vue": "^9.32.0", + "globals": "^15.14.0", "jsdom": "^26.0.0", "miragejs": "^0.1.48", "prettier": "^3.3.2", @@ -54,7 +56,7 @@ }, "scripts": { "test": "vitest run", - "lint": "eslint --ext .js --ext .vue app/frontend", + "lint": "eslint app/frontend", "lintOnly": "eslint --ext .js --ext .vue" } } diff --git a/postcss.config.js b/postcss.config.cjs similarity index 100% rename from postcss.config.js rename to postcss.config.cjs diff --git a/vite.config.js b/vite.config.js index 9ca17a0f6a..a8db181f45 100644 --- a/vite.config.js +++ b/vite.config.js @@ -22,14 +22,14 @@ export default defineConfig({ }, test: { globals: true, - environment: 'jsdom', + environment: "jsdom", coverage: { - provider: 'v8', - reporter: ['lcov', 'text'], + provider: "v8", + reporter: ["lcov", "text"], }, // This hides the "Download the Vue Devtools extension" message from the console onConsoleLog(log) { - if (log.includes('Download the Vue Devtools extension')) return false + if (log.includes("Download the Vue Devtools extension")) return false; }, }, }); diff --git a/yarn.lock b/yarn.lock index 764692d6aa..a822ef913d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,13 +13,6 @@ "@csstools/css-tokenizer" "^3.0.3" lru-cache "^10.4.3" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -230,7 +223,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.24.7": +"@babel/helper-validator-identifier@^7.16.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== @@ -254,16 +247,6 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/highlight@^7.10.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - "@babel/highlight@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" @@ -774,46 +757,99 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== -"@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.19.0": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa" + integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.10.0.tgz#23727063c21b335f752dbb3a16450f6f9cbc9091" + integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@9.19.0": + version "9.19.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.19.0.tgz#51dbb140ed6b49d05adc0b171c41e1a8713b7789" + integrity sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz#ee07372035539e7847ef834e3f5e7b79f09e3a81" + integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== + dependencies: + "@eslint/core" "^0.10.0" + levn "^0.4.1" + "@fortawesome/fontawesome-free@^6.5.2": version "6.5.2" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz#310fe90cb5a8dee9698833171b98e7835404293d" integrity sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q== -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" @@ -1131,11 +1167,16 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/estree@1.0.6", "@types/estree@^1.0.0": +"@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@typescript-eslint/scope-manager@7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" @@ -1372,20 +1413,15 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.14.0, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== acorn@^8.8.2: version "8.12.1" @@ -1397,7 +1433,7 @@ agent-base@^7.1.0, agent-base@^7.1.2: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1407,31 +1443,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1439,7 +1450,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -1455,12 +1466,10 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-union@^2.1.0: version "2.1.0" @@ -1472,11 +1481,6 @@ assertion-error@^2.0.1: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1519,6 +1523,11 @@ bluebird@^3.1.1, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + bootstrap@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.2.tgz#8e0cd61611728a5bf65a3a2b8d6ff6c77d5d7479" @@ -1746,10 +1755,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -1948,27 +1957,27 @@ debug@4, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^4.0.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0: version "4.3.5" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" -debug@^4.4.0: +debug@^4.3.1, debug@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" +debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + decimal.js@^10.4.3: version "10.5.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" @@ -1996,13 +2005,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-event-types@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" @@ -2028,23 +2030,11 @@ electron-to-chromium@^1.4.796, electron-to-chromium@^1.4.820: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz#76068ed1c71dd3963e1befc8ae815004b2da6a02" integrity sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ== -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -2142,142 +2132,110 @@ eslint-plugin-vitest@^0.5.4: dependencies: "@typescript-eslint/utils" "^7.7.1" -eslint-plugin-vue@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" - integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== +eslint-plugin-vue@^9.32.0: + version "9.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz#2b558e827886b567dfaa156cc1cad0f596461fab" + integrity sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug== dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + globals "^13.24.0" natural-compare "^1.4.0" - semver "^5.6.0" - vue-eslint-parser "^7.0.0" - -eslint-scope@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + nth-check "^2.1.1" + postcss-selector-parser "^6.0.15" + semver "^7.6.3" + vue-eslint-parser "^9.4.3" + xml-name-validator "^4.0.0" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^7.1.1: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" + estraverse "^5.2.0" -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.19.0: + version "9.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.19.0.tgz#ffa1d265fc4205e0f8464330d35f09e1d548b1bf" + integrity sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.10.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.19.0" + "@eslint/plugin-kit" "^0.2.5" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" + cross-spawn "^7.0.6" + debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + optionator "^0.9.3" -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - estraverse "^5.1.0" + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" -esquery@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +espree@^9.3.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - estraverse "^5.1.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esquery@^1.4.0, esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: - estraverse "^4.1.0" + estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" @@ -2286,11 +2244,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -2379,12 +2332,12 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.0.1, fill-range@^7.1.1: version "7.1.1" @@ -2393,14 +2346,21 @@ fill-range@^7.0.1, fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flatted@^3.2.9: version "3.3.1" @@ -2446,11 +2406,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2463,6 +2418,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -2480,13 +2442,23 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: +globals@^13.24.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.14.0: + version "15.14.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" + integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== + globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -2576,11 +2548,6 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -2596,14 +2563,6 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== -import-fresh@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -2669,11 +2628,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-glob@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -2739,13 +2693,12 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + argparse "^2.0.1" jsbarcode@^3.11.6: version "3.11.6" @@ -2794,11 +2747,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -2837,7 +2785,7 @@ jszip@^3.10.1: readable-stream "~2.3.6" setimmediate "^1.0.5" -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -2875,6 +2823,13 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -2885,12 +2840,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash@^4.0.0, lodash@^4.17.15: +lodash@^4.0.0, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2981,7 +2931,7 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" -minimatch@^3.0.4: +minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -3073,6 +3023,13 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +nth-check@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nwsapi@^2.2.16: version "2.2.16" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.16.tgz#177760bba02c351df1d2644e220c31dfec8cdb43" @@ -3085,17 +3042,17 @@ once@^1.3.0: dependencies: wrappy "1" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + word-wrap "^1.2.5" os-homedir@^1.0.0: version "1.0.2" @@ -3115,6 +3072,20 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -3134,6 +3105,11 @@ parse5@^7.2.1: dependencies: entities "^4.5.0" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3482,6 +3458,14 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.9: cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.15: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.9" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" @@ -3576,11 +3560,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -3643,16 +3622,6 @@ regenerator-runtime@^0.13.9: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -3672,13 +3641,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rollup@^2.58.0: version "2.66.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.66.1.tgz#366b0404de353c4331d538c3ad2963934fcb4937" @@ -3800,12 +3762,10 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" +semver@^7.3.6, semver@^7.6.0, semver@^7.6.3: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== semver@^7.5.4: version "7.6.0" @@ -3814,11 +3774,6 @@ semver@^7.5.4: dependencies: lru-cache "^6.0.0" -semver@^7.6.0: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -3851,15 +3806,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - sortablejs@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393" @@ -3903,11 +3849,6 @@ sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -3918,15 +3859,6 @@ std-env@^3.8.0: resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== -string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -3934,21 +3866,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -3987,17 +3905,6 @@ systemjs@^6.12.1: resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.15.1.tgz#74175b6810e27a79e1177d21db5f0e3057118cea" integrity sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA== -table@^6.0.9: - version "6.8.2" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" - integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - terser@^5.31.1: version "5.31.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.2.tgz#b5ca188107b706084dca82f988089fa6102eba11" @@ -4008,11 +3915,6 @@ terser@^5.31.1: commander "^2.20.0" source-map-support "~0.5.20" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - tinybench@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" @@ -4113,23 +4015,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uri-js@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - vite-node@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.0.5.tgz#6a0d06f7a4bdaae6ddcdedc12d910d886cf7d62f" @@ -4223,17 +4113,18 @@ vitest@^3.0.5: vite-node "3.0.5" why-is-node-running "^2.3.0" -vue-eslint-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" - integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== - dependencies: - debug "^4.1.1" - eslint-scope "^5.0.0" - eslint-visitor-keys "^1.1.0" - espree "^6.2.1" - esquery "^1.0.1" - lodash "^4.17.15" +vue-eslint-parser@^9.4.3: + version "9.4.3" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" + integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" vue-hot-reload-api@^2.3.0: version "2.3.4" @@ -4337,10 +4228,10 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wrappy@1: version "1.0.2" @@ -4352,6 +4243,11 @@ ws@^8.18.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + xml-name-validator@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" @@ -4371,3 +4267,8 @@ yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From c31d6c8f47853b12d96a8e59a51ccc4c14cf7d57 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Thu, 6 Feb 2025 11:40:54 +0000 Subject: [PATCH 090/100] misc: removes comments from eslint config file --- eslint.config.js | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index b3e84b88d0..d35be54ab1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -50,29 +50,3 @@ export default [ }, }, ]; - -// module.exports = { -// env: { -// browser: true, -// es6: true, -// amd: true, -// node: true, -// }, -// plugins: ["vue", "vitest"], -// extends: ["eslint:recommended", "plugin:vue/recommended", "prettier"], -// parserOptions: { -// sourceType: "module", -// ecmaVersion: 2018, -// }, -// rules: { -// "no-unused-vars": [ -// "error", -// { -// vars: "all", -// args: "after-used", -// ignoreRestSiblings: false, -// argsIgnorePattern: "^_", -// }, -// ], -// }, -// }; From 26c2f6f318b0e7db99177b62feffea8a0ba85d44 Mon Sep 17 00:00:00 2001 From: Ben Topping Date: Thu, 6 Feb 2025 13:17:23 +0000 Subject: [PATCH 091/100] deps(eslint): removes redundant globals --- eslint.config.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index d35be54ab1..30119c9005 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -39,13 +39,10 @@ export default [ ecmaVersion: "latest", sourceType: "module", globals: { + // Globals to ensure we don't violate no-undef ...vitest.environments.env.globals, ...globals.browser, ...globals.node, - // Global vitest and Cypress variables so they don't violate no-undef - vi: "readonly", - cy: "readonly", - Cypress: "readonly", }, }, }, From 32c80c3a03f40fbedd75ae0ffb658530bc4dd2a7 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 16:00:27 +0000 Subject: [PATCH 092/100] test: add final destination volumes --- spec/models/well_spec.rb | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 18f0098ca1..df87d04cf5 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -442,16 +442,16 @@ # stree-ignore [ - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'As above, just more extreme' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'High concentration, minimum robot volume increases source pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Less DNA than robot minimum pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, source_volume_remaining: 100.0, destination_volume: 50.0, scenario: 'Low concentration, maximum DNA, no buffer' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, source_volume_remaining: 120.0, destination_volume: 50.0, scenario: 'Zero concentration, with less volume than required' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, source_volume_remaining: 120.0, destination_volume: 50.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, - { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, source_volume_remaining: 15.0, destination_volume: 50.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'As above, just more extreme' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'High concentration, minimum robot volume increases source pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, + { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Less DNA than robot minimum pick' }, + { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Low concentration, maximum DNA, no buffer' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, source_volume_remaining: 120.0, destination_volume: 15.0, scenario: 'Zero concentration, with less volume than required' }, + { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, source_volume_remaining: 120.0, destination_volume: 15.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, + { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, source_volume_remaining: 15.0, destination_volume: 15.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, ].each do |cherrypick| # rubocop:enable Layout/LineLength target_volume = cherrypick[:target_volume] @@ -467,15 +467,18 @@ context "when testing #{scenario}" do before do - @result_volume = well.volume_to_cherrypick_by_nano_grams_per_micro_litre( + @source_well = create(:well) + @target_well = create(:well) + @source_well.well_attribute.update!(concentration:source_concentration, measured_volume:source_volume) + @result_volume = @source_well.volume_to_cherrypick_by_nano_grams_per_micro_litre( target_volume, target_concentration, source_concentration, source_volume, robot_minimum_pick_volume ).round(1) - @result_buffer_volume = well.get_buffer_volume.round(1) - @source_volume_remaining = well.get_current_volume.round(1) + @result_buffer_volume = @source_well.get_buffer_volume.round(1) + @source_volume_remaining = @source_well.get_current_volume.round(1) @destination_volume = @target_well.well_attribute.current_volume.round(1) end @@ -492,7 +495,7 @@ end it 'gets correct destination volume' do - expect(@target_well.well_attribute.current_volume.round(2)).to eq(destination_volume.round(2)) + expect(@destination_volume).to eq(destination_volume) end end From 15c3b317506534881fc0c709c14bea12908dc6d1 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 16:04:10 +0000 Subject: [PATCH 093/100] style: reformat test to improve readbility --- spec/models/well_spec.rb | 178 +++++++++++++++++++++++++++++++-------- 1 file changed, 142 insertions(+), 36 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index df87d04cf5..1a2a6f6a16 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -438,48 +438,155 @@ expect(well.get_buffer_volume + vol_to_pick).to eq(5.0) end - # rubocop:todo Layout/LineLength - - # stree-ignore [ - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Standard scenario, sufficient material, buffer and dna both added' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume:nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Insufficient source material for concentration or volume. Make up with buffer' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'As above, just more extreme' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'High concentration, minimum robot volume increases source pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Lowish concentration, non zero, but less than robot buffer required' }, - { target_volume: 100.0, target_concentration: 5.0, source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Less DNA than robot minimum pick' }, - { target_volume: 100.0, target_concentration: 50.0, source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, source_volume_remaining: 100.0, destination_volume: 15.0, scenario: 'Low concentration, maximum DNA, no buffer' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, source_volume_remaining: 120.0, destination_volume: 15.0, scenario: 'Zero concentration, with less volume than required' }, - { target_volume: 120.0, target_concentration: 50.0, source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume:5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, source_volume_remaining: 120.0, destination_volume: 15.0, scenario: 'Zero concentration, with less volume than even the minimum robot pick' }, - { target_volume: 15.0, target_concentration: 50.0, source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume:5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, source_volume_remaining: 15.0, destination_volume: 15.0, scenario: 'Y24-382: SQPD-10859 v10.71 b5.00' }, + { + scenario: 'Standard scenario, sufficient material, buffer and dna both added', + target_volume: 100.0, + target_concentration: 50.0, + source_concentration: 100.0, + source_volume: 200.0, + robot_minimum_pick_volume: nil, + source_volume_obtained: 50.0, + buffer_volume_obtained: 50.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'Insufficient source material for concentration or volume. Make up with buffer', + target_volume: 100.0, + target_concentration: 50.0, + source_concentration: 100.0, + source_volume: 20.0, + robot_minimum_pick_volume: nil, + source_volume_obtained: 20.0, + buffer_volume_obtained: 80.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'As above, just more extreme', + target_volume: 100.0, + target_concentration: 5.0, + source_concentration: 100.0, + source_volume: 2.0, + robot_minimum_pick_volume: nil, + source_volume_obtained: 2.0, + buffer_volume_obtained: 98.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'High concentration, minimum robot volume increases source pick', + target_volume: 100.0, + target_concentration: 5.0, + source_concentration: 100.0, + source_volume: 5.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 5.0, + buffer_volume_obtained: 95.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'Lowish concentration, non zero, but less than robot buffer required', + target_volume: 100.0, + target_concentration: 50.0, + source_concentration: 52.0, + source_volume: 200.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 96.2, + buffer_volume_obtained: 5.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'Less DNA than robot minimum pick', + target_volume: 100.0, + target_concentration: 5.0, + source_concentration: 100.0, + source_volume: 2.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 5.0, + buffer_volume_obtained: 98.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'Low concentration, maximum DNA, no buffer', + target_volume: 100.0, + target_concentration: 50.0, + source_concentration: 1.0, + source_volume: 200.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 100.0, + buffer_volume_obtained: 0.0, + source_volume_remaining: 100.0, + destination_volume: 15.0 + }, + { + scenario: 'Zero concentration, with less volume than required', + target_volume: 120.0, + target_concentration: 50.0, + source_concentration: 0, + source_volume: 60.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 60.0, + buffer_volume_obtained: 60.0, + source_volume_remaining: 120.0, + destination_volume: 15.0 + }, + { + scenario: 'Zero concentration, with less volume than even the minimum robot pick', + target_volume: 120.0, + target_concentration: 50.0, + source_concentration: 0, + source_volume: 3.0, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 5.0, + buffer_volume_obtained: 117.0, + source_volume_remaining: 120.0, + destination_volume: 15.0 + }, + { + scenario: 'Y24-382: SQPD-10859 v10.71 b5.00', + target_volume: 15.0, + target_concentration: 50.0, + source_concentration: 70.0, + source_volume: 50, + robot_minimum_pick_volume: 5.0, + source_volume_obtained: 10.7, + buffer_volume_obtained: 5.0, + source_volume_remaining: 15.0, + destination_volume: 15.0 + } ].each do |cherrypick| - # rubocop:enable Layout/LineLength - target_volume = cherrypick[:target_volume] - target_concentration = cherrypick[:target_concentration] - source_concentration = cherrypick[:source_concentration] - source_volume = cherrypick[:source_volume] - robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] - source_volume_obtained = cherrypick[:source_volume_obtained] - buffer_volume_obtained = cherrypick[:buffer_volume_obtained] - source_volume_remaining = cherrypick[:source_volume_remaining] - destination_volume = cherrypick[:destination_volume] - scenario = cherrypick[:scenario] + scenario = cherrypick[:scenario] + target_volume = cherrypick[:target_volume] + target_concentration = cherrypick[:target_concentration] + source_concentration = cherrypick[:source_concentration] + source_volume = cherrypick[:source_volume] + robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] + source_volume_obtained = cherrypick[:source_volume_obtained] + buffer_volume_obtained = cherrypick[:buffer_volume_obtained] + source_volume_remaining = cherrypick[:source_volume_remaining] + destination_volume = cherrypick[:destination_volume] context "when testing #{scenario}" do before do @source_well = create(:well) @target_well = create(:well) - @source_well.well_attribute.update!(concentration:source_concentration, measured_volume:source_volume) - @result_volume = @source_well.volume_to_cherrypick_by_nano_grams_per_micro_litre( - target_volume, - target_concentration, - source_concentration, - source_volume, - robot_minimum_pick_volume - ).round(1) - @result_buffer_volume = @source_well.get_buffer_volume.round(1) - @source_volume_remaining = @source_well.get_current_volume.round(1) - @destination_volume = @target_well.well_attribute.current_volume.round(1) + @source_well.well_attribute.update!(concentration: source_concentration, measured_volume: source_volume) + @result_volume = + @source_well.volume_to_cherrypick_by_nano_grams_per_micro_litre( + target_volume, + target_concentration, + source_concentration, + source_volume, + robot_minimum_pick_volume + ).round(1) + @result_buffer_volume = @source_well.get_buffer_volume.round(1) + @source_volume_remaining = @source_well.get_current_volume.round(1) + @destination_volume = @target_well.well_attribute.current_volume.round(1) end it 'gets correct volume quantity' do @@ -497,7 +604,6 @@ it 'gets correct destination volume' do expect(@destination_volume).to eq(destination_volume) end - end end end From b1395442a47fa2cbdcc1be25740f834751f16c28 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 16:55:00 +0000 Subject: [PATCH 094/100] test: update final volumes --- spec/models/well_spec.rb | 71 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index 1a2a6f6a16..a34f802678 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -448,8 +448,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 150.0, + destination_volume: 100.0 }, { scenario: 'Insufficient source material for concentration or volume. Make up with buffer', @@ -460,8 +460,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 100.0 }, { scenario: 'As above, just more extreme', @@ -472,8 +472,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 100.0 }, { scenario: 'High concentration, minimum robot volume increases source pick', @@ -484,8 +484,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 100.0 }, { scenario: 'Lowish concentration, non zero, but less than robot buffer required', @@ -496,8 +496,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 103.8, + destination_volume: 100.0 }, { scenario: 'Less DNA than robot minimum pick', @@ -508,8 +508,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, - source_volume_remaining: 100.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 100.0 }, { scenario: 'Low concentration, maximum DNA, no buffer', @@ -521,7 +521,7 @@ source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, source_volume_remaining: 100.0, - destination_volume: 15.0 + destination_volume: 100.0 }, { scenario: 'Zero concentration, with less volume than required', @@ -532,8 +532,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, - source_volume_remaining: 120.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 120.0 }, { scenario: 'Zero concentration, with less volume than even the minimum robot pick', @@ -544,8 +544,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, - source_volume_remaining: 120.0, - destination_volume: 15.0 + source_volume_remaining: 0.0, + destination_volume: 120.0 }, { scenario: 'Y24-382: SQPD-10859 v10.71 b5.00', @@ -556,7 +556,7 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, - source_volume_remaining: 15.0, + source_volume_remaining: 39.3, destination_volume: 15.0 } ].each do |cherrypick| @@ -573,36 +573,41 @@ context "when testing #{scenario}" do before do + # Create source and target wells @source_well = create(:well) @target_well = create(:well) @source_well.well_attribute.update!(concentration: source_concentration, measured_volume: source_volume) - @result_volume = - @source_well.volume_to_cherrypick_by_nano_grams_per_micro_litre( - target_volume, - target_concentration, - source_concentration, - source_volume, - robot_minimum_pick_volume - ).round(1) - @result_buffer_volume = @source_well.get_buffer_volume.round(1) - @source_volume_remaining = @source_well.get_current_volume.round(1) - @destination_volume = @target_well.well_attribute.current_volume.round(1) + + # Perform cherrypick + @target_well.volume_to_cherrypick_by_nano_grams_per_micro_litre( + target_volume, + target_concentration, + source_concentration, + source_volume, + robot_minimum_pick_volume + ) + + # Perform bed verification + # mirrored from CherrypickRequest.reduce_source_volume + subtracted_volume = @target_well.get_picked_volume + new_volume = @source_well.get_current_volume - subtracted_volume + @source_well.set_current_volume(new_volume) end it 'gets correct volume quantity' do - expect(@result_volume).to eq(source_volume_obtained) + expect(@target_well.get_picked_volume.round(1)).to eq(source_volume_obtained) end it 'gets correct buffer volume measures' do - expect(@result_buffer_volume).to eq(buffer_volume_obtained) + expect(@target_well.get_buffer_volume.round(1)).to eq(buffer_volume_obtained) end it 'gets correct source volume remaining' do - expect(@source_volume_remaining).to eq(source_volume_remaining) + expect(@source_well.get_current_volume.round(1)).to eq(source_volume_remaining) end it 'gets correct destination volume' do - expect(@destination_volume).to eq(destination_volume) + expect(@target_well.get_current_volume.round(1)).to eq(destination_volume) end end end From df4afddd63602e00b96618fc21611c400913a488 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 16:59:13 +0000 Subject: [PATCH 095/100] style: change test parameter order for reability --- spec/models/well_spec.rb | 42 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index a34f802678..afa725ac74 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -448,8 +448,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 50.0, buffer_volume_obtained: 50.0, - source_volume_remaining: 150.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 150.0 }, { scenario: 'Insufficient source material for concentration or volume. Make up with buffer', @@ -460,8 +460,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 20.0, buffer_volume_obtained: 80.0, - source_volume_remaining: 0.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 0.0 }, { scenario: 'As above, just more extreme', @@ -472,8 +472,8 @@ robot_minimum_pick_volume: nil, source_volume_obtained: 2.0, buffer_volume_obtained: 98.0, - source_volume_remaining: 0.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 0.0 }, { scenario: 'High concentration, minimum robot volume increases source pick', @@ -484,8 +484,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 95.0, - source_volume_remaining: 0.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 0.0 }, { scenario: 'Lowish concentration, non zero, but less than robot buffer required', @@ -496,8 +496,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 96.2, buffer_volume_obtained: 5.0, - source_volume_remaining: 103.8, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 103.8 }, { scenario: 'Less DNA than robot minimum pick', @@ -508,8 +508,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 98.0, - source_volume_remaining: 0.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 0.0 }, { scenario: 'Low concentration, maximum DNA, no buffer', @@ -520,8 +520,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 100.0, buffer_volume_obtained: 0.0, - source_volume_remaining: 100.0, - destination_volume: 100.0 + destination_volume: 100.0, + source_volume_remaining: 100.0 }, { scenario: 'Zero concentration, with less volume than required', @@ -532,8 +532,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 60.0, buffer_volume_obtained: 60.0, - source_volume_remaining: 0.0, - destination_volume: 120.0 + destination_volume: 120.0, + source_volume_remaining: 0.0 }, { scenario: 'Zero concentration, with less volume than even the minimum robot pick', @@ -544,8 +544,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 5.0, buffer_volume_obtained: 117.0, - source_volume_remaining: 0.0, - destination_volume: 120.0 + destination_volume: 120.0, + source_volume_remaining: 0.0 }, { scenario: 'Y24-382: SQPD-10859 v10.71 b5.00', @@ -556,8 +556,8 @@ robot_minimum_pick_volume: 5.0, source_volume_obtained: 10.7, buffer_volume_obtained: 5.0, - source_volume_remaining: 39.3, - destination_volume: 15.0 + destination_volume: 15.0, + source_volume_remaining: 39.3 } ].each do |cherrypick| scenario = cherrypick[:scenario] @@ -568,8 +568,8 @@ robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] source_volume_obtained = cherrypick[:source_volume_obtained] buffer_volume_obtained = cherrypick[:buffer_volume_obtained] - source_volume_remaining = cherrypick[:source_volume_remaining] destination_volume = cherrypick[:destination_volume] + source_volume_remaining = cherrypick[:source_volume_remaining] context "when testing #{scenario}" do before do From dbaabb442382801036886fb4f652dc2c47b8b131 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 17:00:08 +0000 Subject: [PATCH 096/100] refactor: rename _obtained -> _picked --- spec/models/well_spec.rb | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index afa725ac74..b37602d513 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -446,8 +446,8 @@ source_concentration: 100.0, source_volume: 200.0, robot_minimum_pick_volume: nil, - source_volume_obtained: 50.0, - buffer_volume_obtained: 50.0, + source_volume_picked: 50.0, + buffer_volume_picked: 50.0, destination_volume: 100.0, source_volume_remaining: 150.0 }, @@ -458,8 +458,8 @@ source_concentration: 100.0, source_volume: 20.0, robot_minimum_pick_volume: nil, - source_volume_obtained: 20.0, - buffer_volume_obtained: 80.0, + source_volume_picked: 20.0, + buffer_volume_picked: 80.0, destination_volume: 100.0, source_volume_remaining: 0.0 }, @@ -470,8 +470,8 @@ source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: nil, - source_volume_obtained: 2.0, - buffer_volume_obtained: 98.0, + source_volume_picked: 2.0, + buffer_volume_picked: 98.0, destination_volume: 100.0, source_volume_remaining: 0.0 }, @@ -482,8 +482,8 @@ source_concentration: 100.0, source_volume: 5.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 5.0, - buffer_volume_obtained: 95.0, + source_volume_picked: 5.0, + buffer_volume_picked: 95.0, destination_volume: 100.0, source_volume_remaining: 0.0 }, @@ -494,8 +494,8 @@ source_concentration: 52.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 96.2, - buffer_volume_obtained: 5.0, + source_volume_picked: 96.2, + buffer_volume_picked: 5.0, destination_volume: 100.0, source_volume_remaining: 103.8 }, @@ -506,8 +506,8 @@ source_concentration: 100.0, source_volume: 2.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 5.0, - buffer_volume_obtained: 98.0, + source_volume_picked: 5.0, + buffer_volume_picked: 98.0, destination_volume: 100.0, source_volume_remaining: 0.0 }, @@ -518,8 +518,8 @@ source_concentration: 1.0, source_volume: 200.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 100.0, - buffer_volume_obtained: 0.0, + source_volume_picked: 100.0, + buffer_volume_picked: 0.0, destination_volume: 100.0, source_volume_remaining: 100.0 }, @@ -530,8 +530,8 @@ source_concentration: 0, source_volume: 60.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 60.0, - buffer_volume_obtained: 60.0, + source_volume_picked: 60.0, + buffer_volume_picked: 60.0, destination_volume: 120.0, source_volume_remaining: 0.0 }, @@ -542,8 +542,8 @@ source_concentration: 0, source_volume: 3.0, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 5.0, - buffer_volume_obtained: 117.0, + source_volume_picked: 5.0, + buffer_volume_picked: 117.0, destination_volume: 120.0, source_volume_remaining: 0.0 }, @@ -554,8 +554,8 @@ source_concentration: 70.0, source_volume: 50, robot_minimum_pick_volume: 5.0, - source_volume_obtained: 10.7, - buffer_volume_obtained: 5.0, + source_volume_picked: 10.7, + buffer_volume_picked: 5.0, destination_volume: 15.0, source_volume_remaining: 39.3 } @@ -566,8 +566,8 @@ source_concentration = cherrypick[:source_concentration] source_volume = cherrypick[:source_volume] robot_minimum_pick_volume = cherrypick[:robot_minimum_pick_volume] - source_volume_obtained = cherrypick[:source_volume_obtained] - buffer_volume_obtained = cherrypick[:buffer_volume_obtained] + source_volume_picked = cherrypick[:source_volume_picked] + buffer_volume_picked = cherrypick[:buffer_volume_picked] destination_volume = cherrypick[:destination_volume] source_volume_remaining = cherrypick[:source_volume_remaining] @@ -595,11 +595,11 @@ end it 'gets correct volume quantity' do - expect(@target_well.get_picked_volume.round(1)).to eq(source_volume_obtained) + expect(@target_well.get_picked_volume.round(1)).to eq(source_volume_picked) end it 'gets correct buffer volume measures' do - expect(@target_well.get_buffer_volume.round(1)).to eq(buffer_volume_obtained) + expect(@target_well.get_buffer_volume.round(1)).to eq(buffer_volume_picked) end it 'gets correct source volume remaining' do From f40b62b8dde02664bf519ec6a8934a07bbc8d012 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 17:21:16 +0000 Subject: [PATCH 097/100] test: fix broken expectation --- spec/models/well_attribute_spec.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/spec/models/well_attribute_spec.rb b/spec/models/well_attribute_spec.rb index b990f55dd6..906f47ce4e 100644 --- a/spec/models/well_attribute_spec.rb +++ b/spec/models/well_attribute_spec.rb @@ -28,12 +28,17 @@ describe '#estimated_volume' do it 'returns the estimated volume as a float' do well_attribute.current_volume = 10 - expect(well_attribute.estimated_volume).to eq 10.0 + expect(well_attribute.estimated_volume).to be_a(Float) end - it 'returns the current volume if it is set' do + it 'returns the estimated volume as the measured volume if both are set' do well_attribute.current_volume = 10 well_attribute.measured_volume = 20 + expect(well_attribute.estimated_volume).to eq 20.0 + end + + it 'returns the current volume if the measured volume is not set' do + well_attribute.current_volume = 10 expect(well_attribute.estimated_volume).to eq 10.0 end From 9f37b19509bc1831bd8fd7f388979e752e6161a9 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Thu, 6 Feb 2025 17:29:31 +0000 Subject: [PATCH 098/100] style: improve readbility of individual examples --- spec/models/well_spec.rb | 183 +++++++++++++++++++++++++++++++++++---- 1 file changed, 165 insertions(+), 18 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index b37602d513..cfdae3d136 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -261,25 +261,169 @@ end end - # rubocop:todo Layout/LineLength - - # stree-ignore [ - { target_ng: 1000, measured_conc: 10, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, - { target_ng: 1000, measured_conc: 10, measured_vol: 10, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 10, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, - { target_ng: 100, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, - { target_ng: 1000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, - { target_ng: 5000, measured_conc: 1000, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 5, buffer_vol: 5, final_src_vol: 45, final_dest_vol: 10 }, - { target_ng: 10, measured_conc: 100, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 1, buffer_vol: 9, final_src_vol: 49, final_dest_vol: 10 }, - { target_ng: 1000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 4, buffer_vol: 6, final_src_vol: 46, final_dest_vol: 10 }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 40, buffer_vol: 0, final_src_vol: 10, final_dest_vol: 10 }, - { target_ng: 10_000, measured_conc: 250, measured_vol: 30, min_vol:10, max_vol:50, min_pick_vol: 1, source_pick_vol: 30, buffer_vol: 0, final_src_vol: 0, final_dest_vol: 10 }, - { target_ng: 1000, measured_conc: 70, measured_vol: 50, min_vol:10, max_vol:50, min_pick_vol: 5, source_pick_vol: 14.29, buffer_vol: 0, final_src_vol: 35.7143, final_dest_vol: 10 }, # Y24-382: SQPD-10861 v14.29, b0.00 - { target_ng: 200, measured_conc: 200, measured_vol: 1, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 1, buffer_vol: 49, final_src_vol: 0, final_dest_vol: 50 }, # Y24-382: SQPD-10864 v1.00, b49.00 - { target_ng: 9800, measured_conc: 98, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 50, final_dest_vol: 50 }, # Y24-382: SQPD-10866 v50.00, b0.00 - { target_ng: 9800, measured_conc: 100, measured_vol: 100, min_vol:50, max_vol:50, min_pick_vol: 5, source_pick_vol: 50, buffer_vol: 0, final_src_vol: 50, final_dest_vol: 50 }, # Y24-382: SQPD-10868 v50.00, b0.00 + { + target_ng: 1000, + measured_conc: 10, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 50, + buffer_vol: 0, + final_src_vol: 0, + final_dest_vol: 10 + }, + { + target_ng: 1000, + measured_conc: 10, + measured_vol: 10, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 10, + buffer_vol: 0, + final_src_vol: 0, + final_dest_vol: 10 + }, + { + target_ng: 100, + measured_conc: 100, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 1, + buffer_vol: 9, + final_src_vol: 49, + final_dest_vol: 10 + }, + { + target_ng: 1000, + measured_conc: 1000, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 1, + buffer_vol: 9, + final_src_vol: 49, + final_dest_vol: 10 + }, + { + target_ng: 5000, + measured_conc: 1000, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 5, + buffer_vol: 5, + final_src_vol: 45, + final_dest_vol: 10 + }, + { + target_ng: 10, + measured_conc: 100, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 1, + buffer_vol: 9, + final_src_vol: 49, + final_dest_vol: 10 + }, + { + target_ng: 1000, + measured_conc: 250, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 4, + buffer_vol: 6, + final_src_vol: 46, + final_dest_vol: 10 + }, + { + target_ng: 10_000, + measured_conc: 250, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 40, + buffer_vol: 0, + final_src_vol: 10, + final_dest_vol: 10 + }, + { + target_ng: 10_000, + measured_conc: 250, + measured_vol: 30, + min_vol: 10, + max_vol: 50, + min_pick_vol: 1, + source_pick_vol: 30, + buffer_vol: 0, + final_src_vol: 0, + final_dest_vol: 10 + }, + { + scenario: 'Y24-382: SQPD-10861 v14.29, b0.00', + target_ng: 1000, + measured_conc: 70, + measured_vol: 50, + min_vol: 10, + max_vol: 50, + min_pick_vol: 5, + source_pick_vol: 14.29, + buffer_vol: 0, + final_src_vol: 35.7143, + final_dest_vol: 10 + }, + { + scenario: 'Y24-382: SQPD-10864 v1.00, b49.00', + target_ng: 200, + measured_conc: 200, + measured_vol: 1, + min_vol: 50, + max_vol: 50, + min_pick_vol: 5, + source_pick_vol: 1, + buffer_vol: 49, + final_src_vol: 0, + final_dest_vol: 50 + }, + { + scenario: 'Y24-382: SQPD-10866 v50.00, b0.00', + target_ng: 9800, + measured_conc: 98, + measured_vol: 100, + min_vol: 50, + max_vol: 50, + min_pick_vol: 5, + source_pick_vol: 50, + buffer_vol: 0, + final_src_vol: 50, + final_dest_vol: 50 + }, + { + scenario: 'Y24-382: SQPD-10868 v50.00, b0.00', + target_ng: 9800, + measured_conc: 100, + measured_vol: 100, + min_vol: 50, + max_vol: 50, + min_pick_vol: 5, + source_pick_vol: 50, + buffer_vol: 0, + final_src_vol: 50, + final_dest_vol: 50 + } ].each do |cherrypick| - # rubocop:enable Layout/LineLength + scenario = cherrypick.fetch(:scenario, nil) target_ng = cherrypick[:target_ng] concentration = cherrypick[:measured_conc] measured_volume = cherrypick[:measured_vol] @@ -305,7 +449,10 @@ ) end - context "for a target of #{target_ng} with conc #{concentration} and vol #{measured_volume}" do + context( + "when testing #{scenario}" \ + " for a target of #{target_ng} with conc #{concentration} and vol #{measured_volume}" + ) do it "output stock_to_pick #{stock_to_pick}" do expect(@target_well.well_attribute.picked_volume.round(2)).to eq(stock_to_pick) end From 9aedadb3a8ec8f38a78b48b7c24fd3e9c61dab3a Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 20:05:53 +0000 Subject: [PATCH 099/100] Update postcss to version 8.5.1 --- package.json | 2 +- yarn.lock | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/package.json b/package.json index a0cdeabc0f..0e1426bce4 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "jsbarcode": "^3.11.6", "jszip": "^3.10.1", "popper.js": "^1.16.1", - "postcss": "^8.5.0", + "postcss": "^8.5.1", "postcss-flexbugs-fixes": "^5.0.2", "postcss-import": "^14.1.0", "postcss-preset-env": "^7.8.3", diff --git a/yarn.lock b/yarn.lock index a822ef913d..12c4b73f05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3514,15 +3514,6 @@ postcss@^8.4.43, postcss@^8.5.1: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.0.tgz#15244b9fd65f809b2819682456f0e7e1e30c145b" - integrity sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" From d1f1c5babf47c51fdaf9a852eafba9804227e7a2 Mon Sep 17 00:00:00 2001 From: Stephen Hulme Date: Mon, 10 Feb 2025 11:55:42 +0000 Subject: [PATCH 100/100] test: refactor stock_to_pick and wording --- spec/models/well_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/models/well_spec.rb b/spec/models/well_spec.rb index cfdae3d136..90beb49cc1 100644 --- a/spec/models/well_spec.rb +++ b/spec/models/well_spec.rb @@ -427,7 +427,7 @@ target_ng = cherrypick[:target_ng] concentration = cherrypick[:measured_conc] measured_volume = cherrypick[:measured_vol] - stock_to_pick = cherrypick[:source_pick_vol] + source_pick_vol = cherrypick[:source_pick_vol] buffer_added = cherrypick[:buffer_vol] minimum_volume = cherrypick[:min_vol] maximum_volume = cherrypick[:max_vol] @@ -451,13 +451,13 @@ context( "when testing #{scenario}" \ - " for a target of #{target_ng} with conc #{concentration} and vol #{measured_volume}" + "for a target of #{target_ng} with conc #{concentration} and vol #{measured_volume}" ) do - it "output stock_to_pick #{stock_to_pick}" do - expect(@target_well.well_attribute.picked_volume.round(2)).to eq(stock_to_pick) + it "output source pick volume of #{source_pick_vol}" do + expect(@target_well.well_attribute.picked_volume.round(2)).to eq(source_pick_vol) end - it "output buffer #{buffer_added}" do + it "output buffer of #{buffer_added}" do expect(@target_well.well_attribute.buffer_volume).to eq(buffer_added) end
Created at: <%=h @sample.created_at.to_formatted_s(:day_full_with_time) %>
Sample Collection Date<%=h @sample.sample_metadata.date_of_sample_collection %>
Control: <%=h @sample.control_formatted %>