diff --git a/addons/core/translations/form/en-us.yaml b/addons/core/translations/form/en-us.yaml
index 59e492d0d..8a2286444 100644
--- a/addons/core/translations/form/en-us.yaml
+++ b/addons/core/translations/form/en-us.yaml
@@ -161,3 +161,6 @@ sync-interval:
help: Optional. Number of seconds between the time Boundary syncs hosts in this set.
tags:
label: Tags
+secret-editor:
+ details: This secret is saved but won't be displayed
+ edit: Click to replace this secret
\ No newline at end of file
diff --git a/addons/rose/addon/modifiers/code-mirror.js b/addons/rose/addon/modifiers/code-mirror.js
index 37248c1c8..077d98d25 100644
--- a/addons/rose/addon/modifiers/code-mirror.js
+++ b/addons/rose/addon/modifiers/code-mirror.js
@@ -9,6 +9,8 @@ import 'codemirror/addon/edit/matchbrackets';
import 'codemirror/addon/edit/closebrackets';
import 'codemirror/addon/selection/active-line';
import 'codemirror/addon/display/autorefresh';
+import 'codemirror/addon/lint/lint'
+import 'codemirror/addon/lint/json-lint'
// Here we define default options for the editor.
// These should follow the codemirror configuration types
diff --git a/addons/rose/index.js b/addons/rose/index.js
index 6cf90c285..4e24d8734 100644
--- a/addons/rose/index.js
+++ b/addons/rose/index.js
@@ -11,6 +11,8 @@ module.exports = {
app.import('node_modules/codemirror/lib/codemirror.css');
app.import('node_modules/codemirror/theme/monokai.css');
+ app.import('node_modules/codemirror/addon/lint/lint.css');
+ app.import('node_modules/jsonlint/lib/jsonlint.js');
this.includeHDSStyles(app);
this.includeFlightIcons(app);
diff --git a/addons/rose/package.json b/addons/rose/package.json
index 8daa6aba5..b96762f51 100644
--- a/addons/rose/package.json
+++ b/addons/rose/package.json
@@ -46,6 +46,7 @@
"ember-named-blocks-polyfill": "^0.2.5",
"ember-radio-button": "github:yapplabs/ember-radio-button.git#b2ab65f",
"ember-uuid": "^2.1.0",
+ "jsonlint": "^1.6.3",
"sass": "^1.55.0"
},
"devDependencies": {
diff --git a/ui/admin/.sasslintrc b/ui/admin/.sasslintrc
index fbccde1bf..76ed8341e 100644
--- a/ui/admin/.sasslintrc
+++ b/ui/admin/.sasslintrc
@@ -5,3 +5,4 @@ rules:
mixins-before-declarations: 0
nesting-depth: 0
placeholder-in-extend: 0
+ property-sort-order: 0
diff --git a/ui/admin/app/components/form/field/json-secret/index.hbs b/ui/admin/app/components/form/field/json-secret/index.hbs
new file mode 100644
index 000000000..ba08b1605
--- /dev/null
+++ b/ui/admin/app/components/form/field/json-secret/index.hbs
@@ -0,0 +1,31 @@
+
+ {{#if this.isDisabled}}
+
+
+ {{t 'form.secret-editor.details'}}
+
+ {{else if this.isActionable}}
+
+
+ {{t 'form.secret-editor.edit'}}
+
+
+ {{else}}
+
+
+
+ {{/if}}
+
\ No newline at end of file
diff --git a/ui/admin/app/components/form/field/json-secret/index.js b/ui/admin/app/components/form/field/json-secret/index.js
new file mode 100644
index 000000000..d70539cdb
--- /dev/null
+++ b/ui/admin/app/components/form/field/json-secret/index.js
@@ -0,0 +1,44 @@
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { action } from '@ember/object';
+
+export default class FormFieldJsonSecretComponent extends Component {
+ // =properties
+
+ /**
+ * Tracks when editor should be displayed
+ * @type {boolean}
+ */
+ @tracked editing = false;
+
+ /**
+ * True if viewing the resource after it has been created but not editing it
+ * and displays as a read only state. Since this is a secret editor the secret
+ * value is not displayed and a skeleton view is shown.
+ * @type {boolean}
+ */
+ get isDisabled() {
+ return this.args.disabled;
+ }
+
+ /**
+ * True if editing the resource after it has been created but not editing
+ * the secret value in the Secret Editor. This will present the Secret
+ * Editor as a read only state even when the form is editing the resource.
+ * @type {boolean}
+ */
+ get isActionable() {
+ return this.args.showEditButton && !this.editing;
+ }
+
+ // =actions
+
+ /**
+ * Sets editing to true when Secret Editor
+ * button is clicked in Actionable view
+ */
+ @action
+ enableEditing() {
+ if (!this.args.disabled) this.editing = true;
+ }
+}
\ No newline at end of file
diff --git a/ui/admin/app/components/form/field/json-secret/skeleton/index.hbs b/ui/admin/app/components/form/field/json-secret/skeleton/index.hbs
new file mode 100644
index 000000000..d8f4915c1
--- /dev/null
+++ b/ui/admin/app/components/form/field/json-secret/skeleton/index.hbs
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/ui/admin/app/styles/app.scss b/ui/admin/app/styles/app.scss
index 67bf14b10..9f3fd2b00 100644
--- a/ui/admin/app/styles/app.scss
+++ b/ui/admin/app/styles/app.scss
@@ -1,3 +1,4 @@
+// sass-lint:disable no-color-literals class-name-format
@use 'rose/variables/sizing';
@use 'rose/variables/media';
@use 'rose/utilities/type';
@@ -466,17 +467,17 @@
}
.hds-form-helper-text {
- grid-area: helper-text;
- font-size: sizing.rems(m);
color: var(--token-form-label-color);
+ font-size: sizing.rems(m);
+ grid-area: helper-text;
}
.hds-form-text-input {
background-color: transparent;
border: 0;
grid-area: text-input;
- margin-top: sizing.rems(xs);
line-height: sizing.rems(m) + sizing.rems(xxs);
+ margin-top: sizing.rems(xs);
padding: 0;
}
}
@@ -493,3 +494,109 @@
}
}
}
+
+// json secret editor
+.secret-editor {
+ // Secret Editor body and gutter colors are based on the Monokai color template
+ // and are used for both the Editor and the Skeleton views
+ --button-shadow: #000004;
+ --secret-editor-body: #272822; // body and button background
+ --secret-editor-gutter: #31332b; // gutter background
+ --secret-editor-height: 210px;
+
+ background: var(--secret-editor-body);
+ border-radius: sizing.rems(xxs);
+ height: var(--secret-editor-height);
+ margin-bottom: sizing.rems(l);
+
+ .secret-editor-json {
+ .CodeMirror {
+ border-radius: sizing.rems(xxs);
+ height: var(--secret-editor-height);
+ }
+
+ .CodeMirror-gutters {
+ background: var(--secret-editor-gutter);
+ }
+
+ // override CodeMirror padding to add padding to left of line numbers
+ .CodeMirror-linenumber {
+ padding: 0;
+ }
+ }
+
+ .secret-editor-skeleton-wrapper {
+ // using ui-gray directly so it does not change when
+ // user is in dark mode since the secret editor
+ // does not change theme colors between light and dark
+ color: #{color(ui-gray)};
+ display: flex;
+ height: 100%;
+ position: relative;
+ }
+
+ .secret-editor-skeleton-gutter {
+ background: var(--secret-editor-gutter);
+ border-radius: sizing.rems(xxs) 0 0 sizing.rems(xxs);
+ width: sizing.rems(xxl) + sizing.rems(xxs); // 52
+ }
+
+ .secret-editor-skeleton-body {
+ width: 100%;
+
+ // skeleton text rows for detail and edit views
+ // applies general styles to child div of skeleton-body
+ // then adds dynamic width to each child
+ // depending on the class (e.g., s, m, l)
+ > div {
+ background: var(--secret-editor-gutter);
+ border-radius: sizing.rems(m);
+ height: sizing.rems(xs);
+ margin: sizing.rems(s) - sizing.rems(xxxxs); // 11
+
+ &:first-child {
+ margin-top: sizing.rems(m);
+ }
+
+ &.s {
+ width: 5%;
+ }
+
+ &.m {
+ width: 10%;
+ }
+
+ &.l {
+ width: 15%;
+ }
+
+ &.xl {
+ width: 20%;
+ }
+ }
+ }
+
+ .secret-editor-skeleton-message {
+ font-size: sizing.rems(s) + sizing.rems(xxxs); // 14
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ // centers message with editor body and gutter
+ transform: translate(-50%, -50%);
+ z-index: 1;
+ }
+
+ .rose-button-secret-editor-skeleton-button {
+ background: var(--secret-editor-body);
+ border: sizing.rems(xxxxs) solid var(--ui-gray);
+ border-radius: sizing.rems(xxxs);
+ box-shadow: 0 sizing.rems(xxs) sizing.rems(xxs) var(--button-shadow);
+ // using ui-gray directly so it does not change when
+ // user is in dark mode since the secret editor
+ // does not change theme colors between light and dark
+ color: #{color(ui-gray, 050)};
+ font-size: sizing.rems(s) + sizing.rems(xxxs); // 14
+ height: sizing.rems(xl);
+ padding: 0 sizing.rems(l);
+ }
+}
diff --git a/ui/admin/tests/integration/components/form/field/json-secret-skeleton-test.js b/ui/admin/tests/integration/components/form/field/json-secret-skeleton-test.js
new file mode 100644
index 000000000..8b2db71f5
--- /dev/null
+++ b/ui/admin/tests/integration/components/form/field/json-secret-skeleton-test.js
@@ -0,0 +1,20 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Component | form/field/json-secret/skeleton', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders', async function (assert) {
+ assert.expect(2);
+ await render(hbs`
+
+ Skeleton Message
+
+ `);
+
+ assert.dom('.secret-editor-skeleton-wrapper').isVisible();
+ assert.dom('.secret-editor-skeleton-message').hasText('Skeleton Message');
+ });
+});
\ No newline at end of file
diff --git a/ui/admin/tests/integration/components/form/field/json-secret-test.js b/ui/admin/tests/integration/components/form/field/json-secret-test.js
new file mode 100644
index 000000000..d7f80cdb9
--- /dev/null
+++ b/ui/admin/tests/integration/components/form/field/json-secret-test.js
@@ -0,0 +1,82 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+import { setupIntl } from 'ember-intl/test-support';
+
+module('Integration | Component | form/field/json-secret', function (hooks) {
+ setupRenderingTest(hooks);
+ setupIntl(hooks);
+
+ hooks.beforeEach(function () {
+ this.model = {
+ json_object: '{}',
+ };
+ });
+
+ test('it renders the active editor', async function (assert) {
+ assert.expect(3);
+ await render(hbs`
+
+ `);
+
+ assert.dom('.secret-editor').isVisible();
+ assert.dom('.secret-editor-json').isVisible();
+ assert.dom('.secret-editor-json .CodeMirror-line').hasText(this.model.json_object);
+ });
+
+ test('it renders the disabled editor', async function (assert) {
+ assert.expect(3);
+ await render(hbs`
+
+ `);
+
+ assert.dom('.secret-editor').isVisible();
+ assert.dom('.secret-editor-json').doesNotExist();
+ assert.dom('.secret-editor-skeleton-wrapper').hasText('This secret is saved but won\'t be displayed');
+ });
+
+ test('it renders the actionable editor', async function (assert) {
+ assert.expect(3);
+ await render(hbs`
+
+ `);
+
+ assert.dom('.secret-editor').isVisible();
+ assert.dom('.secret-editor-json').doesNotExist();
+ assert.dom('.secret-editor-skeleton-wrapper').hasText('Click to replace this secret');
+ });
+
+ test('it renders the active editor from the actionable view', async function (assert) {
+ assert.expect(4);
+ await render(hbs`
+
+ `);
+
+ assert.dom('.secret-editor').isVisible();
+ assert.dom('.secret-editor-json').doesNotExist();
+ assert.dom('.secret-editor-skeleton-wrapper').hasText('Click to replace this secret');
+
+ await click('button')
+ assert.dom('.secret-editor-json').isVisible();
+ });
+});
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 6b6dfc36f..eaa2b36c6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4588,14 +4588,13 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
-"@iarna/cli@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641"
- integrity sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA==
+"@iarna/cli@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-2.1.0.tgz#f830356d54c72c804bd7afc43999de31e40fc3d6"
+ integrity sha512-rvVVqDa2g860niRbqs3D5RhL4la3dc1vwk+NlpKPZxKaMSHtE2se6C2x8NeveN+rcjp3/686X+u+09CZ+7lmAQ==
dependencies:
+ glob "^7.1.2"
signal-exit "^3.0.2"
- update-notifier "^2.2.0"
- yargs "^8.0.2"
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
@@ -7427,6 +7426,11 @@ JSONStream@^1.3.5:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
+JSV@^4.0.x:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57"
+ integrity sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==
+
abab@^2.0.3, abab@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
@@ -7780,6 +7784,11 @@ ansi-styles@^6.0.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3"
integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==
+ansi-styles@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178"
+ integrity sha512-3iF4FIKdxaVYT3JqQuY3Wat/T2t7TRbbQ94Fu50ZUCbLy4TFbTzr90NOHQodQkNqmeEGCw8WbeP78WNi6SKYUA==
+
ansi-to-html@^0.6.11, ansi-to-html@^0.6.15, ansi-to-html@^0.6.6:
version "0.6.15"
resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7"
@@ -9918,7 +9927,7 @@ camelcase@^2.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-camelcase@^4.0.0, camelcase@^4.1.0:
+camelcase@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==
@@ -9951,9 +9960,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001400:
- version "1.0.30001431"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795"
- integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==
+ version "1.0.30001435"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2"
+ integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==
capture-exit@^2.0.0:
version "2.0.0"
@@ -10021,6 +10030,15 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f"
+ integrity sha512-sQfYDlfv2DGVtjdoQqxS0cEZDroyG8h6TamA6rvxwlrU5BaSLDx9xhatBYl2pxZ7gmpNaPFVwBtdGdu5rQ+tYQ==
+ dependencies:
+ ansi-styles "~1.0.0"
+ has-color "~0.1.0"
+ strip-ansi "~0.1.0"
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
@@ -10365,15 +10383,6 @@ clipboard@^2.0.8:
select "^1.1.2"
tiny-emitter "^2.0.0"
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
cliui@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
@@ -11357,7 +11366,7 @@ decamelize-keys@^1.1.0:
decamelize "^1.1.0"
map-obj "^1.0.0"
-decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -15297,11 +15306,6 @@ gentle-fs@^2.3.0, gentle-fs@^2.3.1:
read-cmd-shim "^1.0.1"
slide "^1.1.6"
-get-caller-file@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
- integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
-
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
@@ -15848,6 +15852,11 @@ has-bigints@^1.0.1:
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+has-color@~0.1.0:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f"
+ integrity sha512-kaNz5OTAYYmt646Hkqw50/qyxP2vFnTVu5AQ1Zmk22Kk5+4Qx6BpO8+u7IKsML5fOsFk0ZT0AcCJNYwcvaLBvw==
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -16684,11 +16693,6 @@ invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
- integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==
-
ip-regex@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
@@ -18208,6 +18212,14 @@ jsonify@~0.0.0:
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+jsonlint@^1.6.3:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/jsonlint/-/jsonlint-1.6.3.tgz#cb5e31efc0b78291d0d862fbef05900adf212988"
+ integrity sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==
+ dependencies:
+ JSV "^4.0.x"
+ nomnom "^1.5.x"
+
jsonparse@^1.2.0, jsonparse@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
@@ -18343,13 +18355,6 @@ lazy-universal-dotenv@^3.0.1:
dotenv "^8.0.0"
dotenv-expand "^5.1.0"
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==
- dependencies:
- invert-kv "^1.0.0"
-
leek@0.0.24:
version "0.0.24"
resolved "https://registry.yarnpkg.com/leek/-/leek-0.0.24.tgz#e400e57f0e60d8ef2bd4d068dc428a54345dbcda"
@@ -18710,11 +18715,11 @@ locate-path@^7.1.0:
p-locate "^6.0.0"
lock-verify@^2.0.2, lock-verify@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.1.tgz#81107948c51ed16f97b96ff8b60675affb243fc1"
- integrity sha512-n0Zw2DVupKfZMazy/HIFVNohJ1z8fIoZ77WBnyyBGG6ixw83uJNyrbiJvvHWe1QKkGiBCjj8RCPlymltliqEww==
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.2.tgz#9e93c0999dc3cbbede4f16f9cfdaa93ead8c76ef"
+ integrity sha512-2CUNtr1ZSVKJHcYP8uEzafmmuyauCB5zZimj8TvQd/Lflt9kXVZs+8S+EbAzZLaVUDn8CYGmeC3DFGdYfnCzeQ==
dependencies:
- "@iarna/cli" "^1.2.0"
+ "@iarna/cli" "^2.1.0"
npm-package-arg "^6.1.0"
semver "^5.4.1"
@@ -19541,7 +19546,7 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-mem@^1.1.0, mem@^4.0.0, mem@^4.3.0:
+mem@^4.0.0, mem@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
@@ -20407,6 +20412,14 @@ node-watch@0.7.3:
resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.3.tgz#6d4db88e39c8d09d3ea61d6568d80e5975abc7ab"
integrity sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==
+nomnom@^1.5.x:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7"
+ integrity sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==
+ dependencies:
+ chalk "~0.4.0"
+ underscore "~1.6.0"
+
nopt@^3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
@@ -21088,15 +21101,6 @@ os-homedir@^1.0.0:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-locale@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
- integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
- dependencies:
- execa "^0.7.0"
- lcid "^1.0.0"
- mem "^1.1.0"
-
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -23326,11 +23330,6 @@ require-from-string@^2.0.2:
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
- integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==
-
require-main-filename@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
@@ -24904,6 +24903,11 @@ strip-ansi@^7.0.1:
dependencies:
ansi-regex "^6.0.1"
+strip-ansi@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991"
+ integrity sha512-behete+3uqxecWlDAm5lmskaSaISA+ThQ4oNNBDTBJt0x2ppR6IPqfZNuj6BLaLJ/Sji4TPZlcRyOis8wXQTLg==
+
strip-bom@4.0.0, strip-bom@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
@@ -25522,9 +25526,9 @@ terser-webpack-plugin@^5.1.3:
terser "^5.7.2"
terser@^4.1.2, terser@^4.6.3, terser@^5.14.2, terser@^5.3.0, terser@^5.3.4, terser@^5.7.2:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c"
- integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==
+ version "5.16.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.0.tgz#29362c6f5506e71545c73b069ccd199bb28f7f54"
+ integrity sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==
dependencies:
"@jridgewell/source-map" "^0.3.2"
acorn "^8.5.0"
@@ -26055,7 +26059,7 @@ underscore.string@^3.2.2, underscore.string@~3.3.4:
sprintf-js "^1.0.3"
util-deprecate "^1.0.2"
-underscore@>=1.8.3, underscore@^1.12.1, underscore@^1.13.2:
+underscore@>=1.8.3, underscore@^1.12.1, underscore@^1.13.2, underscore@~1.6.0:
version "1.13.6"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
@@ -26299,7 +26303,7 @@ update-browserslist-db@^1.0.9:
escalade "^3.1.1"
picocolors "^1.0.0"
-update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0:
+update-notifier@^2.3.0, update-notifier@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
@@ -27061,14 +27065,6 @@ workerpool@^6.1.5, workerpool@^6.2.0:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
-
wrap-ansi@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
@@ -27192,11 +27188,6 @@ xtend@~2.1.1:
dependencies:
object-keys "~0.4.0"
-y18n@^3.2.1:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696"
- integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==
-
y18n@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
@@ -27240,7 +27231,7 @@ yaml@^2.1.1:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec"
integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==
-yargs-parser@20.2.4, yargs-parser@^15.0.1, yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^21.0.0, yargs-parser@^7.0.0, yargs-parser@~20.2.7:
+yargs-parser@20.2.4, yargs-parser@^15.0.1, yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^21.0.0, yargs-parser@~20.2.7:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
@@ -27298,25 +27289,6 @@ yargs@^17.0.1, yargs@^17.5.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
-yargs@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
- integrity sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==
- dependencies:
- camelcase "^4.1.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^2.0.0"
- read-pkg-up "^2.0.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^7.0.0"
-
yarn-or-npm@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz#6336eea4dff7e23e226acc98c1a8ada17a1b8666"