diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 4e3b8f1..ba6c150 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -21,7 +21,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- - name: Install
+ - name: Install PHP dependencies
run: composer install
- name: Run PHP CS Fixer
@@ -40,3 +40,11 @@ jobs:
composer global require php-coveralls/php-coveralls
php-coveralls --coverage_clover=clover.xml -v
if: matrix.php-versions == '7.4'
+
+ - name: Install JavaScript dependencies
+ working-directory: src/Resources/assets
+ run: yarn install
+
+ - name: Test JavaScript
+ working-directory: src/Resources/assets
+ run: yarn test --silent
diff --git a/src/Resources/assets/dist/controller.js b/src/Resources/assets/dist/controller.js
index b66b318..437982b 100644
--- a/src/Resources/assets/dist/controller.js
+++ b/src/Resources/assets/dist/controller.js
@@ -135,8 +135,8 @@ var _default = /*#__PURE__*/function (_Controller) {
exports["default"] = _default;
function _dispatchCollectionJsEvent2(event, detail) {
- // Dispatch event like it was dispatched by https://github.com/stimulus-use/stimulus-use/blob/main/docs/use-dispatch.md
- this.element.dispatchEvent(new CustomEvent("".concat(this.identifier, ":").concat(event), {
+ var namespace = 'ux-collection-js';
+ this.element.dispatchEvent(new CustomEvent("".concat(namespace, ":").concat(event), {
bubbles: true,
cancelable: true,
detail: detail
diff --git a/src/Resources/assets/package.json b/src/Resources/assets/package.json
index a20520c..7b5df1f 100644
--- a/src/Resources/assets/package.json
+++ b/src/Resources/assets/package.json
@@ -32,6 +32,12 @@
"@babel/preset-env": "^7.12.7",
"@symfony/stimulus-testing": "^1.1.0",
"stimulus": "^2.0.0",
- "symfony-collection-js": "^4.2.0-js-only"
+ "symfony-collection-js": "4.2.0-js-only"
+ },
+ "jest": {
+ "testRegex": "test/.*\\.test.js",
+ "setupFilesAfterEnv": [
+ "./test/setup.js"
+ ]
}
}
diff --git a/src/Resources/assets/src/controller.js b/src/Resources/assets/src/controller.js
index 8898621..ccd3249 100644
--- a/src/Resources/assets/src/controller.js
+++ b/src/Resources/assets/src/controller.js
@@ -52,8 +52,8 @@ export default class extends Controller {
}
#dispatchCollectionJsEvent(event, detail) {
- // Dispatch event like it was dispatched by https://github.com/stimulus-use/stimulus-use/blob/main/docs/use-dispatch.md
- this.element.dispatchEvent(new CustomEvent(`${this.identifier}:${event}`, {
+ const namespace = 'ux-collection-js';
+ this.element.dispatchEvent(new CustomEvent(`${namespace}:${event}`, {
bubbles: true,
cancelable: true,
detail
diff --git a/src/Resources/assets/test/controller.test.js b/src/Resources/assets/test/controller.test.js
new file mode 100644
index 0000000..d63f593
--- /dev/null
+++ b/src/Resources/assets/test/controller.test.js
@@ -0,0 +1,188 @@
+'use strict';
+
+import { Application } from 'stimulus';
+import { getByTestId, waitFor } from '@testing-library/dom';
+import { clearDOM, mountDOM } from '@symfony/stimulus-testing';
+import CollectionJsController from '../dist/controller';
+import formCollection from 'symfony-collection-js';
+
+let application;
+
+const startStimulus = () => {
+ application = Application.start();
+ application.register('collection-js', CollectionJsController);
+};
+
+describe('CollectionJsController', () => {
+ let container;
+
+ beforeEach(() => {
+ container = mountDOM(`
+
+
+
+
+ `);
+ });
+
+ afterEach(() => {
+ application.stop();
+ clearDOM();
+ });
+
+ it('init', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-add', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.new_elem).toStrictEqual(container.querySelector('.accordion-item'));
+ expect(dispatched.detail.context).toBe(formCollection.POST_ADD_CONTEXT.INIT);
+ expect(dispatched.detail.index).toBe(0);
+ });
+
+ it('add', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-add', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // Click the add button
+ container.querySelector('.collection-js-add-btn').click();
+
+ await waitFor(() => expect(container.querySelectorAll('.accordion-item').length).toBe(2));
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.new_elem).toStrictEqual(container.querySelectorAll('.accordion-item')[1]);
+ expect(dispatched.detail.context).toBe(formCollection.POST_ADD_CONTEXT.OTHER_BTN_ADD);
+ expect(dispatched.detail.index).toBe(1);
+ });
+
+ it('element add', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-add', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // Click the element add button
+ container.querySelector('.collection-js-elem-add').click();
+
+ await waitFor(() => expect(container.querySelectorAll('.accordion-item').length).toBe(2));
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.new_elem).toStrictEqual(container.querySelectorAll('.accordion-item')[1]);
+ expect(dispatched.detail.context).toBe(formCollection.POST_ADD_CONTEXT.BTN_ADD);
+ expect(dispatched.detail.index).toBe(1);
+ });
+
+ it('element delete', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-delete', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // Click the element remove button
+ container.querySelector('.collection-js-elem-remove').click();
+
+ await waitFor(() => expect(container.querySelectorAll('.accordion-item').length).toBe(0));
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.delete_elem).not.toBeNull();
+ expect(container.contains(dispatched.detail.delete_elem)).toBeFalsy();
+ expect(dispatched.detail.context).toBe(formCollection.POST_DELETE_CONTEXT.BTN_DELETE);
+ expect(dispatched.detail.index).toBe(0);
+ });
+
+ it('element up', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-up', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // Click the add button, then element up button
+ container.querySelector('.collection-js-add-btn').click();
+ container.querySelectorAll('.collection-js-elem-up')[1].click();
+
+ await waitFor(() => expect(container.querySelectorAll('.accordion-item').length).toBe(2));
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.elem).toStrictEqual(container.querySelectorAll('.accordion-item')[0]);
+ expect(dispatched.detail.switched_elem).toStrictEqual(container.querySelectorAll('.accordion-item')[1]);
+ expect(dispatched.detail.index).toBe(1);
+ });
+
+ it('element down', async () => {
+ let dispatched = null;
+ getByTestId(container, 'container').addEventListener('ux-collection-js:post-down', (event) => (dispatched = event));
+
+ await startStimulus();
+
+ // Click the add button, then element down button
+ container.querySelector('.collection-js-add-btn').click();
+ container.querySelectorAll('.collection-js-elem-down')[0].click();
+
+ await waitFor(() => expect(container.querySelectorAll('.accordion-item').length).toBe(2));
+
+ // The event should have been dispatched
+ expect(dispatched).not.toBeNull();
+ expect(dispatched.detail.elem).toStrictEqual(container.querySelectorAll('.accordion-item')[1]);
+ expect(dispatched.detail.switched_elem).toStrictEqual(container.querySelectorAll('.accordion-item')[0]);
+ expect(dispatched.detail.index).toBe(0);
+ });
+});
diff --git a/src/Resources/assets/test/setup.js b/src/Resources/assets/test/setup.js
new file mode 100644
index 0000000..9be33c3
--- /dev/null
+++ b/src/Resources/assets/test/setup.js
@@ -0,0 +1,3 @@
+'use strict';
+
+import '@symfony/stimulus-testing/setup';
diff --git a/src/Resources/assets/yarn.lock b/src/Resources/assets/yarn.lock
index 96b7acc..0b3ee15 100644
--- a/src/Resources/assets/yarn.lock
+++ b/src/Resources/assets/yarn.lock
@@ -18,10 +18,10 @@
"@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3"
chokidar "^3.4.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
- integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503"
+ integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==
dependencies:
"@babel/highlight" "^7.14.5"
@@ -31,19 +31,19 @@
integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5":
- version "7.15.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
- integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10"
+ integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==
dependencies:
- "@babel/code-frame" "^7.14.5"
- "@babel/generator" "^7.15.4"
+ "@babel/code-frame" "^7.15.8"
+ "@babel/generator" "^7.15.8"
"@babel/helper-compilation-targets" "^7.15.4"
- "@babel/helper-module-transforms" "^7.15.4"
+ "@babel/helper-module-transforms" "^7.15.8"
"@babel/helpers" "^7.15.4"
- "@babel/parser" "^7.15.5"
+ "@babel/parser" "^7.15.8"
"@babel/template" "^7.15.4"
"@babel/traverse" "^7.15.4"
- "@babel/types" "^7.15.4"
+ "@babel/types" "^7.15.6"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@@ -51,12 +51,12 @@
semver "^6.3.0"
source-map "^0.5.0"
-"@babel/generator@^7.15.4":
- version "7.15.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
- integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
+"@babel/generator@^7.15.4", "@babel/generator@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1"
+ integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==
dependencies:
- "@babel/types" "^7.15.4"
+ "@babel/types" "^7.15.6"
jsesc "^2.5.1"
source-map "^0.5.0"
@@ -163,10 +163,10 @@
dependencies:
"@babel/types" "^7.15.4"
-"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4":
- version "7.15.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226"
- integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==
+"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2"
+ integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==
dependencies:
"@babel/helper-module-imports" "^7.15.4"
"@babel/helper-replace-supers" "^7.15.4"
@@ -267,10 +267,10 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5":
- version "7.15.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
- integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
+"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016"
+ integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
version "7.15.4"
@@ -281,10 +281,10 @@
"@babel/helper-skip-transparent-expression-wrappers" "^7.15.4"
"@babel/plugin-proposal-optional-chaining" "^7.14.5"
-"@babel/plugin-proposal-async-generator-functions@^7.15.4":
- version "7.15.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e"
- integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==
+"@babel/plugin-proposal-async-generator-functions@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403"
+ integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/helper-remap-async-to-generator" "^7.15.4"
@@ -725,13 +725,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-transform-spread@^7.14.6":
- version "7.14.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144"
- integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==
+"@babel/plugin-transform-spread@^7.15.8":
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468"
+ integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4"
"@babel/plugin-transform-sticky-regex@^7.14.5":
version "7.14.5"
@@ -770,16 +770,16 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/preset-env@^7.12.7":
- version "7.15.6"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659"
- integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw==
+ version "7.15.8"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.8.tgz#f527ce5bcb121cd199f6b502bf23e420b3ff8dba"
+ integrity sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==
dependencies:
"@babel/compat-data" "^7.15.0"
"@babel/helper-compilation-targets" "^7.15.4"
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/helper-validator-option" "^7.14.5"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4"
- "@babel/plugin-proposal-async-generator-functions" "^7.15.4"
+ "@babel/plugin-proposal-async-generator-functions" "^7.15.8"
"@babel/plugin-proposal-class-properties" "^7.14.5"
"@babel/plugin-proposal-class-static-block" "^7.15.4"
"@babel/plugin-proposal-dynamic-import" "^7.14.5"
@@ -834,7 +834,7 @@
"@babel/plugin-transform-regenerator" "^7.14.5"
"@babel/plugin-transform-reserved-words" "^7.14.5"
"@babel/plugin-transform-shorthand-properties" "^7.14.5"
- "@babel/plugin-transform-spread" "^7.14.6"
+ "@babel/plugin-transform-spread" "^7.15.8"
"@babel/plugin-transform-sticky-regex" "^7.14.5"
"@babel/plugin-transform-template-literals" "^7.14.5"
"@babel/plugin-transform-typeof-symbol" "^7.14.5"
@@ -843,7 +843,7 @@
"@babel/preset-modules" "^0.1.4"
"@babel/types" "^7.15.6"
babel-plugin-polyfill-corejs2 "^0.2.2"
- babel-plugin-polyfill-corejs3 "^0.2.2"
+ babel-plugin-polyfill-corejs3 "^0.2.5"
babel-plugin-polyfill-regenerator "^0.2.2"
core-js-compat "^3.16.0"
semver "^6.3.0"
@@ -1106,10 +1106,10 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
-"@jest/types@^27.2.4":
- version "27.2.4"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.4.tgz#2430042a66e00dc5b140c3636f4474d464c21ee8"
- integrity sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==
+"@jest/types@^27.2.5":
+ version "27.2.5"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132"
+ integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
@@ -1287,9 +1287,9 @@
pretty-format "^27.0.0"
"@types/node@*":
- version "16.10.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e"
- integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ==
+ version "16.10.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5"
+ integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -1515,7 +1515,7 @@ babel-plugin-polyfill-corejs2@^0.2.2:
"@babel/helper-define-polyfill-provider" "^0.2.2"
semver "^6.1.1"
-babel-plugin-polyfill-corejs3@^0.2.2:
+babel-plugin-polyfill-corejs3@^0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92"
integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==
@@ -1615,16 +1615,16 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-browserslist@^4.16.6, browserslist@^4.17.1:
- version "4.17.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9"
- integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==
+browserslist@^4.16.6, browserslist@^4.17.3:
+ version "4.17.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624"
+ integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==
dependencies:
- caniuse-lite "^1.0.30001259"
- electron-to-chromium "^1.3.846"
+ caniuse-lite "^1.0.30001264"
+ electron-to-chromium "^1.3.857"
escalade "^3.1.1"
- nanocolors "^0.1.5"
- node-releases "^1.1.76"
+ node-releases "^1.1.77"
+ picocolors "^0.2.1"
bser@2.1.1:
version "2.1.1"
@@ -1676,10 +1676,10 @@ camelcase@^6.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
-caniuse-lite@^1.0.30001259:
- version "1.0.30001261"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz#96d89813c076ea061209a4e040d8dcf0c66a1d01"
- integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==
+caniuse-lite@^1.0.30001264:
+ version "1.0.30001265"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3"
+ integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==
capture-exit@^2.0.0:
version "2.0.0"
@@ -1839,17 +1839,17 @@ copy-descriptor@^0.1.0:
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
core-js-compat@^3.16.0, core-js-compat@^3.16.2:
- version "3.18.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191"
- integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==
+ version "3.18.2"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.2.tgz#e40c266fbd613948dd8d2d2156345da8ac03c142"
+ integrity sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==
dependencies:
- browserslist "^4.17.1"
+ browserslist "^4.17.3"
semver "7.0.0"
core-js-pure@^3.16.0:
- version "3.18.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.1.tgz#097d34d24484be45cea700a448d1e74622646c80"
- integrity sha512-kmW/k8MaSuqpvA1xm2l3TVlBuvW+XBkcaOroFUpO3D4lsTGQWBTb/tBDCf/PNkkPLrwgrkQRIYNPB0CeqGJWGQ==
+ version "3.18.2"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.2.tgz#d8cc11d4885ea919f3de776d45e720e4c769d406"
+ integrity sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA==
cross-spawn@^6.0.0:
version "6.0.5"
@@ -2000,9 +2000,9 @@ diff-sequences@^27.0.6:
integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==
dom-accessibility-api@^0.5.6:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz#8c2aa6325968f2933160a0b7dbb380893ddf3e7d"
- integrity sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA==
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.8.tgz#414813012e065b5dfa8998b990460c0af12a5421"
+ integrity sha512-rAfghuBPeJldxqsmZQtBbna4TqMgFe4xhYs24vPULNslbmXUdcga+CXiKWzZxyWw0FCkGKPgmizIysIvsAEN8w==
domexception@^2.0.1:
version "2.0.1"
@@ -2011,10 +2011,10 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
-electron-to-chromium@^1.3.846:
- version "1.3.853"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz#f3ed1d31f092cb3a17af188bca6c6a3ec91c3e82"
- integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==
+electron-to-chromium@^1.3.857:
+ version "1.3.864"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.864.tgz#6a993bcc196a2b8b3df84d28d5d4dd912393885f"
+ integrity sha512-v4rbad8GO6/yVI92WOeU9Wgxc4NA0n4f6P1FvZTY+jyY7JHEhw3bduYu60v3Q1h81Cg6eo4ApZrFPuycwd5hGw==
emittery@^0.7.1:
version "0.7.2"
@@ -2434,9 +2434,9 @@ iconv-lite@0.4.24:
safer-buffer ">= 2.1.2 < 3"
import-local@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
- integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0"
+ integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==
dependencies:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
@@ -2574,9 +2574,9 @@ is-generator-fn@^2.0.0:
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
is-glob@^4.0.1, is-glob@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8"
- integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
@@ -2654,9 +2654,9 @@ isobject@^3.0.0, isobject@^3.0.1:
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
istanbul-lib-coverage@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz#e8900b3ed6069759229cf30f7067388d148aeb5e"
- integrity sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
+ integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
version "4.0.3"
@@ -2687,9 +2687,9 @@ istanbul-lib-source-maps@^4.0.0:
source-map "^0.6.1"
istanbul-reports@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
- integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.3.tgz#974d682037f6d12b15dc55f9a2a5f8f1ea923831"
+ integrity sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
@@ -2757,14 +2757,14 @@ jest-diff@^26.6.2:
pretty-format "^26.6.2"
jest-diff@^27.0.0:
- version "27.2.4"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.4.tgz#171c51d3d2c105c457100fee6e7bf7cee51c8d8c"
- integrity sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==
+ version "27.2.5"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.2.5.tgz#908f7a6aca5653824516ad30e0a9fd9767e53623"
+ integrity sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==
dependencies:
chalk "^4.0.0"
diff-sequences "^27.0.6"
jest-get-type "^27.0.6"
- pretty-format "^27.2.4"
+ pretty-format "^27.2.5"
jest-docblock@^26.0.0:
version "26.0.0"
@@ -3292,17 +3292,17 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.2.3"
-mime-db@1.49.0:
- version "1.49.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
- integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
+mime-db@1.50.0:
+ version "1.50.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f"
+ integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==
mime-types@^2.1.12:
- version "2.1.32"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
- integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
+ version "2.1.33"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb"
+ integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==
dependencies:
- mime-db "1.49.0"
+ mime-db "1.50.0"
mimic-fn@^2.1.0:
version "2.1.0"
@@ -3349,11 +3349,6 @@ mutationobserver-shim@^0.3.7:
resolved "https://registry.yarnpkg.com/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz#8bf633b0c0b0291a1107255ed32c13088a8c5bf3"
integrity sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==
-nanocolors@^0.1.5:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6"
- integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==
-
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -3403,10 +3398,10 @@ node-notifier@^8.0.0:
uuid "^8.3.0"
which "^2.0.2"
-node-releases@^1.1.76:
- version "1.1.76"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e"
- integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==
+node-releases@^1.1.77:
+ version "1.1.77"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e"
+ integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==
normalize-package-data@^2.5.0:
version "2.5.0"
@@ -3587,6 +3582,11 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
@@ -3631,20 +3631,20 @@ pretty-format@^26.6.2:
ansi-styles "^4.0.0"
react-is "^17.0.1"
-pretty-format@^27.0.0, pretty-format@^27.2.4:
- version "27.2.4"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.4.tgz#08ea39c5eab41b082852d7093059a091f6ddc748"
- integrity sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==
+pretty-format@^27.0.0, pretty-format@^27.2.5:
+ version "27.2.5"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.2.5.tgz#7cfe2a8e8f01a5b5b29296a0b70f4140df0830c5"
+ integrity sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==
dependencies:
- "@jest/types" "^27.2.4"
+ "@jest/types" "^27.2.5"
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
react-is "^17.0.1"
prompts@^2.0.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61"
- integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
dependencies:
kleur "^3.0.3"
sisteransi "^1.0.5"
@@ -3935,9 +3935,9 @@ shellwords@^0.1.1:
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
signal-exit@^3.0.0, signal-exit@^3.0.2:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
- integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f"
+ integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==
sisteransi@^1.0.5:
version "1.0.5"
@@ -4165,10 +4165,10 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-symfony-collection-js@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/symfony-collection-js/-/symfony-collection-js-4.2.0.tgz#545f4d85d83aa4faba54b688d225a5c088c7ea84"
- integrity sha512-XvpDkummbpdLcn3evcdMNUuGAIixDzoD63yP8gY++FqitXtWDk2txTTOjAWBnYsaTDBk/SKXHuLaESSEX+OdQw==
+symfony-collection-js@4.2.0-js-only:
+ version "4.2.0-js-only"
+ resolved "https://registry.yarnpkg.com/symfony-collection-js/-/symfony-collection-js-4.2.0-js-only.tgz#702e509012c84943c47fb674d7803829cb6f2550"
+ integrity sha512-GbwxzbM9VOYUI7H5B8QPlb8luW+fkjxSYBEy5HD9skLgjoE0EQkt+SaSLxxaiWdeQubAtOJyk1GUyjzjYtTIng==
terminal-link@^2.0.0:
version "2.1.1"