summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.eslintrc.yml3
-rw-r--r--app/assets/javascripts/vue_shared/components/bar_chart.vue7
-rw-r--r--app/assets/stylesheets/framework/common.scss1
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--app/models/ci/persistent_ref.rb2
-rw-r--r--changelogs/unreleased/32959-dismissal-ux-improvement.yml5
-rw-r--r--changelogs/unreleased/sh-fix-issue-34366.yml5
-rw-r--r--config/initializers/sidekiq.rb5
-rw-r--r--lib/gitlab/ci/ansi2json/converter.rb7
-rw-r--r--lib/gitlab/ci/ansi2json/result.rb22
-rw-r--r--package.json4
-rw-r--r--spec/lib/gitlab/ci/ansi2json/result_spec.rb42
-rw-r--r--spec/models/ci/build_runner_session_spec.rb20
-rw-r--r--spec/models/ci/persistent_ref_spec.rb4
-rw-r--r--yarn.lock106
15 files changed, 186 insertions, 49 deletions
diff --git a/.eslintrc.yml b/.eslintrc.yml
index e131d4c07d1..db03486e9fb 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -30,7 +30,10 @@ rules:
no-else-return:
- error
- allowElseIf: true
+ import/no-cycle: warn
+ import/no-unresolved: warn
import/no-useless-path-segments: off
+ import/order: warn
lines-between-class-members: off
# Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother
vue/no-confusing-v-for-v-if: error
diff --git a/app/assets/javascripts/vue_shared/components/bar_chart.vue b/app/assets/javascripts/vue_shared/components/bar_chart.vue
index eabf5d4bf60..25d7bfe515c 100644
--- a/app/assets/javascripts/vue_shared/components/bar_chart.vue
+++ b/app/assets/javascripts/vue_shared/components/bar_chart.vue
@@ -55,13 +55,13 @@ export default {
vbWidth: 0,
vbHeight: 0,
vpWidth: 0,
- vpHeight: 350,
- preserveAspectRatioType: 'xMidYMid meet',
+ vpHeight: 200,
+ preserveAspectRatioType: 'xMidYMin meet',
containerMargin: {
leftRight: 30,
},
viewBoxMargin: {
- topBottom: 150,
+ topBottom: 100,
},
panX: 0,
xScale: {},
@@ -274,6 +274,7 @@ export default {
<div ref="svgContainer" :class="activateGrabCursor" class="svg-graph-container">
<svg
ref="baseSvg"
+ class="svg-graph overflow-visible pt-5"
:width="vpWidth"
:height="vpHeight"
:viewBox="svgViewBox"
diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss
index 31ea59df4c5..9a15505dd25 100644
--- a/app/assets/stylesheets/framework/common.scss
+++ b/app/assets/stylesheets/framework/common.scss
@@ -442,6 +442,7 @@ img.emoji {
.ws-normal { white-space: normal; }
.ws-pre-wrap { white-space: pre-wrap; }
.overflow-auto { overflow: auto; }
+.overflow-visible { overflow: visible; }
.d-flex-center {
display: flex;
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 7d3cb62e4ee..5192f85ad8d 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -53,7 +53,7 @@ module Ci
has_one :runner_session, class_name: 'Ci::BuildRunnerSession', validate: true, inverse_of: :build
- accepts_nested_attributes_for :runner_session
+ accepts_nested_attributes_for :runner_session, update_only: true
accepts_nested_attributes_for :job_variables
delegate :url, to: :runner_session, prefix: true, allow_nil: true
diff --git a/app/models/ci/persistent_ref.rb b/app/models/ci/persistent_ref.rb
index 54c3135ac9e..10d7795be2b 100644
--- a/app/models/ci/persistent_ref.rb
+++ b/app/models/ci/persistent_ref.rb
@@ -22,7 +22,7 @@ module Ci
end
def create
- return unless enabled? && !exist?
+ return unless enabled?
create_ref(sha, path)
rescue => e
diff --git a/changelogs/unreleased/32959-dismissal-ux-improvement.yml b/changelogs/unreleased/32959-dismissal-ux-improvement.yml
new file mode 100644
index 00000000000..20f0af549d3
--- /dev/null
+++ b/changelogs/unreleased/32959-dismissal-ux-improvement.yml
@@ -0,0 +1,5 @@
+---
+title: Improve UX for vulnerability dismissal note
+merge_request: 20768
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-fix-issue-34366.yml b/changelogs/unreleased/sh-fix-issue-34366.yml
new file mode 100644
index 00000000000..efc19f8392e
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-issue-34366.yml
@@ -0,0 +1,5 @@
+---
+title: Fix error in updating runner session
+merge_request: 20902
+author:
+type: fixed
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 35e67e04bfb..b4a1e0da41a 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -118,8 +118,5 @@ end
Sidekiq.configure_client do |config|
config.redis = queues_config_hash
- config.client_middleware do |chain|
- chain.add Gitlab::SidekiqMiddleware::CorrelationInjector
- chain.add Gitlab::SidekiqStatus::ClientMiddleware
- end
+ config.client_middleware(&Gitlab::SidekiqMiddleware.client_configurator)
end
diff --git a/lib/gitlab/ci/ansi2json/converter.rb b/lib/gitlab/ci/ansi2json/converter.rb
index cbda3808b86..0373a12ab69 100644
--- a/lib/gitlab/ci/ansi2json/converter.rb
+++ b/lib/gitlab/ci/ansi2json/converter.rb
@@ -37,16 +37,13 @@ module Gitlab
flush_current_line
- # TODO: replace OpenStruct with a better type
- # https://gitlab.com/gitlab-org/gitlab/issues/34305
- OpenStruct.new(
+ Gitlab::Ci::Ansi2json::Result.new(
lines: @lines,
state: @state.encode,
append: append,
truncated: truncated,
offset: start_offset,
- size: stream.tell - start_offset,
- total: stream.size
+ stream: stream
)
end
diff --git a/lib/gitlab/ci/ansi2json/result.rb b/lib/gitlab/ci/ansi2json/result.rb
new file mode 100644
index 00000000000..9b573882a52
--- /dev/null
+++ b/lib/gitlab/ci/ansi2json/result.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+# Convertion result object class
+module Gitlab
+ module Ci
+ module Ansi2json
+ class Result
+ attr_reader :lines, :state, :append, :truncated, :offset, :size, :total
+
+ def initialize(lines:, state:, append:, truncated:, offset:, stream:)
+ @lines = lines
+ @state = state
+ @append = append
+ @truncated = truncated
+ @offset = offset
+ @size = stream.tell - offset
+ @total = stream.size
+ end
+ end
+ end
+ end
+end
diff --git a/package.json b/package.json
index 6e9df140b2a..d105fd2c210 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"check-dependencies": "scripts/frontend/check_dependencies.sh",
"clean": "rm -rf public/assets tmp/cache/*-loader",
"dev-server": "NODE_OPTIONS=\"--max-old-space-size=3584\" nodemon -w 'config/webpack.config.js' --exec 'webpack-dev-server --config config/webpack.config.js'",
- "eslint": "eslint --max-warnings 0 --report-unused-disable-directives --ext .js,.vue .",
+ "eslint": "eslint --max-warnings 900 --report-unused-disable-directives --ext .js,.vue .",
"eslint-fix": "eslint --max-warnings 0 --report-unused-disable-directives --ext .js,.vue --fix .",
"eslint-report": "eslint --max-warnings 0 --ext .js,.vue --format html --output-file ./eslint-report.html --no-inline-config .",
"file-coverage": "scripts/frontend/file_test_coverage.js",
@@ -156,7 +156,7 @@
"eslint": "~5.9.0",
"eslint-import-resolver-jest": "^2.1.1",
"eslint-import-resolver-webpack": "^0.10.1",
- "eslint-plugin-import": "^2.14.0",
+ "eslint-plugin-import": "^2.18.2",
"eslint-plugin-jasmine": "^2.10.1",
"eslint-plugin-jest": "^22.3.0",
"eslint-plugin-no-jquery": "^2.1.0",
diff --git a/spec/lib/gitlab/ci/ansi2json/result_spec.rb b/spec/lib/gitlab/ci/ansi2json/result_spec.rb
new file mode 100644
index 00000000000..5b7b5481400
--- /dev/null
+++ b/spec/lib/gitlab/ci/ansi2json/result_spec.rb
@@ -0,0 +1,42 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Ci::Ansi2json::Result do
+ let(:stream) { StringIO.new('hello') }
+ let(:state) { Gitlab::Ci::Ansi2json::State.new(nil, stream.size) }
+ let(:offset) { 0 }
+ let(:params) do
+ { lines: [], state: state, append: false, truncated: false, offset: offset, stream: stream }
+ end
+
+ subject { described_class.new(params) }
+
+ describe '#size' do
+ before do
+ stream.seek(5) # move stream cursor to the end
+ end
+
+ context 'when offset is at the start' do
+ let(:offset) { 0 }
+
+ it 'returns the full size' do
+ expect(subject.size).to eq(5)
+ end
+ end
+
+ context 'when offset is not zero' do
+ let(:offset) { 2 }
+
+ it 'returns the remaining size' do
+ expect(subject.size).to eq(3)
+ end
+ end
+ end
+
+ describe '#total' do
+ it 'returns size of stread' do
+ expect(subject.total).to eq(5)
+ end
+ end
+end
diff --git a/spec/models/ci/build_runner_session_spec.rb b/spec/models/ci/build_runner_session_spec.rb
index e51fd009f50..cdf56f24cd7 100644
--- a/spec/models/ci/build_runner_session_spec.rb
+++ b/spec/models/ci/build_runner_session_spec.rb
@@ -4,6 +4,7 @@ require 'spec_helper'
describe Ci::BuildRunnerSession, model: true do
let!(:build) { create(:ci_build, :with_runner_session) }
+ let(:url) { 'https://new.example.com' }
subject { build.runner_session }
@@ -12,6 +13,25 @@ describe Ci::BuildRunnerSession, model: true do
it { is_expected.to validate_presence_of(:build) }
it { is_expected.to validate_presence_of(:url).with_message('must be a valid URL') }
+ context 'nested attribute assignment' do
+ it 'creates a new session' do
+ simple_build = create(:ci_build)
+ simple_build.runner_session_attributes = { url: url }
+ simple_build.save!
+
+ session = simple_build.reload.runner_session
+ expect(session).to be_a(Ci::BuildRunnerSession)
+ expect(session.url).to eq(url)
+ end
+
+ it 'updates session with new attributes' do
+ build.runner_session_attributes = { url: url }
+ build.save!
+
+ expect(build.reload.runner_session.url).to eq(url)
+ end
+ end
+
describe '#terminal_specification' do
let(:specification) { subject.terminal_specification }
diff --git a/spec/models/ci/persistent_ref_spec.rb b/spec/models/ci/persistent_ref_spec.rb
index 71e0b03dff9..ece478fdd36 100644
--- a/spec/models/ci/persistent_ref_spec.rb
+++ b/spec/models/ci/persistent_ref_spec.rb
@@ -73,8 +73,8 @@ describe Ci::PersistentRef do
pipeline.persistent_ref.create
end
- it 'does not create a persistent ref' do
- expect(project.repository).not_to receive(:create_ref)
+ it 'overwrites a persistent ref' do
+ expect(project.repository).to receive(:create_ref).and_call_original
subject
end
diff --git a/yarn.lock b/yarn.lock
index 6a6360ca4dc..c2f8345c0a8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1637,6 +1637,14 @@ array-flatten@^2.1.0:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296"
integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
array-union@^1.0.1, array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -3659,7 +3667,7 @@ default-require-extensions@^2.0.0:
dependencies:
strip-bom "^3.0.0"
-define-properties@^1.1.2:
+define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -4111,22 +4119,26 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.5.1, es-abstract@^1.6.1:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
- integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
+ integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
dependencies:
- es-to-primitive "^1.2.0"
+ es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
+ has-symbols "^1.0.1"
is-callable "^1.1.4"
is-regex "^1.0.4"
- object-keys "^1.0.12"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
-es-to-primitive@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
- integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
@@ -4213,10 +4225,10 @@ eslint-import-resolver-webpack@^0.10.1:
resolve "^1.4.0"
semver "^5.3.0"
-eslint-module-utils@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49"
- integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==
+eslint-module-utils@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c"
+ integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==
dependencies:
debug "^2.6.8"
pkg-dir "^2.0.0"
@@ -4231,21 +4243,22 @@ eslint-plugin-filenames@^1.3.2:
lodash.snakecase "4.1.1"
lodash.upperfirst "4.3.1"
-eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.16.0:
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f"
- integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==
+eslint-plugin-import@^2.16.0, eslint-plugin-import@^2.18.2:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
dependencies:
+ array-includes "^3.0.3"
contains-path "^0.1.0"
debug "^2.6.9"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.2"
- eslint-module-utils "^2.3.0"
+ eslint-module-utils "^2.4.0"
has "^1.0.3"
- lodash "^4.17.11"
minimatch "^3.0.4"
+ object.values "^1.1.0"
read-pkg-up "^2.0.0"
- resolve "^1.9.0"
+ resolve "^1.11.0"
eslint-plugin-jasmine@^2.10.1:
version "2.10.1"
@@ -5369,10 +5382,10 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-has-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
- integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+has-symbols@^1.0.0, has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
has-unicode@^2.0.0:
version "2.0.1"
@@ -8168,7 +8181,12 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
-object-keys@^1.0.11, object-keys@^1.0.12:
+object-inspect@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
+ integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+
+object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
@@ -8215,6 +8233,16 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
+object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -9723,10 +9751,10 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-resolve@1.x, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.9.0:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
- integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
+resolve@1.x, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
dependencies:
path-parse "^1.0.6"
@@ -10518,6 +10546,22 @@ string-width@^4.1.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^5.2.0"
+string.prototype.trimleft@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
+ integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
+string.prototype.trimright@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
+ integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"