diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index 6dd4fb18b024d..b68f5c72aa6aa 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -3,31 +3,52 @@ class StatusesIndex < Chewy::Index include FormattingHelper +# settings index: { refresh_interval: '30s' }, analysis: { +# filter: { +# english_stop: { +# type: 'stop', +# stopwords: '_english_', +# }, +# english_stemmer: { +# type: 'stemmer', +# language: 'english', +# }, +# english_possessive_stemmer: { +# type: 'stemmer', +# language: 'possessive_english', +# }, +# }, +# analyzer: { +# content: { +# tokenizer: 'uax_url_email', +# filter: %w( +# english_possessive_stemmer +# lowercase +# asciifolding +# cjk_width +# english_stop +# english_stemmer +# ), +# }, +# }, +# } + settings index: { refresh_interval: '30s' }, analysis: { - filter: { - english_stop: { - type: 'stop', - stopwords: '_english_', - }, - english_stemmer: { - type: 'stemmer', - language: 'english', - }, - english_possessive_stemmer: { - type: 'stemmer', - language: 'possessive_english', + tokenizer: { + kuromoji_user_dict: { + type: 'kuromoji_tokenizer', + user_dictionary: 'userdic.txt', }, }, analyzer: { content: { - tokenizer: 'uax_url_email', + type: 'custom', + tokenizer: 'kuromoji_user_dict', filter: %w( - english_possessive_stemmer - lowercase - asciifolding + kuromoji_baseform + kuromoji_stemmer cjk_width - english_stop - english_stemmer + lowercase ), }, }, diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index 4d20aeb10fca6..2b0ae5a73fcc7 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -3,7 +3,7 @@ class Api::V2::SearchController < Api::BaseController include Authorization - RESULTS_LIMIT = 20 + RESULTS_LIMIT = 50 before_action -> { authorize_if_got_token! :read, :'read:search' } before_action :validate_search_params! diff --git a/app/javascript/styles/crazynewworld-blue.scss b/app/javascript/styles/crazynewworld-blue.scss new file mode 100644 index 0000000000000..aefb3b4d9d151 --- /dev/null +++ b/app/javascript/styles/crazynewworld-blue.scss @@ -0,0 +1,5 @@ +@import 'crazynewworld/variables-blue'; +@import 'application'; +@import 'crazynewworld/compact'; +@import 'crazynewworld/transparent_background'; + diff --git a/app/javascript/styles/crazynewworld.scss b/app/javascript/styles/crazynewworld.scss new file mode 100644 index 0000000000000..9674be524c9d9 --- /dev/null +++ b/app/javascript/styles/crazynewworld.scss @@ -0,0 +1,4 @@ +@import 'crazynewworld/variables'; +@import 'application'; +@import 'crazynewworld/compact'; +@import 'crazynewworld/transparent_background'; diff --git a/app/javascript/styles/crazynewworld/background-blue.jpg b/app/javascript/styles/crazynewworld/background-blue.jpg new file mode 100644 index 0000000000000..02bec72193298 Binary files /dev/null and b/app/javascript/styles/crazynewworld/background-blue.jpg differ diff --git a/app/javascript/styles/crazynewworld/background.jpg b/app/javascript/styles/crazynewworld/background.jpg new file mode 100644 index 0000000000000..29451a45489fd Binary files /dev/null and b/app/javascript/styles/crazynewworld/background.jpg differ diff --git a/app/javascript/styles/crazynewworld/background2.jpg b/app/javascript/styles/crazynewworld/background2.jpg new file mode 100644 index 0000000000000..d9cc9881cd01f Binary files /dev/null and b/app/javascript/styles/crazynewworld/background2.jpg differ diff --git a/app/javascript/styles/crazynewworld/background2_bright.jpg b/app/javascript/styles/crazynewworld/background2_bright.jpg new file mode 100755 index 0000000000000..53e81a86785d2 Binary files /dev/null and b/app/javascript/styles/crazynewworld/background2_bright.jpg differ diff --git a/app/javascript/styles/crazynewworld/background_bright.jpg b/app/javascript/styles/crazynewworld/background_bright.jpg new file mode 100644 index 0000000000000..de397c3790592 Binary files /dev/null and b/app/javascript/styles/crazynewworld/background_bright.jpg differ diff --git a/app/javascript/styles/crazynewworld/compact.scss b/app/javascript/styles/crazynewworld/compact.scss new file mode 100644 index 0000000000000..352a3d78ae389 --- /dev/null +++ b/app/javascript/styles/crazynewworld/compact.scss @@ -0,0 +1,33 @@ +/* 通知を一番左の列に組み込み */ + +@media screen and (min-width:741px) { + + .drawer { + width: 25% !important; + height: 510px !important; + overflow: visible !important; + } + + .column { + flex: auto !important; + } + + .column:nth-child(3) { + position: fixed !important; + margin-top: 500px !important; + padding-left: 10px !important; + height: calc(100% - 500px) !important; + left: 0px !important; + width: 25% !important; + } + + .column:nth-child(3) + div .mastodon-column-container { + height: auto !important; + } + + div.column-icon.collapsable + div { + overflow: scroll !important; + } + +} + diff --git a/app/javascript/styles/crazynewworld/transparent_background.scss b/app/javascript/styles/crazynewworld/transparent_background.scss new file mode 100644 index 0000000000000..4a98e9463f9ab --- /dev/null +++ b/app/javascript/styles/crazynewworld/transparent_background.scss @@ -0,0 +1,540 @@ +/* 半透明デザイン */ + +::-webkit-scrollbar-thumb { + background: lighten($ui-base-color, 20%); +} + +::-webkit-scrollbar-thumb:hover { + background: lighten($ui-base-color, 28%); +} + +::-webkit-scrollbar-thumb:active { + background: lighten($ui-base-color, 20%); +} + +.compose-panel { + .navigation-bar, .compose-form { + background: rgba(darken($ui-base-color, 8%), 0.7); + } +} + + +body { + &.no-reduce-motion { + background: url($wallpaper) no-repeat fixed center top/cover; + } + + &.app-body { + background: url($wallpaper) no-repeat fixed center top/cover; + } + + &.about-body { + background: url($wallpaper) no-repeat fixed center top/cover; + } + + &.tag-body { + background: url($wallpaper) no-repeat fixed center top/cover; + } + + &.admin { + background: url($wallpaper) no-repeat fixed center top/cover; + } + + &.error { + background: url($wallpaper) no-repeat fixed center top/cover; + } +} + +@media screen and (max-width:740px) { + body.about-body { + background:none; + + &::before { + content: ""; + display: block; + position: fixed; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + background: url($wallpaper) center/cover no-repeat; + -webkit-background-size: cover; + } + } +} + +.focusable { + &:focus { + .detailed-status, + .detailed-status__action-bar { + background: rgba(lighten($ui-base-color, 8%), 0.3); + } + } +} + +.status-card { + background: rgba(darken($ui-base-color, 15%), 0.3); +} + +.detailed-status { + background: rgba(lighten($ui-base-color, 4%), 0.3); + + &__action-bar { + background: rgba(lighten($ui-base-color, 4%), 0.3); + } +} + +.account__header { + background: rgba(darken($ui-base-color, 15%), 0.2); + background-size: cover; + + & > div { + background: rgba(darken($ui-base-color, 15%), 0.2); + background-size: cover; + } + + &__fields { + dt { + background: rgba(darken($ui-base-color, 15%), 0.7); + } + } +} + +.account__section-headline { + background: rgba(darken($ui-base-color, 8%), 0.8); +} + +.column { + > .scrollable { + background: rgba(darken($ui-base-color, 8%), 0.7) + } +} + +.ui { + background: rgba(darken($ui-base-color, 15%), 0.1); +} + +.drawer__inner { + background: rgba(darken($ui-base-color, 8%), 0.7); +} + +.drawer__inner__mastodon { + background: transparent url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto; +} + +.drawer__header { + background: rgba(darken($ui-base-color, 15%), 0.7); +} + +.tabs-bar { + background: rgba(darken($ui-base-color, 15%), 0.85); + + &__link { + border-bottom: none; + + &.active { + background: none; + border-bottom: 2px solid $highlight-text-color; + &:hover { + @media screen and (min-width: 631px) { + background: lighten($ui-base-color, 14%); + } + } + } + } +} + +.column-back-button { + background: rgba(darken($ui-base-color, 15%), 0.7); +} + +.column-link { + background: rgba($ui-base-color, 0.7); + + &:hover { + background: rgba(lighten($ui-base-color, 15%), 0.85); + } + +} + +.column-link--transparent { + background: rgba(darken($ui-base-color, 8%), 0.7); + &.active { + background: rgba(darken($ui-base-color, 8%), 0.7); + &:hover { + background: lighten($ui-base-color, 14%); + } + } +} + +.column-subheading { + background: rgba(darken($ui-base-color, 8%), 0.7); +} + +.getting-started { + background: rgba(darken($ui-base-color, 8%), 0.7); + + &__wrapper { + background: rgba(darken($ui-base-color, 8%), 0.7); + } + + &__footer { + p { + color: $classic-primary-color; + a { + color: $classic-primary-color; + } + } + } + + &__trends { + background: rgba(darken($ui-base-color, 8%), 0.7); + } +} + +.column-header { + background: rgba(darken($ui-base-color, 15%), 0.7); + + &__button { + background: transparent; + + &.active { + background: rgba(lighten($ui-base-color, 8%), 0.85); + + &:hover { + background: rgba(lighten($ui-base-color, 14%), 0.85); + } + } + } + + &__back-button { + background: transparent; + } + + &__collapsible-inner { + background: rgba(darken($ui-base-color, 15%), 0.7); + } +} + +.search__input { + background: rgba(darken($ui-base-color, 15%), 0.7); + + &:focus { + background: rgba(darken($ui-base-color, 5%), 0.7); + } +} + +.empty-column-indicator, +.error-column { + background: rgba($ui-base-color, 0.7) +} + +.account-section-headline { + background: rgba(lighten($ui-base-color, 2%), 0.7); +} + +.input.required { + background: rgba(darken($ui-base-color, 15%), 0.5); +} + +.announcements { + background: rgba(darken($ui-base-color, 15%), 0.7); + border-top: 1px solid $ui-base-color; +} + +.landing-page { + p, + li { + color: lighten($ui-primary-color, 10%); + } + + em { + color: lighten($ui-primary-color, 20%); + } + + h1 { + small { + color: darken($ui-secondary-color, 20%); + } + } + + .header-wrapper { + background: transparent; + + &.compact { + background: transparent; + } + } + + .header { + .links { + a { + color: lighten($ui-primary-color, 20%); + } + } + + .hero { + .simple_form, + .closed-registrations-message { + background: rgba(lighten($ui-base-color, 8%), 0.7); + } + } + } + + .about-short { + background: rgba(darken($ui-base-color, 15%), 0.7); + } + + .information-board { + background: rgba(darken($ui-base-color, 15%), 0.7); + + .panel { + background: rgba(darken($ui-base-color, 15%), 0.7); + } + } + + .features { + background: rgba(darken($ui-base-color, 15%), 0.8); + + #mastodon-timeline { + background: transparent; + } + } + + .extended-description { + background: rgba(darken($ui-base-color, 15%), 0.8); + } + + .footer-links { + background: rgba(darken($ui-base-color, 15%), 0.8); + } + + @media screen and (max-width: 675px) { + .header { + .links { + background: transparent; + } + + .hero { + .simple_form, + .closed-registrations-message { + background: transparent; + } + } + } + } + + &.tag-page { + .features { + .container { + .about-mastodon { + .about-hashtag { + background: transparent; + } + } + } + } + } + + #mastodon-timeline, .landing-page__forms, .landing-page__information, .landing-page__call-to-action { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + + @media screen and (max-width: 700px) { + .grid .column-1 { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + .landing-page__forms { + background-color: transparent; + } + } + + .container-alt { + background: transparent; + } +} + +.landing { + .hero-widget__footer { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } +} + +.table { + & > tbody > tr:nth-child(odd) > td, + & > tbody > tr:nth-child(odd) > th { + background: rgba($ui-base-color, 0.75); + } +} + +.admin-wrapper { + .sidebar-wrapper { + background: transparent; + &__inner { + background: transparent; + } + } + + .sidebar { + ul { + a { + &.selected { + background: rgba($ui-base-color, 0.75); + } + } + + ul { + background: rgba(darken($ui-base-color, 4%), 0.85); + } + } + } + + .content { + h2, h4, hr { + border-bottom: 1px solid $darker-text-color; + } + } + + .content-wrapper { + background: rgba($ui-base-color, 0.75); + } + + .dashboard__counters { + div { + a { + background: rgba(darken($ui-base-color, 4%), 0.85); + } + div { + background: rgba(darken($ui-base-color, 4%), 0.85); + } + } + } +} + +/* publicページ */ + +.public-layout { + .public-account-header__bar::before { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + + .account__section-headline { + background-color: rgba(darken($ui-base-color, 15%), 0.85); + } + + .public-account-bio { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + + .header { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + + .footer { + .grid { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + padding: 10px; + border-radius: 4px; + } + } +} + +.activity-stream { + .entry { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } +} + +.hero-widget__text { + background-color: rgba(darken($ui-base-color, 15%), 0.8); +} + +.account__header__fields { + dt { + background: rgba(darken($ui-base-color, 8%), 0.8); + } +} + +.endorsements-widget { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + border-radius: 4px; + + h4 { + background-color: rgba(darken($ui-base-color, 15%), 0.85); + border-radius: 4px 4px 0 0; + } +} + +.card__bar { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +.container .footer .grid .column-4 h4 { + visibility: hidden; +} + +/* about/more */ + +.box-widget, .contact-widget, .landing-page__information.contact-widget { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +.landing-page__call-to-action { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +.table-of-contents { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +/* directory */ + +.page-header { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +.directory { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + + &__tag { + a { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + } + + &__card { + &__extra { + background-color: rgba(darken($ui-base-color, 8%), 0.7); + } + &__bar { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + } +} + +.filter-form { + background-color: rgba(darken($ui-base-color, 8%), 0.7); +} + +.nothing-here { + background-color: rgba(darken($ui-base-color, 15%), 0.7); +} + +/* public tag timeline */ + +.detailed-status { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + + &__action-bar { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } +} + +@media screen and (max-width:600px) { + .public-layout { + .public-account-header__bar { + background-color: rgba(darken($ui-base-color, 15%), 0.7); + } + } +} diff --git a/app/javascript/styles/crazynewworld/variables-blue.scss b/app/javascript/styles/crazynewworld/variables-blue.scss new file mode 100644 index 0000000000000..ff3aac407ab54 --- /dev/null +++ b/app/javascript/styles/crazynewworld/variables-blue.scss @@ -0,0 +1,3 @@ +// Custom wallpaper +$wallpaper: "crazynewworld/background-blue.jpg"; + diff --git a/app/javascript/styles/crazynewworld/variables.scss b/app/javascript/styles/crazynewworld/variables.scss new file mode 100644 index 0000000000000..8a6b099350924 --- /dev/null +++ b/app/javascript/styles/crazynewworld/variables.scss @@ -0,0 +1,2 @@ +// Custom wallpaper +$wallpaper: "crazynewworld/background2.jpg"; diff --git a/app/javascript/styles/mastodon-blue.scss b/app/javascript/styles/mastodon-blue.scss new file mode 100644 index 0000000000000..7ba128815ccb0 --- /dev/null +++ b/app/javascript/styles/mastodon-blue.scss @@ -0,0 +1,4 @@ +@import 'crazynewworld/variables-blue'; +@import 'application'; +@import 'crazynewworld/transparent_background'; + diff --git a/app/javascript/styles/mastodon-green.scss b/app/javascript/styles/mastodon-green.scss new file mode 100644 index 0000000000000..c9412fff8e863 --- /dev/null +++ b/app/javascript/styles/mastodon-green.scss @@ -0,0 +1,3 @@ +@import 'crazynewworld/variables'; +@import 'application'; +@import 'crazynewworld/transparent_background'; diff --git a/app/javascript/styles/mastodon/basics.scss b/app/javascript/styles/mastodon/basics.scss index a344c7fa4faed..9422e211cbd70 100644 --- a/app/javascript/styles/mastodon/basics.scss +++ b/app/javascript/styles/mastodon/basics.scss @@ -51,6 +51,8 @@ body { height: 100%; } + background: $ui-base-color; + &.with-modals--active { overflow-y: hidden; } @@ -166,8 +168,9 @@ button { & > noscript { display: flex; width: 100%; + height: 100%; align-items: center; - justify-content: center; + justify-content: center; outline: 0 !important; } diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 643e6828d2ca9..79d54a10c1249 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -7,7 +7,7 @@ class FeedManager include Redisable # Maximum number of items stored in a single feed - MAX_ITEMS = 800 + MAX_ITEMS = 6400 # Number of items in the feed since last reblog of status # before the new reblog will be inserted. Must be <= MAX_ITEMS diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index f4f9177996fe4..c82c52db47910 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -20,24 +20,30 @@ def host_to_url(str) p.base_uri :none p.default_src :none p.frame_ancestors :none - p.font_src :self, assets_host + p.font_src :self, assets_host, :data p.img_src :self, :https, :data, :blob, assets_host p.style_src :self, assets_host + p.style_src_attr :unsafe_inline p.media_src :self, :https, :data, assets_host p.frame_src :self, :https p.manifest_src :self, assets_host p.form_action :self - p.child_src :self, :blob, assets_host - p.worker_src :self, :blob, assets_host - + p.report_uri 'https://mastodon.crazynewworld.net/cspcheck/wtf' + if Rails.env.development? webpacker_urls = %w(ws http).map { |protocol| "#{protocol}#{Webpacker.dev_server.https? ? 's' : ''}://#{Webpacker.dev_server.host_with_port}" } p.connect_src :self, :data, :blob, assets_host, media_host, Rails.configuration.x.streaming_api_base_url, *webpacker_urls p.script_src :self, :unsafe_inline, :unsafe_eval, assets_host + p.child_src :self, :blob, assets_host + p.worker_src :self, :blob, assets_host + p.child_src :self, :blob, assets_host else p.connect_src :self, :data, :blob, assets_host, media_host, Rails.configuration.x.streaming_api_base_url p.script_src :self, assets_host, "'wasm-unsafe-eval'" + p.child_src :self, :blob, assets_host + p.worker_src :self, :blob, assets_host + p.child_src :self, :blob, assets_host end end diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 5cc4e9380af24..b3e938b0e8ee0 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -82,9 +82,9 @@ def paging_request? req.authenticated_user_id if req.post? && req.path.match?(/\A\/api\/v\d+\/media\z/i) end - throttle('throttle_media_proxy', limit: 30, period: 10.minutes) do |req| - req.throttleable_remote_ip if req.path.start_with?('/media_proxy') - end +# throttle('throttle_media_proxy', limit: 30, period: 10.minutes) do |req| +# req.throttleable_remote_ip if req.path.start_with?('/media_proxy') +# end throttle('throttle_api_sign_up', limit: 5, period: 30.minutes) do |req| req.throttleable_remote_ip if req.post? && req.path == '/api/v1/accounts' diff --git a/config/locales/en.yml b/config/locales/en.yml index 2c292c42d44f6..0ee6ddc17d2e7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1672,6 +1672,10 @@ en: contrast: Mastodon (High contrast) default: Mastodon (Dark) mastodon-light: Mastodon (Light) + mastodon-green: Mastodon (Green) + mastodon-blue: Mastodon (Blue) + crazynewworld: Crazynewworld (Green) + crazynewworld-blue: Crazynewworld (Blue) time: formats: default: "%b %d, %Y, %H:%M" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index dddce85671cc3..e9826ad17addc 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1582,6 +1582,10 @@ ja: contrast: Mastodon (ハイコントラスト) default: Mastodon (ダーク) mastodon-light: Mastodon (ライト) + mastodon-green: Mastodon (緑) + mastodon-blue: Mastodon (青) + crazynewworld: Crazynewworld (緑) + crazynewworld-blue: Crazynewworld (青) time: formats: default: "%Y年%m月%d日 %H:%M" diff --git a/config/settings.yml b/config/settings.yml index 67297c26ceafc..4d32bfd00ffd5 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -16,7 +16,7 @@ defaults: &defaults show_staff_badge: true preview_sensitive_media: false noindex: false - theme: 'default' + theme: 'mastodon-green' trends: true trends_as_landing_page: true trendable_by_default: false diff --git a/config/themes.yml b/config/themes.yml index 9c21c9459f3bc..7584b17877f14 100644 --- a/config/themes.yml +++ b/config/themes.yml @@ -1,3 +1,7 @@ default: styles/application.scss contrast: styles/contrast.scss mastodon-light: styles/mastodon-light.scss +mastodon-green: styles/mastodon-green.scss +mastodon-blue: styles/mastodon-blue.scss +crazynewworld: styles/crazynewworld.scss +crazynewworld-blue: styles/crazynewworld-blue.scss diff --git a/package.json b/package.json index 49e9c7f743d1a..0e2206dd912bb 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "react-test-renderer": "^18.2.0", "stylelint": "^15.6.2", "stylelint-config-standard-scss": "^9.0.0", - "typescript": "^5.0.4", + "typescript": "^5.1.3", "webpack-dev-server": "^3.11.3", "yargs": "^17.7.2" }, diff --git a/yarn.lock b/yarn.lock index fd751c0419294..ae0119e0f7336 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11659,10 +11659,10 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -"typescript@^4.7 || 5", typescript@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" - integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +"typescript@^4.7 || 5", typescript@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== unbox-primitive@^1.0.2: version "1.0.2"