diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index 46ebe58bc5..2fa28a587c 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -49,6 +49,7 @@ jobs: public/assets public/packs public/packs-test + tmp/cache/vite key: ${{ matrix.mode }}-assets-${{ github.head_ref || github.ref_name }}-${{ github.sha }} restore-keys: | ${{ matrix.mode }}-assets-${{ github.head_ref || github.ref_name }}-${{ github.sha }} @@ -62,7 +63,7 @@ jobs: - name: Archive asset artifacts run: | - tar --exclude={"*.br","*.gz"} -zcf artifacts.tar.gz public/assets public/packs* + tar --exclude={"*.br","*.gz"} -zcf artifacts.tar.gz public/assets public/packs* tmp/cache/vite/last-build*.json - uses: actions/upload-artifact@v4 if: matrix.mode == 'test' diff --git a/.prettierignore b/.prettierignore index f6723584f3..8f16e731c8 100644 --- a/.prettierignore +++ b/.prettierignore @@ -18,10 +18,6 @@ !/log/.keep /tmp /coverage -/public/system -/public/assets -/public/packs -/public/packs-test .env .env.production .env.development diff --git a/Dockerfile b/Dockerfile index 7e9393efea..389a744b87 100644 --- a/Dockerfile +++ b/Dockerfile @@ -307,6 +307,7 @@ RUN \ ldconfig; \ # Use Ruby on Rails to create Mastodon assets SECRET_KEY_BASE_DUMMY=1 \ + # Do not run `yarn` when precompiling assets, we already ran it before bundle exec rails assets:precompile; \ # Cleanup temporary files rm -fr /opt/mastodon/tmp; diff --git a/app/javascript/mastodon/service_worker/sw.js b/app/javascript/mastodon/service_worker/sw.js index 0238cc26b3..4609a8fc97 100644 --- a/app/javascript/mastodon/service_worker/sw.js +++ b/app/javascript/mastodon/service_worker/sw.js @@ -1,5 +1,5 @@ import { ExpirationPlugin } from 'workbox-expiration'; -import { precacheAndRoute } from 'workbox-precaching'; +// import { precacheAndRoute } from 'workbox-precaching'; import { registerRoute } from 'workbox-routing'; import { CacheFirst } from 'workbox-strategies'; @@ -15,7 +15,7 @@ function fetchRoot() { return fetch('/', { credentials: 'include', redirect: 'manual' }); } -precacheAndRoute(self.__WB_MANIFEST); +// precacheAndRoute(self.__WB_MANIFEST); registerRoute( /intl\/.*\.js$/, diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 6ec6a4199f..6a3afeb736 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -393,7 +393,7 @@ code { max-width: 100%; height: auto; border-radius: var(--avatar-border-radius); - background: url('images/void.png'); + background: url('@/images/void.png'); &[src$='missing.png'] { visibility: hidden; diff --git a/bin/vite b/bin/vite new file mode 100755 index 0000000000..5da3388e2d --- /dev/null +++ b/bin/vite @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'vite' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300).include?("This file was generated by Bundler") + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("vite_ruby", "vite") diff --git a/config/application.rb b/config/application.rb index ad21882cfc..d88334f933 100644 --- a/config/application.rb +++ b/config/application.rb @@ -52,6 +52,7 @@ require_relative '../lib/stoplight/redis_data_store_extensions' require_relative '../lib/active_record/database_tasks_extensions' require_relative '../lib/active_record/batches' require_relative '../lib/simple_navigation/item_extensions' +require_relative '../lib/vite_ruby/sri_extensions' Bundler.require(:pam_authentication) if ENV['PAM_ENABLED'] == 'true' diff --git a/lib/premailer_bundled_asset_strategy.rb b/lib/premailer_bundled_asset_strategy.rb index ef979bc878..3065777d29 100644 --- a/lib/premailer_bundled_asset_strategy.rb +++ b/lib/premailer_bundled_asset_strategy.rb @@ -15,12 +15,7 @@ module PremailerBundledAssetStrategy headers ).presence else - # Read the file from filesystem - vite_path = ViteRuby.instance.manifest.path_for(url) - - return unless vite_path - - path = Rails.public_path.join(vite_path.delete_prefix('/')) + path = Rails.public_path.join(url.delete_prefix('/')) return unless path.exist? path.read diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index ba418d1711..de722f6bc1 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -17,3 +17,6 @@ if Rake::Task.task_defined?('assets:precompile') Rake::Task['assets:generate_static_pages'].invoke end end + +# We don't want vite_ruby to run yarn, we do that in a separate step +Rake::Task['vite:install_dependencies'].clear diff --git a/lib/vite_ruby/sri_extensions.rb b/lib/vite_ruby/sri_extensions.rb new file mode 100644 index 0000000000..6d88e82109 --- /dev/null +++ b/lib/vite_ruby/sri_extensions.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +module ViteRuby::ManifestIntegrityExtension + def path_and_integrity_for(name, **) + entry = lookup!(name, **) + + { path: entry.fetch('file'), integrity: entry.fetch('integrity', nil) } + end + + # Find a manifest entry by the *final* file name + def integrity_hash_for_file(file_name) + @integrity_cache ||= {} + @integrity_cache[file_name] ||= begin + entry = manifest.find { |_key, entry| entry['file'] == file_name } + + entry[1].fetch('integrity', nil) if entry + end + end + + def resolve_entries_with_integrity(*names, **options) + entries = names.map { |name| lookup!(name, **options) } + script_paths = entries.map do |entry| + { + file: entry.fetch('file'), + integrity: entry.fetch('integrity'), + } + end + + imports = dev_server_running? ? [] : entries.flat_map { |entry| entry['imports'] }.compact + + { + scripts: script_paths, + imports: imports.filter_map { |entry| { file: entry.fetch('file'), integrity: entry.fetch('integrity') } }.uniq, + stylesheets: dev_server_running? ? [] : (entries + imports).flat_map { |entry| entry['css'] }.compact.uniq, + } + end +end + +ViteRuby::Manifest.prepend ViteRuby::ManifestIntegrityExtension + +module ViteRails::TagHelpers::IntegrityExtension + def vite_javascript_tag(*names, + type: 'module', + asset_type: :javascript, + skip_preload_tags: false, + skip_style_tags: false, + crossorigin: 'anonymous', + media: 'screen', + **options) + entries = vite_manifest.resolve_entries_with_integrity(*names, type: asset_type) + + ''.html_safe.tap do |tags| + entries.fetch(:scripts).each do |script| + tags << javascript_include_tag( + script[:file], + integrity: script[:integrity], + crossorigin: crossorigin, + type: type, + extname: false, + **options + ) + end + + unless skip_preload_tags + entries.fetch(:imports).each do |import| + tags << vite_preload_tag(import[:file], integrity: import[:integrity], crossorigin: crossorigin, **options) + end + end + + options[:extname] = false if Rails::VERSION::MAJOR >= 7 + + unless skip_style_tags + entries.fetch(:stylesheets).each do |stylesheet| + # This is for stylesheets imported from Javascript. The entry for the JS entrypoint only contains the final CSS file name, so we need to look it up in the manifest + tags << stylesheet_link_tag( + stylesheet, + integrity: vite_manifest.integrity_hash_for_file(stylesheet), + media: media, + **options + ) + end + end + end + end + + def vite_stylesheet_tag(*names, **options) + ''.html_safe.tap do |tags| + names.each do |name| + entry = vite_manifest.path_and_integrity_for(name, type: :stylesheet) + + options[:extname] = false if Rails::VERSION::MAJOR >= 7 + + tags << stylesheet_link_tag(entry[:path], integrity: entry[:integrity], **options) + end + end + end +end + +ViteRails::TagHelpers.prepend ViteRails::TagHelpers::IntegrityExtension diff --git a/package.json b/package.json index 238fa4322f..203b15920f 100644 --- a/package.json +++ b/package.json @@ -47,9 +47,13 @@ "@react-spring/web": "^9.7.5", "@reduxjs/toolkit": "^2.0.1", "@use-gesture/react": "^10.3.1", + "@vitejs/plugin-react": "^4.2.1", "arrow-key-navigation": "^1.2.0", "async-mutex": "^0.5.0", "axios": "^1.4.0", + "babel-plugin-formatjs": "^10.5.37", + "babel-plugin-preval": "^5.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "blurhash": "^2.0.5", "classnames": "^2.3.2", "color-blend": "^4.0.0", @@ -105,9 +109,10 @@ "vite": "^6.3.0", "vite-bundle-analyzer": "^0.18.1", "vite-plugin-pwa": "^1.0.0", + "vite-plugin-rails": "^0.5.0", + "vite-plugin-svgr": "^4.3.0", "wicg-inert": "^3.1.2", "workbox-expiration": "^7.0.0", - "workbox-precaching": "^7.0.0", "workbox-routing": "^7.0.0", "workbox-strategies": "^7.0.0", "workbox-window": "^7.0.0" @@ -116,14 +121,12 @@ "@eslint/js": "^9.23.0", "@formatjs/cli": "^6.1.1", "@testing-library/dom": "^10.2.0", - "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^16.0.0", "@types/emoji-mart": "3.0.14", "@types/escape-html": "^1.0.2", "@types/hoist-non-react-statics": "^3.3.1", "@types/http-link-header": "^1.0.3", "@types/intl": "^1.2.0", - "@types/jest": "^29.5.14", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.195", "@types/object-assign": "^4.0.30", @@ -142,7 +145,6 @@ "@types/react-toggle": "^4.0.3", "@types/redux-immutable": "^4.0.3", "@types/requestidlecallback": "^0.3.5", - "@vitejs/plugin-react": "^4.2.1", "eslint": "^9.23.0", "eslint-import-resolver-typescript": "^4.2.5", "eslint-plugin-formatjs": "^5.3.1", @@ -160,11 +162,8 @@ "stylelint": "^16.11.0", "stylelint-config-prettier-scss": "^1.0.0", "stylelint-config-standard-scss": "^14.0.0", - "ts-jest": "^29.3.2", "typescript": "~5.7.3", "typescript-eslint": "^8.29.1", - "vite-plugin-rails": "^0.5.0", - "vite-plugin-svgr": "^4.3.0", "vitest": "^3.1.2" }, "resolutions": { diff --git a/spec/helpers/theme_helper_spec.rb b/spec/helpers/theme_helper_spec.rb index 51611b8211..337536878f 100644 --- a/spec/helpers/theme_helper_spec.rb +++ b/spec/helpers/theme_helper_spec.rb @@ -17,7 +17,7 @@ RSpec.describe ThemeHelper do ) expect(html_links.last.attributes.symbolize_keys) .to include( - href: have_attributes(value: match(/default/)), + href: have_attributes(value: match(/application/)), media: have_attributes(value: '(prefers-color-scheme: dark)') ) end diff --git a/vite.config.mts b/vite.config.mts index 08989b7825..5642f4a04e 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -1,5 +1,3 @@ -/// - import fs from 'node:fs/promises'; import path from 'node:path'; @@ -11,12 +9,7 @@ import { analyzer } from 'vite-bundle-analyzer'; import RailsPlugin from 'vite-plugin-rails'; import { VitePWA } from 'vite-plugin-pwa'; -import { - configDefaults, - defineConfig, - ViteUserConfig, - UserConfigFnPromise, -} from 'vitest/config'; +import { defineConfig, UserConfigFnPromise, UserConfig } from 'vite'; import postcssPresetEnv from 'postcss-preset-env'; import { MastodonServiceWorkerLocales } from './config/vite/plugin-sw-locales'; @@ -24,7 +17,7 @@ import { MastodonServiceWorkerLocales } from './config/vite/plugin-sw-locales'; const jsRoot = path.resolve(__dirname, 'app/javascript'); const entrypointRoot = path.resolve(jsRoot, 'entrypoints'); -const config: UserConfigFnPromise = async ({ mode, command }) => { +export const config: UserConfigFnPromise = async ({ mode, command }) => { const entrypointFiles = await fs.readdir(entrypointRoot); const entrypoints: Record = entrypointFiles.reduce( (acc, file) => { @@ -66,6 +59,7 @@ const config: UserConfigFnPromise = async ({ mode, command }) => { }, build: { commonjsOptions: { transformMixedEsModules: true }, + chunkSizeWarningLimit: 1 * 1024 * 1024, // 1MB manifest: 'manifest.json', sourcemap: true, rollupOptions: { @@ -112,33 +106,29 @@ const config: UserConfigFnPromise = async ({ mode, command }) => { RailsPlugin({ compress: mode !== 'production' && command === 'build', }), - react(), + react({ + babel: { + plugins: ['formatjs', 'transform-react-remove-prop-types'], + }, + }), MastodonServiceWorkerLocales(), VitePWA({ srcDir: 'mastodon/service_worker', + // We need to use injectManifest because we use our own service worker strategies: 'injectManifest', - // Force output in the prod directory so the symlink works. - outDir: path.resolve(__dirname, 'public/packs'), manifest: false, - injectRegister: null, + injectRegister: false, injectManifest: { + // Do not inject a manifest, we dont use precache + injectionPoint: undefined, buildPlugins: { vite: [ // Provide a virtual import with only the locales used in the ServiceWorker MastodonServiceWorkerLocales(), ], }, - // Because we move the output dir, we need to scan for assets in the original output directory. - globDirectory: env.VITE_RUBY_PUBLIC_OUTPUT_DIR ?? 'public', - globIgnores: [ - // Do not preload those files - 'intl/*.js', - 'extra_polyfills-*.js', - 'polyfill-force-*.js', - 'assets/mailer-*.{js,css}', - '**/*tesseract*', - ], - maximumFileSizeToCacheInBytes: 2 * 1_024 * 1_024, // 2 MiB + // Force the output location, because we have a symlink in `public/sw.js` + swDest: path.resolve(__dirname, 'public/packs/sw.js'), }, devOptions: { enabled: true, @@ -151,24 +141,7 @@ const config: UserConfigFnPromise = async ({ mode, command }) => { optimizeLodashImports() as PluginOption, !!process.env.ANALYZE_BUNDLE_SIZE && analyzer({ analyzerMode: 'static' }), ], - test: { - environment: 'jsdom', - include: [ - ...configDefaults.include, - '**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}', - ], - exclude: [ - ...configDefaults.exclude, - '**/node_modules/**', - 'vendor/**', - 'config/**', - 'log/**', - 'public/**', - 'tmp/**', - ], - globals: true, - }, - } satisfies ViteUserConfig; + } satisfies UserConfig; }; export default defineConfig(config); diff --git a/vitest.config.mts b/vitest.config.mts new file mode 100644 index 0000000000..7ad3fc99f0 --- /dev/null +++ b/vitest.config.mts @@ -0,0 +1,26 @@ +import { configDefaults, defineConfig } from 'vitest/config'; + +import { config as viteConfig } from './vite.config.mjs'; + +export default defineConfig(async (context) => { + return { + ...(await viteConfig(context)), + test: { + environment: 'jsdom', + include: [ + ...configDefaults.include, + '**/__tests__/**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}', + ], + exclude: [ + ...configDefaults.exclude, + '**/node_modules/**', + 'vendor/**', + 'config/**', + 'log/**', + 'public/**', + 'tmp/**', + ], + globals: true, + }, + }; +}); diff --git a/yarn.lock b/yarn.lock index 921d5b1f5c..44dfeda814 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,13 +12,6 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.4.0": - version: 4.4.0 - resolution: "@adobe/css-tools@npm:4.4.0" - checksum: 10c0/d65ddc719389bf469097df80fb16a8af48a973dea4b57565789d70ac8e7ab4987e6dc0095da3ed5dc16c1b6f8960214a7590312eeda8abd543d91fd0f59e6c94 - languageName: node - linkType: hard - "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -55,7 +48,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.26.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -73,7 +66,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.5, @babel/core@npm:^7.24.4": +"@babel/core@npm:^7.21.3, @babel/core@npm:^7.23.5, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.10": version: 7.26.10 resolution: "@babel/core@npm:7.26.10" dependencies: @@ -404,6 +397,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -2380,38 +2384,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": "npm:^0.27.8" - checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" @@ -2482,14 +2454,12 @@ __metadata: "@react-spring/web": "npm:^9.7.5" "@reduxjs/toolkit": "npm:^2.0.1" "@testing-library/dom": "npm:^10.2.0" - "@testing-library/jest-dom": "npm:^6.0.0" "@testing-library/react": "npm:^16.0.0" "@types/emoji-mart": "npm:3.0.14" "@types/escape-html": "npm:^1.0.2" "@types/hoist-non-react-statics": "npm:^3.3.1" "@types/http-link-header": "npm:^1.0.3" "@types/intl": "npm:^1.2.0" - "@types/jest": "npm:^29.5.14" "@types/js-yaml": "npm:^4.0.5" "@types/lodash": "npm:^4.14.195" "@types/object-assign": "npm:^4.0.30" @@ -2513,6 +2483,9 @@ __metadata: arrow-key-navigation: "npm:^1.2.0" async-mutex: "npm:^0.5.0" axios: "npm:^1.4.0" + babel-plugin-formatjs: "npm:^10.5.37" + babel-plugin-preval: "npm:^5.1.0" + babel-plugin-transform-react-remove-prop-types: "npm:^0.4.24" blurhash: "npm:^2.0.5" classnames: "npm:^2.3.2" color-blend: "npm:^4.0.0" @@ -2580,7 +2553,6 @@ __metadata: substring-trie: "npm:^1.0.2" tesseract.js: "npm:^6.0.0" tiny-queue: "npm:^0.2.1" - ts-jest: "npm:^29.3.2" twitter-text: "npm:3.1.0" typescript: "npm:~5.7.3" typescript-eslint: "npm:^8.29.1" @@ -2593,7 +2565,6 @@ __metadata: vitest: "npm:^3.1.2" wicg-inert: "npm:^3.1.2" workbox-expiration: "npm:^7.0.0" - workbox-precaching: "npm:^7.0.0" workbox-routing: "npm:^7.0.0" workbox-strategies: "npm:^7.0.0" workbox-window: "npm:^7.0.0" @@ -3240,13 +3211,6 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e - languageName: node - linkType: hard - "@surma/rollup-plugin-off-main-thread@npm:^2.2.3": version: 2.2.3 resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3" @@ -3402,21 +3366,6 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.0.0": - version: 6.6.3 - resolution: "@testing-library/jest-dom@npm:6.6.3" - dependencies: - "@adobe/css-tools": "npm:^4.4.0" - aria-query: "npm:^5.0.0" - chalk: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.6.3" - lodash: "npm:^4.17.21" - redent: "npm:^3.0.0" - checksum: 10c0/5566b6c0b7b0709bc244aec3aa3dc9e5f4663e8fb2b99d8cd456fc07279e59db6076cbf798f9d3099a98fca7ef4cd50e4e1f4c4dec5a60a8fad8d24a638a5bf6 - languageName: node - linkType: hard - "@testing-library/react@npm:^16.0.0": version: 16.1.0 resolution: "@testing-library/react@npm:16.1.0" @@ -3453,7 +3402,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.20.5": +"@types/babel__core@npm:*, @types/babel__core@npm:^7.1.12, @types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -3475,6 +3424,15 @@ __metadata: languageName: node linkType: hard +"@types/babel__helper-plugin-utils@npm:^7.10.3": + version: 7.10.3 + resolution: "@types/babel__helper-plugin-utils@npm:7.10.3" + dependencies: + "@types/babel__core": "npm:*" + checksum: 10c0/c22f68e8019c1e75e42fccc6eaca94a269fa177c4544599aa084b216b879b626f63f89755a4ac2dc9054b6e9ed4e0fab1e3460d36ce20767c99aef4a3c81fce3 + languageName: node + linkType: hard + "@types/babel__template@npm:*": version: 7.4.3 resolution: "@types/babel__template@npm:7.4.3" @@ -3494,6 +3452,15 @@ __metadata: languageName: node linkType: hard +"@types/babel__traverse@npm:^7.20.6": + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.5 resolution: "@types/body-parser@npm:1.19.5" @@ -3626,41 +3593,6 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": - version: 2.0.5 - resolution: "@types/istanbul-lib-coverage@npm:2.0.5" - checksum: 10c0/e15cfc01a7ac60062f771314c959011bae7de7ceaef8e294f13427a11f21741cbfac98ad8cd9ecbf0e3d72ab7ddc327bacb3fab32c6b26ab19dbbbc1a69a9d3b - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.2 - resolution: "@types/istanbul-lib-report@npm:3.0.2" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 10c0/c168e425c95c167d83c7cbd65ff6b620cc53c5ef199a58428758586bbc28faf5c51291667e4455777b47ada12381e53fce7b92e32f431f85d8ac8025074d1908 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/istanbul-reports@npm:3.0.3" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10c0/dcd8291370d9192aa980bf849309a7ca27e1d030ccc5e7edeef47d6612c2d57d611855543b9ffeb982d162a5ab2a44d8b40baa4dc93c1d7aa6fbcaeb16e69e78 - languageName: node - linkType: hard - -"@types/jest@npm:^29.5.14": - version: 29.5.14 - resolution: "@types/jest@npm:29.5.14" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed - languageName: node - linkType: hard - "@types/js-yaml@npm:^4.0.5": version: 4.0.9 resolution: "@types/js-yaml@npm:4.0.9" @@ -3935,13 +3867,6 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.2 - resolution: "@types/stack-utils@npm:2.0.2" - checksum: 10c0/c2bf0de59ee0a1e2b2031e8a6225f412976377868c42a66537e284a020e9eb4068ed9b9da69d14c1727ab56e605532e877777c7d1bbfd3e9a42ae17bcef7d213 - languageName: node - linkType: hard - "@types/trusted-types@npm:^2.0.2": version: 2.0.3 resolution: "@types/trusted-types@npm:2.0.3" @@ -3979,22 +3904,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs-parser@npm:*": - version: 21.0.2 - resolution: "@types/yargs-parser@npm:21.0.2" - checksum: 10c0/422b8c59e21d9594e5a94afa45a3692d96c14f8fc7554bb1c1c390276815f09996ce0f8ed11893b6f8b2efc4ced686231dca5be6d76a4c4ceb56534474e95aca - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:8.29.1": version: 8.29.1 resolution: "@typescript-eslint/eslint-plugin@npm:8.29.1" @@ -4473,7 +4382,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.3.2": +"aria-query@npm:^5.3.2": version: 5.3.2 resolution: "aria-query@npm:5.3.2" checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e @@ -4715,7 +4624,26 @@ __metadata: languageName: node linkType: hard -"babel-plugin-macros@npm:^3.1.0": +"babel-plugin-formatjs@npm:^10.5.37": + version: 10.5.37 + resolution: "babel-plugin-formatjs@npm:10.5.37" + dependencies: + "@babel/core": "npm:^7.26.10" + "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/traverse": "npm:^7.26.10" + "@babel/types": "npm:^7.26.10" + "@formatjs/icu-messageformat-parser": "npm:2.11.2" + "@formatjs/ts-transformer": "npm:3.13.34" + "@types/babel__core": "npm:^7.20.5" + "@types/babel__helper-plugin-utils": "npm:^7.10.3" + "@types/babel__traverse": "npm:^7.20.6" + tslib: "npm:^2.8.0" + checksum: 10c0/e206ff1a8ad3cbcb3db2d2735d8821701df9d54c8aeb5e8b2861c945af91d4662b9cd37b1ff9d7e17954cdd31aec81788a3d044a1cd9f3e7e8e4f93177097b83 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.0.1, babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" dependencies: @@ -4762,6 +4690,25 @@ __metadata: languageName: node linkType: hard +"babel-plugin-preval@npm:^5.1.0": + version: 5.1.0 + resolution: "babel-plugin-preval@npm:5.1.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@types/babel__core": "npm:^7.1.12" + babel-plugin-macros: "npm:^3.0.1" + require-from-string: "npm:^2.0.2" + checksum: 10c0/d40814ca18f24df818a87e71ad8c1dc559cf69c0e44218bb9f5aef24680431a04e4bad8e96dc2679282b50b16a55c9597e37130d6bd5489b3eddab97d020ae5e + languageName: node + linkType: hard + +"babel-plugin-transform-react-remove-prop-types@npm:^0.4.24": + version: 0.4.24 + resolution: "babel-plugin-transform-react-remove-prop-types@npm:0.4.24" + checksum: 10c0/713441fd9fb663cc95709cb52d9c2c6228ea6d5406092a8a50094c810bcb13c3c347f8fca703d45b20cc401782743a91d7272025950147f9247d53360267f107 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -4859,15 +4806,6 @@ __metadata: languageName: node linkType: hard -"bs-logger@npm:^0.2.6": - version: 0.2.6 - resolution: "bs-logger@npm:0.2.6" - dependencies: - fast-json-stable-stringify: "npm:2.x" - checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 - languageName: node - linkType: hard - "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -4985,16 +4923,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 - languageName: node - linkType: hard - "chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -5042,13 +4970,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a - languageName: node - linkType: hard - "classnames@npm:^2.2.5, classnames@npm:^2.3.2": version: 2.5.1 resolution: "classnames@npm:2.5.1" @@ -5374,13 +5295,6 @@ __metadata: languageName: node linkType: hard -"css.escape@npm:^1.5.1": - version: 1.5.1 - resolution: "css.escape@npm:1.5.1" - checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 - languageName: node - linkType: hard - "cssdb@npm:^8.2.3": version: 8.2.3 resolution: "cssdb@npm:8.2.3" @@ -5611,13 +5525,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -5643,13 +5550,6 @@ __metadata: languageName: node linkType: hard -"dom-accessibility-api@npm:^0.6.3": - version: 0.6.3 - resolution: "dom-accessibility-api@npm:0.6.3" - checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 - languageName: node - linkType: hard - "dom-helpers@npm:^3.4.0": version: 3.4.0 resolution: "dom-helpers@npm:3.4.0" @@ -5711,7 +5611,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.10, ejs@npm:^3.1.6": +"ejs@npm:^3.1.6": version: 3.1.10 resolution: "ejs@npm:3.1.10" dependencies: @@ -6086,13 +5986,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -6466,19 +6359,6 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -6552,7 +6432,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -7072,7 +6952,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -7833,68 +7713,6 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.6.3" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 - languageName: node - linkType: hard - -"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 - languageName: node - linkType: hard - "joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -8254,13 +8072,6 @@ __metadata: languageName: node linkType: hard -"lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 - languageName: node - linkType: hard - "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" @@ -8379,13 +8190,6 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.3.6": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - "make-fetch-happen@npm:^13.0.0": version: 13.0.0 resolution: "make-fetch-happen@npm:13.0.0" @@ -8538,13 +8342,6 @@ __metadata: languageName: node linkType: hard -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c - languageName: node - linkType: hard - "minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -9280,7 +9077,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -9906,17 +9703,6 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" - dependencies: - "@jest/schemas": "npm:^29.6.3" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f - languageName: node - linkType: hard - "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -10160,7 +9946,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.3.1": +"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.3.1": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 @@ -10468,16 +10254,6 @@ __metadata: languageName: node linkType: hard -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" - dependencies: - indent-string: "npm:^4.0.0" - strip-indent: "npm:^3.0.0" - checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae - languageName: node - linkType: hard - "redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": version: 1.2.0 resolution: "redis-errors@npm:1.2.0" @@ -11387,15 +11163,6 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a - languageName: node - linkType: hard - "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -11638,15 +11405,6 @@ __metadata: languageName: node linkType: hard -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: "npm:^1.0.0" - checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 - languageName: node - linkType: hard - "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -12108,44 +11866,6 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.3.2": - version: 29.3.2 - resolution: "ts-jest@npm:29.3.2" - dependencies: - bs-logger: "npm:^0.2.6" - ejs: "npm:^3.1.10" - fast-json-stable-stringify: "npm:^2.1.0" - jest-util: "npm:^29.0.0" - json5: "npm:^2.2.3" - lodash.memoize: "npm:^4.1.2" - make-error: "npm:^1.3.6" - semver: "npm:^7.7.1" - type-fest: "npm:^4.39.1" - yargs-parser: "npm:^21.1.1" - peerDependencies: - "@babel/core": ">=7.0.0-beta.0 <8" - "@jest/transform": ^29.0.0 - "@jest/types": ^29.0.0 - babel-jest: ^29.0.0 - jest: ^29.0.0 - typescript: ">=4.3 <6" - peerDependenciesMeta: - "@babel/core": - optional: true - "@jest/transform": - optional: true - "@jest/types": - optional: true - babel-jest: - optional: true - esbuild: - optional: true - bin: - ts-jest: cli.js - checksum: 10c0/84762720dbef45c1644348d67d0dcb8b7ad6369a16628c4752aceeb47f0ccdad63ae14485048b641c20ce096337a160ab816881361ef5517325bac6a5b3756e0 - languageName: node - linkType: hard - "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0" @@ -12200,13 +11920,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^4.39.1": - version: 4.39.1 - resolution: "type-fest@npm:4.39.1" - checksum: 10c0/f5bf302eb2e2f70658be1757aa578f4a09da3f65699b0b12b7ae5502ccea76e5124521a6e6b69540f442c3dc924c394202a2ab58718d0582725c7ac23c072594 - languageName: node - linkType: hard - "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -13178,7 +12891,7 @@ __metadata: languageName: node linkType: hard -"workbox-precaching@npm:7.3.0, workbox-precaching@npm:^7.0.0": +"workbox-precaching@npm:7.3.0": version: 7.3.0 resolution: "workbox-precaching@npm:7.3.0" dependencies: @@ -13373,13 +13086,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"