diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9fb429f..9d7d23d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -128,6 +128,7 @@ jobs:
env:
COMPOSE_FILE: docker-compose.yml:docker-compose.ci.yml
DOCKER_APP_IMAGE: ${{ needs.merge.outputs.image }}
+ SECRET_KEY_BASE: dummy_secret
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/.rubocop.yml b/.rubocop.yml
index a05ff8c..e816d99 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,8 +1,8 @@
-require:
- - rubocop-rails
+plugins: rubocop-rails
AllCops:
UseCache: false
+ TargetRubyVersion: 3.4
# Exclude generated files
Exclude:
- 'bin/**/*'
@@ -185,7 +185,7 @@ Lint/TripleQuotes: # (new in 1.9)
Enabled: true
Style/IfWithBooleanLiteralBranches: # (new in 1.9)
Enabled: true
-Gemspec/DateAssignment: # (new in 1.10)
+Gemspec/DeprecatedAttributeAssignment:
Enabled: true
Style/HashConversion: # (new in 1.10)
Enabled: true
@@ -332,3 +332,265 @@ Rails/RedundantPresenceValidationOnBelongsTo: # new in 2.13
Enabled: true
Rails/RootJoinChain: # new in 2.13
Enabled: true
+
+# added 20260220
+Gemspec/AddRuntimeDependency: # new in 1.65
+ Enabled: true
+Gemspec/AttributeAssignment: # new in 1.77
+ Enabled: true
+Gemspec/DevelopmentDependencies: # new in 1.44
+ Enabled: true
+Layout/EmptyLinesAfterModuleInclusion: # new in 1.79
+ Enabled: true
+Layout/LineContinuationLeadingSpace: # new in 1.31
+ Enabled: true
+Layout/LineContinuationSpacing: # new in 1.31
+ Enabled: true
+Lint/ArrayLiteralInRegexp: # new in 1.71
+ Enabled: true
+Lint/ConstantOverwrittenInRescue: # new in 1.31
+ Enabled: true
+Lint/ConstantReassignment: # new in 1.70
+ Enabled: true
+Lint/CopDirectiveSyntax: # new in 1.72
+ Enabled: true
+Lint/DuplicateMagicComment: # new in 1.37
+ Enabled: true
+Lint/DuplicateMatchPattern: # new in 1.50
+ Enabled: true
+Lint/DuplicateSetElement: # new in 1.67
+ Enabled: true
+Lint/HashNewWithKeywordArgumentsAsDefault: # new in 1.69
+ Enabled: true
+Lint/ItWithoutArgumentsInBlock: # new in 1.59
+ Enabled: true
+Lint/LiteralAssignmentInCondition: # new in 1.58
+ Enabled: true
+Lint/MixedCaseRange: # new in 1.53
+ Enabled: true
+Lint/NonAtomicFileOperation: # new in 1.31
+ Enabled: true
+Lint/NumericOperationWithConstantResult: # new in 1.69
+ Enabled: true
+Lint/RedundantRegexpQuantifiers: # new in 1.53
+ Enabled: true
+Lint/RedundantTypeConversion: # new in 1.72
+ Enabled: true
+Lint/RefinementImportMethods: # new in 1.27
+ Enabled: true
+Lint/RequireRangeParentheses: # new in 1.32
+ Enabled: true
+Lint/SharedMutableDefault: # new in 1.70
+ Enabled: true
+Lint/SuppressedExceptionInNumberConversion: # new in 1.72
+ Enabled: true
+Lint/UnescapedBracketInRegexp: # new in 1.68
+ Enabled: true
+Lint/UselessConstantScoping: # new in 1.72
+ Enabled: true
+Lint/UselessDefaultValueArgument: # new in 1.76
+ Enabled: true
+Lint/UselessDefined: # new in 1.69
+ Enabled: true
+Lint/UselessNumericOperation: # new in 1.66
+ Enabled: true
+Lint/UselessOr: # new in 1.76
+ Enabled: true
+Lint/UselessRescue: # new in 1.43
+ Enabled: true
+Metrics/CollectionLiteralLength: # new in 1.47
+ Enabled: true
+Naming/PredicateMethod: # new in 1.76
+ Enabled: true
+Security/CompoundHash: # new in 1.28
+ Enabled: true
+Style/AmbiguousEndlessMethodDefinition: # new in 1.68
+ Enabled: true
+Style/ArrayIntersect: # new in 1.40
+ Enabled: true
+Style/ArrayIntersectWithSingleElement: # new in 1.81
+ Enabled: true
+Style/BitwisePredicate: # new in 1.68
+ Enabled: true
+Style/CollectionQuerying: # new in 1.77
+ Enabled: true
+Style/CombinableDefined: # new in 1.68
+ Enabled: true
+Style/ComparableBetween: # new in 1.74
+ Enabled: true
+Style/ComparableClamp: # new in 1.44
+ Enabled: true
+Style/ConcatArrayLiterals: # new in 1.41
+ Enabled: true
+Style/DataInheritance: # new in 1.49
+ Enabled: true
+Style/DigChain: # new in 1.69
+ Enabled: true
+Style/DirEmpty: # new in 1.48
+ Enabled: true
+Style/EmptyClassDefinition: # new in 1.84
+ Enabled: true
+Style/EmptyHeredoc: # new in 1.32
+ Enabled: true
+Style/EmptyStringInsideInterpolation: # new in 1.76
+ Enabled: true
+Style/EnvHome: # new in 1.29
+ Enabled: true
+Style/ExactRegexpMatch: # new in 1.51
+ Enabled: true
+Style/FetchEnvVar: # new in 1.28
+ Enabled: true
+Style/FileEmpty: # new in 1.48
+ Enabled: true
+Style/FileNull: # new in 1.69
+ Enabled: true
+Style/FileTouch: # new in 1.69
+ Enabled: true
+Style/HashFetchChain: # new in 1.75
+ Enabled: true
+Style/HashSlice: # new in 1.71
+ Enabled: true
+Style/ItAssignment: # new in 1.70
+ Enabled: true
+Style/ItBlockParameter: # new in 1.75
+ Enabled: true
+Style/KeywordArgumentsMerging: # new in 1.68
+ Enabled: true
+Style/MagicCommentFormat: # new in 1.35
+ Enabled: true
+Style/MapCompactWithConditionalBlock: # new in 1.30
+ Enabled: true
+Style/MapIntoArray: # new in 1.63
+ Enabled: true
+Style/MapToSet: # new in 1.42
+ Enabled: true
+Style/MinMaxComparison: # new in 1.42
+ Enabled: true
+Style/ModuleMemberExistenceCheck: # new in 1.82
+ Enabled: true
+Style/NegativeArrayIndex: # new in 1.84
+ Enabled: true
+Style/ObjectThen: # new in 1.28
+ Enabled: true
+Style/OperatorMethodCall: # new in 1.37
+ Enabled: true
+Style/RedundantArrayConstructor: # new in 1.52
+ Enabled: true
+Style/RedundantArrayFlatten: # new in 1.76
+ Enabled: true
+Style/RedundantConstantBase: # new in 1.40
+ Enabled: true
+Style/RedundantCurrentDirectoryInPath: # new in 1.53
+ Enabled: true
+Style/RedundantDoubleSplatHashBraces: # new in 1.41
+ Enabled: true
+Style/RedundantEach: # new in 1.38
+ Enabled: true
+Style/RedundantFilterChain: # new in 1.52
+ Enabled: true
+Style/RedundantFormat: # new in 1.72
+ Enabled: true
+Style/RedundantHeredocDelimiterQuotes: # new in 1.45
+ Enabled: true
+Style/RedundantInitialize: # new in 1.27
+ Enabled: true
+Style/RedundantInterpolationUnfreeze: # new in 1.66
+ Enabled: true
+Style/RedundantLineContinuation: # new in 1.49
+ Enabled: true
+Style/RedundantRegexpArgument: # new in 1.53
+ Enabled: true
+Style/RedundantRegexpConstructor: # new in 1.52
+ Enabled: true
+Style/RedundantStringEscape: # new in 1.37
+ Enabled: true
+Style/ReturnNilInPredicateMethodDefinition: # new in 1.53
+ Enabled: true
+Style/ReverseFind: # new in 1.84
+ Enabled: true
+Style/SafeNavigationChainLength: # new in 1.68
+ Enabled: true
+Style/SendWithLiteralMethodName: # new in 1.64
+ Enabled: true
+Style/SingleLineDoEndBlock: # new in 1.57
+ Enabled: true
+Style/SuperArguments: # new in 1.64
+ Enabled: true
+Style/SuperWithArgsParentheses: # new in 1.58
+ Enabled: true
+Style/YAMLFileRead: # new in 1.53
+ Enabled: true
+Rails/ActionControllerFlashBeforeRender: # new in 2.16
+ Enabled: true
+Rails/ActionControllerTestCase: # new in 2.14
+ Enabled: true
+Rails/ActionOrder: # new in 2.17
+ Enabled: true
+Rails/ActiveSupportOnLoad: # new in 2.16
+ Enabled: true
+Rails/DangerousColumnNames: # new in 2.21
+ Enabled: true
+Rails/DeprecatedActiveModelErrorsMethods: # new in 2.14
+ Enabled: true
+Rails/DotSeparatedKeys: # new in 2.15
+ Enabled: true
+Rails/DuplicateAssociation: # new in 2.14
+ Enabled: true
+Rails/DuplicateScope: # new in 2.14
+ Enabled: true
+Rails/EnumSyntax: # new in 2.26
+ Enabled: true
+Rails/EnvLocal: # new in 2.22
+ Enabled: true
+Rails/FindByOrAssignmentMemoization: # new in 2.33
+ Enabled: true
+Rails/FreezeTime: # new in 2.16
+ Enabled: true
+Rails/HttpStatusNameConsistency: # new in 2.34
+ Enabled: true
+Rails/I18nLazyLookup: # new in 2.14
+ Enabled: true
+Rails/I18nLocaleTexts: # new in 2.14
+ Enabled: true
+Rails/IgnoredColumnsAssignment: # new in 2.17
+ Enabled: true
+Rails/MigrationClassName: # new in 2.14
+ Enabled: true
+Rails/MultipleRoutePaths: # new in 2.29
+ Enabled: true
+Rails/OrderArguments: # new in 2.33
+ Enabled: true
+Rails/RedirectBackOrTo: # new in 2.34
+ Enabled: true
+Rails/RedundantActiveRecordAllMethod: # new in 2.21
+ Enabled: true
+Rails/ResponseParsedBody: # new in 2.18
+ Enabled: true
+Rails/RootPathnameMethods: # new in 2.16
+ Enabled: true
+Rails/RootPublicPath: # new in 2.15
+ Enabled: true
+Rails/SelectMap: # new in 2.21
+ Enabled: true
+Rails/StripHeredoc: # new in 2.15
+ Enabled: true
+Rails/StrongParametersExpect: # new in 2.29
+ Enabled: true
+Rails/ThreeStateBooleanColumn: # new in 2.19
+ Enabled: true
+Rails/ToFormattedS: # new in 2.15
+ Enabled: true
+Rails/ToSWithArgument: # new in 2.16
+ Enabled: true
+Rails/TopLevelHashWithIndifferentAccess: # new in 2.16
+ Enabled: true
+Rails/TransactionExitStatement: # new in 2.14
+ Enabled: true
+Rails/UnusedRenderContent: # new in 2.21
+ Enabled: true
+Rails/WhereMissing: # new in 2.16
+ Enabled: true
+Rails/WhereNotWithMultipleConditions: # new in 2.17
+ Enabled: true
+Rails/WhereRange: # new in 2.25
+ Enabled: true
diff --git a/.ruby-version b/.ruby-version
index be94e6f..eb39e53 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.2.2
+3.3
diff --git a/.yarnrc b/.yarnrc
index f5b1384..4027885 100644
--- a/.yarnrc
+++ b/.yarnrc
@@ -2,4 +2,4 @@
# yarn lockfile v1
-lastUpdateCheck 1770150293563
+lastUpdateCheck 1771868064007
diff --git a/Dockerfile b/Dockerfile
index 03f3209..1749531 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,7 +4,7 @@
# The base stage scaffolds elements which are common to building and running
# the application, such as installing ca-certificates, creating the app user,
# and installing runtime system dependencies.
-FROM ruby:3.2.2-slim AS base
+FROM ruby:3.3-slim AS base
# ------------------------------------------------------------
# Declarative metadata
@@ -35,9 +35,14 @@ RUN apt-get update -qq
# Install standard packages from the Debian repository
RUN apt-get install -y --no-install-recommends \
+ build-essential \
curl \
git \
gpg \
+ pkg-config \
+ libyaml-dev \
+ libxml2-dev \
+ libxslt1-dev \
libpq-dev \
libvips42
diff --git a/Gemfile b/Gemfile
index 0e38aa9..5ba49b9 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,33 +1,35 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
-ruby '~> 3.2.2'
+ruby '~> 3.3'
+gem 'addressable', '~> 2.8'
gem 'awesome_print', '~> 1.9'
-gem 'berkeley_library-alma', '~> 0.0.7'
+gem 'berkeley_library-alma', '~> 0.1.1'
gem 'berkeley_library-docker', '~> 0.2.0'
-gem 'berkeley_library-logging', '~> 0.2', '>= 0.2.7'
-gem 'berkeley_library-marc', '~> 0.3'
-gem 'berkeley_library-util', '~> 0.1', '>= 0.1.8'
+gem 'berkeley_library-logging', '~> 0.3.0'
+gem 'berkeley_library-marc', '~> 0.3.2'
+gem 'berkeley_library-util', '~> 0.3.0'
gem 'cssbundling-rails'
-gem 'dotiw', '~> 5.3'
-gem 'iiif-presentation', '~> 1.0'
-gem 'jbuilder', '~> 2.5'
+gem 'csv'
+gem 'dotiw', '~> 5.3.3'
+gem 'iiif-presentation', '~> 1.4'
+gem 'jbuilder', '~> 2.14.0'
gem 'jsbundling-rails'
gem 'jwt', '~> 2.2'
-# Workaround for https://github.com/alexspeller/non-stupid-digest-assets/issues/54
-gem 'non-stupid-digest-assets', git: 'https://github.com/BerkeleyLibrary/non-stupid-digest-assets.git', ref: '1de0c38'
-gem 'okcomputer', '~> 1.19', '>= 1.19.1'
-gem 'omniauth-cas', '~> 2.0'
-gem 'pagy', '~> 5.6'
+gem 'mutex_m', '~> 0.3.0'
+gem 'observer', '~> 0.1.2'
+gem 'okcomputer', '~> 1.19'
+gem 'omniauth', '~> 2.1'
+gem 'omniauth-cas', '~> 3.0'
+gem 'omniauth-rails_csrf_protection', '~> 1.0'
+gem 'pagy', '~> 43'
gem 'pg', '~> 1.2'
gem 'pg_search', '~> 2.3'
-gem 'puma', '~> 5.0'
-gem 'rails', '~> 7.0.4', '>= 7.0.4.3'
-gem 'ruby-prof', '~> 0.17.0' # TODO: move this back to dev/test
-gem 'ruby-vips', '~> 2.0'
-gem 'sprockets-rails', '~> 3.4'
-gem 'typesafe_enum', '~> 0.3'
+gem 'puma', '~> 7.2'
+gem 'rails', '~> 8.0.4'
+gem 'ruby-vips', '~> 2.3'
+gem 'sprockets-rails', '~> 3.5.0'
group :development, :test do
gem 'brakeman'
@@ -35,23 +37,25 @@ group :development, :test do
gem 'byebug', platforms: %i[mri mingw x64_mingw]
gem 'colorize'
gem 'factory_bot_rails'
- gem 'rspec-rails', '~> 5.0'
+ gem 'rspec-rails', '~> 8.0'
+ gem 'rubocop-rspec_rails', '~> 2.31.0'
+ gem 'ruby-prof', '~> 2.0.0'
end
group :development do
gem 'dotenv', '~> 2.7', require: false
gem 'foreman'
gem 'listen'
- gem 'rubocop', '~> 1.26.0'
- gem 'rubocop-rails', '~> 2.13.2'
- gem 'rubocop-rspec', '~> 2.4.0'
- gem 'web-console', '>= 4.1.0'
+ gem 'rubocop', '~> 1.84.0'
+ gem 'rubocop-rails', '~> 2.34.0'
+ gem 'rubocop-rspec', '~> 3.9.0'
+ gem 'web-console', '>= 4.2.1'
end
group :test do
gem 'capybara', '~> 3.36'
gem 'concurrent-ruby', '~> 1.1'
- gem 'database_cleaner-active_record', '~> 2.0'
+ gem 'database_cleaner-active_record', '~> 2.2'
gem 'rspec', '~> 3.10'
gem 'rspec_junit_formatter', '~> 0.5'
gem 'selenium-webdriver', '~> 4.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index abc3ff7..df48e30 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,401 +1,482 @@
-GIT
- remote: https://github.com/BerkeleyLibrary/non-stupid-digest-assets.git
- revision: 1de0c3852c49c9578c45d1d6e24c7996b3ebe267
- ref: 1de0c38
- specs:
- non-stupid-digest-assets (1.0.9)
- sprockets (>= 2.0)
-
GEM
remote: https://rubygems.org/
specs:
- actioncable (7.0.4.3)
- actionpack (= 7.0.4.3)
- activesupport (= 7.0.4.3)
+ actioncable (8.0.4)
+ actionpack (= 8.0.4)
+ activesupport (= 8.0.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (7.0.4.3)
- actionpack (= 7.0.4.3)
- activejob (= 7.0.4.3)
- activerecord (= 7.0.4.3)
- activestorage (= 7.0.4.3)
- activesupport (= 7.0.4.3)
- mail (>= 2.7.1)
- net-imap
- net-pop
- net-smtp
- actionmailer (7.0.4.3)
- actionpack (= 7.0.4.3)
- actionview (= 7.0.4.3)
- activejob (= 7.0.4.3)
- activesupport (= 7.0.4.3)
- mail (~> 2.5, >= 2.5.4)
- net-imap
- net-pop
- net-smtp
- rails-dom-testing (~> 2.0)
- actionpack (7.0.4.3)
- actionview (= 7.0.4.3)
- activesupport (= 7.0.4.3)
- rack (~> 2.0, >= 2.2.0)
+ zeitwerk (~> 2.6)
+ actionmailbox (8.0.4)
+ actionpack (= 8.0.4)
+ activejob (= 8.0.4)
+ activerecord (= 8.0.4)
+ activestorage (= 8.0.4)
+ activesupport (= 8.0.4)
+ mail (>= 2.8.0)
+ actionmailer (8.0.4)
+ actionpack (= 8.0.4)
+ actionview (= 8.0.4)
+ activejob (= 8.0.4)
+ activesupport (= 8.0.4)
+ mail (>= 2.8.0)
+ rails-dom-testing (~> 2.2)
+ actionpack (8.0.4)
+ actionview (= 8.0.4)
+ activesupport (= 8.0.4)
+ nokogiri (>= 1.8.5)
+ rack (>= 2.2.4)
+ rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (7.0.4.3)
- actionpack (= 7.0.4.3)
- activerecord (= 7.0.4.3)
- activestorage (= 7.0.4.3)
- activesupport (= 7.0.4.3)
+ rails-dom-testing (~> 2.2)
+ rails-html-sanitizer (~> 1.6)
+ useragent (~> 0.16)
+ actiontext (8.0.4)
+ actionpack (= 8.0.4)
+ activerecord (= 8.0.4)
+ activestorage (= 8.0.4)
+ activesupport (= 8.0.4)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.0.4.3)
- activesupport (= 7.0.4.3)
+ actionview (8.0.4)
+ activesupport (= 8.0.4)
builder (~> 3.1)
- erubi (~> 1.4)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
- activejob (7.0.4.3)
- activesupport (= 7.0.4.3)
+ erubi (~> 1.11)
+ rails-dom-testing (~> 2.2)
+ rails-html-sanitizer (~> 1.6)
+ activejob (8.0.4)
+ activesupport (= 8.0.4)
globalid (>= 0.3.6)
- activemodel (7.0.4.3)
- activesupport (= 7.0.4.3)
- activerecord (7.0.4.3)
- activemodel (= 7.0.4.3)
- activesupport (= 7.0.4.3)
- activestorage (7.0.4.3)
- actionpack (= 7.0.4.3)
- activejob (= 7.0.4.3)
- activerecord (= 7.0.4.3)
- activesupport (= 7.0.4.3)
+ activemodel (8.0.4)
+ activesupport (= 8.0.4)
+ activerecord (8.0.4)
+ activemodel (= 8.0.4)
+ activesupport (= 8.0.4)
+ timeout (>= 0.4.0)
+ activestorage (8.0.4)
+ actionpack (= 8.0.4)
+ activejob (= 8.0.4)
+ activerecord (= 8.0.4)
+ activesupport (= 8.0.4)
marcel (~> 1.0)
- mini_mime (>= 1.1.0)
- activesupport (7.0.4.3)
- concurrent-ruby (~> 1.0, >= 1.0.2)
+ activesupport (8.0.4)
+ base64
+ benchmark (>= 0.3)
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
minitest (>= 5.1)
- tzinfo (~> 2.0)
- addressable (2.8.4)
- public_suffix (>= 2.0.2, < 6.0)
- amazing_print (1.4.0)
- ast (2.4.2)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ uri (>= 0.13.1)
+ addressable (2.8.9)
+ public_suffix (>= 2.0.2, < 8.0)
+ amazing_print (1.8.1)
+ ast (2.4.3)
awesome_print (1.9.2)
+ base64 (0.3.0)
benchmark (0.5.0)
- berkeley_library-alma (0.0.7.1)
+ berkeley_library-alma (0.1.1)
berkeley_library-logging (~> 0.2)
berkeley_library-marc (~> 0.3.1)
berkeley_library-util (~> 0.1, >= 0.1.2)
nokogiri (~> 1.13, >= 1.13.6)
berkeley_library-docker (0.2.0)
- berkeley_library-logging (0.2.7)
- activesupport (>= 6)
+ berkeley_library-logging (0.3.0)
+ activesupport (>= 7)
amazing_print (~> 1.1)
- colorize (~> 0.8.1)
+ colorize (~> 1.0)
lograge (~> 0.11)
- ougai (~> 1.8)
- berkeley_library-marc (0.3.1)
+ ougai (~> 2.0)
+ berkeley_library-marc (0.3.2)
marc (~> 1.0)
parslet (~> 2.0)
ruby-marc-spec (~> 0.1)
- berkeley_library-util (0.1.8)
- berkeley_library-logging (~> 0.2)
+ berkeley_library-util (0.3.0)
+ berkeley_library-logging (~> 0.3)
rest-client (~> 2.1)
typesafe_enum (~> 0.3)
+ bigdecimal (4.0.1)
bindex (0.8.1)
- brakeman (5.4.1)
- builder (3.2.4)
- bundle-audit (0.1.0)
+ brakeman (8.0.4)
+ racc
+ builder (3.3.0)
+ bundle-audit (0.2.0)
bundler-audit
- bundler-audit (0.9.1)
- bundler (>= 1.2.0, < 3)
+ bundler-audit (0.9.3)
+ bundler (>= 1.2.0)
thor (~> 1.0)
- byebug (11.1.3)
- capybara (3.39.1)
+ byebug (13.0.0)
+ reline (>= 0.6.0)
+ capybara (3.40.0)
addressable
matrix
mini_mime (>= 0.1.3)
- nokogiri (~> 1.8)
+ nokogiri (~> 1.11)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
- colorize (0.8.1)
- concurrent-ruby (1.2.2)
- crack (0.4.5)
+ colorize (1.1.0)
+ concurrent-ruby (1.3.6)
+ connection_pool (3.0.2)
+ crack (1.0.1)
+ bigdecimal
rexml
crass (1.0.6)
- cssbundling-rails (1.1.2)
+ cssbundling-rails (1.4.3)
railties (>= 6.0.0)
- database_cleaner-active_record (2.1.0)
+ csv (3.3.5)
+ database_cleaner-active_record (2.2.2)
activerecord (>= 5.a)
- database_cleaner-core (~> 2.0.0)
+ database_cleaner-core (~> 2.0)
database_cleaner-core (2.0.1)
- date (3.3.3)
- diff-lcs (1.5.0)
- docile (1.4.0)
- domain_name (0.5.20190701)
- unf (>= 0.0.5, < 1.0.0)
+ date (3.5.1)
+ diff-lcs (1.6.2)
+ docile (1.4.1)
+ domain_name (0.6.20240107)
dotenv (2.8.1)
dotiw (5.3.3)
activesupport
i18n
- erubi (1.12.0)
- factory_bot (6.2.1)
- activesupport (>= 5.0.0)
- factory_bot_rails (6.2.0)
- factory_bot (~> 6.2.0)
- railties (>= 5.0.0)
- faraday (2.7.5)
- faraday-net_http (>= 2.0, < 3.1)
- ruby2_keywords (>= 0.0.4)
- faraday-net_http (3.0.2)
- ffi (1.15.5)
- foreman (0.89.1)
- globalid (1.1.0)
- activesupport (>= 5.0)
- hashdiff (1.0.1)
- hashie (5.0.0)
+ drb (2.2.3)
+ erb (6.0.2)
+ erubi (1.13.1)
+ factory_bot (6.5.6)
+ activesupport (>= 6.1.0)
+ factory_bot_rails (6.5.1)
+ factory_bot (~> 6.5)
+ railties (>= 6.1.0)
+ faraday (2.14.1)
+ faraday-net_http (>= 2.0, < 3.5)
+ json
+ logger
+ faraday-net_http (3.4.2)
+ net-http (~> 0.5)
+ ffi (1.17.3-aarch64-linux-gnu)
+ ffi (1.17.3-x86_64-linux-gnu)
+ foreman (0.90.0)
+ thor (~> 1.4)
+ geo_coord (0.2.0)
+ globalid (1.3.0)
+ activesupport (>= 6.1)
+ hashdiff (1.2.1)
+ hashie (5.1.0)
+ logger
http-accept (1.7.0)
- http-cookie (1.0.5)
+ http-cookie (1.1.0)
domain_name (~> 0.5)
- i18n (1.13.0)
+ i18n (1.14.8)
concurrent-ruby (~> 1.0)
- iiif-presentation (1.1.0)
+ iiif-presentation (1.4.2)
activesupport (>= 3.2.18)
- faraday (>= 0.9)
+ faraday (~> 2.7)
+ geo_coord
json
- jbuilder (2.11.5)
- actionview (>= 5.0.0)
- activesupport (>= 5.0.0)
- jsbundling-rails (1.1.1)
+ io-console (0.8.2)
+ irb (1.17.0)
+ pp (>= 0.6.0)
+ prism (>= 1.3.0)
+ rdoc (>= 4.0.0)
+ reline (>= 0.4.2)
+ jbuilder (2.14.1)
+ actionview (>= 7.0.0)
+ activesupport (>= 7.0.0)
+ jsbundling-rails (1.3.1)
railties (>= 6.0.0)
- json (2.6.3)
- jwt (2.7.0)
- listen (3.9.0)
+ json (2.18.1)
+ jwt (2.10.2)
+ base64
+ language_server-protocol (3.17.0.5)
+ lint_roller (1.1.0)
+ listen (3.10.0)
+ logger
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- lograge (0.12.0)
+ logger (1.7.0)
+ lograge (0.14.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
- loofah (2.21.3)
+ loofah (2.25.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
- mail (2.8.1)
+ mail (2.9.0)
+ logger
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
- marc (1.2.0)
+ marc (1.4.0)
+ nokogiri (~> 1.0)
rexml
- scrub_rb (>= 1.0.1, < 2)
- unf
- marcel (1.0.2)
- matrix (0.4.2)
- method_source (1.0.0)
- mime-types (3.4.1)
- mime-types-data (~> 3.2015)
- mime-types-data (3.2023.0218.1)
- mini_mime (1.1.2)
- minitest (5.18.0)
- net-imap (0.3.4)
+ marcel (1.1.0)
+ matrix (0.4.3)
+ mime-types (3.7.0)
+ logger
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
+ mime-types-data (3.2026.0224)
+ mini_mime (1.1.5)
+ minitest (6.0.2)
+ drb (~> 2.0)
+ prism (~> 1.5)
+ mutex_m (0.3.0)
+ net-http (0.9.1)
+ uri (>= 0.11.1)
+ net-imap (0.6.3)
date
net-protocol
net-pop (0.1.2)
net-protocol
- net-protocol (0.2.1)
+ net-protocol (0.2.2)
timeout
- net-smtp (0.3.3)
+ net-smtp (0.5.1)
net-protocol
netrc (0.11.0)
- nio4r (2.5.9)
- nokogiri (1.15.2-aarch64-linux)
- racc (~> 1.4)
- nokogiri (1.15.2-arm64-darwin)
+ nio4r (2.7.5)
+ nokogiri (1.19.1-aarch64-linux-gnu)
racc (~> 1.4)
- nokogiri (1.15.2-x86_64-darwin)
+ nokogiri (1.19.1-x86_64-linux-gnu)
racc (~> 1.4)
- nokogiri (1.15.2-x86_64-linux)
- racc (~> 1.4)
- oj (3.14.3)
+ observer (0.1.2)
+ oj (3.16.15)
+ bigdecimal (>= 3.0)
+ ostruct (>= 0.2)
okcomputer (1.19.1)
benchmark
- omniauth (1.9.2)
+ omniauth (2.1.4)
hashie (>= 3.4.6)
- rack (>= 1.6.2, < 3)
- omniauth-cas (2.0.0)
- addressable (~> 2.3)
- nokogiri (~> 1.5)
- omniauth (~> 1.2)
- ougai (1.9.1)
+ logger
+ rack (>= 2.2.3)
+ rack-protection
+ omniauth-cas (3.0.2)
+ addressable (~> 2.8)
+ nokogiri (~> 1.12)
+ omniauth (~> 2.1)
+ omniauth-rails_csrf_protection (1.0.2)
+ actionpack (>= 4.2)
+ omniauth (~> 2.0)
+ ostruct (0.6.3)
+ ougai (2.0.0)
oj (~> 3.10)
- pagy (5.10.1)
- activesupport
- parallel (1.23.0)
- parser (3.2.2.1)
+ pagy (43.3.1)
+ json
+ uri
+ yaml
+ parallel (1.27.0)
+ parser (3.3.10.2)
ast (~> 2.4.1)
+ racc
parslet (2.0.0)
- pg (1.5.3)
- pg_search (2.3.6)
- activerecord (>= 5.2)
- activesupport (>= 5.2)
- public_suffix (5.0.1)
- puma (5.6.5)
+ pg (1.6.3-aarch64-linux)
+ pg (1.6.3-x86_64-linux)
+ pg_search (2.3.7)
+ activerecord (>= 6.1)
+ activesupport (>= 6.1)
+ pp (0.6.3)
+ prettyprint
+ prettyprint (0.2.0)
+ prism (1.9.0)
+ psych (5.3.1)
+ date
+ stringio
+ public_suffix (7.0.2)
+ puma (7.2.0)
nio4r (~> 2.0)
- racc (1.6.2)
- rack (2.2.7)
- rack-test (2.1.0)
+ racc (1.8.1)
+ rack (3.2.5)
+ rack-protection (4.2.1)
+ base64 (>= 0.1.0)
+ logger (>= 1.6.0)
+ rack (>= 3.0.0, < 4)
+ rack-session (2.1.1)
+ base64 (>= 0.1.0)
+ rack (>= 3.0.0)
+ rack-test (2.2.0)
rack (>= 1.3)
- rails (7.0.4.3)
- actioncable (= 7.0.4.3)
- actionmailbox (= 7.0.4.3)
- actionmailer (= 7.0.4.3)
- actionpack (= 7.0.4.3)
- actiontext (= 7.0.4.3)
- actionview (= 7.0.4.3)
- activejob (= 7.0.4.3)
- activemodel (= 7.0.4.3)
- activerecord (= 7.0.4.3)
- activestorage (= 7.0.4.3)
- activesupport (= 7.0.4.3)
+ rackup (2.3.1)
+ rack (>= 3)
+ rails (8.0.4)
+ actioncable (= 8.0.4)
+ actionmailbox (= 8.0.4)
+ actionmailer (= 8.0.4)
+ actionpack (= 8.0.4)
+ actiontext (= 8.0.4)
+ actionview (= 8.0.4)
+ activejob (= 8.0.4)
+ activemodel (= 8.0.4)
+ activerecord (= 8.0.4)
+ activestorage (= 8.0.4)
+ activesupport (= 8.0.4)
bundler (>= 1.15.0)
- railties (= 7.0.4.3)
- rails-dom-testing (2.0.3)
- activesupport (>= 4.2.0)
+ railties (= 8.0.4)
+ rails-dom-testing (2.3.0)
+ activesupport (>= 5.0.0)
+ minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.5.0)
- loofah (~> 2.19, >= 2.19.1)
- railties (7.0.4.3)
- actionpack (= 7.0.4.3)
- activesupport (= 7.0.4.3)
- method_source
+ rails-html-sanitizer (1.7.0)
+ loofah (~> 2.25)
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
+ railties (8.0.4)
+ actionpack (= 8.0.4)
+ activesupport (= 8.0.4)
+ irb (~> 1.13)
+ rackup (>= 1.0.0)
rake (>= 12.2)
- thor (~> 1.0)
- zeitwerk (~> 2.5)
+ thor (~> 1.0, >= 1.2.2)
+ tsort (>= 0.2)
+ zeitwerk (~> 2.6)
rainbow (3.1.1)
- rake (13.0.6)
+ rake (13.3.1)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
- regexp_parser (2.8.0)
- request_store (1.5.1)
+ rdoc (7.2.0)
+ erb
+ psych (>= 4.0.0)
+ tsort
+ regexp_parser (2.11.3)
+ reline (0.6.3)
+ io-console (~> 0.5)
+ request_store (1.7.0)
rack (>= 1.4)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
- rexml (3.2.5)
- rspec (3.12.0)
- rspec-core (~> 3.12.0)
- rspec-expectations (~> 3.12.0)
- rspec-mocks (~> 3.12.0)
- rspec-core (3.12.2)
- rspec-support (~> 3.12.0)
- rspec-expectations (3.12.3)
+ rexml (3.4.4)
+ rspec (3.13.2)
+ rspec-core (~> 3.13.0)
+ rspec-expectations (~> 3.13.0)
+ rspec-mocks (~> 3.13.0)
+ rspec-core (3.13.6)
+ rspec-support (~> 3.13.0)
+ rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.12.0)
- rspec-mocks (3.12.5)
+ rspec-support (~> 3.13.0)
+ rspec-mocks (3.13.8)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.12.0)
- rspec-rails (5.1.2)
- actionpack (>= 5.2)
- activesupport (>= 5.2)
- railties (>= 5.2)
- rspec-core (~> 3.10)
- rspec-expectations (~> 3.10)
- rspec-mocks (~> 3.10)
- rspec-support (~> 3.10)
- rspec-support (3.12.0)
+ rspec-support (~> 3.13.0)
+ rspec-rails (8.0.3)
+ actionpack (>= 7.2)
+ activesupport (>= 7.2)
+ railties (>= 7.2)
+ rspec-core (~> 3.13)
+ rspec-expectations (~> 3.13)
+ rspec-mocks (~> 3.13)
+ rspec-support (~> 3.13)
+ rspec-support (3.13.7)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
- rubocop (1.26.1)
+ rubocop (1.84.2)
+ json (~> 2.3)
+ language_server-protocol (~> 3.17.0.2)
+ lint_roller (~> 1.1.0)
parallel (~> 1.10)
- parser (>= 3.1.0.0)
+ parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
- regexp_parser (>= 1.8, < 3.0)
- rexml
- rubocop-ast (>= 1.16.0, < 2.0)
+ regexp_parser (>= 2.9.3, < 3.0)
+ rubocop-ast (>= 1.49.0, < 2.0)
ruby-progressbar (~> 1.7)
- unicode-display_width (>= 1.4.0, < 3.0)
- rubocop-ast (1.28.1)
- parser (>= 3.2.1.0)
- rubocop-rails (2.13.2)
+ unicode-display_width (>= 2.4.0, < 4.0)
+ rubocop-ast (1.49.0)
+ parser (>= 3.3.7.2)
+ prism (~> 1.7)
+ rubocop-rails (2.34.3)
activesupport (>= 4.2.0)
+ lint_roller (~> 1.1)
rack (>= 1.1)
- rubocop (>= 1.7.0, < 2.0)
- rubocop-rspec (2.4.0)
- rubocop (~> 1.0)
- rubocop-ast (>= 1.1.0)
+ rubocop (>= 1.75.0, < 2.0)
+ rubocop-ast (>= 1.44.0, < 2.0)
+ rubocop-rspec (3.9.0)
+ lint_roller (~> 1.1)
+ rubocop (~> 1.81)
+ rubocop-rspec_rails (2.31.0)
+ lint_roller (~> 1.1)
+ rubocop (~> 1.72, >= 1.72.1)
+ rubocop-rspec (~> 3.5)
ruby-marc-spec (0.1.3)
marc (~> 1.1)
parslet (~> 2.0)
typesafe_enum (~> 0.3)
- ruby-prof (0.17.0)
+ ruby-prof (2.0.3)
+ base64
+ ostruct
ruby-progressbar (1.13.0)
- ruby-vips (2.1.4)
+ ruby-vips (2.3.0)
ffi (~> 1.12)
- ruby2_keywords (0.0.5)
- rubyzip (2.3.2)
- scrub_rb (1.0.1)
- selenium-webdriver (4.9.1)
+ logger
+ rubyzip (3.2.2)
+ securerandom (0.4.1)
+ selenium-webdriver (4.41.0)
+ base64 (~> 0.2)
+ logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
- rubyzip (>= 1.2.2, < 3.0)
+ rubyzip (>= 1.2.2, < 4.0)
websocket (~> 1.0)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
- simplecov-html (0.12.3)
- simplecov-rcov (0.3.1)
+ simplecov-html (0.13.2)
+ simplecov-rcov (0.3.7)
simplecov (>= 0.4.1)
simplecov_json_formatter (0.1.4)
- sprockets (4.2.0)
+ sprockets (4.2.2)
concurrent-ruby (~> 1.0)
+ logger
rack (>= 2.2.4, < 4)
- sprockets-rails (3.4.2)
- actionpack (>= 5.2)
- activesupport (>= 5.2)
+ sprockets-rails (3.5.2)
+ actionpack (>= 6.1)
+ activesupport (>= 6.1)
sprockets (>= 3.0.0)
- thor (1.2.2)
- timeout (0.3.2)
+ stringio (3.2.0)
+ thor (1.5.0)
+ timeout (0.6.0)
+ tsort (0.2.0)
typesafe_enum (0.3.1)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
- unf (0.1.4)
- unf_ext
- unf_ext (0.0.8.2)
- unicode-display_width (2.4.2)
- web-console (4.2.0)
- actionview (>= 6.0.0)
- activemodel (>= 6.0.0)
+ unicode-display_width (3.2.0)
+ unicode-emoji (~> 4.1)
+ unicode-emoji (4.2.0)
+ uri (1.1.1)
+ useragent (0.16.11)
+ web-console (4.3.0)
+ actionview (>= 8.0.0)
bindex (>= 0.4.0)
- railties (>= 6.0.0)
- webmock (3.18.1)
+ railties (>= 8.0.0)
+ webmock (3.26.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
- websocket (1.2.9)
- websocket-driver (0.7.5)
+ websocket (1.2.11)
+ websocket-driver (0.8.0)
+ base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.8)
+ yaml (0.4.0)
+ zeitwerk (2.7.5)
PLATFORMS
- aarch64-linux
- arm64-darwin
- x86_64-darwin
+ aarch64-linux-gnu
x86_64-linux
DEPENDENCIES
+ addressable (~> 2.8)
awesome_print (~> 1.9)
- berkeley_library-alma (~> 0.0.7)
+ berkeley_library-alma (~> 0.1.1)
berkeley_library-docker (~> 0.2.0)
- berkeley_library-logging (~> 0.2, >= 0.2.7)
- berkeley_library-marc (~> 0.3)
- berkeley_library-util (~> 0.1, >= 0.1.8)
+ berkeley_library-logging (~> 0.3.0)
+ berkeley_library-marc (~> 0.3.2)
+ berkeley_library-util (~> 0.3.0)
brakeman
bundle-audit
byebug
@@ -403,42 +484,46 @@ DEPENDENCIES
colorize
concurrent-ruby (~> 1.1)
cssbundling-rails
- database_cleaner-active_record (~> 2.0)
+ csv
+ database_cleaner-active_record (~> 2.2)
dotenv (~> 2.7)
- dotiw (~> 5.3)
+ dotiw (~> 5.3.3)
factory_bot_rails
foreman
- iiif-presentation (~> 1.0)
- jbuilder (~> 2.5)
+ iiif-presentation (~> 1.4)
+ jbuilder (~> 2.14.0)
jsbundling-rails
jwt (~> 2.2)
listen
- non-stupid-digest-assets!
- okcomputer (~> 1.19, >= 1.19.1)
- omniauth-cas (~> 2.0)
- pagy (~> 5.6)
+ mutex_m (~> 0.3.0)
+ observer (~> 0.1.2)
+ okcomputer (~> 1.19)
+ omniauth (~> 2.1)
+ omniauth-cas (~> 3.0)
+ omniauth-rails_csrf_protection (~> 1.0)
+ pagy (~> 43)
pg (~> 1.2)
pg_search (~> 2.3)
- puma (~> 5.0)
- rails (~> 7.0.4, >= 7.0.4.3)
+ puma (~> 7.2)
+ rails (~> 8.0.4)
rspec (~> 3.10)
- rspec-rails (~> 5.0)
+ rspec-rails (~> 8.0)
rspec_junit_formatter (~> 0.5)
- rubocop (~> 1.26.0)
- rubocop-rails (~> 2.13.2)
- rubocop-rspec (~> 2.4.0)
- ruby-prof (~> 0.17.0)
- ruby-vips (~> 2.0)
+ rubocop (~> 1.84.0)
+ rubocop-rails (~> 2.34.0)
+ rubocop-rspec (~> 3.9.0)
+ rubocop-rspec_rails (~> 2.31.0)
+ ruby-prof (~> 2.0.0)
+ ruby-vips (~> 2.3)
selenium-webdriver (~> 4.0)
simplecov (~> 0.21)
simplecov-rcov (~> 0.2)
- sprockets-rails (~> 3.4)
- typesafe_enum (~> 0.3)
- web-console (>= 4.1.0)
+ sprockets-rails (~> 3.5.0)
+ web-console (>= 4.2.1)
webmock
RUBY VERSION
- ruby 3.2.2p53
+ ruby 3.3.10p183
BUNDLED WITH
- 2.4.10
+ 2.5.22
diff --git a/app/assets/images/icons/twitter-square.svg b/app/assets/images/icons/twitter-square.svg
deleted file mode 100644
index 3aa36dd..0000000
--- a/app/assets/images/icons/twitter-square.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 99a5981..4f1100c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -3,7 +3,7 @@
# rubocop:disable Metrics/ClassLength
class ApplicationController < ActionController::Base
include ExceptionHandling
- include Pagy::Backend
+ include Pagy::Method
# ------------------------------------------------------------
# Global controller configuration
@@ -15,7 +15,7 @@ class ApplicationController < ActionController::Base
# Global hooks
after_action do
- pagy_headers_merge(@pagy) if @pagy
+ response.headers.merge!(@pagy.headers_hash) if @pagy
merge_link_header
end
@@ -137,7 +137,7 @@ def with_profile(report_filename, &)
return if performed?
flash_now!(:danger, t('application.profile.failed', msg: e.message))
- render('application/standard_error', locals: { exception: e })
+ render('application/standard_error', status: :internal_server_error, locals: { status: :internal_server_error, exception: e, message: e.message })
end
# ------------------------------
@@ -150,7 +150,7 @@ def render_with_errors(view, errors, log_message)
def render_422(view, errors, locals: {})
flash_now!(:danger, errors.full_messages)
- render(view, status: :unprocessable_entity, locals:)
+ render(view, status: :unprocessable_content, locals:)
end
# ------------------------------
@@ -184,23 +184,27 @@ def add_flash(flash_obj, lvl, msg)
end
def ensure_flash_array(flash_obj, lvl)
- return (flash_obj[lvl] = []) unless (current = flash_obj[lvl])
+ return flash_obj[lvl] = [] unless (current = flash_obj[lvl])
current.is_a?(Array) ? current : (flash_obj[lvl] = Array(current))
end
def do_profile(report_filename, &block)
- RubyProf.stop if RubyProf.running?
- RubyProf.start
+ raise ArgumentError, 'block is required' unless block
+
+ profile = RubyProf::Profile.new
+ profile.start
+
begin
block.call
ensure
- write_profile_report(report_filename) if RubyProf.running?
+ result = profile.stop
end
+
+ write_profile_report(report_filename, result)
end
- def write_profile_report(report_filename)
- result = RubyProf.stop
+ def write_profile_report(report_filename, result)
File.open(File.join(public_dir, report_filename), 'w') do |f|
RubyProf::GraphHtmlPrinter.new(result).print(f, min_percent: 2)
end
diff --git a/app/controllers/items_controller.rb b/app/controllers/items_controller.rb
index 672cf7e..3da61a4 100644
--- a/app/controllers/items_controller.rb
+++ b/app/controllers/items_controller.rb
@@ -38,7 +38,7 @@ def destroy
return render_item_errors(status: :forbidden) unless @item.destroy
logger.info("Deleted item #{@item.directory} (“#{@item.title}”, id: #{item_id})")
- render body: nil, status: :no_content
+ head :no_content
end
# GET /processing.json
@@ -55,7 +55,7 @@ def processing
def paginate_items
Item.scan_for_new_items!
- @pagy, @items = pagy(items)
+ @pagy, @items = pagy(:offset, items)
response.headers['Current-Page-Items'] = @items.count
end
@@ -80,7 +80,7 @@ def set_item
# Only allow a list of trusted parameters through.
def item_params
- params.require(:item).permit(:directory, :title, :author, :copies, :active, :publisher, :physical_desc, term_ids: [])
+ params.expect(item: [:directory, :title, :author, :copies, :active, :publisher, :physical_desc, { term_ids: [] }])
end
def query_params
diff --git a/app/controllers/lending_controller.rb b/app/controllers/lending_controller.rb
index a0e92ae..8928a78 100644
--- a/app/controllers/lending_controller.rb
+++ b/app/controllers/lending_controller.rb
@@ -19,12 +19,12 @@ class LendingController < ApplicationController
# ------------------------------------------------------------
# Controller actions
- # TODO: merge 'edit' and 'show'
- def edit; end
-
# Admin view
def show; end
+ # TODO: merge 'edit' and 'show'
+ def edit; end
+
# Patron view
# TODO: separate actions for with/without token,
# separate views for with/without active loan
@@ -163,7 +163,9 @@ def existing_loan
end
def active_loan
- @active_loan ||= Loan.active.find_by(**loan_args)
+ return @active_loan if defined?(@active_loan)
+
+ @active_loan = Loan.active.find_by(**loan_args)
end
def most_recent_loan
@@ -184,7 +186,7 @@ def directory
# create/update parameters
def lending_item_params # TODO: better/more consistent name
- params.require(:item).permit(:directory, :title, :author, :publisher, :physical_desc, :copies, :active, term_ids: [])
+ params.expect(item: [:directory, :title, :author, :publisher, :physical_desc, :copies, :active, { term_ids: [] }])
end
# loan lookup parameters
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
index ae3c171..c297bcb 100644
--- a/app/controllers/sessions_controller.rb
+++ b/app/controllers/sessions_controller.rb
@@ -10,10 +10,18 @@
#
# @see https://github.com/omniauth/omniauth
class SessionsController < ApplicationController
+ # Require login, then:
+ # - redirect administrators to "Manage Items"
+ # - return 403 Forbidden for other users
+ def index
+ require_lending_admin!
+
+ redirect_to(items_path)
+ end
+
# Redirect the user to Calnet for authentication
def new
- redirect_args = { origin: params[:url] || request.base_url }.to_query
- redirect_to("/auth/calnet?#{redirect_args}", allow_other_host: true)
+ @origin = params[:url].presence || request.base_url
end
# Generate a new user session using data returned from a valid Calnet login
@@ -25,7 +33,7 @@ def callback
log_signin(user)
end
- redirect_url = (request.env['omniauth.origin'] || root_path) # TODO: better default redirect path
+ redirect_url = request.env['omniauth.origin'] || root_path # TODO: better default redirect path
redirect_to(redirect_url, allow_other_host: true)
end
@@ -37,15 +45,6 @@ def destroy
redirect_to(cas_logout_url, allow_other_host: true)
end
- # Require login, then:
- # - redirect administrators to "Manage Items"
- # - return 403 Forbidden for other users
- def index
- require_lending_admin!
-
- redirect_to(items_path)
- end
-
private
def auth_params
@@ -53,7 +52,7 @@ def auth_params
end
def cas_base_uri
- cas_host = Rails.application.config.cas_host
+ cas_host = Rails.application.config.x.cas_host
URI.parse("https://#{cas_host}")
end
diff --git a/app/controllers/terms_controller.rb b/app/controllers/terms_controller.rb
index 7613d83..c639e5b 100644
--- a/app/controllers/terms_controller.rb
+++ b/app/controllers/terms_controller.rb
@@ -42,7 +42,7 @@ def destroy
return render_term_errors(status: :forbidden) unless @term.destroy
logger.info("Deleted term #{@term.name} (#{@term.start_date}–#{@term.end_date})”, id: #{term_id})")
- render body: nil, status: :no_content
+ head :no_content
end
private
@@ -83,14 +83,16 @@ def set_term
@term = Term.find(term_id)
end
+ # rubocop:disable Rails/StrongParametersExpect
def term_params
params.require(:term).permit(:name, :start_date, :end_date).tap do |pp|
logger.info("#{self.class}.term_params", pp)
end
end
+ # rubocop:enable Rails/StrongParametersExpect
def term_default?
- @term_default ||= params.require(:term).permit(:default_term)[:default_term]
+ @term_default ||= params.require(:term).permit(:default_term)[:default_term] # rubocop:disable Rails/StrongParametersExpect
end
def query_params
diff --git a/app/javascript/items/api/items.js b/app/javascript/items/api/items.js
index 7293987..f3c4604 100644
--- a/app/javascript/items/api/items.js
+++ b/app/javascript/items/api/items.js
@@ -58,7 +58,7 @@ function pagingFromResponse (response) {
const paging = {
currentPage: getInt(headers, 'current-page', 1),
totalPages: getInt(headers, 'total-pages', 1),
- itemsPerPage: getInt(headers, 'page-items', 0),
+ itemsPerPage: getInt(headers, 'page-limit', 0),
currentPageItems: getInt(headers, 'current-page-items', 0),
totalItems: getInt(headers, 'total-count', 0)
}
@@ -71,7 +71,7 @@ function pagingFromResponse (response) {
}
const links = Link.parse(linkHeader)
- for (const rel of ['first', 'prev', 'next', 'last']) {
+ for (const rel of ['first', 'previous', 'next', 'last']) {
if (links.has('rel', rel)) {
const urlStr = links.get('rel', rel)[0].uri
paging[rel] = new URL(urlStr)
diff --git a/app/javascript/items/components/ItemPaging.vue b/app/javascript/items/components/ItemPaging.vue
index 1dfdc87..7f72e8d 100644
--- a/app/javascript/items/components/ItemPaging.vue
+++ b/app/javascript/items/components/ItemPaging.vue
@@ -19,11 +19,11 @@
<
<
diff --git a/app/lib/lending/borrower_token.rb b/app/lib/lending/borrower_token.rb
index fb3771d..e429c0d 100644
--- a/app/lib/lending/borrower_token.rb
+++ b/app/lib/lending/borrower_token.rb
@@ -77,7 +77,7 @@ def _load(token_str)
private
def hmac_secret
- @hmac_secret ||= Rails.application.secrets.fetch(:secret_key_base) { raise ArgumentError, 'Rails secret_key_base not set' }.to_s
+ @hmac_secret ||= Rails.application.secret_key_base.to_s { raise ArgumentError, 'Rails secret_key_base not set' }
end
def decode(token_str)
diff --git a/app/lib/lending/config.rb b/app/lib/lending/config.rb
index 0664571..df1f330 100644
--- a/app/lib/lending/config.rb
+++ b/app/lib/lending/config.rb
@@ -44,7 +44,7 @@ def default_lending_root
end
def env_iiif_base
- iiif_base_uri_from(ENV[ENV_IIIF_BASE])
+ iiif_base_uri_from(ENV.fetch(ENV_IIIF_BASE, nil))
end
def rails_iiif_base
@@ -52,7 +52,7 @@ def rails_iiif_base
end
def env_lending_root
- env_root = ENV[ENV_ROOT]
+ env_root = ENV.fetch(ENV_ROOT, nil)
lending_root_path_from(env_root)
end
diff --git a/app/lib/lending/iiif_manifest.rb b/app/lib/lending/iiif_manifest.rb
index 47ccf4d..dc02c26 100644
--- a/app/lib/lending/iiif_manifest.rb
+++ b/app/lib/lending/iiif_manifest.rb
@@ -29,11 +29,11 @@ def dir_basename
dir_path.basename.to_s
end
- # rubocop:disable Naming/PredicateName
+ # rubocop:disable Naming/PredicatePrefix
def has_manifest?
json_template? || erb_template?
end
- # rubocop:enable Naming/PredicateName
+ # rubocop:enable Naming/PredicatePrefix
def to_json_manifest(manifest_uri, image_root_uri)
image_dir_uri = BerkeleyLibrary::Util::URIs.append(image_root_uri, ERB::Util.url_encode(dir_basename))
diff --git a/app/lib/lending/marc_metadata.rb b/app/lib/lending/marc_metadata.rb
index 058d960..8283961 100644
--- a/app/lib/lending/marc_metadata.rb
+++ b/app/lib/lending/marc_metadata.rb
@@ -28,7 +28,7 @@ def from_file(marc_path)
def load_marc_record(marc_path)
marc_record = MARC::XMLReader.read(marc_path.to_s, freeze: true).first
- return MarcMetadata.new(marc_record) if marc_record
+ MarcMetadata.new(marc_record) if marc_record
end
end
diff --git a/app/lib/lending/path_utils.rb b/app/lib/lending/path_utils.rb
index 5a76540..2761277 100644
--- a/app/lib/lending/path_utils.rb
+++ b/app/lib/lending/path_utils.rb
@@ -97,11 +97,11 @@ def decompose_dirname(path)
raise ArgumentError, format(MSG_BAD_DIRNAME, path) unless match_data
barcode = match_data[:barcode]
- raise ArgumentError, format(MSG_INVALID_BARCODE) unless barcode =~ SEGMENT_RE
+ raise ArgumentError, MSG_INVALID_BARCODE unless barcode =~ SEGMENT_RE
# TODO: do we care about check digits?
record_id = match_data[:record_id].downcase
- raise ArgumentError, format(MSG_INVALID_RECORD_ID) unless barcode =~ SEGMENT_RE
+ raise ArgumentError, MSG_INVALID_RECORD_ID unless barcode =~ SEGMENT_RE
[record_id, barcode]
end
diff --git a/app/models/iiif_directory.rb b/app/models/iiif_directory.rb
index 110e6a8..1494bd1 100644
--- a/app/models/iiif_directory.rb
+++ b/app/models/iiif_directory.rb
@@ -46,8 +46,8 @@ def fetch(directory, stage: :final)
# @return [ActiveSupport::Cache::MemoryStore]
def cache
@cache ||= ActiveSupport::Cache::MemoryStore.new(
- coder: ActiveSupport::Cache::NullCoder,
- expires_in: CACHE_EXPIRY
+ expires_in: CACHE_EXPIRY,
+ coder: nil
)
end
@@ -65,7 +65,8 @@ def reason_incomplete
return "#{MSG_NO_IIIF_DIR}: #{path}" unless exists?
return MSG_NO_PAGE_IMAGES unless page_images?
return MSG_NO_MARC_XML unless marc_record?
- return MSG_NO_MANIFEST unless manifest?
+
+ MSG_NO_MANIFEST unless manifest?
end
def exists?
diff --git a/app/models/item.rb b/app/models/item.rb
index 43789e7..d873e56 100644
--- a/app/models/item.rb
+++ b/app/models/item.rb
@@ -244,7 +244,7 @@ def read_marc_attributes(marc_metadata)
title: marc_metadata.title,
publisher: marc_metadata.publisher,
physical_desc: marc_metadata.physical_desc
- }.filter { |_, v| v.present? }
+ }.compact_blank
assign_attributes(attrs)
end
@@ -291,7 +291,8 @@ def reason_unavailable
return Item::MSG_INACTIVE unless active?
return msg_not_current_term unless for_current_term?
return msg_unavailable if copies_available <= 0
- return Item::MSG_INCOMPLETE unless complete?
+
+ Item::MSG_INCOMPLETE unless complete?
end
delegate :reason_incomplete, to: :iiif_directory
diff --git a/app/models/item_lending_stats.rb b/app/models/item_lending_stats.rb
index c9bb386..0229bd5 100644
--- a/app/models/item_lending_stats.rb
+++ b/app/models/item_lending_stats.rb
@@ -103,7 +103,7 @@ def all_loan_dates
.connection
.exec_query(stmt, SELECT_DISTINCT_LOAN_DATES_STMT, prepare: true)
.rows
- .map { |row| Date.parse(row[0]) }
+ .map { |row| row[0].is_a?(Date) ? row[0] : Date.parse(row[0]) }
end
def median_loan_duration
diff --git a/app/models/loan.rb b/app/models/loan.rb
index e0618d2..0994ddb 100644
--- a/app/models/loan.rb
+++ b/app/models/loan.rb
@@ -24,7 +24,7 @@ class Loan < ApplicationRecord
scope :loaned_on, ->(date) do
from_time = Time.zone.local(date.year, date.month, date.day)
until_time = from_time + 1.days
- where('loans.loan_date >= ? AND loans.loan_date < ?', from_time, until_time)
+ where(loans: { loan_date: from_time...until_time })
end
# ------------------------------------------------------------
@@ -78,7 +78,7 @@ def loan_status
def ok_to_check_out?
# TODO: clean this up
- item.available? && !(active? || already_checked_out? || checkout_limit_reached)
+ item.available? && !(active? || already_checked_out? || checkout_limit_reached?)
end
def reason_unavailable
@@ -86,7 +86,7 @@ def reason_unavailable
item.reason_unavailable ||
(Item::MSG_CHECKED_OUT if already_checked_out?) ||
- (Item::MSG_CHECKOUT_LIMIT_REACHED if checkout_limit_reached)
+ (Item::MSG_CHECKOUT_LIMIT_REACHED if checkout_limit_reached?)
end
def seconds_remaining
@@ -110,7 +110,7 @@ def patron_can_check_out
return if complete?
errors.add(:base, Item::MSG_CHECKED_OUT) if already_checked_out?
- errors.add(:base, Item::MSG_CHECKOUT_LIMIT_REACHED) if checkout_limit_reached
+ errors.add(:base, Item::MSG_CHECKOUT_LIMIT_REACHED) if checkout_limit_reached?
end
def item_available
@@ -135,7 +135,7 @@ def loan_term_expired?
due_date && due_date <= Time.current.utc
end
- def checkout_limit_reached
+ def checkout_limit_reached?
other_checkouts.count >= Item::MAX_CHECKOUTS_PER_PATRON
end
diff --git a/app/models/term.rb b/app/models/term.rb
index eb7e147..38ebafe 100644
--- a/app/models/term.rb
+++ b/app/models/term.rb
@@ -40,7 +40,7 @@ def start_date_before_end_date
# Synthetic accessors
def current?
- Date.current >= start_date && Date.current <= end_date
+ Date.current.between?(start_date, end_date)
end
def default?
diff --git a/app/models/user.rb b/app/models/user.rb
index 65445d3..3e80fe4 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -115,11 +115,16 @@ def ucb_staff?
affiliations&.include?('EMPLOYEE-TYPE-STAFF')
end
+ # rubocop:disable Naming/PredicateMethod
+ # rubocop:disable Style/ReturnNilInPredicateMethodDefinition
+ # returning false could affect entries already in the db that are nil
def ucb_student?
return unless affiliations
STUDENT_AFFILIATIONS.any? { |a9n| affiliations.include?(a9n) }
end
+ # rubocop:enable Style/ReturnNilInPredicateMethodDefinition
+ # rubocop:enable Naming/PredicateMethod
# Whether the user is a member of the Framework lending admin CalGroup
# @return [Boolean]
diff --git a/app/presenters/lending_item_presenter_base.rb b/app/presenters/lending_item_presenter_base.rb
index 6be39b0..857a70c 100644
--- a/app/presenters/lending_item_presenter_base.rb
+++ b/app/presenters/lending_item_presenter_base.rb
@@ -37,15 +37,15 @@ def pub_metadata
@pub_metadata ||= {
t('activerecord.attributes.item.publisher') => item.publisher,
t('activerecord.attributes.item.phys_desc') => item.physical_desc
- }.filter { |_, v| v.present? }
+ }.compact_blank
end
delegate :directory, to: :item
protected
- def t(key, **options)
- I18n.t(key, **options)
+ def t(key, **)
+ I18n.t(key, **)
end
def action_edit
diff --git a/app/presenters/lending_item_view_presenter.rb b/app/presenters/lending_item_view_presenter.rb
index 000400f..9733a3b 100644
--- a/app/presenters/lending_item_view_presenter.rb
+++ b/app/presenters/lending_item_view_presenter.rb
@@ -11,16 +11,14 @@ def initialize(view_context, item, loan)
)
@loan = loan
- @show_copyright_warning = (!loan.active? && item.available?)
+ @show_copyright_warning = !loan.active? && item.available?
end
def action
return action_return if loan.active?
return action_check_out if loan.ok_to_check_out?
- # rubocop:disable Rails/OutputSafety
tag.a(class: 'btn primary disabled') { t('loan.actions.check_out') }.html_safe
- # rubocop:enable Rails/OutputSafety
end
def build_fields
diff --git a/app/queries/item_query_factory.rb b/app/queries/item_query_factory.rb
index 4c24138..2813046 100644
--- a/app/queries/item_query_factory.rb
+++ b/app/queries/item_query_factory.rb
@@ -74,7 +74,7 @@ def false?(flag)
def keywords_or_nil(opt)
keywords = opt.to_s.strip
- return keywords unless keywords.empty?
+ keywords unless keywords.empty?
end
def strings_or_nil(opt)
diff --git a/app/views/application/standard_error.json.jbuilder b/app/views/application/standard_error.json.jbuilder
index 5483bc3..6761a95 100644
--- a/app/views/application/standard_error.json.jbuilder
+++ b/app/views/application/standard_error.json.jbuilder
@@ -1,6 +1,6 @@
json.success(false)
json.error do
- json.code(Rack::Utils.status_code(status))
- json.message(message)
+ json.code(Rack::Utils.status_code(local_assigns[:status]))
+ json.message(local_assigns[:message])
json.errors([{ location: request.original_fullpath }])
end
diff --git a/app/views/application/validation_errors.json.jbuilder b/app/views/application/validation_errors.json.jbuilder
index 5c904c4..c0fece7 100644
--- a/app/views/application/validation_errors.json.jbuilder
+++ b/app/views/application/validation_errors.json.jbuilder
@@ -1,8 +1,8 @@
json.success(false)
json.error do
- json.code(Rack::Utils.status_code(status))
+ json.code(Rack::Utils.status_code(local_assigns[:status]))
json.errors do
- json.array!(errors) do |error|
+ json.array!(local_assigns[:errors]) do |error|
json.type error.type
json.attribute error.attribute
json.message error.full_message
diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb
index d70b44a..075ef84 100644
--- a/app/views/layouts/_footer.html.erb
+++ b/app/views/layouts/_footer.html.erb
@@ -14,7 +14,6 @@
diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb
new file mode 100644
index 0000000..8047a23
--- /dev/null
+++ b/app/views/sessions/new.html.erb
@@ -0,0 +1,5 @@
+<%= form_with url: '/auth/calnet', method: :post, local: true, data: { turbo: false }, html: { id: 'calnet_login_form' } do |f| %>
+ <%= hidden_field_tag :origin, @origin %>
+ Continue to CalNet to sign in.
+ <%= f.submit 'Continue to CalNet' %>
+<% end %>
diff --git a/bin/setup b/bin/setup
index ec47b79..be3db3c 100755
--- a/bin/setup
+++ b/bin/setup
@@ -1,11 +1,10 @@
#!/usr/bin/env ruby
require "fileutils"
-# path to your application root.
APP_ROOT = File.expand_path("..", __dir__)
def system!(*args)
- system(*args) || abort("\n== Command #{args} failed ==")
+ system(*args, exception: true)
end
FileUtils.chdir APP_ROOT do
@@ -14,7 +13,6 @@ FileUtils.chdir APP_ROOT do
# Add necessary setup steps to this file.
puts "== Installing dependencies =="
- system! "gem install bundler --conservative"
system("bundle check") || system!("bundle install")
# puts "\n== Copying sample files =="
@@ -28,6 +26,9 @@ FileUtils.chdir APP_ROOT do
puts "\n== Removing old logs and tempfiles =="
system! "bin/rails log:clear tmp:clear"
- puts "\n== Restarting application server =="
- system! "bin/rails restart"
+ unless ARGV.include?("--skip-server")
+ puts "\n== Starting development server =="
+ STDOUT.flush # flush the output before exec(2) so that it displays
+ exec "bin/dev"
+ end
end
diff --git a/config/application.rb b/config/application.rb
index 539a5aa..0cf1595 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -1,17 +1,13 @@
-# ------------------------------------------------------------
-# Standard Rails initialization
-
-require File.expand_path('boot', __dir__)
+require_relative 'boot'
require 'rails'
+# Pick the frameworks you want:
require 'active_model/railtie'
+require 'active_job/railtie'
require 'active_record/railtie'
+require 'active_storage/engine'
require 'action_controller/railtie'
require 'action_view/railtie'
-require 'sprockets/railtie'
-
-# TODO: figure out why Bundler.require() doesn't pick this up
-require 'berkeley_library/logging/railtie'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
@@ -24,7 +20,20 @@
module UCBEARS
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 7.0
+ config.load_defaults 8.0
+
+ # Please, add to the `ignore` list any other `lib` subdirectories that do
+ # not contain `.rb` files, or that should not be reloaded or eager loaded.
+ # Common ones are `templates`, `generators`, or `middleware`, for example.
+ config.autoload_lib(ignore: %w[tasks])
+
+ # Configuration for the application, engines, and railties goes here.
+ #
+ # These settings can be overridden in specific environments using the files
+ # in config/environments, which are processed later.
+ #
+ # config.time_zone = "Central Time (US & Canada)"
+ # config.eager_load_paths << Rails.root.join("extras")
# Don't generate system test files.
config.generators.system_tests = nil
@@ -35,9 +44,9 @@ class Application < Rails::Application
# TODO: fail fast if ENV not configured?
BerkeleyLibrary::Alma::Config.default!
- # CAS configuration
- # - NOTE: overridden in production.rb
- config.cas_host = ENV.fetch('CAS_HOST') { 'auth-test.berkeley.edu' }
+ config.x.cas_host = ENV.fetch('CAS_HOST') do
+ Rails.env.production? ? 'auth.berkeley.edu' : 'auth-test.berkeley.edu'
+ end
config.after_initialize do
BuildInfo.log!
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 6ce8ee5..883b0ba 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -1,16 +1,10 @@
-# Read .env in local dev, but not in Docker
-require 'berkeley_library/docker'
-require 'dotenv/load' unless BerkeleyLibrary::Docker.running_in_container?
-
require 'active_support/core_ext/integer/time'
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
- # In the development environment your application's code is reloaded any time
- # it changes. This slows down response time but is perfect for development
- # since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
+ # Make code changes take effect immediately without server restart.
+ config.enable_reloading = true
# Do not eager load code on boot.
config.eager_load = false
@@ -18,60 +12,60 @@
# Show full error reports.
config.consider_all_requests_local = true
- # Enabling Lograge
- config.lograge.enabled = true
-
- # Enable server timing
+ # Enable server timing.
config.server_timing = true
- # Enable/disable caching. By default caching is disabled.
- # Run rails dev:cache to toggle caching.
+ # Enable/disable Action Controller caching. By default Action Controller caching is disabled.
+ # Run rails dev:cache to toggle Action Controller caching.
if Rails.root.join('tmp/caching-dev.txt').exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true
-
+ config.public_file_server.headers = { 'cache-control' => "public, max-age=#{2.days.to_i}" }
config.cache_store = :memory_store
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{2.days.to_i}"
- }
else
config.action_controller.perform_caching = false
-
config.cache_store = :null_store
end
+ # Store uploaded files on the local file system (see config/storage.yml for options).
+ config.active_storage.service = :local
+
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
- # Raise exceptions for disallowed deprecations.
- config.active_support.disallowed_deprecation = :raise
-
- # Tell Active Support which deprecation messages to disallow.
- config.active_support.disallowed_deprecation_warnings = []
-
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Highlight code that triggered database queries in logs.
config.active_record.verbose_query_logs = true
- # Suppress logger output for asset requests.
- config.assets.quiet = true
+ # Append comments with runtime information tags to SQL queries in logs.
+ config.active_record.query_log_tags_enabled = true
- # Use simple polling
- config.file_watcher = ActiveSupport::FileUpdateChecker
+ # Highlight code that enqueued background job in logs.
+ config.active_job.verbose_enqueue_logs = true
+
+ # Allow cross-origin requests in development.
+ config.action_dispatch.default_headers['Access-Control-Allow-Origin'] = '*'
- # Do not fallback to assets pipeline if a precompiled asset is missed.
- # config.assets.compile = false
+ # Suppress logger output for asset requests.
+ config.assets.quiet = true
- # A few tweaks to help with hotloading:
+ # Expand assets for easier debugging.
config.assets.debug = true
- config.assets.check_precompiled_asset = false
- config.assets.compile = true
+
+ # Use simple polling-style file watcher.
+ config.file_watcher = ActiveSupport::FileUpdateChecker
# Raises error for missing translations.
# config.i18n.raise_on_missing_translations = true
- default_headers = config.action_dispatch.default_headers ||= {}
- default_headers['Access-Control-Allow-Origin'] = '*'
+ # Annotate rendered view with file names.
+ config.action_view.annotate_rendered_view_with_filenames = true
+
+ # Raise error when a before_action's only/except options reference missing actions.
+ config.action_controller.raise_on_missing_callback_actions = true
+
+ # Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
+ # config.generators.apply_rubocop_autocorrect_after_generate!
end
diff --git a/config/environments/production.rb b/config/environments/production.rb
index af2598f..bb42154 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -4,62 +4,74 @@
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
- config.cache_classes = true
+ config.enable_reloading = false
- # Eager load code on boot. This eager loads most of Rails and
- # your application in memory, allowing both threaded web servers
- # and those relying on copy on write to perform better.
- # Rake tasks automatically ignore this option for performance.
+ # Eager load code on boot for better performance and memory savings (ignored by Rake tasks).
config.eager_load = true
- # Full error reports are disabled and caching is turned on.
- config.consider_all_requests_local = false
- config.action_controller.perform_caching = true
+ # Full error reports are disabled.
+ config.consider_all_requests_local = false
- # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
- # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
- # config.require_master_key = true
+ # Turn on fragment caching in view templates.
+ config.action_controller.perform_caching = true
- # Serve static files, because we don't run nginx in front.
+ # Serve static files from the app server.
config.public_file_server.enabled = true
- # Compress CSS using a preprocessor.
- # config.assets.css_compressor = :sass
-
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
+ # Cache assets for far-future expiry since they are all digest stamped.
+ config.public_file_server.headers = { 'cache-control' => "public, max-age=#{1.year.to_i}" }
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.asset_host = 'http://assets.example.com'
+ # config.asset_host = "http://assets.example.com"
- # Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+ # Store uploaded files on the local file system (see config/storage.yml for options).
+ config.active_storage.service = :local
+
+ # Assume all access to the app is happening through a SSL-terminating reverse proxy.
+ config.assume_ssl = true
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
- # config.force_ssl = true
+ config.force_ssl = true
- # Use the lowest log level to ensure availability of diagnostic information
- # when problems arise.
- config.log_level = :debug
+ # Skip http-to-https redirect for the default health check endpoint.
+ # config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } }
- # Prepend all log lines with the following tags.
config.log_tags = [:request_id]
- # Use a different cache store in production.
+ # Change to "debug" to log everything (including potentially personally-identifiable information!)
+ config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info')
+
+ # Prevent health checks from clogging up the logs.
+ config.silence_healthcheck_path = '/up'
+
+ # Don't log any deprecations.
+ config.active_support.report_deprecations = false
+
+ # Replace the default in-process memory cache store with a durable alternative.
# config.cache_store = :mem_cache_store
+ # Replace the default in-process and non-durable queuing backend for Active Job.
+ # config.active_job.queue_adapter = :resque
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
- # Don't log any deprecations.
- config.active_support.report_deprecations = false
-
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
- # CAS configuration
- # - NOTE: overrides application.rb
- config.cas_host = ENV.fetch('CAS_HOST') { 'auth.berkeley.edu' }
+ # Only use :id for inspections in production.
+ config.active_record.attributes_for_inspect = [:id]
+
+ # Enable DNS rebinding protection and other `Host` header attacks.
+ # config.hosts = [
+ # "example.com", # Allow requests from example.com
+ # /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
+ # ]
+ #
+ # Skip DNS rebinding protection for the default health check endpoint.
+ # config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
end
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 0c7070b..0aa2122 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -1,5 +1,3 @@
-require 'active_support/core_ext/integer/time'
-
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
@@ -8,46 +6,45 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
- # Turn false under Spring and add config.action_view.cache_template_loading = true.
- config.cache_classes = true
+ # While tests run files are not watched, reloading is not necessary.
+ config.enable_reloading = false
- # Eager loading loads your whole application. When running a single test locally,
- # this probably isn't necessary. It's a good idea to do in a continuous integration
- # system, or in some way before deploying your code.
- config.eager_load = false
+ # Eager loading loads your entire application. When running a single test locally,
+ # this is usually not necessary, and can slow down your test suite. However, it's
+ # recommended that you enable it in continuous integration systems to ensure eager
+ # loading is working properly before deploying your code.
+ config.eager_load = ENV['CI'].present?
- # Configure public file server for tests with Cache-Control for performance.
- config.public_file_server.enabled = true
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
- }
+ # Configure public file server for tests with cache-control for performance.
+ config.public_file_server.headers = { 'cache-control' => 'public, max-age=3600' }
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
+ # Show full error reports.
+ config.consider_all_requests_local = true
config.cache_store = :null_store
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
+ # Render exception templates for rescuable exceptions and raise for other exceptions.
+ config.action_dispatch.show_exceptions = :rescuable
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
+ # Store uploaded files on the local file system in a temporary directory.
+ config.active_storage.service = :test
+
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
- # Raise exceptions for disallowed deprecations.
- config.active_support.disallowed_deprecation = :raise
-
- # Tell Active Support which deprecation messages to disallow.
- config.active_support.disallowed_deprecation_warnings = []
-
# Raises error for missing translations.
# config.i18n.raise_on_missing_translations = true
- # Test mode short-circuits the entire auth flow
OmniAuth.config.test_mode = true
+ # Annotate rendered view with file names.
+ # config.action_view.annotate_rendered_view_with_filenames = true
+
+ # Raise error when a before_action's only/except options reference missing actions.
+ config.action_controller.raise_on_missing_callback_actions = true
+
config.iiif_base_url = 'http://iipsrv.test/iiif/'
config.lending_root = 'spec/data/lending'
end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index 404859e..ee1f11b 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -5,21 +5,3 @@
# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
-# Add Yarn node_modules folder to the asset load path.
-# Rails.application.config.assets.paths << Rails.root.join('node_modules')
-
-# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in the app/assets
-# folder are already added.
-Rails.application.config.assets.precompile += %w[*.png]
-
-Rails.application.config.assets.precompile += %w[
- application.js
- items.js
- terms.js
- viewer.js
- marc-reload.js
-]
-# Rails.application.config.assets.configure do |env|
-# env.css_compressor = :sass
-# end
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
index 4a994e1..f72dcdf 100644
--- a/config/initializers/filter_parameter_logging.rb
+++ b/config/initializers/filter_parameter_logging.rb
@@ -1,4 +1,8 @@
# Be sure to restart your server when you modify this file.
-# Configure sensitive parameters which will be filtered from the log file.
-Rails.application.config.filter_parameters += [:password]
+# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.
+# Use this to limit dissemination of sensitive information.
+# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
+Rails.application.config.filter_parameters += %i[
+ passw email secret token _key crypt salt certificate otp ssn cvv cvc
+]
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index 57443f7..10ab3de 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -1,3 +1,20 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format. Inflections
+# are locale specific, and you may define rules for as many different
+# locales as you wish. All of these examples are active by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+# inflect.plural /^(ox)$/i, "\\1en"
+# inflect.singular /^(ox)en/i, "\\1"
+# inflect.irregular "person", "people"
+# inflect.uncountable %w( fish sheep )
+# end
+
+# These inflection rules are supported but not enabled by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+# inflect.acronym "RESTful"
+# end
+
ActiveSupport::Inflector.inflections do |inflect|
- %w[IIIF UCBLIT UCBEARS].each { |a| inflect.acronym(a) }
+ %w[IIIF UCBLIT UCBEARS].each { |acronym| inflect.acronym(acronym) }
end
diff --git a/config/initializers/okcomputer.rb b/config/initializers/okcomputer.rb
index 21e24ac..6164d34 100644
--- a/config/initializers/okcomputer.rb
+++ b/config/initializers/okcomputer.rb
@@ -1,4 +1,4 @@
-require 'health_checks'
+require Rails.root.join('app/lib/health_checks')
OkComputer.logger = Rails.logger
OkComputer.check_in_parallel = true
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
index 3bc511e..a4398e1 100644
--- a/config/initializers/omniauth.rb
+++ b/config/initializers/omniauth.rb
@@ -19,11 +19,13 @@
provider :cas,
name: :calnet,
- host: Rails.application.config.cas_host,
+ host: Rails.application.config.x.cas_host,
login_url: '/cas/login',
service_validate_url: '/cas/p3/serviceValidate',
fetch_raw_info: fetch_raw_info
+ OmniAuth.config.allowed_request_methods = %i[post]
+
# Override the default 'puts' logger that Omniauth uses.
OmniAuth.config.logger = Rails.logger
end
diff --git a/config/initializers/pagy.rb b/config/initializers/pagy.rb
index 4aa3464..ef3c8cf 100644
--- a/config/initializers/pagy.rb
+++ b/config/initializers/pagy.rb
@@ -1,232 +1,51 @@
# frozen_string_literal: true
-# Pagy initializer file (5.6.4)
-# Customize only what you really need and notice that the core Pagy works also without any of the following lines.
-# Should you just cherry pick part of this file, please maintain the require-order of the extras
-
-# Pagy DEFAULT Variables
-# See https://ddnexus.github.io/pagy/api/pagy#variables
-# All the Pagy::DEFAULT are set for all the Pagy instances but can be overridden per instance by just passing them to
-# Pagy.new|Pagy::Countless.new|Pagy::Calendar::*.new or any of the #pagy* controller methods
-
-# Instance variables
-# See https://ddnexus.github.io/pagy/api/pagy#instance-variables
-# Pagy::DEFAULT[:page] = 1 # default
-# Pagy::DEFAULT[:items] = 20 # default
-# Pagy::DEFAULT[:outset] = 0 # default
+# Pagy initializer file (43.2.10)
+# See https://ddnexus.github.io/pagy/resources/initializer/
# TODO: something more configurable
-Pagy::DEFAULT[:items] = 2 if Rails.env.development?
-
-# Other Variables
-# See https://ddnexus.github.io/pagy/api/pagy#other-variables
-# Pagy::DEFAULT[:size] = [1,4,4,1] # default
-# Pagy::DEFAULT[:page_param] = :page # default
-# The :params can be also set as a lambda e.g ->(params){ params.exclude('useless').merge!('custom' => 'useful') }
-# Pagy::DEFAULT[:params] = {} # default
-# Pagy::DEFAULT[:fragment] = '#fragment' # example
-# Pagy::DEFAULT[:link_extra] = 'data-remote="true"' # example
-# Pagy::DEFAULT[:i18n_key] = 'pagy.item_name' # default
-# Pagy::DEFAULT[:cycle] = true # example
-
-# Extras
-# See https://ddnexus.github.io/pagy/extras
-
-# Backend Extras
+Pagy.options[:limit] = 2 if Rails.env.development?
+Pagy.options[:limit] = 5 if Rails.env.test?
-# Array extra: Paginate arrays efficiently, avoiding expensive array-wrapping and without overriding
-# See https://ddnexus.github.io/pagy/extras/array
-# require 'pagy/extras/array'
-
-# Calendar extra: Add pagination filtering by calendar time unit (year, quarter, month, week, day)
-# See https://ddnexus.github.io/pagy/extras/calendar
-# require 'pagy/extras/calendar'
-# Default for each unit
-# Pagy::Calendar::Year::DEFAULT[:order] = :asc # Time direction of pagination
-# Pagy::Calendar::Year::DEFAULT[:format] = '%Y' # strftime format
-#
-# Pagy::Calendar::Quarter::DEFAULT[:order] = :asc # Time direction of pagination
-# Pagy::Calendar::Quarter::DEFAULT[:format] = '%Y-Q%q' # strftime format
-#
-# Pagy::Calendar::Month::DEFAULT[:order] = :asc # Time direction of pagination
-# Pagy::Calendar::Month::DEFAULT[:format] = '%Y-%m' # strftime format
-#
-# Pagy::Calendar::Week::DEFAULT[:order] = :asc # Time direction of pagination
-# Pagy::Calendar::Week::DEFAULT[:format] = '%Y-%W' # strftime format
-# Pagy::Calendar::Week::DEFAULT[:offset] = 0 # Day offset from Sunday (0: Sunday; 1: Monday;... 6: Saturday)
-#
-# Pagy::Calendar::Day::DEFAULT[:order] = :asc # Time direction of pagination
-# Pagy::Calendar::Day::DEFAULT[:format] = '%Y-%m-%d' # strftime format
+############ Global Options ################################################################
+# See https://ddnexus.github.io/pagy/toolbox/options/ for details.
+# Add your global options below. They will be applied globally.
+# For example:
#
-# Uncomment the following lines, if you need calendar localization without using the I18n extra
-# module LocalizePagyCalendar
-# def localize(time, opts)
-# ::I18n.l(time, **opts)
-# end
-# end
-# Pagy::Calendar.prepend LocalizePagyCalendar
-
-# Countless extra: Paginate without any count, saving one query per rendering
-# See https://ddnexus.github.io/pagy/extras/countless
-# require 'pagy/extras/countless'
-# Pagy::DEFAULT[:countless_minimal] = false # default (eager loading)
-
-# Elasticsearch Rails extra: Paginate `ElasticsearchRails::Results` objects
-# See https://ddnexus.github.io/pagy/extras/elasticsearch_rails
-# default :pagy_search method: change only if you use also
-# the searchkick or meilisearch extra that defines the same
-# Pagy::DEFAULT[:elasticsearch_rails_search_method] = :pagy_search
-# require 'pagy/extras/elasticsearch_rails'
-
-# Headers extra: http response headers (and other helpers) useful for API pagination
-# See http://ddnexus.github.io/pagy/extras/headers
-require 'pagy/extras/headers'
-# Pagy::DEFAULT[:headers] = { page: 'Current-Page',
-# items: 'Page-Items',
-# count: 'Total-Count',
-# pages: 'Total-Pages' } # default
-# TODO: put links in JSON response instead
-
-# Meilisearch extra: Paginate `Meilisearch` result objects
-# See https://ddnexus.github.io/pagy/extras/meilisearch
-# default :pagy_search method: change only if you use also
-# the elasticsearch_rails or searchkick extra that define the same method
-# Pagy::DEFAULT[:meilisearch_search_method] = :pagy_search
-# require 'pagy/extras/meilisearch'
-
-# Metadata extra: Provides the pagination metadata to Javascript frameworks like Vue.js, react.js, etc.
-# See https://ddnexus.github.io/pagy/extras/metadata
-# you must require the shared internal extra (BEFORE the metadata extra) ONLY if you need also the :sequels
-# require 'pagy/extras/shared'
-# require 'pagy/extras/metadata'
-# For performance reasons, you should explicitly set ONLY the metadata you use in the frontend
-# Pagy::DEFAULT[:metadata] = %i[scaffold_url page prev next last] # example
-
-# Searchkick extra: Paginate `Searchkick::Results` objects
-# See https://ddnexus.github.io/pagy/extras/searchkick
-# default :pagy_search method: change only if you use also
-# the elasticsearch_rails or meilisearch extra that defines the same
-# DEFAULT[:searchkick_search_method] = :pagy_search
-# require 'pagy/extras/searchkick'
-# uncomment if you are going to use Searchkick.pagy_search
-# Searchkick.extend Pagy::Searchkick
-
-# Frontend Extras
-
-# Bootstrap extra: Add nav, nav_js and combo_nav_js helpers and templates for Bootstrap pagination
-# See https://ddnexus.github.io/pagy/extras/bootstrap
-# require 'pagy/extras/bootstrap'
-
-# Bulma extra: Add nav, nav_js and combo_nav_js helpers and templates for Bulma pagination
-# See https://ddnexus.github.io/pagy/extras/bulma
-# require 'pagy/extras/bulma'
-
-# Foundation extra: Add nav, nav_js and combo_nav_js helpers and templates for Foundation pagination
-# See https://ddnexus.github.io/pagy/extras/foundation
-# require 'pagy/extras/foundation'
+# Pagy.options[:limit] = 10 # Limit the items per page
+# Pagy.options[:client_max_limit] = 100 # The client can request a limit up to 100
+# Pagy.options[:max_pages] = 200 # Allow only 200 pages
+# Pagy.options[:jsonapi] = true # Use JSON:API compliant URLs
-# Materialize extra: Add nav, nav_js and combo_nav_js helpers for Materialize pagination
-# See https://ddnexus.github.io/pagy/extras/materialize
-# require 'pagy/extras/materialize'
-
-# Navs extra: Add nav_js and combo_nav_js javascript helpers
-# Notice: the other frontend extras add their own framework-styled versions,
-# so require this extra only if you need the unstyled version
-# See https://ddnexus.github.io/pagy/extras/navs
-# require 'pagy/extras/navs'
-
-# Semantic extra: Add nav, nav_js and combo_nav_js helpers for Semantic UI pagination
-# See https://ddnexus.github.io/pagy/extras/semantic
-# require 'pagy/extras/semantic'
-
-# UIkit extra: Add nav helper and templates for UIkit pagination
-# See https://ddnexus.github.io/pagy/extras/uikit
-# require 'pagy/extras/uikit'
-
-# Multi size var used by the *_nav_js helpers
-# See https://ddnexus.github.io/pagy/extras/navs#steps
-# Pagy::DEFAULT[:steps] = { 0 => [2,3,3,2], 540 => [3,5,5,3], 720 => [5,7,7,5] } # example
-
-# Feature Extras
-
-# Gearbox extra: Automatically change the number of items per page depending on the page number
-# See https://ddnexus.github.io/pagy/extras/gearbox
-# require 'pagy/extras/gearbox'
-# set to false only if you want to make :gearbox_extra an opt-in variable
-# Pagy::DEFAULT[:gearbox_extra] = false # default true
-# Pagy::DEFAULT[:gearbox_items] = [15, 30, 60, 100] # default
-
-# Items extra: Allow the client to request a custom number of items per page with an optional selector UI
-# See https://ddnexus.github.io/pagy/extras/items
-# require 'pagy/extras/items'
-# set to false only if you want to make :items_extra an opt-in variable
-# Pagy::DEFAULT[:items_extra] = false # default true
-# Pagy::DEFAULT[:items_param] = :items # default
-# Pagy::DEFAULT[:max_items] = 100 # default
-
-# Overflow extra: Allow for easy handling of overflowing pages
-# See https://ddnexus.github.io/pagy/extras/overflow
-# require 'pagy/extras/overflow'
-# Pagy::DEFAULT[:overflow] = :empty_page # default (other options: :last_page and :exception)
-
-# Support extra: Extra support for features like: incremental, infinite, auto-scroll pagination
-# See https://ddnexus.github.io/pagy/extras/support
-# require 'pagy/extras/support'
-
-# Trim extra: Remove the page=1 param from links
-# See https://ddnexus.github.io/pagy/extras/trim
-# require 'pagy/extras/trim'
-# set to false only if you want to make :trim_extra an opt-in variable
-# Pagy::DEFAULT[:trim_extra] = false # default true
-
-# Standalone extra: Use pagy in non Rack environment/gem
-# See https://ddnexus.github.io/pagy/extras/standalone
-# require 'pagy/extras/standalone'
-# Pagy::DEFAULT[:url] = 'http://www.example.com/subdir' # optional default
-
-# Rails
-
-# Rails: extras assets path required by the helpers that use javascript
-# (pagy*_nav_js, pagy*_combo_nav_js, and pagy_items_selector_js)
-# See https://ddnexus.github.io/pagy/extras#javascript
-# Rails.application.config.assets.paths << Pagy.root.join('javascripts')
-
-# I18n
-
-# Pagy internal I18n: ~18x faster using ~10x less memory than the i18n gem
-# See https://ddnexus.github.io/pagy/api/frontend#i18n
-# Notice: No need to configure anything in this section if your app uses only "en"
-# or if you use the i18n extra below
+############ JavaScript ####################################################################
+# See https://ddnexus.github.io/pagy/resources/javascript/ for details.
+# Examples for Rails:
+# For apps with an assets pipeline
+# Rails.application.config.assets.paths << Pagy::ROOT.join('javascripts')
#
-# Examples:
-# load the "de" built-in locale:
-# Pagy::I18n.load(locale: 'de')
-#
-# load the "de" locale defined in the custom file at :filepath:
-# Pagy::I18n.load(locale: 'de', filepath: 'path/to/pagy-de.yml')
-#
-# load the "de", "en" and "es" built-in locales:
-# (the first passed :locale will be used also as the default_locale)
-# Pagy::I18n.load({ locale: 'de' },
-# { locale: 'en' },
-# { locale: 'es' })
+# For apps with a javascript builder (e.g. esbuild, webpack, etc.)
+# javascript_dir = Rails.root.join('app/javascript')
+# Pagy.sync_javascript(javascript_dir, 'pagy.mjs') if Rails.env.development?
+
+############# Overriding Pagy::I18n Lookup #################################################
+# Refer to https://ddnexus.github.io/pagy/resources/i18n/ for details.
+# Override the I18n lookup by dropping your custom dictionary in some pagy dir.
+# Example for Rails:
#
-# load the "en" built-in locale, a custom "es" locale,
-# and a totally custom locale complete with a custom :pluralize proc:
-# (the first passed :locale will be used also as the default_locale)
-# Pagy::I18n.load({ locale: 'en' },
-# { locale: 'es', filepath: 'path/to/pagy-es.yml' },
-# { locale: 'xyz', # not built-in
-# filepath: 'path/to/pagy-xyz.yml',
-# pluralize: lambda{ |count| ... } )
+# Pagy::I18n.pathnames << Rails.root.join('config/locales/pagy')
-# I18n extra: uses the standard i18n gem which is ~18x slower using ~10x more memory
-# than the default pagy internal i18n (see above)
-# See https://ddnexus.github.io/pagy/extras/i18n
-# require 'pagy/extras/i18n'
+############# I18n Gem Translation #########################################################
+# See https://ddnexus.github.io/pagy/resources/i18n/ for details.
+#
+# Pagy.translate_with_the_slower_i18n_gem!
-# Default i18n key
-# Pagy::DEFAULT[:i18n_key] = 'pagy.item_name' # default
+############# Calendar Localization for non-en locales ####################################
+# See https://ddnexus.github.io/pagy/toolbox/paginators/calendar#localization for details.
+# Add your desired locales to the list and uncomment the following line to enable them,
+# regardless of whether you use the I18n gem for translations or not, whether with
+# Rails or not.
+#
+# Pagy::Calendar.localize_with_rails_i18n_gem(*your_locales)
# When you are done setting your own default freeze it, so it will not get changed accidentally
-Pagy::DEFAULT.freeze
+Pagy.options.freeze
diff --git a/config/puma.rb b/config/puma.rb
index 0593712..565587c 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -1,43 +1,41 @@
-# Puma can serve each request in a thread from an internal thread pool.
-# The `threads` method setting takes two numbers: a minimum and maximum.
-# Any libraries that use thread pools should be configured to match
-# the maximum value specified for Puma. Default is set to 5 threads for minimum
-# and maximum; this matches the default thread size of Active Record.
+# This configuration file will be evaluated by Puma. The top-level methods that
+# are invoked here are part of Puma's configuration DSL. For more information
+# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
#
-max_threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)
-min_threads_count = ENV.fetch('RAILS_MIN_THREADS') { max_threads_count }
-threads min_threads_count, max_threads_count
-
-# Specifies the `worker_timeout` threshold that Puma will use to wait before
-# terminating a worker in development environments.
+# Puma starts a configurable number of processes (workers) and each process
+# serves each request in a thread from an internal thread pool.
#
-worker_timeout 3600 if ENV.fetch('RAILS_ENV', 'development') == 'development'
-
-# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
+# You can control the number of workers using ENV["WEB_CONCURRENCY"]. You
+# should only set this value when you want to run 2 or more workers. The
+# default is already 1.
#
-port ENV.fetch('PORT', 3000)
-
-# Specifies the `environment` that Puma will run in.
+# The ideal number of threads per worker depends both on how much time the
+# application spends waiting for IO operations and on how much you wish to
+# prioritize throughput over latency.
#
-environment ENV.fetch('RAILS_ENV') { 'development' }
-
-# Specifies the `pidfile` that Puma will use.
-pidfile ENV.fetch('PIDFILE') { 'tmp/pids/server.pid' }
-
-# Specifies the number of `workers` to boot in clustered mode.
-# Workers are forked web server processes. If using threads and workers together
-# the concurrency of the application would be max `threads` * `workers`.
-# Workers do not work on JRuby or Windows (both of which do not support
-# processes).
+# As a rule of thumb, increasing the number of threads will increase how much
+# traffic a given process can handle (throughput), but due to CRuby's
+# Global VM Lock (GVL) it has diminishing returns and will degrade the
+# response time (latency) of the application.
#
-# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
-
-# Use the `preload_app!` method when specifying a `workers` number.
-# This directive tells Puma to first boot the application and load code
-# before forking the application. This takes advantage of Copy On Write
-# process behavior so workers use less memory.
+# The default is set to 5 threads as it's deemed a decent compromise between
+# throughput and latency for the average Rails application.
#
-# preload_app!
+# Any libraries that use a connection pool or another resource pool should
+# be configured to provide at least as many connections as the number of
+# threads. This includes Active Record's `pool` parameter in `database.yml`.
+threads_count = ENV.fetch('RAILS_MAX_THREADS', 5)
+threads threads_count, threads_count
+
+# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
+port ENV.fetch('PORT', 3000)
# Allow puma to be restarted by `bin/rails restart` command.
plugin :tmp_restart
+
+# Run the Solid Queue supervisor inside of Puma for single-server deployments
+plugin :solid_queue if ENV['SOLID_QUEUE_IN_PUMA']
+
+# Specify the PID file. Defaults to tmp/pids/server.pid in development.
+# In other environments, only set the PID file if requested.
+pidfile ENV['PIDFILE'] if ENV['PIDFILE']
diff --git a/config/storage.yml b/config/storage.yml
new file mode 100644
index 0000000..db2757d
--- /dev/null
+++ b/config/storage.yml
@@ -0,0 +1,34 @@
+test:
+ service: Disk
+ root: <%= Rails.root.join("artifacts/storage") %>
+
+local:
+ service: Disk
+ root: <%= Rails.root.join("storage") %>
+
+# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
+# amazon:
+# service: S3
+# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
+# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
+# region: us-east-1
+# bucket: your_own_bucket-<%= Rails.env %>
+
+# Remember not to checkin your GCS keyfile to a repository
+# google:
+# service: GCS
+# project: your_project
+# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
+# bucket: your_own_bucket-<%= Rails.env %>
+
+# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
+# microsoft:
+# service: AzureStorage
+# storage_account_name: your_account_name
+# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
+# container: your_container_name-<%= Rails.env %>
+
+# mirror:
+# service: Mirror
+# primary: local
+# mirrors: [ amazon, google, microsoft ]
diff --git a/db/migrate/20260226192155_add_service_name_to_active_storage_blobs.active_storage.rb b/db/migrate/20260226192155_add_service_name_to_active_storage_blobs.active_storage.rb
new file mode 100644
index 0000000..a15c6ce
--- /dev/null
+++ b/db/migrate/20260226192155_add_service_name_to_active_storage_blobs.active_storage.rb
@@ -0,0 +1,22 @@
+# This migration comes from active_storage (originally 20190112182829)
+class AddServiceNameToActiveStorageBlobs < ActiveRecord::Migration[6.0]
+ def up
+ return unless table_exists?(:active_storage_blobs)
+
+ unless column_exists?(:active_storage_blobs, :service_name)
+ add_column :active_storage_blobs, :service_name, :string
+
+ if configured_service = ActiveStorage::Blob.service.name
+ ActiveStorage::Blob.unscoped.update_all(service_name: configured_service)
+ end
+
+ change_column :active_storage_blobs, :service_name, :string, null: false
+ end
+ end
+
+ def down
+ return unless table_exists?(:active_storage_blobs)
+
+ remove_column :active_storage_blobs, :service_name
+ end
+end
diff --git a/db/migrate/20260226192156_create_active_storage_variant_records.active_storage.rb b/db/migrate/20260226192156_create_active_storage_variant_records.active_storage.rb
new file mode 100644
index 0000000..94ac83a
--- /dev/null
+++ b/db/migrate/20260226192156_create_active_storage_variant_records.active_storage.rb
@@ -0,0 +1,27 @@
+# This migration comes from active_storage (originally 20191206030411)
+class CreateActiveStorageVariantRecords < ActiveRecord::Migration[6.0]
+ def change
+ return unless table_exists?(:active_storage_blobs)
+
+ # Use Active Record's configured type for primary key
+ create_table :active_storage_variant_records, id: primary_key_type, if_not_exists: true do |t|
+ t.belongs_to :blob, null: false, index: false, type: blobs_primary_key_type
+ t.string :variation_digest, null: false
+
+ t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
+ t.foreign_key :active_storage_blobs, column: :blob_id
+ end
+ end
+
+ private
+ def primary_key_type
+ config = Rails.configuration.generators
+ config.options[config.orm][:primary_key_type] || :primary_key
+ end
+
+ def blobs_primary_key_type
+ pkey_name = connection.primary_key(:active_storage_blobs)
+ pkey_column = connection.columns(:active_storage_blobs).find { |c| c.name == pkey_name }
+ pkey_column.bigint? ? :bigint : pkey_column.type
+ end
+end
diff --git a/db/migrate/20260226192157_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb b/db/migrate/20260226192157_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb
new file mode 100644
index 0000000..93c8b85
--- /dev/null
+++ b/db/migrate/20260226192157_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb
@@ -0,0 +1,8 @@
+# This migration comes from active_storage (originally 20211119233751)
+class RemoveNotNullOnActiveStorageBlobsChecksum < ActiveRecord::Migration[6.0]
+ def change
+ return unless table_exists?(:active_storage_blobs)
+
+ change_column_null(:active_storage_blobs, :checksum, true)
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 8b97ffe..966c151 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,9 +10,9 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.0].define(version: 2021_12_29_223302) do
+ActiveRecord::Schema[8.0].define(version: 2026_02_26_192157) do
# These are extensions that must be enabled in order to support this database
- enable_extension "plpgsql"
+ enable_extension "pg_catalog.plpgsql"
create_table "items", force: :cascade do |t|
t.string "directory"
diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml
index ec8a4b9..c7387c1 100644
--- a/docker-compose.ci.yml
+++ b/docker-compose.ci.yml
@@ -5,6 +5,7 @@ services:
build: !reset
environment:
- CAPYBARA_SAVE_PATH=/opt/app/artifacts
+ - SECRET_KEY_BASE=${SECRET_KEY_BASE}
env_file: !reset []
image: ${DOCKER_APP_IMAGE}
depends_on:
@@ -22,10 +23,6 @@ services:
volumes: !override
- artifacts:/build
- selenium-chrome:
- depends_on:
- - selenium
-
adminer: !reset
volumes:
diff --git a/docker-compose.yml b/docker-compose.yml
index fa428a5..e394823 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,7 +10,6 @@ services:
- db
- iipsrv
- selenium
- - selenium-chrome
environment: &app-environment
LIT_LENDING_ROOT: spec/data/lending
LIT_IIIF_BASE_URL: http://iipsrv.test/iiif/
@@ -77,35 +76,18 @@ services:
- iipsrv.test
selenium:
- image: selenium/hub
+ image: selenium/standalone-chromium
networks:
default:
aliases:
- selenium.test
ports:
- - 4442:4442
- - 4443:4443
- 4444:4444
+ - 7900:7900
+ shm_size: 512mb
volumes:
- ./:/build:rw
- selenium-chrome:
- depends_on:
- - selenium
- environment:
- - SE_EVENT_BUS_HOST=selenium
- - SE_EVENT_BUS_PUBLISH_PORT=4442
- - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- image: seleniarm/node-chromium:latest
- ports:
- # @note Use `open vnc://localhost:55900` to view the chrome session.
- # Doesn't work if you pass the "headless" option via Capybara.
- # Password = "secret"
- - 55900:5900
- volumes:
- - /dev/shm:/dev/shm:rw
- - ./:/build:rw
-
adminer:
image: adminer
restart: always
diff --git a/lib/tasks/js.rake b/lib/tasks/js.rake
index 06c61b1..a11bcfd 100644
--- a/lib/tasks/js.rake
+++ b/lib/tasks/js.rake
@@ -60,8 +60,8 @@ module BerkeleyLibrary
# @param silence_errors [Boolean] whether to warn when the eslint command returns a nonzero exit status.
# @return [Integer] 0 for success, nonzero value for failure
# @yieldparam exit_status [Integer] 0 for success, nonzero value for failure
- def write_to_console(silence_errors: true, &block)
- run_cmd(eslint_cmd, silence_errors:, &block)
+ def write_to_console(silence_errors: true, &)
+ run_cmd(eslint_cmd, silence_errors:, &)
end
# Fixes any detected problems that can be auto-fixed.
@@ -76,7 +76,7 @@ module BerkeleyLibrary
def ensure_report_path!
report_path.tap do |p|
- FileUtils.rm(p) if File.exist?(p)
+ FileUtils.rm_f(p)
report_dir = File.dirname(p)
FileUtils.mkdir_p(report_dir) unless File.directory?(report_dir)
end
@@ -85,7 +85,7 @@ module BerkeleyLibrary
def eslint_cmd(*args)
%w[yarn eslint].tap do |cmd|
cmd.concat(args)
- cmd.concat(%w[--ext .js,.vue])
+ cmd.push('--ext', '.js,.vue')
cmd.concat(js_dirs)
end
end
diff --git a/package.json b/package.json
index 18cf1a7..c931660 100644
--- a/package.json
+++ b/package.json
@@ -36,6 +36,7 @@
"start": "webpack-dev-server --config webpack.config.js --hot --progress --color --port 3035"
},
"devDependencies": {
+ "baseline-browser-mapping": "^2.10.0",
"webpack-dev-server": "^5.2.2"
}
}
diff --git a/public/400.html b/public/400.html
new file mode 100644
index 0000000..282dbc8
--- /dev/null
+++ b/public/400.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ The server cannot process the request due to a client error (400 Bad Request)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The server cannot process the request due to a client error. Please check the request and try again. If you’re the application owner check the logs for more information.
+
+
+
+
+
+
diff --git a/public/404.html b/public/404.html
index 2be3af2..c0670bc 100644
--- a/public/404.html
+++ b/public/404.html
@@ -1,67 +1,114 @@
-
-
-
- The page you were looking for doesn't exist (404)
-
-
-
-
-
-
-
-
-
The page you were looking for doesn't exist.
-
You may have mistyped the address or the page may have moved.
-
-
If you are the application owner check the logs for more information.
-
-
+
+
+
+
+
+
+ The page you were looking for doesn’t exist (404 Not found)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The page you were looking for doesn’t exist. You may have mistyped the address or the page may have moved. If you’re the application owner check the logs for more information.
+
+
+
+
+
diff --git a/public/422.html b/public/422.html
index c08eac0..8bcf060 100644
--- a/public/422.html
+++ b/public/422.html
@@ -1,67 +1,114 @@
-
-
-
- The change you wanted was rejected (422)
-
-
-
-
-
-
-
-
-
The change you wanted was rejected.
-
Maybe you tried to change something you didn't have access to.
-
-
If you are the application owner check the logs for more information.
-
-
+
+
+
+
+
+
+ The change you wanted was rejected (422 Unprocessable Entity)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The change you wanted was rejected. Maybe you tried to change something you didn’t have access to. If you’re the application owner check the logs for more information.
+
+
+
+
+
diff --git a/public/500.html b/public/500.html
index 78a030a..d77718c 100644
--- a/public/500.html
+++ b/public/500.html
@@ -1,66 +1,114 @@
-
-
-
- We're sorry, but something went wrong (500)
-
-
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
If you are the application owner check the logs for more information.
-
-
+
+
+
+
+
+
+ We’re sorry, but something went wrong (500 Internal Server Error)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ We’re sorry, but something went wrong. If you’re the application owner check the logs for more information.
+
+
+
+
+
diff --git a/public/robots.txt b/public/robots.txt
index 37b576a..c19f78a 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1 +1 @@
-# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
diff --git a/spec/.rubocop.yml b/spec/.rubocop.yml
index 8acc9cb..b7de565 100644
--- a/spec/.rubocop.yml
+++ b/spec/.rubocop.yml
@@ -1,7 +1,8 @@
inherit_from: ../.rubocop.yml
-require:
+plugins:
- rubocop-rspec
+ - rubocop-rspec_rails
# Sometimes we're testing the operator
Lint/BinaryOperatorWithIdenticalOperands:
@@ -37,10 +38,21 @@ Rails/TimeZone:
RSpec/AnyInstance:
Enabled: false
+# This is used as plain Ruby not ActiveRecord. Pluck not available
+# in the context used
+Rails/Pluck:
+ Enabled: false
+
+RSpec/VerifiedDoubleReference:
+ Enabled: false
+
# we meant to do that
RSpec/BeforeAfterAll:
Enabled: false
+RSpec/ContainExactly:
+ Enabled: false
+
# more words != more readable
RSpec/ContextWording:
Enabled: false
@@ -59,7 +71,7 @@ RSpec/DescribeSymbol:
# setup cost / time >>> failure granularity
RSpec/ExampleLength:
- Max: 20
+ Max: 25
CountAsOne:
- array
- hash
@@ -70,7 +82,13 @@ RSpec/ExpectInHook:
Enabled: false
# your naming scheme is not in possession of all the facts
-RSpec/FilePath:
+# RSpec/FilePath:
+# Enabled: false
+
+RSpec/SpecFilePathFormat:
+ Enabled: false
+
+RSpec/SpecFilePathSuffix:
Enabled: false
# explicit >>> implicit
@@ -117,5 +135,5 @@ RSpec/VerifiedDoubles:
RSpec/IdenticalEqualityAssertion: # new in 2.4
Enabled: true
-RSpec/Rails/AvoidSetupHook: # new in 2.4
+RSpecRails/AvoidSetupHook: # new in 2.4
Enabled: true
diff --git a/spec/bin/collect_spec.rb b/spec/bin/collect_spec.rb
index 1da0109..7e5f3fd 100644
--- a/spec/bin/collect_spec.rb
+++ b/spec/bin/collect_spec.rb
@@ -11,7 +11,7 @@ def stage_dirs_from(lending_root)
it 'collects' do
collect_rb_path = File.expand_path('../../bin/lending/collect.rb', __dir__)
- expect(File.executable?(collect_rb_path)).to eq(true)
+ expect(File.executable?(collect_rb_path)).to be(true)
Dir.mktmpdir(File.basename(__FILE__, '.rb')) do |tmpdir|
lending_root = File.join(tmpdir, 'ucbears')
@@ -28,7 +28,7 @@ def stage_dirs_from(lending_root)
system(collect_env, collect_rb_path)
item_dir_final = File.join(stage_dirs[:final], 'b152240925_C070359919')
- expect(File.directory?(item_dir_final)).to eq(true)
+ expect(File.directory?(item_dir_final)).to be(true)
manifest = Lending::IIIFManifest.new(
title: 'Tagebuch der Kulturwissenschaftlichen Bibliothek Warburg',
diff --git a/spec/capybara_helper.rb b/spec/capybara_helper.rb
index a754b84..4249201 100644
--- a/spec/capybara_helper.rb
+++ b/spec/capybara_helper.rb
@@ -26,7 +26,7 @@ def browser_project_root
end
def local_save_path
- File.join(Rails.root, SAVE_PATH)
+ Rails.root.join(SAVE_PATH)
end
def browser_save_path
@@ -112,15 +112,9 @@ def configure_capybara!
end
Capybara.register_driver(driver_name) do |app|
- capabilities = [
- chrome_options,
- ::Selenium::WebDriver::Remote::Capabilities.chrome(
- 'goog:loggingPrefs' => {
- browser: 'ALL', driver: 'ALL'
- }
- )
- ]
- options = { capabilities: }.merge(driver_opts)
+ opts = chrome_options
+ opts.add_option('goog:loggingPrefs', { browser: 'ALL', driver: 'ALL' })
+ options = { capabilities: [opts] }.merge(driver_opts)
Capybara::Selenium::Driver.new(app, **options)
end
diff --git a/spec/lib/health_checks/iiif_server_check_spec.rb b/spec/lib/health_checks/iiif_server_check_spec.rb
index 6e7e45d..1e58bb1 100644
--- a/spec/lib/health_checks/iiif_server_check_spec.rb
+++ b/spec/lib/health_checks/iiif_server_check_spec.rb
@@ -9,11 +9,10 @@ def run_check
end
def stub_items(active_first:, inactive_first:)
- active_relation = instance_double('ActiveRelation', first: active_first)
- inactive_relation = instance_double('InactiveRelation', first: inactive_first)
+ active_relation = instance_double(ActiveRecord::Relation, first: active_first)
+ inactive_relation = instance_double(ActiveRecord::Relation, first: inactive_first)
- allow(Item).to receive(:active).and_return(active_relation)
- allow(Item).to receive(:inactive).and_return(inactive_relation)
+ allow(Item).to receive_messages(active: active_relation, inactive: inactive_relation)
end
describe '#check' do
diff --git a/spec/lib/health_checks/lending_root_path_spec.rb b/spec/lib/health_checks/lending_root_path_spec.rb
index 0ae2e26..88bd907 100644
--- a/spec/lib/health_checks/lending_root_path_spec.rb
+++ b/spec/lib/health_checks/lending_root_path_spec.rb
@@ -48,8 +48,7 @@ def expect_not_failed
it 'fails when directory is not readable' do
pn = Pathname.new('/tmp/lending-root')
- allow(pn).to receive(:directory?).and_return(true)
- allow(pn).to receive(:readable?).and_return(false)
+ allow(pn).to receive_messages(directory?: true, readable?: false)
allow(Lending::Config).to receive(:lending_root_path).and_return(pn)
@@ -61,8 +60,7 @@ def expect_not_failed
it 'does not fail when directory exists and is readable' do
pn = Pathname.new('/tmp/lending-root')
- allow(pn).to receive(:directory?).and_return(true)
- allow(pn).to receive(:readable?).and_return(true)
+ allow(pn).to receive_messages(directory?: true, readable?: true)
allow(Lending::Config).to receive(:lending_root_path).and_return(pn)
diff --git a/spec/lib/health_checks/test_item_exists_spec.rb b/spec/lib/health_checks/test_item_exists_spec.rb
index 977d86c..f1f6395 100644
--- a/spec/lib/health_checks/test_item_exists_spec.rb
+++ b/spec/lib/health_checks/test_item_exists_spec.rb
@@ -22,10 +22,8 @@ def expect_failed
inactive_relation = double('InactiveRelation')
item = instance_double(Item)
- allow(Item).to receive(:active).and_return(active_relation)
+ allow(Item).to receive_messages(active: active_relation, inactive: inactive_relation)
allow(active_relation).to receive(:first).and_return(item)
-
- allow(Item).to receive(:inactive).and_return(inactive_relation)
allow(inactive_relation).to receive(:first).and_return(nil)
run_check
@@ -37,10 +35,8 @@ def expect_failed
active_relation = double('ActiveRelation')
inactive_relation = double('InactiveRelation')
- allow(Item).to receive(:active).and_return(active_relation)
+ allow(Item).to receive_messages(active: active_relation, inactive: inactive_relation)
allow(active_relation).to receive(:first).and_return(nil)
-
- allow(Item).to receive(:inactive).and_return(inactive_relation)
allow(inactive_relation).to receive(:first).and_return(nil)
run_check
@@ -54,10 +50,8 @@ def expect_failed
inactive_relation = double('InactiveRelation')
item = instance_double(Item)
- allow(Item).to receive(:active).and_return(active_relation)
+ allow(Item).to receive_messages(active: active_relation, inactive: inactive_relation)
allow(active_relation).to receive(:first).and_return(nil)
-
- allow(Item).to receive(:inactive).and_return(inactive_relation)
allow(inactive_relation).to receive(:first).and_return(item)
run_check
diff --git a/spec/lib/lending/borrower_token_spec.rb b/spec/lib/lending/borrower_token_spec.rb
index f8b9585..b30d976 100644
--- a/spec/lib/lending/borrower_token_spec.rb
+++ b/spec/lib/lending/borrower_token_spec.rb
@@ -11,7 +11,7 @@ module Lending
describe :== do
it 'returns true for identical objects' do
token = BorrowerToken.new_token_for(uid)
- expect(token == token).to eq(true)
+ expect(token == token).to be(true)
end
it 'returns true for equal objects' do
@@ -21,15 +21,15 @@ module Lending
token.instance_variable_set(:@borrower_id, token1.borrower_id)
token.instance_variable_set(:@token_str, token1.token_str)
end
- expect(token1 == token2).to eq(true)
- expect(token2 == token1).to eq(true)
+ expect(token1 == token2).to be(true)
+ expect(token2 == token1).to be(true)
end
it 'returns false for unequal objects' do
token1 = BorrowerToken.new_token_for(uid)
token2 = BorrowerToken.new_token_for('other uid')
- expect(token1 == token2).to eq(false)
- expect(token2 == token1).to eq(false)
+ expect(token1 == token2).to be(false)
+ expect(token2 == token1).to be(false)
end
it 'returns false for different tokens for the same UID' do
@@ -37,15 +37,15 @@ module Lending
token2 = BorrowerToken.new_token_for(uid)
expect(token1.borrower_id).not_to eq(token2.borrower_id) # just to be sure
- expect(token1 == token2).to eq(false)
- expect(token2 == token1).to eq(false)
+ expect(token1 == token2).to be(false)
+ expect(token2 == token1).to be(false)
end
end
describe :eql? do
it 'returns true for identical objects' do
token = BorrowerToken.new_token_for(uid)
- expect(token.eql?(token)).to eq(true)
+ expect(token.eql?(token)).to be(true)
end
it 'returns true for equal objects' do
@@ -55,24 +55,24 @@ module Lending
token.instance_variable_set(:@borrower_id, token1.borrower_id)
token.instance_variable_set(:@token_str, token1.token_str)
end
- expect(token1.eql?(token2)).to eq(true)
- expect(token2.eql?(token1)).to eq(true)
+ expect(token1.eql?(token2)).to be(true)
+ expect(token2.eql?(token1)).to be(true)
end
it 'returns false for unequal objects' do
token1 = BorrowerToken.new_token_for(uid)
token2 = BorrowerToken.new_token_for('other uid')
- expect(token1.eql?(token2)).to eq(false)
- expect(token2.eql?(token1)).to eq(false)
+ expect(token1.eql?(token2)).to be(false)
+ expect(token2.eql?(token1)).to be(false)
end
it 'returns false for different tokens for the same UID' do
token1 = BorrowerToken.new_token_for(uid)
token2 = BorrowerToken.new_token_for(uid)
- expect(token1.borrower_id).not_to eq(token2.borrower_id) # just to be sure
+ expect(token1.borrower_id).not_to be(token2.borrower_id) # just to be sure
- expect(token1.eql?(token2)).to eq(false)
- expect(token2.eql?(token1)).to eq(false)
+ expect(token1.eql?(token2)).to be(false)
+ expect(token2.eql?(token1)).to be(false)
end
end
diff --git a/spec/lib/lending/collector_spec.rb b/spec/lib/lending/collector_spec.rb
index 87ff6a3..8378316 100644
--- a/spec/lib/lending/collector_spec.rb
+++ b/spec/lib/lending/collector_spec.rb
@@ -99,7 +99,7 @@ def expect_to_process(item_dirname)
expect(processing_dir).not_to exist
expect(final_dir).to exist
- expect(collector.stopped?).to eq(false)
+ expect(collector.stopped?).to be(false)
info = logs[:info].join("\n")
@@ -143,11 +143,9 @@ def expect_to_process(item_dirname)
processing_dirs.each { |pdir| expect(pdir).not_to exist }
final_dirs.each { |fdir| expect(fdir).to exist }
- expect(collector.stopped?).to eq(false)
+ expect(collector.stopped?).to be(false)
end
- # rubocop:enable RSpec/ExampleLength
- # rubocop:disable RSpec/ExampleLength
it 'skips single-item processing failures' do
logs = capture_logs(BerkeleyLibrary::Logging.logger, levels: %i[info error])
@@ -192,7 +190,7 @@ def expect_to_process(item_dirname)
expect(good_processing_dir).not_to exist
expect(good_final_dir).to exist
- expect(collector.stopped?).to eq(false)
+ expect(collector.stopped?).to be(false)
end
# rubocop:enable RSpec/ExampleLength
@@ -215,7 +213,7 @@ def expect_to_process(item_dirname)
let(:env_vars) { [Lending::Config::ENV_ROOT, Collector::ENV_STOP_FILE] }
before do
- @env_vals = env_vars.each_with_object({}) { |var, vals| vals[var] = ENV[var] }
+ @env_vals = env_vars.each_with_object({}) { |var, vals| vals[var] = ENV.fetch(var, nil) }
end
after do
diff --git a/spec/lib/lending/config_spec.rb b/spec/lib/lending/config_spec.rb
index 48b06d8..947902d 100644
--- a/spec/lib/lending/config_spec.rb
+++ b/spec/lib/lending/config_spec.rb
@@ -8,7 +8,7 @@ module Lending
attr_reader :attr_values_orig
before do
- @env_values_orig = [Config::ENV_IIIF_BASE, Config::ENV_ROOT].to_h { |var| [var, ENV[var]] }
+ @env_values_orig = [Config::ENV_IIIF_BASE, Config::ENV_ROOT].to_h { |var| [var, ENV.fetch(var, nil)] }
@attr_values_orig = config_instance_vars.to_h { |var| [var, Config.instance_variable_get(var)] }
end
@@ -95,13 +95,8 @@ module Lending
Config.instance_variable_set(:@iiif_base_uri, nil)
# Temporarily hide Rails constant so `defined?(Rails)` is false
- rails_const = Object.const_get(:Rails)
- Object.send(:remove_const, :Rails)
- begin
- expect { Config.iiif_base_uri }.to raise_error(Lending::ConfigException, /IIIF base URL not set/)
- ensure
- Object.const_set(:Rails, rails_const)
- end
+ hide_const('Rails')
+ expect { Config.iiif_base_uri }.to raise_error(Lending::ConfigException, /IIIF base URL not set/)
end
it 'returns nil from rails_config when Rails.application is nil' do
diff --git a/spec/lib/lending/page_spec.rb b/spec/lib/lending/page_spec.rb
index bdddbb9..f3570ff 100644
--- a/spec/lib/lending/page_spec.rb
+++ b/spec/lib/lending/page_spec.rb
@@ -50,7 +50,7 @@ module Lending
it 'rejects an existing non-TIFF file' do
txt_path = tiff_path.sub(/\.tif$/, '.txt')
- expect(File.exist?(txt_path)).to eq(true) # just to be sure
+ expect(File.exist?(txt_path)).to be(true) # just to be sure
expect { Page.new(txt_path) }.to raise_error(ArgumentError)
end
diff --git a/spec/lib/lending/processor_spec.rb b/spec/lib/lending/processor_spec.rb
index a381780..fba1c27 100644
--- a/spec/lib/lending/processor_spec.rb
+++ b/spec/lib/lending/processor_spec.rb
@@ -54,7 +54,7 @@ module Lending
expected_tiffs.each do |expected_tiff|
actual_tiff = processor.outdir.join(expected_tiff.basename)
- expect(actual_tiff.exist?).to eq(true)
+ expect(actual_tiff.exist?).to be(true)
Page.assert_equal!(expected_tiff, actual_tiff)
end
@@ -72,7 +72,7 @@ module Lending
it 'generates the manifest' do
expected_manifest = expected_dir.join(Lending::IIIFManifest::MANIFEST_NAME)
actual_manifest = processor.outdir.join(Lending::IIIFManifest::MANIFEST_NAME)
- expect(actual_manifest.exist?).to eq(true)
+ expect(actual_manifest.exist?).to be(true)
expect(actual_manifest.read.strip).to eq(expected_manifest.read.strip)
end
@@ -83,9 +83,11 @@ module Lending
manifest_path = processor.outdir.join(Lending::IIIFManifest::MANIFEST_NAME)
manifest = instance_double(IIIFManifest)
- allow(manifest).to receive(:manifest_path).and_return(manifest_path)
- allow(manifest).to receive(:has_manifest?).and_return(true)
- allow(manifest).to receive(:to_json_manifest).and_return('{ something that is not valid JSON }')
+ allow(manifest).to receive_messages(
+ manifest_path:,
+ has_manifest?: true,
+ to_json_manifest: '{ something that is not valid JSON }'
+ )
expect { processor.verify(manifest) }.to raise_error(ProcessingFailed) do |e|
expect(e.cause).to be_a(JSON::ParserError)
@@ -107,7 +109,7 @@ module Lending
expected_manifest = expected_dir.join(Lending::IIIFManifest::MANIFEST_NAME)
actual_manifest = processor.outdir.join(Lending::IIIFManifest::MANIFEST_NAME)
- expect(actual_manifest.exist?).to eq(true)
+ expect(actual_manifest.exist?).to be(true)
expect(actual_manifest.read.strip).to eq(expected_manifest.read.strip)
end
diff --git a/spec/models/item_lending_stats_spec.rb b/spec/models/item_lending_stats_spec.rb
index 17de0c3..1ef4f8d 100644
--- a/spec/models/item_lending_stats_spec.rb
+++ b/spec/models/item_lending_stats_spec.rb
@@ -29,7 +29,7 @@
describe :all do
it 'is empty' do
all_stats = ItemLendingStats.all
- expect(all_stats.any?).to eq(false)
+ expect(all_stats.any?).to be(false)
end
end
@@ -89,7 +89,7 @@
describe :to_csv do
it 'returns a CSV' do
- ItemLendingStats.all.each do |stats|
+ ItemLendingStats.all.each do |stats| # rubocop:disable Rails/FindEach
stats_csv = stats.to_csv
expect(stats_csv).to be_a(String)
@@ -125,7 +125,7 @@
end
it 'returns the correct date group even when the Ruby time zone is UTC' do
- tz_actual = ENV['TZ']
+ tz_actual = ENV.fetch('TZ', nil)
begin
ENV['TZ'] = 'UTC'
diff --git a/spec/models/item_spec.rb b/spec/models/item_spec.rb
index b07a0e7..ea56472 100644
--- a/spec/models/item_spec.rb
+++ b/spec/models/item_spec.rb
@@ -42,7 +42,7 @@
modified_values = original_values.transform_values { |v| "not #{v}" }
original_item.update!(**modified_values)
- expect(original_item.persisted?).to eq(true) # just to be sure
+ expect(original_item.persisted?).to be(true) # just to be sure
modified_values.each { |attr, v| expect(original_item.send(attr)).to eq(v) } # just to be sure
refreshed_item = Item.find(original_item.id).tap(&:refresh_marc_metadata!)
@@ -75,7 +75,7 @@
it "doesn't blow up on incomplete items" do
items = factory_names
.select { |n| n.to_s.start_with?('incomplete') }
- .map { |n| build(n).tap { |it| it.save(validate: false) } }
+ .map { |n| build(n).tap { |i| i.save(validate: false) } }
sleep(1)
@@ -95,7 +95,7 @@
attrs[:directory] = 'I am not a valid directory'
end
item = Item.create(attributes)
- expect(item.persisted?).to eq(false)
+ expect(item.persisted?).to be(false)
messages = item.errors.full_messages.map { |msg| CGI.unescapeHTML(msg) }
expect(messages).to include(Item::MSG_INVALID_DIRECTORY)
end
@@ -210,7 +210,7 @@
expected_dirs = Lending
.stage_root_path(:final).children
.select do |d|
- Lending::PathUtils.item_dir?(d) &&
+ Lending::PathUtils.item_dir?(d) &&
d.join(Lending::MARC_XML_NAME).file?
end
items = Item.scan_for_new_items!
@@ -219,7 +219,7 @@
it 'populates the publication metadata' do
items = Item.scan_for_new_items!
- items.each { |it| expect(it.publisher).not_to be_nil }
+ items.each { |i| expect(i.publisher).not_to be_nil }
end
it 'sets the default term' do
@@ -253,7 +253,7 @@
item.reload
expect(item.author).to be_nil
- expect(item.active?).to eq(true)
+ expect(item.active?).to be(true)
end
end
end
@@ -265,7 +265,7 @@
expect(Item.count).to eq(0) # just to be sure
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object({}) do |fn, items|
- items[fn] = build(fn).tap { |it| it.save!(validate: false) }
+ items[fn] = build(fn).tap { |i| i.save!(validate: false) }
end
end
@@ -278,20 +278,20 @@
describe :active? do
it 'returns true for active items' do
item = items[:active_item]
- expect(item.active).to eq(true) # just to be sure
+ expect(item.active).to be(true) # just to be sure
expect(item).to be_active
end
it 'returns false for inactive items' do
item = items[:inactive_item]
- expect(item.active).to eq(false) # just to be sure
+ expect(item.active).to be(false) # just to be sure
expect(item.copies).to eq(0) # just to be sure
expect(item).not_to be_active
end
it 'returns false for inactive items with copies' do
item = items[:inactive_item]
- expect(item.active).to eq(false) # just to be sure
+ expect(item.active).to be(false) # just to be sure
expect(item.copies).to eq(0) # just to be sure
item.update!(copies: 2)
expect(item).not_to be_active
@@ -302,49 +302,49 @@
it 'returns false for items without IIIF directories' do
item = items[:incomplete_no_directory]
iiif_directory = item.iiif_directory
- expect(iiif_directory.exists?).to eq(false)
- expect(iiif_directory.page_images?).to eq(false)
- expect(iiif_directory.marc_record?).to eq(false)
- expect(iiif_directory.manifest?).to eq(false)
+ expect(iiif_directory.exists?).to be(false)
+ expect(iiif_directory.page_images?).to be(false)
+ expect(iiif_directory.marc_record?).to be(false)
+ expect(iiif_directory.manifest?).to be(false)
expect(item).not_to be_complete
end
it 'returns false for items without page images' do
item = items[:incomplete_no_images]
iiif_directory = item.iiif_directory
- expect(iiif_directory.exists?).to eq(true)
- expect(iiif_directory.page_images?).to eq(false)
- expect(iiif_directory.marc_record?).to eq(true)
- expect(iiif_directory.manifest?).to eq(true)
+ expect(iiif_directory.exists?).to be(true)
+ expect(iiif_directory.page_images?).to be(false)
+ expect(iiif_directory.marc_record?).to be(true)
+ expect(iiif_directory.manifest?).to be(true)
expect(item).not_to be_complete
end
it 'returns false for items without MARC records' do
item = items[:incomplete_no_marc]
iiif_directory = item.iiif_directory
- expect(iiif_directory.exists?).to eq(true)
- expect(iiif_directory.page_images?).to eq(true)
- expect(iiif_directory.marc_record?).to eq(false)
- expect(iiif_directory.manifest?).to eq(true)
+ expect(iiif_directory.exists?).to be(true)
+ expect(iiif_directory.page_images?).to be(true)
+ expect(iiif_directory.marc_record?).to be(false)
+ expect(iiif_directory.manifest?).to be(true)
expect(item).not_to be_complete
end
it 'returns false for items without manifests' do
item = items[:incomplete_no_manifest]
iiif_directory = item.iiif_directory
- expect(iiif_directory.exists?).to eq(true)
- expect(iiif_directory.page_images?).to eq(true)
- expect(iiif_directory.marc_record?).to eq(true)
- expect(iiif_directory.manifest?).to eq(false)
+ expect(iiif_directory.exists?).to be(true)
+ expect(iiif_directory.page_images?).to be(true)
+ expect(iiif_directory.marc_record?).to be(true)
+ expect(iiif_directory.manifest?).to be(false)
expect(item).not_to be_complete
end
it 'returns false for items without manifests or page images' do
item = items[:incomplete_marc_only]
- expect(item.iiif_directory.exists?).to eq(true)
- expect(item.iiif_directory.page_images?).to eq(false)
- expect(item.iiif_directory.marc_record?).to eq(true)
- expect(item.iiif_directory.manifest?).to eq(false)
+ expect(item.iiif_directory.exists?).to be(true)
+ expect(item.iiif_directory.page_images?).to be(false)
+ expect(item.iiif_directory.marc_record?).to be(true)
+ expect(item.iiif_directory.manifest?).to be(false)
expect(item).not_to be_complete
end
@@ -352,10 +352,10 @@
%i[inactive_item active_item].each do |fn|
item = items[fn]
- expect(item.iiif_directory.exists?).to eq(true)
- expect(item.iiif_directory.page_images?).to eq(true)
- expect(item.iiif_directory.marc_record?).to eq(true)
- expect(item.iiif_directory.manifest?).to eq(true)
+ expect(item.iiif_directory.exists?).to be(true)
+ expect(item.iiif_directory.page_images?).to be(true)
+ expect(item.iiif_directory.marc_record?).to be(true)
+ expect(item.iiif_directory.manifest?).to be(true)
expect(item).to be_complete
end
end
@@ -412,7 +412,7 @@
item.update!(terms: [future_term])
expect(item.terms.count).to eq(1) # just to be sure
- expect(item.for_current_term?).to eq(false)
+ expect(item.for_current_term?).to be(false)
expect(item.next_active_term).to eq(future_term)
expect(item).not_to be_available
@@ -443,7 +443,7 @@
items.each do |fn, item|
next if with_manifest.include?(fn)
- expect(item.iiif_directory.manifest?).to eq(false)
+ expect(item.iiif_directory.manifest?).to be(false)
end
end
end
@@ -582,7 +582,7 @@ def inactive
actual = Item.complete.search_by_metadata(keyword)
expect(actual).to contain_exactly(*expected)
- actual.each { |it| expect(it).to be_complete } # just to be sure
+ actual.each { |i| expect(i).to be_complete } # just to be sure
end
it 'ignores case' do
@@ -641,7 +641,7 @@ def inactive
describe :scan_for_new_items! do
it 'sets the default term' do
items = Item.scan_for_new_items!
- expect(Item.exists?).to eq(true) # just to be sure
+ expect(Item.exists?).to be(true) # just to be sure
items.each do |item|
expect(item.terms.count).to eq(1)
@@ -664,7 +664,7 @@ def inactive
describe :scan_for_new_items! do
it "doesn't set a term" do
items = Item.scan_for_new_items!
- expect(Item.exists?).to eq(true) # just to be sure
+ expect(Item.exists?).to be(true) # just to be sure
items.each do |item|
expect(item.terms.count).to eq(0)
expect(item.next_active_term).to be_nil
@@ -703,8 +703,8 @@ def inactive
it 'reads an ERB manifest' do
item = create(:complete_item)
mf = item.iiif_manifest
- expect(mf.manifest_path.file?).not_to eq(true), "#{mf.manifest_path} should not exist" # just to be sure
- expect(mf.erb_path.file?).to eq(true) # just to be sure
+ expect(mf.manifest_path.file?).not_to be(true), "#{mf.manifest_path} should not exist" # just to be sure
+ expect(mf.erb_path.file?).to be(true) # just to be sure
expected_manifest_path = Pathname.new("spec/data/iiif/#{item.directory}.json")
expected_manifest = expected_manifest_path.read
@@ -721,7 +721,7 @@ def inactive
it 'reads a plain JSON manifest' do
item = create(:active_item)
mf = item.iiif_manifest
- expect(mf.manifest_path.file?).to eq(true) # just to be sure
+ expect(mf.manifest_path.file?).to be(true) # just to be sure
expected_manifest_path = Pathname.new("spec/data/iiif/#{item.directory}.json")
expected_manifest = expected_manifest_path.read
diff --git a/spec/models/loan_spec.rb b/spec/models/loan_spec.rb
index 8bc0215..b2d6afd 100644
--- a/spec/models/loan_spec.rb
+++ b/spec/models/loan_spec.rb
@@ -81,7 +81,7 @@
attr_reader :loans_by_date
before do
- @env_tz_actual = ENV['TZ']
+ @env_tz_actual = ENV.fetch('TZ', nil)
@rails_tz_actual = Time.zone
Time.zone = 'America/Los_Angeles'
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 021f2b6..73b0903 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -73,7 +73,7 @@
auth_yml = File.read('spec/data/calnet/LIT-2700.json')
auth_hash = JSON.parse(auth_yml)
user = User.from_omniauth(auth_hash)
- expect(user.ucb_student?).to eq(true)
+ expect(user.ucb_student?).to be(true)
end
end
end
diff --git a/spec/presenters/stats_presenter_spec.rb b/spec/presenters/stats_presenter_spec.rb
index 33407a3..d2d5874 100644
--- a/spec/presenters/stats_presenter_spec.rb
+++ b/spec/presenters/stats_presenter_spec.rb
@@ -175,7 +175,7 @@
end
it 'returns the correct loans for each item' do
- sp.item_lending_stats_by_date.each do |_, stats_for_date|
+ sp.item_lending_stats_by_date.each do |_, stats_for_date| # rubocop:disable Style/HashEachMethods
stats_for_date.each do |item_stats|
item = item_stats.item
item_stats.loans.each do |loan|
diff --git a/spec/queries/item_query_factory_spec.rb b/spec/queries/item_query_factory_spec.rb
index 56beb43..87a1c8d 100644
--- a/spec/queries/item_query_factory_spec.rb
+++ b/spec/queries/item_query_factory_spec.rb
@@ -24,7 +24,7 @@
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object([]) do |fn, items|
- items << build(fn).tap { |it| it.save!(validate: false) }
+ items << build(fn).tap { |i| i.save!(validate: false) }
end
end
@@ -32,7 +32,7 @@
query = ItemQueryFactory.create_query(complete: true)
expected_items = Item.where(complete: true)
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
actual_items = query.to_a
expect(actual_items).to contain_exactly(*expected_items)
@@ -42,7 +42,7 @@
query = ItemQueryFactory.create_query(complete: false)
expected_items = Item.where(complete: false)
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
actual_items = query.to_a
expect(actual_items).to contain_exactly(*expected_items)
@@ -52,7 +52,7 @@
query = ItemQueryFactory.create_query(active: true)
expected_items = Item.where(active: true)
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
actual_items = query.to_a
expect(actual_items).to contain_exactly(*expected_items)
@@ -62,7 +62,7 @@
query = ItemQueryFactory.create_query(active: false)
expected_items = Item.where(active: false)
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
actual_items = query.to_a
expect(actual_items).to contain_exactly(*expected_items)
@@ -72,7 +72,7 @@
query = ItemQueryFactory.create_query(active: false, complete: true)
expected_items = Item.where(active: false).where(complete: true)
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
actual_items = query.to_a
expect(actual_items).to contain_exactly(*expected_items)
@@ -86,11 +86,11 @@
@term_fall_2021 = create(:term_fall_2021)
@term_spring_2022 = create(:term_spring_2022)
- items.each_with_index do |it, ix|
- expect(it.terms).to be_empty # just to be sure
+ items.each_with_index do |i, ix|
+ expect(i.terms).to be_empty # just to be sure
term = ix.even? ? term_fall_2021 : term_spring_2022
- it.terms << term
+ i.terms << term
end
end
@@ -137,10 +137,10 @@
expected_items = []
term_names = [term_spring_2021.name]
- Item.where('title LIKE ?', "%#{keyword}%").find_each do |it|
- it.terms.pluck(:name).each { |tn| term_names << tn unless term_names.include?(tn) }
- it.terms << term_spring_2021
- expected_items << it
+ Item.where('title LIKE ?', "%#{keyword}%").find_each do |i|
+ i.terms.pluck(:name).each { |tn| term_names << tn unless term_names.include?(tn) }
+ i.terms << term_spring_2021
+ expected_items << i
end
query = ItemQueryFactory.create_query(keywords: keyword, terms: term_names)
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 8f70548..06727ad 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -63,7 +63,7 @@ def expect_json_error(expected_status, expected_message)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -92,7 +92,7 @@ module CalnetHelper
}.freeze
def cas_logout_url
- "https://#{Rails.application.config.cas_host}/cas/logout"
+ "https://#{Rails.application.config.x.cas_host}/cas/logout"
end
def mock_login(type)
diff --git a/spec/request/lending_request_spec.rb b/spec/request/lending_request_spec.rb
index ff5ff09..eef753e 100644
--- a/spec/request/lending_request_spec.rb
+++ b/spec/request/lending_request_spec.rb
@@ -65,7 +65,7 @@ def available
expect(Item.count).to eq(0) # just to be sure
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object({}) do |fn, items|
- items[fn] = build(fn).tap { |it| it.save!(validate: false) }
+ items[fn] = build(fn).tap { |i| i.save!(validate: false) }
end
@item = active.first
end
@@ -83,8 +83,10 @@ def available
expect(response.status).to eq(404)
end
- it 'raises RoutingError for /lending' do
- expect { get '/lending' }.to raise_error(ActionController::RoutingError)
+ # This is now treated as an http error in Rails 8
+ it 'returns 404 not found for /lending' do
+ get '/lending'
+ expect(response.status).to eq(404)
end
end
@@ -140,7 +142,7 @@ def available
describe 'invalid updates' do
it 'returns 422 for activating an inactive item' do
- item = incomplete.find { |it| !it.active? }
+ item = incomplete.find { |i| !i.active? }
expect(item).not_to be_nil # just to be sure
patch lending_update_path(directory: item.directory), params: { item: { active: true, copies: 17 } }
@@ -181,7 +183,7 @@ def available
expect(response.body).to include('Item now active.')
item.reload
- expect(item.active?).to eq(true)
+ expect(item.active?).to be(true)
end
it 'is successful for an already active item' do
@@ -192,7 +194,7 @@ def available
expect(response.body).to include('Item already active.')
item.reload
- expect(item.active?).to eq(true)
+ expect(item.active?).to be(true)
end
it 'defaults to 1 copy for an item with zero copies' do
@@ -205,7 +207,7 @@ def available
expect(response.body).to include('Item now active.')
item.reload
- expect(item.active?).to eq(true)
+ expect(item.active?).to be(true)
expect(item.copies).to eq(1)
end
@@ -226,7 +228,7 @@ def available
expect(response.body).to include('Item now inactive.')
item.reload
- expect(item.active?).to eq(false)
+ expect(item.active?).to be(false)
end
it 'is successful even for an already inactive item' do
@@ -240,7 +242,7 @@ def available
expect(response.body).to include('Item already inactive.')
item.reload
- expect(item.active?).to eq(false)
+ expect(item.active?).to be(false)
end
it 'makes any checkouts inactive' do
@@ -251,7 +253,7 @@ def available
expect(response.body).to include('Item now inactive.')
loan.reload
- expect(loan.active?).to eq(false)
+ expect(loan.active?).to be(false)
expect(item.loans.active).to be_empty
end
@@ -350,7 +352,7 @@ def available
end
it 'shows an error for items without MARC metadata' do
- item = incomplete.find { |it| !it.iiif_directory.marc_record? }
+ item = incomplete.find { |i| !i.iiif_directory.marc_record? }
expect(item).not_to be_nil # just to be sure
get lending_reload_path(directory: item.directory)
@@ -370,7 +372,7 @@ def available
expect(Item.count).to eq(0) # just to be sure
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object({}) do |fn, items|
- items[fn] = build(fn).tap { |it| it.save!(validate: false) }
+ items[fn] = build(fn).tap { |i| i.save!(validate: false) }
end
@item = available.first
end
@@ -438,8 +440,8 @@ def available
due_date:
)
loan.reload
- expect(loan.complete?).to eq(true)
- expect(loan.active?).to eq(false)
+ expect(loan.complete?).to be(true)
+ expect(loan.active?).to be(false)
expect do
get lending_view_path(directory: item.directory)
@@ -519,7 +521,7 @@ def available
context 'checkout limits' do
before do
# make sure we actually have multiple possible checkouts
- inactive.each { |it| it.update!(copies: 2, active: true) }
+ inactive.each { |i| i.update!(copies: 2, active: true) }
end
it 'fails if this user has already hit the checkout limit' do
@@ -702,7 +704,7 @@ def available
get lending_activate_path(directory: item.directory)
item.reload
- expect(item.active).to eq(false)
+ expect(item.active).to be(false)
end
it 'returns 403 forbidden even for nonexistent items' do
@@ -717,7 +719,7 @@ def available
expect(response.status).to eq(403)
item.reload
- expect(item.active).to eq(true)
+ expect(item.active).to be(true)
end
it 'returns 403 forbidden even for nonexistent items' do
diff --git a/spec/request/sessions_request_spec.rb b/spec/request/sessions_request_spec.rb
index 29a3ee6..c741f5f 100644
--- a/spec/request/sessions_request_spec.rb
+++ b/spec/request/sessions_request_spec.rb
@@ -33,7 +33,7 @@
mock_login(:staff)
counter = SessionCounter.find_by(uid:)
- expect(counter.staff?).to eq(true)
+ expect(counter.staff?).to be(true)
expect(counter.count).to eq(count_before + 1)
end
diff --git a/spec/request/stats_request_spec.rb b/spec/request/stats_request_spec.rb
index a674e2d..afab647 100644
--- a/spec/request/stats_request_spec.rb
+++ b/spec/request/stats_request_spec.rb
@@ -67,7 +67,7 @@
it 'generates a profile' do
get stats_profile_path
- expect(File.exist?(profile_file)).to eq(true)
+ expect(File.exist?(profile_file)).to be(true)
get "/#{StatsController::PROFILE_STATS_HTML}"
expect(response).to be_successful
diff --git a/spec/requests/exception_handling_spec.rb b/spec/requests/exception_handling_spec.rb
index 660e603..b6f01ee 100644
--- a/spec/requests/exception_handling_spec.rb
+++ b/spec/requests/exception_handling_spec.rb
@@ -34,7 +34,7 @@
after { logout! }
it 'returns 404 not found for JSON requests' do
- expected_msg = "Couldn't find Item with 'id'=#{bad_id}"
+ expected_msg = "Couldn't find Item with 'id'=\"#{bad_id}\""
get item_url(id: bad_id), as: :json
expect_json_error(:not_found, expected_msg)
diff --git a/spec/requests/items_spec.rb b/spec/requests/items_spec.rb
index 64412e7..78c88e3 100644
--- a/spec/requests/items_spec.rb
+++ b/spec/requests/items_spec.rb
@@ -23,7 +23,7 @@ def expected_json(item)
context 'without credentials' do
before do
- %i[complete_item active_item].each { |it| create(it) }
+ %i[complete_item active_item].each { |i| create(i) }
end
describe 'GET /index' do
@@ -45,7 +45,7 @@ def expected_json(item)
context 'with patron credentials' do
before do
- %i[complete_item active_item].each { |it| create(it) }
+ %i[complete_item active_item].each { |i| create(i) }
mock_login(:student)
end
@@ -128,17 +128,17 @@ def expected_json(item)
before do
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object([]) do |fn, items|
- items << build(fn).tap { |it| it.save!(validate: false) }
+ items << build(fn).tap { |i| i.save!(validate: false) }
end
@term_fall_2021 = create(:term_fall_2021)
@term_spring_2022 = create(:term_spring_2022)
- items.each_with_index do |it, ix|
- expect(it.terms).to be_empty # just to be sure
+ items.each_with_index do |i, ix|
+ expect(i.terms).to be_empty # just to be sure
term = ix.even? ? term_fall_2021 : term_spring_2022
- it.terms << term
+ i.terms << term
end
end
@@ -150,7 +150,7 @@ def expected_json(item)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_an(Array)
- expected_items = Item.order(:title)
+ expected_items = Item.order(:title).first(Pagy.options[:limit])
expect(parsed_response.size).to eq(expected_items.size)
expected_items.each_with_index do |item, i|
@@ -167,7 +167,7 @@ def expected_json(item)
expect(parsed_response).to be_an(Array)
expected_items = Item.complete
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
expect(parsed_response.size).to eq(expected_items.size)
# noinspection RubyUnusedLocalVariable
@@ -185,7 +185,7 @@ def expected_json(item)
expect(parsed_response).to be_an(Array)
expected_items = Item.incomplete
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
expect(parsed_response.size).to eq(expected_items.size)
# noinspection RubyUnusedLocalVariable
@@ -203,7 +203,7 @@ def expected_json(item)
expect(parsed_response).to be_an(Array)
expected_items = Item.where(active: true)
- expect(expected_items.exists?).to eq(true) # just to be sure
+ expect(expected_items.exists?).to be(true) # just to be sure
expect(parsed_response.size).to eq(expected_items.count)
# noinspection RubyUnusedLocalVariable
@@ -221,7 +221,7 @@ def expected_json(item)
expect(parsed_response).to be_an(Array)
expected_items = Item.where(active: false)
- expect(expected_items.exists?).to eq(true) # just to be sure
+ expect(expected_items.exists?).to be(true) # just to be sure
expect(parsed_response.size).to eq(expected_items.count)
# noinspection RubyUnusedLocalVariable
@@ -239,7 +239,7 @@ def expected_json(item)
expect(parsed_response).to be_an(Array)
expected_items = Item.inactive.complete
- expect(expected_items.any?).to eq(true) # just to be sure
+ expect(expected_items.any?).to be(true) # just to be sure
expect(parsed_response.size).to eq(expected_items.count)
# noinspection RubyUnusedLocalVariable
@@ -340,7 +340,7 @@ def expected_json(item)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -367,7 +367,7 @@ def expected_json(item)
expect(response).to be_successful
end
- it 'will not delete a complete item' do
+ it 'does not delete a complete item' do
item = create(:complete_item)
expect do
@@ -380,7 +380,7 @@ def expected_json(item)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -449,7 +449,7 @@ def expected_json(item)
expect(result['path']).to eq(l.to_s)
expect(result['directory']).to eq(directory)
- expect(result['exists']).to eq(true)
+ expect(result['exists']).to be(true)
actual_mtime = Time.parse(result['mtime'])
expect(actual_mtime).to be_within(1.second).of(l.mtime)
diff --git a/spec/requests/terms_spec.rb b/spec/requests/terms_spec.rb
index 306f7b0..11f3508 100644
--- a/spec/requests/terms_spec.rb
+++ b/spec/requests/terms_spec.rb
@@ -209,7 +209,7 @@ def expected_json(term)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -253,7 +253,7 @@ def expected_json(term)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -361,7 +361,7 @@ def expected_json(term)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -398,7 +398,6 @@ def expected_json(term)
expect(Settings.default_term).to eq(term)
end
- # rubocop:disable RSpec/ExampleLength
it 'does not accept duplicate names' do
terms = Term.all
expect(terms.size).to be > 1 # just to be sure
@@ -425,7 +424,7 @@ def expected_json(term)
parsed_response = JSON.parse(response.body)
expect(parsed_response).to be_a(Hash)
- expect(parsed_response['success']).to eq(false)
+ expect(parsed_response['success']).to be(false)
parsed_error = parsed_response['error']
expect(parsed_error).to be_a(Hash)
@@ -437,7 +436,6 @@ def expected_json(term)
expect(messages.first).to match(expected_msg_re)
end
end
- # rubocop:enable RSpec/ExampleLength
describe :destroy do
it 'deletes a term' do
diff --git a/spec/system/exception_handling_system_spec.rb b/spec/system/exception_handling_system_spec.rb
index a937108..b6748b8 100644
--- a/spec/system/exception_handling_system_spec.rb
+++ b/spec/system/exception_handling_system_spec.rb
@@ -31,9 +31,7 @@
before do
user = instance_double(User)
- allow(user).to receive(:authenticated?).and_return(true)
- allow(user).to receive(:uid).and_return('12345')
- allow(user).to receive(:ucb_student?).and_return(true)
+ allow(user).to receive_messages(authenticated?: true, uid: '12345', ucb_student?: true)
%i[ucb_staff? ucb_faculty? lending_admin?].each do |m|
allow(user).to receive(m).and_return(false)
end
@@ -42,7 +40,7 @@
end
it 'returns 404 not found for JSON requests' do
- expected_msg = "Couldn't find Item with 'id'=#{bad_id}"
+ expected_msg = "Couldn't find Item with 'id'=\"#{bad_id}\""
raw_get item_url(id: bad_id), as: :json
expect_json_error(:not_found, expected_msg)
diff --git a/spec/system/items_system_spec.rb b/spec/system/items_system_spec.rb
index 382417d..d4a0124 100644
--- a/spec/system/items_system_spec.rb
+++ b/spec/system/items_system_spec.rb
@@ -18,7 +18,7 @@
before do
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object([]) do |fn, items|
- items << build(fn).tap { |it| it.save!(validate: false) }
+ items << build(fn).tap { |i| i.save!(validate: false) }
end
end
@@ -32,7 +32,7 @@
it 'displays the items' do
visit items_path
- expected_count = [Item.count, Pagy::DEFAULT[:items]].min
+ expected_count = [Item.count, Pagy.options[:limit]].min
expected_items = Item.take(expected_count)
expect(expected_items).not_to be_empty
diff --git a/spec/system/lending_system_spec.rb b/spec/system/lending_system_spec.rb
index 91928b1..9366fcd 100644
--- a/spec/system/lending_system_spec.rb
+++ b/spec/system/lending_system_spec.rb
@@ -119,7 +119,7 @@ def expect_target(link_or_button, target)
expect(Item.count).to eq(0) # just to be sure
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object({}) do |fn, items|
- items[fn] = build(fn).tap { |it| it.save!(validate: false) }
+ items[fn] = build(fn).tap { |i| i.save!(validate: false) }
end
@item = active.first
@@ -140,17 +140,17 @@ def expect_target(link_or_button, target)
before do
@alma_items = []
- Item.find_each do |it|
- sru_data_path = sru_data_path_for(it.record_id)
+ Item.find_each do |i|
+ sru_data_path = sru_data_path_for(i.record_id)
next unless File.exist?(sru_data_path)
- stub_sru_request(it.record_id)
- alma_items << it
+ stub_sru_request(i.record_id)
+ alma_items << i
end
end
it 'displays all due dates' do
- item = active.find { |it| it.copies > 1 }
+ item = active.find { |i| i.copies > 1 }
loans = item.copies.times.with_object([]) do |i, ll|
loan = item.check_out_to!("patron-#{i}")
loan.due_date = loan.due_date + i.days # just to differentiate
@@ -271,7 +271,7 @@ def expect_target(link_or_button, target)
expect(Item.count).to eq(0) # just to be sure
# NOTE: we're deliberately not validating here, because we want some invalid items
@items = factory_names.each_with_object({}) do |fn, items|
- items[fn] = build(fn).tap { |it| it.save!(validate: false) }
+ items[fn] = build(fn).tap { |i| i.save!(validate: false) }
end
end
@@ -420,7 +420,8 @@ def expect_target(link_or_button, target)
end
# TODO: figure out what we really intended here
- xit 'updates the user token from the URL' do
+ it 'updates the user token from the URL' do
+ skip('Need to figure out what is intended')
original_user = user
item.check_out_to(original_user.borrower_id)
diff --git a/spec/system/terms_system_spec.rb b/spec/system/terms_system_spec.rb
index ae5b9b6..b98ee8e 100644
--- a/spec/system/terms_system_spec.rb
+++ b/spec/system/terms_system_spec.rb
@@ -293,7 +293,7 @@ def expect_no_updated_at(term)
button.click
expect_no_name_field(term)
- expect(Term.exists?(term.id)).to eq(false)
+ expect(Term.exists?(term.id)).to be(false)
expect_alert('success', 'Term deleted.')
end
@@ -318,7 +318,7 @@ def expect_no_updated_at(term)
button.click
end
expect_no_name_field(term)
- expect(Term.exists?(term.id)).to eq(false)
+ expect(Term.exists?(term.id)).to be(false)
expect(item.terms).not_to exist
end
@@ -331,7 +331,7 @@ def expect_no_updated_at(term)
end
expect_name_field(term)
- expect(Term.exists?(term.id)).to eq(true)
+ expect(Term.exists?(term.id)).to be(true)
expect(item.terms).to include(term)
end
end
diff --git a/yarn.lock b/yarn.lock
index c7e9028..5d2bf47 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7,30 +7,30 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
- integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
+"@babel/helper-validator-identifier@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
+ integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
"@babel/parser@^7.23.5":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8"
- integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
+ integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
dependencies:
- "@babel/types" "^7.28.4"
+ "@babel/types" "^7.29.0"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326"
- integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.21.0", "@babel/runtime@^7.28.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b"
+ integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==
-"@babel/types@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a"
- integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==
+"@babel/types@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
"@blueprintjs/colors@^4.2.1":
version "4.2.1"
@@ -81,16 +81,16 @@
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
- version "4.9.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3"
- integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
+ integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
dependencies:
eslint-visitor-keys "^3.4.3"
"@eslint-community/regexpp@^4.6.1":
- version "4.12.1"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
- integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
+ version "4.12.2"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
+ integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
@@ -140,9 +140,9 @@
warning "^4.0.3"
"@iiif/vocabulary@^1.0.28":
- version "1.0.30"
- resolved "https://registry.yarnpkg.com/@iiif/vocabulary/-/vocabulary-1.0.30.tgz#92fabd1030568156783c875b9d2ed1c9ef816c48"
- integrity sha512-oI0W8mzLU4krXwE0oG/49OpU4pVmJgxTksDzIbbx05epU6eDbfDPaXc18dm4FbiqivHLOK4exS8dIBtf7zHSzA==
+ version "1.0.31"
+ resolved "https://registry.yarnpkg.com/@iiif/vocabulary/-/vocabulary-1.0.31.tgz#49d3aa005468469b8235e2bee8107b5824bd4a61"
+ integrity sha512-j2Y/WKRgyHGO7VkQYg2JPJk6XSdYcZ51J/NHnMygeOAo7rSLVHT9B97+tYlYMqV3Z7EBpXID/zeS5Gn12cyUAA==
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.13"
@@ -178,35 +178,143 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jsonjoy.com/base64@17.67.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-17.67.0.tgz#7eeda3cb41138d77a90408fd2e42b2aba10576d7"
+ integrity sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==
+
"@jsonjoy.com/base64@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578"
integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==
-"@jsonjoy.com/buffers@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz#ade6895b7d3883d70f87b5743efaa12c71dfef7a"
- integrity sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==
+"@jsonjoy.com/buffers@17.67.0", "@jsonjoy.com/buffers@^17.65.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz#5c58dbcdeea8824ce296bd1cfce006c2eb167b3d"
+ integrity sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==
+
+"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83"
+ integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==
+
+"@jsonjoy.com/codegen@17.67.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz#3635fd8769d77e19b75dc5574bc9756019b2e591"
+ integrity sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==
"@jsonjoy.com/codegen@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207"
integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==
+"@jsonjoy.com/fs-core@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz#320728b4b7bef63abb60e7630351623899237411"
+ integrity sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==
+ dependencies:
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ thingies "^2.5.0"
+
+"@jsonjoy.com/fs-fsa@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz#02bac88c4968ddf2effbd7452861aaed60ba3557"
+ integrity sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==
+ dependencies:
+ "@jsonjoy.com/fs-core" "4.56.10"
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ thingies "^2.5.0"
+
+"@jsonjoy.com/fs-node-builtins@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz#a32a5bcb093f8b34a99aa8957e993a52ec316662"
+ integrity sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==
+
+"@jsonjoy.com/fs-node-to-fsa@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz#33fc503e50d283ac5fc510e3accced7fccecf2f4"
+ integrity sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==
+ dependencies:
+ "@jsonjoy.com/fs-fsa" "4.56.10"
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+
+"@jsonjoy.com/fs-node-utils@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz#788e95052aa99744f6e8e55b5098afc203df2b9e"
+ integrity sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==
+ dependencies:
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+
+"@jsonjoy.com/fs-node@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz#70b18bfaf14544a9820d2016e913dde12c6de991"
+ integrity sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==
+ dependencies:
+ "@jsonjoy.com/fs-core" "4.56.10"
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ "@jsonjoy.com/fs-print" "4.56.10"
+ "@jsonjoy.com/fs-snapshot" "4.56.10"
+ glob-to-regex.js "^1.0.0"
+ thingies "^2.5.0"
+
+"@jsonjoy.com/fs-print@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz#7c181b9aefcc1b268be0e6233bff26310c355335"
+ integrity sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==
+ dependencies:
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ tree-dump "^1.1.0"
+
+"@jsonjoy.com/fs-snapshot@4.56.10":
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz#05aadd2c0eaa855b13d6cb17d29b7c8cee239c8c"
+ integrity sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==
+ dependencies:
+ "@jsonjoy.com/buffers" "^17.65.0"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ "@jsonjoy.com/json-pack" "^17.65.0"
+ "@jsonjoy.com/util" "^17.65.0"
+
"@jsonjoy.com/json-pack@^1.11.0":
- version "1.14.0"
- resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.14.0.tgz#eda5255ccdaeafb3aa811ff1ae4814790b958b4f"
- integrity sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==
+ version "1.21.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa"
+ integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==
dependencies:
"@jsonjoy.com/base64" "^1.1.2"
- "@jsonjoy.com/buffers" "^1.0.0"
+ "@jsonjoy.com/buffers" "^1.2.0"
"@jsonjoy.com/codegen" "^1.0.0"
- "@jsonjoy.com/json-pointer" "^1.0.1"
+ "@jsonjoy.com/json-pointer" "^1.0.2"
"@jsonjoy.com/util" "^1.9.0"
hyperdyperid "^1.2.0"
thingies "^2.5.0"
+ tree-dump "^1.1.0"
+
+"@jsonjoy.com/json-pack@^17.65.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz#8dd8ff65dd999c5d4d26df46c63915c7bdec093a"
+ integrity sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==
+ dependencies:
+ "@jsonjoy.com/base64" "17.67.0"
+ "@jsonjoy.com/buffers" "17.67.0"
+ "@jsonjoy.com/codegen" "17.67.0"
+ "@jsonjoy.com/json-pointer" "17.67.0"
+ "@jsonjoy.com/util" "17.67.0"
+ hyperdyperid "^1.2.0"
+ thingies "^2.5.0"
+ tree-dump "^1.1.0"
+
+"@jsonjoy.com/json-pointer@17.67.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz#74439573dc046e0c9a3a552fb94b391bc75313b8"
+ integrity sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==
+ dependencies:
+ "@jsonjoy.com/util" "17.67.0"
-"@jsonjoy.com/json-pointer@^1.0.1":
+"@jsonjoy.com/json-pointer@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408"
integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==
@@ -214,6 +322,14 @@
"@jsonjoy.com/codegen" "^1.0.0"
"@jsonjoy.com/util" "^1.9.0"
+"@jsonjoy.com/util@17.67.0", "@jsonjoy.com/util@^17.65.0":
+ version "17.67.0"
+ resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-17.67.0.tgz#7c4288fc3808233e55c7610101e7bb4590cddd3f"
+ integrity sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==
+ dependencies:
+ "@jsonjoy.com/buffers" "17.67.0"
+ "@jsonjoy.com/codegen" "17.67.0"
+
"@jsonjoy.com/util@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46"
@@ -314,6 +430,11 @@
prop-types "^15.7.2"
react-is "^16.8.0 || ^17.0.0"
+"@noble/hashes@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426"
+ integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -335,94 +456,217 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@parcel/watcher-android-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
- integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
-
-"@parcel/watcher-darwin-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
- integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
-
-"@parcel/watcher-darwin-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
- integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
-
-"@parcel/watcher-freebsd-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
- integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
-
-"@parcel/watcher-linux-arm-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
- integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
-
-"@parcel/watcher-linux-arm-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
- integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
-
-"@parcel/watcher-linux-arm64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
- integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
-
-"@parcel/watcher-linux-arm64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
- integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
-
-"@parcel/watcher-linux-x64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
- integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
-
-"@parcel/watcher-linux-x64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
- integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
-
-"@parcel/watcher-win32-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
- integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
-
-"@parcel/watcher-win32-ia32@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
- integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
-
-"@parcel/watcher-win32-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
- integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
+"@parcel/watcher-android-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564"
+ integrity sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==
+
+"@parcel/watcher-darwin-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz#88d3e720b59b1eceffce98dac46d7c40e8be5e8e"
+ integrity sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==
+
+"@parcel/watcher-darwin-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz#bf05d76a78bc15974f15ec3671848698b0838063"
+ integrity sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==
+
+"@parcel/watcher-freebsd-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz#8bc26e9848e7303ac82922a5ae1b1ef1bdb48a53"
+ integrity sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==
+
+"@parcel/watcher-linux-arm-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz#1328fee1deb0c2d7865079ef53a2ba4cc2f8b40a"
+ integrity sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==
+
+"@parcel/watcher-linux-arm-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz#bad0f45cb3e2157746db8b9d22db6a125711f152"
+ integrity sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz#b75913fbd501d9523c5f35d420957bf7d0204809"
+ integrity sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==
+
+"@parcel/watcher-linux-arm64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz#da5621a6a576070c8c0de60dea8b46dc9c3827d4"
+ integrity sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==
+
+"@parcel/watcher-linux-x64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz#ce437accdc4b30f93a090b4a221fd95cd9b89639"
+ integrity sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==
+
+"@parcel/watcher-linux-x64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz#02400c54b4a67efcc7e2327b249711920ac969e2"
+ integrity sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==
+
+"@parcel/watcher-win32-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz#caae3d3c7583ca0a7171e6bd142c34d20ea1691e"
+ integrity sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==
+
+"@parcel/watcher-win32-ia32@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz#9ac922550896dfe47bfc5ae3be4f1bcaf8155d6d"
+ integrity sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==
+
+"@parcel/watcher-win32-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz#73fdafba2e21c448f0e456bbe13178d8fe11739d"
+ integrity sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==
"@parcel/watcher@^2.4.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
- integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.6.tgz#3f932828c894f06d0ad9cfefade1756ecc6ef1f1"
+ integrity sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==
dependencies:
- detect-libc "^1.0.3"
+ detect-libc "^2.0.3"
is-glob "^4.0.3"
- micromatch "^4.0.5"
node-addon-api "^7.0.0"
+ picomatch "^4.0.3"
optionalDependencies:
- "@parcel/watcher-android-arm64" "2.5.1"
- "@parcel/watcher-darwin-arm64" "2.5.1"
- "@parcel/watcher-darwin-x64" "2.5.1"
- "@parcel/watcher-freebsd-x64" "2.5.1"
- "@parcel/watcher-linux-arm-glibc" "2.5.1"
- "@parcel/watcher-linux-arm-musl" "2.5.1"
- "@parcel/watcher-linux-arm64-glibc" "2.5.1"
- "@parcel/watcher-linux-arm64-musl" "2.5.1"
- "@parcel/watcher-linux-x64-glibc" "2.5.1"
- "@parcel/watcher-linux-x64-musl" "2.5.1"
- "@parcel/watcher-win32-arm64" "2.5.1"
- "@parcel/watcher-win32-ia32" "2.5.1"
- "@parcel/watcher-win32-x64" "2.5.1"
+ "@parcel/watcher-android-arm64" "2.5.6"
+ "@parcel/watcher-darwin-arm64" "2.5.6"
+ "@parcel/watcher-darwin-x64" "2.5.6"
+ "@parcel/watcher-freebsd-x64" "2.5.6"
+ "@parcel/watcher-linux-arm-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm-musl" "2.5.6"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm64-musl" "2.5.6"
+ "@parcel/watcher-linux-x64-glibc" "2.5.6"
+ "@parcel/watcher-linux-x64-musl" "2.5.6"
+ "@parcel/watcher-win32-arm64" "2.5.6"
+ "@parcel/watcher-win32-ia32" "2.5.6"
+ "@parcel/watcher-win32-x64" "2.5.6"
+
+"@peculiar/asn1-cms@^2.6.0", "@peculiar/asn1-cms@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz#cb5445c1bad9197d176073bf142a5c035b460640"
+ integrity sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ "@peculiar/asn1-x509-attr" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-csr@^2.6.0":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz#9629d403bc5a61254f28ed0b90e99cee61c0e8be"
+ integrity sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-ecc@^2.6.0":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz#d29c4af671508a9934edc78e7c9419fbf7bc9870"
+ integrity sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-pfx@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz#75cddd14d43ef875109e91ea150377d679c8fbc1"
+ integrity sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==
+ dependencies:
+ "@peculiar/asn1-cms" "^2.6.1"
+ "@peculiar/asn1-pkcs8" "^2.6.1"
+ "@peculiar/asn1-rsa" "^2.6.1"
+ "@peculiar/asn1-schema" "^2.6.0"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-pkcs8@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz#bd56b4bb9e8a3702369049713a89134c87c6931a"
+ integrity sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-pkcs9@^2.6.0":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz#ddc5222952f25b59a0562a6f8cabdb72f586a496"
+ integrity sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==
+ dependencies:
+ "@peculiar/asn1-cms" "^2.6.1"
+ "@peculiar/asn1-pfx" "^2.6.1"
+ "@peculiar/asn1-pkcs8" "^2.6.1"
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ "@peculiar/asn1-x509-attr" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-rsa@^2.6.0", "@peculiar/asn1-rsa@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz#2cdf9f9ea6d6fdbaae214b9fed6de0534b654437"
+ integrity sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-schema@^2.6.0":
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz#0dca1601d5b0fed2a72fed7a5f1d0d7dbe3a6f82"
+ integrity sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==
+ dependencies:
+ asn1js "^3.0.6"
+ pvtsutils "^1.3.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-x509-attr@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz#6425008b8099476010aace5b8ae9f9cbc41db0ab"
+ integrity sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.1"
+ asn1js "^3.0.6"
+ tslib "^2.8.1"
+
+"@peculiar/asn1-x509@^2.6.0", "@peculiar/asn1-x509@^2.6.1":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz#4e8995659e16178e0e90fe90519aa269045af262"
+ integrity sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.6.0"
+ asn1js "^3.0.6"
+ pvtsutils "^1.3.6"
+ tslib "^2.8.1"
+
+"@peculiar/x509@^1.14.2":
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.14.3.tgz#2c44c2b89474346afec38a0c2803ec4fb8ce959e"
+ integrity sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==
+ dependencies:
+ "@peculiar/asn1-cms" "^2.6.0"
+ "@peculiar/asn1-csr" "^2.6.0"
+ "@peculiar/asn1-ecc" "^2.6.0"
+ "@peculiar/asn1-pkcs9" "^2.6.0"
+ "@peculiar/asn1-rsa" "^2.6.0"
+ "@peculiar/asn1-schema" "^2.6.0"
+ "@peculiar/asn1-x509" "^2.6.0"
+ pvtsutils "^1.3.6"
+ reflect-metadata "^0.2.2"
+ tslib "^2.8.1"
+ tsyringe "^4.10.0"
"@react-dnd/asap@^4.0.0":
version "4.0.1"
@@ -439,48 +683,48 @@
resolved "https://registry.yarnpkg.com/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz#a3031eb54129f2c66b2753f8404266ec7bf67f0a"
integrity sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==
-"@redux-saga/core@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.3.0.tgz#2ce08b73d407fc6ea9e7f7d83d2e97d981a3a8b8"
- integrity sha512-L+i+qIGuyWn7CIg7k1MteHGfttKPmxwZR5E7OsGikCL2LzYA0RERlaUY00Y3P3ZV2EYgrsYlBrGs6cJP5OKKqA==
- dependencies:
- "@babel/runtime" "^7.6.3"
- "@redux-saga/deferred" "^1.2.1"
- "@redux-saga/delay-p" "^1.2.1"
- "@redux-saga/is" "^1.1.3"
- "@redux-saga/symbols" "^1.1.3"
- "@redux-saga/types" "^1.2.1"
+"@redux-saga/core@^1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.4.2.tgz#7d64721b490c2ed88eb8b07a45074a428d5076d6"
+ integrity sha512-nIMLGKo6jV6Wc1sqtVQs1iqbB3Kq20udB/u9XEaZQisT6YZ0NRB8+4L6WqD/E+YziYutd27NJbG8EWUPkb7c6Q==
+ dependencies:
+ "@babel/runtime" "^7.28.4"
+ "@redux-saga/deferred" "^1.3.1"
+ "@redux-saga/delay-p" "^1.3.1"
+ "@redux-saga/is" "^1.2.1"
+ "@redux-saga/symbols" "^1.2.1"
+ "@redux-saga/types" "^1.3.1"
typescript-tuple "^2.2.1"
-"@redux-saga/deferred@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.2.1.tgz#aca373a08ccafd6f3481037f2f7ee97f2c87c3ec"
- integrity sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g==
+"@redux-saga/deferred@^1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.3.1.tgz#f274c9df9a1e8b837dc912188fff3dfdf7fd24e8"
+ integrity sha512-0YZ4DUivWojXBqLB/TmuRRpDDz7tyq1I0AuDV7qi01XlLhM5m51W7+xYtIckH5U2cMlv9eAuicsfRAi1XHpXIg==
-"@redux-saga/delay-p@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.2.1.tgz#e72ac4731c5080a21f75b61bedc31cb639d9e446"
- integrity sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w==
+"@redux-saga/delay-p@^1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.3.1.tgz#c2d481de63c1ef674c1cddab538992c39375855e"
+ integrity sha512-597I7L5MXbD/1i3EmcaOOjL/5suxJD7p5tnbV1PiWnE28c2cYiIHqmSMK2s7us2/UrhOL2KTNBiD0qBg6KnImg==
dependencies:
- "@redux-saga/symbols" "^1.1.3"
+ "@redux-saga/symbols" "^1.2.1"
-"@redux-saga/is@^1.1.3":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.3.tgz#b333f31967e87e32b4e6b02c75b78d609dd4ad73"
- integrity sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q==
+"@redux-saga/is@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.2.1.tgz#5fe101fcb365236577f5a8c625e4c0a3c2eab736"
+ integrity sha512-x3aWtX3GmQfEvn8dh0ovPbsXgK9JjpiR24wKztpGbZP8JZUWWvUgKrvnWZ/T/4iphOBftyVc9VrIwhAnsM+OFA==
dependencies:
- "@redux-saga/symbols" "^1.1.3"
- "@redux-saga/types" "^1.2.1"
+ "@redux-saga/symbols" "^1.2.1"
+ "@redux-saga/types" "^1.3.1"
-"@redux-saga/symbols@^1.1.3":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.3.tgz#b731d56201719e96dc887dc3ae9016e761654367"
- integrity sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg==
-
-"@redux-saga/types@^1.2.1":
+"@redux-saga/symbols@^1.2.1":
version "1.2.1"
- resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8"
- integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==
+ resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.2.1.tgz#48b6137ac47d3a3a93b847f1850c86fb461e0012"
+ integrity sha512-3dh+uDvpBXi7EUp/eO+N7eFM4xKaU4yuGBXc50KnZGzIrR/vlvkTFQsX13zsY8PB6sCFYAgROfPSRUj8331QSA==
+
+"@redux-saga/types@^1.3.1":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.3.1.tgz#7cda9b29dca868a9689a7105aec7c21d54575489"
+ integrity sha512-YRCrJdhQLobGIQ8Cj1sta3nn6DrZDTSUnrIYhS2e5V590BmfVDleKoAquclAiKSBKWJwmuXTb+b4BL6rSHnahw==
"@researchgate/react-intersection-observer@^1.0.0":
version "1.3.5"
@@ -549,9 +793,9 @@
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
- version "5.0.7"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6"
- integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa"
+ integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -559,9 +803,9 @@
"@types/send" "*"
"@types/express-serve-static-core@^4.17.21", "@types/express-serve-static-core@^4.17.33":
- version "4.19.6"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267"
- integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==
+ version "4.19.8"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f"
+ integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -569,23 +813,23 @@
"@types/send" "*"
"@types/express@*":
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956"
- integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.6.tgz#2d724b2c990dcb8c8444063f3580a903f6d500cc"
+ integrity sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^5.0.0"
- "@types/serve-static" "*"
+ "@types/serve-static" "^2"
-"@types/express@^4.17.21":
- version "4.17.23"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef"
- integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==
+"@types/express@^4.17.25":
+ version "4.17.25"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b"
+ integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.33"
"@types/qs" "*"
- "@types/serve-static" "*"
+ "@types/serve-static" "^1"
"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1":
version "3.3.7"
@@ -600,9 +844,9 @@
integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==
"@types/http-proxy@^1.17.8":
- version "1.17.16"
- resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240"
- integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==
+ version "1.17.17"
+ resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.17.tgz#d9e2c4571fe3507343cb210cd41790375e59a533"
+ integrity sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==
dependencies:
"@types/node" "*"
@@ -621,19 +865,12 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
-"@types/node-forge@^1.3.0":
- version "1.3.14"
- resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.14.tgz#006c2616ccd65550560c2757d8472eb6d3ecea0b"
- integrity sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==
- dependencies:
- "@types/node" "*"
-
"@types/node@*":
- version "24.5.1"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.1.tgz#dab6917c47113eb4502d27d06e89a407ec0eff95"
- integrity sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==
+ version "25.3.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-25.3.0.tgz#749b1bd4058e51b72e22bd41e9eab6ebd0180470"
+ integrity sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==
dependencies:
- undici-types "~7.12.0"
+ undici-types "~7.18.0"
"@types/qs@*":
version "6.14.0"
@@ -661,11 +898,11 @@
integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==
"@types/react@*":
- version "19.1.13"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.13.tgz#fc650ffa680d739a25a530f5d7ebe00cdd771883"
- integrity sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==
+ version "19.2.14"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad"
+ integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==
dependencies:
- csstype "^3.0.2"
+ csstype "^3.2.2"
"@types/retry@0.12.2":
version "0.12.2"
@@ -673,9 +910,16 @@
integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==
"@types/send@*":
- version "0.17.5"
- resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74"
- integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74"
+ integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/send@<1":
+ version "0.17.6"
+ resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25"
+ integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==
dependencies:
"@types/mime" "^1"
"@types/node" "*"
@@ -687,14 +931,22 @@
dependencies:
"@types/express" "*"
-"@types/serve-static@*", "@types/serve-static@^1.15.5":
- version "1.15.8"
- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877"
- integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==
+"@types/serve-static@^1", "@types/serve-static@^1.15.5":
+ version "1.15.10"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee"
+ integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==
+ dependencies:
+ "@types/http-errors" "*"
+ "@types/node" "*"
+ "@types/send" "<1"
+
+"@types/serve-static@^2":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-2.2.0.tgz#d4a447503ead0d1671132d1ab6bd58b805d8de6a"
+ integrity sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==
dependencies:
"@types/http-errors" "*"
"@types/node" "*"
- "@types/send" "*"
"@types/sockjs@^0.3.36":
version "0.3.36"
@@ -895,7 +1147,7 @@ abort-controller@^3.0.0:
dependencies:
event-target-shim "^5.0.0"
-accepts@~1.3.4, accepts@~1.3.8:
+accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@@ -914,9 +1166,9 @@ acorn-jsx@^5.3.2:
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.15.0, acorn@^8.9.0:
- version "8.15.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
- integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
+ version "8.16.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
+ integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
ajv-formats@^2.1.1:
version "2.1.1"
@@ -933,9 +1185,9 @@ ajv-keywords@^5.1.0:
fast-deep-equal "^3.1.3"
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==
+ version "6.14.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a"
+ integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -943,9 +1195,9 @@ ajv@^6.12.4:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.9.0:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
- integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
+ integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
dependencies:
fast-deep-equal "^3.1.3"
fast-uri "^3.0.1"
@@ -1064,6 +1316,15 @@ asn1.js@^4.10.1:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
+asn1js@^3.0.6:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.7.tgz#15f1f2f59e60f80d5b43ef14047a294a969f824f"
+ integrity sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==
+ dependencies:
+ pvtsutils "^1.3.6"
+ pvutils "^1.1.3"
+ tslib "^2.8.1"
+
assert@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd"
@@ -1093,12 +1354,12 @@ available-typed-arrays@^1.0.7:
possible-typed-array-names "^1.0.0"
axios@^1.4.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7"
- integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==
+ version "1.13.5"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43"
+ integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==
dependencies:
- follow-redirects "^1.15.6"
- form-data "^4.0.4"
+ follow-redirects "^1.15.11"
+ form-data "^4.0.5"
proxy-from-env "^1.1.0"
balanced-match@^1.0.0:
@@ -1111,10 +1372,10 @@ base64-js@^1.3.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-baseline-browser-mapping@^2.8.3:
- version "2.8.5"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.5.tgz#3147fe6b01a0c49ce1952daebcfc2057fc43fedb"
- integrity sha512-TiU4qUT9jdCuh4aVOG7H1QozyeI2sZRqoRPdqBIaslfNt4WUSanRBueAwl2x5jt4rXBMim3lIN2x6yT8PDi24Q==
+baseline-browser-mapping@^2.10.0, baseline-browser-mapping@^2.9.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9"
+ integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==
batch-processor@1.0.0:
version "1.0.0"
@@ -1142,32 +1403,32 @@ bluebird@^3.1.1:
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
- version "4.12.2"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99"
- integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==
+ version "4.12.3"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.3.tgz#2cc2c679188eb35b006f2d0d4710bed8437a769e"
+ integrity sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==
-bn.js@^5.2.1:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566"
- integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==
+bn.js@^5.2.1, bn.js@^5.2.2:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.3.tgz#16a9e409616b23fef3ccbedb8d42f13bff80295e"
+ integrity sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==
-body-parser@1.20.3:
- version "1.20.3"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
- integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
+body-parser@~1.20.3:
+ version "1.20.4"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f"
+ integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==
dependencies:
- bytes "3.1.2"
+ bytes "~3.1.2"
content-type "~1.0.5"
debug "2.6.9"
depd "2.0.0"
- destroy "1.2.0"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- on-finished "2.4.1"
- qs "6.13.0"
- raw-body "2.5.2"
+ destroy "~1.2.0"
+ http-errors "~2.0.1"
+ iconv-lite "~0.4.24"
+ on-finished "~2.4.1"
+ qs "~6.14.0"
+ raw-body "~2.5.3"
type-is "~1.6.18"
- unpipe "1.0.0"
+ unpipe "~1.0.0"
bonjour-service@^1.2.1:
version "1.3.0"
@@ -1233,7 +1494,7 @@ browserify-des@^1.0.0:
inherits "^2.0.1"
safe-buffer "^5.1.2"
-browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
+browserify-rsa@^4.0.0, browserify-rsa@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238"
integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==
@@ -1243,18 +1504,17 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
safe-buffer "^5.2.1"
browserify-sign@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208"
- integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==
+ version "4.2.5"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.5.tgz#3979269fa8af55ba18aac35deef11b45515cd27d"
+ integrity sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==
dependencies:
- bn.js "^5.2.1"
- browserify-rsa "^4.1.0"
+ bn.js "^5.2.2"
+ browserify-rsa "^4.1.1"
create-hash "^1.2.0"
create-hmac "^1.1.7"
- elliptic "^6.5.5"
- hash-base "~3.0"
+ elliptic "^6.6.1"
inherits "^2.0.4"
- parse-asn1 "^5.1.7"
+ parse-asn1 "^5.1.9"
readable-stream "^2.3.8"
safe-buffer "^5.2.1"
@@ -1265,16 +1525,16 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
-browserslist@^4.24.0:
- version "4.26.2"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.2.tgz#7db3b3577ec97f1140a52db4936654911078cef3"
- integrity sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==
+browserslist@^4.28.1:
+ version "4.28.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
+ integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
dependencies:
- baseline-browser-mapping "^2.8.3"
- caniuse-lite "^1.0.30001741"
- electron-to-chromium "^1.5.218"
- node-releases "^2.0.21"
- update-browserslist-db "^1.1.3"
+ baseline-browser-mapping "^2.9.0"
+ caniuse-lite "^1.0.30001759"
+ electron-to-chromium "^1.5.263"
+ node-releases "^2.0.27"
+ update-browserslist-db "^1.2.0"
buffer-from@^1.0.0:
version "1.1.2"
@@ -1313,11 +1573,16 @@ bundle-name@^4.1.0:
dependencies:
run-applescript "^7.0.0"
-bytes@3.1.2:
+bytes@3.1.2, bytes@~3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+bytestreamjs@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e"
+ integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==
+
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
@@ -1357,10 +1622,10 @@ camel-case@^4.1.2:
pascal-case "^3.1.2"
tslib "^2.0.3"
-caniuse-lite@^1.0.30001741:
- version "1.0.30001743"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz#50ff91a991220a1ee2df5af00650dd5c308ea7cd"
- integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==
+caniuse-lite@^1.0.30001759:
+ version "1.0.30001774"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz#0e576b6f374063abcd499d202b9ba1301be29b70"
+ integrity sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==
capital-case@^1.0.4:
version "1.0.4"
@@ -1425,12 +1690,13 @@ chrome-trace-event@^1.0.2:
integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7"
- integrity sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.7.tgz#bd094bfef42634ccfd9e13b9fc73274997111e39"
+ integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==
dependencies:
inherits "^2.0.4"
safe-buffer "^5.2.1"
+ to-buffer "^1.2.2"
classnames@^2.2.6, classnames@^2.3.1:
version "2.5.1"
@@ -1492,7 +1758,7 @@ compressible@~2.0.18:
dependencies:
mime-db ">= 1.43.0 < 2"
-compression@^1.7.4:
+compression@^1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79"
integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==
@@ -1541,7 +1807,7 @@ constants-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
-content-disposition@0.5.4:
+content-disposition@~0.5.4:
version "0.5.4"
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
@@ -1553,15 +1819,15 @@ content-type@~1.0.4, content-type@~1.0.5:
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+cookie-signature@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454"
+ integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==
-cookie@0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
- integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
+cookie@~0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
+ integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
copy-to-clipboard@^3.3.1:
version "3.3.3"
@@ -1594,16 +1860,6 @@ create-hash@^1.1.0, create-hash@^1.2.0:
ripemd160 "^2.0.1"
sha.js "^2.4.0"
-create-hash@~1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
- integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==
- dependencies:
- cipher-base "^1.0.1"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- sha.js "^2.4.0"
-
create-hmac@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
@@ -1682,10 +1938,10 @@ csstype@^2.5.2:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
-csstype@^3.0.2, 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==
+csstype@^3.0.2, csstype@^3.1.0, csstype@^3.2.2:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
+ integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
data-view-buffer@^1.0.2:
version "1.0.2"
@@ -1775,14 +2031,14 @@ deepmerge@^4.2.2:
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
default-browser-id@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26"
- integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.1.tgz#f7a7ccb8f5104bf8e0f71ba3b1ccfa5eafdb21e8"
+ integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==
default-browser@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf"
- integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.0.tgz#2792e886f2422894545947cc80e1a444496c5976"
+ integrity sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==
dependencies:
bundle-name "^4.1.0"
default-browser-id "^5.0.0"
@@ -1815,7 +2071,7 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-depd@2.0.0:
+depd@2.0.0, depd@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
@@ -1833,15 +2089,15 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
-destroy@1.2.0:
+destroy@1.2.0, destroy@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
-detect-libc@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+detect-libc@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
detect-node@^2.0.4:
version "2.1.0"
@@ -1937,10 +2193,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-electron-to-chromium@^1.5.218:
- version "1.5.221"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.221.tgz#bd98014b2a247701c4ebd713080448d539545d79"
- integrity sha512-/1hFJ39wkW01ogqSyYoA4goOXOtMRy6B+yvA1u42nnsEGtHzIzmk93aPISumVQeblj47JUHLC9coCjUxb1EvtQ==
+electron-to-chromium@^1.5.263:
+ version "1.5.302"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz#032a5802b31f7119269959c69fe2015d8dad5edb"
+ integrity sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==
element-resize-detector@^1.2.1:
version "1.2.4"
@@ -1949,7 +2205,7 @@ element-resize-detector@^1.2.1:
dependencies:
batch-processor "1.0.0"
-elliptic@^6.5.3, elliptic@^6.5.5:
+elliptic@^6.5.3, elliptic@^6.6.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06"
integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==
@@ -1967,33 +2223,28 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-
encodeurl@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
-enhanced-resolve@^5.17.3:
- version "5.18.3"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
- integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
+enhanced-resolve@^5.19.0:
+ version "5.19.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c"
+ integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==
dependencies:
graceful-fs "^4.2.4"
- tapable "^2.2.0"
+ tapable "^2.3.0"
envinfo@^7.7.3:
- version "7.14.0"
- resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae"
- integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae"
+ integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==
es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0:
- version "1.24.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
- integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
+ version "1.24.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899"
+ integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==
dependencies:
array-buffer-byte-length "^1.0.2"
arraybuffer.prototype.slice "^1.0.4"
@@ -2060,10 +2311,10 @@ es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-es-module-lexer@^1.2.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a"
- integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
+es-module-lexer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.0.0.tgz#f657cd7a9448dcdda9c070a3cb75e5dc1e85f5b1"
+ integrity sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
@@ -2319,9 +2570,9 @@ espree@^9.3.1, espree@^9.6.0, espree@^9.6.1:
eslint-visitor-keys "^3.4.1"
esquery@^1.4.0, esquery@^1.4.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
- integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
+ integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
@@ -2375,39 +2626,39 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-express@^4.21.2:
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32"
- integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==
+express@^4.22.1:
+ version "4.22.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069"
+ integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.20.3"
- content-disposition "0.5.4"
+ body-parser "~1.20.3"
+ content-disposition "~0.5.4"
content-type "~1.0.4"
- cookie "0.7.1"
- cookie-signature "1.0.6"
+ cookie "~0.7.1"
+ cookie-signature "~1.0.6"
debug "2.6.9"
depd "2.0.0"
encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.3.1"
- fresh "0.5.2"
- http-errors "2.0.0"
+ finalhandler "~1.3.1"
+ fresh "~0.5.2"
+ http-errors "~2.0.0"
merge-descriptors "1.0.3"
methods "~1.1.2"
- on-finished "2.4.1"
+ on-finished "~2.4.1"
parseurl "~1.3.3"
- path-to-regexp "0.1.12"
+ path-to-regexp "~0.1.12"
proxy-addr "~2.0.7"
- qs "6.13.0"
+ qs "~6.14.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
- send "0.19.0"
- serve-static "1.16.2"
+ send "~0.19.0"
+ serve-static "~1.16.2"
setprototypeof "1.2.0"
- statuses "2.0.1"
+ statuses "~2.0.1"
type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
@@ -2438,9 +2689,9 @@ fastest-levenshtein@^1.0.12:
integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
fastq@^1.6.0:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
- integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675"
+ integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
dependencies:
reusify "^1.0.4"
@@ -2470,17 +2721,17 @@ filter-obj@^2.0.2:
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.2.tgz#fff662368e505d69826abb113f0f6a98f56e9d5f"
integrity sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==
-finalhandler@1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
- integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
+finalhandler@~1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88"
+ integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==
dependencies:
debug "2.6.9"
encodeurl "~2.0.0"
escape-html "~1.0.3"
- on-finished "2.4.1"
+ on-finished "~2.4.1"
parseurl "~1.3.3"
- statuses "2.0.1"
+ statuses "~2.0.2"
unpipe "~1.0.0"
find-up@^4.0.0:
@@ -2518,7 +2769,7 @@ flatted@^3.2.9:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
-follow-redirects@^1.0.0, follow-redirects@^1.15.6:
+follow-redirects@^1.0.0, follow-redirects@^1.15.11:
version "1.15.11"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340"
integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==
@@ -2530,10 +2781,10 @@ for-each@^0.3.3, for-each@^0.3.5:
dependencies:
is-callable "^1.2.7"
-form-data@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4"
- integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==
+form-data@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053"
+ integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
@@ -2546,7 +2797,7 @@ forwarded@0.2.0:
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
-fresh@0.5.2:
+fresh@~0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
@@ -2588,6 +2839,11 @@ functions-have-names@^1.2.3:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+generator-function@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2"
+ integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==
+
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
@@ -2604,7 +2860,7 @@ get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@
hasown "^2.0.2"
math-intrinsics "^1.1.0"
-get-proto@^1.0.0, get-proto@^1.0.1:
+get-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
@@ -2635,10 +2891,10 @@ glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-to-regex.js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz#f71cc9cb8441471a9318626160bc8a35e1306b21"
- integrity sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==
+glob-to-regex.js@^1.0.0, glob-to-regex.js@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413"
+ integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==
glob-to-regexp@^0.4.1:
version "0.4.1"
@@ -2733,23 +2989,17 @@ has-tostringtag@^1.0.2:
dependencies:
has-symbols "^1.0.3"
-hash-base@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
- integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==
- dependencies:
- inherits "^2.0.1"
-
-hash-base@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
- integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+hash-base@^3.0.0, hash-base@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74"
+ integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==
dependencies:
inherits "^2.0.4"
- readable-stream "^3.6.0"
- safe-buffer "^5.2.0"
+ readable-stream "^2.3.8"
+ safe-buffer "^5.2.1"
+ to-buffer "^1.2.1"
-hash-base@~3.0, hash-base@~3.0.4:
+hash-base@~3.0.4:
version "3.0.5"
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a"
integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==
@@ -2828,26 +3078,27 @@ http-deceiver@^1.2.7:
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+http-errors@~1.8.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
dependencies:
- depd "2.0.0"
+ depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.2.0"
- statuses "2.0.1"
+ statuses ">= 1.5.0 < 2"
toidentifier "1.0.1"
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+http-errors@~2.0.0, http-errors@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
+ integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==
dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
+ depd "~2.0.0"
+ inherits "~2.0.4"
+ setprototypeof "~1.2.0"
+ statuses "~2.0.2"
+ toidentifier "~1.0.1"
http-link-header@^1.1.1:
version "1.1.3"
@@ -2908,7 +3159,7 @@ icomcom-react@^1.0.1:
dependencies:
prop-types "^15.6.0"
-iconv-lite@0.4.24:
+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==
@@ -2936,9 +3187,9 @@ immutability-helper@^3.0.1:
integrity sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==
immutable@^5.0.2:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4"
- integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
+ integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
import-fresh@^3.2.1:
version "3.3.1"
@@ -2974,11 +3225,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
internal-slot@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961"
@@ -3011,9 +3257,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
- integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc"
+ integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==
is-arguments@^1.0.4, is-arguments@^1.1.1:
version "1.2.0"
@@ -3070,7 +3316,7 @@ is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1:
+is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.16.1:
version "2.16.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
@@ -3112,12 +3358,13 @@ is-finalizationregistry@^1.1.0:
call-bound "^1.0.3"
is-generator-function@^1.0.10, is-generator-function@^1.0.7:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca"
- integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5"
+ integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==
dependencies:
- call-bound "^1.0.3"
- get-proto "^1.0.0"
+ call-bound "^1.0.4"
+ generator-function "^2.0.0"
+ get-proto "^1.0.1"
has-tostringtag "^1.0.2"
safe-regex-test "^1.1.0"
@@ -3260,9 +3507,9 @@ is-weakset@^2.0.3:
get-intrinsic "^1.2.6"
is-wsl@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2"
- integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.1.tgz#327897b26832a3eb117da6c27492d04ca132594f"
+ integrity sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==
dependencies:
is-inside-container "^1.0.0"
@@ -3314,9 +3561,9 @@ jquery@^3.7.0:
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
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==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
+ integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
dependencies:
argparse "^2.0.1"
@@ -3442,9 +3689,9 @@ kind-of@^6.0.2:
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
launch-editor@^2.6.1:
- version "2.11.1"
- resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.11.1.tgz#61a0b7314a42fd84a6cbb564573d9e9ffcf3d72b"
- integrity sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.0.tgz#6ff3d88d53ef3148d2145350b54854f9f2551ce1"
+ integrity sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==
dependencies:
picocolors "^1.1.1"
shell-quote "^1.8.3"
@@ -3457,10 +3704,10 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-loader-runner@^4.2.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
- integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
+loader-runner@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3"
+ integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==
loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.4.2"
@@ -3491,9 +3738,9 @@ lodash.merge@^4.6.2:
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash@^4.17.11, lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+ version "4.17.23"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a"
+ integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
@@ -3518,9 +3765,9 @@ lru-cache@^4.1.2:
yallist "^2.1.2"
manifesto.js@^4.2.0:
- version "4.2.22"
- resolved "https://registry.yarnpkg.com/manifesto.js/-/manifesto.js-4.2.22.tgz#39f251ea2711e9df088655077bf2776895bd84dd"
- integrity sha512-Rl7nKFzJ7kiotWCrFkqTnY6xfdGr7KtaHo+QovRXe4WGizoH1QaF6kHodNPIOsi2L5LCgX/RVoNqOryLKEuNrg==
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/manifesto.js/-/manifesto.js-4.3.0.tgz#98384ceffabf7343173b526f68ccb079ac808286"
+ integrity sha512-UhnJ/m4KrbVUrqjlJvURakAR68y3twBXecocRiWU8MIvDJdwA1clYTtHz+in0LeYIgb6yuLZ7vStQ7ixtkkEAw==
dependencies:
"@edsilv/http-status-codes" "^1.0.3"
"@iiif/vocabulary" "^1.0.28"
@@ -3547,10 +3794,18 @@ media-typer@0.3.0:
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
memfs@^4.43.1:
- version "4.46.1"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.46.1.tgz#835332e5a21ed03373184d889c7958ba9a1db534"
- integrity sha512-2wjHDg7IjP+ufAqqqSxjiNePFDrvWviA79ajUwG9lkHhk3HzZOLBzzoUG8cx9vCagj6VvBQD7oXuLuFz5LaAOQ==
- dependencies:
+ version "4.56.10"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.56.10.tgz#eaf2f6556db10f91f1e9ad9f1274fd988c646202"
+ integrity sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==
+ dependencies:
+ "@jsonjoy.com/fs-core" "4.56.10"
+ "@jsonjoy.com/fs-fsa" "4.56.10"
+ "@jsonjoy.com/fs-node" "4.56.10"
+ "@jsonjoy.com/fs-node-builtins" "4.56.10"
+ "@jsonjoy.com/fs-node-to-fsa" "4.56.10"
+ "@jsonjoy.com/fs-node-utils" "4.56.10"
+ "@jsonjoy.com/fs-print" "4.56.10"
+ "@jsonjoy.com/fs-snapshot" "4.56.10"
"@jsonjoy.com/json-pack" "^1.11.0"
"@jsonjoy.com/util" "^1.9.0"
glob-to-regex.js "^1.0.1"
@@ -3585,7 +3840,7 @@ methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-micromatch@^4.0.2, micromatch@^4.0.5:
+micromatch@^4.0.2:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -3611,7 +3866,7 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
-mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -3619,9 +3874,9 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24,
mime-db "1.52.0"
mime-types@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce"
- integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab"
+ integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==
dependencies:
mime-db "^1.54.0"
@@ -3641,9 +3896,9 @@ minimalistic-crypto-utils@^1.0.1:
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, 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==
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.3.tgz#6a5cba9b31f503887018f579c89f81f61162e624"
+ integrity sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==
dependencies:
brace-expansion "^1.1.7"
@@ -3764,11 +4019,6 @@ node-fetch@^2.6.1:
dependencies:
whatwg-url "^5.0.0"
-node-forge@^1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
- integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
-
node-polyfill-webpack-plugin@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz#141d86f177103a8517c71d99b7c6a46edbb1bb58"
@@ -3800,10 +4050,10 @@ node-polyfill-webpack-plugin@^2.0.1:
util "^0.12.4"
vm-browserify "^1.1.2"
-node-releases@^2.0.21:
- version "2.0.21"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c"
- integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==
+node-releases@^2.0.27:
+ version "2.0.27"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
+ integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
@@ -3896,7 +4146,7 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-on-finished@2.4.1, on-finished@^2.4.1:
+on-finished@^2.4.1, on-finished@~2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -4018,19 +4268,18 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-asn1@^5.0.0, parse-asn1@^5.1.7:
- version "5.1.7"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06"
- integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==
+parse-asn1@^5.0.0, parse-asn1@^5.1.9:
+ version "5.1.9"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.9.tgz#8dd24c3ea8da77dffbc708d94eaf232fd6156e95"
+ integrity sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==
dependencies:
asn1.js "^4.10.1"
browserify-aes "^1.2.0"
evp_bytestokey "^1.0.3"
- hash-base "~3.0"
- pbkdf2 "^3.1.2"
+ pbkdf2 "^3.1.5"
safe-buffer "^5.2.1"
-parseurl@~1.3.2, parseurl@~1.3.3:
+parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
@@ -4076,22 +4325,22 @@ 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-to-regexp@0.1.12:
+path-to-regexp@~0.1.12:
version "0.1.12"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
-pbkdf2@^3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b"
- integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==
+pbkdf2@^3.1.2, pbkdf2@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366"
+ integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==
dependencies:
- create-hash "~1.1.3"
+ create-hash "^1.2.0"
create-hmac "^1.1.7"
- ripemd160 "=2.0.1"
+ ripemd160 "^2.0.3"
safe-buffer "^5.2.1"
- sha.js "^2.4.11"
- to-buffer "^1.2.0"
+ sha.js "^2.4.12"
+ to-buffer "^1.2.1"
picocolors@^0.2.1:
version "0.2.1"
@@ -4108,6 +4357,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+picomatch@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
+ integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
+
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -4115,6 +4369,18 @@ pkg-dir@^4.2.0:
dependencies:
find-up "^4.0.0"
+pkijs@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.3.3.tgz#b3f04d7b2eaacb05c81675f882be374e591626ec"
+ integrity sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==
+ dependencies:
+ "@noble/hashes" "1.4.0"
+ asn1js "^3.0.6"
+ bytestreamjs "^2.0.1"
+ pvtsutils "^1.3.6"
+ pvutils "^1.1.3"
+ tslib "^2.8.1"
+
popper.js@1.16.1-lts:
version "1.16.1-lts"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1-lts.tgz#cf6847b807da3799d80ee3d6d2f90df8a3f50b05"
@@ -4167,9 +4433,9 @@ postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.2:
util-deprecate "^1.0.2"
postcss-selector-parser@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262"
- integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz#e75d2e0d843f620e5df69076166f4e16f891cb9f"
+ integrity sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -4265,17 +4531,29 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-qs@6.13.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
- integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
+pvtsutils@^1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001"
+ integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==
dependencies:
- side-channel "^1.0.6"
+ tslib "^2.8.1"
+
+pvutils@^1.1.3:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.5.tgz#84b0dea4a5d670249aa9800511804ee0b7c2809c"
+ integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==
qs@^6.12.3:
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
- integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.0.tgz#db8fd5d1b1d2d6b5b33adaf87429805f1909e7b3"
+ integrity sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==
+ dependencies:
+ side-channel "^1.1.0"
+
+qs@~6.14.0:
+ version "6.14.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c"
+ integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==
dependencies:
side-channel "^1.1.0"
@@ -4314,15 +4592,15 @@ range-parser@^1.2.1, range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-raw-body@2.5.2:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
- integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
+raw-body@~2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2"
+ integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==
dependencies:
- bytes "3.1.2"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
+ bytes "~3.1.2"
+ http-errors "~2.0.1"
+ iconv-lite "~0.4.24"
+ unpipe "~1.0.0"
re-reselect@^4.0.0:
version "4.0.1"
@@ -4606,11 +4884,11 @@ redux-devtools-extension@^2.13.2:
integrity sha512-cNJ8Q/EtjhQaZ71c8I9+BPySIBVEKssbPpskBfsXqb8HJ002A3KRVHfeRzwRo6mGPqsm7XuHTqNSNeS1Khig0A==
redux-saga@^1.1.3:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.3.0.tgz#a59ada7c28010189355356b99738c9fcb7ade30e"
- integrity sha512-J9RvCeAZXSTAibFY0kGw6Iy4EdyDNW7k6Q+liwX+bsck7QVsU78zz8vpBRweEfANxnnlG/xGGeOvf6r8UXzNJQ==
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.4.2.tgz#98947e62a19712150dc63dd1418a5b070bfadd5a"
+ integrity sha512-QLIn/q+7MX/B+MkGJ/K6R3//60eJ4QNy65eqPsJrfGezbxdh1Jx+37VRKE2K4PsJnNET5JufJtgWdT30WBa+6w==
dependencies:
- "@redux-saga/core" "^1.3.0"
+ "@redux-saga/core" "^1.4.2"
redux-thunk@^2.3.0:
version "2.4.2"
@@ -4624,6 +4902,11 @@ redux@^4.0.0, redux@^4.0.4, redux@^4.0.5:
dependencies:
"@babel/runtime" "^7.9.2"
+reflect-metadata@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
+ integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==
+
reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
version "1.0.10"
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
@@ -4688,11 +4971,11 @@ resolve-from@^5.0.0:
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4:
- version "1.22.10"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
- integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
+ version "1.22.11"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
+ integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
dependencies:
- is-core-module "^2.16.0"
+ is-core-module "^2.16.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -4713,21 +4996,13 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-ripemd160@=2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
- integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==
- dependencies:
- hash-base "^2.0.0"
- inherits "^2.0.1"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8"
+ integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==
dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
+ hash-base "^3.1.2"
+ inherits "^2.0.4"
rtl-css-js@^1.13.1:
version "1.16.1"
@@ -4759,7 +5034,7 @@ safe-array-concat@^1.1.3:
has-symbols "^1.1.0"
isarray "^2.0.5"
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -4792,9 +5067,9 @@ safe-regex-test@^1.1.0:
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass@^1.62.1:
- version "1.92.1"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.92.1.tgz#07fb1fec5647d7b712685d1090628bf52456fe86"
- integrity sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ==
+ version "1.97.3"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.3.tgz#9cb59339514fa7e2aec592b9700953ac6e331ab2"
+ integrity sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==
dependencies:
chokidar "^4.0.0"
immutable "^5.0.2"
@@ -4810,10 +5085,10 @@ scheduler@^0.19.1:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.2:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae"
- integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
+schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0, schema-utils@^4.3.3:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46"
+ integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==
dependencies:
"@types/json-schema" "^7.0.9"
ajv "^8.9.0"
@@ -4825,13 +5100,13 @@ select-hose@^2.0.0:
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
-selfsigned@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0"
- integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==
+selfsigned@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-5.5.0.tgz#4c9ab7c7c9f35f18fb6a9882c253eb0e6bd6557b"
+ integrity sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==
dependencies:
- "@types/node-forge" "^1.3.0"
- node-forge "^1"
+ "@peculiar/x509" "^1.14.2"
+ pkijs "^3.3.3"
semver@^6.1.0, semver@^6.3.1:
version "6.3.1"
@@ -4839,28 +5114,28 @@ semver@^6.1.0, semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.0.0, semver@^7.3.6, semver@^7.3.8, semver@^7.5.4, semver@^7.6.3:
- version "7.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
- integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
+ integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
-send@0.19.0:
- version "0.19.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
- integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
+send@~0.19.0, send@~0.19.1:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29"
+ integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==
dependencies:
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- fresh "0.5.2"
- http-errors "2.0.0"
+ fresh "~0.5.2"
+ http-errors "~2.0.1"
mime "1.6.0"
ms "2.1.3"
- on-finished "2.4.1"
+ on-finished "~2.4.1"
range-parser "~1.2.1"
- statuses "2.0.1"
+ statuses "~2.0.2"
sentence-case@^3.0.4:
version "3.0.4"
@@ -4879,27 +5154,27 @@ serialize-javascript@^6.0.2:
randombytes "^2.1.0"
serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb"
+ integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==
dependencies:
- accepts "~1.3.4"
+ accepts "~1.3.8"
batch "0.6.1"
debug "2.6.9"
escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
+ http-errors "~1.8.0"
+ mime-types "~2.1.35"
+ parseurl "~1.3.3"
-serve-static@1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
- integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+serve-static@~1.16.2:
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9"
+ integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==
dependencies:
encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
- send "0.19.0"
+ send "~0.19.1"
set-function-length@^1.2.2:
version "1.2.2"
@@ -4937,17 +5212,12 @@ setimmediate@^1.0.4:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
-setprototypeof@1.2.0:
+setprototypeof@1.2.0, setprototypeof@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
-sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8:
+sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8:
version "2.4.12"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f"
integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==
@@ -5014,7 +5284,7 @@ side-channel-weakmap@^1.0.2:
object-inspect "^1.13.3"
side-channel-map "^1.0.1"
-side-channel@^1.0.6, side-channel@^1.1.0:
+side-channel@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
@@ -5083,16 +5353,16 @@ spdy@^4.0.2:
select-hose "^2.0.0"
spdy-transport "^3.0.0"
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.5.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+statuses@~2.0.1, statuses@~2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382"
+ integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
+
stop-iteration-iterator@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad"
@@ -5201,15 +5471,15 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-tapable@^2.1.1, tapable@^2.2.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.3.tgz#4b67b635b2d97578a06a2713d2f04800c237e99b"
- integrity sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==
+tapable@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6"
+ integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==
-terser-webpack-plugin@^5.3.11:
- version "5.3.14"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06"
- integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==
+terser-webpack-plugin@^5.3.16:
+ version "5.3.16"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz#741e448cc3f93d8026ebe4f7ef9e4afacfd56330"
+ integrity sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==
dependencies:
"@jridgewell/trace-mapping" "^0.3.25"
jest-worker "^27.4.5"
@@ -5218,9 +5488,9 @@ terser-webpack-plugin@^5.3.11:
terser "^5.31.1"
terser@^5.31.1:
- version "5.44.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.0.tgz#ebefb8e5b8579d93111bfdfc39d2cf63879f4a82"
- integrity sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==
+ version "5.46.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.46.0.tgz#1b81e560d584bbdd74a8ede87b4d9477b0ff9695"
+ integrity sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.15.0"
@@ -5264,10 +5534,10 @@ tiny-warning@^1.0.2:
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-to-buffer@^1.2.0:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0"
- integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==
+to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133"
+ integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==
dependencies:
isarray "^2.0.5"
safe-buffer "^5.2.1"
@@ -5285,7 +5555,7 @@ toggle-selection@^1.0.6:
resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
-toidentifier@1.0.1:
+toidentifier@1.0.1, toidentifier@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
@@ -5295,7 +5565,7 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-tree-dump@^1.0.3:
+tree-dump@^1.0.3, tree-dump@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4"
integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==
@@ -5315,7 +5585,12 @@ tslib@2.6.2:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-tslib@^2.0.0, tslib@^2.0.3:
+tslib@^1.9.3:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -5325,6 +5600,13 @@ tslib@~2.5.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913"
integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==
+tsyringe@^4.10.0:
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.10.0.tgz#d0c95815d584464214060285eaaadd94aa03299c"
+ integrity sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==
+ dependencies:
+ tslib "^1.9.3"
+
tty-browserify@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
@@ -5434,25 +5716,25 @@ unbox-primitive@^1.1.0:
has-symbols "^1.1.0"
which-boxed-primitive "^1.1.1"
-undici-types@~7.12.0:
- version "7.12.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb"
- integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==
+undici-types@~7.18.0:
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9"
+ integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
unfetch@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
-update-browserslist-db@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
- integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
+update-browserslist-db@^1.2.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d"
+ integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@@ -5607,10 +5889,10 @@ warning@^4.0.2, warning@^4.0.3:
dependencies:
loose-envify "^1.0.0"
-watchpack@^2.4.1:
- version "2.4.4"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947"
- integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
+watchpack@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102"
+ integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -5659,13 +5941,13 @@ webpack-dev-middleware@^7.4.2:
schema-utils "^4.0.0"
webpack-dev-server@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz#96a143d50c58fef0c79107e61df911728d7ceb39"
- integrity sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz#7f36a78be7ac88833fd87757edee31469a9e47d3"
+ integrity sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==
dependencies:
"@types/bonjour" "^3.5.13"
"@types/connect-history-api-fallback" "^1.5.4"
- "@types/express" "^4.17.21"
+ "@types/express" "^4.17.25"
"@types/express-serve-static-core" "^4.17.21"
"@types/serve-index" "^1.9.4"
"@types/serve-static" "^1.15.5"
@@ -5675,9 +5957,9 @@ webpack-dev-server@^5.2.2:
bonjour-service "^1.2.1"
chokidar "^3.6.0"
colorette "^2.0.10"
- compression "^1.7.4"
+ compression "^1.8.1"
connect-history-api-fallback "^2.0.0"
- express "^4.21.2"
+ express "^4.22.1"
graceful-fs "^4.2.6"
http-proxy-middleware "^2.0.9"
ipaddr.js "^2.1.0"
@@ -5685,7 +5967,7 @@ webpack-dev-server@^5.2.2:
open "^10.0.3"
p-retry "^6.2.0"
schema-utils "^4.2.0"
- selfsigned "^2.4.1"
+ selfsigned "^5.5.0"
serve-index "^1.9.1"
sockjs "^0.3.24"
spdy "^4.0.2"
@@ -5702,14 +5984,14 @@ webpack-merge@^5.7.3:
wildcard "^2.0.0"
webpack-sources@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723"
- integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.4.tgz#a338b95eb484ecc75fbb196cbe8a2890618b4891"
+ integrity sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==
webpack@^5.84.0:
- version "5.101.3"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.3.tgz#3633b2375bb29ea4b06ffb1902734d977bc44346"
- integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==
+ version "5.105.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.105.2.tgz#f3b76f9fc36f1152e156e63ffda3bbb82e6739ea"
+ integrity sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==
dependencies:
"@types/eslint-scope" "^3.7.7"
"@types/estree" "^1.0.8"
@@ -5719,22 +6001,22 @@ webpack@^5.84.0:
"@webassemblyjs/wasm-parser" "^1.14.1"
acorn "^8.15.0"
acorn-import-phases "^1.0.3"
- browserslist "^4.24.0"
+ browserslist "^4.28.1"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.17.3"
- es-module-lexer "^1.2.1"
+ enhanced-resolve "^5.19.0"
+ es-module-lexer "^2.0.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.11"
json-parse-even-better-errors "^2.3.1"
- loader-runner "^4.2.0"
+ loader-runner "^4.3.1"
mime-types "^2.1.27"
neo-async "^2.6.2"
- schema-utils "^4.3.2"
- tapable "^2.1.1"
- terser-webpack-plugin "^5.3.11"
- watchpack "^2.4.1"
+ schema-utils "^4.3.3"
+ tapable "^2.3.0"
+ terser-webpack-plugin "^5.3.16"
+ watchpack "^2.5.1"
webpack-sources "^3.3.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
@@ -5800,9 +6082,9 @@ which-collection@^1.0.2:
is-weakset "^2.0.3"
which-typed-array@^1.1.16, which-typed-array@^1.1.19, which-typed-array@^1.1.2:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
- integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
+ version "1.1.20"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122"
+ integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==
dependencies:
available-typed-arrays "^1.0.7"
call-bind "^1.0.8"
@@ -5835,9 +6117,9 @@ wrappy@1:
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
ws@^8.18.0:
- version "8.18.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472"
- integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
+ version "8.19.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b"
+ integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==
wsl-utils@^0.1.0:
version "0.1.0"