From b428a11ac0fccf900b4de0fb087f55e29def7c62 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Thu, 5 May 2022 15:54:32 +0200 Subject: [PATCH 01/10] =?UTF-8?q?#3971=20Modernizaci=C3=B3n=20de=20estilo,?= =?UTF-8?q?=20pre-alfa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/logo-margin.svg | 77 ++++++++++++++++++++++++++++++++++++++++++ image/social/mail.svg | 1 + image/social/phone.svg | 43 +++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 image/logo-margin.svg create mode 100644 image/social/mail.svg create mode 100644 image/social/phone.svg diff --git a/image/logo-margin.svg b/image/logo-margin.svg new file mode 100644 index 00000000..57e0a756 --- /dev/null +++ b/image/logo-margin.svg @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 1343.3 428.9" style="enable-background:new 0 0 1343.3 428.9;" xml:space="preserve"> +<style type="text/css"> + .st0{display:none;} + .st1{display:inline;fill-rule:evenodd;clip-rule:evenodd;fill:#1A1A1A;} + .st2{fill-rule:evenodd;clip-rule:evenodd;fill:#1A1A1A;} + .st3{fill-rule:evenodd;clip-rule:evenodd;fill:#97D700;} + .st4{fill:#97D700;} + .st5{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;} + .st6{fill:#FFFFFF;} + .st7{fill:#1A1A1A;} + .st8{display:inline;fill-rule:evenodd;clip-rule:evenodd;fill:#E6E6E6;} + .st9{display:inline;fill-rule:evenodd;clip-rule:evenodd;fill:#333333;} +</style> +<g id="Capa_3" class="st0"> +</g> +<g id="Capa_1"> + <g> + <g> + <path class="st2" d="M190.3,284.2l-48.8-142h38.6l20,73l1.6,6c2.4,8.7,4.3,16.1,5.6,22c0.7-2.9,1.6-6.3,2.6-10.2 + c1-3.9,2.5-9.1,4.3-15.4l20.9-75.3h38.4l-49.2,142H190.3z"/> + <path class="st3" d="M1184.8,284.2h-34.9c0.1-1.7,0.2-3.4,0.4-5.2l0.7-5.6c-6.2,4.8-12.3,8.4-18.4,10.7 + c-6.1,2.3-12.4,3.5-18.9,3.5c-10.1,0-17.3-2.8-21.7-8.3c-4.3-5.6-5.2-13.1-2.5-22.5c2.4-8.7,6.7-15.7,12.8-21.1 + c6.1-5.4,14.1-9.2,24.1-11.4c5.5-1.2,12.4-2.4,20.7-3.8c12.4-1.9,19.1-4.8,20.2-8.5l0.7-2.5c0.9-3,0.4-5.4-1.5-6.9 + c-1.8-1.6-5-2.4-9.5-2.4c-4.9,0-9.1,1-12.5,3c-3.4,2-6,5-7.8,8.8h-31.6c5-11.8,12.4-20.7,22.1-26.5c9.7-5.8,22.1-8.7,37.1-8.7 + c9.3,0,16.9,1.1,22.6,3.4c5.8,2.2,9.8,5.7,12.1,10.2c1.6,3.3,2.3,7.2,2,11.7c-0.2,4.5-1.8,11.8-4.6,21.9l-11.1,39.7 + c-1.3,4.7-1.9,8.5-1.9,11.2c0.1,2.7,0.9,4.5,2.4,5.3L1184.8,284.2z M1160.9,234.9c-3.1,1.7-8.2,3.2-15.2,4.6 + c-3.4,0.6-6,1.2-7.8,1.6c-4.5,1.2-7.8,2.6-10,4.4c-2.2,1.8-3.7,4.2-4.6,7.2c-1,3.7-0.7,6.7,1,9c1.7,2.3,4.4,3.4,8.2,3.4 + c5.9,0,11.1-1.7,15.8-5.1c4.7-3.4,7.7-7.8,9.3-13.3L1160.9,234.9z"/> + <path class="st3" d="M1011.3,284.2l29.4-104.9h33l-5.1,18.4c5.7-7.2,11.7-12.5,18.1-15.8c6.4-3.3,13.8-5,22.3-5.2l-9.5,34 + c-1.4-0.2-2.8-0.3-4.3-0.4c-1.4-0.1-2.8-0.1-4.1-0.1c-5.3,0-9.8,0.8-13.7,2.4c-3.9,1.6-7.3,4-10.3,7.3c-1.9,2.2-3.7,5.3-5.4,9.4 + c-1.7,4.1-3.8,10.7-6.4,19.8l-9.9,35.2H1011.3z"/> + <path class="st3" d="M1023.9,179.4l-29.4,104.9h-33.6l4-14.5c-5.7,5.8-11.6,10.1-17.5,12.9c-5.9,2.7-12.3,4.1-19,4.1 + c-11.6,0-19.5-3-23.6-8.9c-4.2-5.9-4.6-14.7-1.4-26.4l20.2-72.1h34.4l-16.4,58.7c-2.4,8.6-3,14.6-1.8,17.8 + c1.2,3.2,4.5,4.9,9.9,4.9c6,0,10.9-2,14.7-5.9c3.8-4,7-10.4,9.5-19.4l15.7-56.1H1023.9z"/> + <path class="st3" d="M843.8,200.1l5.8-20.7h14l8.3-29.6h34.4l-8.3,29.6h17.6l-5.8,20.7h-17.6l-12.7,45.4 + c-1.9,6.9-2.3,11.5-1.2,13.8c1.2,2.2,4.2,3.4,9.2,3.4l2.6-0.1l1.8-0.1l-6.1,21.9c-3.8,0.7-7.5,1.2-11,1.6 + c-3.6,0.4-6.9,0.6-10.2,0.6c-11.9,0-19.2-2.9-22-8.7c-2.7-5.8-1.5-18.2,3.8-37.2l11.4-40.6H843.8z"/> + <path class="st3" d="M820.3,284.2h-34.9c0.1-1.7,0.2-3.4,0.4-5.2l0.7-5.6c-6.2,4.8-12.3,8.4-18.4,10.7 + c-6.1,2.3-12.4,3.5-18.9,3.5c-10.1,0-17.3-2.8-21.7-8.3c-4.3-5.6-5.2-13.1-2.5-22.5c2.4-8.7,6.7-15.7,12.8-21.1 + c6.1-5.4,14.1-9.2,24.1-11.4c5.5-1.2,12.4-2.4,20.7-3.8c12.4-1.9,19.1-4.8,20.2-8.5l0.7-2.5c0.9-3,0.4-5.4-1.5-6.9 + c-1.8-1.6-5-2.4-9.5-2.4c-4.9,0-9.1,1-12.5,3c-3.4,2-6,5-7.8,8.8h-31.6c5-11.8,12.4-20.7,22.1-26.5c9.8-5.8,22.1-8.7,37.1-8.7 + c9.3,0,16.9,1.1,22.6,3.4c5.8,2.2,9.8,5.7,12.1,10.2c1.6,3.3,2.3,7.2,2,11.7c-0.2,4.5-1.8,11.8-4.6,21.9l-11.1,39.7 + c-1.3,4.7-1.9,8.5-1.9,11.2c0.1,2.7,0.9,4.5,2.4,5.3L820.3,284.2z M796.4,234.9c-3.1,1.7-8.2,3.2-15.2,4.6 + c-3.4,0.6-6,1.2-7.8,1.6c-4.5,1.2-7.8,2.6-10,4.4c-2.2,1.8-3.7,4.2-4.6,7.2c-1,3.7-0.7,6.7,1,9c1.7,2.3,4.4,3.4,8.2,3.4 + c5.9,0,11.1-1.7,15.8-5.1c4.7-3.4,7.7-7.8,9.3-13.3L796.4,234.9z"/> + <path class="st2" d="M593.6,142.2l-39.8,142h-34.4l3.9-13.8c-5.5,5.7-11.1,9.9-16.9,12.7c-5.8,2.7-12.1,4.1-18.9,4.1 + c-13.1,0-22.4-5.1-27.7-15.2c-5.3-10.1-5.7-23.4-1.1-39.8c4.6-16.5,12.5-30,23.6-40.4c11.1-10.4,23.1-15.6,35.9-15.6 + c6.9,0,12.6,1.4,17.2,4.2c4.6,2.8,7.9,6.9,9.8,12.3l14.1-50.4H593.6z M487.5,230.7c-2.6,9.4-2.9,16.6-0.8,21.5 + c2.1,5,6.4,7.5,13,7.5c6.6,0,12.2-2.5,17-7.4c4.7-4.9,8.5-12.1,11.1-21.6c2.5-8.8,2.6-15.6,0.4-20.4c-2.2-4.8-6.5-7.2-13-7.2 + c-6.1,0-11.6,2.5-16.6,7.4C493.6,215.4,489.9,222.2,487.5,230.7z"/> + <path class="st2" d="M359.3,284.2l29.4-104.9h33l-5.1,18.4c5.7-7.2,11.7-12.5,18.1-15.8c6.4-3.3,28.2-5,36.6-5.2l-9.5,34 + c-1.4-0.2-2.8-0.3-4.3-0.4c-1.4-0.1-2.8-0.1-4.1-0.1c-5.3,0-24.2,0.8-28.1,2.4c-3.9,1.6-7.3,4-10.3,7.3c-1.9,2.2-3.7,5.3-5.4,9.4 + c-1.7,4.1-3.8,10.7-6.4,19.8l-9.9,35.2H359.3z"/> + <path class="st2" d="M323.3,251.3h33c-6.3,11.5-14.9,20.4-25.7,26.7c-10.8,6.3-22.9,9.4-36.3,9.4c-16.3,0-27.7-4.9-34.4-14.8 + c-6.7-9.9-7.6-23.3-2.9-40.4c4.9-17.4,13.5-31.1,25.8-41.2c12.4-10.1,26.6-15.2,42.7-15.2c16.7,0,28.3,5.1,34.9,15.4 + c6.6,10.3,7.4,24.5,2.3,42.7l-1.1,3.8L361,240h-70.9c-2.1,7.4-2.1,13,0,16.9c2.1,3.9,6.2,5.8,12.4,5.8c4.6,0,8.6-1,12.1-2.9 + C318.2,257.9,321.1,255,323.3,251.3z M294.6,220.6l39.1-0.1c1.8-6.7,1.4-12-0.9-15.8c-2.4-3.8-6.6-5.7-12.5-5.7 + c-5.7,0-10.7,1.9-15.1,5.6C300.6,208.4,297.1,213.7,294.6,220.6z"/> + <path class="st4" d="M670.3,285.8l-30-87.3L610,285.8h-34l44.8-142h38.4l20.8,73l1.6,6c2.4,8.7,4.3,16.1,5.6,22l2.6-10.2 + c1-3.9,2.5-9.1,4.3-15.4l20.9-75.3h38.4l-49.2,142H670.3z"/> + </g> + </g> +</g> +<g id="Guías" class="st0"> + <path class="st8" d="M640.2,142.4l-48.8-142H630l20,73l1.6,6c2.4,8.7,4.3,16.1,5.6,22c0.7-2.9,1.6-6.3,2.6-10.2 + c1-3.9,2.5-9.1,4.3-15.4L685,0.3h38.4l-49.2,142H640.2z"/> + <path class="st8" d="M675.7,286.8l48.8,142h-38.6l-20-73l-1.6-6c-2.4-8.7-4.3-16.1-5.6-22c-0.7,2.9-1.6,6.3-2.6,10.2 + c-1,3.9-2.5,9.1-4.3,15.4l-20.9,75.3h-38.4l49.2-142H675.7z"/> + <path class="st8" d="M141.5,231l-142,48.8v-38.6l73-20l6-1.6c8.7-2.4,16.1-4.3,22-5.6c-2.9-0.7-6.3-1.6-10.2-2.6 + c-3.9-1-9.1-2.5-15.4-4.3l-75.3-20.9v-38.4l142,49.2V231z"/> + <path class="st8" d="M1201.1,196.3l142-48.8V186l-73,20l-6,1.6c-8.7,2.4-16.1,4.3-22,5.6c2.9,0.7,6.3,1.6,10.2,2.6 + c3.9,1,9.1,2.5,15.4,4.3l75.3,20.9v38.4l-142-49.2V196.3z"/> +</g> +</svg> diff --git a/image/social/mail.svg b/image/social/mail.svg new file mode 100644 index 00000000..d94d03c3 --- /dev/null +++ b/image/social/mail.svg @@ -0,0 +1 @@ +<svg id="Capa_1" enable-background="new 0 0 479.058 479.058" height="512" viewBox="0 0 479.058 479.058" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m434.146 59.882h-389.234c-24.766 0-44.912 20.146-44.912 44.912v269.47c0 24.766 20.146 44.912 44.912 44.912h389.234c24.766 0 44.912-20.146 44.912-44.912v-269.47c0-24.766-20.146-44.912-44.912-44.912zm0 29.941c2.034 0 3.969.422 5.738 1.159l-200.355 173.649-200.356-173.649c1.769-.736 3.704-1.159 5.738-1.159zm0 299.411h-389.234c-8.26 0-14.971-6.71-14.971-14.971v-251.648l199.778 173.141c2.822 2.441 6.316 3.655 9.81 3.655s6.988-1.213 9.81-3.655l199.778-173.141v251.649c-.001 8.26-6.711 14.97-14.971 14.97z"/></svg> \ No newline at end of file diff --git a/image/social/phone.svg b/image/social/phone.svg new file mode 100644 index 00000000..34fb46ff --- /dev/null +++ b/image/social/phone.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 405.333 405.333" style="enable-background:new 0 0 405.333 405.333;" xml:space="preserve"> +<g> + <g> + <path d="M373.333,266.88c-25.003,0-49.493-3.904-72.704-11.563c-11.328-3.904-24.192-0.896-31.637,6.699l-46.016,34.752 + c-52.8-28.181-86.592-61.952-114.389-114.368l33.813-44.928c8.512-8.512,11.563-20.971,7.915-32.64 + C142.592,81.472,138.667,56.96,138.667,32c0-17.643-14.357-32-32-32H32C14.357,0,0,14.357,0,32 + c0,205.845,167.488,373.333,373.333,373.333c17.643,0,32-14.357,32-32V298.88C405.333,281.237,390.976,266.88,373.333,266.88z"/> + </g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +<g> +</g> +</svg> -- 2.40.1 From f3bdb5f3c51f99ed37247e1aaf0149f222555159 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Thu, 5 May 2022 15:54:53 +0200 Subject: [PATCH 02/10] #3971 pre-alfa --- forms/cms/home/style.css | 10 +- forms/ecomerce/catalog/catalog.js | 22 +-- forms/ecomerce/catalog/style.css | 12 +- forms/ecomerce/catalog/ui.xml | 3 +- forms/ecomerce/checkout/style.css | 5 - image/logo-dark.svg | 255 +++++++++++++++++------------- image/logo.svg | 170 ++++++++++---------- js/hedera/gui.css | 221 ++++++++++++-------------- js/hedera/gui.js | 2 - js/hedera/gui.xml | 32 ++-- js/hedera/locale/ca.yml | 6 +- js/hedera/locale/en.yml | 6 +- js/hedera/locale/es.yml | 6 +- js/hedera/locale/fr.yml | 4 +- js/hedera/locale/mn.yml | 6 +- js/hedera/locale/pt.yml | 6 +- js/hedera/login.css | 75 +++++---- js/hedera/login.js | 98 +++++------- js/hedera/login.xml | 60 ++++--- js/hedera/style.css | 9 +- js/htk/style.css | 9 +- 21 files changed, 485 insertions(+), 532 deletions(-) diff --git a/forms/cms/home/style.css b/forms/cms/home/style.css index 2294ceea..a9b73028 100644 --- a/forms/cms/home/style.css +++ b/forms/cms/home/style.css @@ -8,14 +8,14 @@ } .action-bar button.start-order { - background-color: #EF5350; - margin: .7em; - padding: .5em; - box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.4); + margin: 1em; + padding: .5em 1em; + border: 1px solid white; } .action-bar button.start-order:hover { - background-color: #F44336; + background-color: white; + color: black; } /* New */ diff --git a/forms/ecomerce/catalog/catalog.js b/forms/ecomerce/catalog/catalog.js index 373983d1..7b1ed376 100644 --- a/forms/ecomerce/catalog/catalog.js +++ b/forms/ecomerce/catalog/catalog.js @@ -118,8 +118,7 @@ Hedera.Catalog = new Class({ this.$('filters').style.display = 'none'; this.$('realm-msg').style.display = 'block'; } - - this.refreshTitleColor(); + this.refreshFilter(newValue, undefined); } @@ -143,25 +142,6 @@ Hedera.Catalog = new Class({ batch.changed(); } - ,refreshTitleColor: function() { - var realms = this.$('realms-model'); - - if (!realms.ready) - return; - - var color = null; - var realm = this.$('realm').value; - - if (realm) { - var row = realms.search('id', realm); - - if (row != -1) - color = '#'+ realms.get(row, 'color'); - } - - this.gui.$('top-bar').style.backgroundColor = color; - } - ,refreshTitle: function() { var types = this.$('types-model'); diff --git a/forms/ecomerce/catalog/style.css b/forms/ecomerce/catalog/style.css index 7d8a8b6d..848b833f 100644 --- a/forms/ecomerce/catalog/style.css +++ b/forms/ecomerce/catalog/style.css @@ -16,20 +16,21 @@ .right-panel { position: fixed; - top: 3.9em; + top: 4.4em; bottom: 0; right: 0; width: 17em; - background-color: white; - box-shadow: 0 0 .2em rgba(1, 1, 1, .2); overflow: auto; + background-color: #fafafa; } .right-panel .basket-info { - background-color: #00ACC1; + background-color: #8cc63f; color: white; - box-shadow: 0 .1em .1em rgba(1, 1, 1, .3); padding: 1.2em 2em; + border-radius: .5em; + margin: 1em; + text-align: center; } .right-panel .basket-info > button { @@ -43,7 +44,6 @@ margin: 0; padding: .4em 0; font-size: 1.1em; - text-align: left; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index f6780139..53b51723 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -189,8 +189,7 @@ class="realms-box"> <db-model id="realms-model" - property="model" - on-status-changed="refreshTitleColor"> + property="model"> SELECT c.id, l.name, c.color, c.code FROM vn.itemCategory c JOIN vn.itemCategoryL10n l ON l.id = c.id diff --git a/forms/ecomerce/checkout/style.css b/forms/ecomerce/checkout/style.css index d1dc875f..9fd2a7fe 100644 --- a/forms/ecomerce/checkout/style.css +++ b/forms/ecomerce/checkout/style.css @@ -65,11 +65,6 @@ .radio > div { padding: 0.5em; - border-top: 1px solid #AAA; -} -.radio > div:first-child -{ - border-top: none; } .thin-calendar { diff --git a/image/logo-dark.svg b/image/logo-dark.svg index 6cf594a7..4d53b7b3 100644 --- a/image/logo-dark.svg +++ b/image/logo-dark.svg @@ -1,6 +1,4 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) --> - <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" @@ -18,113 +16,146 @@ enable-background="new 0 0 226.229 31.038" xml:space="preserve" id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="logo.svg"><metadata - id="metadata61"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs59" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1016" - id="namedview57" - showgrid="false" - inkscape:zoom="4.0755163" - inkscape:cx="120.82882" - inkscape:cy="16.019257" - inkscape:window-x="1920" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /><g - id="Background" /><g - id="Guides" /><g - id="g9" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="M 10.417,30.321 0,0 h 8.233 l 4.26,15.582 0.349,1.276 c 0.521,1.866 0.918,3.431 1.191,4.693 0.15,-0.618 0.335,-1.345 0.555,-2.182 0.219,-0.837 0.528,-1.935 0.925,-3.293 L 19.981,0 h 8.19 l -10.5,30.321 h -7.254 z" - id="path11" - inkscape:connector-curvature="0" - style="fill-rule:evenodd;fill:#ffffff" /></g><g - id="g13" - style="fill:#acb42a;fill-opacity:1"><path - clip-rule="evenodd" - d="m 139.809,19.787 c -0.665,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.283,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.204,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.653,-1.665 1.98,-2.831 l 0.72,-2.573 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.925,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.307,-1.159 3.021,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.646,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.076,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.673,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.991,0 3.602,0.241 4.833,0.722 1.231,0.481 2.095,1.209 2.59,2.185 0.339,0.701 0.483,1.536 0.432,2.504 -0.052,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 l -0.235,0.842 z" - id="path15" - style="fill:#acb42a;fill-opacity:1;fill-rule:evenodd" - inkscape:connector-curvature="0" /></g><g - id="g17" - style="fill:#acb42a;fill-opacity:1"><path - clip-rule="evenodd" - d="m 185.7,30.321 6.27,-22.393 h 7.049 l -1.097,3.918 c 1.213,-1.537 2.502,-2.659 3.867,-3.366 1.365,-0.707 2.951,-1.074 4.758,-1.101 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.912,-0.093 -0.303,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -2.104,0.168 -2.932,0.504 -0.829,0.336 -1.561,0.854 -2.197,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.359,4.232 l -2.104,7.516 H 185.7 z" - id="path19" - style="fill:#acb42a;fill-opacity:1;fill-rule:evenodd" - inkscape:connector-curvature="0" /></g><g - id="g21" - style="fill:#acb42a;fill-opacity:1"><path - clip-rule="evenodd" - d="m 217.631,19.787 c -0.664,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.282,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.205,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.654,-1.665 1.98,-2.831 l 0.719,-2.573 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.926,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.306,-1.159 3.02,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.647,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.077,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.672,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.99,0 3.601,0.241 4.833,0.722 1.232,0.481 2.095,1.209 2.591,2.185 0.339,0.701 0.483,1.536 0.431,2.504 -0.051,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 l -0.236,0.842 z" - id="path23" - style="fill:#acb42a;fill-opacity:1;fill-rule:evenodd" - inkscape:connector-curvature="0" /></g><g - id="g25" - style="fill:#acb42a;fill-opacity:1"><path - clip-rule="evenodd" - d="m 188.386,7.928 -6.269,22.393 h -7.174 l 0.864,-3.085 c -1.227,1.246 -2.476,2.163 -3.746,2.751 -1.27,0.588 -2.625,0.882 -4.067,0.882 -2.471,0 -4.154,-0.634 -5.048,-1.901 -0.895,-1.268 -0.993,-3.149 -0.294,-5.644 l 4.31,-15.396 h 7.338 l -3.508,12.53 c -0.516,1.842 -0.641,3.109 -0.375,3.803 0.266,0.694 0.967,1.041 2.105,1.041 1.275,0 2.323,-0.422 3.142,-1.267 0.819,-0.845 1.497,-2.223 2.031,-4.133 l 3.353,-11.974 h 7.338 z" - id="path27" - style="fill:#acb42a;fill-opacity:1;fill-rule:evenodd" - inkscape:connector-curvature="0" /></g><g - id="g29" - style="fill:#acb42a;fill-opacity:1"><path - clip-rule="evenodd" - d="m 149.937,12.356 1.239,-4.428 h 2.995 l 1.771,-6.326 h 7.338 l -1.771,6.326 h 3.753 l -1.24,4.428 h -3.753 l -2.716,9.702 c -0.416,1.483 -0.498,2.465 -0.247,2.946 0.25,0.48 0.905,0.721 1.964,0.721 l 0.549,-0.011 0.39,-0.031 -1.31,4.678 c -0.811,0.148 -1.596,0.263 -2.354,0.344 -0.758,0.081 -1.48,0.122 -2.167,0.122 -2.543,0 -4.108,-0.621 -4.695,-1.863 -0.587,-1.242 -0.313,-3.887 0.82,-7.936 l 2.428,-8.672 h -2.994 z" - id="path31" - style="fill:#acb42a;fill-opacity:1;fill-rule:evenodd" - inkscape:connector-curvature="0" /></g><g - id="g33" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 h 7.296 z" - id="path35" - inkscape:connector-curvature="0" - style="fill:#ffffff;fill-rule:evenodd" /><g - id="g37" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 h 7.296 z" - id="path39" - inkscape:connector-curvature="0" - style="fill-rule:evenodd;fill:#ffffff" /></g></g><g - id="g41" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="M 46.488,30.321 52.757,7.928 h 7.049 l -1.098,3.918 C 59.921,10.309 61.21,9.187 62.576,8.48 63.942,7.773 68.591,7.406 70.398,7.379 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.911,-0.093 -0.304,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -5.167,0.168 -5.997,0.504 -0.829,0.336 -1.561,0.854 -2.196,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.36,4.232 l -2.104,7.516 h -7.296 z" - id="path43" - inkscape:connector-curvature="0" - style="fill-rule:evenodd;fill:#ffffff" /></g><g - id="g45" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" - id="path47" - inkscape:connector-curvature="0" - style="fill:#ffffff;fill-rule:evenodd" /><g - id="g49" - style="fill:#ffffff"><path - clip-rule="evenodd" - d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" - id="path51" - inkscape:connector-curvature="0" - style="fill-rule:evenodd;fill:#ffffff" /></g></g><g - id="g53" - style="fill:#acb42a;fill-opacity:1"><path - d="m 112.881,30.643 -6.404,-18.639 -6.455,18.639 h -7.254 l 9.565,-30.321 h 8.19 l 4.434,15.582 0.35,1.276 c 0.521,1.866 0.917,3.431 1.191,4.693 l 0.555,-2.182 c 0.219,-0.837 0.528,-1.935 0.925,-3.293 l 4.468,-16.076 h 8.19 l -10.501,30.321 h -7.254 z" - id="path55" - style="fill:#acb42a;fill-opacity:1" - inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" + sodipodi:docname="logo-dark.svg"><metadata + id="metadata61"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs59"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + </defs><sodipodi:namedview + pagecolor="#1a1a1a" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1016" + id="namedview57" + showgrid="false" + inkscape:zoom="3.4054244" + inkscape:cx="112.21891" + inkscape:cy="27.15689" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" + inkscape:document-rotation="0" /> +<g + id="Background"> +</g> +<g + id="Guides"> +</g> +<path + fill-rule="evenodd" + clip-rule="evenodd" + d="M 10.417,30.321 0,0 h 8.233 l 4.26,15.582 0.349,1.276 c 0.521,1.866 0.918,3.431 1.191,4.693 0.15,-0.618 0.335,-1.345 0.555,-2.182 0.219,-0.837 0.528,-1.935 0.925,-3.293 L 19.981,0 h 8.19 l -10.5,30.321 z" + id="path11" + style="fill:#ffffff;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#A0CE67" + d="m 139.809,19.787 c -0.665,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.283,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.204,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.653,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.925,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.307,-1.159 3.021,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.646,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.076,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.673,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.991,0 3.602,0.241 4.833,0.722 1.231,0.481 2.095,1.209 2.59,2.185 0.339,0.701 0.483,1.536 0.432,2.504 -0.052,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" + id="path15" + style="fill:#97d700;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#A0CE67" + d="m 185.7,30.321 6.27,-22.393 h 7.049 l -1.097,3.918 c 1.213,-1.537 2.502,-2.659 3.867,-3.366 1.365,-0.707 2.951,-1.074 4.758,-1.101 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.912,-0.093 -0.303,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -2.104,0.168 -2.932,0.504 -0.829,0.336 -1.561,0.854 -2.197,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.359,4.232 l -2.104,7.516 H 185.7 Z" + id="path19" + style="fill:#97d700;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#A0CE67" + d="m 217.631,19.787 c -0.664,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.282,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.205,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.654,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.926,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.306,-1.159 3.02,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.647,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.077,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.672,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.99,0 3.601,0.241 4.833,0.722 1.232,0.481 2.095,1.209 2.591,2.185 0.339,0.701 0.483,1.536 0.431,2.504 -0.051,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" + id="path23" + style="fill:#97d700;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#A0CE67" + d="m 188.386,7.928 -6.269,22.393 h -7.174 l 0.864,-3.085 c -1.227,1.246 -2.476,2.163 -3.746,2.751 -1.27,0.588 -2.625,0.882 -4.067,0.882 -2.471,0 -4.154,-0.634 -5.048,-1.901 -0.895,-1.268 -0.993,-3.149 -0.294,-5.644 l 4.31,-15.396 h 7.338 l -3.508,12.53 c -0.516,1.842 -0.641,3.109 -0.375,3.803 0.266,0.694 0.967,1.041 2.105,1.041 1.275,0 2.323,-0.422 3.142,-1.267 0.819,-0.845 1.497,-2.223 2.031,-4.133 l 3.353,-11.974 z" + id="path27" + style="fill:#97d700;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#A0CE67" + d="m 149.937,12.356 1.239,-4.428 h 2.995 l 1.771,-6.326 h 7.338 l -1.771,6.326 h 3.753 l -1.24,4.428 h -3.753 l -2.716,9.702 c -0.416,1.483 -0.498,2.465 -0.247,2.946 0.25,0.48 0.905,0.721 1.964,0.721 l 0.549,-0.011 0.39,-0.031 -1.31,4.678 c -0.811,0.148 -1.596,0.263 -2.354,0.344 -0.758,0.081 -1.48,0.122 -2.167,0.122 -2.543,0 -4.108,-0.621 -4.695,-1.863 -0.587,-1.242 -0.313,-3.887 0.82,-7.936 l 2.428,-8.672 z" + id="path31" + style="fill:#97d700;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#ffffff" + d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" + id="path35" + style="fill:#ffffff;fill-opacity:1" /><g + id="g37" + style="fill:#ffffff;fill-opacity:1"> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" + id="path39" + style="fill:#ffffff;fill-opacity:1" /> + </g><path + fill-rule="evenodd" + clip-rule="evenodd" + d="M 46.488,30.321 52.757,7.928 h 7.049 l -1.098,3.918 C 59.921,10.309 61.21,9.187 62.576,8.48 63.942,7.773 68.591,7.406 70.398,7.379 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.911,-0.093 -0.304,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -5.167,0.168 -5.997,0.504 -0.829,0.336 -1.561,0.854 -2.196,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.36,4.232 l -2.104,7.516 h -7.296 z" + id="path43" + style="fill:#ffffff;fill-opacity:1" /><path + fill-rule="evenodd" + clip-rule="evenodd" + fill="#ffffff" + d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" + id="path47" + style="fill:#ffffff;fill-opacity:1" /><g + id="g49" + style="fill:#ffffff;fill-opacity:1"> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" + id="path51" + style="fill:#ffffff;fill-opacity:1" /> + </g><path + fill="#A0CE67" + d="m 112.881,30.643 -6.404,-18.639 -6.455,18.639 h -7.254 l 9.565,-30.321 h 8.19 l 4.434,15.582 0.35,1.276 c 0.521,1.866 0.917,3.431 1.191,4.693 l 0.555,-2.182 c 0.219,-0.837 0.528,-1.935 0.925,-3.293 l 4.468,-16.076 h 8.19 l -10.501,30.321 z" + id="path55" + style="fill:#97d700;fill-opacity:1" /> +</svg> diff --git a/image/logo.svg b/image/logo.svg index bba010e3..23b6df49 100644 --- a/image/logo.svg +++ b/image/logo.svg @@ -1,6 +1,4 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) --> - <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" @@ -18,12 +16,47 @@ enable-background="new 0 0 226.229 31.038" xml:space="preserve" id="svg2" - inkscape:version="0.48.1 r9760" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)" sodipodi:docname="logo.svg"><metadata id="metadata61"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs - id="defs59" /><sodipodi:namedview + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs59"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + </defs><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" @@ -32,135 +65,94 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1366" - inkscape:window-height="710" + inkscape:window-width="1920" + inkscape:window-height="1016" id="namedview57" showgrid="false" - inkscape:zoom="4.0755163" - inkscape:cx="138.56745" + inkscape:zoom="4.8159974" + inkscape:cx="90.91814" inkscape:cy="16.509992" inkscape:window-x="0" - inkscape:window-y="26" + inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> + inkscape:current-layer="svg2" + inkscape:document-rotation="0" /> <g id="Background"> </g> <g id="Guides"> </g> -<g - id="Foreground"> - <g - id="g7"> - <g - id="g9"> - <path +<path fill-rule="evenodd" clip-rule="evenodd" - d="M10.417,30.321L0,0h8.233l4.26,15.582l0.349,1.276 c0.521,1.866,0.918,3.431,1.191,4.693c0.15-0.618,0.335-1.345,0.555-2.182c0.219-0.837,0.528-1.935,0.925-3.293L19.981,0h8.19 L17.671,30.321H10.417z" - id="path11" /> - </g> - <g - id="g13"> - <path + d="M 10.417,30.321 0,0 h 8.233 l 4.26,15.582 0.349,1.276 c 0.521,1.866 0.918,3.431 1.191,4.693 0.15,-0.618 0.335,-1.345 0.555,-2.182 0.219,-0.837 0.528,-1.935 0.925,-3.293 L 19.981,0 h 8.19 l -10.5,30.321 z" + id="path11" + style="fill:#1a1a1a;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" - d="M139.809,19.787c-0.665,0.357-1.748,0.686-3.25,0.988 c-0.727,0.137-1.283,0.254-1.667,0.35c-0.95,0.247-1.661,0.563-2.134,0.947c-0.472,0.384-0.799,0.899-0.979,1.544 c-0.223,0.796-0.155,1.438,0.204,1.925c0.359,0.488,0.945,0.731,1.757,0.731c1.252,0,2.375-0.36,3.369-1.081 c0.994-0.721,1.653-1.665,1.98-2.831L139.809,19.787z M144.915,30.321h-7.458c0.017-0.356,0.048-0.726,0.094-1.11l0.159-1.192 c-1.318,1.026-2.627,1.786-3.927,2.279c-1.299,0.493-2.643,0.739-4.031,0.739c-2.158,0-3.7-0.593-4.625-1.779 c-0.925-1.187-1.106-2.788-0.542-4.804c0.519-1.851,1.431-3.356,2.737-4.515c1.307-1.159,3.021-1.972,5.142-2.438 c1.169-0.247,2.641-0.515,4.413-0.803c2.646-0.412,4.082-1.016,4.304-1.812l0.151-0.539c0.182-0.65,0.076-1.145-0.317-1.483 c-0.393-0.339-1.071-0.508-2.033-0.508c-1.045,0-1.934,0.214-2.666,0.643c-0.731,0.428-1.289,1.058-1.673,1.887h-6.748 c1.065-2.53,2.64-4.413,4.723-5.65s4.724-1.856,7.923-1.856c1.991,0,3.602,0.241,4.833,0.722s2.095,1.209,2.59,2.185 c0.339,0.701,0.483,1.536,0.432,2.504c-0.052,0.969-0.377,2.525-0.978,4.669l-2.375,8.483c-0.284,1.014-0.416,1.812-0.396,2.395 s0.188,0.962,0.503,1.141L144.915,30.321z" + d="m 139.809,19.787 c -0.665,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.283,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.204,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.653,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.925,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.307,-1.159 3.021,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.646,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.076,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.673,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.991,0 3.602,0.241 4.833,0.722 1.231,0.481 2.095,1.209 2.59,2.185 0.339,0.701 0.483,1.536 0.432,2.504 -0.052,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" id="path15" - style="fill:#8ed300;fill-opacity:1" /> - </g> - <g - id="g17"> - <path + style="fill:#97d700;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" - d="M185.7,30.321l6.27-22.393h7.049l-1.097,3.918 c1.213-1.537,2.502-2.659,3.867-3.366c1.365-0.707,2.951-1.074,4.758-1.101l-2.03,7.25c-0.304-0.042-0.608-0.072-0.912-0.093 c-0.303-0.02-0.592-0.03-0.867-0.03c-1.126,0-2.104,0.168-2.932,0.504c-0.829,0.336-1.561,0.854-2.197,1.555 c-0.406,0.467-0.789,1.136-1.149,2.007c-0.361,0.872-0.814,2.282-1.359,4.232l-2.104,7.516H185.7z" + d="m 185.7,30.321 6.27,-22.393 h 7.049 l -1.097,3.918 c 1.213,-1.537 2.502,-2.659 3.867,-3.366 1.365,-0.707 2.951,-1.074 4.758,-1.101 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.912,-0.093 -0.303,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -2.104,0.168 -2.932,0.504 -0.829,0.336 -1.561,0.854 -2.197,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.359,4.232 l -2.104,7.516 H 185.7 Z" id="path19" - style="fill:#8ed300;fill-opacity:1" /> - </g> - <g - id="g21"> - <path + style="fill:#97d700;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" - d="M217.631,19.787c-0.664,0.357-1.748,0.686-3.25,0.988 c-0.727,0.137-1.282,0.254-1.667,0.35c-0.95,0.247-1.661,0.563-2.134,0.947c-0.472,0.384-0.799,0.899-0.979,1.544 c-0.223,0.796-0.155,1.438,0.205,1.925c0.359,0.488,0.945,0.731,1.757,0.731c1.252,0,2.375-0.36,3.369-1.081 c0.994-0.721,1.654-1.665,1.98-2.831L217.631,19.787z M222.737,30.321h-7.458c0.017-0.356,0.048-0.726,0.094-1.11l0.159-1.192 c-1.318,1.026-2.627,1.786-3.927,2.279c-1.299,0.493-2.643,0.739-4.031,0.739c-2.158,0-3.7-0.593-4.625-1.779 c-0.926-1.187-1.106-2.788-0.542-4.804c0.519-1.851,1.431-3.356,2.737-4.515c1.306-1.159,3.02-1.972,5.142-2.438 c1.169-0.247,2.641-0.515,4.413-0.803c2.647-0.412,4.082-1.016,4.304-1.812l0.151-0.539c0.182-0.65,0.077-1.145-0.317-1.483 c-0.393-0.339-1.071-0.508-2.033-0.508c-1.045,0-1.934,0.214-2.666,0.643c-0.731,0.428-1.289,1.058-1.672,1.887h-6.748 c1.065-2.53,2.64-4.413,4.723-5.65s4.724-1.856,7.923-1.856c1.99,0,3.601,0.241,4.833,0.722s2.095,1.209,2.591,2.185 c0.339,0.701,0.483,1.536,0.431,2.504c-0.051,0.969-0.377,2.525-0.978,4.669l-2.375,8.483c-0.284,1.014-0.416,1.812-0.396,2.395 c0.02,0.583,0.188,0.962,0.503,1.141L222.737,30.321z" + d="m 217.631,19.787 c -0.664,0.357 -1.748,0.686 -3.25,0.988 -0.727,0.137 -1.282,0.254 -1.667,0.35 -0.95,0.247 -1.661,0.563 -2.134,0.947 -0.472,0.384 -0.799,0.899 -0.979,1.544 -0.223,0.796 -0.155,1.438 0.205,1.925 0.359,0.488 0.945,0.731 1.757,0.731 1.252,0 2.375,-0.36 3.369,-1.081 0.994,-0.721 1.654,-1.665 1.98,-2.831 z m 5.106,10.534 h -7.458 c 0.017,-0.356 0.048,-0.726 0.094,-1.11 l 0.159,-1.192 c -1.318,1.026 -2.627,1.786 -3.927,2.279 -1.299,0.493 -2.643,0.739 -4.031,0.739 -2.158,0 -3.7,-0.593 -4.625,-1.779 -0.926,-1.187 -1.106,-2.788 -0.542,-4.804 0.519,-1.851 1.431,-3.356 2.737,-4.515 1.306,-1.159 3.02,-1.972 5.142,-2.438 1.169,-0.247 2.641,-0.515 4.413,-0.803 2.647,-0.412 4.082,-1.016 4.304,-1.812 l 0.151,-0.539 c 0.182,-0.65 0.077,-1.145 -0.317,-1.483 -0.393,-0.339 -1.071,-0.508 -2.033,-0.508 -1.045,0 -1.934,0.214 -2.666,0.643 -0.731,0.428 -1.289,1.058 -1.672,1.887 h -6.748 c 1.065,-2.53 2.64,-4.413 4.723,-5.65 2.083,-1.237 4.724,-1.856 7.923,-1.856 1.99,0 3.601,0.241 4.833,0.722 1.232,0.481 2.095,1.209 2.591,2.185 0.339,0.701 0.483,1.536 0.431,2.504 -0.051,0.969 -0.377,2.525 -0.978,4.669 l -2.375,8.483 c -0.284,1.014 -0.416,1.812 -0.396,2.395 0.02,0.583 0.188,0.962 0.503,1.141 z" id="path23" - style="fill:#8ed300;fill-opacity:1" /> - </g> - <g - id="g25"> - <path + style="fill:#97d700;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" - d="M188.386,7.928l-6.269,22.393h-7.174l0.864-3.085 c-1.227,1.246-2.476,2.163-3.746,2.751s-2.625,0.882-4.067,0.882c-2.471,0-4.154-0.634-5.048-1.901 c-0.895-1.268-0.993-3.149-0.294-5.644l4.31-15.396h7.338l-3.508,12.53c-0.516,1.842-0.641,3.109-0.375,3.803 s0.967,1.041,2.105,1.041c1.275,0,2.323-0.422,3.142-1.267c0.819-0.845,1.497-2.223,2.031-4.133l3.353-11.974H188.386z" + d="m 188.386,7.928 -6.269,22.393 h -7.174 l 0.864,-3.085 c -1.227,1.246 -2.476,2.163 -3.746,2.751 -1.27,0.588 -2.625,0.882 -4.067,0.882 -2.471,0 -4.154,-0.634 -5.048,-1.901 -0.895,-1.268 -0.993,-3.149 -0.294,-5.644 l 4.31,-15.396 h 7.338 l -3.508,12.53 c -0.516,1.842 -0.641,3.109 -0.375,3.803 0.266,0.694 0.967,1.041 2.105,1.041 1.275,0 2.323,-0.422 3.142,-1.267 0.819,-0.845 1.497,-2.223 2.031,-4.133 l 3.353,-11.974 z" id="path27" - style="fill:#8ed300;fill-opacity:1" /> - </g> - <g - id="g29"> - <path + style="fill:#97d700;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" fill="#A0CE67" - d="M149.937,12.356l1.239-4.428h2.995l1.771-6.326h7.338 l-1.771,6.326h3.753l-1.24,4.428h-3.753l-2.716,9.702c-0.416,1.483-0.498,2.465-0.247,2.946c0.25,0.48,0.905,0.721,1.964,0.721 l0.549-0.011l0.39-0.031l-1.31,4.678c-0.811,0.148-1.596,0.263-2.354,0.344c-0.758,0.081-1.48,0.122-2.167,0.122 c-2.543,0-4.108-0.621-4.695-1.863c-0.587-1.242-0.313-3.887,0.82-7.936l2.428-8.672H149.937z" + d="m 149.937,12.356 1.239,-4.428 h 2.995 l 1.771,-6.326 h 7.338 l -1.771,6.326 h 3.753 l -1.24,4.428 h -3.753 l -2.716,9.702 c -0.416,1.483 -0.498,2.465 -0.247,2.946 0.25,0.48 0.905,0.721 1.964,0.721 l 0.549,-0.011 0.39,-0.031 -1.31,4.678 c -0.811,0.148 -1.596,0.263 -2.354,0.344 -0.758,0.081 -1.48,0.122 -2.167,0.122 -2.543,0 -4.108,-0.621 -4.695,-1.863 -0.587,-1.242 -0.313,-3.887 0.82,-7.936 l 2.428,-8.672 z" id="path31" - style="fill:#8ed300;fill-opacity:1" /> - </g> - <g - id="g33"> - <path + style="fill:#97d700;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" - fill="#FFFFFF" - d="M73.875,18.896c-0.561,2.004-0.616,3.537-0.167,4.601 s1.375,1.595,2.774,1.595c1.399,0,2.605-0.524,3.62-1.574s1.806-2.59,2.375-4.622c0.526-1.879,0.556-3.334,0.09-4.363 c-0.466-1.029-1.393-1.543-2.778-1.543c-1.304,0-2.487,0.528-3.551,1.585S74.386,17.071,73.875,18.896z M96.513,0l-8.489,30.321 h-7.337l0.824-2.944c-1.166,1.22-2.369,2.121-3.61,2.703s-2.583,0.874-4.025,0.874c-2.802,0-4.772-1.081-5.912-3.243 c-1.139-2.162-1.218-4.993-0.238-8.493c0.988-3.528,2.668-6.404,5.042-8.627c2.374-2.224,4.927-3.336,7.661-3.336 c1.47,0,2.695,0.296,3.676,0.887c0.981,0.591,1.681,1.465,2.099,2.62L89.217,0H96.513z" - id="path35" /> - <g + fill="#ffffff" + d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" + id="path35" /><g id="g37"> <path fill-rule="evenodd" clip-rule="evenodd" - d="M73.875,18.896c-0.561,2.004-0.616,3.537-0.167,4.601s1.375,1.595,2.774,1.595 c1.399,0,2.605-0.524,3.62-1.574s1.806-2.59,2.375-4.622c0.526-1.879,0.556-3.334,0.09-4.363 c-0.466-1.029-1.393-1.543-2.778-1.543c-1.304,0-2.487,0.528-3.551,1.585S74.386,17.071,73.875,18.896z M96.513,0l-8.489,30.321 h-7.337l0.824-2.944c-1.166,1.22-2.369,2.121-3.61,2.703s-2.583,0.874-4.025,0.874c-2.802,0-4.772-1.081-5.912-3.243 c-1.139-2.162-1.218-4.993-0.238-8.493c0.988-3.528,2.668-6.404,5.042-8.627c2.374-2.224,4.927-3.336,7.661-3.336 c1.47,0,2.695,0.296,3.676,0.887c0.981,0.591,1.681,1.465,2.099,2.62L89.217,0H96.513z" - id="path39" /> - </g> - </g> - <g - id="g41"> - <path + d="m 73.875,18.896 c -0.561,2.004 -0.616,3.537 -0.167,4.601 0.449,1.064 1.375,1.595 2.774,1.595 1.399,0 2.605,-0.524 3.62,-1.574 1.015,-1.05 1.806,-2.59 2.375,-4.622 0.526,-1.879 0.556,-3.334 0.09,-4.363 -0.466,-1.029 -1.393,-1.543 -2.778,-1.543 -1.304,0 -2.487,0.528 -3.551,1.585 -1.064,1.057 -1.852,2.496 -2.363,4.321 z M 96.513,0 88.024,30.321 h -7.337 l 0.824,-2.944 c -1.166,1.22 -2.369,2.121 -3.61,2.703 -1.241,0.582 -2.583,0.874 -4.025,0.874 -2.802,0 -4.772,-1.081 -5.912,-3.243 -1.139,-2.162 -1.218,-4.993 -0.238,-8.493 0.988,-3.528 2.668,-6.404 5.042,-8.627 2.374,-2.224 4.927,-3.336 7.661,-3.336 1.47,0 2.695,0.296 3.676,0.887 0.981,0.591 1.681,1.465 2.099,2.62 L 89.217,0 Z" + id="path39" + style="fill:#1a1a1a;fill-opacity:1" /> + </g><path fill-rule="evenodd" clip-rule="evenodd" - d="M46.488,30.321l6.269-22.393h7.049l-1.098,3.918 c1.213-1.537,2.502-2.659,3.868-3.366s6.015-1.074,7.822-1.101l-2.03,7.25c-0.304-0.042-0.608-0.072-0.911-0.093 c-0.304-0.02-0.592-0.03-0.867-0.03c-1.126,0-5.167,0.168-5.997,0.504c-0.829,0.336-1.561,0.854-2.196,1.555 c-0.406,0.467-0.789,1.136-1.149,2.007c-0.361,0.872-0.814,2.282-1.36,4.232l-2.104,7.516H46.488z" - id="path43" /> - </g> - <g - id="g45"> - <path + d="M 46.488,30.321 52.757,7.928 h 7.049 l -1.098,3.918 C 59.921,10.309 61.21,9.187 62.576,8.48 63.942,7.773 68.591,7.406 70.398,7.379 l -2.03,7.25 c -0.304,-0.042 -0.608,-0.072 -0.911,-0.093 -0.304,-0.02 -0.592,-0.03 -0.867,-0.03 -1.126,0 -5.167,0.168 -5.997,0.504 -0.829,0.336 -1.561,0.854 -2.196,1.555 -0.406,0.467 -0.789,1.136 -1.149,2.007 -0.361,0.872 -0.814,2.282 -1.36,4.232 l -2.104,7.516 h -7.296 z" + id="path43" + style="fill:#1a1a1a;fill-opacity:1" /><path fill-rule="evenodd" clip-rule="evenodd" - fill="#FFFFFF" - d="M32.673,16.742l8.351-0.021 c0.375-1.436,0.308-2.558-0.201-3.365s-1.402-1.211-2.68-1.211c-1.209,0-2.285,0.397-3.229,1.19S33.224,15.265,32.673,16.742z M38.817,23.278h7.043c-1.347,2.456-3.172,4.356-5.477,5.7c-2.305,1.345-4.885,2.017-7.74,2.017 c-3.473,0-5.923-1.054-7.351-3.161c-1.427-2.107-1.632-4.98-0.613-8.618c1.038-3.707,2.875-6.641,5.512-8.803 c2.637-2.163,5.678-3.244,9.123-3.244c3.555,0,6.04,1.099,7.456,3.298c1.417,2.198,1.582,5.234,0.498,9.109l-0.239,0.814 l-0.167,0.484H31.721c-0.441,1.575-0.438,2.777,0.01,3.606c0.448,0.829,1.332,1.244,2.65,1.244c0.975,0,1.836-0.206,2.583-0.617 S38.33,24.086,38.817,23.278z" - id="path47" /> - <g - id="g49"> + fill="#ffffff" + d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" + id="path47" /><g + id="g49" + style="fill:#1a1a1a;fill-opacity:1"> <path fill-rule="evenodd" clip-rule="evenodd" - d="M32.673,16.742l8.351-0.021c0.375-1.436,0.308-2.558-0.201-3.365 s-1.402-1.211-2.68-1.211c-1.209,0-2.285,0.397-3.229,1.19S33.224,15.265,32.673,16.742z M38.817,23.278h7.043 c-1.347,2.456-3.172,4.356-5.477,5.7c-2.305,1.345-4.885,2.017-7.74,2.017c-3.473,0-5.923-1.054-7.351-3.161 c-1.427-2.107-1.632-4.98-0.613-8.618c1.038-3.707,2.875-6.641,5.512-8.803c2.637-2.163,5.678-3.244,9.123-3.244 c3.555,0,6.04,1.099,7.456,3.298c1.417,2.198,1.582,5.234,0.498,9.109l-0.239,0.814l-0.167,0.484H31.721 c-0.441,1.575-0.438,2.777,0.01,3.606c0.448,0.829,1.332,1.244,2.65,1.244c0.975,0,1.836-0.206,2.583-0.617 S38.33,24.086,38.817,23.278z" - id="path51" /> - </g> - </g> - <g - id="g53"> - <path + d="m 32.673,16.742 8.351,-0.021 c 0.375,-1.436 0.308,-2.558 -0.201,-3.365 -0.509,-0.807 -1.402,-1.211 -2.68,-1.211 -1.209,0 -2.285,0.397 -3.229,1.19 -0.944,0.793 -1.69,1.93 -2.241,3.407 z m 6.144,6.536 h 7.043 c -1.347,2.456 -3.172,4.356 -5.477,5.7 -2.305,1.345 -4.885,2.017 -7.74,2.017 -3.473,0 -5.923,-1.054 -7.351,-3.161 -1.427,-2.107 -1.632,-4.98 -0.613,-8.618 1.038,-3.707 2.875,-6.641 5.512,-8.803 2.637,-2.163 5.678,-3.244 9.123,-3.244 3.555,0 6.04,1.099 7.456,3.298 1.417,2.198 1.582,5.234 0.498,9.109 l -0.239,0.814 -0.167,0.484 H 31.721 c -0.441,1.575 -0.438,2.777 0.01,3.606 0.448,0.829 1.332,1.244 2.65,1.244 0.975,0 1.836,-0.206 2.583,-0.617 0.747,-0.411 1.366,-1.021 1.853,-1.829 z" + id="path51" + style="fill:#1a1a1a;fill-opacity:1" /> + </g><path fill="#A0CE67" - d="M112.881,30.643l-6.404-18.639l-6.455,18.639h-7.254l9.565-30.321h8.19l4.434,15.582l0.35,1.276 c0.521,1.866,0.917,3.431,1.191,4.693l0.555-2.182c0.219-0.837,0.528-1.935,0.925-3.293l4.468-16.076h8.19l-10.501,30.321 H112.881z" + d="m 112.881,30.643 -6.404,-18.639 -6.455,18.639 h -7.254 l 9.565,-30.321 h 8.19 l 4.434,15.582 0.35,1.276 c 0.521,1.866 0.917,3.431 1.191,4.693 l 0.555,-2.182 c 0.219,-0.837 0.528,-1.935 0.925,-3.293 l 4.468,-16.076 h 8.19 l -10.501,30.321 z" id="path55" - style="fill:#8ed300;fill-opacity:1" /> - </g> - </g> -</g> -</svg> \ No newline at end of file + style="fill:#97d700;fill-opacity:1" /> +</svg> diff --git a/js/hedera/gui.css b/js/hedera/gui.css index e747901e..791f5e2e 100644 --- a/js/hedera/gui.css +++ b/js/hedera/gui.css @@ -1,39 +1,34 @@ -.vn-gui -{ +.vn-gui { height: inherit; } /* Font */ -.vn-gui .user-info, +.vn-gui .user-name, .vn-gui .menu-title, -.vn-gui .main-menu -{ +.vn-gui .main-menu { font-size: 1.1em; } /* Navigation bar */ -.vn-gui .navbar -{ +.vn-gui .navbar { position: fixed; - background-color: #009688; - left: 15em; + background-color: #1A1A1A; + left: 250px; top: 0; right: 0; z-index: 1; overflow: hidden; - box-shadow: 0 0 .2em rgba(1, 1, 1, .3); - height: 3.9em; + height: 64px; color: white; transition-property: left, background-color, transform; transition-duration: 200ms; transition-timing-function: ease-in-out; } -.vn-gui .menu-button -{ +.vn-gui .menu-button { position: absolute; left: 0; display: none; @@ -43,71 +38,61 @@ margin: 0; height: 100%; } -.vn-gui .menu-button:hover -{ +.vn-gui .menu-button:hover { background-color: rgba(0, 0, 0, .2); } -.vn-gui .menu-button img -{ +.vn-gui .menu-button img { vertical-align: middle; height: 1.8em; } -.vn-gui .title -{ +.vn-gui .title { float: left; } -.vn-gui .title h1 -{ +.vn-gui .title h1 { font-weight: normal; font-size: 1.4em; padding: .8em .6em; padding-right: .3em; margin: 0; } -.vn-gui .navbar > .htk-spinner -{ +.vn-gui .navbar > .htk-spinner { float: left; margin: 1.05em .8em; } /* Action bar */ -.vn-gui .action-bar -{ +.vn-gui .action-bar { float: right; padding: 0; margin: 0; height: 100%; } -.vn-gui .action-bar > div -{ +.vn-gui .action-bar > div { padding: 0; margin: 0; height: 100%; } -.vn-gui .action-bar > div > * -{ +.vn-gui .action-bar > div > * { float: right; } -.vn-gui .action-bar button -{ +.vn-gui .action-bar button { margin: 0; padding: 1.25em .5em; + border-radius: 2em; + font-weight: bold; } -.vn-gui .action-bar button:hover -{ +.vn-gui .action-bar button:hover { background-color: rgba(1, 1, 1, .2); } -.vn-gui .action-bar button > img -{ +.vn-gui .action-bar button > img { vertical-align: middle; height: 1.4em; } /* Background */ -.vn-gui > .background -{ +.vn-gui > .background { z-index: 10; position: fixed; top: 0; @@ -118,8 +103,7 @@ background-color: rgba(1, 1, 1, .7); opacity: 0; } -.vn-gui > .background.show -{ +.vn-gui > .background.show { visibility: visible; transition: opacity 200ms ease-out; opacity: 1; @@ -127,8 +111,7 @@ /* Left panel */ -.vn-gui .left-panel -{ +.vn-gui .left-panel { z-index: 20; position: fixed; left: 0; @@ -136,11 +119,9 @@ top: 0; background-color: white; z-index: 20; - box-shadow: 0 .2em .2em rgba(1, 1, 1, .4); - width: 15em; + width: 250px; } -.vn-gui .menu-overflow -{ +.vn-gui .menu-overflow { position: absolute; top: 0; left: 0; @@ -148,53 +129,71 @@ bottom: 4em; overflow: auto; } -.vn-gui .menu-header -{ - background-color: #333; +.vn-gui .menu-header { + background-color: #1A1A1A; color: white; - padding: 1em; + height: 64px; + display: flex; } -.vn-gui .logo -{ +.vn-gui .logo { display: block; - width: 12em; - margin-bottom: .8em; + width: 160px; + margin-left: 37px; } -.vn-gui .user-info -{ - width: 100%; +.vn-gui .user-info { overflow: hidden; + padding: 20px 37px; + font-weight: bold; } -.vn-gui .user-info > p -{ +.vn-gui .user-info > img { + margin-right: 10px; + height: 20px; + vertical-align: middle; +} +.vn-gui .user-info > p { margin: 0; margin-top: .2em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.vn-gui button.logout -{ +.vn-gui .logout { + display: block; + width: 100%; + margin: 0; + text-align: left; + padding: 14px 37px; +} +.vn-gui .supplant { + display: none; + padding: 8px; + margin: 0; + margin-top: .2em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.vn-gui .supplant > p { + margin: 0; + margin-top: .2em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.vn-gui .supplant-logout { float: right; margin: 0; padding: .2em; display: block; } -.vn-gui button.logout > img -{ +.vn-gui .supplant-logout > img { height: 1.2em; display: block; } -.vn-gui .supplant -{ - margin-top: .2em; - display: none; -} /* Test link */ -.vn-gui .test-link -{ +.vn-gui .test-link { display: none; margin: .5em; background-color: #3f51b5; @@ -204,12 +203,10 @@ border-radius: .1em; text-align: center; } -.vn-gui .test-link:hover -{ +.vn-gui .test-link:hover { background-color: #4f61c5; } -.vn-gui .dev-info -{ +.vn-gui .dev-info { display: none; padding: .3em .5em; color: white; @@ -218,49 +215,41 @@ margin: .5em; border-radius: .1em; } -.vn-gui .dev-info > p -{ +.vn-gui .dev-info > p { margin: .2em 0; } -.vn-gui .dev-info > .mode -{ +.vn-gui .dev-info > .mode { color: #BBF; } /* Menu */ .vn-gui .main-menu, -.vn-gui ul.submenu -{ +.vn-gui ul.submenu { list-style-type: none; padding: 0; margin: 0; } -.vn-gui .main-menu > li -{ +.vn-gui .main-menu > li { display: block; padding: 0; margin: 0; width: 100%; } -.vn-gui .main-menu a -{ +.vn-gui .main-menu a { width: 70%; padding: 0 15%; display: block; line-height: 2.8em; } .vn-gui .main-menu a:hover, -.vn-gui .main-menu a.selected -{ +.vn-gui .main-menu a.selected { background-color: rgba(1, 1, 1, .1); } -.vn-gui ul.submenu -{ +.vn-gui ul.submenu { display: none; } -.vn-gui ul.submenu.popup -{ +.vn-gui ul.submenu.popup { display: inline; position: fixed; border: none; @@ -274,20 +263,18 @@ /* Social */ -.vn-gui .social -{ +.vn-gui .menu-footer { position: absolute; bottom: 0; right: 0; - padding: .8em; + left: 0; } /* Body */ -.vn-gui > .body -{ - margin-left: 15em; - padding-top: 3.9em; +.vn-gui > .body { + margin-left: 250px; + padding-top: 4.4em; height: inherit; box-sizing: border-box; height: inherit; @@ -295,8 +282,7 @@ transition-property: margin-left, margin-right; transition-duration: 200ms; } -.vn-gui .form-holder -{ +.vn-gui .form-holder { position: relative; height: inherit; @@ -308,8 +294,7 @@ transition-duration: 200ms; transition-timing-function: ease-out; } -.vn-gui .form-holder.show -{ +.vn-gui .form-holder.show { opacity: 1; transform: translateZ(0) translateX(0em); -webkit-transform: translateZ(0) translateX(0em); @@ -317,46 +302,37 @@ /* Mobile */ -@media (max-width: 960px) -{ +@media (max-width: 960px) { .vn-gui .action-bar span.label, - .vn-gui .htk-button > span - { + .vn-gui .htk-button > span { display: none; } - .vn-gui > .navbar - { + .vn-gui > .navbar { padding-left: 2.8em; left: 0; } - .vn-gui > .body - { + .vn-gui > .body { margin-left: 0; } - .vn-gui .menu-button - { + .vn-gui .menu-button { display: block; } - .vn-gui .left-panel - { + .vn-gui .left-panel { top: 0; - left: -15em; + left: -250px; box-shadow: 0 0 .2em rgba(1, 1, 1, .3); transition: transform 200ms ease-out; -webkit-transition: transform 200ms ease-out; } - .vn-gui .left-panel.show - { - transform: translateZ(0) translateX(15em); - -webkit-transform: translateZ(0) translateX(15em); + .vn-gui .left-panel.show { + transform: translateZ(0) translateX(250px); + -webkit-transform: translateZ(0) translateX(250px); } - .vn-gui .form-holder - { + .vn-gui .form-holder { left: 0; } - .vn-gui ul.submenu - { + .vn-gui ul.submenu { display: block; background-color: #888; color: white; @@ -367,8 +343,7 @@ transition: max-height 300ms ease-out; webkit-transition: max-height 300ms ease-out; } - .vn-gui .main-menu li:hover > ul.submenu - { + .vn-gui .main-menu li:hover > ul.submenu { max-height: 20em; } } diff --git a/js/hedera/gui.js b/js/hedera/gui.js index 04177602..9f790281 100644 --- a/js/hedera/gui.js +++ b/js/hedera/gui.js @@ -46,8 +46,6 @@ module.exports = new Class({ this.parent(props); - this.$('social-bar').conn = this._conn; - var sql = 'SELECT nickname FROM account.myUser;' +'SELECT defaultForm FROM config;' +'SELECT url FROM imageConfig;' diff --git a/js/hedera/gui.xml b/js/hedera/gui.xml index 261c6b64..ec5c53fc 100644 --- a/js/hedera/gui.xml +++ b/js/hedera/gui.xml @@ -12,28 +12,28 @@ <div class="menu-overflow"> <div class="menu-header" id="menu-header"> <img class="logo" src="image/logo-dark.svg" alt="Verdnatura"/> - <div class="user-info"> - <button class="logout" on-click="onLogoutClick" title="_Exit"> - <img src="image/icon/dark/exit.svg" alt="_Exit"/> - </button> - <p id="user-name"/> - </div> - <div id="supplant" class="supplant user-info"> - <button class="logout" on-click="onSupplantExitClick" title="_Exit"> - <img src="image/icon/dark/exit.svg" alt="_Exit"/> - </button> - <p id="supplanted"/> - </div> + </div> + <div class="user-info"> + <img src="image/icon/light/access-log.svg" alt=""/> + <t>Hello</t>, <span id="user-name"/> + </div> + <ul id="main-menu" class="main-menu"/> + <button class="logout" on-click="onLogoutClick"> + <t>Exit</t> + </button> + </div> + <div class="menu-footer"> + <div id="supplant" class="supplant"> + <button class="supplant-logout" on-click="onSupplantExitClick" title="_Exit"> + <img src="image/icon/light/exit.svg" alt="_Exit"/> + </button> + <p id="supplanted"/> </div> <div id="dev-info" class="dev-info"> <p class="mode">Testing</p> <p><t>Version</t> <span id="version"/></p> </div> <a id="test-link" class="test-link" href="#">Old website</a> - <ul id="main-menu" class="main-menu"/> - </div> - <div class="social"> - <htk-social-bar id="social-bar" priority="2"/> </div> </div> <div class="body"> diff --git a/js/hedera/locale/ca.yml b/js/hedera/locale/ca.yml index e26b24f7..e398549a 100644 --- a/js/hedera/locale/ca.yml +++ b/js/hedera/locale/ca.yml @@ -1,10 +1,10 @@ User: Usuari Password: Contrasenya Beta: Beta -Do not sign out: No tancar sessió +Remind me: No tancar sessió Log in as guest: Accedir com a convidat -Enter: Entrar -Login mail: clientes@verdnatura.es +Login: Iniciar sesió +Login mail: info@verdnatura.es Login phone: +34 607 562 391 Password forgotten? Push here: ¿Has oblidat la teva contrasenya? Yet you are not a customer?: Encara no ets client? diff --git a/js/hedera/locale/en.yml b/js/hedera/locale/en.yml index ff22a8f9..eabb42ae 100644 --- a/js/hedera/locale/en.yml +++ b/js/hedera/locale/en.yml @@ -1,10 +1,10 @@ User: User Password: Password Beta: Beta -Do not sign out: Do not sign out +Remind me: Remind me Log in as guest: Log in as guest -Enter: Enter -Login mail: clientes@verdnatura.es +Login: Login +Login mail: info@verdnatura.es Login phone: +34 607 562 391 Password forgotten? Push here: Password forgotten? Push here Yet you are not a customer?: Yet you are not a customer? diff --git a/js/hedera/locale/es.yml b/js/hedera/locale/es.yml index 1c994999..619b47da 100644 --- a/js/hedera/locale/es.yml +++ b/js/hedera/locale/es.yml @@ -1,10 +1,10 @@ User: Usuario Password: Contraseña Beta: Beta -Do not sign out: No cerrar sesión +Remind me: Recuérdame Log in as guest: Entrar como invitado -Enter: Entrar -Login mail: clientes@verdnatura.es +Login: Iniciar sesión +Login mail: info@verdnatura.es Login phone: +34 963 242 100 Password forgotten? Push here: ¿Has olvidado tu contraseña? Yet you are not a customer?: ¿Todavía no eres cliente? diff --git a/js/hedera/locale/fr.yml b/js/hedera/locale/fr.yml index 45d4fa56..cc5b9599 100644 --- a/js/hedera/locale/fr.yml +++ b/js/hedera/locale/fr.yml @@ -1,9 +1,9 @@ User: Utilisateur Password: Mot de passe Beta: Beta -Do not sign out: Garder ma session active +Remind me: Garder ma session active Log in as guest: Entrez en tant qu'invité -Enter: Entrer +Login: Entrer Login mail: ruben@verdnatura.es Login phone: +33 781 533 900 Password forgotten? Push here: as tu oublié ton mot de passe? diff --git a/js/hedera/locale/mn.yml b/js/hedera/locale/mn.yml index 06ee6aac..6ed3bd69 100644 --- a/js/hedera/locale/mn.yml +++ b/js/hedera/locale/mn.yml @@ -1,10 +1,10 @@ User: Хэрэглэгчийн Password: нууц үг Beta: Бета -Do not sign out: Гаргаж гарын үсэг зураагүй байна +Remind me: Гаргаж гарын үсэг зураагүй байна Log in as guest: Зочин байдлаар оруулна уу -Enter: энд бичнэ үү -Login mail: clientes@verdnatura.es +Login: энд бичнэ үү +Login mail: info@verdnatura.es Login phone: +34 607 562 391 Password forgotten? Push here: Нууц үг мартсан? энд түлхэх Yet you are not a customer?: Гэсэн хэдий ч та хэрэглэгчийн биш гэж үү? diff --git a/js/hedera/locale/pt.yml b/js/hedera/locale/pt.yml index 326d88be..d8f23e9a 100644 --- a/js/hedera/locale/pt.yml +++ b/js/hedera/locale/pt.yml @@ -1,10 +1,10 @@ User: Usuario Password: Palavra-Passe Beta: Beta -Do not sign out: Não finalizar Sessão +Remind me: Não finalizar Sessão Log in as guest: Entrar como convidado -Enter: Entrar -Login mail: clientes@verdnatura.es +Login: Entrar +Login mail: info@verdnatura.es Login phone: +34 963 242 100 Password forgotten? Push here: Não lembro minha palavra-passe Yet you are not a customer?: Ainda não és cliente? diff --git a/js/hedera/login.css b/js/hedera/login.css index 940435b9..02dc3763 100644 --- a/js/hedera/login.css +++ b/js/hedera/login.css @@ -5,25 +5,7 @@ font-size: 1.1em; font-weight: normal; height: inherit; -} - -/* Navigation bar */ - -.vn-login .navbar -{ - z-index: 10; - position: fixed; - background-color: #333; - width: 100%; - height: 3.5em; - top: 0; - color: white; - -} -.vn-login .navbar div -{ - margin-top: 1em; - text-align: center; + background-color: white; } /* Body */ @@ -39,7 +21,6 @@ max-width: 40em; height: inherit; background-color: white; - box-shadow: 0 0 .3em 0 rgba(1, 1, 1, 0.4); min-height: } @@ -49,14 +30,14 @@ { position: relative; height: inherit; - max-width: 15em; + max-width: 18em; margin: 0 auto; } .vn-login form { position: absolute; top: 50%; - margin-top: -20em; + margin-top: -380px; width: 100%; padding: 2em 0; } @@ -73,13 +54,12 @@ .vn-login .header { - margin-bottom: 2em; + margin-bottom: 80px; } .vn-login .header img { display: block; width: 100%; -/* box-shadow: 0 0 .3em 0 rgba(1, 1, 1, 0.4);*/ } .vn-login .version-code { @@ -107,6 +87,12 @@ display: block; font-size: inherit; } +.vn-login .remind-block { + margin: 20px 0; +} +.vn-login .remind-forgot { + margin: 40px 0; +} .vn-login input { margin: 0.3em; @@ -115,10 +101,9 @@ .vn-login input[type=password] { margin: 0; - margin-top: .5em; padding: 0 .5em; width: 100%; - border: 1px solid #AAA; + border-bottom: 1px solid #AAA; height: 2.6em; } .vn-login input[type=text], @@ -130,7 +115,6 @@ .vn-login .button { border-radius: .1em; - box-shadow: 0 .1em .1em rgba(1, 1, 1, 0.4); } .vn-login input[type=checkbox] { @@ -147,12 +131,13 @@ .vn-login .button { margin: 0 auto; - background-color: #9CBC28; - border: 1px solid #8A1; - height: 2.4em; + background-color: #0d1115; + border-radius: 25px; + height: 50px; width: 100%; - color: #240; - text-transform: uppercase; + color: white; + transition: transform 200ms ease-out; + transition-property: background-color; } .vn-login input[type=submit]:hover, .vn-login input[type=button]:hover, @@ -160,7 +145,20 @@ .vn-login button:hover, .vn-login .button:hover { - background-color: #8A1; + background-color: #7d8185; +} +.vn-login .button.guest +{ + margin-top: 15px; + border: 1px solid #0d1115; + background-color: white; + color: #0d1115; +} +.vn-login .button.guest:hover +{ + border-color: #7d8185; + background-color: #7d8185; + color: white; } hr { @@ -191,11 +189,18 @@ hr .vn-login .footer { - margin-top: 2em; + margin-top: 80px; + font-size: 14px; + text-align: center; } .vn-login .contact { - text-align: center; + margin-top: 15px; + color: grey; +} +.vn-login .footer a +{ + font-weight: bold; } @media (max-height: 50em) diff --git a/js/hedera/login.js b/js/hedera/login.js index 3bfc4368..e3da0621 100644 --- a/js/hedera/login.js +++ b/js/hedera/login.js @@ -1,6 +1,6 @@ -var Css = require ('./login.css'); -var Tpl = require ('./login.xml'); +var Css = require('./login.css'); +var Tpl = require('./login.xml'); module.exports = new Class ({ @@ -10,120 +10,104 @@ module.exports = new Class conn: { type: Db.Connection - ,set: function (x) - { - this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange}); + ,set: function(x) { + this.link({_conn: x}, {'loading-changed': this._onConnLoadChange}); } - ,get: function () - { + ,get: function() { return this._conn; } } } - ,initialize: function (props) - { - this.parent (props); - this.builderInitString (Tpl); + ,initialize: function(props) { + this.parent(props); + this.builderInitString(Tpl); - this.$('social-bar').conn = this._conn; + //this.$('social-bar').conn = this._conn; var self = this; - this.$('form').onsubmit = function () - { - self._onSubmit (); + this.$('form').onsubmit = function() { + self._onSubmit(); return false; }; } - ,_onConnLoadChange: function (conn, isLoading) - { + ,_onConnLoadChange: function(conn, isLoading) { if (isLoading) - this.$('spinner').start (); + this.$('spinner').start(); else - this.$('spinner').stop (); + this.$('spinner').stop(); } - ,show: function () - { - document.body.appendChild (this.node); + ,show: function() { + document.body.appendChild(this.node); - var lastUser = localStorage.getItem ('hederaLastUser'); + var lastUser = localStorage.getItem('hederaLastUser'); if (lastUser) this.$('user').value = lastUser; - this._focusUserInput (); + this._focusUserInput(); } - ,_onSubmit: function () - { - this._conn.open ( + ,_onSubmit: function() { + this._conn.open( this.$('user').value, this.$('pass').value, this.$('remember').checked, - this._onConnOpen.bind (this) + this._onConnOpen.bind(this) ); - this._disableUi (true); + this._disableUi(true); } - ,_onConnOpen: function (conn, success, error) - { + ,_onConnOpen: function(conn, success, error) { this.$('pass').value = ''; - this._disableUi (false); + this._disableUi(false); - if (success) - { + if (success) { var user = this.$('user').value; if (user) - localStorage.setItem ('hederaLastUser', user); + localStorage.setItem('hederaLastUser', user); - this.signalEmit ('login'); - } - else - { - this._focusUserInput (); + this.signalEmit('login'); + } else { + this._focusUserInput(); throw error; } } - ,hide: function () - { - Vn.Node.remove (this.node); + ,hide: function() { + Vn.Node.remove(this.node); } - ,_focusUserInput: function () - { + ,_focusUserInput: function() { var userEntry = this.$('user'); - userEntry.focus (); - userEntry.select (); + userEntry.focus(); + userEntry.select(); } - ,_disableUi: function (disabled) - { + ,_disableUi: function(disabled) { this.$('user').disabled = disabled; this.$('pass').disabled = disabled; this.$('submit').disabled = disabled; } - ,onPasswordLost: function () - { + ,onPasswordLost: function() { var user = this.$('user').value; if (!user) - Htk.Toast.showError (_('Please write your user name')); + Htk.Toast.showError(_('Please write your user name')); else - this._conn.send ('core/recover-password', {recoverUser: user}, - this._onPasswordRecovered.bind (this)); + this._conn.send('core/recover-password', {recoverUser: user}, + this._onPasswordRecovered.bind(this)); } - ,_onPasswordRecovered: function (json, error) - { + ,_onPasswordRecovered: function(json, error) { if (error) throw error; - Htk.Toast.showMessage (_('A mail has been sent wich you can recover your password')); + Htk.Toast.showMessage(_('A mail has been sent wich you can recover your password')); } }); diff --git a/js/hedera/login.xml b/js/hedera/login.xml index edfc286a..291b60d3 100644 --- a/js/hedera/login.xml +++ b/js/hedera/login.xml @@ -1,18 +1,11 @@ <vn> <div id="main" class="vn-login"> - <div class="navbar"> - <div> - <a href="#!form=cms/home&guest=true"> - <t>Log in as guest</t> - </a> - </div> - </div> <div class="body"> <div class="column"> <div class="login"> <form id="form"> <div class="header"> - <img src="image/banner.svg" alt=""/> + <img src="image/logo.svg" alt=""/> <div class="version-code"/> </div> <div class="form-group"> @@ -27,39 +20,42 @@ <input type="password" id="pass" name="password"/> </label> </div> - <div> - <label> - <input type="checkbox" id="remember" name="remember"/> - <t>Do not sign out</t> - </label> + <div class="remind-forgot"> + <div class="remind-block"> + <label> + <input type="checkbox" id="remember" name="remember"/> + <t>Remind me</t> + </label> + </div> + <div class="remind-block"> + <p> + <a href="#" on-click="onPasswordLost"> + <t>Password forgotten? Push here</t> + </a> + </p> + </div> </div> <div class="enter"> - <input id="submit" type="submit" value="_Enter"/> + <input id="submit" type="submit" value="_Login"/> <div class="wrapper"> <htk-spinner id="spinner"/> </div> - <p> - <a href="#" on-click="onPasswordLost"> - <t>Password forgotten? Push here</t> - </a> - </p> - </div> - <div> - <hr/> - </div> - <div> - <p><t>Yet you are not a customer?</t></p> - <a class="button" href="_Sign up link" target="_blank"> - <t>Sign up</t> - </a> </div> + <a class="button guest" href="#!form=cms/home&guest=true"> + <t>Log in as guest</t> + </a> <div class="footer"> + <p> + <t>Yet you are not a customer?</t> + <a href="_Sign up link" target="_blank"><t>Sign up</t></a> + </p> + <p class="contact"> + <p>Tel. <t>Login phone</t> - <t>Login mail</t></p> + </p> + <!-- <htk-social-bar id="social-bar" priority="1"/> <div id="social" class="social"/> - <div class="contact"> - <p><t>Login mail</t></p> - <p><t>Login phone</t></p> - </div> + --> </div> </form> </div> diff --git a/js/hedera/style.css b/js/hedera/style.css index af4cd28c..c0ac9c34 100644 --- a/js/hedera/style.css +++ b/js/hedera/style.css @@ -72,7 +72,7 @@ body { font-family: 'Roboto', 'Verdana', 'Sans'; - background-color: #EEE; + background-color: #FAFAFA; color: #333; position: absolute; height: 100%; @@ -307,7 +307,8 @@ button.thin, .button.thin { color: #008D77; - text-transform: uppercase; + border-radius: .5em; + background-color: rgba(0, 0, 0, .1); } input[type=submit].thin:disabled, input[type=button].thin:disabled, @@ -345,8 +346,8 @@ img.editable { background-color: white; margin: 0 auto; - border-radius: 0.1em; - box-shadow: 0 0.2em 0.2em #CCC; + border-radius: .8em; + box-shadow: .05em .05em .2em rgba(0, 0, 0, .1); } .box .header { diff --git a/js/htk/style.css b/js/htk/style.css index cc3676f4..f3e3b5e8 100644 --- a/js/htk/style.css +++ b/js/htk/style.css @@ -208,6 +208,7 @@ td.cell-image .htk-image width: 20em; background-color: white; border: none; + border-radius: .5em; } .htk-calendar table { @@ -216,7 +217,7 @@ td.cell-image .htk-image .htk-calendar thead tr, .htk-calendar tfoot tr { - background-color: #009688; + background-color: #8cc63f; color: white; font-weight: normal; vertical-align: middle; @@ -510,16 +511,12 @@ td.cell-image .htk-image .htk-assistant > div > h2 { text-align: center; - font-style: italic; font-weight: normal; font-size: 1.5em; margin: 0; padding: 0; margin-bottom: 1em; -} -.htk-assistant * -{ - color: #555; + font-weight: bold; } /* Assistant bar */ -- 2.40.1 From f815aa99921110c41a5ad3cd29f7c82515e9f474 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Sat, 21 May 2022 23:31:56 +0200 Subject: [PATCH 03/10] Checkpoint --- forms/account/address/style.css | 8 +- forms/account/address/ui.xml | 41 +- forms/account/conf/locale/ca.yml | 3 +- forms/account/conf/locale/en.yml | 3 +- forms/account/conf/locale/es.yml | 3 +- forms/account/conf/locale/fr.yml | 3 +- forms/account/conf/locale/pt.yml | 3 +- forms/account/conf/style.css | 14 +- forms/account/conf/ui.xml | 74 +- forms/admin/connections/style.css | 4 +- forms/admin/connections/ui.xml | 12 +- forms/admin/users/ui.xml | 4 +- forms/admin/visits/ui.xml | 2 +- forms/agencies/packages/packages.js | 12 +- forms/agencies/packages/ui.xml | 2 +- forms/cms/home/style.css | 43 +- forms/cms/home/ui.xml | 4 +- forms/ecomerce/basket/ui.xml | 14 +- forms/ecomerce/catalog/catalog.js | 4 +- forms/ecomerce/catalog/locale/ca.yml | 4 +- forms/ecomerce/catalog/locale/en.yml | 4 +- forms/ecomerce/catalog/locale/es.yml | 4 +- forms/ecomerce/catalog/locale/fr.yml | 4 +- forms/ecomerce/catalog/locale/pt.yml | 4 +- forms/ecomerce/catalog/style.css | 32 +- forms/ecomerce/catalog/ui.xml | 25 +- forms/ecomerce/checkout/style.css | 50 +- forms/ecomerce/orders/style.css | 1 - forms/ecomerce/orders/ui.xml | 20 +- forms/news/new/ui.xml | 8 +- image/family/black/accessory.svg | 49 + image/family/black/artificial.svg | 59 + image/family/black/flower.svg | 76 + image/family/black/fruit.svg | 49 + image/family/black/greenery.svg | 49 + image/family/black/handmade.svg | 59 + image/family/black/handmadeArtificial.svg | 59 + image/family/black/mortuary.svg | 49 + image/family/black/pets.svg | 79 + image/family/black/plant.svg | 49 + image/family/black/preserved.svg | 49 + image/family/black/treatments.svg | 59 + index.js | 60 + js/hedera/gui.css | 350 - js/hedera/gui.js | 6 +- js/hedera/gui.scss | 324 + js/hedera/gui.xml | 25 +- js/hedera/hedera.js | 23 +- js/hedera/login.css | 225 - js/hedera/login.js | 4 +- js/hedera/login.scss | 148 + js/hedera/login.xml | 64 +- js/hedera/poppins.ttf | Bin 0 -> 158240 bytes js/hedera/report.css | 4 +- js/hedera/responsive.scss | 54 + js/hedera/{style.css => style.scss} | 297 +- js/htk/assistant-bar.js | 38 +- js/htk/column/button.js | 16 +- js/htk/field/bar-button.js | 14 +- js/htk/field/button.js | 78 +- js/htk/field/entry.js | 60 +- js/htk/grid.js | 297 +- js/htk/htk.js | 90 +- js/htk/icon.js | 48 +- js/htk/image-editor.js | 7 +- js/htk/repeater.js | 184 +- js/htk/{style.css => style.scss} | 541 +- package-lock.json | 19205 +++++++++----------- package.json | 34 +- pages/main/ui.php | 1 + web/html.php | 10 +- webpack.config.js | 68 +- webpack.config.json | 2 +- 73 files changed, 11157 insertions(+), 12214 deletions(-) create mode 100644 image/family/black/accessory.svg create mode 100644 image/family/black/artificial.svg create mode 100644 image/family/black/flower.svg create mode 100644 image/family/black/fruit.svg create mode 100644 image/family/black/greenery.svg create mode 100644 image/family/black/handmade.svg create mode 100644 image/family/black/handmadeArtificial.svg create mode 100644 image/family/black/mortuary.svg create mode 100644 image/family/black/pets.svg create mode 100644 image/family/black/plant.svg create mode 100644 image/family/black/preserved.svg create mode 100644 image/family/black/treatments.svg create mode 100644 index.js delete mode 100644 js/hedera/gui.css create mode 100644 js/hedera/gui.scss delete mode 100644 js/hedera/login.css create mode 100644 js/hedera/login.scss create mode 100644 js/hedera/poppins.ttf create mode 100644 js/hedera/responsive.scss rename js/hedera/{style.css => style.scss} (59%) rename js/htk/{style.css => style.scss} (55%) diff --git a/forms/account/address/style.css b/forms/account/address/style.css index 1fa559d2..ea43b06e 100644 --- a/forms/account/address/style.css +++ b/forms/account/address/style.css @@ -6,11 +6,5 @@ .address .box { max-width: 30em; - padding: 2em; + padding: 3em; } -.address .form -{ - margin: 0 auto; - max-width: 25em; -} - diff --git a/forms/account/address/ui.xml b/forms/account/address/ui.xml index a309a580..4bc07a23 100644 --- a/forms/account/address/ui.xml +++ b/forms/account/address/ui.xml @@ -23,40 +23,45 @@ </db-form> </vn-group> <div id="title"> - <h1><t>AddEditAddress</t></h1> + <h1><t>Configuration</t></h1> </div> <div id="actions"> - <htk-bar-button - icon="ok" - tip="_Accept" - on-click="onAcceptClick"/> <htk-bar-button icon="close" tip="_Return" on-click="onReturnClick"/> + <htk-bar-button + icon="check" + tip="_Accept" + on-click="onAcceptClick"/> </div> <div id="form" class="address"> <div class="box"> <div class="form"> + <h2><t>AddEditAddress</t></h2> <div class="form-group"> - <label><t>Name</t></label> - <htk-entry column="nickname" form="iter"/> + <htk-entry + placeholder="_Name" + column="nickname" form="iter"/> </div> <div class="form-group"> - <label><t>Address</t></label> - <htk-entry column="street" form="iter"/> + <htk-entry + placeholder="_Address" + column="street" form="iter"/> </div> <div class="form-group"> - <label><t>City</t></label> - <htk-entry column="city" form="iter"/> + <htk-entry + placeholder="_City" + column="city" form="iter"/> </div> <div class="form-group"> - <label><t>ZipCode</t></label> - <htk-entry column="postalCode" form="iter"/> + <htk-entry + placeholder="_ZipCode" + column="postalCode" form="iter"/> </div> <div class="form-group"> - <label><t>Country</t></label> - <htk-combo> + <htk-combo + placeholder="_Country"> <db-param id="country" property="param" @@ -70,8 +75,10 @@ </htk-combo> </div> <div class="form-group"> - <label><t>Province</t></label> - <htk-combo column="provinceFk" form="iter"> + <htk-combo + placeholder="_Province" + column="provinceFk" + form="iter"> <db-model property="model"> SELECT id, name FROM vn.province WHERE countryFk = #country diff --git a/forms/account/conf/locale/ca.yml b/forms/account/conf/locale/ca.yml index 82241540..7fb9a5fa 100644 --- a/forms/account/conf/locale/ca.yml +++ b/forms/account/conf/locale/ca.yml @@ -1,4 +1,5 @@ Configuration: Configuració +Personal information: Dades personals Username: Nom d'usuari Password: Contrasenya Email: Correu electrònic @@ -9,7 +10,7 @@ Receive invoices by email: Rebre factures per correu electrònic Old password: Contrasenya antiga New password: Nova contrasenya Repeat password: Repetir contrasenya -Info: Info +Requirements: Requisits Modify: Modificar Password requirements: Requisits de contrasenya characters long: caràcters de longitud diff --git a/forms/account/conf/locale/en.yml b/forms/account/conf/locale/en.yml index 20de204a..c88631be 100644 --- a/forms/account/conf/locale/en.yml +++ b/forms/account/conf/locale/en.yml @@ -1,4 +1,5 @@ Configuration: Configuration +Personal information: Personal information Username: Username Password: Password Email: Email @@ -9,7 +10,7 @@ Receive invoices by email: Receive invoices by email Old password: Old password New password: New password Repeat password: Repeat password -Info: Info +Requirements: Requirements Modify: Modify Password requirements: Password requirements characters long: characters long diff --git a/forms/account/conf/locale/es.yml b/forms/account/conf/locale/es.yml index 66992c54..3012d755 100644 --- a/forms/account/conf/locale/es.yml +++ b/forms/account/conf/locale/es.yml @@ -1,4 +1,5 @@ Configuration: Configuración +Personal information: Datos personales Username: Nombre de usuario Password: Contraseña Email: Correo electrónico @@ -9,7 +10,7 @@ Receive invoices by email: Recibir facturas por correo electrónico Old password: Contaseña antigua New password: Nueva contraseña Repeat password: Repetir contraseña -Info: Info +Requirements: Requisitos Modify: Modificar Password requirements: Requisitos de constraseña characters long: carácteres de longitud diff --git a/forms/account/conf/locale/fr.yml b/forms/account/conf/locale/fr.yml index ba47177f..6ae14ca8 100644 --- a/forms/account/conf/locale/fr.yml +++ b/forms/account/conf/locale/fr.yml @@ -1,4 +1,5 @@ Configuration: Configuration +Personal information: Informations personnelles Username: Utilisateur Password: Mot de passe Email: Courriel @@ -9,7 +10,7 @@ Receive invoices by email: Recevoir des factures par e-mail Old password: Ancien mot de passe New password: Nouveau mot de passe Repeat password: Répéter le mot de passe -Info: Info +Requirements: Exigences Modify: Modifier Password requirements: Mot de passe exigences characters long: Longs caractères diff --git a/forms/account/conf/locale/pt.yml b/forms/account/conf/locale/pt.yml index a7430e50..51506ae1 100644 --- a/forms/account/conf/locale/pt.yml +++ b/forms/account/conf/locale/pt.yml @@ -1,4 +1,5 @@ Configuration: Configuração +Personal information: Dados pessoais Username: Nome de usuario Password: Palavra-Passe Email: E-Mail @@ -9,7 +10,7 @@ Receive invoices by email: Receber facturas por e-mail Old password: Palavra-Passe antiga New password: Nova Palavra-Passe Repeat password: Repetir Palavra-Passe -Info: Info +Requirements: Requisitos Modify: Modificar Password requirements: Requisitos de Palavra-Passe characters long: caracteres diff --git a/forms/account/conf/style.css b/forms/account/conf/style.css index 5cb03475..d5680773 100644 --- a/forms/account/conf/style.css +++ b/forms/account/conf/style.css @@ -6,23 +6,13 @@ .conf .box { max-width: 30em; - padding: 2em; + padding: 3em; } -.conf .form -{ - margin: 0 auto; - max-width: 25em; -} -.conf .form-group input[type=password] -{ - margin-bottom: 0.5em; -} - .pass-change { max-width: 15em; + padding: 2.5em; } - .pass-info { width: 15em; diff --git a/forms/account/conf/ui.xml b/forms/account/conf/ui.xml index 28c315fb..a59f12d5 100644 --- a/forms/account/conf/ui.xml +++ b/forms/account/conf/ui.xml @@ -29,47 +29,61 @@ tip="_Addresses" on-click="onAddressesClick"/> <htk-bar-button - icon="preferences" + icon="lock_reset" tip="_Change password" on-click="onPassChangeClick"/> </div> <div id="form" class="conf"> <div class="box"> - <div class="form"> - <div class="form-group"> - <label for="user-name"><t>Username</t></label> - <htk-text form="user-form" column="name"/> - </div> - <div class="form-group"> - <label for="email"><t>Email</t></label> - <htk-entry form="user-form" column="email"></htk-entry> - </div> - <div class="form-group"> - <label for="nickname"><t>Display name</t></label> - <htk-entry form="user-form" column="nickname"/> - </div> - <div class="form-group"> - <label for="lang"><t>Language</t></label> - <htk-combo form="user-form" column="lang"> - <db-model property="model"> - <custom> - SELECT code, name FROM language WHERE isActive - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label for="mail"><t>Receive invoices by email</t></label> - <htk-check form="user-form" column="isToBeMailed"/> - </div> + <div class="form"> + <h2><t>Personal information</t></h2> + <div class="form-group"> + <htk-entry + placeholder="_Username" + disabled="true" + form="user-form" + column="name"/> </div> + <div class="form-group"> + <htk-entry + placeholder="_Email" + form="user-form" + column="email"> + </htk-entry> + </div> + <div class="form-group"> + <htk-entry + placeholder="_Display name" + form="user-form" + column="nickname"/> + </div> + <div class="form-group"> + <htk-combo + placeholder="_Language" + form="user-form" + column="lang"> + <db-model property="model"> + <custom> + SELECT code, name FROM language WHERE isActive + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label> + <htk-check form="user-form" column="isToBeMailed"/> + <t>Receive invoices by email</t> + </label> + </div> + </div> </div> </div> <htk-popup id="change-password" modal="true"> <div property="child-node" class="htk-dialog pass-change"> - <div> + <div class="form"> + <h2><t>Change password</t></h2> <input id="old-password" type="password" @@ -88,7 +102,7 @@ <t>Modify</t> </button> <button class="thin" on-click="onPassInfoClick"> - <t>Info</t> + <t>Requirements</t> </button> <div class="clear"/> </div> diff --git a/forms/admin/connections/style.css b/forms/admin/connections/style.css index b27e9449..1a87896b 100644 --- a/forms/admin/connections/style.css +++ b/forms/admin/connections/style.css @@ -10,11 +10,9 @@ .action-bar .connections-sum { padding: .4em; - margin-top: .9em; - margin-right: .5em; background-color: #1e88e5; border-radius: 0.1em; - box-shadow: 0 0 0.4em #666; + box-shadow: 0 0 0.4em rgba(255, 255, 255, .1); } /* List */ diff --git a/forms/admin/connections/ui.xml b/forms/admin/connections/ui.xml index 29a9ceb3..283d8a58 100644 --- a/forms/admin/connections/ui.xml +++ b/forms/admin/connections/ui.xml @@ -38,15 +38,15 @@ <htk-button form="iter" column="id" - tip="_Supplant user" - icon="incognito" - on-click="onChangeUserClick"/> + tip="_Access log" + icon="history" + on-click="onAccessLogClick"/> <htk-button form="iter" column="id" - tip="_Access log" - icon="gnome" - on-click="onAccessLogClick"/> + tip="_Supplant user" + icon="supervisor_account" + on-click="onChangeUserClick"/> <p class="important"> <htk-text form="iter" column="nickname"/> </p> diff --git a/forms/admin/users/ui.xml b/forms/admin/users/ui.xml index 0b41e395..1ec2f274 100644 --- a/forms/admin/users/ui.xml +++ b/forms/admin/users/ui.xml @@ -34,14 +34,14 @@ form="iter" column="id" tip="_Access log" - icon="gnome" + icon="history" on-click="onAccessLogClick"/> <htk-button id="impersonate" form="iter" column="id" tip="_Impersonate user" - icon="incognito" + icon="supervisor_account" on-click="onChangeUserClick"/> <span id="disabled" class="disabled"> <t>Disabled</t> diff --git a/forms/admin/visits/ui.xml b/forms/admin/visits/ui.xml index ae790c7f..15fd4568 100644 --- a/forms/admin/visits/ui.xml +++ b/forms/admin/visits/ui.xml @@ -8,7 +8,7 @@ tip="_Refresh" on-click="onRefreshClick"/> <htk-bar-button - icon="user-info" + icon="visibility" tip="_Connections" on-click="onSessionsClick"/> </div> diff --git a/forms/agencies/packages/packages.js b/forms/agencies/packages/packages.js index b71a13b6..14c16e14 100644 --- a/forms/agencies/packages/packages.js +++ b/forms/agencies/packages/packages.js @@ -1,13 +1,11 @@ -Hedera.Packages = new Class -({ +Hedera.Packages = new Class({ Extends: Hedera.Form - ,onShowClick: function (column, agencyId) - { - this.hash.set ({ - 'form': 'agencies/provinces', - 'agency': agencyId + ,onShowClick: function(column, agencyId) { + this.hash.set({ + form: 'agencies/provinces', + agency: agencyId }); } }); diff --git a/forms/agencies/packages/ui.xml b/forms/agencies/packages/ui.xml index e41ede06..126c120a 100644 --- a/forms/agencies/packages/ui.xml +++ b/forms/agencies/packages/ui.xml @@ -12,7 +12,7 @@ </db-model> <htk-column-button column="agency_id" - icon="show" + icon="search" tip="_ShowByProvince" on-clicked="onShowClick"/> <htk-column-text title="_Agency" column="Agencia"/> diff --git a/forms/cms/home/style.css b/forms/cms/home/style.css index a9b73028..5f35e4f3 100644 --- a/forms/cms/home/style.css +++ b/forms/cms/home/style.css @@ -1,70 +1,53 @@ /* News panel */ -.column -{ +.column { margin: .5em; max-width: 120em; } -.action-bar button.start-order -{ - margin: 1em; - padding: .5em 1em; +.action-bar button.start-order { border: 1px solid white; } -.action-bar button.start-order:hover -{ +.action-bar button.start-order:hover { background-color: white; color: black; } /* New */ -.new -{ +.new { text-align: left; - background-color: white; - color: #222; - border: none; - border-radius: 0.1em; - box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.2); margin: .5em; } -.new img -{ +.new img { display: block; margin: auto; width: 100%; } -.new .top -{ +.new .top { padding: 1.5em; padding-bottom: 1px; } -.new h2 -{ +.new h2 { font-size: 1.6em; color: black; font-weight: normal; padding: 0; } -.new-info -{ + +.new-info { font-size: 0.9em; color: #444; text-align: right; margin: 0.8em 0; } -.new-text -{ +.new-text { margin: 1.5em 0; } -.new-text a -{ +.new-text a { color: blue; text-decoration: underline; } -.new-text li -{ +.new-text li { margin: 0.4em 0; -} +} \ No newline at end of file diff --git a/forms/cms/home/ui.xml b/forms/cms/home/ui.xml index 9bd797ee..d4bc7d88 100644 --- a/forms/cms/home/ui.xml +++ b/forms/cms/home/ui.xml @@ -5,7 +5,7 @@ <div id="actions" class="catalog-actions"> <htk-bar-button class="start-order" - icon="new-order" + icon="add_shopping_cart" tip="_Start order" on-click="onStartOrderClick"/> </div> @@ -21,7 +21,7 @@ </db-model> <custom> <div class="masonry-box"> - <div class="new"> + <div class="new box"> <htk-image directory="news" subdir="full" diff --git a/forms/ecomerce/basket/ui.xml b/forms/ecomerce/basket/ui.xml index 32b66175..62b7b39b 100644 --- a/forms/ecomerce/basket/ui.xml +++ b/forms/ecomerce/basket/ui.xml @@ -4,17 +4,17 @@ </div> <div id="actions"> <htk-bar-button - icon="ok" - tip="_Checkout" - on-click="onCheckoutClick"/> + icon="settings" + tip="_ConfigureOrder" + on-click="onConfigureClick"/> <htk-bar-button - icon="view-dual" + icon="local_florist" tip="_Catalog" on-click="onCatalogClick"/> <htk-bar-button - icon="preferences" - tip="_ConfigureOrder" - on-click="onConfigureClick"/> + icon="shopping_cart_checkout" + tip="_Checkout" + on-click="onCheckoutClick"/> </div> <div id="form" class="basket"> <div class="box"> diff --git a/forms/ecomerce/catalog/catalog.js b/forms/ecomerce/catalog/catalog.js index 7b1ed376..d34903e9 100644 --- a/forms/ecomerce/catalog/catalog.js +++ b/forms/ecomerce/catalog/catalog.js @@ -105,7 +105,7 @@ Hedera.Catalog = new Class({ }); var img = builder.$('image'); - img.src = 'image/family/light/'+ form.get('code') +'.svg'; + img.src = 'image/family/black/'+ form.get('code') +'.svg'; img.title = form.get('name'); img.alt = img.title; } @@ -419,7 +419,7 @@ Vn.Filter = new Class({ li.appendChild(button); var icon = new Htk.Icon({ - icon: 'close', + name: 'close', alt: _('Close') }); button.appendChild(icon.node); diff --git a/forms/ecomerce/catalog/locale/ca.yml b/forms/ecomerce/catalog/locale/ca.yml index e57c6f2e..c7e33107 100644 --- a/forms/ecomerce/catalog/locale/ca.yml +++ b/forms/ecomerce/catalog/locale/ca.yml @@ -2,7 +2,7 @@ Catalog: Catàleg SearchResults: Resultats de cerca SelectFamily: Selecciona una família Choose filter from right menu: Tria un filtre en el menú de la dreta -Choose a realm: Tria un regne +Choose a realm: Tria un categoria ArticleNotFound: Artcle no trobat ArticleNotAvailable: Article no disponible List view: Vista de lista @@ -15,7 +15,7 @@ Warehouse: Magatzem Filter by: Filtrar per Order by: Ordenar per Search: Cercar -Change: Cambiar +Modify: Modificar Size: Mida Realm: Regne Family: Família diff --git a/forms/ecomerce/catalog/locale/en.yml b/forms/ecomerce/catalog/locale/en.yml index 93ca9434..9d6e6f27 100644 --- a/forms/ecomerce/catalog/locale/en.yml +++ b/forms/ecomerce/catalog/locale/en.yml @@ -2,7 +2,7 @@ Catalog: Catalog SearchResults: Search results SelectFamily: Select family Choose filter from right menu: Choose a filter from the right menu -Choose a realm: Choose a realm +Choose a realm: Choose a category ArticleNotFound: Item not found ArticleNotAvailable: Item not available List view: List view @@ -15,7 +15,7 @@ Warehouse: Warehouse Filter by: Filter by Order by: Order by Search: Search -Change: Change +Modify: Modify Size: Size Realm: Realm Family: Family diff --git a/forms/ecomerce/catalog/locale/es.yml b/forms/ecomerce/catalog/locale/es.yml index 6af7891a..a4f2553e 100644 --- a/forms/ecomerce/catalog/locale/es.yml +++ b/forms/ecomerce/catalog/locale/es.yml @@ -2,7 +2,7 @@ Catalog: Catálogo SearchResults: Resultados de búsqueda SelectFamily: Selecciona una familia Choose filter from right menu: Elige un filtro en el menú de la derecha -Choose a realm: Elige un reino +Choose a realm: Elige una categoría ArticleNotFound: Artículo no encontrado ArticleNotAvailable: Artículo no disponible List view: Vista de lista @@ -15,7 +15,7 @@ Warehouse: Almacén Filter by: Filtrar por Order by: Ordenar por Search: Buscar -Change: Cambiar +Modify: Modificar Size: Medida Realm: Reino Family: Familia diff --git a/forms/ecomerce/catalog/locale/fr.yml b/forms/ecomerce/catalog/locale/fr.yml index 1aa1ae19..45f2c497 100644 --- a/forms/ecomerce/catalog/locale/fr.yml +++ b/forms/ecomerce/catalog/locale/fr.yml @@ -2,7 +2,7 @@ Catalog: Catalogue SearchResults: Résultats de la recherche SelectFamily: Choisissez une famille Choose filter from right menu: Choisissez un filtre dans le menu de droite -Choose a realm: Choisissez un royaume +Choose a realm: Choisissez une catégorie ArticleNotFound: Article non trouvé ArticleNotAvailable: Article non disponible List view: Liste voir @@ -15,7 +15,7 @@ Warehouse: Entrepôt Filter by: Filtrer par Order by: Trier par Search: Recherche -Change: Modifier +Modify: Modifier Size: Mesure Realm: Famille Family: Sous-genre diff --git a/forms/ecomerce/catalog/locale/pt.yml b/forms/ecomerce/catalog/locale/pt.yml index 982b3fef..5cd652d8 100644 --- a/forms/ecomerce/catalog/locale/pt.yml +++ b/forms/ecomerce/catalog/locale/pt.yml @@ -2,7 +2,7 @@ Catalog: Catálogo SearchResults: Resultados de busca SelectFamily: Seleccione uma família Choose filter from right menu: Escolha um filtro no menú da direita -Choose a realm: Escolha um reino +Choose a realm: Escolha uma categoria ArticleNotFound: Ítem não encontrado ArticleNotAvailable: Ítem não disponível List view: Ver como lista @@ -15,7 +15,7 @@ Warehouse: Armazém Filter by: Filtrar por Order by: Ordenar por Search: Buscar -Change: Modificar +Modify: Modificar Size: Medida Realm: Reino Family: Família diff --git a/forms/ecomerce/catalog/style.css b/forms/ecomerce/catalog/style.css index 848b833f..dbfde6bc 100644 --- a/forms/ecomerce/catalog/style.css +++ b/forms/ecomerce/catalog/style.css @@ -1,13 +1,12 @@ .catalog { - margin-right: 17em; + margin-right: 18em; } /* Topbar */ .catalog-actions > .htk-search-entry { - margin-top: .8em; margin-right: .4em; } @@ -19,7 +18,7 @@ top: 4.4em; bottom: 0; right: 0; - width: 17em; + width: 18em; overflow: auto; background-color: #fafafa; } @@ -34,11 +33,16 @@ } .right-panel .basket-info > button { - color: #E0F2F1; + color: white; margin: 0 auto; display: block; margin-top: .4em; } +.right-panel .basket-info > button:hover +{ + background-color: white; + color: #60872c; +} .right-panel .basket-info > p { margin: 0; @@ -50,7 +54,13 @@ } .right-panel .filter { - padding: 1em; + margin: 1em; +} +.right-panel .categories, +.right-panel .filters, +.right-panel .order +{ + margin: 1.5em 0; } .right-panel .filters, .right-panel .order @@ -71,7 +81,6 @@ .right-panel h2 { font-weight: normal; - padding: .4em 0; color: #777; font-size: 1.1em; } @@ -82,7 +91,7 @@ .right-panel .realms a { display: inline-block; - width: 30%; + width: 25%; padding: .6em; box-sizing: border-box; } @@ -102,7 +111,6 @@ { margin: 0 auto; margin-bottom: .7em; - width: 90%; display: block; } .vn-filter > ul @@ -444,7 +452,7 @@ .item-card .footer { text-align: center; - background-color: #009688; + background-color: #1a1a1a; color: white; line-height: 2em; padding: .4em; @@ -489,15 +497,15 @@ .right-panel { top: 0; - right: -17em; + right: -18em; z-index: 20; transition: transform 200ms ease-out; -webkit-transition: transform 200ms ease-out; } .right-panel.show { - transform: translateZ(0) translateX(-17em); - -webkit-transform: translateZ(0) translateX(-17em); + transform: translateZ(0) translateX(-18em); + -webkit-transform: translateZ(0) translateX(-18em); } .catalog { diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index a9c477c0..35a38fe8 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -94,19 +94,20 @@ <h1 id="title-text"><t>Catalog</t></h1> </div> <div id="actions" class="catalog-actions"> - <button class="menu" on-click="onShowMenuClick"> - <img src="image/icon/dark/menu.svg" alt="_Menu"/> - </button> - <htk-bar-button - icon="basket" - tip="_ShoppingBasket" - on-click="onBasketClick"/> + <htk-search-entry + param="search"/> <htk-bar-button id="view-button" tip="_Switch view" + icon="format_list_bulleted" on-click="onSwitchViewClick"/> - <htk-search-entry - param="search"/> + <htk-bar-button + icon="shopping_cart_checkout" + tip="_ShoppingBasket" + on-click="onBasketClick"/> + <button class="menu" on-click="onShowMenuClick"> + <img src="image/icon/dark/menu.svg" alt="_Menu"/> + </button> </div> <div id="form" class="catalog"> <div id="main" class="main"> @@ -176,7 +177,7 @@ <htk-text form="basket" column="agency"/> </p> <button class="thin" on-click="onConfigureClick"> - <t>Change</t> + <t>Modify</t> </button> </div> <div class="filter"> @@ -462,14 +463,14 @@ <div class="footer"> <button on-click="onEraseClick" title="_Erase" class="erase"> <htk-icon - icon="delete" + name="delete" theme="dark" alt="_Erase"/> </button> <htk-text id="amount"/> <button on-click="onConfirmClick" title="_Confirm" class="confirm"> <htk-icon - icon="ok" + name="done" theme="dark" alt="_Confirm"/> </button> diff --git a/forms/ecomerce/checkout/style.css b/forms/ecomerce/checkout/style.css index 9fd2a7fe..7f928f4d 100644 --- a/forms/ecomerce/checkout/style.css +++ b/forms/ecomerce/checkout/style.css @@ -1,15 +1,12 @@ -.checkout -{ +.checkout { padding: 1em; max-width: 40em; margin: 0 auto; } -.checkout .bar -{ +.checkout .bar { margin-bottom: 1em; } -.checkout .form -{ +.checkout .form { max-width: 40em; padding: 4em 2em; } @@ -18,67 +15,54 @@ .answers button, .answers p, -.radio > div -{ +.radio > div { font-size: 1.4em; } -.answers .htk-select -{ +.answers .htk-select { max-width: 10em; display: block; margin: 0 auto; font-size: 1.6em; height: 1.8em; } -.answers p -{ +.answers p { margin: 0.3em 0; } -.target -{ +.target { max-width: 28em; margin: 0 auto; } -.address -{ +.address { border-radius: 0.1em; padding: 0.6em 1.4em; } -.address.selected -{ +.address.selected { background-color: rgba(1, 1, 1, .1); } -.address:hover -{ +.address:hover { cursor: pointer; background-color: rgba(1, 1, 1, .05); } -.address p.consignee -{ +.address p.consignee { font-weight: bold; } -.radio -{ +.radio { max-width: 20em; margin: 0 auto; } -.radio > div -{ +.radio > div { padding: 0.5em; } -.thin-calendar -{ +.thin-calendar { width: inherit; max-width: 24em; margin: 0 auto; - box-shadow: 0 0.1em 0.3em #ccc; + box-shadow: .05em .05em .2em rgba(0, 0, 0, .2); } -.thin-calendar tr > th -{ +.thin-calendar tr > th { color: white; } -.htk-assistant .thin -{ +.htk-assistant .thin { float: right; } diff --git a/forms/ecomerce/orders/style.css b/forms/ecomerce/orders/style.css index c4d325a7..01d9ef4f 100644 --- a/forms/ecomerce/orders/style.css +++ b/forms/ecomerce/orders/style.css @@ -11,7 +11,6 @@ .balance { - margin-top: 1.2em; margin-right: .5em; } .balance > * diff --git a/forms/ecomerce/orders/ui.xml b/forms/ecomerce/orders/ui.xml index e64c70e0..8cf4a6bc 100644 --- a/forms/ecomerce/orders/ui.xml +++ b/forms/ecomerce/orders/ui.xml @@ -3,17 +3,6 @@ <h1><t>LastOrders</t></h1> </div> <div id="actions"> - <htk-bar-button - icon="basket" - tip="_ShoppingBasket" - show-text="false" - on-click="onBasketClick"/> - <htk-bar-button - id="pay-button" - icon="pay" - tip="_MakePayment" - show-text="false" - on-click="onPayButtonClick"/> <div class="balance"> <span class="label"> <t>Balance:</t> @@ -38,6 +27,15 @@ class="info" alt="Info"/> </div> + <htk-bar-button + id="pay-button" + icon="payments" + tip="_MakePayment" + on-click="onPayButtonClick"/> + <htk-bar-button + icon="shopping_cart" + tip="_ShoppingBasket" + on-click="onBasketClick"/> </div> <div id="form" class="orders"> <div class="box confirmed"> diff --git a/forms/news/new/ui.xml b/forms/news/new/ui.xml index 8ee6ecc9..d3d63835 100644 --- a/forms/news/new/ui.xml +++ b/forms/news/new/ui.xml @@ -25,14 +25,14 @@ <h1><t>AddEditNew</t></h1> </div> <div id="actions"> - <htk-bar-button - icon="ok" - tip="_Accept" - on-click="onAcceptClick"/> <htk-bar-button icon="close" tip="_Return" on-click="onReturnClick"/> + <htk-bar-button + icon="check" + tip="_Accept" + on-click="onAcceptClick"/> </div> <div id="form" class="new"> <div class="box"> diff --git a/image/family/black/accessory.svg b/image/family/black/accessory.svg new file mode 100644 index 00000000..f49d134a --- /dev/null +++ b/image/family/black/accessory.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="accessory.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="M 37.313228,1.0829325 H 2.714188 C 1.233722,1.0829325 0,2.2892385 0,3.7971205 v 5.099383 c 0,1.4804655 1.206306,2.7141875 2.714188,2.7141875 h 2.083619 v 0.08225 L 7.978067,33.8451 c 0.411241,2.933516 2.63194,5.071968 5.236464,5.071968 h 13.543522 c 2.63194,0 4.825223,-2.138452 5.236464,-5.071968 l 3.207676,-22.234407 h 2.083619 C 38.766278,11.610693 40,10.404387 40,8.8965055 v -5.126801 c 0,-1.480466 -1.206306,-2.686772 -2.686772,-2.686772 z m -4.386566,10.6374225 -3.152844,21.79575 c -0.274161,1.809459 -1.535298,3.125429 -3.015765,3.125429 H 13.241947 c -1.480467,0 -2.76902,-1.31597 -3.015765,-3.125429 L 7.073338,11.583275 h 25.908156 z m 4.825223,-2.8238515 c 0,0.246744 -0.191912,0.466073 -0.466073,0.466073 H 2.714188 c -0.246745,0 -0.466073,-0.191913 -0.466073,-0.466073 v -5.126799 c 0,-0.246745 0.191912,-0.466073 0.466073,-0.466073 h 34.59904 c 0.246745,0 0.466073,0.191912 0.466073,0.466073 v 5.126799 z" + id="path4" + style="stroke-width:0.27416;fill:#1a1a1a;fill-opacity:1" /> +</svg> diff --git a/image/family/black/artificial.svg b/image/family/black/artificial.svg new file mode 100644 index 00000000..83000adc --- /dev/null +++ b/image/family/black/artificial.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="artificial.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs13" /><sodipodi:namedview + id="namedview11" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<g + id="g8" + transform="matrix(0.26820887,0,0,0.26820887,-6.5074179,-6.820887)" + style="fill:#1a1a1a;fill-opacity:1"> + <path + class="st0" + d="m 113.7,83.3 c -4.1,0 -8.2,0 -12.4,0 -5.2,0 -10.4,0 -15.6,0 h -2 c -1.5,0 -1.8,0.2 -1.8,1.8 v 30.2 c 0,0.6 0,0.9 0.3,1.2 0.3,0.3 0.6,0.3 1.3,0.3 h 30.2 c 1.5,0 1.7,-0.3 1.7,-1.7 0,-10 0,-20.1 0,-30.1 0.1,-1.5 -0.2,-1.7 -1.7,-1.7 z m -6.4,17.5 v 7.6 h -0.6 c -1.3,0 -2.6,0 -3.9,0 h -1.7 -4.5 c -1.9,0 -3.9,0 -5.8,0 H 90.4 L 90.3,108 v 0 c 0,-5.5 0,-10.8 0,-16.2 v -0.4 h 0.5 c 6.4,0 11.4,0 16,0 h 0.3 l 0.2,0.3 c 0,0 0,0.1 0,0.2 0,3.1 0,6 0,8.9 z" + id="path4" + style="fill:#1a1a1a;fill-opacity:1" /> + <path + class="st0" + d="m 145.9,158.2 25.8,-44.7 c 0.3,-0.5 0.6,-1 0.9,-1.6 l 0.8,-1.4 L 155.2,100 173.4,89.5 173,88.7 c -0.1,-0.3 -0.3,-0.5 -0.4,-0.8 L 146.3,42.1 c -0.4,-0.8 -0.8,-1.1 -1.1,-1.2 -0.3,-0.1 -0.8,0.1 -1.5,0.5 l -4.6,2.6 c -3.8,2.2 -7.5,4.3 -11.3,6.5 L 127.1,51 V 31.7 c 0,-0.7 0,-1.1 -0.3,-1.4 C 126.5,30 126.2,30 125.4,30 H 72.5 c -0.1,0 -0.3,0 -0.5,0 -0.5,0 -0.8,0.1 -1.1,0.3 -0.2,0.2 -0.3,0.6 -0.3,1 0,0.2 0,0.4 0,0.6 v 0.4 3.6 c 0,4.8 0,9.6 0,14.4 V 51 L 52.9,40.8 52.4,40.7 52.1,41.1 c -0.1,0.1 -0.2,0.2 -0.3,0.3 L 25.1,87.5 c -1,1.7 -0.9,2 0.8,3 L 42.3,100 32,105.8 c -2.3,1.3 -4.5,2.6 -6.8,3.9 -0.4,0.2 -0.8,0.5 -0.9,1 -0.1,0.3 0,0.7 0.3,1.1 0.1,0.2 0.2,0.3 0.3,0.5 l 25.9,45 c 0.3,0.6 0.7,1.2 1.2,1.8 l 0.3,0.3 18.1,-10.4 v 2.5 c 0,1.6 0,3.1 0,4.6 l -0.1,12.1 c 0,1.5 0.2,1.7 1.6,1.7 h 2.5 c 1.6,0 3.1,0.1 4.7,0.1 h 45.1 c 2.4,0 2.6,-0.2 2.6,-2.7 v -17.4 -0.8 l 0.6,0.3 c 2.8,1.6 5.6,3.2 8.3,4.8 l 1.9,1.1 c 2.1,1.2 4.2,2.4 6.3,3.6 0.2,0.1 0.7,0.4 1.1,0.2 0.4,0 0.6,-0.2 0.9,-0.9 z m -3.8,-10 -0.3,-0.2 -22.7,-13.1 -0.2,0.5 c -0.3,0.6 -0.3,1.1 -0.2,1.6 v 0.3 c 0,6.4 0,12.8 0,19.3 v 4.1 c 0,0.2 0,0.4 0,0.7 v 0.4 h -40 v -0.7 c 0,-1.8 0,-3.6 0,-5.3 l 0.1,-20.9 -0.7,0.3 c -1.9,0.8 -3.5,1.8 -5.2,2.8 -0.9,0.5 -1.8,1 -2.6,1.5 -1.6,0.9 -3.2,1.8 -5,2.9 l -10,5.8 -19.9,-34.6 14.6,-8.4 9,-5.2 -6.5,-3.7 -17.2,-10 0.3,-0.6 19.2,-33.1 c 0.1,-0.2 0.2,-0.3 0.3,-0.5 l 0.2,-0.3 0.5,0.2 c 1.3,0.8 2.7,1.6 4,2.4 l 17.4,10.1 c 0.3,0.2 0.7,0.4 1.2,0.1 l 0.3,-0.2 c 0.2,-0.3 0.2,-0.7 0.2,-1.2 0,-0.9 0,-1.7 0,-2.5 0,-0.8 0,-1.5 0,-2.3 L 79,38.2 h 0.6 c 2.1,0 4.2,0 6.2,0.1 h 0.3 c 2.3,0.1 4.2,0.1 5.9,0.1 5.8,0 11.4,0 18.1,0 h 7.9 0.1 c 0.1,0 0.2,0 0.3,0 h 0.3 v 27.1 l 23.6,-13.5 19.9,34.6 -23.5,13.5 23.5,13.6 -0.2,0.3 z" + id="path6" + style="fill:#1a1a1a;fill-opacity:1" /> +</g> +</svg> diff --git a/image/family/black/flower.svg b/image/family/black/flower.svg new file mode 100644 index 00000000..cd941b4d --- /dev/null +++ b/image/family/black/flower.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="flower.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs13"><linearGradient + inkscape:collect="always" + id="linearGradient981"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop977" /><stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop979" /></linearGradient><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient981" + id="linearGradient983" + x1="34.739397" + y1="99.599534" + x2="165.73375" + y2="99.599534" + gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview + id="namedview11" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="4.365" + inkscape:cx="102.29095" + inkscape:cy="63.459336" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<g + id="g8" + transform="matrix(0.28530481,0,0,0.28530481,-8.5979763,-8.4162261)" + style="stroke:none;stroke-opacity:1;fill:#1a1a1a;fill-opacity:1"> + <path + class="st0" + d="m 100.1,76.9 h -0.5 c -6.1,0 -11.8,2.3 -16.1,6.5 -4.4,4.3 -6.8,10.1 -6.8,16.3 0,6.2 2.4,12 6.7,16.2 4.2,4.2 10,6.5 15.9,6.5 h 0.3 0.3 c 5.9,0 11.6,-2.4 15.9,-6.5 4.3,-4.2 6.7,-10 6.7,-16.2 0,-12.5 -9.9,-22.5 -22.4,-22.8 z M 89.2,89.1 c 2.7,-2.7 6.4,-4.2 10,-4.2 h 0.4 c 3.8,-0.1 7.6,1.4 10.5,4.2 2.9,2.8 4.5,6.6 4.5,10.8 0,8.2 -6.8,14.9 -15,14.9 h -0.1 c -8,0 -14.8,-6.8 -14.8,-14.9 -0.1,-4.1 1.5,-8 4.5,-10.8 z" + id="path4" + style="stroke:none;stroke-opacity:1;fill:#1a1a1a;fill-opacity:1" /> + <path + class="st0" + d="m 157.2,102 -0.2,-0.2 0.2,-0.2 c 0.1,-0.1 0.2,-0.2 0.3,-0.3 6.1,-6.5 8.9,-14.4 8.1,-23.2 -0.7,-7.9 -4.1,-14.5 -10,-19.7 -5.1,-4.4 -10.9,-6.8 -17.3,-7.3 v 0 h -0.4 c -1.7,-0.1 -3.4,0 -5.2,0.1 -0.8,0.1 -1.5,0.1 -2.2,0.2 h -0.1 c -0.1,-0.1 -0.2,-0.4 -0.4,-1 -1.7,-5.4 -4.7,-10 -8.9,-13.6 -6.8,-5.8 -14.8,-8.2 -23.6,-7 -6.5,0.8 -12.3,3.7 -17.1,8.5 -3,3 -5.3,6.6 -6.8,10.7 L 73.4,49.5 73,49.3 C 68.6,48.2 64.2,48.2 59.9,49 53.3,50.4 47.8,53.5 43.6,58.4 37.1,66.1 34.8,75 36.9,85 c 1,4.6 3,8.7 6.1,12.4 L 43.3,97.8 43,98 c -2.7,2.8 -4.8,6 -6.2,9.6 v 0 c 0,0.1 -4.5,9.7 -0.2,21.5 0,0.1 0,0.1 0.1,0.2 0,0.1 0.1,0.2 0.1,0.4 0.4,1 0.8,2 1.3,2.9 0.4,0.9 0.8,1.5 1.1,2 3.3,5.4 8.2,9.4 14.4,11.8 5,2 10.4,2.5 16,1.6 l 0.3,-0.1 0.2,0.5 c 0.9,3.2 2.3,6.1 4.1,8.6 4.4,6.2 10.2,10.2 17.4,12 0.8,0.2 3.6,0.7 7.3,0.7 2.3,0 4.9,-0.2 7.6,-0.9 l 0.3,-0.1 c 0.3,-0.1 0.5,-0.1 0.7,-0.2 0.1,0 0.2,-0.1 0.4,-0.1 l 0.2,-0.1 c 4.2,-1.4 8.1,-3.7 11.5,-7 3.1,-3 5.5,-6.6 7,-10.7 0.1,-0.2 0.1,-0.3 0.2,-0.5 l 0.1,-0.2 h 0.2 c 0.1,0 0.3,0.1 0.5,0.1 3,0.7 5.8,0.9 8.6,0.8 4.3,-0.2 8.4,-1.3 12.1,-3.3 6,-3.2 10.5,-7.8 13.3,-13.9 2.9,-6.4 3.5,-13.1 1.8,-20.1 -1.3,-4.1 -3.3,-8.1 -6.2,-11.5 z M 149,98.3 c -0.8,0.6 -1.6,1.2 -2.3,1.7 l -1.7,1.2 0.4,0.5 c 0.7,0.9 1.6,1.6 2.3,2.2 0.4,0.3 0.8,0.6 1.1,1 4.6,4.2 7,9.2 7.4,15.3 0.3,5.9 -1.5,11.1 -5.3,15.4 -4.8,5.4 -10.8,7.9 -18,7.5 -2.6,-0.2 -5.2,-0.9 -8.1,-2.2 -0.6,-0.2 -1.1,-0.5 -1.7,-0.7 l -1.9,-0.8 -1.1,5.3 c -1.9,9.3 -9.8,16.4 -19.4,17.3 -0.7,0.1 -1.4,0.1 -2.1,0.1 -5,0 -9.9,-1.8 -13.9,-5.1 -3.9,-3.3 -6.6,-7.9 -7.5,-12.9 -0.2,-1.2 -0.4,-2.5 -0.5,-3.7 l -0.1,-0.9 c 0,-0.4 -0.1,-1 -0.5,-1.5 l -0.3,-0.3 -1.8,0.6 c -0.9,0.3 -1.8,0.6 -2.7,0.9 -8.9,3.1 -19,-0.1 -24.6,-7.8 -2.6,-3.6 -4,-7.6 -4.1,-11.8 -0.3,-7.8 2.9,-14.2 9.4,-19 L 55.4,98 55,97.7 c -0.7,-0.7 -1.5,-1.4 -2.2,-2 -0.9,-0.7 -1.7,-1.5 -2.5,-2.3 -4,-4.2 -6.1,-9.1 -6.2,-14.8 -0.1,-5.4 1.6,-10.2 5,-14.3 3.5,-4.2 8,-6.8 13.4,-7.7 4.2,-0.7 8.4,-0.1 12.6,1.8 0.8,0.4 1.6,0.7 2.6,1.1 0.6,0.2 0.9,0.4 1.3,0.2 0.4,-0.2 0.5,-0.6 0.6,-1.2 0.1,-0.6 0.2,-1.2 0.3,-1.8 v -0.1 c 0.2,-1.2 0.4,-2.3 0.8,-3.4 2.8,-8.5 8.6,-13.7 17.2,-15.3 7.4,-1.4 13.9,0.7 19.5,6.3 3.5,3.5 5.6,8 6.1,13.2 0.1,0.8 0.2,1.6 0.3,2.4 l 0.2,2 0.6,-0.1 c 1,-0.2 1.9,-0.5 2.7,-0.8 l 0.1,-0.1 c 0.3,-0.1 0.5,-0.2 0.8,-0.3 8,-2.8 15.3,-1.5 21.8,3.8 4.6,3.8 7.2,8.8 7.7,14.8 0.6,7.7 -2.4,14.2 -8.7,19.2 z" + id="path6" + style="stroke:none;stroke-opacity:1;fill:#1a1a1a;fill-opacity:1" /> +</g> +</svg> diff --git a/image/family/black/fruit.svg b/image/family/black/fruit.svg new file mode 100644 index 00000000..0c1ad7e0 --- /dev/null +++ b/image/family/black/fruit.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="fruit.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="m 4.6155643,32.24963 c 1.033877,0 2.041908,0.232623 2.998243,0.67202 0.18093,0.07754 0.387705,0.180928 0.568633,0.284316 l 0.103387,0.05169 c 1.9902137,0.982183 4.2388957,1.473275 6.4875777,1.473275 1.68005,0 3.3601,-0.284317 4.936762,-0.852949 h 0.02585 l 0.05169,0.02585 c 1.60251,0.568632 3.282559,0.852948 4.988456,0.852948 0.05169,0 0.103387,0 0.155081,0 h 0.103388 c 0.02585,0 0.02585,0 0.05169,0 0.02585,0 0.05169,0 0.07754,0 h 0.02585 c 3.980425,-0.103388 7.676536,-1.75759 10.468003,-4.600753 2.791467,-2.843161 4.316438,-6.616811 4.342284,-10.597237 0,-0.284317 -0.103387,-0.542786 -0.310162,-0.749561 -0.206776,-0.206776 -0.465245,-0.310163 -0.723717,-0.310163 h -9.434126 l -0.02585,-0.103388 c -0.28431,-2.50715 -1.188952,-4.910914 -2.662226,-6.952821 -0.232622,-0.336009 -0.516938,-0.697866 -0.852948,-1.059723 l -0.05169,-0.05169 0.05169,-0.07754 c 1.550815,-1.8351313 1.628356,-3.1274773 1.628356,-3.3859473 0,-0.542785 -0.413551,-0.982183 -0.982183,-1.008029 0,0 0,0 0,0 -0.516938,0 -1.00803,0.439397 -1.059723,0.956336 0,0 -0.07754,0.74956 -1.03388,1.938519 l -0.02585,0.02585 -0.07754,0.02585 -0.05169,-0.02585 C 21.493607,6.2993277 17.797496,5.0586757 13.997999,5.2654507 10.04342,5.4722267 6.4248503,7.2298167 3.7884643,10.176366 c -4.03211997,4.497365 -4.936762,10.933249 -2.274529,16.361101 l 0.05169,0.103388 c 0.103387,0.180931 0.206775,0.361857 0.310163,0.594479 0.568632,1.240652 0.775407,2.610541 0.594479,3.954581 -0.05169,0.310163 0.05169,0.646172 0.284316,0.878795 0.232622,0.232622 0.568632,0.33601 0.878795,0.284316 0.310163,-0.07754 0.646173,-0.103388 0.982183,-0.103388 z m 33.2391427,-11.682808 0.07754,0.07754 v 0.05169 c -0.232622,2.636385 -1.240652,5.117691 -2.920704,7.185445 l -0.02585,0.02585 h -0.103388 l -0.05169,-0.02585 -5.221077,-5.22108 c -0.387704,-0.387704 -1.033876,-0.439397 -1.42158,-0.103387 -0.232622,0.180928 -0.361859,0.465244 -0.361859,0.74956 0,0.284316 0.10339,0.568635 0.310162,0.77541 l 5.324467,5.324465 v 0.05169 0.05169 l -0.02585,0.02585 c -2.016059,1.757593 -4.497363,2.843163 -7.133751,3.127479 h -0.05169 l -0.07754,-0.05169 v -0.05169 -8.271015 c 0,-0.568632 -0.413551,-1.033877 -0.930489,-1.08557 -0.284316,-0.02585 -0.568632,0.07754 -0.775408,0.258469 -0.206775,0.206775 -0.33601,0.465244 -0.33601,0.74956 v 8.426097 l -0.07754,0.07754 h -0.05169 c -1.266499,-0.07754 -2.481304,-0.33601 -3.670265,-0.749561 -0.129232,-0.07754 -0.232622,-0.10339 -0.336009,-0.129237 -1.240652,-0.491089 -2.377916,-1.163111 -3.411793,-1.990212 l -0.02585,-0.02585 v -0.103382 l 0.02585,-0.05169 5.557089,-5.557086 c 0.387704,-0.387704 0.439398,-1.033879 0.103385,-1.421583 -0.180926,-0.232622 -0.465242,-0.361857 -0.749558,-0.361857 -0.284316,-0.02585 -0.568635,0.103388 -0.77541,0.310163 l -5.660475,5.660477 h -0.05169 -0.05169 l -0.02585,-0.02585 c -1.860989,-2.119449 -2.972406,-4.729988 -3.230875,-7.547301 v -0.05169 l 0.05169,-0.07754 h 0.05169 26.053699 z m -34.5056417,5.014302 -0.02585,-0.02585 C 1.0745333,20.90283 1.8499413,15.397433 5.3134283,11.546242 7.5879573,9.0132437 10.689589,7.5141217 14.101382,7.3331937 c 3.385947,-0.180928 6.668506,0.956336 9.201504,3.2308653 0.129234,0.103388 0.232622,0.206776 0.361857,0.33601 l 0.180931,0.180929 c 0.155079,0.155081 0.310163,0.310163 0.465242,0.491091 l 0.02585,0.02585 c 0.310163,0.33601 0.594479,0.723714 0.878795,1.085571 1.214805,1.68005 1.990212,3.670263 2.248681,5.738017 v 0.05169 l -0.05169,0.07754 h -0.05169 -16.774653 c -0.284316,0 -0.542785,0.103388 -0.7237137,0.310163 -0.206775,0.206776 -0.310163,0.465245 -0.310163,0.749562 0,5.221077 2.6363857,10.002759 7.0562097,12.845919 l 0.05169,0.02585 -0.02585,0.155081 -0.07754,0.02585 c -0.620326,0.07754 -1.214806,0.129231 -1.835132,0.129231 -1.912672,0 -3.77365,-0.413548 -5.5053937,-1.266498 h -0.02585 c -0.232619,-0.15508 -0.516934,-0.284314 -0.749557,-0.387702 -1.188958,-0.568632 -2.455457,-0.852948 -3.747804,-0.852948 h -0.103388 v -0.103388 c 0,-1.292348 -0.310163,-2.558847 -0.827101,-3.721958 -0.129235,-0.361857 -0.258469,-0.620326 -0.413551,-0.878795 z" + id="path4" + style="stroke-width:0.258469;fill:#1a1a1a;fill-opacity:1" /> +</svg> diff --git a/image/family/black/greenery.svg b/image/family/black/greenery.svg new file mode 100644 index 00000000..e99f102a --- /dev/null +++ b/image/family/black/greenery.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="greenery.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="M 34.045254,21.098493 C 33.702189,16.753004 30.814725,12.321749 25.46863,7.9190818 21.15173,4.3740778 16.405999,1.8582678 14.54773,0.94342876 l -0.02859,-0.05718 h -0.02859 l -0.02859,-0.02859 c -0.428827,-0.228707 -0.714715,-0.343062 -0.800481,-0.400239 L 12.575107,-2.4007925e-7 12.031921,1.0577838 C 5.4279214,14.065662 4.1700164,23.642891 8.2867954,29.503584 c 3.6307706,5.174562 10.2919476,5.946458 13.9227186,5.946458 0.571774,0 1.114961,-0.02859 1.600969,-0.05718 h 0.05718 l 0.02859,0.05718 c 0.886252,1.572381 1.743914,2.944641 2.601576,4.088191 0.200121,0.257299 0.486009,0.428831 0.829074,0.45742 0.343065,0.02859 0.68613,-0.08577 0.943428,-0.285888 l 0.02859,-0.02859 c 0.486009,-0.428832 0.543186,-1.14355 0.142944,-1.658148 -0.743308,-1.000606 -1.543792,-2.201333 -2.315689,-3.602181 l -0.05718,-0.08577 0.08577,-0.05718 c 5.631983,-4.031013 8.262147,-8.462268 7.890494,-13.179411 z M 22.466812,32.99141 c -0.05718,0 -0.114355,0 -0.200121,0 -7.433073,0 -10.69219,-3.058995 -11.950095,-4.888675 -3.1733496,-4.54561 -2.3156876,-12.493281 2.51581,-22.9567612 l 0.114355,-0.285888 0.08577,0.285888 c 1.686736,6.4610562 5.145974,18.6684502 9.520052,27.6739042 l 0.08577,0.142944 z m 2.601576,-0.943428 -0.114355,0.08577 -0.05718,-0.114355 C 20.608544,23.271238 17.092128,10.949489 15.376804,4.4026668 l -0.05718,-0.22871 0.22871,0.114355 c 2.630165,1.458026 6.461056,3.802303 9.720173,6.7469432 3.945247,3.516416 6.060814,6.975654 6.318113,10.291948 0.285887,3.659359 -1.915446,7.29013 -6.518234,10.720779 z" + id="path4" + style="stroke-width:0.285887;fill:#1a1a1a;fill-opacity:1" /> +</svg> diff --git a/image/family/black/handmade.svg b/image/family/black/handmade.svg new file mode 100644 index 00000000..1ff9644d --- /dev/null +++ b/image/family/black/handmade.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="handmade.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs13" /><sodipodi:namedview + id="namedview11" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<g + id="g8" + transform="matrix(0.28579156,0,0,0.28579156,-8.7130268,-8.5559862)" + style="fill:#1a1a1a;fill-opacity:1"> + <path + class="st0" + d="m 165,128.6 c 1.6,-6.6 2,-12.7 1.5,-18.7 -0.6,-5.6 -2,-10.4 -4.5,-14.8 -4.2,-7.5 -10.6,-12.8 -19,-15.5 -1,-0.3 -2,-0.6 -3.1,-0.8 l -1.8,-0.4 1.9,-0.3 c 1.4,-0.2 2.8,-0.5 4.1,-0.7 l 0.7,-0.1 c 4.4,-0.8 8.9,-1.6 13.3,-2.9 3.3,-1 6.2,-2.7 8.8,-4.5 l 0.8,-0.6 -0.7,-0.7 c -0.6,-0.6 -1.3,-1.3 -1.9,-1.9 -2,-2 -4,-4 -6.2,-5.8 -7.8,-6.3 -15,-9.6 -22.9,-10.6 -5.7,-0.7 -11.2,-0.1 -16.2,1.9 -1.6,0.6 -3.1,1.4 -4.2,2 l -0.3,0.2 -0.2,-0.3 c -1.2,-2.2 -2.8,-4.2 -4.9,-6 -4.1,-3.4 -9,-5 -14.7,-4.6 H 95.1 L 95,43.1 C 94,40.3 92.4,37.8 90.1,35.6 83.4,29.1 73.3,28.1 65.4,33.1 62.1,35.2 59.6,38 58,41.6 L 57.8,42.1 57.3,42 c -1.9,-0.3 -3.8,-0.3 -5.9,0 -4.9,0.6 -9.5,3.2 -12.8,7.2 -3.5,4.3 -5,9.7 -4.3,15.3 0.4,3.4 1.6,6.4 3.5,9.1 0,0.1 0.1,0.1 0.1,0.1 l 0.1,0.2 -0.2,0.3 c -3.4,4.2 -4.9,8.9 -4.5,14.2 0.5,6.8 3.7,12.2 9.6,15.9 3.5,2.3 7.7,3.2 12.3,2.8 l 0.3,-0.1 0.1,0.3 c 1.2,3.4 3.2,6.2 5.8,8.4 3.4,2.9 7.2,4.4 11.3,4.7 0.3,0 0.4,0.1 0.7,0.5 l 6.5,8.8 c 2.5,3.3 5,6.8 7.5,10.2 0.5,0.7 0.5,1.1 0.3,1.6 -0.4,0.9 -0.6,1.9 -0.9,2.7 v 0.1 c -0.1,0.4 -0.2,0.8 -0.3,1.2 l -2,6.5 c -1.3,4.1 -2.5,8.2 -3.8,12.2 -0.5,1.6 -0.3,3 0.4,4.1 0.8,1.1 2.1,1.6 3.8,1.6 H 109 c 1,0 2,0 3,0 2.7,0 5.4,0 8.1,0 1.2,0 2.2,-0.3 3,-1 1.7,-1.5 1.5,-3.4 1,-4.9 l -1.8,-5.9 c -1.7,-5.6 -3.4,-11.3 -5.1,-17.1 -0.1,-0.5 -0.1,-0.8 0.2,-1.3 4.3,-6.8 8.5,-13.7 12.7,-20.4 l 5.2,-8.3 c 0.2,-0.3 0.4,-0.7 0.7,-1 l 0.3,-0.4 7.9,9.1 c 3.1,3.6 6.4,7.4 10,10.7 2.5,2.3 5.5,3.8 8.4,5.2 l 0.9,0.4 0.7,-2.9 c 0.2,-1.2 0.5,-2.3 0.8,-3.5 z M 113.9,75 c 2.4,-3.5 3.6,-7.4 3.5,-11.7 0,-0.5 0.1,-0.7 0.6,-1 5.2,-3.3 10.5,-4.6 16.5,-4 5.4,0.6 10.5,2.7 16,6.5 0.7,0.5 1.5,1 2.3,1.7 l 0.6,0.5 -0.7,0.2 c -1.5,0.4 -3,0.7 -4.3,0.9 -3.1,0.6 -6.1,1.1 -9.1,1.6 -4,0.7 -8.1,1.4 -12.2,2.3 -3.5,0.7 -8.1,1.8 -12.7,3.5 l -1.1,0.4 z m -39.6,37.4 c -2.9,0 -5.7,-1.1 -7.9,-3.3 -2.2,-2.1 -3.5,-4.8 -3.8,-8.2 -0.1,-0.7 -0.1,-1.3 -0.2,-2 L 62.2,97 H 61.3 C 60.1,97.1 59,97.6 58,98 l -0.4,0.2 c -3,1.2 -6.4,1.1 -9.3,-0.3 -3,-1.4 -5.4,-4.1 -6.4,-7.3 -1.5,-4.7 0.2,-10 4.2,-13 l 4,-3 -0.5,-0.7 C 49,73 48.2,72.4 47.4,71.8 l -0.1,-0.1 c -0.2,-0.2 -0.5,-0.4 -0.7,-0.5 -3,-2.5 -4.5,-5.7 -4.4,-9.3 0.1,-5.3 3,-9.4 8,-11.2 2.8,-1 5.6,-0.9 8.5,0.3 l 4.7,2 0.3,-0.9 c 0.4,-1.1 0.6,-2.2 0.7,-3.3 l 0.2,-1 c 0.8,-4.4 4.5,-9.3 10.9,-9.6 4.2,-0.2 7.7,1.4 10.3,5 1.4,1.9 2.1,4.2 2.3,7.1 0.1,0.9 0.1,1.8 0.4,2.7 L 88.7,53.8 91,53 c 0.8,-0.3 1.6,-0.6 2.4,-0.8 5.5,-2 11.6,0.4 14.3,5.5 2.2,4.1 2,8.3 -0.6,12.5 -1,1.6 -2.5,2.8 -4.2,3.9 l -0.5,0.4 c -1,0.7 -1.4,1.1 -1.4,1.7 0,0.6 0.4,1.1 1.3,1.8 1.6,1.4 3.2,2.8 4.3,4.7 1.9,3.1 2.1,7.1 0.6,10.7 -1.5,3.6 -4.4,6.1 -8.3,7 -2.3,0.6 -4.7,0.3 -7.1,-0.7 -0.7,-0.3 -1.4,-0.6 -2.1,-0.9 L 87.2,97.7 87,98.4 c -0.4,1 -0.5,1.9 -0.7,2.8 l -0.1,0.7 c -0.7,4 -2.7,7 -6.1,8.9 -1.9,1 -3.9,1.6 -5.8,1.6 z m 46,7.2 c -3.9,6.3 -7.4,11.9 -11,17.7 -0.8,1.3 -0.9,2.6 -0.4,4.3 l 4.5,15.1 c 0.5,1.5 0.9,3 1.3,4.5 l 0.1,0.5 h -0.5 c -2.1,0 -4.2,0 -6.3,0 h -2.7 c -4.7,0 -9.7,0 -14.8,0.2 H 90 l 0.1,-0.5 c 0.2,-0.7 0.4,-1.4 0.6,-2.1 0.1,-0.4 0.3,-0.9 0.4,-1.3 1.8,-6 3.4,-11 4.9,-15.7 0.7,-2.1 0.3,-4 -1,-5.8 -3.2,-4.3 -6.5,-8.7 -9.4,-12.7 l -3.5,-4.7 0.4,-0.2 c 3.4,-1.6 6,-3.8 8.1,-6.7 0.7,-1 1.3,-2.1 1.8,-3.1 l 0.2,-0.5 0.5,0.1 c 3,0.5 5.9,0.3 8.6,-0.5 6.9,-2.1 11.5,-6.6 13.7,-13.5 l 0.1,-0.5 0.5,0.1 c 3.1,0.5 5.7,2.3 8.3,4.2 1.4,1 2.6,2.2 3.9,3.3 0.5,0.5 1.1,1 1.7,1.4 l 0.3,0.2 z m 38.1,-3.2 c -0.1,1.6 -0.2,3.1 -0.4,4.6 l -0.1,0.8 -1.3,-1.4 c -2.8,-3 -5.5,-6.2 -8.1,-9.2 -2,-2.3 -4.2,-4.9 -6.4,-7.3 -3.5,-3.8 -7.3,-7.9 -11.7,-11.4 -2.4,-1.9 -4.7,-3.4 -7,-4.5 l -0.9,-0.4 0.9,-0.3 c 0.8,-0.2 1.6,-0.4 2.5,-0.6 6.4,-1.1 12.4,-0.4 17.7,2.2 7.1,3.5 11.7,9.3 13.7,17.5 1,3.2 1.3,6.5 1.1,10 z" + id="path4" + style="fill:#1a1a1a;fill-opacity:1" /> + <path + class="st0" + d="m 75.4,59.4 h -0.2 -0.1 c -8.7,0.1 -15.5,7.1 -15.5,15.9 0,4.3 1.6,8.3 4.6,11.3 2.9,2.9 6.9,4.6 11.2,4.6 8.8,0 15.8,-7 15.8,-15.8 0,-4.3 -1.6,-8.3 -4.6,-11.2 -3,-3.1 -7,-4.8 -11.2,-4.8 z m -0.1,23.5 c -2,0 -3.9,-0.8 -5.3,-2.3 -1.4,-1.5 -2.2,-3.4 -2.2,-5.4 0.1,-4.3 3.3,-7.6 7.6,-7.6 2,0 3.8,0.8 5.2,2.2 1.5,1.5 2.3,3.5 2.3,5.5 0,4.2 -3.4,7.6 -7.6,7.6 z" + id="path6" + style="fill:#1a1a1a;fill-opacity:1" /> +</g> +</svg> diff --git a/image/family/black/handmadeArtificial.svg b/image/family/black/handmadeArtificial.svg new file mode 100644 index 00000000..f4ea2768 --- /dev/null +++ b/image/family/black/handmadeArtificial.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="handmadeArtificial.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs13" /><sodipodi:namedview + id="namedview11" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<g + id="g8" + transform="matrix(0.2875629,0,0,0.2875629,-8.75629,-8.7994244)" + style="fill:#1a1a1a;fill-opacity:1"> + <path + class="st0" + d="m 92.8,87.4 c 0,-0.2 0,-0.3 0,-0.4 V 65.7 c 0,-0.5 -0.1,-0.8 -0.3,-0.9 -0.2,-0.2 -0.5,-0.3 -1,-0.3 -0.1,0 -0.3,0 -0.4,0 h -20 -0.3 c -0.2,0 -0.4,0 -0.5,0 -0.4,0 -0.7,0.2 -0.8,0.2 -0.2,0.2 -0.3,0.5 -0.3,0.8 0,0.2 0,0.3 0,0.5 V 88 H 92.7 Z M 85.3,72.3 c 0,0.9 0,1.8 0,2.7 v 2.3 c 0,0.9 0,1.8 0,2.8 v 0.4 h -0.4 c -2.6,0 -5.2,0 -7.9,0 h -0.4 v -0.4 c 0,-2.6 0,-5.2 0,-7.9 V 71.8 H 77 c 2.6,0 5.1,0 7.9,0 h 0.2 z" + id="path4" + style="fill:#1a1a1a;fill-opacity:1" /> + <path + class="st0" + d="m 167.4,121.4 c -0.1,-0.4 -0.2,-0.7 -0.4,-1.1 L 153.1,81.9 C 152.2,79.8 150.9,80 150.9,80 l -16.9,4 1.2,-0.9 9.6,-6.7 v 0 l 19.6,-13.8 -39.3,-9.8 v 0 c -0.6,-0.1 -1.2,-0.3 -1.7,-0.4 -1,-0.2 -1.4,0.2 -1.8,0.9 -0.1,0.1 -0.1,0.3 -0.2,0.4 v 0 l -0.4,0.7 -9,-15.8 c -0.4,-0.8 -0.7,-1.1 -1.1,-1.2 -0.4,-0.1 -0.8,0.1 -1.5,0.5 l -2.7,1.5 c -2,1.2 -4,2.3 -6,3.5 l -0.6,0.3 -0.1,-0.6 v -2.3 c 0,-1.4 0,-2.7 0,-4.1 0,-0.5 0,-1 0,-1.5 0,-1.2 0,-2.4 -0.1,-3.5 V 30.6 H 64.1 C 62.4,30.7 62,32 62,32.7 V 33 c 0,3.2 0,6.4 0,9.6 v 0.6 L 61.4,42.9 C 60.7,42.5 60,42.1 59.3,41.7 l -1.6,-0.9 c -1.8,-1 -3.7,-2.1 -5.5,-3.2 -0.3,-0.2 -0.7,-0.4 -1.1,-0.2 -0.4,0.1 -0.6,0.6 -0.7,0.8 0,0.1 -0.1,0.2 -0.2,0.4 l -18.3,31.3 0.4,0.2 c 1.7,1.1 3.5,2.1 5.3,3.1 0.2,0.1 0.4,0.2 0.5,0.3 v 0 l 5,2.5 -2.8,1.6 c 0,0 -0.1,0 -0.1,0.1 l -8.3,4.8 0.2,0.4 c 1.9,3.7 17.8,31.4 18.8,32.4 l 0.2,0.3 6.2,-3.5 4.7,-3 -0.2,6.8 v 0 c 0,1.6 0,3.1 0,4.6 0,0.3 0,0.8 0.3,1.2 0.3,0.3 0.8,0.3 1,0.3 0.5,0 1.1,0 1.7,0.1 h 0.1 c 0.6,0.1 1.2,0.1 1.7,0.1 0.7,0 1.4,0 2.1,0 0.9,0 1.8,0 2.7,0 0.1,0 0.1,0 0.2,0 0.7,0 1.2,0.3 1.8,0.9 4,5.1 8.4,10.6 13.4,16.7 0.5,0.6 0.6,1.1 0.4,1.8 -1.9,5.9 -3.9,11.7 -5.8,17.6 l -2.8,7.9 c -0.2,0.6 -0.1,1.2 0.2,1.8 0.4,0.5 0.9,0.8 1.6,0.8 h 44.2 l -0.2,-1 c -0.1,-0.2 -0.1,-0.4 -0.1,-0.6 l -1.8,-6.1 c -1.9,-6.6 -3.9,-13.4 -5.9,-20.3 -0.3,-1 -0.2,-1.7 0.4,-2.7 4.4,-7 8.8,-14.1 13.2,-21.1 l 3.8,-6.1 c 0.1,-0.1 0.2,-0.3 0.2,-0.4 l 0.3,0.1 0.1,-0.4 c 0.2,0 0.4,0.1 0.8,0.3 l 30.3,11.3 c 0.3,0.1 0.6,0.2 1,0.3 l 1.4,0.5 z M 129.3,70.5 c 0.5,-0.3 0.6,-0.8 0.4,-1.3 l -0.9,-1.5 c -0.7,-1.3 -1.5,-2.5 -2.2,-3.8 l -2.6,-4 16.5,4 v 0 l 0.7,0.2 5.8,1.9 -2.6,1.7 -4.6,3 c -4.6,3 -9.2,5.9 -13.8,8.9 -0.2,0.2 -0.4,0.2 -0.6,0.2 -0.2,0 -0.3,-0.1 -0.5,-0.2 -1.5,-0.9 -3,-1.8 -4.5,-2.7 l -1.1,-0.6 z m -59,43.9 h -0.9 v -0.5 -17.6 l -0.7,0.3 c -1.7,0.8 -3.3,1.8 -4.9,2.7 l -0.1,0.1 c -0.9,0.5 -1.8,1.1 -2.7,1.6 -1.8,1 -3.7,2.1 -5.3,3.1 l -2,1.2 -0.6,-1.1 c -0.6,-1 -1.2,-2 -1.8,-3 -3,-5.1 -5.9,-10.3 -8.8,-15.4 L 42.2,85.3 42.7,85 56,77.3 c 0.2,-0.1 0.4,-0.3 0.7,-0.4 L 57.8,76.2 43.7,68 C 42.9,67.5 42.6,66.5 43.1,65.7 L 53,48.6 c 0.5,-0.8 1.5,-1.1 2.3,-0.6 L 68,55.3 c 0.3,0.2 0.6,0.2 0.9,0 0.3,-0.2 0.5,-0.5 0.5,-0.8 v -0.8 c 0,-1.2 0.1,-2.2 0.1,-3.3 0,-2.4 0,-4.8 0,-7.2 V 38 H 70 c 7.3,0 14.7,0 22,0 h 0.5 v 16.5 c 0,0.3 0.2,0.7 0.5,0.8 0.3,0.1 0.7,0.2 1,0 L 106.8,48 c 0.8,-0.5 1.9,-0.2 2.3,0.6 l 6.8,11.9 c 1.2,2 2.3,4 3.5,6.1 l 0.3,0.6 -14.3,8.2 c -0.3,0.2 -0.4,0.5 -0.4,0.8 0,0.3 0.2,0.6 0.5,0.8 l 12.8,7.4 c 0.8,0.5 1.1,1.5 0.6,2.3 l -9.9,17.1 c -0.2,0.4 -0.6,0.7 -1,0.8 -0.4,0.1 -0.9,0.1 -1.3,-0.2 L 93.2,96.6 92.9,97 c -0.4,0.4 -0.4,0.9 -0.3,1.4 v 8.4 3.7 c 0,1.3 0,2.4 -0.2,3.6 l -0.1,0.3 h -0.5 c -0.1,0 -0.2,0 -0.3,0 -7,0 -14.1,0.1 -21.2,0 z m 55.8,-4.5 -9.5,15.2 c -2.7,4.2 -5.3,8.5 -8,12.7 -0.5,0.8 -0.6,1.5 -0.3,2.5 1.5,5.3 3.1,10.5 4.6,15.8 l 1.7,5.9 h -0.5 c 0,0 -0.1,0 -0.1,0 h -0.1 l -20.2,-0.1 c -0.7,0 -1.4,0 -2.1,0 h -3.1 l 1.3,-4.1 c 1.8,-5.7 3.8,-11.6 5.7,-17.3 0.4,-1.1 0.2,-1.8 -0.5,-2.7 -3.4,-4.2 -6.7,-8.4 -10.7,-13.3 l -1.9,-2.4 h 16.2 c 0.7,0 1,0 1.2,-0.3 0.3,-0.3 0.3,-0.6 0.3,-1.4 v -11 l 0.6,0.4 c 0.2,0.1 0.3,0.2 0.5,0.3 1.6,0.9 3.1,1.8 4.7,2.7 l 3.9,2.3 c 1.1,0.6 1.4,0.5 2,-0.5 l 5.5,-9.4 c 0.1,-0.1 0.1,-0.2 0.2,-0.3 l 0.2,-0.2 0.6,0.2 c 2.4,0.9 4.7,1.8 7.1,2.6 0.5,0.2 0.9,0.6 1,1 0.1,0.4 -0.1,0.9 -0.3,1.4 z m 21.6,-2.2 -26.3,-9.8 0.3,-0.6 c 0.5,-0.9 1,-1.8 1.5,-2.7 0.1,-0.2 0.3,-0.2 0.7,-0.3 l 16.3,-3.9 c 2,-0.5 3.9,-0.9 5.9,-1.4 l 1,-0.1 1,1 V 90 c 1.5,4.1 2.9,8.1 4.4,12.2 l 3.6,8.7 z" + id="path6" + style="fill:#1a1a1a;fill-opacity:1" /> +</g> +</svg> diff --git a/image/family/black/mortuary.svg b/image/family/black/mortuary.svg new file mode 100644 index 00000000..979e5118 --- /dev/null +++ b/image/family/black/mortuary.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="mortuary.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="m 35.428571,16.4 c 0,-8.085714 -6.228572,-14.714286 -14.142857,-15.371429 V 0.314286 C 21.285715,0.142857 21.142858,0 20.971429,0 H 19.314286 C 19.142858,0 19,0.142857 19,0.314286 V 1 C 10.942858,1.514286 4.5714285,8.228571 4.5714285,16.4 c 0,5.6 3,10.514286 7.4857145,13.228571 L 9.3714285,37.4 c -0.171429,0.542857 0.08571,1.114286 0.628571,1.285714 l 0.2285725,0.08571 c 0.542856,0.171428 1.114286,-0.08571 1.285714,-0.628572 l 2.6,-7.485714 c 1.428572,0.6 2.999999,0.971428 4.628571,1.114286 v 7.2 C 18.742858,39.542857 19.2,40 19.771429,40 h 0.257143 C 20.6,40 21.057143,39.542857 21.057143,38.971429 V 31.8 c 1.657143,-0.114286 3.257143,-0.485714 4.714286,-1.085714 l 2.599999,7.514285 c 0.17143,0.542858 0.771429,0.8 1.285714,0.628572 l 0.228572,-0.08571 C 30.428571,38.6 30.685715,38 30.514286,37.485714 L 27.828572,29.714286 C 32.371428,27.028571 35.428571,22.057143 35.428571,16.4 Z m -2.285714,0 c 0,0.4 -0.02857,0.8 -0.05714,1.2 -1.6,-0.142857 -3.114285,-0.542857 -4.6,-1.085714 0,0 0,-0.02857 0,-0.02857 C 28.485715,11.8 24.685715,8 20,8 c -0.942857,0 -1.885715,0.142857 -2.771429,0.457143 -1.342857,-1.428572 -2.399999,-2.771429 -3.142856,-3.8 1.771428,-0.885714 3.771428,-1.4 5.914285,-1.4 7.257143,0 13.142857,5.885714 13.142857,13.142857 z M 19.085715,10.342857 c 0.285713,-0.05714 0.6,-0.05714 0.914285,-0.05714 3.085715,0 5.628571,2.257143 6.114285,5.2 -2.657142,-1.4 -5.057142,-3.257143 -7.02857,-5.142857 z M 12.114286,5.885714 C 13.228572,7.4 15.057143,9.685714 17.457143,12 c 4.857143,4.628571 10.085715,7.342857 15.199999,7.885714 -0.314285,1.142857 -0.771428,2.2 -1.371427,3.2 -11.2,-0.2 -19.742857,-11.971428 -21.6285725,-14.8 C 10.371429,7.371429 11.2,6.571429 12.114286,5.885714 Z m 1.914285,11.2 c 2.371428,2.285715 4.828572,4.114286 7.314286,5.485715 -0.428572,0.08571 -0.885714,0.142857 -1.342857,0.142857 -3.314285,0 -6,-2.6 -6.200001,-5.857143 0.08572,0.08571 0.142858,0.142857 0.228572,0.228571 z m 5.057144,12.428572 C 12.4,29.057143 7.0571425,23.485714 6.8571425,16.8 c -0.05714,-2.314286 0.457143,-4.485714 1.457143,-6.4 0.742857,1.057143 1.8857145,2.6 3.4000005,4.285714 -0.142857,0.6 -0.2,1.228572 -0.2,1.828572 C 11.514286,21.2 15.314285,25 20,25 c 1.485714,0 2.914285,-0.371429 4.171428,-1.085714 1.828571,0.714285 3.685715,1.2 5.514286,1.371428 -2.571429,2.828572 -6.4,4.514286 -10.599999,4.228572 z" + id="path4" + style="stroke-width:0.285714;fill:#1a1a1a;fill-opacity:1" /> +</svg> diff --git a/image/family/black/pets.svg b/image/family/black/pets.svg new file mode 100644 index 00000000..437f7648 --- /dev/null +++ b/image/family/black/pets.svg @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="40mm" + height="40mm" + viewBox="0 0 40 40" + version="1.1" + id="svg1600" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="pets.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <defs + id="defs1594" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="3.0684205" + inkscape:cx="49.699837" + inkscape:cy="46.277881" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + inkscape:document-rotation="0" + showgrid="false" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:pagecheckerboard="0" /> + <metadata + id="metadata1597"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g885" + style="fill:#1a1a1a;fill-opacity:1"> + <path + id="path8" + style="fill:#1a1a1a;stroke-width:0.061654;fill-opacity:1" + d="m 19.703707,14.502266 v 0.0062 c -3.970522,0.06782 -7.694429,1.566152 -10.5120202,4.211112 -2.8854103,2.706613 -4.4694945,6.301341 -4.4694945,10.117727 v 0.301792 h 0.00568 c 0.1294733,4.451422 3.6995645,8.002625 9.5875287,9.519317 1.886615,0.487066 3.964124,0.746207 6.017203,0.746207 h 0.0925 c 2.108569,-0.01233 4.204824,-0.283607 6.060615,-0.801502 5.622848,-1.559849 8.829214,-5.074293 8.792223,-9.649024 -0.03699,-3.890372 -1.646645,-7.52801 -4.538221,-10.25312 -2.873078,-2.706614 -6.689241,-4.19871 -10.739912,-4.19871 z m 0.191202,2.306319 h 0.0987 c 3.471124,0 6.726416,1.270111 9.167917,3.569807 2.435336,2.293533 3.791643,5.345174 3.816302,8.600509 0.02466,3.452627 -2.564741,6.159413 -7.114809,7.423319 -1.670828,0.462407 -3.551369,0.709001 -5.450314,0.715203 h -0.0739 c -1.868119,0 -3.748181,-0.234566 -5.455998,-0.672311 C 9.9258243,35.168873 7.0587142,32.450255 7.0093913,28.929807 v -0.08061 c 0,-3.175187 1.3317326,-6.177643 3.7424067,-8.446514 2.42917,-2.281201 5.653491,-3.557105 9.143111,-3.594095 z" /> + <path + id="path26" + style="fill:#1a1a1a;stroke-width:0.061654;fill-opacity:1" + d="M 26.238191,0.59665452 C 25.201227,0.56851579 24.157001,1.0061208 23.235274,1.8627271 22.224144,2.8060343 21.46583,4.1686855 21.102071,5.7100374 20.738312,7.251389 20.799933,8.8113797 21.27467,10.09995 c 0.536391,1.455036 1.529238,2.422794 2.799312,2.724899 0.265113,0.06165 0.536424,0.0925 0.807703,0.0925 1.004962,1e-6 2.015954,-0.437841 2.916101,-1.264005 1.011129,-0.943308 1.769443,-2.3059584 2.133203,-3.8473105 C 30.294749,6.2646819 30.233125,4.7052079 29.758391,3.4166373 29.215834,1.9616013 28.223466,0.99332729 26.953392,0.69122239 26.71641,0.63457769 26.477491,0.60314808 26.238191,0.59665452 Z m -0.0863,2.29546728 c 0.09248,-3e-7 0.18495,0.01251 0.2651,0.031006 0.499396,0.1171429 0.912079,0.573587 1.177189,1.2826089 0.320601,0.875488 0.357614,1.9664889 0.0925,3.070097 -0.258947,1.103608 -0.782698,2.0593724 -1.460893,2.6944092 -0.554886,0.5117281 -1.134612,0.7336421 -1.634009,0.6164991 -0.493233,-0.117142 -0.906394,-0.57307 -1.171504,-1.2820916 -0.3206,-0.875488 -0.357614,-1.9670056 -0.0925,-3.0706136 0.258947,-1.1036078 0.783213,-2.0593725 1.461409,-2.6944092 0.456238,-0.425413 0.931128,-0.6475055 1.362708,-0.6475058 z" /> + <path + id="path32" + style="fill:#1a1a1a;stroke-width:0.061654;fill-opacity:1" + d="m 36.206575,6.0790071 c -0.733356,0.010554 -1.501195,0.2351881 -2.257226,0.6686931 -1.196092,0.6905254 -2.23805,1.8499745 -2.940905,3.2680178 -0.709025,1.42421 -0.998387,2.95298 -0.819589,4.3217 0.197294,1.535186 0.949338,2.700355 2.1146,3.279903 0.493231,0.240451 1.02331,0.363802 1.578197,0.363802 0.746014,0 1.535129,-0.221683 2.305802,-0.665593 1.196091,-0.690526 2.238049,-1.849974 2.940907,-3.268017 0.70902,-1.424209 0.998902,-2.952979 0.820105,-4.3217002 C 39.751174,8.190627 38.999128,7.0254581 37.833866,6.4459098 37.32676,6.1923575 36.776964,6.0707992 36.206575,6.0790071 Z m 0.04857,2.2965007 c 0.203459,0 0.394742,0.043388 0.561208,0.1297078 0.456239,0.22812 0.758661,0.7645595 0.85731,1.5229044 0.117145,0.924811 -0.09285,1.99131 -0.598413,3.008602 -0.50556,1.017292 -1.226796,1.837195 -2.028298,2.299601 -0.659699,0.37609 -1.275956,0.462214 -1.732196,0.234094 -0.456239,-0.22812 -0.758671,-0.770725 -0.857311,-1.522904 -0.117144,-0.924811 0.09233,-1.99131 0.597895,-3.008602 0.505563,-1.017292 1.227315,-1.8371952 2.028817,-2.2996011 0.419248,-0.240451 0.819563,-0.3638021 1.170988,-0.3638021 z" /> + <path + id="path26-6" + style="fill:#1a1a1a;stroke-width:0.061654;fill-opacity:1" + d="m 13.762467,0.59665452 c -0.239299,0.006494 -0.478218,0.0379232 -0.715202,0.0945679 -1.270074,0.3021049 -2.262958,1.27037888 -2.805513,2.72541488 -0.4747359,1.2885703 -0.5363581,2.8480446 -0.172599,4.3893962 0.363761,1.5413521 1.122075,2.9040025 2.133203,3.8473105 0.900148,0.826164 1.911656,1.264006 2.916618,1.264005 0.271279,0 0.542072,-0.03085 0.807185,-0.0925 1.270075,-0.302105 2.262922,-1.269863 2.799313,-2.724899 C 19.200209,8.8113797 19.26183,7.2513893 18.898071,5.7100374 18.534312,4.1686855 17.775998,2.8060343 16.764868,1.8627271 15.84314,1.0061207 14.799432,0.56851579 13.762467,0.59665452 Z m 0.0863,2.29546728 c 0.43158,0 0.905953,0.2220925 1.362191,0.6475055 0.678196,0.6350367 1.202462,1.5908014 1.461409,2.6944092 0.265113,1.103608 0.228099,2.1951256 -0.0925,3.0706136 C 16.314756,10.013672 15.901595,10.4696 15.408362,10.586742 14.908965,10.703885 14.329756,10.481971 13.77487,9.9702426 13.096676,9.3352058 12.572407,8.3794414 12.31346,7.2758334 c -0.265113,-1.1036081 -0.228099,-2.194609 0.0925,-3.070097 0.26511,-0.7090219 0.678309,-1.165466 1.177706,-1.2826089 0.08015,-0.018497 0.17262,-0.031006 0.2651,-0.031006 z" /> + <path + id="path32-9" + style="fill:#1a1a1a;stroke-width:0.061654;fill-opacity:1" + d="M 3.7935669,6.0790071 C 3.2231793,6.0707997 2.6733809,6.1923575 2.166276,6.4459098 1.001015,7.0254579 0.24896743,8.190627 0.05167643,9.7258128 c -0.178799,1.3687212 0.11056822,2.8974912 0.81958822,4.3217002 0.70285695,1.418043 1.74481575,2.577491 2.94090565,3.268017 0.7706752,0.44391 1.5603043,0.665593 2.3063192,0.665593 0.554886,0 1.0849652,-0.123351 1.5781983,-0.363802 1.165261,-0.579548 1.9173055,-1.744717 2.1145994,-3.279903 0.1787962,-1.36872 -0.1110818,-2.89749 -0.8201048,-4.3217 C 8.2883263,8.597675 7.2463667,7.4382256 6.0502767,6.7477002 5.2942444,6.3141952 4.5269224,6.0895602 3.7935669,6.0790071 Z m -0.049093,2.2965007 c 0.351427,0 0.7522567,0.1233511 1.1715046,0.3638021 0.801502,0.4624059 1.5227369,1.2823091 2.0283001,2.2996011 0.5055639,1.017292 0.7155568,2.083791 0.5984128,3.008602 -0.09864,0.752179 -0.4010707,1.294784 -0.8573119,1.522904 C 6.229142,15.798537 5.6128851,15.712413 4.9531859,15.336323 4.1516839,14.873917 3.4299313,14.054014 2.9243692,13.036722 2.4188063,12.01943 2.20933,10.952931 2.326473,10.02812 2.4251229,9.2697751 2.727544,8.7333356 3.1837849,8.5052156 3.3502499,8.4188955 3.5410153,8.3755078 3.7444739,8.3755078 Z" /> + </g> + </g> +</svg> diff --git a/image/family/black/plant.svg b/image/family/black/plant.svg new file mode 100644 index 00000000..67e2240a --- /dev/null +++ b/image/family/black/plant.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="plant.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="4.365" + inkscape:cx="100" + inkscape:cy="100.11455" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="m 32.304555,8.9605096 0.135962,-0.02719 c 0.707002,-0.108769 1.441196,-0.244731 2.148198,-0.380693 0.842964,-0.163154 1.93066,-0.380693 3.018355,-0.734194 0.870156,-0.271924 1.658736,-0.78858 2.28416,-1.223658 L 40,6.4860026 39.918423,6.3500406 c -0.02719,-0.05438 -0.05439,-0.08158 -0.08158,-0.08158 -0.951734,-0.978926 -2.121006,-2.121007 -3.426241,-3.018355 -2.365738,-1.604351 -4.67709,-2.36573797 -7.07002,-2.31135297 -2.637662,0.05438 -4.921822,1.08769497 -6.852482,3.04554697 -1.03331,1.060503 -1.849082,2.338545 -2.365737,3.779742 l -0.10877,0.271924 -0.108769,-0.271924 c -0.190347,-0.57104 -0.462271,-1.14208 -0.815772,-1.740313 -1.087695,-1.849082 -2.556084,-3.235894 -4.377974,-4.10605 C 12.263763,0.74840563 9.653294,0.61244363 6.906863,1.5641776 5.520051,2.0536406 4.187624,2.7878346 2.855198,3.8483376 1.794694,4.6641096 0.897346,5.5070736 0.108767,6.4316146 L 0,6.5403866 l 0.135962,0.08158 c 1.223657,0.815771 1.577158,1.060503 3.127124,1.468388 1.414004,0.380694 2.855201,0.625425 4.269205,0.842964 0.407886,0.08158 0.842964,0.135962 1.25085,0.217539 1.386811,0.244732 3.018355,0.543848 4.568321,0.9789264 h 0.08158 v 0.217539 h -0.10877 c -0.707002,-0.08158 -1.414004,-0.08158 -2.175391,0 -2.556084,0.244732 -4.704282,1.25085 -6.39021,2.963971 -1.060503,1.087695 -1.82189,2.365737 -2.338546,3.942896 -0.516655,1.577158 -0.679809,3.371855 -0.489463,5.438477 0.10877,1.278042 0.380694,2.501699 0.78858,3.942896 0.02719,0.08158 0.05438,0.190346 0.190346,0.217539 h 0.05438 l 0.05438,-0.02719 c 0.46227,-0.217539 0.978926,-0.46227 1.441196,-0.761386 0.978926,-0.625425 1.767505,-1.495582 2.447315,-2.229776 0.707002,-0.788579 1.414004,-1.604351 2.093814,-2.39293 l 1.006118,-1.169273 0.02719,0.217539 c 0.02719,0.190347 0.05438,0.353501 0.08158,0.543848 l 1.03331,7.369137 c 0.380694,2.501699 0.78858,5.003399 1.196465,7.341944 0.10877,0.67981 0.435078,1.223657 1.006119,1.685928 0.543847,0.435078 1.196465,0.761387 2.121006,1.033311 1.441196,0.435078 3.018355,0.625425 4.813052,0.598232 1.359619,-0.02719 2.528892,-0.163154 3.616587,-0.407886 0.815772,-0.190346 1.767506,-0.489463 2.637662,-1.087695 0.67981,-0.489463 1.033311,-0.978926 1.114888,-1.604351 0.135962,-0.788579 0.244731,-1.604351 0.353501,-2.39293 0.08158,-0.489463 0.135962,-1.006118 0.217539,-1.495581 0.163154,-1.033311 0.299116,-2.093814 0.46227,-3.127124 l 0.516656,-3.507818 c 0.217539,-1.495581 0.435078,-3.018355 0.679809,-4.513936 0,-0.08158 0.02719,-0.135962 0.02719,-0.217539 0,-0.05438 0.02719,-0.135962 0.02719,-0.190347 l 0.02719,-0.217539 1.278042,1.495581 c 0.951733,1.114888 1.957851,2.28416 3.018355,3.344663 0.734194,0.707003 1.577158,1.278043 2.719238,1.794698 l 0.08158,0.02719 0.135962,-0.108769 v -0.05438 c 0.353501,-1.278042 0.761387,-2.991162 0.870157,-4.78586 0.08158,-1.685928 -0.08158,-3.181509 -0.516656,-4.595513 -0.489463,-1.577159 -1.278042,-2.96397 -2.39293,-4.078858 -1.414004,-1.441197 -3.235894,-2.39293 -5.3569,-2.800816 -0.870156,-0.163154 -1.794697,-0.217539 -2.746431,-0.163154 -0.135962,0 -0.244731,0.02719 -0.380693,0.02719 l -0.02719,-0.190346 c 0.734195,-0.190347 1.441197,-0.3535024 1.985045,-0.4894634 1.223657,-0.326309 2.474507,-0.543848 3.670972,-0.761387 z M 19.03467,16.547185 v 0 0 c 0.02719,0 2.664854,0.489463 3.344664,-1.087695 0.271924,-0.380693 0.598232,-0.57104 0.951733,-0.598232 v 0 h 0.02719 c 0.08158,0 0.135962,0.02719 0.217539,0.05438 0.761387,0.190347 1.386811,0.598233 1.876274,0.924541 0.543848,0.380694 1.495582,1.169273 1.93066,1.631544 l 0.08158,0.108769 -0.10877,0.05439 c -0.46227,0.244731 -0.951733,0.407886 -1.386811,0.543848 -1.114888,0.326308 -2.338545,0.543847 -3.834127,0.679809 -0.707002,0.05439 -1.414004,0.08158 -2.175391,0.08158 -0.598232,0 -1.196465,-0.02719 -1.821889,-0.05438 -1.93066,-0.10877 -3.480626,-0.380694 -4.867438,-0.870157 -0.244731,-0.08158 -0.516655,-0.190346 -0.761386,-0.326308 l -0.10877,-0.05438 0.08158,-0.10877 c 0.299116,-0.326308 0.652618,-0.625425 1.033311,-0.951733 0.707002,-0.598233 1.495581,-1.196465 2.447315,-1.549966 0.190346,-0.08158 0.46227,-0.163154 0.761386,-0.217539 0.299117,0 0.761387,0.217539 1.332427,1.14208 0.135962,0.326309 0.489463,0.543848 0.978926,0.598232 z M 8.266485,6.8395036 7.260367,6.6763486 C 6.145479,6.4860026 5.003399,6.2956556 3.861319,5.9965396 l -0.190347,-0.05438 0.163154,-0.135962 c 0.05438,-0.02719 0.10877,-0.08158 0.163155,-0.10877 L 4.133243,5.5886586 C 5.3569,4.6369246 6.580557,3.9571156 7.8586,3.5492296 c 0.679809,-0.217539 1.359619,-0.353501 2.039429,-0.380693 2.229775,-0.163155 4.187627,0.598232 5.873555,2.229775 1.169273,1.14208 1.957852,2.556084 2.365738,4.242012 l 0.05438,0.271924 -0.217539,-0.163154 c -1.386811,-0.978926 -2.936777,-1.468389 -4.432359,-1.876275 -1.740312,-0.435078 -3.53501,-0.734194 -5.275323,-1.03331 z M 7.668253,19.456771 7.450714,19.701502 C 7.233175,19.973426 6.988443,20.24535 6.770904,20.490081 5.982325,21.414623 5.193746,22.339164 4.350782,23.154935 L 4.21482,23.290897 4.16044,23.100551 C 4.13325,22.991781 4.13325,22.883011 4.10606,22.774242 L 4.07887,22.583895 C 3.888523,21.088314 3.9701,19.647117 4.323601,18.287498 c 0.78858,-3.072739 3.290279,-5.275323 6.498981,-5.710401 1.359619,-0.190347 2.692046,-0.08158 3.970088,0.353501 l 0.271924,0.08158 -0.244732,0.10877 c -1.223657,0.543848 -2.229775,1.332427 -3.018354,2.039429 -1.522774,1.305234 -2.855201,2.828008 -4.133243,4.296397 z m 20.067981,0.707002 -0.10877,-0.02719 0.10877,0.02719 c -0.05439,0.353501 -0.10877,0.707002 -0.135962,1.033311 l -0.924541,6.227056 c -0.190347,1.169273 -0.353501,2.338545 -0.516656,3.53501 l -0.108769,0.761387 c -0.163154,1.169273 -0.353501,2.311353 -0.489463,3.453433 -0.02719,0.271924 -0.163154,0.462271 -0.407886,0.598232 -0.543848,0.326309 -1.169272,0.571041 -2.039429,0.734195 -0.679809,0.135962 -1.414004,0.217539 -2.365737,0.271924 -0.271924,0.02719 -0.543848,0.02719 -0.815772,0.02719 -1.305234,0 -2.610469,-0.190347 -3.861319,-0.543848 -0.407886,-0.108769 -0.815771,-0.299116 -1.223657,-0.543847 -0.190347,-0.10877 -0.271924,-0.271924 -0.326309,-0.489463 -0.299116,-1.658736 -0.598232,-3.480626 -0.951733,-5.683209 -0.326309,-2.148198 -0.652618,-4.323589 -0.978926,-6.471788 L 12.290959,21.06112 c -0.05439,-0.299117 -0.08158,-0.571041 -0.135962,-0.870157 l -0.02719,-0.217539 0.163155,0.05439 c 2.17539,0.761387 4.541128,1.114888 7.668252,1.114888 h 0.05438 c 3.045547,0 5.46567,-0.380694 7.641061,-1.196465 l 0.163154,-0.05438 z M 27.57308,12.49552 c 1.631543,-0.05439 3.154316,0.326309 4.459551,1.087695 1.903467,1.142081 3.154317,2.882393 3.64378,5.193746 0.190346,0.924541 0.271923,1.876275 0.244731,2.800816 -0.02719,0.46227 -0.05439,1.006118 -0.163154,1.577158 l -0.02719,0.190347 -0.135962,-0.135962 C 35.431679,23.046166 35.241332,22.883011 35.078178,22.692665 34.53433,22.06724 33.990483,21.469007 33.473827,20.843582 L 33.365058,20.707621 C 32.467709,19.67431 31.515976,18.586614 30.591434,17.553304 29.721278,16.60157 28.552005,15.35072 27.138001,14.290217 26.621346,13.909524 25.914344,13.420061 25.125765,13.06656 l -0.244732,-0.108769 0.271924,-0.08158 c 0.788579,-0.217539 1.604351,-0.353501 2.420123,-0.380693 z M 25.805574,8.0631606 v 0 c -0.951733,0.271924 -2.039429,0.625425 -3.045547,1.196465 v 0 c 0,0 -0.05439,0.02719 -0.108769,0.08158 -0.135962,0.08158 -0.244732,0.135962 -0.380694,0.217539 -0.135962,0.08158 -0.299116,0.190347 -0.46227,0.299116 v -0.08158 c 0.271924,-1.14208 0.679809,-2.012236 0.842964,-2.311352 0.897348,-1.685928 2.229775,-2.936778 4.078858,-3.75255 0.652617,-0.299116 1.414004,-0.46227 2.28416,-0.543847 0.190347,-0.02719 0.380693,-0.02719 0.57104,-0.02719 1.332427,0 2.692046,0.353501 4.160435,1.087696 0.788579,0.407885 1.549966,0.897348 2.338545,1.577158 l 0.163155,0.135962 -0.190347,0.05438 c -0.924541,0.244731 -1.876275,0.407885 -2.909585,0.598232 -0.435078,0.08158 -0.842964,0.135962 -1.278042,0.217539 -2.039429,0.353501 -4.106051,0.67981 -6.063903,1.25085 z" + id="path4" + style="stroke-width:0.271924;fill:#1a1a1a;fill-opacity:1" /> +</svg> diff --git a/image/family/black/preserved.svg b/image/family/black/preserved.svg new file mode 100644 index 00000000..b88d5399 --- /dev/null +++ b/image/family/black/preserved.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="preserved.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs9" /><sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<path + class="st0" + d="m 19.999996,39.999996 c 0.632411,0 1.121092,-0.517427 1.121092,-1.121092 v -8.39382 h 0.114984 c 2.874596,-0.08624 5.116781,-0.977363 6.669062,-2.644628 2.673374,-2.817104 2.443407,-6.927776 2.357169,-7.732663 v 0 c -0.05749,-0.603665 -0.546173,-1.092346 -1.149839,-1.149838 -0.287459,-0.02875 -1.322314,-0.114984 -2.644628,0.08624 l -0.488681,0.08624 0.431189,-0.258714 c 0.546174,-0.344951 1.034855,-0.747395 1.466044,-1.20733 2.673374,-2.817104 2.443407,-6.927776 2.357169,-7.732663 C 30.176067,9.328063 29.687384,8.839382 29.083719,8.78189 28.537545,8.7244 26.58282,8.609414 24.484365,9.356809 L 24.31189,9.414299 24.34064,9.213077 C 24.455623,8.609412 24.513115,7.977001 24.513115,7.373336 24.398131,3.492632 21.408552,0.790512 20.833633,0.301831 c -0.488682,-0.402444 -1.149839,-0.402444 -1.63852,0 -0.603665,0.459935 -3.593245,3.162055 -3.708228,7.042759 -0.02875,0.632411 0.02875,1.236076 0.172475,1.868487 l 0.02875,0.201222 -0.172475,-0.05749 C 13.41718,8.609414 11.433709,8.724398 10.887535,8.78189 10.28387,8.83938 9.7951894,9.328063 9.7376974,9.931728 c -0.08624,0.804887 -0.316205,4.915559 2.3571686,7.732663 0.431189,0.431189 0.891124,0.833633 1.437297,1.178584 l 0.402444,0.258714 -0.488681,-0.08624 c -0.632411,-0.08624 -1.178585,-0.114984 -1.609774,-0.114984 -0.431189,0 -0.747395,0.02875 -0.919871,0.02875 -0.603665,0.05749 -1.0923456,0.546173 -1.1498376,1.149838 -0.08624,0.804887 -0.316206,4.886813 2.3571686,7.732663 1.552281,1.63852 3.794466,2.529644 6.640316,2.644628 h 0.114984 v 8.39382 c 0,0.632411 0.488681,1.149838 1.121092,1.149838 z M 27.93388,21.171394 h 0.114984 v 0.114984 c -0.02875,1.20733 -0.28746,3.420769 -1.782249,5.001796 -1.121093,1.20733 -2.788358,1.839742 -4.973051,1.954725 H 21.17858 v -0.114983 c 0.08624,-2.299677 0.776141,-4.053181 2.012217,-5.203019 1.523536,-1.49479 3.621991,-1.753503 4.743083,-1.753503 z M 27.87639,10.966579 h 0.114984 v 0.114984 c -0.02875,1.20733 -0.287459,3.420769 -1.782249,5.001796 -1.121093,1.178585 -2.788358,1.839742 -4.973051,1.925979 H 21.12109 v -0.114983 c 0.08624,-2.299677 0.776141,-4.05318 2.012217,-5.203019 1.552282,-1.437298 3.650737,-1.696011 4.743083,-1.724757 z M 17.757811,7.40208 c 0.05749,-2.155947 1.379806,-3.880704 2.184693,-4.714337 l 0.08624,-0.08624 0.08624,0.08624 c 0.776141,0.833633 2.098455,2.55839 2.184693,4.714337 0.05749,1.696012 -0.689903,3.392023 -2.155947,5.030543 l -0.08624,0.08624 -0.08624,-0.08624 C 18.418968,10.794103 17.700319,9.098092 17.757811,7.40208 Z m -4.024434,8.681279 c -1.466044,-1.552281 -1.753503,-3.794466 -1.782249,-5.001796 v -0.114984 h 0.114984 c 1.35106,0.02875 3.277039,0.344951 4.743083,1.724757 v 0 c 1.236076,1.149839 1.897233,2.903342 2.012217,5.203019 v 0.114983 h -0.114984 c -2.184693,-0.08624 -3.851958,-0.747394 -4.973051,-1.925979 z m 5.001797,12.130794 c -2.184693,-0.08624 -3.851959,-0.747395 -4.973051,-1.925979 -1.466044,-1.552281 -1.753503,-3.794466 -1.782249,-5.001796 v -0.114984 h 0.114984 c 1.121092,0.02875 3.219547,0.287459 4.743083,1.724757 1.236076,1.149839 1.897233,2.903342 2.012217,5.203019 v 0.114983 z M 18.418968,21.228886 C 18.074017,20.91268 17.700319,20.625221 17.26913,20.337761 l -0.431189,-0.258714 0.488681,0.05749 c 0.833633,0.114984 1.638519,0.14373 2.500898,0.114984 0.02875,0 0.05749,0 0.08624,0 h 0.05749 0.05749 c 0.02875,0 0.05749,0 0.08624,0 0.201221,0 0.373697,0 0.574919,0 0.689903,0 1.379806,-0.05749 2.040963,-0.14373 l 0.517427,-0.08624 -0.431189,0.28746 c -0.43119,0.258714 -0.804887,0.574919 -1.149839,0.891125 -0.574919,0.546173 -1.092346,1.236076 -1.523535,2.012217 l -0.08624,0.172476 -0.08624,-0.172476 c -0.459931,-0.747391 -0.977359,-1.437294 -1.552278,-1.983467 z" + id="path4" + style="stroke-width:0.28746;fill-opacity:1;fill:#1a1a1a" /> +</svg> diff --git a/image/family/black/treatments.svg b/image/family/black/treatments.svg new file mode 100644 index 00000000..69dcbf82 --- /dev/null +++ b/image/family/black/treatments.svg @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + version="1.1" + id="Capa_1" + x="0px" + y="0px" + viewBox="0 0 40 40" + xml:space="preserve" + sodipodi:docname="treatments.svg" + width="40" + height="40" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"><defs + id="defs13" /><sodipodi:namedview + id="namedview11" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.595" + inkscape:cx="100" + inkscape:cy="99.860918" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="Capa_1" /> +<style + type="text/css" + id="style2"> + .st0{fill:#1E1E1C;} + .st1{fill:none;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} + .st2{fill:#FFFFFF;stroke:#1E1E1C;stroke-width:8;stroke-miterlimit:10;} +</style> +<g + id="g8" + transform="matrix(0.28715004,0,0,0.28715004,-9.3036616,-8.6719315)" + style="fill:#1a1a1a;fill-opacity:1"> + <path + class="st0" + d="m 88.4,48.2 c -10.7,3.1 -16.5,10.9 -16.5,22 v 99.3 h 60.3 c 0,-0.1 0,-0.2 0,-0.3 0,-8.8 0,-17.6 0,-26.4 0,-24.2 0,-49.3 -0.1,-74.1 0,-7.7 -3.7,-13.9 -10.6,-18.1 v 0 c -1.3,-0.8 -2.8,-1.4 -4.4,-2 H 117 c -0.7,-0.3 -1.4,-0.6 -2.2,-0.9 l -0.2,-0.1 V 30.2 H 89.3 V 47.8 L 88.8,48 c -0.2,0.1 -0.3,0.2 -0.4,0.2 z m 35.7,113.4 H 79.9 V 73.2 h 44.2 z M 97.4,38.2 h 9.3 v 9.4 h -9.3 z m -4.3,17.4 h 3.4 c 4.8,0 9.7,-0.1 14.5,0 5.2,0.1 9.2,2.6 11.8,7.4 0.2,0.3 0.3,0.7 0.5,1 v 0.1 c 0.1,0.2 0,0.3 0,0.4 0,0 0,0.1 0,0.1 v 0.3 H 80.5 l 0.2,-0.5 c 0.7,-2.2 2,-4.1 3.9,-5.7 2.5,-2 5.4,-3.1 8.5,-3.1 z" + id="path4" + style="fill:#1a1a1a;fill-opacity:1" /> + <path + class="st0" + d="m 114.7,130.7 c 0.1,-3.1 0,-6.2 0,-9.3 v -1 c 0,-1.1 0,-2.2 0,-3.2 v -0.1 c 0,-1.1 0,-2.3 0,-3.4 v -0.2 c 0,-3 0,-6.1 0,-9.1 0,-1.4 -0.2,-2.6 -0.4,-3.6 -1.4,-5.5 -6.5,-9.5 -12.2,-9.5 -0.5,0 -1,0 -1.4,0.1 -6.5,0.8 -11.3,6.1 -11.4,12.5 -0.1,8.4 0,17.1 0,24.8 v 1.9 c 0,0.9 0.1,1.9 0.4,2.9 1.5,6.1 7.3,10.2 13.5,9.6 6.5,-0.7 11.4,-6 11.5,-12.4 z m -7.9,-9.7 c 0,3 0,6 0,9 0,3 -1.9,5.2 -4.7,5.2 -1.3,0 -2.4,-0.5 -3.3,-1.3 -1,-0.9 -1.5,-2.3 -1.5,-3.8 0,-8.5 0,-17.2 0,-25.7 0,-1.5 0.5,-2.9 1.5,-3.8 0.9,-0.8 2,-1.3 3.3,-1.3 2.8,0 4.7,2.2 4.7,5.2 0,3 0,6 0,9 v 3.8 z" + id="path6" + style="fill:#1a1a1a;fill-opacity:1" /> +</g> +</svg> diff --git a/index.js b/index.js new file mode 100644 index 00000000..aa8a23f4 --- /dev/null +++ b/index.js @@ -0,0 +1,60 @@ +__webpack_public_path__ = _PUBLIC_PATH; + +require('hedera/hedera'); + +window.onload = function() { + loadLocale(main); +} + +function main(req) { + if (req) + onLocaleLoad(req); + + hederaWeb = new Hedera.App(); + hederaWeb.run(); +} + +function loadLocale(cb) { + Vn.Locale.init(); + var lang = Vn.Locale.language; + + var req = require.context('js', true, /locale\/en.yml$/); + onLocaleLoad(req); + + switch (lang) { + case 'ca': + require([], function() { + cb(require.context('js', true, /locale\/ca.yml$/)); + }); + break; + case 'es': + require([], function() { + cb(require.context('js', true, /locale\/es.yml$/)); + }); + break; + case 'fr': + require([], function() { + cb(require.context('js', true, /locale\/fr.yml$/)); + }); + break; + case 'mn': + require([], function() { + cb(require.context('js', true, /locale\/mn.yml$/)); + }); + break; + case 'pt': + require([], function() { + cb(require.context('js', true, /locale\/pt.yml$/)); + }); + break; + default: + cb(); + } +} + +function onLocaleLoad(req) { + var keys = req.keys(); + + for (var i = 0; i < keys.length; i++) + Vn.Locale.add(req(keys[i])); +} diff --git a/js/hedera/gui.css b/js/hedera/gui.css deleted file mode 100644 index 791f5e2e..00000000 --- a/js/hedera/gui.css +++ /dev/null @@ -1,350 +0,0 @@ - -.vn-gui { - height: inherit; -} - -/* Font */ - -.vn-gui .user-name, -.vn-gui .menu-title, -.vn-gui .main-menu { - font-size: 1.1em; -} - -/* Navigation bar */ - -.vn-gui .navbar { - position: fixed; - background-color: #1A1A1A; - left: 250px; - top: 0; - right: 0; - z-index: 1; - overflow: hidden; - height: 64px; - color: white; - - transition-property: left, background-color, transform; - transition-duration: 200ms; - transition-timing-function: ease-in-out; -} -.vn-gui .menu-button { - position: absolute; - left: 0; - display: none; - border: none; - background-color: transparent; - padding: 0 .4em; - margin: 0; - height: 100%; -} -.vn-gui .menu-button:hover { - background-color: rgba(0, 0, 0, .2); -} -.vn-gui .menu-button img { - vertical-align: middle; - height: 1.8em; -} -.vn-gui .title { - float: left; -} -.vn-gui .title h1 { - font-weight: normal; - font-size: 1.4em; - padding: .8em .6em; - padding-right: .3em; - margin: 0; -} -.vn-gui .navbar > .htk-spinner { - float: left; - margin: 1.05em .8em; -} - -/* Action bar */ - -.vn-gui .action-bar { - float: right; - padding: 0; - margin: 0; - height: 100%; -} -.vn-gui .action-bar > div { - padding: 0; - margin: 0; - height: 100%; -} -.vn-gui .action-bar > div > * { - float: right; -} -.vn-gui .action-bar button { - margin: 0; - padding: 1.25em .5em; - border-radius: 2em; - font-weight: bold; -} -.vn-gui .action-bar button:hover { - background-color: rgba(1, 1, 1, .2); -} -.vn-gui .action-bar button > img { - vertical-align: middle; - height: 1.4em; -} - -/* Background */ - -.vn-gui > .background { - z-index: 10; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - visibility: hidden; - background-color: rgba(1, 1, 1, .7); - opacity: 0; -} -.vn-gui > .background.show { - visibility: visible; - transition: opacity 200ms ease-out; - opacity: 1; -} - -/* Left panel */ - -.vn-gui .left-panel { - z-index: 20; - position: fixed; - left: 0; - bottom: 0; - top: 0; - background-color: white; - z-index: 20; - width: 250px; -} -.vn-gui .menu-overflow { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 4em; - overflow: auto; -} -.vn-gui .menu-header { - background-color: #1A1A1A; - color: white; - height: 64px; - display: flex; -} -.vn-gui .logo { - display: block; - width: 160px; - margin-left: 37px; -} -.vn-gui .user-info { - overflow: hidden; - padding: 20px 37px; - font-weight: bold; -} -.vn-gui .user-info > img { - margin-right: 10px; - height: 20px; - vertical-align: middle; -} -.vn-gui .user-info > p { - margin: 0; - margin-top: .2em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.vn-gui .logout { - display: block; - width: 100%; - margin: 0; - text-align: left; - padding: 14px 37px; -} -.vn-gui .supplant { - display: none; - padding: 8px; - margin: 0; - margin-top: .2em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.vn-gui .supplant > p { - margin: 0; - margin-top: .2em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.vn-gui .supplant-logout { - float: right; - margin: 0; - padding: .2em; - display: block; -} -.vn-gui .supplant-logout > img { - height: 1.2em; - display: block; -} - -/* Test link */ - -.vn-gui .test-link { - display: none; - margin: .5em; - background-color: #3f51b5; - color: white; - padding: 0 1em; - line-height: 2em; - border-radius: .1em; - text-align: center; -} -.vn-gui .test-link:hover { - background-color: #4f61c5; -} -.vn-gui .dev-info { - display: none; - padding: .3em .5em; - color: white; - background-color: #3f51b5; - font-size: .9em; - margin: .5em; - border-radius: .1em; -} -.vn-gui .dev-info > p { - margin: .2em 0; -} -.vn-gui .dev-info > .mode { - color: #BBF; -} - -/* Menu */ - -.vn-gui .main-menu, -.vn-gui ul.submenu { - list-style-type: none; - padding: 0; - margin: 0; -} -.vn-gui .main-menu > li { - display: block; - padding: 0; - margin: 0; - width: 100%; -} -.vn-gui .main-menu a { - width: 70%; - padding: 0 15%; - display: block; - line-height: 2.8em; -} -.vn-gui .main-menu a:hover, -.vn-gui .main-menu a.selected { - background-color: rgba(1, 1, 1, .1); -} -.vn-gui ul.submenu { - display: none; -} -.vn-gui ul.submenu.popup { - display: inline; - position: fixed; - border: none; - border-radius: 1px; - background-color: white; - box-shadow: 0 0 .3em rgba(1, 1, 1, .3); - z-index: 50; - width: 13em; - max-height: 30em; -} - -/* Social */ - -.vn-gui .menu-footer { - position: absolute; - bottom: 0; - right: 0; - left: 0; -} - -/* Body */ - -.vn-gui > .body { - margin-left: 250px; - padding-top: 4.4em; - height: inherit; - box-sizing: border-box; - height: inherit; - - transition-property: margin-left, margin-right; - transition-duration: 200ms; -} -.vn-gui .form-holder { - position: relative; - height: inherit; - - opacity: 0; - transform: translateZ(0) translateX(-2em); - -webkit-transform: translateZ(0) translateX(-2em); - - transition-property: opacity, transform; - transition-duration: 200ms; - transition-timing-function: ease-out; -} -.vn-gui .form-holder.show { - opacity: 1; - transform: translateZ(0) translateX(0em); - -webkit-transform: translateZ(0) translateX(0em); -} - -/* Mobile */ - -@media (max-width: 960px) { - .vn-gui .action-bar span.label, - .vn-gui .htk-button > span { - display: none; - } - .vn-gui > .navbar { - padding-left: 2.8em; - left: 0; - } - .vn-gui > .body { - margin-left: 0; - } - .vn-gui .menu-button { - display: block; - } - .vn-gui .left-panel { - top: 0; - left: -250px; - box-shadow: 0 0 .2em rgba(1, 1, 1, .3); - - transition: transform 200ms ease-out; - -webkit-transition: transform 200ms ease-out; - } - .vn-gui .left-panel.show { - transform: translateZ(0) translateX(250px); - -webkit-transform: translateZ(0) translateX(250px); - } - .vn-gui .form-holder { - left: 0; - } - .vn-gui ul.submenu { - display: block; - background-color: #888; - color: white; - box-shadow: inset 0 0 .2em rgba(1, 1, 1, .2); - overflow: hidden; - - max-height: 0; - transition: max-height 300ms ease-out; - webkit-transition: max-height 300ms ease-out; - } - .vn-gui .main-menu li:hover > ul.submenu { - max-height: 20em; - } -} - diff --git a/js/hedera/gui.js b/js/hedera/gui.js index 4b8b1568..03000355 100644 --- a/js/hedera/gui.js +++ b/js/hedera/gui.js @@ -1,8 +1,8 @@ var Module = require('./module'); -var Tpl = require('./gui.xml'); +var Tpl = require('./gui.xml').default; -require('./gui.css'); +require('./gui.scss'); module.exports = new Class({ Extends: Htk.Component, @@ -49,7 +49,7 @@ module.exports = new Class({ var sql = 'SELECT id, name, nickname FROM account.myUser;' +'SELECT defaultForm FROM config;' +'SELECT url FROM imageConfig;' - +'SELECT dbproduccion FROM vn2008.tblContadores;' + +'SELECT dbproduccion FROM vn.config;' +'SELECT productionDomain, testDomain FROM config;'; this._conn.execQuery(sql, this.onMainQueryDone.bind(this)); diff --git a/js/hedera/gui.scss b/js/hedera/gui.scss new file mode 100644 index 00000000..1240081a --- /dev/null +++ b/js/hedera/gui.scss @@ -0,0 +1,324 @@ +.vn-gui { + height: inherit; + + /* Font */ + + .user-name, + .menu-title { + font-size: 1.1em; + } + + /* Navigation bar */ + + .navbar { + position: fixed; + background-color: #1A1A1A; + left: 250px; + top: 0; + right: 0; + z-index: 1; + overflow: hidden; + height: 64px; + color: white; + + transition-property: left, background-color, transform; + transition-duration: 200ms; + transition-timing-function: ease-in-out; + } + .menu-button { + position: absolute; + left: 0; + display: none; + border: none; + background-color: transparent; + padding: 0 1em; + margin: 0; + height: 100%; + } + .menu-button:hover { + background-color: rgba(0, 0, 0, .2); + } + .menu-button img { + vertical-align: middle; + height: 1.8em; + } + .title { + float: left; + } + .title h1 { + font-weight: normal; + font-size: 1.4em; + padding: .8em .6em; + padding-right: .3em; + margin: 0; + } + .navbar > .htk-spinner { + float: left; + margin: 1.05em .8em; + } + + /* Action bar */ + + .action-bar { + float: right; + padding: 0; + margin: 0; + height: 100%; + } + .action-bar > div { + padding: 0; + margin: 0; + height: 100%; + display: flex; + align-items: center; + padding: 0 1em; + gap: .5em; + } + .action-bar > div > * { + float: right; + } + .action-bar button { + margin: 0; + padding: .6em; + } + .action-bar button:hover { + background-color: rgba(2550, 255, 255, .2); + } + + /* Background */ + + & > .background { + z-index: 10; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + visibility: hidden; + background-color: rgba(1, 1, 1, .7); + opacity: 0; + } + & > .background.show { + visibility: visible; + transition: opacity 200ms ease-out; + opacity: 1; + } + + /* Left panel */ + + .left-panel { + z-index: 20; + position: fixed; + left: 0; + bottom: 0; + top: 0; + background-color: white; + z-index: 20; + width: 250px; + } + .menu-overflow { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 4em; + overflow: auto; + } + .menu-header { + background-color: #1A1A1A; + color: white; + height: 64px; + display: flex; + } + .logo { + display: block; + width: 160px; + margin-left: 37px; + } + .user-info > div { + display: flex; + justify-content: space-between; + align-items: center; + overflow: hidden; + font-weight: bold; + border: 1px solid #eaeaea; + margin: 25px; + + & > span { + padding: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .logout { + display: block; + margin: 0; + text-align: left; + + &:hover { + background-color: #1a1a1a; + color: white; + } + } + &.supplant { + display: none; + } + } + + /* Test link */ + + .test-link { + display: none; + margin: .5em; + background-color: #3f51b5; + color: white; + padding: 0 1em; + line-height: 2em; + border-radius: .1em; + text-align: center; + } + .test-link:hover { + background-color: #4f61c5; + } + .dev-info { + display: none; + padding: .3em .5em; + color: white; + background-color: #3f51b5; + font-size: .9em; + margin: .5em; + border-radius: .1em; + } + .dev-info > p { + margin: .2em 0; + } + .dev-info > .mode { + color: #BBF; + } + + /* Menu */ + + .main-menu, + ul.submenu { + list-style-type: none; + padding: 0; + margin: 0; + } + .main-menu > li { + display: block; + padding: 0; + margin: 0; + width: 100%; + } + .main-menu a { + width: 70%; + padding: 0 15%; + display: block; + line-height: 2.8em; + } + .main-menu a:hover, + .main-menu a.selected { + background-color: rgba(1, 1, 1, .1); + } + ul.submenu { + display: none; + } + ul.submenu.popup { + display: inline; + position: fixed; + border: none; + border-radius: 1px; + background-color: white; + box-shadow: 0 0 .3em rgba(1, 1, 1, .3); + z-index: 50; + width: 13em; + max-height: 30em; + } + + /* Social */ + + .menu-footer { + position: absolute; + bottom: 0; + right: 0; + left: 0; + } + + /* Body */ + + & > .body { + margin-left: 250px; + padding-top: 4.4em; + height: inherit; + box-sizing: border-box; + height: inherit; + + transition-property: margin-left, margin-right; + transition-duration: 200ms; + } + .form-holder { + position: relative; + height: inherit; + + opacity: 0; + transform: translateZ(0) translateX(-2em); + -webkit-transform: translateZ(0) translateX(-2em); + + transition-property: opacity, transform; + transition-duration: 200ms; + transition-timing-function: ease-out; + } + .form-holder.show { + opacity: 1; + transform: translateZ(0) translateX(0em); + -webkit-transform: translateZ(0) translateX(0em); + } + + /* Mobile */ + + @media (max-width: 960px) { + .action-bar span.label, + .htk-button > .text { + display: none; + } + & > .navbar { + padding-left: 2.8em; + left: 0; + } + & > .body { + margin-left: 0; + } + .menu-button { + display: block; + } + .left-panel { + top: 0; + left: -250px; + box-shadow: 0 0 .2em rgba(1, 1, 1, .3); + + transition: transform 200ms ease-out; + -webkit-transition: transform 200ms ease-out; + } + .left-panel.show { + transform: translateZ(0) translateX(250px); + -webkit-transform: translateZ(0) translateX(250px); + } + .form-holder { + left: 0; + } + ul.submenu { + display: block; + background-color: #888; + color: white; + box-shadow: inset 0 0 .2em rgba(1, 1, 1, .2); + overflow: hidden; + + max-height: 0; + transition: max-height 300ms ease-out; + webkit-transition: max-height 300ms ease-out; + } + .main-menu li:hover > ul.submenu { + max-height: 20em; + } + } +} diff --git a/js/hedera/gui.xml b/js/hedera/gui.xml index ec5c53fc..9b7a922d 100644 --- a/js/hedera/gui.xml +++ b/js/hedera/gui.xml @@ -3,7 +3,7 @@ <div id="top-bar" class="navbar"> <div id="action-bar" class="action-bar"/> <button id="menu-button" class="menu-button"> - <img src="image/icon/dark/menu.svg" alt="_Menu"/> + <htk-icon name="menu" alt="_Menu"/> </button> <div id="title" class="title"/> <htk-spinner id="loader" class="loader dark"/> @@ -14,21 +14,22 @@ <img class="logo" src="image/logo-dark.svg" alt="Verdnatura"/> </div> <div class="user-info"> - <img src="image/icon/light/access-log.svg" alt=""/> - <t>Hello</t>, <span id="user-name"/> + <div> + <span id="user-name"/> + <button class="logout" on-click="onLogoutClick"> + <htk-icon name="logout" alt="_Exit"/> + </button> + </div> + <div id="supplant" class="supplant"> + <span id="supplanted"/> + <button class="logout" on-click="onSupplantExitClick"> + <htk-icon name="logout" alt="_Exit"/> + </button> + </div> </div> <ul id="main-menu" class="main-menu"/> - <button class="logout" on-click="onLogoutClick"> - <t>Exit</t> - </button> </div> <div class="menu-footer"> - <div id="supplant" class="supplant"> - <button class="supplant-logout" on-click="onSupplantExitClick" title="_Exit"> - <img src="image/icon/light/exit.svg" alt="_Exit"/> - </button> - <p id="supplanted"/> - </div> <div id="dev-info" class="dev-info"> <p class="mode">Testing</p> <p><t>Version</t> <span id="version"/></p> diff --git a/js/hedera/hedera.js b/js/hedera/hedera.js index 051c3cb2..0b36aa01 100644 --- a/js/hedera/hedera.js +++ b/js/hedera/hedera.js @@ -1,16 +1,17 @@ -require ('htk/htk'); -require ('./style.css'); +require('htk/htk'); +require('./responsive.scss'); +require('./style.scss'); Hedera = module.exports = { - Login : require ('./login') - ,SocialBar : require ('./social-bar') - ,Gui : require ('./gui') - ,Module : require ('./module') - ,Form : require ('./form') - ,Report : require ('./report') - ,App : require ('./app') - ,Tpv : require ('./tpv') - ,BasketChecker : require ('./basket-checker') + Login : require('./login') + ,SocialBar : require('./social-bar') + ,Gui : require('./gui') + ,Module : require('./module') + ,Form : require('./form') + ,Report : require('./report') + ,App : require('./app') + ,Tpv : require('./tpv') + ,BasketChecker : require('./basket-checker') }; diff --git a/js/hedera/login.css b/js/hedera/login.css deleted file mode 100644 index 02dc3763..00000000 --- a/js/hedera/login.css +++ /dev/null @@ -1,225 +0,0 @@ - -.vn-login -{ - color: #333; - font-size: 1.1em; - font-weight: normal; - height: inherit; - background-color: white; -} - -/* Body */ - -.vn-login .body -{ - height: inherit; -} -.vn-login .column -{ - position: relative; - margin: 0 auto; - max-width: 40em; - height: inherit; - background-color: white; - min-height: -} - -/* Login */ - -.vn-login .login -{ - position: relative; - height: inherit; - max-width: 18em; - margin: 0 auto; -} -.vn-login form -{ - position: absolute; - top: 50%; - margin-top: -380px; - width: 100%; - padding: 2em 0; -} -.vn-login form > div -{ - margin: 1em 0; -} -.vn-login p -{ - margin: .4em 0; -} - -/* Header */ - -.vn-login .header -{ - margin-bottom: 80px; -} -.vn-login .header img -{ - display: block; - width: 100%; -} -.vn-login .version-code -{ - color: red; - text-align: right; - margin: .2em auto; - font-weight: bold; - height: 1.4em; - display: none; -} - -/* Body */ - -.vn-login .form-inputs -{ - margin: 0 auto; - max-width: 15em; -} -.vn-login label -{ - margin: 0; -} -.vn-login .form-group label -{ - display: block; - font-size: inherit; -} -.vn-login .remind-block { - margin: 20px 0; -} -.vn-login .remind-forgot { - margin: 40px 0; -} -.vn-login input -{ - margin: 0.3em; -} -.vn-login input[type=text], -.vn-login input[type=password] -{ - margin: 0; - padding: 0 .5em; - width: 100%; - border-bottom: 1px solid #AAA; - height: 2.6em; -} -.vn-login input[type=text], -.vn-login input[type=password], -.vn-login input[type=submit], -.vn-login input[type=button], -.vn-login input[type=reset], -.vn-login button, -.vn-login .button -{ - border-radius: .1em; -} -.vn-login input[type=checkbox] -{ - padding: 0; - margin: 0; - width: initial; - height: initial; - margin-right: .5em; -} -.vn-login input[type=submit], -.vn-login input[type=button], -.vn-login input[type=reset], -.vn-login button, -.vn-login .button -{ - margin: 0 auto; - background-color: #0d1115; - border-radius: 25px; - height: 50px; - width: 100%; - color: white; - transition: transform 200ms ease-out; - transition-property: background-color; -} -.vn-login input[type=submit]:hover, -.vn-login input[type=button]:hover, -.vn-login input[type=reset]:hover, -.vn-login button:hover, -.vn-login .button:hover -{ - background-color: #7d8185; -} -.vn-login .button.guest -{ - margin-top: 15px; - border: 1px solid #0d1115; - background-color: white; - color: #0d1115; -} -.vn-login .button.guest:hover -{ - border-color: #7d8185; - background-color: #7d8185; - color: white; -} -hr -{ - border: solid 1px #333; - margin: 0; - padding: 0; - display: block; -} -.vn-login .enter -{ - position: relative; -} -.vn-login .wrapper -{ - width: 0; - overflow: visible; - position: absolute; - top: 0; - right: 0; -} -.vn-login .htk-spinner -{ - margin: .3em 1em; - position: absolute; -} - -/* Footer */ - -.vn-login .footer -{ - margin-top: 80px; - font-size: 14px; - text-align: center; -} -.vn-login .contact -{ - margin-top: 15px; - color: grey; -} -.vn-login .footer a -{ - font-weight: bold; -} - -@media (max-height: 50em) -{ - .vn-login .column - { - min-height: 45em; - } - .vn-login .login - { - display: flex; - align-items: center; - } - .vn-login form - { - top: 0; - position: relative; - margin-top: 0; - padding-top: 5.5em; - } -} - diff --git a/js/hedera/login.js b/js/hedera/login.js index 744acf5b..0f4bea00 100644 --- a/js/hedera/login.js +++ b/js/hedera/login.js @@ -1,6 +1,6 @@ -require('./login.css'); -var Tpl = require('./login.xml'); +require('./login.scss'); +var Tpl = require('./login.xml').default; module.exports = new Class({ Extends: Htk.Component, diff --git a/js/hedera/login.scss b/js/hedera/login.scss new file mode 100644 index 00000000..2ca34cda --- /dev/null +++ b/js/hedera/login.scss @@ -0,0 +1,148 @@ + +.vn-login { + display: flex; + align-items: center; + justify-content: center; + color: #333; + font-size: 1.1em; + font-weight: normal; + height: inherit; + background-color: white; + + a:hover { + text-decoration: underline; + } + input { + margin: .3em; + } + input[type=text], + input[type=password] { + margin: 0; + padding: 0 5px; + width: 100%; + height: 2.6em; + border-radius: 0; + border-top: none; + border-left: none; + border-right: none; + background-color: none; + } + input[type=checkbox] { + padding: 0; + margin: 0; + width: initial; + height: initial; + margin-right: .5em; + } + input[type=submit], + input[type=button], + input[type=reset], + button, + .button { + margin: 0 auto; + background-color: #0d1115; + border-radius: 25px; + height: 50px; + width: 100%; + color: white; + transition: transform 200ms ease-out; + transition-property: background-color; + + &:hover { + background-color: #3d3f42; + } + } + @media (max-height: 50em) { + height: initial; + } +} + +.vn-login > .column { + max-width: 300px; + + & > .header { + margin-top: 60px; + margin-bottom: 80px; + + img { + display: block; + width: 100%; + } + .version-code { + color: red; + text-align: right; + margin: .2em auto; + font-weight: bold; + height: 1.4em; + display: none; + } + } + & > .footer { + margin-bottom: 60px; + margin-top: 80px; + font-size: 14px; + text-align: center; + + .contact { + margin-top: 15px; + color: grey; + } + a { + font-weight: bold; + } + } + & > form { + & > div { + margin: 20px 0; + } + p { + margin: 5px 0; + } + label { + margin: 0; + } + & > .form-group > label { + display: block; + font-size: 14px; + } + & > .remind-block { + margin-top: 20px; + margin-bottom: 40px; + } + .button.guest { + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #0d1115; + background-color: white; + color: #0d1115; + text-decoration: none; + + &:hover { + border-color: rgba(0, 0, 0, .8); + background-color: rgba(0, 0, 0, .8); + color: white; + } + } + .password-forgotten { + text-align: center; + font-size: 14px; + margin-top: 30px; + } + .enter { + position: relative; + } + .wrapper { + width: 0; + overflow: visible; + position: absolute; + top: 0; + right: 0; + } + .htk-spinner { + margin: .3em 1em; + position: absolute; + } + } +} + diff --git a/js/hedera/login.xml b/js/hedera/login.xml index 291b60d3..463b7373 100644 --- a/js/hedera/login.xml +++ b/js/hedera/login.xml @@ -1,13 +1,11 @@ <vn> <div id="main" class="vn-login"> - <div class="body"> - <div class="column"> - <div class="login"> + <div class="column"> + <div class="header"> + <img src="image/logo.svg" alt="VerdNatura"/> + <div class="version-code"/> + </div> <form id="form"> - <div class="header"> - <img src="image/logo.svg" alt=""/> - <div class="version-code"/> - </div> <div class="form-group"> <label> <t>User</t> @@ -20,20 +18,11 @@ <input type="password" id="pass" name="password"/> </label> </div> - <div class="remind-forgot"> - <div class="remind-block"> - <label> - <input type="checkbox" id="remember" name="remember"/> - <t>Remind me</t> - </label> - </div> - <div class="remind-block"> - <p> - <a href="#" on-click="onPasswordLost"> - <t>Password forgotten? Push here</t> - </a> - </p> - </div> + <div class="remind-block"> + <label> + <input type="checkbox" id="remember" name="remember"/> + <t>Remind me</t> + </label> </div> <div class="enter"> <input id="submit" type="submit" value="_Login"/> @@ -41,24 +30,25 @@ <htk-spinner id="spinner"/> </div> </div> - <a class="button guest" href="#!form=cms/home&guest=true"> - <t>Log in as guest</t> - </a> - <div class="footer"> - <p> - <t>Yet you are not a customer?</t> - <a href="_Sign up link" target="_blank"><t>Sign up</t></a> - </p> - <p class="contact"> - <p>Tel. <t>Login phone</t> - <t>Login mail</t></p> - </p> - <!-- - <htk-social-bar id="social-bar" priority="1"/> - <div id="social" class="social"/> - --> + <div> + <a class="button guest" href="#!form=cms/home&guest=true"> + <t>Log in as guest</t> + </a> </div> + <p class="password-forgotten"> + <a href="#" on-click="onPasswordLost"> + <t>Password forgotten? Push here</t> + </a> + </p> </form> - </div> + <div class="footer"> + <p> + <t>Yet you are not a customer?</t> + <a href="_Sign up link" target="_blank"><t>Sign up</t></a> + </p> + <p class="contact"> + Tel. <t>Login phone</t> - <t>Login mail</t> + </p> </div> </div> </div> diff --git a/js/hedera/poppins.ttf b/js/hedera/poppins.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9f0c71b70a49664ced448c63edc9c4ff2bf8cf4a GIT binary patch literal 158240 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 literal 0 HcmV?d00001 diff --git a/js/hedera/report.css b/js/hedera/report.css index e2cbfd99..2fd9b179 100644 --- a/js/hedera/report.css +++ b/js/hedera/report.css @@ -1,8 +1,8 @@ @font-face { - font-family: 'Roboto'; - src: url('roboto.ttf') format('truetype'); + font-family: 'Roboto'; + src: url('roboto.ttf') format('truetype'); } @media print { diff --git a/js/hedera/responsive.scss b/js/hedera/responsive.scss new file mode 100644 index 00000000..444471a6 --- /dev/null +++ b/js/hedera/responsive.scss @@ -0,0 +1,54 @@ + + +/* Responsive */ + +/* Standard */ +@media screen { + body { font-size: 10pt; } +} + +/* Desktop - Laptop 1360x768 */ +@media (max-resolution: 119dpi) and (min-device-width: 1340px) and (max-device-width: 1899px) { + body { font-size: 10pt; } +} + +/* Desktop - FHD 1920x1080 */ +@media (max-resolution: 119dpi) and (min-device-width: 1900px) { + body { font-size: 13pt; } +} + +/* Mobile - Low DPI */ +@media + (min-resolution: 120dpi), + (-webkit-min-device-pixel-ratio: 1.5) { + body { font-size: 9pt; } +} +@media + (min-resolution: 144dpi), + (-webkit-min-device-pixel-ratio: 1.5) { + body { font-size: 11pt; } +} + +/* Mobile - Normal DPI */ +@media + (max-device-width: 383px) and (min-resolution: 192dpi), + (max-device-width: 383px) and (-webkit-min-device-pixel-ratio: 2) { + body { font-size: 10pt; } +} +@media + (min-device-width: 384px) and (min-resolution: 192dpi), + (min-device-width: 384px) and (-webkit-min-device-pixel-ratio: 2) { + body { font-size: 11pt; } +} + +/* Mobile - High DPI */ +@media + (max-device-width: 411px) and (min-resolution: 249dpi), + (max-device-width: 411px) and (-webkit-min-device-pixel-ratio: 3) { + body { font-size: 10pt; } +} +@media + (min-device-width: 412px) and (min-resolution: 249dpi), + (min-device-width: 412px) and (-webkit-min-device-pixel-ratio: 3) { + body { font-size: 11pt; } +} diff --git a/js/hedera/style.css b/js/hedera/style.scss similarity index 59% rename from js/hedera/style.css rename to js/hedera/style.scss index c0ac9c34..e91c6804 100644 --- a/js/hedera/style.css +++ b/js/hedera/style.scss @@ -1,77 +1,13 @@ -@font-face -{ - font-family: 'Roboto'; - src: url('roboto.ttf') format('truetype'); -} - -/* Responsive */ - -/* Standard */ -@media screen -{ - body { font-size: 10pt; } -} - -/* Desktop - Laptop 1360x768 */ -@media (max-resolution: 119dpi) and (min-device-width: 1340px) and (max-device-width: 1899px) -{ - body { font-size: 10pt; } -} - -/* Desktop - FHD 1920x1080 */ -@media (max-resolution: 119dpi) and (min-device-width: 1900px) -{ - body { font-size: 13pt; } -} - -/* Mobile - Low DPI */ -@media - (min-resolution: 120dpi), - (-webkit-min-device-pixel-ratio: 1.5) -{ - body { font-size: 9pt; } -} -@media - (min-resolution: 144dpi), - (-webkit-min-device-pixel-ratio: 1.5) -{ - body { font-size: 11pt; } -} - -/* Mobile - Normal DPI */ -@media - (max-device-width: 383px) and (min-resolution: 192dpi), - (max-device-width: 383px) and (-webkit-min-device-pixel-ratio: 2) -{ - body { font-size: 10pt; } -} -@media - (min-device-width: 384px) and (min-resolution: 192dpi), - (min-device-width: 384px) and (-webkit-min-device-pixel-ratio: 2) -{ - body { font-size: 11pt; } -} - -/* Mobile - High DPI */ -@media - (max-device-width: 411px) and (min-resolution: 249dpi), - (max-device-width: 411px) and (-webkit-min-device-pixel-ratio: 3) -{ - body { font-size: 10pt; } -} -@media - (min-device-width: 412px) and (min-resolution: 249dpi), - (min-device-width: 412px) and (-webkit-min-device-pixel-ratio: 3) -{ - body { font-size: 11pt; } +@font-face { + font-family: 'Poppins'; + src: url('poppins.ttf') format('truetype'); } /* Global */ -body -{ - font-family: 'Roboto', 'Verdana', 'Sans'; +body { + font-family: 'Poppins', 'Verdana', 'Sans'; background-color: #FAFAFA; color: #333; position: absolute; @@ -86,88 +22,77 @@ button, input, select, textarea, -option -{ +option { font-size: inherit; font-family: inherit; color: inherit; } -iframe -{ +iframe { border: none; } -fieldset -{ +fieldset { margin: 0; } -form -{ +form { padding: 0; margin: 0; } -table -{ +table { width: 100%; } a:link, a:visited, -a:active -{ +a:active { color: inherit; text-decoration: none; } -a:hover -{ +a:hover { text-decoration: none; cursor: pointer; } -a img -{ +a img { padding: 1px; } -a img:hover -{ +a img:hover { opacity: 0.9; } -h1, h2, h3, h4, h5, h6 -{ +h1, h2, h3, h4, h5, h6 { margin: 0; padding: .2em 0; } -h1 -{ +h1 { font-size: 1.5em; } -h2 -{ +h2 { font-size: 1.2em; } -p -{ +p { margin: 0.8em 0; } /* Focus outline */ -a:focus, -input:focus, -button:focus -{ +a:focus { outline: 1px solid rgba(1, 1, 1, 0.15); -moz-outline-radius: .1em; } +input:focus, +button:focus { + outline: 0; +} button::-moz-focus-inner, input[type=submit]::-moz-focus-inner, input[type=button]::-moz-focus-inner, -input[type=reset]::-moz-focus-inner -{ +input[type=reset]::-moz-focus-inner { border: none; } -select:-moz-focusring -{ +select:-moz-focusring { /* color: transparent; text-shadow: 0 0 0 #333;*/ } +input:-webkit-autofill { + -webkit-box-shadow: inset 0 0 0px 9999px white; +} /* Inputs */ @@ -177,71 +102,62 @@ input[type=file], input[type=number], textarea, select, -.input -{ - border: none; - border-bottom: 1px solid #999; +.input { + border: 1px solid #ddd; + transition: border-color 100ms ease-in; margin: .2em 0; box-sizing: border-box; color: #333; border-radius: 0; text-align: left; width: 100%; + + &:focus { + border-color: #333; + } } input[type=text], input[type=password], input[type=number], textarea, -.input -{ - padding: 0 .2em; +.input, +select { + padding: .8em; } input[type=text], input[type=password], input[type=file], input[type=number], select, -.input -{ - height: 2.2em; +.input { + height: 2.8em; } -textarea -{ +textarea { height: 3.5em; width: 20em; } -input[type=text]:focus, -input[type=password]:focus, -input[type=file]:focus, -input[type=number]:focus, -textarea:focus, -.input:focus -{ - border-color: #333; +input[type=text]:disabled { + background-color: #f3f3f3; } input[type=checkbox], -input[type=radio] -{ +input[type=radio] { cursor: pointer; - margin: .2em; padding: .3em; + margin-right: .6em; } -select -{ +select { background-color: white; -moz-appearance: none; appearance: none; } -option -{ +option { padding: .4em; border-width: 0; font-weight: normal; font-size: 1em; } select, -option -{ +option { cursor: pointer; } @@ -251,17 +167,16 @@ input[type=submit], input[type=button], input[type=reset], button, -.button -{ +.button { border: none; background-color: transparent; padding: .5em; cursor: pointer; border-radius: 0.1em; margin: -0.5em; + font-weight: bold; } -.button -{ +.button { display: inline-block; text-align: center; box-sizing: border-box; @@ -270,16 +185,14 @@ input[type=submit]:hover, input[type=button]:hover, input[type=reset]:hover, button:hover, -.button:hover -{ +.button:hover { background-color: rgba(1, 1, 1, 0.1); } /* Flat button */ button.flat, -.button.flat -{ +.button.flat { border: none; border-radius: 0.1em; box-shadow: 0 0.2em 0.2em #DDD; @@ -287,14 +200,12 @@ button.flat, color: black; } button.flat:hover, -.button.flat:hover -{ +.button.flat:hover { background-color: #9C3; cursor: pointer; } button.flat:disabled, -.button.flat:disabled -{ +.button.flat:disabled { color: gray; } @@ -304,60 +215,62 @@ input[type=submit].thin, input[type=button].thin, input[type=reset].thin, button.thin, -.button.thin -{ +.button.thin { color: #008D77; - border-radius: .5em; - background-color: rgba(0, 0, 0, .1); + border-radius: 1.4em; + padding: .5em 1.4em; + background-color: rgba(255, 255, 255, .1); + font-weight: bold; } input[type=submit].thin:disabled, input[type=button].thin:disabled, input[type=reset].thin:disabled, button.thin:disabled -.button.thin:disabled -{ +.button.thin:disabled { color: gray; } +input[type=submit].thin:hover, +input[type=button].thin:hover, +input[type=reset].thin:hover, +button.thin:hover +.button.thin:hover { + background-color: rgba(0, 0, 0, .1); +} /* Image */ -img.editable -{ +img.editable { cursor: pointer; } /* Button */ -.htk-button img -{ +.htk-button img { height: 1.5em; } /* Float */ -.clear -{ +.clear { clear: both !important; } /* Box */ -.box -{ +.box { background-color: white; margin: 0 auto; - border-radius: .8em; + border-radius: .6em; box-shadow: .05em .05em .2em rgba(0, 0, 0, .1); + overflow: hidden; } -.box .header -{ +.box .header { padding: 0.6em 0.8em; margin: 0; background-color: #009688; color: white; } -.box .header > h1 -{ +.box .header > h1 { color: white; text-align: left; font-size: 1.6em; @@ -365,31 +278,28 @@ img.editable font-weight: normal; display: inline; } -.box .body -{ +.box .body { padding: 2em; } /* Form */ -.form -{ +.form { margin: 0 auto; } -.form-group -{ +.form > h2 { + margin-bottom: .8em; +} +.form-group { margin-bottom: 1.2em; } -.form-group:last-child -{ +.form-group:last-child { margin-bottom: 0; } -.form-group > label -{ +.form-group > label { display: block; margin: 0; margin-bottom: .2em; - font-size: .9em; color: #222; } .form-group > input[type=text], @@ -397,52 +307,44 @@ img.editable .form-group > input[type=file], .form-group > input[type=number], .form-group > select, -.form-group > textarea -{ +.form-group > textarea { margin: 0; width: 100%; } /* Form */ -table.form -{ +table.form { padding: 1em; border-collapse: separate; border-spacing: 0.3em; } -table.form td.label -{ +table.form td.label { width: 45%; text-align: right; } -table.form tr -{ +table.form tr { height: 2.8em; } /* Icon */ -img.icon -{ +img.icon { height: 1.5em; } /* Masonry */ -.masonry -{ +.masonry { margin: 0 auto; text-align: left; } -.masonry-box -{ +.masonry-box { width: 100%; display: inline-block; vertical-align: top; } -@media screen and (min-width: 1000px) and (max-width: 1399px) -{ +@media screen and (min-width: 1000px) and (max-width: 1399px) { .masonry-box { width: 50%; @@ -456,28 +358,23 @@ img.icon clear: right; } } -@media screen and (min-width: 1400px) -{ +@media screen and (min-width: 1400px) { .masonry-box { width: 33.3%; } } -@media screen and (min-width: 2000px) -{ +@media screen and (min-width: 2000px) { .masonry-box { width: 25%; } } /* Social bar */ -.htk-social-bar -{ +.htk-social-bar { text-align: center; } -.htk-social-bar a -{ +.htk-social-bar a { display: inline-block; margin: 0 .1em; } -.htk-social-bar img -{ +.htk-social-bar img { height: 1.8em; width: 1.8em; } diff --git a/js/htk/assistant-bar.js b/js/htk/assistant-bar.js index 420872cd..0f944549 100644 --- a/js/htk/assistant-bar.js +++ b/js/htk/assistant-bar.js @@ -40,41 +40,35 @@ module.exports = new Class({ render: function() { var bar = this.createRoot('div'); bar.className = 'htk-assistant-bar'; - - var previousButton = this.createElement('button'); - previousButton.className = 'previous'; - previousButton.title = _('Previous'); + + var previousButton = new Htk.Button({ + icon: 'arrow_back_ios', + tip: 'Previous' + }).node; + previousButton.classList.add('previous'); previousButton.addEventListener('click', this.movePrevious.bind(this)); bar.appendChild(previousButton); - var img = this.createElement('img'); - img.src = 'image/icon/light/go-previous.svg'; - previousButton.appendChild(img); - var steps = this.createElement('div'); steps.className = 'steps'; bar.appendChild(steps); - var nextButton = this.createElement('button'); - nextButton.className = 'next'; - nextButton.title = _('Next'); + var nextButton = new Htk.Button({ + icon: 'arrow_forward_ios', + tip: 'Next' + }).node; + nextButton.classList.add('next'); nextButton.addEventListener('click', this.moveNext.bind(this)); bar.appendChild(nextButton); - var img = this.createElement('img'); - img.src = 'image/icon/light/go-next.svg'; - nextButton.appendChild(img); - - var endButton = this.createElement('button'); - endButton.className = 'end'; - endButton.title = _('Confirm'); + var endButton = new Htk.Button({ + icon: 'done', + tip: 'Confirm' + }).node; + endButton.classList.add('end'); endButton.addEventListener('click', this.end.bind(this)); bar.appendChild(endButton); - var img = this.createElement('img'); - img.src = 'image/icon/light/ok.svg'; - endButton.appendChild(img); - this._steps = steps; this._previousButton = previousButton; this._nextButton = nextButton; diff --git a/js/htk/column/button.js b/js/htk/column/button.js index e799a121..ac14262b 100644 --- a/js/htk/column/button.js +++ b/js/htk/column/button.js @@ -9,13 +9,10 @@ module.exports = new Class({ }, icon: { type: String - ,set: function(x) - { + ,set: function(x) { this._icon = x; - this.image = 'image/icon/light/'+ x +'.svg'; } - ,get: function() - { + ,get: function() { return this._icon; } }, @@ -60,13 +57,14 @@ module.exports = new Class({ button.disabled = this.disabled; td.appendChild(button); - var img = this.createElement('img'); - img.src = this.image; - button.appendChild(img); + var span = this.createElement('span'); + span.className = 'material-symbols-rounded icon'; + span.innerText = this._icon; + button.appendChild(span); if (this.tip) { button.title = _(this.tip); - img.title = _(this.tip); + span.title = _(this.tip); } return td; diff --git a/js/htk/field/bar-button.js b/js/htk/field/bar-button.js index e3554136..cdb0c1a4 100644 --- a/js/htk/field/bar-button.js +++ b/js/htk/field/bar-button.js @@ -1,22 +1,10 @@ -var Button = require ('./button'); +var Button = require('./button'); module.exports = new Class ({ Extends: Button ,Tag: 'htk-bar-button' - ,Properties: - { - icon: - { - type: String - ,set: function (x) - { - this.img.src = 'image/icon/dark/'+ x +'.svg'; - } - - } - } ,_showText: true }); diff --git a/js/htk/field/button.js b/js/htk/field/button.js index 5eb89c3d..a812f43a 100644 --- a/js/htk/field/button.js +++ b/js/htk/field/button.js @@ -1,54 +1,42 @@ -module.exports = new Class -({ +module.exports = new Class({ Extends: Htk.Field ,Tag: 'htk-button' ,Properties: { - image: - { + image: { type: String - ,set: function (x) - { - this.img.src = x; + ,set: function(x) { + this.span.innerText = x; } }, - icon: - { + icon: { type: String - ,set: function (x) - { - this.img.src = 'image/icon/light/'+ x +'.svg'; + ,set: function(x) { + this.span.innerText = x; } }, - tip: - { + tip: { type: String - ,set: function (x) - { - if (x) - { + ,set: function(x) { + if (x) { this.node.title = _(x); - this.img.title = _(x); + this.span.title = _(x); } - this.renderContent (); + this.renderContent(); } - ,get: function () - { + ,get: function() { return this.node.title; } }, - showText: - { + showText: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._showText = x; - this.renderContent (); + this.renderContent(); } - ,get: function () - { + ,get: function() { return this._showText; } } @@ -56,31 +44,29 @@ module.exports = new Class ,_showText: false - ,render: function () - { - var node = this.createRoot ('button'); + ,render: function() { + var node = this.createRoot('button'); node.className = 'htk-button'; - node.addEventListener ('click', this.onClick.bind (this)); + node.addEventListener('click', this.onClick.bind(this)); - this.img = this.createElement ('img'); - node.appendChild (this.img); + this.span = this.createElement('span'); + this.span.className = 'material-symbols-rounded icon'; + node.appendChild(this.span); } - ,renderContent: function () - { + ,renderContent: function() { if (this._textNode) - Vn.Node.remove (this._textNode); + Vn.Node.remove(this._textNode); - if (this._showText && this.node.title) - { - this._textNode = this.createElement ('span'); - this._textNode.appendChild (this.createTextNode (this.node.title)); - this.node.appendChild (this._textNode); + if (this._showText && this.node.title) { + this._textNode = this.createElement('span'); + this._textNode.className = 'text'; + this._textNode.appendChild(this.createTextNode(this.node.title)); + this.node.appendChild(this._textNode); } } - ,onClick: function () - { - this.signalEmit ('click', this._form); + ,onClick: function() { + this.signalEmit('click', this._form); } }); diff --git a/js/htk/field/entry.js b/js/htk/field/entry.js index a6970f3a..6f6fbd9b 100644 --- a/js/htk/field/entry.js +++ b/js/htk/field/entry.js @@ -3,16 +3,56 @@ module.exports = new Class ({ Extends: Htk.Field ,Tag: 'htk-entry' - - ,render: function () + ,Properties: { - var node = this.createRoot ('input'); + /** + * Displayed text when there is no content. + */ + placeholder: + { + type: String + ,set: function(x) { + this.node.placeholder = x; + } + ,get: function() { + return this.node.placeholder; + } + }, + /** + * Whether is disabled. + */ + disabled: + { + type: Boolean + ,set: function(x) { + this.node.disabled = x; + } + ,get: function() { + return this.node.disabled; + } + }, + /** + * Whether is readonly data. + */ + readonly: + { + type: Boolean + ,set: function(x) { + this.node.readonly = x; + } + ,get: function() { + return this.node.readonly; + } + } + } + + ,render: function() { + var node = this.createRoot('input'); node.type = 'text'; - node.addEventListener ('change', this._onChange.bind (this)); + node.addEventListener('change', this._onChange.bind(this)); } - ,_onChange: function (event) - { + ,_onChange: function(event) { var newValue; if (this.node.value == '') @@ -20,19 +60,17 @@ module.exports = new Class else newValue = this.node.value; - this.valueChanged (newValue); + this.valueChanged(newValue); } - ,putValue: function (value) - { + ,putValue: function(value) { if (!value) this.node.value = ''; else this.node.value = value; } - ,setEditable: function (editable) - { + ,setEditable: function(editable) { this.node.readOnly = !editable; } }); diff --git a/js/htk/grid.js b/js/htk/grid.js index 9964ddf4..03e6e99b 100644 --- a/js/htk/grid.js +++ b/js/htk/grid.js @@ -1,8 +1,7 @@ -var Widget = require ('./widget'); +var Widget = require('./widget'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Widget ,Tag: 'htk-grid' ,Child: 'model' @@ -14,9 +13,8 @@ module.exports = new Class model: { type: Db.Model - ,set: function (x) - { - this.link ({_model: x}, + ,set: function(x) { + this.link({_model: x}, { 'status-changed': this.onModelChange ,'row-deleted': this.onRowDelete @@ -25,14 +23,13 @@ module.exports = new Class ,'updatable-changed': this.onUpdatableChange }); - var set = new Db.SimpleIterator ({model: x}); - this.link ({_set: set}); + var set = new Db.SimpleIterator({model: x}); + this.link({_set: set}); - this.onUpdatableChange (); - this.onModelChange (); + this.onUpdatableChange(); + this.onModelChange(); } - ,get: function () - { + ,get: function() { return this._model; } }, @@ -50,13 +47,11 @@ module.exports = new Class showHeader: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._showHeader = x; this.thead.style.display = x ? 'table-header-group' : 'none'; } - ,get: function () - { + ,get: function() { return this._showHeader; } } @@ -64,209 +59,180 @@ module.exports = new Class ,_model: null ,_set: null - ,columns: new Array () + ,columns: new Array() ,internalColumn: null ,internalColumns: 0 ,sortColumn: -1 ,sortWay: null ,_showHeader: true - ,render: function () - { - var table = this.createRoot ('table'); + ,render: function() { + var table = this.createRoot('table'); table.className = 'htk-grid'; - var thead = this.createElement ('thead'); - table.appendChild (thead); + var thead = this.createElement('thead'); + table.appendChild(thead); - this.thead = this.createElement ('tr') - thead.appendChild (this.thead); + this.thead = this.createElement('tr') + thead.appendChild(this.thead); - this.tbody = this.createElement ('tbody'); - table.appendChild (this.tbody); + this.tbody = this.createElement('tbody'); + table.appendChild(this.tbody); } - ,appendChild: function (child) - { - this.appendColumn (child); + ,appendChild: function(child) { + this.appendColumn(child); } - ,removeClicked: function (column, value, row) - { - if (confirm (_('ReallyDelete'))) - this._model.deleteRow (row); + ,removeClicked: function(column, value, row) { + if (confirm(_('ReallyDelete'))) + this._model.deleteRow(row); } - ,onRowDelete: function (model, row) - { + ,onRowDelete: function(model, row) { var tableRows = this.tbody.childNodes; - this.tbody.removeChild (tableRows[row]); + this.tbody.removeChild(tableRows[row]); for (var i = row; i < tableRows.length; i++) tableRows[i].className = (i % 2) ? 'pair-row' : ''; - this.showNoRecordsFound (); + this.showNoRecordsFound(); } - ,onRowInsert: function (model) - { - this.buildRow (1); + ,onRowInsert: function() { + this.buildRow(1); } - ,renderCell: function (row, column, tr) - { + ,renderCell: function(row, column, tr) { if (column.columnIndex != -1) column.value = this._model.data[row][column.columnIndex]; - if (column.renderer) - { + if (column.renderer) { this._set.row = row; - column.renderer (column, this._set); + column.renderer(column, this._set); } - return column.render (tr); + return column.render(tr); } - ,refreshRow: function (row, columns) - { + ,refreshRow: function(row, columns) { var x = this.columns; var tr = this.tbody.childNodes[row]; for (var i = 0; i < x.length; i++) - if (x[i].renderer || columns.indexOf (x[i].columnIndex) != -1) - { - var cell = this.renderCell (row, x[i], tr); - tr.replaceChild (cell, tr.childNodes[i]); + if (x[i].renderer || columns.indexOf(x[i].columnIndex) != -1) { + var cell = this.renderCell(row, x[i], tr); + tr.replaceChild(cell, tr.childNodes[i]); } } - ,onRowUpdate: function (model, row, columns) - { - this.refreshRow (row, columns); + ,onRowUpdate: function(model, row, columns) { + this.refreshRow(row, columns); } - ,buildRow: function (count) - { - for (var i = 0; i < count; i++) - { - var tr = this.createElement ('tr'); + ,buildRow: function(count) { + for (var i = 0; i < count; i++) { + var tr = this.createElement('tr'); if (i % 2) tr.className = 'pair-row'; - for (var j = 0; j < this.columns.length; j++) - { - var cell = this.renderCell (i, this.columns[j], tr); - tr.appendChild (cell); + for (var j = 0; j < this.columns.length; j++) { + var cell = this.renderCell(i, this.columns[j], tr); + tr.appendChild(cell); } - this.tbody.appendChild (tr); + this.tbody.appendChild(tr); } } - ,onUpdatableChange: function () - { - if (this._model && this._model.updatable) - { - if (!this.internalColumn) - { - this.internalColumn = new Htk.ColumnButton - ({ + ,onUpdatableChange: function() { + if (this._model && this._model.updatable) { + if (!this.internalColumn) { + this.internalColumn = new Htk.ColumnButton({ icon: 'delete' ,tip: _('Remove') }); - this.internalColumn.on ('clicked', this.removeClicked, this); - this.insertInternalColumn (0, this.internalColumn); + this.internalColumn.on('clicked', this.removeClicked, this); + this.insertInternalColumn(0, this.internalColumn); } - } - else if (this.internalColumn) - { + } else if (this.internalColumn) { this.internalColumn = null; - this.removeInternalColumn (0); + this.removeInternalColumn(0); } } - ,onModelChange: function () - { + ,onModelChange: function() { var emptyMessage = this.emptyMessage ? this.emptyMessage : _('NoData'); - if (!this._model) - { - this.showMessage (emptyMessage, 'refresh.svg'); + if (!this._model) { + this.showMessage(emptyMessage, 'refresh'); return; } - this._node.removeChild (this.tbody); - this.tbody = this.createElement ('tbody'); + this._node.removeChild(this.tbody); + this.tbody = this.createElement('tbody'); - switch (this._model.status) - { + switch (this._model.status) { case Db.Model.Status.READY: { for (var i = 0; i < this.columns.length; i++) - this.columns[i].updateColumnIndex (this._model); + this.columns[i].updateColumnIndex(this._model); - this.buildRow (this._model.numRows); - this.showNoRecordsFound (); + this.buildRow(this._model.numRows); + this.showNoRecordsFound(); break; } case Db.Model.Status.LOADING: - this.showMessage (_('Loading'), null); + this.showMessage(_('Loading'), null); break; case Db.Model.Status.CLEAN: - this.showMessage (emptyMessage, 'refresh'); + this.showMessage(emptyMessage, 'refresh'); break; case Db.Model.Status.ERROR: - this.showMessage (_('ErrorLoadingData'), 'error'); + this.showMessage(_('ErrorLoadingData'), 'error'); break; } - this._node.appendChild (this.tbody); + this._node.appendChild(this.tbody); } - ,showNoRecordsFound: function () - { + ,showNoRecordsFound: function() { if (this._model.numRows == 0) - this.showMessage (_('EmptyList'), 'clean'); + this.showMessage(_('EmptyList'), 'block'); } - ,showMessage: function (message, src) - { + ,showMessage: function(message, src) { if (this.columns.length == 0) return; - var tr = this.createElement ('tr'); - this.tbody.appendChild (tr); + var tr = this.createElement('tr'); + this.tbody.appendChild(tr); - var td = this.createElement ('td'); + var td = this.createElement('td'); td.className = 'message'; td.colSpan = this.columns.length; - tr.appendChild (td); + tr.appendChild(td); - if (src) - { - var img = this.createElement ('img'); - img.alt = ''; - img.src = 'image/icon/light/'+ src +'.svg'; - td.appendChild (img); - } - else - { - var spinner = new Htk.Spinner (); - spinner.start (); - td.appendChild (spinner.node); + if (src) { + const icon = new Htk.Icon({ + name: src + }); + td.appendChild(icon.node); + } else { + var spinner = new Htk.Spinner(); + spinner.start(); + td.appendChild(spinner.node); } - var message = this.createTextNode (message); - td.appendChild (message); + var message = this.createTextNode(message); + td.appendChild(message); } - ,scrollToRow: function (row) - { - if (row >= 0) - { - var height = parseInt (this.tr.style.height); + ,scrollToRow: function(row) { + if (row >= 0) { + var height = parseInt(this.tr.style.height); this.node.scrollTop = (row - 2) * height; if (this.selectedRow) @@ -277,12 +243,10 @@ module.exports = new Class } } - ,sortModel: function (column) - { + ,sortModel: function(column) { var columnIndex = column.columnIndex; - if (this._model && columnIndex != -1) - { + if (this._model && columnIndex != -1) { if (this.sortColumn === columnIndex && this.sortWay === Db.Model.SortWay.ASC) this.sortWay = Db.Model.SortWay.DESC; @@ -291,112 +255,99 @@ module.exports = new Class this.sortColumn = columnIndex; - this._model.sort (columnIndex, this.sortWay); + this._model.sort(columnIndex, this.sortWay); } } - ,columnChanged: function (column, row, newValue) - { + ,columnChanged: function(column, row, newValue) { var columnIndex = column.columnIndex; if (columnIndex != -1) - this._model.setByIndex (row, columnIndex, newValue); + this._model.setByIndex(row, columnIndex, newValue); } - ,addColumn: function (pos, column) - { - var header = column.renderHeader (); + ,addColumn: function(pos, column) { + var header = column.renderHeader(); - if (pos == -1 || pos >= this.columns.length) - { - pos = this.columns.push (column) - 1; - this.thead.appendChild (header); - } - else - { - this.columns.splice (pos, 0, column); - this.thead.insertBefore (header, this.thead.childNodes[pos]); + if (pos == -1 || pos >= this.columns.length) { + pos = this.columns.push(column) - 1; + this.thead.appendChild(header); + } else { + this.columns.splice(pos, 0, column); + this.thead.insertBefore(header, this.thead.childNodes[pos]); } - header.addEventListener ('click', - this.sortModel.bind (this, column)); + header.addEventListener('click', + this.sortModel.bind(this, column)); header.title = _('Sort'); - column.on ('changed', this.columnChanged, this); + column.on('changed', this.columnChanged, this); var rows = this.tbody.childNodes; if (this._model && this._model.numRows > 0) - for (var i = 0; i < rows.length; i++) - { - var cell = this.renderCell (i, column, rows[i]); - rows[i].insertBefore (cell, rows[i].childNodes[pos+1]); + for (var i = 0; i < rows.length; i++) { + var cell = this.renderCell(i, column, rows[i]); + rows[i].insertBefore(cell, rows[i].childNodes[pos+1]); } return pos; } - ,insertInternalColumn: function (pos, column) - { + ,insertInternalColumn: function(pos, column) { if (pos < 0 || pos > this.internalColumns) pos = this.internalColumns; this.internalColumns++; - return this.addColumn (pos, column); + return this.addColumn(pos, column); } - ,insertColumn: function (pos, column) - { + ,insertColumn: function(pos, column) { if (pos > 0) pos += this.internalColumns; - return this.addColumn (pos, column) - this.internalColumns; + return this.addColumn(pos, column) - this.internalColumns; } - ,appendColumn: function (column) - { - return this.insertColumn (-1, column); + ,appendColumn: function(column) { + return this.insertColumn(-1, column); } - ,deleteColumn: function (pos) - { + ,deleteColumn: function(pos) { if (pos < 0 || pos >= this.columns.length) return; - this.columns.splice (pos, 1); - this.thead.removeChild (this.thead.childNodes[pos]); + this.columns.splice(pos, 1); + this.thead.removeChild(this.thead.childNodes[pos]); var rows = this.tbody.childNodes; if (this._model && this._model.numRows > 0) for (var i = 0; i < rows.length; i++) - rows[i].removeChild (rows[i].childNodes[pos]); + rows[i].removeChild(rows[i].childNodes[pos]); } - ,removeInternalColumn: function (pos) - { + ,removeInternalColumn: function(pos) { if (this.internalColumns == 0) return; if (pos < 0 || pos > this.internalColumns) pos = this.internalColumns; - this.deleteColumn (pos); + this.deleteColumn(pos); this.internalColumns--; } - ,removeColumn: function (pos) - { + ,removeColumn: function(pos) { if (pos > 0) pos += this.internalColumns; - this.deleteColumn (pos); + this.deleteColumn(pos); } - ,reloadModel: function () - { + ,reloadModel: function() { if (this._model != null) - this.onModelChange (); + this.onModelChange(); } }); diff --git a/js/htk/htk.js b/js/htk/htk.js index 29e11c30..5fe8cc2f 100644 --- a/js/htk/htk.js +++ b/js/htk/htk.js @@ -1,54 +1,54 @@ -require ('db/db'); -require ('./style.css'); +require('db/db'); +require('./style.scss'); Htk = module.exports = { - NodeBuilder : require ('./node-builder') - ,Widget : require ('./widget') - ,Component : require ('./component') - ,Popup : require ('./popup') - ,Dialog : require ('./dialog') - ,Toast : require ('./toast') - ,Repeater : require ('./repeater') - ,Grid : require ('./grid') - ,Spinner : require ('./spinner') - ,Icon : require ('./icon') - ,FullImage : require ('./full-image') - ,ImageEditor : require ('./image-editor') - ,Assistant : require ('./assistant') - ,AssistantBar : require ('./assistant-bar') - ,Step : require ('./step') - ,Loader : require ('./loader') - ,Field : require ('./field') - ,Column : require ('./column') + NodeBuilder : require('./node-builder') + ,Widget : require('./widget') + ,Component : require('./component') + ,Popup : require('./popup') + ,Dialog : require('./dialog') + ,Toast : require('./toast') + ,Repeater : require('./repeater') + ,Grid : require('./grid') + ,Spinner : require('./spinner') + ,Icon : require('./icon') + ,FullImage : require('./full-image') + ,ImageEditor : require('./image-editor') + ,Assistant : require('./assistant') + ,AssistantBar : require('./assistant-bar') + ,Step : require('./step') + ,Loader : require('./loader') + ,Field : require('./field') + ,Column : require('./column') }; var Fields = { - Text : require ('./field/text') - ,Html : require ('./field/html') - ,Entry : require ('./field/entry') - ,RadioGroup : require ('./field/radio-group') - ,Radio : require ('./field/radio') - ,Label : require ('./field/label') - ,TextArea : require ('./field/text-area') - ,Spin : require ('./field/spin') - ,Check : require ('./field/check') - ,Select : require ('./field/select') - ,Calendar : require ('./field/calendar') - ,DateChooser : require ('./field/date-chooser') - ,Image : require ('./field/image') - ,Button : require ('./field/button') - ,BarButton : require ('./field/bar-button') - ,Table : require ('./field/table') - ,SearchEntry : require ('./field/search-entry') - ,ColumnButton : require ('./column/button') - ,ColumnLink : require ('./column/link') - ,ColumnDate : require ('./column/date') - ,ColumnImage : require ('./column/image') - ,ColumnRadio : require ('./column/radio') - ,ColumnSpin : require ('./column/spin') - ,ColumnText : require ('./column/text') - ,ColumnCheck : require ('./column/check') + Text : require('./field/text') + ,Html : require('./field/html') + ,Entry : require('./field/entry') + ,RadioGroup : require('./field/radio-group') + ,Radio : require('./field/radio') + ,Label : require('./field/label') + ,TextArea : require('./field/text-area') + ,Spin : require('./field/spin') + ,Check : require('./field/check') + ,Select : require('./field/select') + ,Calendar : require('./field/calendar') + ,DateChooser : require('./field/date-chooser') + ,Image : require('./field/image') + ,Button : require('./field/button') + ,BarButton : require('./field/bar-button') + ,Table : require('./field/table') + ,SearchEntry : require('./field/search-entry') + ,ColumnButton : require('./column/button') + ,ColumnLink : require('./column/link') + ,ColumnDate : require('./column/date') + ,ColumnImage : require('./column/image') + ,ColumnRadio : require('./column/radio') + ,ColumnSpin : require('./column/spin') + ,ColumnText : require('./column/text') + ,ColumnCheck : require('./column/check') }; for (var field in Fields) diff --git a/js/htk/icon.js b/js/htk/icon.js index d31613d5..0988fda3 100644 --- a/js/htk/icon.js +++ b/js/htk/icon.js @@ -1,48 +1,38 @@ -var Widget = require ('./widget'); +var Widget = require('./widget'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Widget ,Tag: 'htk-icon' ,Properties: { - icon: - { + name: { type: String - ,set: function (x) - { + ,set: function(x) { this._icon = x; - this._setIcon (); + this._setIcon(); } - ,get: function () - { + ,get: function() { return this._icon; } }, - theme: - { + theme: { type: String - ,set: function (x) - { + ,set: function(x) { this._theme = x; - this._setIcon (); + this._setIcon(); } - ,get: function () - { + ,get: function() { return this._theme; } }, - alt: - { + alt: { type: String - ,set: function (x) - { + ,set: function(x) { this.node.alt = x; } - ,get: function () - { + ,get: function() { return this.node.alt; } } @@ -50,14 +40,12 @@ module.exports = new Class ,_icon: null - ,render: function () - { - this.createRoot ('img'); + ,render: function() { + const node = this.createRoot('span'); + node.className = 'material-symbols-rounded icon'; } - ,_setIcon: function () - { - var theme = this._theme ? this._theme : 'light'; - this.node.src = 'image/icon/'+ theme +'/'+ this._icon +'.svg'; + ,_setIcon: function() { + this.node.innerText = this._icon; } }); diff --git a/js/htk/image-editor.js b/js/htk/image-editor.js index cb31e02b..224cf0a6 100644 --- a/js/htk/image-editor.js +++ b/js/htk/image-editor.js @@ -1,7 +1,7 @@ var Component = require('./component'); var Toast = require('./toast'); -var Tpl = require('./image-editor.xml'); +var Tpl = require('./image-editor.xml').default; /** * A form to handle the image database, it allows to add new images or @@ -22,8 +22,9 @@ module.exports = new Class({ this.builderInitString(Tpl); var self = this; - this.$('form').onsubmit = function() - { self._onSubmit(); return false; }; + this.$('form').onsubmit = function() { + self._onSubmit(); return false; + }; this.parent(props); }, diff --git a/js/htk/repeater.js b/js/htk/repeater.js index 5b3f89f8..ef15b692 100644 --- a/js/htk/repeater.js +++ b/js/htk/repeater.js @@ -1,8 +1,7 @@ -var Widget = require ('./widget'); +var Widget = require('./widget'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Widget ,Tag: 'htk-repeater' ,Child: 'model' @@ -14,9 +13,8 @@ module.exports = new Class model: { type: Db.Model - ,set: function (x) - { - this.link ({_model: x}, + ,set: function(x) { + this.link({_model: x}, { 'status-changed': this._onModelChange ,'row-deleted': this._onRowDelete @@ -24,10 +22,9 @@ module.exports = new Class ,'row-inserted': this._onRowInsert }); - this._onModelChange (); + this._onModelChange(); } - ,get: function () - { + ,get: function() { this._model; } } @@ -37,12 +34,10 @@ module.exports = new Class ,formId: { type: String - ,set: function (x) - { + ,set: function(x) { this._formId = x; } - ,get: function () - { + ,get: function() { this._formId; } } @@ -53,12 +48,10 @@ module.exports = new Class ,renderer: { type: Function - ,set: function (x) - { + ,set: function(x) { this._renderer = x; } - ,get: function () - { + ,get: function() { this._renderer; } } @@ -68,13 +61,11 @@ module.exports = new Class ,showStatus: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._showStatus = x; this._onModelChange(); } - ,get: function () - { + ,get: function() { this._showStatus; } } @@ -92,176 +83,157 @@ module.exports = new Class ,_formId: 'form' ,_showStatus: true - ,render: function () - { - var div = this.createRoot ('div'); + ,render: function() { + var div = this.createRoot('div'); - this._container = this.createElement ('div'); + this._container = this.createElement('div'); this._container.className = 'htk-repeater'; - div.appendChild (this._container); + div.appendChild(this._container); } - ,loadXml: function (builderResult, node) - { - this.parent (builderResult, node); + ,loadXml: function(builderResult, node) { + this.parent(builderResult, node); - var builder = this._builder = new Vn.Builder (); - builder.setParent (builderResult); - builder.loadXmlFromNode (node.firstElementChild); + var builder = this._builder = new Vn.Builder(); + builder.setParent(builderResult); + builder.loadXmlFromNode(node.firstElementChild); - this._onModelChange (); + this._onModelChange(); } - ,getChild: function (index) - { + ,getChild: function(index) { return this._container.childNodes[index]; } - ,getBuilder: function (index) - { + ,getBuilder: function(index) { return this._childsData[index].builder; } - ,getForm: function (index) - { + ,getForm: function(index) { return this._childsData[index].set; } - ,_buildBox: function (index) - { - var set = new Db.SimpleIterator ({ + ,_buildBox: function(index) { + var set = new Db.SimpleIterator({ model: this._model, row: index }); - this._builder.add (this._formId, set); - var res = this._builder.load (); - res.link (); + this._builder.add(this._formId, set); + var res = this._builder.load(); + res.link(); - this._childsData.push ({ + this._childsData.push({ builder: res, set: set }); if (this._renderer) - this._renderer (res, set); + this._renderer(res, set); - return res.getMain (); + return res.getMain(); } - ,_onModelChange: function () - { + ,_onModelChange: function() { if (!this._model || !this._builder) return; - this.node.removeChild (this._container); - Vn.Node.removeChilds (this._container); + this.node.removeChild(this._container); + Vn.Node.removeChilds(this._container); - this._freeChildsData (); + this._freeChildsData(); this._childsData = []; - switch (this._model.status) - { + switch (this._model.status) { case Db.Model.Status.READY: { for (var i = 0; i < this._model.numRows; i++) - this._container.appendChild (this._buildBox (i)); + this._container.appendChild(this._buildBox(i)); - this._showNoRecordsFound (); + this._showNoRecordsFound(); break; } case Db.Model.Status.LOADING: - this._showMessage (_('Loading'), null); + this._showMessage(_('Loading'), null); break; case Db.Model.Status.CLEAN: { var emptyMessage = this.emptyMessage ? this.emptyMessage : _('NoData'); - this._showMessage (emptyMessage, 'refresh'); + this._showMessage(emptyMessage, 'refresh'); break; } case Db.Model.Status.ERROR: - this._showMessage (_('ErrorLoadingData'), 'error'); + this._showMessage(_('ErrorLoadingData'), 'error'); break; } - this.node.appendChild (this._container); - this.signalEmit ('change'); + this.node.appendChild(this._container); + this.signalEmit('change'); } - ,_showNoRecordsFound: function () - { + ,_showNoRecordsFound: function() { if (this._model.numRows === 0) - this._showMessage (_('EmptyList'), 'clean'); + this._showMessage(_('EmptyList'), 'block'); } - ,_showMessage: function (message, src) - { + ,_showMessage: function(message, src) { if (!this._showStatus) return; - var div = this.createElement ('div'); + var div = this.createElement('div'); div.className = 'message'; - this._container.appendChild (div); + this._container.appendChild(div); - if (src) - { - var img = this.createElement ('img'); - img.alt = ''; - img.src = 'image/icon/light/'+ src +'.svg'; - div.appendChild (img); - } - else - { - var spinner = new Htk.Spinner (); - spinner.start (); - div.appendChild (spinner.node); + if (src) { + const icon = new Htk.Icon({ + name: src + }); + div.appendChild(icon.node); + } else { + var spinner = new Htk.Spinner(); + spinner.start(); + div.appendChild(spinner.node); } - div.appendChild (this.createTextNode (message)); + div.appendChild(this.createTextNode(message)); } - ,_onRowDelete: function (model, row) - { - Vn.Node.remove (this._container.childNodes[row]); - this._unrefChildData (row); - this._childsData.splice (row, 1); + ,_onRowDelete: function(model, row) { + Vn.Node.remove(this._container.childNodes[row]); + this._unrefChildData(row); + this._childsData.splice(row, 1); for (var i = row; i < this._model.numRows; i++) this._childsData[i].set.row = i; - this._showNoRecordsFound (); + this._showNoRecordsFound(); } - ,_onRowUpdate: function (model, row) - { - this._childsData[row].set.iterChanged (); + ,_onRowUpdate: function(model, row) { + this._childsData[row].set.iterChanged(); } - ,_onRowInsert: function (model, row) - { - var box = this._buildBox (row); - this._container.appendChild (box); + ,_onRowInsert: function(model, row) { + var box = this._buildBox(row); + this._container.appendChild(box); } - ,_freeChildsData: function () - { + ,_freeChildsData: function() { if (this._childsData) for (var i = 0; i < this._childsData.length; i++) - this._unrefChildData (i); + this._unrefChildData(i); } - ,_unrefChildData: function (index) - { + ,_unrefChildData: function(index) { var childData = this._childsData[index]; - childData.set.unref (); - childData.builder.unref (); + childData.set.unref(); + childData.builder.unref(); } - ,destroy: function () - { - this._freeChildsData (); - this.parent (); + ,destroy: function() { + this._freeChildsData(); + this.parent(); } }); diff --git a/js/htk/style.css b/js/htk/style.scss similarity index 55% rename from js/htk/style.css rename to js/htk/style.scss index f3e3b5e8..1bb9d983 100644 --- a/js/htk/style.css +++ b/js/htk/style.scss @@ -1,110 +1,105 @@ /* Grid */ -.htk-grid -{ +.htk-grid { margin: auto; border-collapse: collapse; + + & > thead > tr, + & > tfoot > tr { + background-color: #8cc63f; + vertical-align: middle; + height: 3em; + } + th { + color: white; + cursor: pointer; + font-weight: normal; + padding: 0 0.4em; + } + th:hover { + background-color: rgba(1, 1, 1, 0.2); + } + tr { + height: 3.5em; + } + & > tfoot a, + & > thead a { + color: black; + } + tr.pair-row { + background-color: transparent; + } + & > tbody tr { + border-top: 1px solid #DDD; + } + & > tbody tr:first-child { + border-top: none; + } + & > tbody td { + margin: 0; + padding: 0 0.5em; + } + th, + td { + text-align: left; + } + td:first-child, + th:first-child { + padding-left: 1em; + } + td:last-child, + th:last-child { + padding-right: 1em; + } + .message { + padding: 1.5em; + text-align: center; + } + .message > * { + display: inline-block; + vertical-align: middle; + padding-right: .8em; + } } -.htk-grid > thead > tr, -.htk-grid > tfoot > tr -{ - background-color: #009688; - vertical-align: middle; - height: 3em; -} -.htk-grid th -{ - color: white; - cursor: pointer; - font-weight: normal; - padding: 0 0.4em; -} -.htk-grid th:hover -{ - background-color: rgba(1, 1, 1, 0.2); -} -.htk-grid tr -{ - height: 3.5em; -} -.htk-grid > tfoot a, -.htk-grid > thead a -{ - color: black; -} -.htk-grid tr.pair-row -{ - background-color: transparent; -} -.htk-grid > tbody tr -{ - border-top: 1px solid #DDD; -} -.htk-grid > tbody tr:first-child -{ - border-top: none; -} -.htk-grid > tbody td -{ - margin: 0; - padding: 0 0.5em; -} -.htk-grid th, -.htk-grid td -{ - text-align: left; -} -.htk-grid td:first-child, -.htk-grid th:first-child -{ - padding-left: 1em; -} -.htk-grid td:last-child, -.htk-grid th:last-child -{ - padding-right: 1em; -} -.htk-grid .message -{ - padding: 1.5em; - text-align: center; -} -.htk-grid .message > * -{ - display: inline-block; - vertical-align: middle; - padding-right: 0.8em; -} -.htk-grid .message > img -{ - height: 1.8em; + +/* Repater */ + +.htk-repeater { + & > .message { + padding: 1.5em; + text-align: center; + + & > * { + vertical-align: middle; + } + & > span, + & > .htk-spinner { + display: inline-block; + padding-right: 10px; + } + } } /* Grid cells */ -th.cell-spin -{ +th.cell-spin { text-align: right; } -td.cell-spin -{ +td.cell-spin { width: 2.5em; text-align: right; } th.cell-check, -th.cell-radio -{ +th.cell-radio { text-align: center; } -td.cell-button -{ +td.cell-button { max-width: 1em; text-align: center; } td.cell-button > button, -td.cell-button > a -{ +td.cell-button > a { display: inline-block; margin: 0 auto; padding: .5em; @@ -114,24 +109,20 @@ td.cell-button > a box-sizing: border-box; } td.cell-button > button:hover, -td.cell-button > a:hover -{ +td.cell-button > a:hover { background-color: rgba(1, 1, 1, 0.1); } -td.cell-button img -{ +td.cell-button img { height: 1.5em; width: 1.5em; display: block; margin: auto; padding: 0; } -td.cell-image -{ +td.cell-image { text-align: center; } -td.cell-image .htk-image -{ +td.cell-image .htk-image { max-width: 2.5em; max-height: 2.5em; display: block; @@ -140,35 +131,29 @@ td.cell-image .htk-image /* Select */ -.htk-select -{ +.htk-select { width: 100%; height: 2em; text-align: left; } -.htk-select-menu -{ +.htk-select-menu { height: 100%; max-height: 80em; overflow: auto; min-width: 14em; } -.htk-select-menu tbody > tr -{ +.htk-select-menu tbody > tr { border-top: none; height: 2.5em; } -.htk-select-menu td.message -{ +.htk-select-menu td.message { padding: 1em; } -.htk-select-menu tr:hover -{ +.htk-select-menu tr:hover { background-color: rgba(1, 1, 1, 0.1); cursor: pointer; } -.htk-select-menu td -{ +.htk-select-menu td { max-width: 11em; overflow: hidden; text-overflow: ellipsis; @@ -177,88 +162,65 @@ td.cell-image .htk-image /* Button */ -.htk-button > span -{ - margin-left: .5em; -} +.htk-button { + display: flex; + align-items: center; + border-radius: 2em; + font-weight: bold; + gap: .5em; + padding: 0 .5em; -/* Repater */ - -.htk-repeater > .message -{ - padding: 1.5em; - text-align: center; -} -.htk-repeater > .message > * -{ - vertical-align: middle; -} -.htk-repeater > .message > img, -.htk-repeater > .message > .htk-spinner -{ - display: inline-block; - padding-right: .8em; - height: 1.8em; + & > span.icon { + display: block; + } } /* Calendar */ -.htk-calendar -{ +.htk-calendar { width: 20em; background-color: white; border: none; border-radius: .5em; } -.htk-calendar table -{ +.htk-calendar table { border-collapse: collapse; } .htk-calendar thead tr, -.htk-calendar tfoot tr -{ - background-color: #8cc63f; +.htk-calendar tfoot tr { + background-color: #888; color: white; font-weight: normal; vertical-align: middle; text-align: center; height: 3em; } -.htk-calendar thead span -{ +.htk-calendar thead span { color: white; } -.htk-calendar thead tr -{ +.htk-calendar thead tr { border-bottom: none; } -.htk-calendar tfoot tr -{ +.htk-calendar tfoot tr { border-top: none; } -.htk-calendar th.button -{ +.htk-calendar th.button { display: table-cell; } -.htk-calendar th.button:hover -{ +.htk-calendar th.button:hover { cursor: pointer; background-color: rgba(1, 1, 1, 0.2); } -.htk-calendar col -{ +.htk-calendar col { width: 14.2%; } -.htk-calendar tr -{ +.htk-calendar tr { height: 2em; } -.htk-calendar tbody td -{ +.htk-calendar tbody td { text-align: right; } -.htk-calendar tbody td > div -{ +.htk-calendar tbody td > div { height: 2em; width: 2em; line-height: 2em; @@ -268,47 +230,39 @@ td.cell-image .htk-image margin: 0 auto; color: #555; } -.htk-calendar div.disabled -{ +.htk-calendar div.disabled { color: #999; } -.htk-calendar div.today -{ +.htk-calendar div.today { font-weight: bold; color: black; } -.htk-calendar div.selected -{ +.htk-calendar div.selected { color: white; - background-color: #009688; + background-color: #8cc63f; } -.htk-calendar div.enabled:hover -{ +.htk-calendar div.enabled:hover { cursor: pointer; - background-color: #008678; + background-color: rgba(140, 198, 63, 0.8); color: white; } /* Image */ -.htk-image -{ +.htk-image { position: relative; overflow: hidden; } -.htk-image.clickable:hover -{ +.htk-image.clickable:hover { cursor: pointer; opacity: 0.85; } -.htk-image > img -{ +.htk-image > img { display: block; height: 100%; width: 100%; } -.htk-image > button -{ +.htk-image > button { position: absolute; top: 0; left: 0; @@ -316,12 +270,10 @@ td.cell-image .htk-image padding: .15em; display: none; } -.htk-image:hover > button -{ +.htk-image:hover > button { display: block; } -.htk-image > button > img -{ +.htk-image > button > img { display: block; height: 1.2em; height: 1.2em; @@ -329,13 +281,11 @@ td.cell-image .htk-image /* Full image */ -.htk-full-image img -{ +.htk-full-image img { display: block; cursor: pointer; } -.htk-full-image .htk-spinner -{ +.htk-full-image .htk-spinner { background-color: #FFF; margin: .6em; display: block; @@ -343,14 +293,12 @@ td.cell-image .htk-image /* Image editor */ -.htk-image-editor -{ +.htk-image-editor { width: 18em; margin: 0 auto; padding: 1.5em; } -.htk-image-editor h2 -{ +.htk-image-editor h2 { color: white; background-color: #009688; text-align: left; @@ -360,30 +308,25 @@ td.cell-image .htk-image padding: 0.6em 0.8em; margin: 0; } -.htk-image-editor iframe -{ +.htk-image-editor iframe { display: none; } -.htk-image-editor .footer -{ +.htk-image-editor .footer { margin-top: 2em; } -.htk-image-editor .footer > .htk-spinner -{ +.htk-image-editor .footer > .htk-spinner { padding-right: 1.2em; height: 1.3em; width: 1.3em; } .htk-image-editor .footer > .htk-spinner, -.htk-image-editor .footer > input -{ +.htk-image-editor .footer > input { float: right; } /* Toast */ -.htk-toast -{ +.htk-toast { z-index: 210; display: block; position: fixed; @@ -396,8 +339,7 @@ td.cell-image .htk-image max-height: 40em; overflow: visible; } -.htk-toast > div -{ +.htk-toast > div { margin: .5em 0; padding: .5em 2%; border-radius: 0.1em; @@ -412,32 +354,27 @@ td.cell-image .htk-image transition-duration: 200ms; transition-timing-function: ease-out; } -.htk-toast > div.show -{ +.htk-toast > div.show { opacity: 1; transform: translateZ(0) translateY(0em); -webkit-transform: translateZ(0) translateY(0em); } -.htk-toast > .message -{ +.htk-toast > .message { background-color: #BBFFBB; color: #363; } -.htk-toast > .warning -{ +.htk-toast > .warning { background-color: #FFE0B2; color: #C30; } -.htk-toast > .error -{ +.htk-toast > .error { background-color: #FFCDD2; color: #A00; } /* Popup */ -.htk-background -{ +.htk-background { position: fixed; left: 0; right: 0; @@ -448,55 +385,47 @@ td.cell-image .htk-image opacity: 0; transition: opacity 200ms ease-in-out; } -.htk-popup -{ +.htk-popup { z-index: 200; display: block; position: fixed; overflow: hidden; background-color: white; - border-radius: 0.15em; + border-radius: 10px; box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.6); box-sizing: content-box; } -.htk-popup.modal -{ +.htk-popup.modal { position: absolute; font-size: 1.2em; top: 50%; left: 50%; } -.htk-popup > * -{ +.htk-popup > * { border-radius: 0.1em; } /* Dialog */ -.htk-dialog -{ +.htk-dialog { padding: 1.5em; max-width: 20em; font-weight: normal; color: #555; } -.htk-dialog p -{ +.htk-dialog p { margin: 0; } -.htk-dialog img -{ +.htk-dialog img { float: left; height: 3em; margin-top: 0; margin-right: 1em; } -.htk-dialog p -{ +.htk-dialog p { padding: 0; } -.htk-dialog .button-bar > button -{ +.htk-dialog .button-bar > button { float: right; margin-left: 1em; margin-top: .5em; @@ -504,25 +433,23 @@ td.cell-image .htk-image /* Assistant */ -.htk-assistant > div -{ +.htk-assistant > div { display: none; -} -.htk-assistant > div > h2 -{ - text-align: center; - font-weight: normal; - font-size: 1.5em; - margin: 0; - padding: 0; - margin-bottom: 1em; - font-weight: bold; + + & > h2 { + text-align: center; + font-weight: normal; + font-size: 1.5em; + margin: 0; + padding: 0; + margin-bottom: 1em; + font-weight: bold; + } } /* Assistant bar */ -.htk-assistant-bar -{ +.htk-assistant-bar { position: relative; padding: .8em; display: flex; @@ -530,100 +457,102 @@ td.cell-image .htk-image justify-content: space-between; box-sizing: border-box; width: 100%; -} -.htk-assistant-bar > button -{ - border-radius: 50%; - padding: 0; - margin: 0; -} -.htk-assistant-bar > .end -{ - display: none; -} -.htk-assistant-bar > button > img -{ - display: block; - width: 1.8em; - padding: .5em; -} -.htk-assistant-bar > .steps -{ - display: flex; - align-items: center; -} -.htk-assistant-bar > .steps > div { - background-color: #AAA; - width: .5em; - height: .5em; - cursor: pointer; - border-radius: 50%; - margin: .5em; - transition-property: width, height; - transition-duration: 100ms; - transition-timing-function: ease-in-out; -} -.htk-assistant-bar > .steps > div.selected { - background-color: #666; - width: 1em; - height: 1em; -} -.htk-assistant-bar > .steps > div:hover { - opacity: .7; -} -.htk-assistant-bar > .steps > img -{ - width: 1.3em; - margin: 0 .2em; - cursor: pointer; -} -.htk-assistant-bar > .steps > img:hover -{ - opacity: .7; + & > button { + border-radius: 50%; + padding: .5em; + margin: 0; + text-align: center; + + & > img { + display: block; + width: 1.8em; + padding: .5em; + } + } + & > .end { + display: none; + color: #8cc63f; + + & > .icon { + font-size: 1.6rem; + } + } + & > .steps { + display: flex; + align-items: center; + + & > div { + background-color: #AAA; + width: .5em; + height: .5em; + cursor: pointer; + border-radius: 50%; + margin: .5em; + + transition-property: width, height; + transition-duration: 100ms; + transition-timing-function: ease-in-out; + + &.selected { + background-color: #666; + width: 1em; + height: 1em; + } + &:hover { + opacity: .7; + } + } + & > img { + width: 1.3em; + margin: 0 .2em; + cursor: pointer; + + &:hover { + opacity: .7; + } + } + } } /* Search entry */ -.htk-search-entry -{ +.htk-search-entry { background-color: white; - height: 2.2em; + height: 2.8em; + border-radius: 1.4em; + padding: 0 1.4em; } -.htk-search-entry > * -{ +.htk-search-entry > * { display: inline-block; vertical-align: middle; } -.htk-search-entry > img -{ +.htk-search-entry > img { margin: 0; height: 1.5em; - margin: 0 .4em; + margin-right: .6em; } -.htk-search-entry > .entry -{ +.htk-search-entry > .entry { margin: 0; border: none; width: 8em; box-shadow: none; + padding-right: 0; + padding-left: 0; } -.htk-search-entry > .entry:focus -{ +.htk-search-entry > .entry:focus { background-color: initial; } /* Spinner */ -.htk-spinner -{ +.htk-spinner { width: 1.8em; height: 1.8em; position: relative; display: inline-block; } -.htk-spinner > .spinner -{ +.htk-spinner > .spinner { left: 0; position: absolute; width: inherit; @@ -636,23 +565,19 @@ td.cell-image .htk-image animation: spinner 1s linear infinite; -webkit-animation: spinner 1s linear infinite; } -.htk-spinner.dark > .spinner -{ +.htk-spinner.dark > .spinner { border-top-color: white; border-left-color: white; } -@keyframes spinner -{ +@keyframes spinner { to {transform: rotate(360deg);} } -@-webkit-keyframes spinner -{ +@-webkit-keyframes spinner { to {-webkit-transform: rotate(360deg);} } /* Loader */ -.htk-loader > .spinner -{ +.htk-loader > .spinner { text-align: center; } diff --git a/package-lock.json b/package-lock.json index fd15ea8c..03939459 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,354 +15,64 @@ "tinymce": "^5.0.0" }, "devDependencies": { - "archiver": "^3.0.0", - "assets-webpack-plugin": "^3.9.7", + "archiver": "^5.3.1", + "assets-webpack-plugin": "^7.1.1", "bundle-loader": "^0.5.6", - "css-loader": "^2.1.0", - "eslint": "^5.13.0", - "file-loader": "^3.0.1", - "fs-extra": "^5.0.0", - "glob": "^7.1.3", + "css-loader": "^6.7.1", + "eslint": "^8.15.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "glob": "^8.0.3", + "html-webpack-plugin": "^5.5.0", "json-loader": "^0.5.7", - "raw-loader": "^1.0.0", - "style-loader": "^0.23.1", - "url-loader": "^1.1.2", - "webpack": "^4.29.1", - "webpack-cli": "^3.2.3", - "webpack-dev-server": "^3.1.14", - "webpack-merge": "^4.2.1", + "node-sass": "^7.0.1", + "raw-loader": "^4.0.2", + "sass-loader": "^12.6.0", + "style-loader": "^3.3.1", + "url-loader": "^4.1.1", + "webpack": "^5.72.1", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.9.0", + "webpack-merge": "^5.8.0", "yaml-loader": "^0.5.0" } }, "node_modules/@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "dependencies": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" }, "engines": { - "node": ">= 0.6" + "node": ">=6.9.0" } }, - "node_modules/acorn": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.7.tgz", - "integrity": "sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", - "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", - "dev": true, - "peerDependencies": { - "ajv": "^6.0.0" - } - }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/ajv/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { + "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", @@ -374,67 +84,795 @@ "node": ">=4" } }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/archiver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.0.0.tgz", - "integrity": "sha512-5QeR6Xc5hSA9X1rbQfcuQ6VZuUXOaEdB65Dhmk9duuRJHYif/ZyJfuyJqsQrj34PFjU5emv5/MmfgA8un06onw==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "archiver-utils": "^2.0.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "zip-stream": "^2.0.1" + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, "engines": { "node": ">= 6" } }, - "node_modules/archiver-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.0.0.tgz", - "integrity": "sha512-JRBgcVvDX4Mwu2RBF8bBaHcQCSxab7afsxAPYDQ5W+19quIPP5CfKE7Ql+UHs9wYvwsaNR8oDuhtf5iqrKmzww==", + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", - "lodash.assign": "^4.2.0", "lodash.defaults": "^4.2.0", "lodash.difference": "^4.5.0", "lodash.flatten": "^4.4.0", "lodash.isplainobject": "^4.0.6", - "lodash.toarray": "^4.4.0", "lodash.union": "^4.6.0", "normalize-path": "^3.0.0", "readable-stream": "^2.0.0" @@ -443,322 +881,262 @@ "node": ">= 6" } }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { "sprintf-js": "~1.0.2" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "dependencies": { - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" + "node": ">=0.8" } }, "node_modules/assets-webpack-plugin": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/assets-webpack-plugin/-/assets-webpack-plugin-3.9.7.tgz", - "integrity": "sha512-yxo4MlSb++B88qQFE27Wf56ykGaDHZeKcSbrstSFOOwOxv33gWXtM49+yfYPSErlXPAMT5lVy3YPIhWlIFjYQw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/assets-webpack-plugin/-/assets-webpack-plugin-7.1.1.tgz", + "integrity": "sha512-HwsDcu9UR9kv7AtiyMpUO9fARn94SbrLzw5+aQ59RnOZJeet+EVHmOrMwXl8fZ8cZmdZ9Sbl1/l+fn7ymiyfMg==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "escape-string-regexp": "^1.0.3", - "lodash.assign": "^4.2.0", - "lodash.merge": "^4.6.1", - "mkdirp": "^0.5.1" - } - }, - "node_modules/assets-webpack-plugin/node_modules/camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true, + "camelcase": "^6.0.0", + "escape-string-regexp": "^4.0.0", + "lodash": "^4.17.21" + }, "engines": { - "node": ">=6" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=10.x.x" + }, + "peerDependencies": { + "webpack": ">=5.0.0" } }, "node_modules/async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10" - } - }, - "node_modules/async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", "dev": true, - "bin": { - "atob": "bin/atob.js" - }, "engines": { - "node": ">= 4.5.0" + "node": "*" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/binary-extensions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", - "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", - "dev": true - }, - "node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", - "dev": true - }, "node_modules/body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "dependencies": { - "bytes": "3.0.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "engines": { "node": ">= 0.8" } @@ -772,10 +1150,19 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -790,20 +1177,39 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "node_modules/body-parser/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -815,178 +1221,83 @@ } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "is-extendable": "^0.1.0" + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "dependencies": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", - "dev": true, - "dependencies": { - "pako": "~1.0.5" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { "node": "*" } }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/bundle-loader": { @@ -1004,330 +1315,364 @@ "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "dependencies": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cacache/node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, - "node_modules/chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - }, - "optionalDependencies": { - "fsevents": "^1.2.2" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { "node": ">=6.0" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "dev": true - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "source-map": "~0.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-width": { + "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "node_modules/compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 0.10.0" + "bin": { + "color-support": "bin.js" } }, - "node_modules/compress-commons/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" } }, "node_modules/compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.43.0 < 2" }, "engines": { "node": ">= 0.6" } }, "node_modules/compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" }, @@ -1350,27 +1695,18 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "node_modules/connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", @@ -1380,26 +1716,20 @@ "node": ">=0.8" } }, - "node_modules/console-browserify": { + "node_modules/console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "dependencies": { - "date-now": "^0.1.4" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, "engines": { "node": ">= 0.6" } @@ -1414,9 +1744,9 @@ } }, "node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, "engines": { "node": ">= 0.6" @@ -1428,361 +1758,218 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "dependencies": { - "buffer": "^5.1.0" + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "dependencies": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "node": ">= 10" } }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" + "node": ">= 8" } }, "node_modules/css-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz", - "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "dependencies": { - "icss-utils": "^4.0.0", - "loader-utils": "^1.2.1", - "lodash": "^4.17.11", - "postcss": "^7.0.6", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.3", - "postcss-modules-scope": "^2.0.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^5.0.0" } }, - "node_modules/css-loader/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { - "node": "*" - } - }, - "node_modules/css-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" + "node": ">= 6" }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/css-loader/node_modules/loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/css-loader/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "dependencies": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" - } - }, - "node_modules/cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "node_modules/date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "dependencies": { - "xregexp": "4.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, "engines": { "node": ">=0.10" } }, - "node_modules/deep-equal": { + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "node_modules/default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", - "dev": true, - "os": [ - "android", - "darwin", - "freebsd", - "linux", - "openbsd", - "sunos", - "win32" - ], - "dependencies": { - "execa": "^0.10.0", - "ip-regex": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "execa": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { + "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "dependencies": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - }, - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "node_modules/depd": { "version": "1.1.2", @@ -1793,48 +1980,22 @@ "node": ">= 0.6" } }, - "node_modules/des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -1842,56 +2003,111 @@ "dev": true }, "node_modules/dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "node_modules/ee-first": { @@ -1900,28 +2116,25 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "node_modules/elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 4" } }, "node_modules/encodeurl": { @@ -1933,39 +2146,96 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" } }, - "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/escape-html": { @@ -1975,107 +2245,148 @@ "dev": true }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", - "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.0", - "esquery": "^1.0.1", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "js-yaml": "^3.12.0", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.0.2", - "text-table": "^0.2.0" + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=4.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/espree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", - "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "dependencies": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { @@ -2091,42 +2402,42 @@ } }, "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=0.10" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2142,163 +2453,78 @@ } }, "node_modules/eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, "node_modules/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "dependencies": { - "original": "^1.0.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "dependencies": { - "accepts": "~1.3.5", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, @@ -2309,7 +2535,7 @@ "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/express/node_modules/debug": { @@ -2321,136 +2547,61 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/extend-shallow": { + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "node_modules/fast-levenshtein": { @@ -2459,124 +2610,106 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, "node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "dependencies": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/file-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">= 4" + "node": ">=6" + } + }, + "node_modules/file-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -2598,155 +2731,90 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/flush-write-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.0.tgz", - "integrity": "sha512-6MHED/cmsyux1G4/Cek2Z776y9t7WCNd3h2h/HW91vFeU7pzMhA8XvAlDhHcanG5IWuIh/xcC7JASY4WQpG6xg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", - "dev": true, - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/follow-redirects/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/follow-redirects/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/follow-redirects": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "engines": { "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -2756,16 +2824,6 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2773,28 +2831,37 @@ "dev": true }, "node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha1-QU0BEM3QZwVzTQVWUsVBEmDDGr0=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2802,709 +2869,24 @@ "dev": true }, "node_modules/fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", - "bundleDependencies": [ - "node-pre-gyp" - ], - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], - "dependencies": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, "engines": { - "node": ">=4.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fsevents/node_modules/abbrev": { + "node_modules/function-bind": { "version": "1.1.1", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/ansi-regex": { - "version": "2.1.1", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/aproba": { - "version": "1.2.0", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/are-we-there-yet": { - "version": "1.1.5", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/fsevents/node_modules/balanced-match": { - "version": "1.0.0", - "integrity": "sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/brace-expansion": { - "version": "1.1.11", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fsevents/node_modules/chownr": { - "version": "1.1.1", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/code-point-at": { - "version": "1.1.0", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/concat-map": { - "version": "0.0.1", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/console-control-strings": { - "version": "1.1.0", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/core-util-is": { - "version": "1.0.2", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/debug": { - "version": "2.6.9", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/fsevents/node_modules/deep-extend": { - "version": "0.6.0", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fsevents/node_modules/delegates": { - "version": "1.0.0", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/detect-libc": { - "version": "1.0.3", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "inBundle": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fsevents/node_modules/fs-minipass": { - "version": "1.2.5", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/fs.realpath": { - "version": "1.0.0", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/gauge": { - "version": "2.7.4", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/fsevents/node_modules/glob": { - "version": "7.1.3", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/has-unicode": { - "version": "2.0.1", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/iconv-lite": { - "version": "0.4.24", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/ignore-walk": { - "version": "3.0.1", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/fsevents/node_modules/inflight": { - "version": "1.0.6", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/inherits": { - "version": "2.0.3", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/ini": { - "version": "1.3.5", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/isarray": { - "version": "1.0.0", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/minimatch": { - "version": "3.0.4", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/minimist": { - "version": "0.0.8", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/minipass": { - "version": "2.3.5", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/fsevents/node_modules/minizlib": { - "version": "1.2.1", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/mkdirp": { - "version": "0.5.1", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fsevents/node_modules/ms": { - "version": "2.0.0", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/needle": { - "version": "2.2.4", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/fsevents/node_modules/node-pre-gyp": { - "version": "0.10.3", - "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/fsevents/node_modules/nopt": { - "version": "4.0.1", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/fsevents/node_modules/npm-bundled": { - "version": "1.0.5", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/npm-packlist": { - "version": "1.2.0", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npmlog": { - "version": "4.1.2", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/fsevents/node_modules/number-is-nan": { - "version": "1.0.1", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/object-assign": { - "version": "4.1.1", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/once": { - "version": "1.4.0", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/os-homedir": { - "version": "1.0.2", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/os-tmpdir": { - "version": "1.0.2", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/osenv": { - "version": "0.1.5", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/fsevents/node_modules/path-is-absolute": { - "version": "1.0.1", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/process-nextick-args": { - "version": "2.0.0", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/rc": { - "version": "1.2.8", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/fsevents/node_modules/rc/node_modules/minimist": { - "version": "1.2.0", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/readable-stream": { - "version": "2.3.6", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/fsevents/node_modules/rimraf": { - "version": "2.6.3", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fsevents/node_modules/safe-buffer": { - "version": "5.1.2", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/safer-buffer": { - "version": "2.1.2", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/sax": { - "version": "1.2.4", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/semver": { - "version": "5.6.0", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true, - "inBundle": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fsevents/node_modules/set-blocking": { - "version": "2.0.0", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/signal-exit": { - "version": "3.0.2", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/string_decoder": { - "version": "1.1.1", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fsevents/node_modules/string-width": { - "version": "1.0.2", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-ansi": { - "version": "3.0.1", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-json-comments": { - "version": "2.0.1", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "inBundle": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/tar": { - "version": "4.4.8", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/fsevents/node_modules/util-deprecate": { - "version": "1.0.2", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/wide-align": { - "version": "1.1.3", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "inBundle": true, - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/fsevents/node_modules/wrappy": { - "version": "1.0.2", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "inBundle": true, - "optional": true - }, - "node_modules/fsevents/node_modules/yallist": { - "version": "3.0.3", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "inBundle": true, - "optional": true + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -3512,34 +2894,182 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globule": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -3551,50 +3081,15 @@ }, "engines": { "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "node_modules/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -3603,177 +3098,108 @@ "node": "*" } }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "node_modules/hpack.js": { @@ -3788,14 +3214,110 @@ "wbuf": "^1.1.0" } }, - "node_modules/html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, - "engines": [ - "node >= 0.4.0" - ] + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -3804,116 +3326,204 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, "node_modules/http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "node_modules/http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.0.0" } }, - "node_modules/http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "dependencies": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "node_modules/icss-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz", - "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { "node": ">= 6" } }, - "node_modules/ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { "parent-module": "^1.0.0", @@ -3921,22 +3531,28 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -3948,10 +3564,19 @@ "node": ">=0.8.19" } }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "node_modules/inflight": { @@ -3965,226 +3590,78 @@ } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", - "dev": true, - "os": [ - "android", - "darwin", - "freebsd", - "linux", - "openbsd", - "sunos", - "win32" - ], - "dependencies": { - "default-gateway": "^2.6.0", - "ipaddr.js": "^1.5.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, "engines": { "node": ">= 0.10" } }, - "node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-extglob": { @@ -4197,18 +3674,18 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -4217,59 +3694,26 @@ "node": ">=0.10.0" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true, - "dependencies": { - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.1" - }, "engines": { "node": ">=0.10.0" } @@ -4286,37 +3730,34 @@ "node": ">=0.10.0" } }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/isarray": { @@ -4340,6 +3781,47 @@ "node": ">=0.10.0" } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4347,9 +3829,9 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4358,14 +3840,11 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "node_modules/json-loader": { "version": "0.5.7", @@ -4373,10 +3852,22 @@ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { @@ -4385,50 +3876,73 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "deprecated": "Please use the native JSON object instead of JSON 3", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, "bin": { "json5": "lib/cli.js" } }, "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } }, "node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "dependencies": { "readable-stream": "^2.0.5" @@ -4437,83 +3951,94 @@ "node": ">= 0.6.3" } }, - "node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=6.11.5" } }, "node_modules/loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { "node": ">=4.0.0" } }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "node_modules/lodash.defaults": { @@ -4541,15 +4066,15 @@ "dev": true }, "node_modules/lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, "node_modules/lodash.union": { @@ -4558,78 +4083,64 @@ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, - "node_modules/loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, - "engines": { - "node": ">= 0.6.0" + "dependencies": { + "tslib": "^2.0.3" } }, "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "dependencies": { - "p-defer": "^1.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/media-typer": { @@ -4641,28 +4152,54 @@ "node": ">= 0.6" } }, - "node_modules/mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "node_modules/memfs": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.3.tgz", + "integrity": "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg==", "dev": true, "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" + "fs-monkey": "1.0.3" }, "engines": { - "node": ">=6" + "node": ">= 4.0.0" } }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/merge-descriptors": { @@ -4671,6 +4208,12 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -4681,79 +4224,64 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "node": ">=8.6" } }, "node_modules/mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, "node_modules/mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "~1.37.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "engines": { "node": ">=4" @@ -4765,16 +4293,10 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -4784,69 +4306,125 @@ } }, "node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": ">=4.0.0" + "node": ">= 6" } }, - "node_modules/mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "deprecated": "Critical bug fixed in v2.0.1, please upgrade to the latest version.", + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" } }, "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "0.0.8" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mootools": { @@ -4857,78 +4435,41 @@ "node": ">=0.4.0" } }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "node_modules/nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true, - "optional": true + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/natural-compare": { @@ -4938,84 +4479,216 @@ "dev": true }, "node_modules/negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } }, "node_modules/node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "0.0.4" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", "dev": true }, + "node_modules/node-sass": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.1.tgz", + "integrity": "sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^8.4.1", + "npmlog": "^5.0.0", + "request": "^2.88.0", + "sass-graph": "4.0.0", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/node-sass/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5026,24 +4699,48 @@ } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, "node_modules/object-assign": { @@ -5055,66 +4752,13 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { @@ -5124,9 +4768,9 @@ "dev": true }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { "ee-first": "1.1.1" @@ -5136,9 +4780,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, "engines": { "node": ">= 0.8" @@ -5154,204 +4798,141 @@ } }, "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "dependencies": { - "is-wsl": "^1.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "dependencies": { - "url-parse": "^1.4.3" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-locale/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-locale/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 4" } }, "node_modules/p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "dependencies": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { "callsites": "^3.0.0" @@ -5360,66 +4941,50 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true, + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -5431,322 +4996,237 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "node_modules/pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, "engines": { - "node": ">=0.12" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { "node": ">=4" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "dev": true, - "dependencies": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/portfinder/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz", - "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==", - "dev": true, - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6", - "postcss-value-parser": "^3.3.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz", - "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==", - "dev": true, - "dependencies": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - } - }, "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, - "engines": { - "node": ">= 0.6.0" + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" } }, "node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "node_modules/proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "dependencies": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { "node": ">= 0.10" } }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5757,86 +5237,69 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, "engines": { "node": ">=0.6" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, "engines": { - "node": ">=0.4.x" + "node": ">=8" } }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", - "dev": true - }, "node_modules/randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "dependencies": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -5846,143 +5309,252 @@ } }, "node_modules/raw-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", - "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.3.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/raw-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">= 4" + "node": ">=6" + } + }, + "node_modules/raw-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" } }, "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10" + "node": ">=8.10.0" } }, - "node_modules/regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "resolve": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "dependencies": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "node_modules/regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" + "node": ">=8" }, - "bin": { - "regjsparser": "bin/parser" + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, "engines": { - "node": ">=0.10" + "node": ">= 6" } }, "node_modules/require-directory": { @@ -5994,11 +5566,14 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/require-yaml": { "version": "0.0.1", @@ -6008,68 +5583,48 @@ "js-yaml": "" } }, - "node_modules/require-yaml/node_modules/esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-yaml/node_modules/js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "resolve-from": "^3.0.0" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/resolve-from": { @@ -6081,104 +5636,69 @@ "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true, "engines": { - "node": ">=0.12" + "node": ">= 4" } }, "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "dependencies": { - "is-promise": "^2.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" + "node": "*" }, - "engines": { - "npm": ">=2.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "dependencies": { - "ret": "~0.1.10" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -6186,18 +5706,117 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/sass-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.0.tgz", + "integrity": "sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ==", "dev": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" }, "engines": { - "node": ">= 4" + "node": ">=12" + } + }, + "node_modules/sass-graph/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz", + "integrity": "sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ==", + "dev": true, + "dependencies": { + "js-base64": "^2.4.3", + "source-map": "^0.7.1" + } + }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" } }, "node_modules/select-hose": { @@ -6207,42 +5826,51 @@ "dev": true }, "node_modules/selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "dependencies": { - "node-forge": "0.7.5" + "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -6257,27 +5885,36 @@ "ms": "2.0.0" } }, - "node_modules/send/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/send/node_modules/ms": { + "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -6305,22 +5942,58 @@ "ms": "2.0.0" } }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -6332,332 +6005,124 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "node_modules/set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { + "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "dependencies": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "node_modules/sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "dependencies": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/sockjs-client/node_modules/faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">=0.8.0" + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "node_modules/socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } }, "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", @@ -6666,17 +6131,61 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "node_modules/spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -6686,8 +6195,7 @@ "spdy-transport": "^3.0.0" }, "engines": { - "node": ">=6.0.0", - "npm": ">=6.0.0" + "node": ">=6.0.0" } }, "node_modules/spdy-transport": { @@ -6704,120 +6212,88 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "minipass": "^3.1.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", "dev": true, "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "readable-stream": "^2.0.1" } }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/string_decoder": { + "node_modules/stdout-stream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", @@ -6826,185 +6302,224 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", - "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", - "dev": true, - "dependencies": { - "ajv": "^6.6.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.0.0", - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "min-indent": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", "dev": true, "dependencies": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.9" + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" }, "bin": { - "terser": "bin/uglifyjs" + "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser-webpack-plugin": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", - "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", "dev": true, "dependencies": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", - "terser": "^3.16.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^5.7.2" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "webpack": "^5.1.0" }, - "engines": { - "node": ">= 4" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/text-table": { @@ -7013,207 +6528,159 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tinymce": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.0.0.tgz", - "integrity": "sha512-aWBXuV1S+JaZUoteLgOoDv9Ra7wcohpRFoHhldoRWUg9fdA36zC9XPjWfxNgzaANqKdOICxZ3tguLmi3RLtiLA==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "version": "5.10.4", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.4.tgz", + "integrity": "sha512-L0ivAhGu7bEo6cUBrCzhtKlkIQqG2sTcL+uu7soMSxrECQIC5VwUnzp9HCEf+fRl36q6zavLV48lf8jelj+gXA==" }, "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "dependencies": { + "glob": "^7.1.2" + } + }, + "node_modules/true-case-path/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "dependencies": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "~2.1.24" }, "engines": { "node": ">= 0.6" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -7224,19 +6691,22 @@ } }, "node_modules/unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/unpipe": { "version": "1.0.0", @@ -7247,152 +6717,66 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, "node_modules/url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "dependencies": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/url-loader/node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "node_modules/url-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "dependencies": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" + "node": ">=8.9.0" } }, "node_modules/util-deprecate": { @@ -7401,6 +6785,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -7411,9 +6801,9 @@ } }, "node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, "bin": { @@ -7421,11 +6811,21 @@ } }, "node_modules/v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -7435,24 +6835,31 @@ "node": ">= 0.8" } }, - "node_modules/vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { - "indexof": "0.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "node_modules/watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "dependencies": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/wbuf": { @@ -7464,283 +6871,342 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "node_modules/webpack": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.1.tgz", - "integrity": "sha512-dY3KyQIVeg6cDPj9G5Bnjy9Pt9SoCpbNWl0RDKHstbd3MWe0dG9ri4RQRpCm43iToy3zoA1IMOpFkJ8Clnc7FQ==", + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6.11.5" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-cli": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz", - "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "dependencies": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.4" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=6.11.5" + "node": ">=10.13.0" }, "peerDependencies": { - "webpack": "4.x.x" + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/webpack-cli/node_modules/camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-cli/node_modules/yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.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 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "node_modules/webpack-cli/node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node": ">= 10" } }, "node_modules/webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "dependencies": { - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "range-parser": "^1.0.3", - "webpack-log": "^2.0.0" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/webpack-dev-server": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", - "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "dev": true, "dependencies": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", - "import-local": "^2.0.0", - "internal-ip": "^3.0.1", - "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "schema-utils": "^1.0.0", - "selfsigned": "^1.9.1", - "semver": "^5.6.0", - "serve-index": "^1.7.2", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "3.4.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.2" + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 6.11.5" + "node": ">= 12.13.0" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "node": ">= 12.13.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "dependencies": { - "lodash": "^4.17.5" - } - }, - "node_modules/webpack-merge/node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "node_modules/webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" }, "engines": { - "node": ">= 4" + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "dependencies": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" }, "engines": { @@ -7748,105 +7214,79 @@ } }, "node_modules/websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, "engines": { "node": ">=0.8.0" } }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "dependencies": { - "errno": "~0.1.7" + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -7855,43 +7295,40 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "node_modules/ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" + "engines": { + "node": ">=10.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true, - "engines": { - "node": ">=0.4" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/yaml-loader": { @@ -7904,242 +7341,592 @@ } }, "node_modules/yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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 || ^4.0.0", - "yargs-parser": "^10.1.0" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "camelcase": "^4.1.0" + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" } }, "node_modules/zip-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.0.1.tgz", - "integrity": "sha512-c+eUhhkDpaK87G/py74wvWLtz2kzMPNCCkUApkun50ssE0oQliIQzWpTnwjB+MTKVIf2tGzIgHyqW/Y+W77ecQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", "dev": true, "dependencies": { - "archiver-utils": "^2.0.0", - "compress-commons": "^1.2.0", - "readable-stream": "^2.0.0" + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 6" + "node": ">= 10" } } }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.16.7" } }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" } }, "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true - }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" } }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -8147,445 +7934,403 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.7.tgz", - "integrity": "sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, "requires": {} }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, - "ajv": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", - "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" }, "dependencies": { - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true } } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} - }, "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, "archiver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.0.0.tgz", - "integrity": "sha512-5QeR6Xc5hSA9X1rbQfcuQ6VZuUXOaEdB65Dhmk9duuRJHYif/ZyJfuyJqsQrj34PFjU5emv5/MmfgA8un06onw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", "dev": true, "requires": { - "archiver-utils": "^2.0.0", - "async": "^2.0.0", + "archiver-utils": "^2.1.0", + "async": "^3.2.3", "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "zip-stream": "^2.0.1" + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" } }, "archiver-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.0.0.tgz", - "integrity": "sha512-JRBgcVvDX4Mwu2RBF8bBaHcQCSxab7afsxAPYDQ5W+19quIPP5CfKE7Ql+UHs9wYvwsaNR8oDuhtf5iqrKmzww==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", "dev": true, "requires": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", - "lodash.assign": "^4.2.0", "lodash.defaults": "^4.2.0", "lodash.difference": "^4.5.0", "lodash.flatten": "^4.4.0", "lodash.isplainobject": "^4.0.6", - "lodash.toarray": "^4.4.0", "lodash.union": "^4.6.0", "normalize-path": "^3.0.0", "readable-stream": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" } }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assets-webpack-plugin": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/assets-webpack-plugin/-/assets-webpack-plugin-3.9.7.tgz", - "integrity": "sha512-yxo4MlSb++B88qQFE27Wf56ykGaDHZeKcSbrstSFOOwOxv33gWXtM49+yfYPSErlXPAMT5lVy3YPIhWlIFjYQw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/assets-webpack-plugin/-/assets-webpack-plugin-7.1.1.tgz", + "integrity": "sha512-HwsDcu9UR9kv7AtiyMpUO9fARn94SbrLzw5+aQ59RnOZJeet+EVHmOrMwXl8fZ8cZmdZ9Sbl1/l+fn7ymiyfMg==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "escape-string-regexp": "^1.0.3", - "lodash.assign": "^4.2.0", - "lodash.merge": "^4.6.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true - } + "camelcase": "^6.0.0", + "escape-string-regexp": "^4.0.0", + "lodash": "^4.17.21" } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, "binary-extensions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", - "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", - "dev": true - }, "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, "requires": { - "bytes": "3.0.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -8595,10 +8340,16 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -8609,23 +8360,36 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "bonjour-service": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", + "integrity": "sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8637,171 +8401,47 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", - "dev": true, - "requires": { - "pako": "~1.0.5" + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" } }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "bundle-loader": { @@ -8816,289 +8456,274 @@ "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "caniuse-lite": { + "version": "1.0.30001341", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", + "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", "dev": true }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "is-glob": "^4.0.1" } } } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "source-map": "~0.6.0" } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { + "clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", "dev": true, "requires": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" } }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.43.0 < 2" } }, "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" }, @@ -9117,6 +8742,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -9126,44 +8757,26 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, - "console-browserify": { + "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } }, "content-type": { "version": "1.0.4", @@ -9172,9 +8785,9 @@ "dev": true }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, "cookie-signature": { @@ -9183,347 +8796,173 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - } + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true }, "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "requires": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "css-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz", - "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "loader-utils": "^1.2.1", - "lodash": "^4.17.11", - "postcss": "^7.0.6", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.3", - "postcss-modules-scope": "^2.0.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" } }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "ms": "^2.1.1" + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" } }, "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { - "execa": "^0.10.0", - "ip-regex": "^2.1.0" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true } } }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" + "execa": "^5.0.0" } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -9531,49 +8970,87 @@ "dev": true }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ee-first": { @@ -9582,25 +9059,22 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } + "electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -9609,35 +9083,80 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "prr": "~1.0.1" + "is-arrayish": "^0.2.1" } }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -9645,86 +9164,113 @@ "dev": true }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, "eslint": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", - "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.0", - "esquery": "^1.0.1", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", - "js-yaml": "^3.12.0", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.0.2", - "text-table": "^0.2.0" + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } } }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", - "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", "dev": true, "requires": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { @@ -9733,33 +9279,33 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -9769,144 +9315,69 @@ "dev": true }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, @@ -9914,7 +9385,7 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "debug": { @@ -9926,115 +9397,51 @@ "ms": "2.0.0" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, - "extend-shallow": { + "extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -10043,104 +9450,80 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" } }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^3.0.4" } }, "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } } } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -10161,147 +9544,67 @@ } } }, - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, - "flush-write-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.0.tgz", - "integrity": "sha512-6MHED/cmsyux1G4/Cek2Z776y9t7WCNd3h2h/HW91vFeU7pzMhA8XvAlDhHcanG5IWuIh/xcC7JASY4WQpG6xg==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true }, "follow-redirects": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", - "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -10309,28 +9612,31 @@ "dev": true }, "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha1-QU0BEM3QZwVzTQVWUsVBEmDDGr0=", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "minipass": "^3.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10338,153 +9644,161 @@ "dev": true }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "dev": true, - "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, - "chownr": { - "version": "1.1.1", - "bundled": true, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, "requires": { - "ms": "2.0.0" + "brace-expansion": "^2.0.1" } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, + } + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globule": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { "glob": { - "version": "7.1.3", - "bundled": true, + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10494,455 +9808,10 @@ "path-is-absolute": "^1.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -10950,166 +9819,80 @@ } } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" + "lru-cache": "^6.0.0" } }, "hpack.js": { @@ -11122,12 +9905,90 @@ "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-deceiver": { @@ -11137,98 +9998,144 @@ "dev": true }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + } } }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz", - "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "requires": { - "postcss": "^7.0.5" - } + "requires": {} }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -11236,13 +10143,13 @@ } }, "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" } }, "imurmurhash": { @@ -11251,10 +10158,16 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, "inflight": { @@ -11268,173 +10181,57 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", - "dev": true - }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "dev": true, - "requires": { - "ansi-regex": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", - "dev": true, - "requires": { - "default-gateway": "^2.6.0", - "ipaddr.js": "^1.5.2" - } - }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "has": "^1.0.3" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extglob": { @@ -11444,63 +10241,37 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -11511,29 +10282,26 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } }, "isarray": { "version": "1.0.0", @@ -11553,6 +10321,40 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11560,18 +10362,18 @@ "dev": true }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, "json-loader": { @@ -11580,10 +10382,22 @@ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -11592,110 +10406,142 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "minimist": "^1.2.0" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "requires": { "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.defaults": { @@ -11723,15 +10569,15 @@ "dev": true }, "lodash.merge": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.toarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", - "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, "lodash.union": { @@ -11740,90 +10586,95 @@ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "requires": { - "pify": "^3.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "memfs": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.3.tgz", + "integrity": "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg==", "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" + "fs-monkey": "1.0.3" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } } }, "merge-descriptors": { @@ -11832,6 +10683,12 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -11839,61 +10696,46 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "1.52.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true }, "minimalistic-assert": { @@ -11902,147 +10744,137 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" } }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "mootools": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/mootools/-/mootools-1.5.2.tgz", "integrity": "sha1-H93xtOCp5l0g1IO5tLCOHoexFho=" }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true, - "optional": true + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true }, "natural-compare": { "version": "1.4.0", @@ -12051,79 +10883,171 @@ "dev": true }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "0.0.4" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" }, "dependencies": { - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } } } }, + "node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true + }, + "node-sass": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.1.tgz", + "integrity": "sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^8.4.1", + "npmlog": "^5.0.0", + "request": "^2.88.0", + "sass-graph": "4.0.0", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -12131,18 +11055,39 @@ "dev": true }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dev": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { @@ -12151,54 +11096,11 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "dev": true }, "obuf": { "version": "1.1.2", @@ -12207,18 +11109,18 @@ "dev": true }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "requires": { "ee-first": "1.1.1" } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -12231,217 +11133,141 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "dependencies": { - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true - }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -12450,16 +11276,16 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-regexp": { @@ -12468,185 +11294,116 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "requires": { - "postcss": "^7.0.5" - } + "requires": {} }, "postcss-modules-local-by-default": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz", - "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6", - "postcss-value-parser": "^3.3.1" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz", - "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6" + "postcss-selector-parser": "^6.0.4" } }, "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "promise-inflight": { @@ -12655,69 +11412,40 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true } } }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -12725,70 +11453,54 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -12797,130 +11509,208 @@ } }, "raw-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", - "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" } }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "resolve": "^1.9.0" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" } }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "require-yaml": { @@ -12929,22 +11719,6 @@ "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", "requires": { "js-yaml": "" - }, - "dependencies": { - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } } }, "requires-port": { @@ -12953,137 +11727,148 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" }, "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "sass-graph": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.0.tgz", + "integrity": "sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "scss-tokenizer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz", + "integrity": "sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ==", + "dev": true, + "requires": { + "js-base64": "^2.4.3", + "source-map": "^0.7.1" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "select-hose": { @@ -13093,39 +11878,42 @@ "dev": true }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "^1" } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -13135,27 +11923,38 @@ "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -13181,24 +11980,54 @@ "ms": "2.0.0" } }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true } } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.18.0" } }, "set-blocking": { @@ -13207,302 +12036,157 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "kind-of": "^6.0.2" } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "socks-proxy-agent": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dev": true, "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" } }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -13524,28 +12208,6 @@ "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -13553,225 +12215,224 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" } } } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - } + "requires": {} }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, - "table": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", - "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", - "dev": true, - "requires": { - "ajv": "^6.6.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.0.0", - "string-width": "^2.1.1" - } - }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" } }, "terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", "dev": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.9" + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } } } }, "terser-webpack-plugin": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", - "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", "dev": true, "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", - "terser": "^3.16.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "terser": "^5.7.2" } }, "text-table": { @@ -13780,175 +12441,126 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, "tinymce": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.0.0.tgz", - "integrity": "sha512-aWBXuV1S+JaZUoteLgOoDv9Ra7wcohpRFoHhldoRWUg9fdA36zC9XPjWfxNgzaANqKdOICxZ3tguLmi3RLtiLA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-buffer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } + "version": "5.10.4", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.4.tgz", + "integrity": "sha512-L0ivAhGu7bEo6cUBrCzhtKlkIQqG2sTcL+uu7soMSxrECQIC5VwUnzp9HCEf+fRl36q6zavLV48lf8jelj+gXA==" }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "mime-types": "~2.1.24" } }, "unique-filename": { @@ -13961,18 +12573,18 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unpipe": { @@ -13981,140 +12593,57 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" }, "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } } } }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -14122,41 +12651,52 @@ "dev": true }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "indexof": "0.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" } }, "wbuf": { @@ -14168,325 +12708,304 @@ "minimalistic-assert": "^1.0.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.1.tgz", - "integrity": "sha512-dY3KyQIVeg6cDPj9G5Bnjy9Pt9SoCpbNWl0RDKHstbd3MWe0dG9ri4RQRpCm43iToy3zoA1IMOpFkJ8Clnc7FQ==", + "version": "5.72.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz", + "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" }, "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true } } }, "webpack-cli": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz", - "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.4" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" }, "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.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 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "requires": { - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "range-parser": "^1.0.3", - "webpack-log": "^2.0.0" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } } }, "webpack-dev-server": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", - "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz", + "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==", "dev": true, "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", - "import-local": "^2.0.0", - "internal-ip": "^3.0.1", - "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "schema-utils": "^1.0.0", - "selfsigned": "^1.9.1", - "semver": "^5.6.0", - "serve-index": "^1.7.2", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "3.4.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.2" + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "ms": "^2.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { - "lodash": "^4.17.5" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", - "dev": true - } - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { - "errno": "~0.1.7" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "wrappy": { @@ -14495,37 +13014,23 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "ws": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "requires": {} }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yaml-loader": { @@ -14538,43 +13043,43 @@ } }, "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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 || ^4.0.0", - "yargs-parser": "^10.1.0" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "dependencies": { + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + } } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true }, "zip-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.0.1.tgz", - "integrity": "sha512-c+eUhhkDpaK87G/py74wvWLtz2kzMPNCCkUApkun50ssE0oQliIQzWpTnwjB+MTKVIf2tGzIgHyqW/Y+W77ecQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", "dev": true, "requires": { - "archiver-utils": "^2.0.0", - "compress-commons": "^1.2.0", - "readable-stream": "^2.0.0" + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" } } } diff --git a/package.json b/package.json index 38810fff..c2dcce71 100644 --- a/package.json +++ b/package.json @@ -8,22 +8,25 @@ "url": "https://git.verdnatura.es/hedera-web" }, "devDependencies": { - "archiver": "^3.0.0", - "assets-webpack-plugin": "^3.9.7", + "archiver": "^5.3.1", + "assets-webpack-plugin": "^7.1.1", "bundle-loader": "^0.5.6", - "css-loader": "^2.1.0", - "eslint": "^5.13.0", - "file-loader": "^3.0.1", - "fs-extra": "^5.0.0", - "glob": "^7.1.3", + "css-loader": "^6.7.1", + "eslint": "^8.15.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "glob": "^8.0.3", + "html-webpack-plugin": "^5.5.0", "json-loader": "^0.5.7", - "raw-loader": "^1.0.0", - "style-loader": "^0.23.1", - "url-loader": "^1.1.2", - "webpack": "^4.29.1", - "webpack-cli": "^3.2.3", - "webpack-dev-server": "^3.1.14", - "webpack-merge": "^4.2.1", + "node-sass": "^7.0.1", + "raw-loader": "^4.0.2", + "sass-loader": "^12.6.0", + "style-loader": "^3.3.1", + "url-loader": "^4.1.1", + "webpack": "^5.72.1", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.9.0", + "webpack-merge": "^5.8.0", "yaml-loader": "^0.5.0" }, "dependencies": { @@ -33,7 +36,8 @@ "tinymce": "^5.0.0" }, "scripts": { - "dev": "webpack-dev-server --progress --colors --hot", + "dev": "webpack serve --open", + "back": "cd ../salix && NODE_ENV=test gulp backOnly", "build": "rm -rf build/ ; webpack", "clean": "rm -rf build/" } diff --git a/pages/main/ui.php b/pages/main/ui.php index 52806c58..7631cfb7 100644 --- a/pages/main/ui.php +++ b/pages/main/ui.php @@ -15,6 +15,7 @@ $result = $db->query('SELECT name, content FROM metatag'); <link rel="icon" type="image/png" href="image/favicon/favicon.png"/> <link rel="icon" type="image/svg+xml" href="image/icon.svg" sizes="any"/> <link rel="manifest" href="<?=$dir?>/manifest.json"/> + <link rel="stylesheet" href="https://fonts.sandbox.google.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,400,0,0"/> <meta name="theme-color" content="#333333"/> <meta name="content-language" content="<?=$lang?>"/> diff --git a/web/html.php b/web/html.php index 1f72e134..cf0f6ad8 100644 --- a/web/html.php +++ b/web/html.php @@ -30,15 +30,21 @@ function getWebpackAssets() { if (_DEV_MODE) { $devServerPort = $wpConfig->devServerPort; $host = $_SERVER['SERVER_NAME']; - $serverPath = "http://$host:$devServerPort/"; + $serverPath = "http://$host:$devServerPort"; } $wpAssets = json_decode(file_get_contents("$buildDir/webpack-assets.json")); $jsFiles = []; foreach ($wpAssets as $name => $asset) - if (!empty($name) && $name != '_empty_' && property_exists($asset, 'js')) + if (!empty($name) + && $name != '_empty_' + && $name != 'main' + && property_exists($asset, 'js')) $jsFiles[] = $serverPath . $asset->js; + $jsFiles[] = $serverPath . $wpAssets->{''}->js[0]; + $jsFiles[] = $serverPath . $wpAssets->main->js; + return $jsFiles; } diff --git a/webpack.config.js b/webpack.config.js index 547379d5..127e5c99 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,15 +1,15 @@ -var path = require('path'); -var webpack = require('webpack'); -var AssetsWebpackPlugin = require('assets-webpack-plugin'); -var merge = require('webpack-merge'); -var wpConfig = require('./webpack.config.json'); +const path = require('path'); +const webpack = require('webpack'); +const AssetsWebpackPlugin = require('assets-webpack-plugin'); +const merge = require('webpack-merge').merge; +const wpConfig = require('./webpack.config.json'); let env = process.env.NODE_ENV || 'development'; -var devMode = env === 'development'; -var outputPath = path.join(__dirname, wpConfig.buildDir); -var publicPath = wpConfig.buildDir +'/'; +const devMode = env === 'development'; +const outputPath = path.join(__dirname, wpConfig.buildDir); +const publicPath = '/' + wpConfig.buildDir + '/'; -var baseConfig = { +const baseConfig = { entry: wpConfig.entry, mode: devMode ? 'development' : 'production', output: { @@ -18,10 +18,31 @@ var baseConfig = { }, module: { rules: [ - { test: /\.css$/, loader: 'style-loader!css-loader' }, - { test: /\.yml$/, loader: 'json-loader!yaml-loader' }, - { test: /\.xml$/, loader: 'raw-loader' }, - { test: /\.ttf$/, loader: 'file-loader' } + { + test: /\.css$/, + use: ['style-loader', 'css-loader'], + }, { + test: /\.yml$/, + use: ['json-loader', 'yaml-loader'] + }, { + test: /\.xml$/, + use: 'raw-loader' + }, { + test: /\.ttf$/, + type: 'asset/resource' + }, { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + { + loader: 'sass-loader', + options: { + sourceMap: true + } + } + ] + } ] }, resolve: { @@ -56,30 +77,31 @@ var baseConfig = { } }; -var prodConfig = { +const prodConfig = { output: { filename: '[name].[chunkhash].js', chunkFilename: 'chunk.[id].[chunkhash].js' }, - plugins: [ - new webpack.HashedModuleIdsPlugin() - ], + optimization: { + moduleIds: 'hashed' + }, devtool: 'source-map' }; -var devConfig = { +const devConfig = { output: { filename: '[name].js', chunkFilename: 'chunk.[id].js' }, - plugins: [ - new webpack.NamedModulesPlugin() - ], + optimization: { + moduleIds: 'named' + }, devServer: { host: '0.0.0.0', + static: __dirname, port: wpConfig.devServerPort, headers: {'Access-Control-Allow-Origin': '*'}, - stats: { chunks: false }, + //stats: { chunks: false }, proxy: { '/api': 'http://localhost:3000', '/': { @@ -91,5 +113,5 @@ var devConfig = { devtool: 'eval' }; -var mrgConfig = devMode ? devConfig : prodConfig; +const mrgConfig = devMode ? devConfig : prodConfig; module.exports = merge(baseConfig, mrgConfig); diff --git a/webpack.config.json b/webpack.config.json index 165f3eb4..c1d31a88 100644 --- a/webpack.config.json +++ b/webpack.config.json @@ -1,5 +1,5 @@ { "buildDir": "build", "devServerPort": 9000, - "entry": {"main": "./app.js"} + "entry": "./app.js" } \ No newline at end of file -- 2.40.1 From 11ba60914469c91c33264946c7b3e46e2e83d80f Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Sat, 21 May 2022 23:32:06 +0200 Subject: [PATCH 04/10] Checkpoint --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c2dcce71..cc6d5ac9 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "tinymce": "^5.0.0" }, "scripts": { - "dev": "webpack serve --open", + "front": "webpack serve --open", "back": "cd ../salix && NODE_ENV=test gulp backOnly", "build": "rm -rf build/ ; webpack", "clean": "rm -rf build/" -- 2.40.1 From 546e67d6f69bf808cdc21804aa82bde42f3f77ee Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Tue, 24 May 2022 12:18:44 +0200 Subject: [PATCH 05/10] Checkpoint --- forms/account/address-list/address-list.js | 36 +- forms/account/address-list/locale/ca.yml | 1 + forms/account/address-list/locale/en.yml | 1 + forms/account/address-list/locale/es.yml | 1 + forms/account/address-list/locale/fr.yml | 1 + forms/account/address-list/locale/pt.yml | 1 + forms/account/address-list/style.css | 43 +- forms/account/address-list/ui.xml | 29 +- forms/cms/home/style.css | 6 +- forms/cms/home/ui.xml | 8 +- forms/ecomerce/basket/basket.js | 53 +- forms/ecomerce/basket/style.css | 73 +- forms/ecomerce/basket/ui.xml | 12 +- forms/ecomerce/catalog/catalog.js | 5 - forms/ecomerce/catalog/ui.xml | 32 +- forms/ecomerce/checkout/locale/ca.yml | 2 +- forms/ecomerce/checkout/locale/en.yml | 2 +- forms/ecomerce/checkout/locale/es.yml | 2 +- forms/ecomerce/checkout/locale/fr.yml | 2 +- forms/ecomerce/checkout/locale/pt.yml | 2 +- forms/ecomerce/checkout/style.css | 8 +- forms/ecomerce/checkout/ui.xml | 4 +- forms/ecomerce/orders/style.css | 48 +- forms/ecomerce/orders/ui.xml | 31 +- forms/ecomerce/ticket/locale/ca.yml | 2 + forms/ecomerce/ticket/locale/en.yml | 2 + forms/ecomerce/ticket/locale/es.yml | 2 + forms/ecomerce/ticket/locale/fr.yml | 2 + forms/ecomerce/ticket/locale/pt.yml | 2 + forms/ecomerce/ticket/style.css | 80 +-- forms/ecomerce/ticket/ui.xml | 5 +- forms/news/news/ui.xml | 11 +- js/db/iterator.js | 103 ++- js/db/model.js | 796 +++++++++------------ js/db/result-set.js | 19 +- js/db/simple-iterator.js | 50 +- js/hedera/form.js | 90 ++- js/hedera/gui.scss | 52 +- js/hedera/opensans.ttf | Bin 0 -> 129796 bytes js/hedera/style.scss | 17 +- js/htk/field/bar-button.js | 3 +- js/htk/field/button.js | 11 +- js/htk/field/calendar.js | 22 +- js/htk/field/html.js | 8 +- js/htk/htk.js | 3 +- js/htk/icon.js | 2 +- js/htk/repeater.js | 4 +- js/htk/style/classes.scss | 20 + js/htk/{style.scss => style/main.scss} | 223 ++++-- js/htk/style/variables.scss | 2 + js/vn/builder.js | 513 ++++++------- js/vn/date.js | 2 +- js/vn/locale/ca.yml | 1 + js/vn/locale/en.yml | 1 + js/vn/locale/es.yml | 3 +- js/vn/locale/fr.yml | 1 + js/vn/locale/mn.yml | 1 + js/vn/locale/pt.yml | 1 + 58 files changed, 1176 insertions(+), 1281 deletions(-) create mode 100644 js/hedera/opensans.ttf create mode 100644 js/htk/style/classes.scss rename js/htk/{style.scss => style/main.scss} (78%) create mode 100644 js/htk/style/variables.scss diff --git a/forms/account/address-list/address-list.js b/forms/account/address-list/address-list.js index 527cc6da..1be4719e 100644 --- a/forms/account/address-list/address-list.js +++ b/forms/account/address-list/address-list.js @@ -3,39 +3,37 @@ Hedera.AddressList = new Class ({ Extends: Hedera.Form - ,activate: function () - { - this.$('user-model').setInfo ('c', 'myClient', 'hedera'); - this.$('addresses').setInfo ('a', 'myAddress', 'hedera'); + ,activate: function() { + this.$('user-model').setInfo('c', 'myClient', 'hedera'); + this.$('addresses').setInfo('a', 'myAddress', 'hedera'); } - ,onAddAddressClick: function () - { - this.hash.set ({ + ,onAddAddressClick: function() { + this.hash.set({ form: 'account/address', address: 0 }); } - ,onReturnClick: function () - { + ,onReturnClick: function() { window.history.back(); } + + ,onSetDefaultClick: function() { + Htk.Toast.showMessage(_('DefaultAddressModified')); + } - ,onRemoveAddressClick: function (button, form) - { - if (confirm (_('AreYouSureDeleteAddress'))) - { - form.set ('isActive', false); - form.refresh (); + ,onRemoveAddressClick: function(button, form) { + if (confirm(_('AreYouSureDeleteAddress'))) { + form.set('isActive', false); + form.refresh(); } } - ,onEditAddressClick: function (button, form) - { - this.hash.set ({ + ,onEditAddressClick: function(button, form) { + this.hash.set({ form: 'account/address', - address: form.get ('id') + address: form.get('id') }); } }); diff --git a/forms/account/address-list/locale/ca.yml b/forms/account/address-list/locale/ca.yml index cf541723..cf957550 100644 --- a/forms/account/address-list/locale/ca.yml +++ b/forms/account/address-list/locale/ca.yml @@ -5,3 +5,4 @@ SetAsDefault: Establir com per defecte RemoveAddress: Esborrar direcció EditAddress: Modificar direcció AreYouSureDeleteAddress: Estàs segur de que vols eliminar la direcció? +DefaultAddressModified: Adreça per defecte modificada diff --git a/forms/account/address-list/locale/en.yml b/forms/account/address-list/locale/en.yml index df5b564f..75bdb2ac 100644 --- a/forms/account/address-list/locale/en.yml +++ b/forms/account/address-list/locale/en.yml @@ -5,3 +5,4 @@ SetAsDefault: Set as default RemoveAddress: Remove address EditAddress: Edit address AreYouSureDeleteAddress: Are you sure you want to delete the address? +DefaultAddressModified: Default address modified diff --git a/forms/account/address-list/locale/es.yml b/forms/account/address-list/locale/es.yml index 66c4576d..50a29c77 100644 --- a/forms/account/address-list/locale/es.yml +++ b/forms/account/address-list/locale/es.yml @@ -5,3 +5,4 @@ SetAsDefault: Establecer como predeterminada RemoveAddress: Borrar dirección EditAddress: Modificar dirección AreYouSureDeleteAddress: ¿Estás seguro de que quieres borrar la dirección? +DefaultAddressModified: Dirección por defecto modificada diff --git a/forms/account/address-list/locale/fr.yml b/forms/account/address-list/locale/fr.yml index 9126d4fb..8530ec22 100644 --- a/forms/account/address-list/locale/fr.yml +++ b/forms/account/address-list/locale/fr.yml @@ -5,3 +5,4 @@ SetAsDefault: Définir par défaut RemoveAddress: Supprimer l'adresse EditAddress: Changement d'adresse AreYouSureDeleteAddress: Souhaitez-vous vraiment supprier l'adresse? +DefaultAddressModified: Adresse par défaut modifiée diff --git a/forms/account/address-list/locale/pt.yml b/forms/account/address-list/locale/pt.yml index 4f5fd79a..7657ab26 100644 --- a/forms/account/address-list/locale/pt.yml +++ b/forms/account/address-list/locale/pt.yml @@ -5,3 +5,4 @@ SetAsDefault: Selecionar como pre-determinado RemoveAddress: Eliminar Morada EditAddress: Modificar Morada AreYouSureDeleteAddress: Tens certeza que queres eliminar esta morada? +DefaultAddressModified: Endereço padrão modificado diff --git a/forms/account/address-list/style.css b/forms/account/address-list/style.css index 8bd9a259..661afa20 100644 --- a/forms/account/address-list/style.css +++ b/forms/account/address-list/style.css @@ -1,48 +1,15 @@ -.address-list -{ +.address-list { padding: 1em; } -.address-list .box -{ +.address-list .box { max-width: 30em; } -.address-list .form -{ +.address-list .form { margin: 0 auto; max-width: 25em; padding: 2em; } -.address -{ - padding: 1em; - border-bottom: 1px solid #DDD; -} -.address p -{ - margin: 0.2em 0; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.address p.important -{ - font-size: 1.2em; -} -.address .actions -{ - float: right; -} -.address .actions > .htk-button -{ - margin: 0; -} -.address .actions > * -{ - display: inline-block; - vertical-align: middle; -} -.address .actions > input -{ - margin: .6em; +.address-list .htk-list .side { + padding-right: 16px; } diff --git a/forms/account/address-list/ui.xml b/forms/account/address-list/ui.xml index f43d945a..e113593b 100644 --- a/forms/account/address-list/ui.xml +++ b/forms/account/address-list/ui.xml @@ -33,15 +33,28 @@ id="default-address" column="defaultAddressFk" form="user-form"/> - <htk-repeater model="addresses" form-id="iter"> + <htk-repeater model="addresses" form-id="iter" class="htk-list"> <custom> - <div class="address"> - <div class="actions"> + <div class="address item" on-click="onSetDefaultClick"> + <div class="side"> <htk-radio form="iter" column="id" radio-group="default-address" tip="_SetAsDefault"/> + </div> + <div class="content"> + <p class="important"> + {{iter.nickname}} + </p> + <p> + {{iter.street}} + </p> + <p> + {{iter.postalCode}}, {{iter.city}} + </p> + </div> + <div class="actions"> <htk-button form="iter" column="id" @@ -55,16 +68,6 @@ icon="edit" on-click="onEditAddressClick"/> </div> - <p class="important"> - <htk-text form="iter" column="nickname"/> - </p> - <p> - <htk-text form="iter" column="street"/> - </p> - <p> - <htk-text form="iter" column="postalCode"/>, - <htk-text form="iter" column="city"/> - </p> </div> </custom> </htk-repeater> diff --git a/forms/cms/home/style.css b/forms/cms/home/style.css index 5f35e4f3..cabc2689 100644 --- a/forms/cms/home/style.css +++ b/forms/cms/home/style.css @@ -43,9 +43,13 @@ } .new-text { margin: 1.5em 0; + font-family: 'Open Sans'; + line-height: 1.3em; } .new-text a { - color: blue; + color: #6a1; +} +.new-text a:hover { text-decoration: underline; } .new-text li { diff --git a/forms/cms/home/ui.xml b/forms/cms/home/ui.xml index d4bc7d88..2ec3e7c2 100644 --- a/forms/cms/home/ui.xml +++ b/forms/cms/home/ui.xml @@ -11,7 +11,7 @@ </div> <div id="form" class="home"> <div class="column mansonry" id="news-column"> - <htk-repeater form-id="new"> + <htk-repeater form-id="iter"> <db-model property="model"> <custom> SELECT title, text, image, id FROM news @@ -25,14 +25,14 @@ <htk-image directory="news" subdir="full" - form="new" + form="iter" column="image" editable="false" full-dir="full"/> <div class="top"> - <h2><htk-text form="new" column="title"/></h2> + <h2>{{iter.title}}</h2> <div class="new-text"> - <htk-html form="new" column="text"/> + <htk-html value="{{iter.text}}"/> </div> </div> </div> diff --git a/forms/ecomerce/basket/basket.js b/forms/ecomerce/basket/basket.js index 2f1239ac..a4366e6a 100644 --- a/forms/ecomerce/basket/basket.js +++ b/forms/ecomerce/basket/basket.js @@ -3,56 +3,43 @@ Hedera.Basket = new Class ({ Extends: Hedera.Form - ,open: function () - { - this.close (); + ,open: function() { + this.close(); this.isOpen = true; - Hedera.BasketChecker.check (this.conn, - this.onBasketCheck.bind (this)); + Hedera.BasketChecker.check(this.conn, + this.onBasketCheck.bind(this)); } - ,onBasketCheck: function (isOk) - { + ,onBasketCheck: function(isOk) { if (isOk) - this.loadUi (); + this.loadUi(); } - ,activate: function () - { - this.$('items').setInfo ('bi', 'myBasketItem', 'hedera'); + ,activate: function() { + this.$('items').setInfo('bi', 'myBasketItem', 'hedera'); } - ,onConfigureClick: function () - { - Htk.Toast.showWarning (_('RememberReconfiguringImpact')); - this.hash.set ({form: 'ecomerce/checkout'}); + ,onConfigureClick: function() { + Htk.Toast.showWarning(_('RememberReconfiguringImpact')); + this.hash.set({form: 'ecomerce/checkout'}); } - ,onCatalogClick: function () - { - this.hash.set ({form: 'ecomerce/catalog'}); + ,onCatalogClick: function() { + this.hash.set({form: 'ecomerce/catalog'}); } - ,onCheckoutClick: function () - { - this.hash.set ({form: 'ecomerce/confirm'}); + ,onCheckoutClick: function() { + this.hash.set({form: 'ecomerce/confirm'}); } - ,repeaterFunc: function (res, form) - { - res.$('subtotal').value = this.subtotal (form); + ,onDeleteClick: function(button, form) { + if (confirm(_('ReallyDelete'))) + form.deleteRow(); } - ,onDeleteClick: function (button, form) - { - if (confirm (_('ReallyDelete'))) - form.deleteRow (); - } - - ,subtotal: function (form) - { - return form.get ('amount') * form.get ('price'); + ,subtotal: function(form) { + return form.get('amount') * form.get('price'); } }); diff --git a/forms/ecomerce/basket/style.css b/forms/ecomerce/basket/style.css index 2b0d1889..09abc932 100644 --- a/forms/ecomerce/basket/style.css +++ b/forms/ecomerce/basket/style.css @@ -1,28 +1,24 @@ -.basket -{ +.basket { padding: 1em; } -.basket .box -{ +.basket .box { max-width: 30em; margin: 0 auto; - padding: 0 2em; + padding: 30px; } -.basket .form > p -{ +.basket .form > p { margin: 0; font-size: 1.4em; color: white; text-align: right; } -.basket .head -{ - padding: 1.8em 0; +.basket .head { + padding-bottom: 30px; margin: 0; border-bottom: 1px solid #DDD; } -.basket .head p -{ +.basket .head p { + font-weight: bold; margin: 0; padding: 0; font-size: 1.4em; @@ -31,61 +27,48 @@ /* Lines */ -.basket .lines -{ - padding: .8em 0; +.basket .line { + display: flex; + gap: 20px; + margin: 24px 0; + height: 65px; } -.basket .line -{ - padding: 1em 0; +.basket .line:last-child { + margin-bottom: 0; } -.basket .line > .delete -{ - margin: -0.5em; - margin-top: 1em; - margin-right: .5em; - float: left; +.basket .line > .delete { + align-self: center; } -.basket .line > .photo -{ - margin-right: 1em; - float: left; +.basket .line > .photo { + flex: none; border-radius: 50%; - height: 4.25em; - width: 4.25em; + width: 65px; } -.basket .line > .info -{ - margin-left: 7.5em; +.basket .line > .info { + flex: 1; } -.basket .line > .info > h2 -{ +.basket .line > .info > h2 { font-size: 1em; font-weight: normal; padding: 0; padding-bottom: .1em; } -.basket .line > .info > p -{ +.basket .line > .info > p { margin: 0; } -.basket .line > .info > .tags -{ +.basket .line > .info > .tags { color: #777; } -.basket .line .subtotal -{ +.basket .line .subtotal { float: right; } /* Fields */ -.basket td.available-exceeded input -{ +.basket td.available-exceeded input { background-color: #FCC; } -.basket .icon > img -{ +.basket .icon > img { border-radius: 50%; } diff --git a/forms/ecomerce/basket/ui.xml b/forms/ecomerce/basket/ui.xml index 62b7b39b..a9de28ac 100644 --- a/forms/ecomerce/basket/ui.xml +++ b/forms/ecomerce/basket/ui.xml @@ -27,7 +27,7 @@ </p> </div> <div class="lines"> - <htk-repeater form-id="iter" renderer="repeaterFunc"> + <htk-repeater form-id="iter"> <db-model id="items" property="model" updatable="true"> SELECT bi.id, bi.amount, bi.price, i.longName item, i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7, @@ -60,19 +60,15 @@ <htk-text form="iter" column="item"/> </h2> <p class="tags"> - <htk-text form="iter" column="value5"/> - <htk-text form="iter" column="value6"/> - <htk-text form="iter" column="value7"/> + {{iter.value5}} {{iter.value6}} {{iter.value7}} </p> <p class="amount"> - <htk-text form="iter" column="amount"/> x - <htk-text form="iter" column="price" format="%.2d€"/> + {{iter.amount}} x {{Vn.Value.format(iter.price, '%.2d€')}} <span class="subtotal"> - <htk-text id="subtotal" format="%.2d€"/> + {{Vn.Value.format(iter.price * iter.amount, '%.2d€')}} </span> </p> </div> - <div class="clear"/> </div> </custom> </htk-repeater> diff --git a/forms/ecomerce/catalog/catalog.js b/forms/ecomerce/catalog/catalog.js index d34903e9..048706c5 100644 --- a/forms/ecomerce/catalog/catalog.js +++ b/forms/ecomerce/catalog/catalog.js @@ -103,11 +103,6 @@ Hedera.Catalog = new Class({ 'form': this.hash.get('form'), 'realm': form.get('id') }); - - var img = builder.$('image'); - img.src = 'image/family/black/'+ form.get('code') +'.svg'; - img.title = form.get('name'); - img.alt = img.title; } ,onRealmChange: function(param, newValue) { diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index 35a38fe8..dfb992f3 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -121,7 +121,7 @@ <div id="item-box" class="box item-box" - title="_AddToBasket"> + title="{{_('AddToBasket')}}"> <htk-image directory="catalog" subdir="200x200" @@ -131,34 +131,34 @@ full-dir="1600x900"/> <div class="item-info"> <h2> - <htk-text form="item" column="item"/> + {{item.item}} </h2> <p class="sub-name"> - <htk-text form="item" column="subName"/> + {{item.subName}} </p> <table class="tags"> <tr> - <td><htk-text form="item" column="tag5"/></td> - <td><htk-text form="item" column="value5"/></td> + <td>{{item.tag5}}</td> + <td>{{item.value5}}</td> </tr> <tr> - <td><htk-text form="item" column="tag6"/></td> - <td><htk-text form="item" column="value6"/></td> + <td>{{item.tag6}}</td> + <td>{{item.value6}}</td> </tr> <tr> - <td><htk-text form="item" column="tag7"/></td> - <td><htk-text form="item" column="value7"/></td> + <td>{{item.tag7}}</td> + <td>{{item.value7}}</td> </tr> </table> <div class="available-price"> <span class="grouping" title="_MinimalGrouping"> - <htk-text form="item" column="grouping" format="x%.0d"/> + {{Vn.Value.format(item.grouping, 'x%.0d')}} </span> <span class="available" title="_Available"> - <htk-text form="item" column="available"/> + {{item.available}} </span> <span class="price" title="_GroupingPrice"> - <htk-text form="item" column="price" format="%.2d€"/> + {{Vn.Value.format(item.price, 'x%.0d')}} </span> </div> </div> @@ -185,7 +185,7 @@ <div class="realms"> <htk-repeater model="realms-model" - form-id="realm-form" + form-id="form" renderer="realmRenderer" class="realms-box"> <db-model @@ -199,7 +199,11 @@ </db-model> <custom> <a id="link"> - <img id="image"/> + <img + id="image" + src="{{`image/family/black/${form.code}.svg`}}" + title="{{form.name}}" + alt="{{form.name}}"/> </a> </custom> </htk-repeater> diff --git a/forms/ecomerce/checkout/locale/ca.yml b/forms/ecomerce/checkout/locale/ca.yml index 5846dff5..41a84a8f 100644 --- a/forms/ecomerce/checkout/locale/ca.yml +++ b/forms/ecomerce/checkout/locale/ca.yml @@ -11,7 +11,7 @@ AddressQuestion: On vols rebre la comanda? AddressQuestionPickup: A què direcció vols associar la comanda? (Opcional) AgencyQuestion: Com vols rebre la comanda? PickupWarehouseQuestion: En quin magatzem vols recollir la comanda? -ConfirmToAccessCatalog: Confirma les dades per accedir al catàleg +ConfirmData: Confirma les dades Arrival: Arribada Pickup: Recollida Agency: Agència diff --git a/forms/ecomerce/checkout/locale/en.yml b/forms/ecomerce/checkout/locale/en.yml index 45a54a7b..c9c94c90 100644 --- a/forms/ecomerce/checkout/locale/en.yml +++ b/forms/ecomerce/checkout/locale/en.yml @@ -11,7 +11,7 @@ AddressQuestion: Where do you want to receive the order? AddressQuestionPickup: To which address do you want to associate the order? (Optional) AgencyQuestion: How you want to receive the order? PickupWarehouseQuestion: What store you want to pickup your order? -ConfirmToAccessCatalog: Confirm the data to access the catalog +ConfirmData: Confirm the data Arrival: Arrival Pickup: Pickup Agency: Agency diff --git a/forms/ecomerce/checkout/locale/es.yml b/forms/ecomerce/checkout/locale/es.yml index a699f3e0..b2276376 100644 --- a/forms/ecomerce/checkout/locale/es.yml +++ b/forms/ecomerce/checkout/locale/es.yml @@ -11,7 +11,7 @@ AddressQuestion: ¿Dónde quieres recibir el pedido? AddressQuestionPickup: ¿A qué dirección quieres asociar el pedido? (Opcional) AgencyQuestion: ¿Cómo quieres recibir el pedido? PickupWarehouseQuestion: ¿En qué almacén quieres recoger el pedido? -ConfirmToAccessCatalog: Confirma los datos para acceder al catálogo +ConfirmData: Confirma los datos Arrival: Llegada Pickup: Recogida Agency: Agencia diff --git a/forms/ecomerce/checkout/locale/fr.yml b/forms/ecomerce/checkout/locale/fr.yml index 5a04e06a..53166061 100644 --- a/forms/ecomerce/checkout/locale/fr.yml +++ b/forms/ecomerce/checkout/locale/fr.yml @@ -11,7 +11,7 @@ AddressQuestion: Adresse livraison? AddressQuestionPickup: À quelle adresse voulez-vous associer la commande? (Optionnel) AgencyQuestion: Agence de livraison PickupWarehouseQuestion: Dans quel magasin vuoulez-vous retirer votre commande? -ConfirmToAccessCatalog: Confirmez les coordonnées pour accéder au catalogue +ConfirmData: Confirmez les coordonnées Arrival: Arrivée Pickup: Retrait Agency: Agence diff --git a/forms/ecomerce/checkout/locale/pt.yml b/forms/ecomerce/checkout/locale/pt.yml index aa4b59e2..c6f76484 100644 --- a/forms/ecomerce/checkout/locale/pt.yml +++ b/forms/ecomerce/checkout/locale/pt.yml @@ -11,7 +11,7 @@ AddressQuestion: Onde queres receber a encomenda? AddressQuestionPickup: Para qual endereço deseja associar o pedido? (Opcional) AgencyQuestion: Como queres receber a encomenda? PickupWarehouseQuestion: Em qual armazém queres levantar a encomenda? -ConfirmToAccessCatalog: Confirme os dados para entrar no catálogo +ConfirmData: Confirme os dados Arrival: Chegada Pickup: Recolhida Agency: Agência diff --git a/forms/ecomerce/checkout/style.css b/forms/ecomerce/checkout/style.css index 7f928f4d..01e75703 100644 --- a/forms/ecomerce/checkout/style.css +++ b/forms/ecomerce/checkout/style.css @@ -16,7 +16,7 @@ .answers button, .answers p, .radio > div { - font-size: 1.4em; + font-size: 1.2em; } .answers .htk-select { max-width: 10em; @@ -54,13 +54,9 @@ padding: 0.5em; } .thin-calendar { - width: inherit; max-width: 24em; margin: 0 auto; - box-shadow: .05em .05em .2em rgba(0, 0, 0, .2); -} -.thin-calendar tr > th { - color: white; + box-shadow: none; } .htk-assistant .thin { float: right; diff --git a/forms/ecomerce/checkout/ui.xml b/forms/ecomerce/checkout/ui.xml index 47100763..69eecd9a 100644 --- a/forms/ecomerce/checkout/ui.xml +++ b/forms/ecomerce/checkout/ui.xml @@ -174,7 +174,7 @@ </htk-step> <htk-step name="confirm-delivery"> - <h2><t>ConfirmToAccessCatalog</t></h2> + <h2><t>ConfirmData</t></h2> <div class="answers target"> <p> <t>Arrival</t> @@ -192,7 +192,7 @@ </htk-step> <htk-step name="confirm-pickup"> - <h2><t>ConfirmToAccessCatalog</t></h2> + <h2><t>ConfirmData</t></h2> <div class="answers target"> <p> <t>Pickup</t> diff --git a/forms/ecomerce/orders/style.css b/forms/ecomerce/orders/style.css index 01d9ef4f..3dd75dbb 100644 --- a/forms/ecomerce/orders/style.css +++ b/forms/ecomerce/orders/style.css @@ -1,72 +1,44 @@ -.orders -{ +.orders { padding: 1em; } -.orders .box -{ +.orders .box { max-width: 25em; } /* Balance */ -.balance -{ +.balance { margin-right: .5em; } -.balance > * -{ +.balance > * { vertical-align: middle; } -.balance > .amount -{ +.balance > .amount { color: white; padding: 0.3em; } -.balance > .info -{ +.balance > .info { display: inline; cursor: pointer; height: 1.2em; cursor: pointer; } -.balance > .negative -{ +.balance > .negative { background-color: #EF5350; border-radius: 0.1em; box-shadow: 0 0 0.4em #666; } -.balance-popup -{ +.balance-popup { width: 25em; } -.balance-grid -{ +.balance-grid { width: 100%; margin: auto; } /* List */ -.orders .item -{ - display: block; - padding: 1em; - border-bottom: 1px solid #DDD; -} -.orders .item:hover -{ - background-color: rgba(1, 1, 1, 0.05); -} -.orders .item > p -{ - margin: .1em 0; -} -.orders .item > p.important -{ - font-size: 1.2em; -} -.orders .item > p.total -{ +.orders .htk-list .total { float: right; } diff --git a/forms/ecomerce/orders/ui.xml b/forms/ecomerce/orders/ui.xml index 8cf4a6bc..9f52ef70 100644 --- a/forms/ecomerce/orders/ui.xml +++ b/forms/ecomerce/orders/ui.xml @@ -39,30 +39,25 @@ </div> <div id="form" class="orders"> <div class="box confirmed"> - <htk-repeater form-id="iter" renderer="repeaterFunc"> + <htk-repeater form-id="iter" renderer="repeaterFunc" class="htk-list"> <db-model property="model" id="tickets"> <custom> CALL myTicket_list (NULL, NULL); </custom> </db-model> <custom> - <a id="link" class="item" title="_SeeOrder"> - <p class="important total"> - <htk-text form="iter" column="total" format="%.2d€"/> - </p> - <p class="important"> - <htk-text form="iter" column="landed" format="%D"/> - </p> - <p> - #<htk-text form="iter" column="id"/> - </p> - <p> - <htk-text form="iter" column="nickname"/> - </p> - <p> - <htk-text form="iter" column="agency"/> - </p> - <div class="clear"/> + <a id="link" class="item" title="{{_('SeeOrder')}}"> + <div class="content"> + <p class="important total"> + {{Vn.Value.format(iter.total, '%.2d€')}} + </p> + <p class="important"> + {{Vn.Value.format(iter.landed, '%D')}} + </p> + <p>#{{iter.id}}</p> + <p>{{iter.nickname}}</p> + <p>{{iter.agency}}</p> + </div> </a> </custom> </htk-repeater> diff --git a/forms/ecomerce/ticket/locale/ca.yml b/forms/ecomerce/ticket/locale/ca.yml index c0141846..680bc6d6 100644 --- a/forms/ecomerce/ticket/locale/ca.yml +++ b/forms/ecomerce/ticket/locale/ca.yml @@ -1,4 +1,6 @@ OrderDetail: Detall de l'encarrec +ShippingInformation: Dades d'enviament +DeliveryAddress: Adreça de lliurament Print delivery note: Imprimir albarà Agency: Agència Warehouse: Magatzem diff --git a/forms/ecomerce/ticket/locale/en.yml b/forms/ecomerce/ticket/locale/en.yml index 01412c9e..ae229f20 100644 --- a/forms/ecomerce/ticket/locale/en.yml +++ b/forms/ecomerce/ticket/locale/en.yml @@ -1,4 +1,6 @@ OrderDetail: Order detail +ShippingInformation: Shipping information +DeliveryAddress: Delivery address Print delivery note: Print delivery note Agency: Agency Warehouse: Store diff --git a/forms/ecomerce/ticket/locale/es.yml b/forms/ecomerce/ticket/locale/es.yml index 627786d3..f798dc7e 100644 --- a/forms/ecomerce/ticket/locale/es.yml +++ b/forms/ecomerce/ticket/locale/es.yml @@ -1,4 +1,6 @@ OrderDetail: Detalle del pedido +ShippingInformation: Datos de envío +DeliveryAddress: Dirección de entrega Print delivery note: Imprimir albarán Agency: Agencia Warehouse: Almacén diff --git a/forms/ecomerce/ticket/locale/fr.yml b/forms/ecomerce/ticket/locale/fr.yml index 6345329e..74cc068a 100644 --- a/forms/ecomerce/ticket/locale/fr.yml +++ b/forms/ecomerce/ticket/locale/fr.yml @@ -1,4 +1,6 @@ OrderDetail: Détails de la commande +ShippingInformation: Informations sur la livraison +DeliveryAddress: Addresse de livraison Print delivery note: Imprimer bulletin de livraison Agency: Agence Warehouse: Entrepôt diff --git a/forms/ecomerce/ticket/locale/pt.yml b/forms/ecomerce/ticket/locale/pt.yml index 2399b4fb..64bca977 100644 --- a/forms/ecomerce/ticket/locale/pt.yml +++ b/forms/ecomerce/ticket/locale/pt.yml @@ -1,4 +1,6 @@ OrderDetail: Detalhes da encomenda +ShippingInformation: Dados de envio +DeliveryAddress: Endereço de entrega Print delivery note: Imprimir nota de entrega Agency: Agência Warehouse: Armazém diff --git a/forms/ecomerce/ticket/style.css b/forms/ecomerce/ticket/style.css index 9fecbb6f..695c24e5 100644 --- a/forms/ecomerce/ticket/style.css +++ b/forms/ecomerce/ticket/style.css @@ -1,9 +1,7 @@ -.ticket -{ +.ticket { padding: 1em; } -.ticket .box -{ +.ticket .box { max-width: 30em; margin: 0 auto; padding: 2em; @@ -12,36 +10,29 @@ /* Header */ -.ticket .head -{ +.ticket .head { padding: 0; padding-bottom: .2em; border-bottom: 1px solid #DDD; margin-bottom: 1em; } -.ticket .address, -.ticket .total -{ - margin-top: .8em; +.ticket .head > div > div { + margin: 15px 0; } -.ticket .head > div -{ - padding-bottom: .8em; +.ticket .head > div > div:first-child { + margin: 0; } -.ticket .head p -{ - margin: .2em; +.ticket .head p { + margin: .2em 0; } -.ticket .head p.important -{ - font-size: 1.4em; +.ticket .head p.important { + font-size: 1.2rem; + font-weight: bold; } -.ticket .total -{ +.ticket .total { text-align: right; } -.ticket .packages -{ +.ticket .packages { margin-top: 1em; padding-top: 1em; border-top: 1px solid #DDD; @@ -50,47 +41,42 @@ /* Lines */ -.ticket .line -{ - padding: .5em 0; +.ticket .line { + display: flex; + gap: 20px; + margin: 24px 0; + height: 65px; } -.ticket .line > .photo -{ - margin-right: 1em; - float: left; +.ticket .line:last-child { + margin-bottom: 0; +} +.ticket .line > .photo { + flex: none; border-radius: 50%; - height: 4.25em; - width: 4.25em; + width: 65px; } -.ticket .line > .info -{ - margin-left: 5.25em; +.ticket .line > .info { + flex: 1; } -.ticket .line > .info > h2 -{ +.ticket .line > .info > h2 { font-size: 1em; font-weight: normal; padding: 0; padding-bottom: .1em; } -.ticket .line > .info > p -{ +.ticket .line > .info > p { margin: 0; } -.ticket .line > .info > .tags -{ +.ticket .line > .info > .tags { color: #777; } -.ticket .line > .info .discount -{ +.ticket .line > .info .discount { color: green; } -.ticket .line > .info > .amount -{ +.ticket .line > .info > .amount { float: left; } -.ticket .line > .info > .subtotal -{ +.ticket .line > .info > .subtotal { float: right; } diff --git a/forms/ecomerce/ticket/ui.xml b/forms/ecomerce/ticket/ui.xml index c14ff6fa..9f986f6c 100644 --- a/forms/ecomerce/ticket/ui.xml +++ b/forms/ecomerce/ticket/ui.xml @@ -29,6 +29,9 @@ <p class="important ticket-id"> #<htk-text column="id" form="ticket"/> </p> + </div> + <div> + <h3><t>ShippingInformation</t></h3> <p> <t>Preparation</t> <htk-text form="ticket" column="shipped" format="%D"/> </p> @@ -40,6 +43,7 @@ </p> </div> <div class="address"> + <h3><t>DeliveryAddress</t></h3> <p> <htk-text form="ticket" column="nickname"/> </p> @@ -101,7 +105,6 @@ <htk-text id="subtotal" format="%.2d€"/> </p> </div> - <div class="clear"/> </div> </custom> </htk-repeater> diff --git a/forms/news/news/ui.xml b/forms/news/news/ui.xml index 0cde1a0a..9e8f7109 100644 --- a/forms/news/news/ui.xml +++ b/forms/news/news/ui.xml @@ -43,15 +43,10 @@ editable="true" conn="conn"/> <p class="important"> - <htk-text form="iter" column="title"/> - </p> - <p> - <htk-text form="iter" column="nickname"/> - </p> - <p> - <t>Priority</t> - <htk-text form="iter" column="priority"/> + {{iter.title}} </p> + <p>{{iter.nickname}}</p> + <p>{{iter.priority}}</p> </div> </custom> </htk-repeater> diff --git a/js/db/iterator.js b/js/db/iterator.js index 346f4d7e..c69d6b48 100644 --- a/js/db/iterator.js +++ b/js/db/iterator.js @@ -1,36 +1,30 @@ -var Model = require ('./model'); +var Model = require('./model'); -module.exports = new Class -({ - Properties: - { +module.exports = new Class({ + Properties: { /** * The model associated to this form. - **/ - model: - { + */ + model: { type: Model }, /** * The row where the form positioned, has -1 if the row is unselected. - **/ - row: - { + */ + row: { type: Number }, /** * The number of rows in the form. - **/ - numRows: - { + */ + numRows: { type: Number }, /** * Checks if the form data is ready. - **/ - ready: - { + */ + ready: { type: Boolean } } @@ -38,18 +32,16 @@ module.exports = new Class ,_model: null ,_row: -1 - ,refresh: function () - { + ,refresh: function() { if (this._model) - this._model.refresh (); + this._model.refresh(); } /** * Emits the 'iter-changed' signal on the form. - **/ - ,iterChanged: function () - { - this.signalEmit ('iter-changed'); + */ + ,iterChanged: function() { + this.signalEmit('iter-changed'); } /** @@ -57,45 +49,49 @@ module.exports = new Class * * @param {String} columnName The column name * @return {integer} The column index or -1 if column not exists - **/ - ,getColumnIndex: function (columnName) - { + */ + ,getColumnIndex: function(columnName) { if (this._model) - return this._model.getColumnIndex (columnName); + return this._model.getColumnIndex(columnName); return -1; } - ,insertRow: function () - { + ,insertRow: function() { if (this._model) - this.row = this._model.insertRow (); + this.row = this._model.insertRow(); } - ,performOperations: function () - { + ,performOperations: function() { if (this._model) - this._model.performOperations (); + this._model.performOperations(); } /** * Removes the current row. - **/ - ,deleteRow: function () - { + */ + ,deleteRow: function() { if (this._row >= 0) - this._model.deleteRow (this._row); + this._model.deleteRow(this._row); } - + + /** + * Gets the row as object. + * + * @return {Object} The row + */ + ,getObject: function() { + return this._model.getObject(this._row); + } + /** * Gets a value from the form. * * @param {String} columnName The column name * @return {Object} The value - **/ - ,get: function (columnName) - { - return this._model.get (this._row, columnName); + */ + ,get: function(columnName) { + return this._model.get(this._row, columnName); } /** @@ -103,10 +99,9 @@ module.exports = new Class * * @param {String} columnName The column name * @param {Object} value The new value - **/ - ,set: function (columnName, value) - { - return this._model.set (this._row, columnName, value); + */ + ,set: function(columnName, value) { + return this._model.set(this._row, columnName, value); } /** @@ -114,10 +109,9 @@ module.exports = new Class * * @param {String} columnName The column index * @return {Object} The value - **/ - ,getByIndex: function (column) - { - return this._model.getByIndex (this._row, column); + */ + ,getByIndex: function(column) { + return this._model.getByIndex(this._row, column); } /** @@ -125,10 +119,9 @@ module.exports = new Class * * @param {String} columnName The column index * @param {Object} value The new value - **/ - ,setByIndex: function (column, value) - { - return this._model.setByIndex (this._row, column, value); + */ + ,setByIndex: function(column, value) { + return this._model.setByIndex(this._row, column, value); } }); diff --git a/js/db/model.js b/js/db/model.js index 469140d7..e8b67ef3 100644 --- a/js/db/model.js +++ b/js/db/model.js @@ -1,5 +1,5 @@ -var Connection = require ('./connection'); +var Connection = require('./connection'); /** * Class to handle the Database select results. Also allows @@ -9,174 +9,152 @@ var Connection = require ('./connection'); * Note that table and column names must be unique in the selection query, * otherwise updates are not allowed on that table/column. If two tables or * columns have the same name, an alias should be used to make it updatable. - **/ -var Model = new Class (); + */ +var Model = new Class(); module.exports = Model; -var Status = -{ +var Status = { CLEAN : 1 ,LOADING : 2 ,READY : 3 ,ERROR : 4 }; -var Mode = -{ +var Mode = { ON_CHANGE : 1 ,ON_DEMAND : 2 }; -var Operation = -{ +var Operation = { INSERT : 1 << 1 ,UPDATE : 1 << 2 ,DELETE : 1 << 3 }; -var SortWay = -{ +var SortWay = { ASC : 1 ,DESC : 2 }; -Model.extend -({ +Model.extend({ Status: Status ,Mode: Mode ,Operation: Operation ,SortWay: SortWay }); -Model.implement -({ +Model.implement({ Extends: Vn.Object ,Tag: 'db-model' - ,Properties: - { + ,Properties: { /** * The connection used to execute the statement. - **/ + */ conn: { type: Connection - ,set: function (x) - { + ,set: function(x) { this._conn = x; - this._autoLoad (); + this._autoLoad(); } - ,get: function () - { + ,get: function() { return this._conn; } }, /** * The result index. - **/ + */ resultIndex: { type: Number - ,set: function (x) - { + ,set: function(x) { this._resultIndex = x; } - ,get: function () - { + ,get: function() { return this._resultIndex; } }, /** * The batch used to execute the statement. - **/ + */ batch: { type: Sql.Batch - ,set: function (x) - { - this.link ({_batch: x}, {'changed': this._autoLoad}); - this._autoLoad (); + ,set: function(x) { + this.link({_batch: x}, {'changed': this._autoLoad}); + this._autoLoad(); } - ,get: function () - { + ,get: function() { return this._batch; } }, /** * The model select statement. - **/ + */ stmt: { type: Sql.Stmt - ,set: function (x) - { + ,set: function(x) { this._stmt = x; - this._autoLoad (); + this._autoLoad(); } - ,get: function () - { + ,get: function() { return this._stmt; } }, /** * The model query. - **/ + */ query: { type: String - ,set: function (x) - { - this.stmt = new Sql.String ({query: x}); + ,set: function(x) { + this.stmt = new Sql.String({query: x}); } - ,get: function () - { + ,get: function() { if (this._stmt) - return this._stmt.render (null); + return this._stmt.render(null); else return null; } }, /** * The main table. - **/ + */ mainTable: { type: String - ,set: function (x) - { + ,set: function(x) { this._mainTable = null; this._requestedMainTable = x; - this._refreshMainTable (); + this._refreshMainTable(); } - ,get: function () - { + ,get: function() { return this._mainTable; } }, /** * Determines if the model is updatable. - **/ + */ updatable: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._updatable = false; this._requestedUpdatable = x; - this._refreshUpdatable (); + this._refreshUpdatable(); } - ,get: function () - { + ,get: function() { return this._updatable; } }, /** * The number of rows in the model. - **/ + */ numRows: { type: Number - ,get: function () - { + ,get: function() { if (this.data) return this.data.length; @@ -185,29 +163,27 @@ Model.implement }, /** * The current status of the model. - **/ + */ status: { type: Number - ,get: function () - { + ,get: function() { return this._status; } }, /** * Checks if the model data is ready. - **/ + */ ready: { type: Boolean - ,get: function () - { + ,get: function() { return this._status == Status.READY; } }, /** * Update mode. - **/ + */ mode: { enumType: Mode @@ -215,7 +191,7 @@ Model.implement }, /** * Wether to execute the model query automatically. - **/ + */ autoLoad: { type: Boolean @@ -248,22 +224,19 @@ Model.implement ,_defaults: [] ,_requestedMainTable: null - ,initialize: function (props) - { - this.parent (props); - this._cleanData (); - this._setStatus (Status.CLEAN); + ,initialize: function(props) { + this.parent(props); + this._cleanData(); + this._setStatus(Status.CLEAN); } - ,appendChild: function (child) - { + ,appendChild: function(child) { if (child.nodeType === Node.TEXT_NODE) this.query = child.textContent; } - ,loadXml: function (builder, node) - { - this.parent (builder, node); + ,loadXml: function(builder, node) { + this.parent(builder, node); var query = node.firstChild.nodeValue; @@ -271,76 +244,63 @@ Model.implement this.query = query; } - ,_autoLoad: function () - { + ,_autoLoad: function() { if (this.autoLoad) - this.refresh (); + this.refresh(); else - this.clean (); + this.clean(); } /** * Refresh the model data reexecuting the query on the database. - **/ - ,refresh: function () - { + */ + ,refresh: function() { var ready = false; - if (this._stmt && this._conn) - { - var ids = this._stmt.findHolders (); + if (this._stmt && this._conn) { + var ids = this._stmt.findHolders(); - if (ids) - { - if (this._batch && this._batch.isReady ()) - { + if (ids) { + if (this._batch && this._batch.isReady()) { ready = true; for (var i = 0; i < ids.length; i++) - if (!this._batch.get (ids[i])) - { + if (!this._batch.get(ids[i])) { ready = false; break; } } - } - else + } else ready = true; } - if (ready) - { - this._setStatus (Status.LOADING); - this._conn.execStmt (this._stmt, this._selectDone.bind (this), this._batch); - } - else - this.clean (); + if (ready) { + this._setStatus(Status.LOADING); + this._conn.execStmt(this._stmt, this._selectDone.bind(this), this._batch); + } else + this.clean(); } - ,clean: function () - { - this._cleanData (); - this._setStatus (Status.CLEAN); + ,clean: function() { + this._cleanData(); + this._setStatus(Status.CLEAN); } - ,_selectDone: function (resultSet) - { + ,_selectDone: function(resultSet) { var result; var dataResult; - this._cleanData (); + this._cleanData(); try { - for (var i = 0; result = resultSet.fetchResult (); i++) + for (var i = 0; result = resultSet.fetchResult(); i++) if (i == this._resultIndex) dataResult = result; if (!dataResult || typeof dataResult !== 'object') - throw new Error ('The provided statement doesn\'t return a result set'); - } - catch (e) - { - this._setStatus (Status.ERROR); + throw new Error('The provided statement doesn\'t return a result set'); + } catch (e) { + this._setStatus(Status.ERROR); throw e; } @@ -348,34 +308,32 @@ Model.implement this.tables = dataResult.tables; this.columns = dataResult.columns; this.columnMap = dataResult.columnMap; - this._repairColumns (); - this._refreshRowIndexes (0); - this._refreshMainTable (); + this._repairColumns(); + this._refreshRowIndexes(0); + this._refreshMainTable(); for (column in this._requestedIndexes) - this._buildIndex (column); + this._buildIndex(column); var sortColumn = -1; if (this._requestedSortName) - sortColumn = this.getColumnIndex (this._requestedSortName); + sortColumn = this.getColumnIndex(this._requestedSortName); else if (this._requestedSortIndex !== -1 - && this.checkColExists (this._requestedSortIndex)) + && this.checkColExists(this._requestedSortIndex)) sortColumn = this._requestedSortIndex; if (sortColumn !== -1) - this._realSort (sortColumn, this._sortWay); + this._realSort(sortColumn, this._sortWay); - this._setStatus (Status.READY); + this._setStatus(Status.READY); } - ,_refreshRowIndexes: function (start) - { + ,_refreshRowIndexes: function(start) { for (var i = start; i < this.data.length; i++) this.data[i].index = i; - if (this._operationsMap) - { + if (this._operationsMap) { this._operationsMap = {}; for (var i = 0; i < this._operations.length; i++) @@ -383,28 +341,25 @@ Model.implement } } - ,_cleanData: function () - { + ,_cleanData: function() { this.data = null; this.tables = null; this.columns = null; this.columnMap = null; this._sortColumn = -1; this._indexes = []; - this._resetOperations (); + this._resetOperations(); } - ,_refreshUpdatable: function () - { + ,_refreshUpdatable: function() { var oldValue = this._updatable; this._updatable = this._mainTable !== null && this._requestedUpdatable; if (oldValue != this._updatable) - this.signalEmit ('updatable-changed'); + this.signalEmit('updatable-changed'); } - ,_refreshMainTable: function () - { + ,_refreshMainTable: function() { var newMainTable = null; var tables = this.tables; @@ -412,14 +367,13 @@ Model.implement for (var i = 0; i < tables.length; i++) if (tables[i].pks.length > 0) if (!this._requestedMainTable - || tables[i].name === this._requestedMainTable) - { + || tables[i].name === this._requestedMainTable) { newMainTable = i; break; } this._mainTable = newMainTable; - this._refreshUpdatable (); + this._refreshUpdatable(); } /** @@ -428,11 +382,9 @@ Model.implement * @param {String} field The destination field name * @param {String} table The destination table name * @param {Sql.Expr} srcColumn The default value expression - **/ - ,setDefault: function (field, table, expr) - { - this._defaults.push - ({ + */ + ,setDefault: function(field, table, expr) { + this._defaults.push({ field: field ,table: table ,expr: expr @@ -445,11 +397,9 @@ Model.implement * @param {String} field The destination field name * @param {String} table The destination table name * @param {Object} value The default value - **/ - ,setDefaultFromValue: function (field, table, value) - { - this._defaults.push - ({ + */ + ,setDefaultFromValue: function(field, table, value) { + this._defaults.push({ field: field ,table: table ,value: value @@ -463,11 +413,9 @@ Model.implement * @param {String} field The destination field name * @param {String} table The destination table name * @param {String} srcColumn The source column - **/ - ,setDefaultFromColumn: function (field, table, srcColumn) - { - this._defaults.push - ({ + */ + ,setDefaultFromColumn: function(field, table, srcColumn) { + this._defaults.push({ field: field ,table: table ,srcColumn: srcColumn @@ -479,9 +427,8 @@ Model.implement * * @param {integer} column The column index * @return {Boolean} %true if column exists, %false otherwise - **/ - ,checkColExists: function (column) - { + */ + ,checkColExists: function(column) { return this.columns && column >= 0 && column < this.columns.length; @@ -492,21 +439,19 @@ Model.implement * * @param {integer} rowIndex The row index * @return {Boolean} %true if row exists, %false otherwise - **/ - ,checkRowExists: function (rowIndex) - { + */ + ,checkRowExists: function(rowIndex) { return this.data && rowIndex >= 0 && rowIndex < this.data.length; } - ,_checkTableUpdatable: function (tableIndex) - { + ,_checkTableUpdatable: function(tableIndex) { var tableUpdatable = tableIndex !== null && this.tables[tableIndex].pks.length > 0; if (!tableUpdatable) - console.warn ("Db.Model: Table %s is not updatable", + console.warn("Db.Model: Table %s is not updatable", this.tables[tableIndex].name); return tableUpdatable; @@ -517,9 +462,8 @@ Model.implement * * @param {string} columnName The column name * @return {number} The column index or -1 if column not exists - **/ - ,getColumnIndex: function (columnName) - { + */ + ,getColumnIndex: function(columnName) { var index; if (this.columnMap @@ -528,6 +472,23 @@ Model.implement return -1; } + + /** + * Gets the row as object. + * + * @param {number} rowIndex The row index + * @return {Object} The row + */ + ,getObject: function(rowIndex) { + if (!this.checkRowExists(rowIndex)) + return undefined; + + const row = this.data[rowIndex]; + const object = {}; + for(let i = 0; i < row.length; i++) + object[this.columns[i].name] = row[i]; + return object; + } /** * Gets a value from the model. @@ -535,13 +496,12 @@ Model.implement * @param {number} rowIndex The row index * @param {string} columnName The column name * @return {mixed} The value - **/ - ,get: function (rowIndex, columnName) - { - var index = this.getColumnIndex (columnName); + */ + ,get: function(rowIndex, columnName) { + var index = this.getColumnIndex(columnName); if (index != -1) - return this.getByIndex (rowIndex, index); + return this.getByIndex(rowIndex, index); return undefined; } @@ -552,15 +512,14 @@ Model.implement * @param {number} rowIndex The row index * @param {string} columnName The column name * @param {mixed} value The new value - **/ - ,set: function (rowIndex, columnName, value) - { - var index = this.getColumnIndex (columnName); + */ + ,set: function(rowIndex, columnName, value) { + var index = this.getColumnIndex(columnName); if (index != -1) - this.setByIndex (rowIndex, index, value); + this.setByIndex(rowIndex, index, value); else - console.warn ('Db.Model: Column %s doesn\'t exist', columnName); + console.warn('Db.Model: Column %s doesn\'t exist', columnName); } /** @@ -569,10 +528,9 @@ Model.implement * @param {number} rowIndex The row index * @param {number} column The column index * @return {mixed} The value - **/ - ,getByIndex: function (rowIndex, column) - { - if (this.checkRowExists (rowIndex) && this.checkColExists (column)) + */ + ,getByIndex: function(rowIndex, column) { + if (this.checkRowExists(rowIndex) && this.checkColExists(column)) return this.data[rowIndex][column]; return undefined; @@ -584,21 +542,20 @@ Model.implement * @param {number} rowIndex The row index * @param {number} col The column index * @param {mixed} value The new value - **/ - ,setByIndex: function (rowIndex, col, value) - { - if (!this.checkRowExists (rowIndex) - && !this.checkColExists (col)) + */ + ,setByIndex: function(rowIndex, col, value) { + if (!this.checkRowExists(rowIndex) + && !this.checkColExists(col)) return; var tableIndex = this.columns[col].table; - if (!this._checkTableUpdatable (tableIndex)) + if (!this._checkTableUpdatable(tableIndex)) return; var row = this.data[rowIndex]; - var op = this._createOperation (rowIndex); + var op = this._createOperation(rowIndex); op.type |= Operation.UPDATE; if (!op.oldValues) @@ -608,14 +565,12 @@ Model.implement var tableOp = op.tables[tableIndex]; - if (!tableOp) - { + if (!tableOp) { tableOp = Operation.UPDATE; var pks = this.tables[tableIndex].pks; for (var i = 0; i < pks.length; i++) - if (!row[pks[i]] && !op.oldValues[pks[i]]) - { + if (!row[pks[i]] && !op.oldValues[pks[i]]) { tableOp = Operation.INSERT; break; } @@ -627,39 +582,35 @@ Model.implement && op.oldValues[col] === undefined) op.oldValues[col] = row[col]; - this.signalEmit ('row-updated-before', rowIndex); + this.signalEmit('row-updated-before', rowIndex); row[col] = value; - this.signalEmit ('row-updated', rowIndex, [col]); + this.signalEmit('row-updated', rowIndex, [col]); if (this.mode == Mode.ON_CHANGE && !(op.type & Operation.INSERT)) - this.performOperations (); + this.performOperations(); } /** * Deletes a row from the model. * * @param {number} rowIndex The row index - **/ - ,deleteRow: function (rowIndex) - { - if (!this.checkRowExists (rowIndex) - || !this._checkTableUpdatable (this._mainTable)) + */ + ,deleteRow: function(rowIndex) { + if (!this.checkRowExists(rowIndex) + || !this._checkTableUpdatable(this._mainTable)) return; - var op = this._createOperation (rowIndex); + var op = this._createOperation(rowIndex); op.type |= Operation.DELETE; - if (!this._requestedMainTable) - { - this.signalEmit ('row-deleted-before', rowIndex); - this.data.splice (rowIndex, 1); - this.signalEmit ('row-deleted', rowIndex); - this._refreshRowIndexes (rowIndex); - } - else - { - this.signalEmit ('row-updated-before', rowIndex); + if (!this._requestedMainTable) { + this.signalEmit('row-deleted-before', rowIndex); + this.data.splice(rowIndex, 1); + this.signalEmit('row-deleted', rowIndex); + this._refreshRowIndexes(rowIndex); + } else { + this.signalEmit('row-updated-before', rowIndex); if (!op.oldValues) op.oldValues = []; @@ -667,34 +618,32 @@ Model.implement var updatedCols = []; for (var i = 0; i < this.columns.length; i++) - if (this.columns[i].table == this._mainTable) - { + if (this.columns[i].table == this._mainTable) { if (op.oldValues[i] === undefined) op.oldValues[i] = op.row[i]; op.row[i] = null; - updatedCols.push (i); + updatedCols.push(i); } - this.signalEmit ('row-updated', rowIndex, updatedCols); + this.signalEmit('row-updated', rowIndex, updatedCols); } if (this.mode === Mode.ON_CHANGE) - this.performOperations (); + this.performOperations(); } /** * Inserts a new row on the model. * * @return The index of the inserted row - **/ - ,insertRow: function () - { - if (!this._checkTableUpdatable (this._mainTable)) + */ + ,insertRow: function() { + if (!this._checkTableUpdatable(this._mainTable)) return -1; var cols = this.columns; - var newRow = new Array (cols.length); + var newRow = new Array(cols.length); for (var i = 0; i < cols.length; i++) if (cols[i].table === this._mainTable) @@ -702,164 +651,142 @@ Model.implement else newRow[i] = null; - var rowIndex = this.data.push (newRow) - 1; + var rowIndex = this.data.push(newRow) - 1; newRow.index = rowIndex; - var op = this._createOperation (rowIndex); + var op = this._createOperation(rowIndex); op.type |= Operation.INSERT; - this.signalEmit ('row-inserted', rowIndex); + this.signalEmit('row-inserted', rowIndex); return rowIndex; } /** * Performs all model changes on the database. - **/ - ,performOperations: function () - { + */ + ,performOperations: function() { var ops = this._operations; - if (ops.length === 0) - { - this.signalEmit ('operations-done'); + if (ops.length === 0) { + this.signalEmit('operations-done'); return; } - var stmts = new Sql.MultiStmt (); + var stmts = new Sql.MultiStmt(); - var query = new Sql.String ({query: 'START TRANSACTION'}); - stmts.addStmt (query); + var query = new Sql.String({query: 'START TRANSACTION'}); + stmts.addStmt(query); - for (var i = 0; i < ops.length; i++) - { + for (var i = 0; i < ops.length; i++) { query = null; var op = ops[i]; - if (op.type & Operation.DELETE) - { + if (op.type & Operation.DELETE) { if (op.type & Operation.INSERT) continue; - var where = this._createWhere (this._mainTable, op, true); + var where = this._createWhere(this._mainTable, op, true); - if (where) - { - query = new Sql.Delete ({where: where}); - query.addTarget (this._createTarget (this._mainTable)); + if (where) { + query = new Sql.Delete({where: where}); + query.addTarget(this._createTarget(this._mainTable)); } - } - else if (op.type & (Operation.INSERT | Operation.UPDATE)) - { - query = new Sql.MultiStmt (); + } else if (op.type & (Operation.INSERT | Operation.UPDATE)) { + query = new Sql.MultiStmt(); - for (var tableIndex in op.tables) - { - var stmt = this._createDmlQuery (op, parseInt (tableIndex)); - query.addStmt (stmt); + for (var tableIndex in op.tables) { + var stmt = this._createDmlQuery(op, parseInt(tableIndex)); + query.addStmt(stmt); } } - if (query) - { - stmts.addStmt (query); - } - else - { - console.warn ('Db.Model: %s', _('ErrorSavingChanges')); + if (query) { + stmts.addStmt(query); + } else { + console.warn('Db.Model: %s', _('ErrorSavingChanges')); return; } } - var query = new Sql.String ({query: 'COMMIT'}); - stmts.addStmt (query); + var query = new Sql.String({query: 'COMMIT'}); + stmts.addStmt(query); - this._conn.execStmt (stmts, - this._onOperationsDone.bind (this, ops)); + this._conn.execStmt(stmts, + this._onOperationsDone.bind(this, ops)); - this._resetOperations (); + this._resetOperations(); } - ,_createDmlQuery: function (op, tableIndex) - { - var where = this._createWhere (tableIndex, op, false); + ,_createDmlQuery: function(op, tableIndex) { + var where = this._createWhere(tableIndex, op, false); if (!where) return null; - var multiStmt = new Sql.MultiStmt (); - var target = this._createTarget (tableIndex); + var multiStmt = new Sql.MultiStmt(); + var target = this._createTarget(tableIndex); - var select = new Sql.Select ({where: where}); - select.addTarget (target); + var select = new Sql.Select({where: where}); + select.addTarget(target); var row = op.row; var cols = this.columns; - if (op.tables[tableIndex] & Operation.INSERT) - { - var dmlQuery = new Sql.Insert (); + if (op.tables[tableIndex] & Operation.INSERT) { + var dmlQuery = new Sql.Insert(); var table = this.tables[tableIndex]; - for (var i = 0; i < this._defaults.length; i++) - { + for (var i = 0; i < this._defaults.length; i++) { var def = this._defaults[i]; - if (def.table === table.name) - { + if (def.table === table.name) { if (def.value) - dmlQuery.addSet (def.field, def.value); + dmlQuery.addSet(def.field, def.value); else if (def.expr) - dmlQuery.addExpr (def.field, def.expr); - else if (def.srcColumn) - { - var columnIndex = this.getColumnIndex (def.srcColumn); - dmlQuery.addSet (def.field, row[columnIndex]); + dmlQuery.addExpr(def.field, def.expr); + else if (def.srcColumn) { + var columnIndex = this.getColumnIndex(def.srcColumn); + dmlQuery.addSet(def.field, row[columnIndex]); } } } for (var i = 0; i < cols.length; i++) - if (cols[i].table === tableIndex) - { + if (cols[i].table === tableIndex) { if (row[i] !== null) - dmlQuery.addSet (cols[i].orgname, row[i]); + dmlQuery.addSet(cols[i].orgname, row[i]); - select.addField (cols[i].orgname); + select.addField(cols[i].orgname); } - } - else - { - var updateWhere = this._createWhere (tableIndex, op, true); + } else { + var updateWhere = this._createWhere(tableIndex, op, true); if (!updateWhere) return null; - var dmlQuery = new Sql.Update ({where: updateWhere}); + var dmlQuery = new Sql.Update({where: updateWhere}); for (var i = 0; i < cols.length; i++) - if (cols[i].table === tableIndex && op.oldValues[i] !== undefined) - { + if (cols[i].table === tableIndex && op.oldValues[i] !== undefined) { var fieldName = cols[i].orgname; - dmlQuery.addSet (fieldName, row[i]); - select.addField (fieldName); + dmlQuery.addSet(fieldName, row[i]); + select.addField(fieldName); } } - dmlQuery.addTarget (target); + dmlQuery.addTarget(target); - multiStmt.addStmt (dmlQuery); - multiStmt.addStmt (select); + multiStmt.addStmt(dmlQuery); + multiStmt.addStmt(select); return multiStmt; } - ,_onOperationsDone: function (ops, resultSet) - { - var error = resultSet.getError (); + ,_onOperationsDone: function(ops, resultSet) { + var error = resultSet.getError(); - if (error) - { - this._operations = this._operations.concat (ops); + if (error) { + this._operations = this._operations.concat(ops); for (var i = 0; i < ops.length; i++) this._operationsMap[ops[i].row.index] = ops[i]; @@ -867,11 +794,10 @@ Model.implement throw error; } - resultSet.fetchResult (); + resultSet.fetchResult(); var isOperation = false; - for (var i = 0; i < ops.length; i++) - { + for (var i = 0; i < ops.length; i++) { var op = ops[i]; var row = op.row; @@ -879,96 +805,80 @@ Model.implement && op.type & Operation.INSERT)) isOperation = true; - if (op.type & Operation.DELETE) - { - resultSet.fetchResult (); - } - else if (op.type & (Operation.INSERT | Operation.UPDATE)) - { - this.signalEmit ('row-updated-before', row.index); + if (op.type & Operation.DELETE) { + resultSet.fetchResult(); + } else if (op.type & (Operation.INSERT | Operation.UPDATE)) { + this.signalEmit('row-updated-before', row.index); var updatedCols = []; var cols = this.columns; - for (var tableIndex in op.tables) - { + for (var tableIndex in op.tables) { var j = 0; - tableIndex = parseInt (tableIndex); + tableIndex = parseInt(tableIndex); - resultSet.fetchResult (); - var newValues = resultSet.fetchRow (); + resultSet.fetchResult(); + var newValues = resultSet.fetchRow(); - if (op.tables[tableIndex] & Operation.INSERT) - { + if (op.tables[tableIndex] & Operation.INSERT) { for (var i = 0; i < cols.length; i++) - if (cols[i].table === tableIndex) - { + if (cols[i].table === tableIndex) { row[i] = newValues[j++]; - updatedCols.push (i); + updatedCols.push(i); } - } - else - { + } else { for (var i = 0; i < cols.length; i++) if (cols[i].table === tableIndex - && op.oldValues[i] !== undefined) - { + && op.oldValues[i] !== undefined) { row[i] = newValues[j++]; - updatedCols.push (i); + updatedCols.push(i); } } } - this.signalEmit ('row-updated', row.index, updatedCols); + this.signalEmit('row-updated', row.index, updatedCols); } } - resultSet.fetchResult (); + resultSet.fetchResult(); // if (isOperation) - this.signalEmit ('operations-done'); + this.signalEmit('operations-done'); } /** * Undoes all unsaved changes made to the model. - **/ - ,reverseOperations: function () - { - for (var i = 0; i < this._operations.length; i++) - { + */ + ,reverseOperations: function() { + for (var i = 0; i < this._operations.length; i++) { var op = this._operations[i]; var row = op.row; if (op.type & Operation.DELETE - && !(op.type & Operation.INSERT)) - { - this.data.splice (row.index, 0, row); - this.signalEmit ('row-inserted', row.index); - } - else if (op.type & Operation.UPDATE) - { - this.signalEmit ('row-updated-before', row.index); + && !(op.type & Operation.INSERT)) { + this.data.splice(row.index, 0, row); + this.signalEmit('row-inserted', row.index); + } else if (op.type & Operation.UPDATE) { + this.signalEmit('row-updated-before', row.index); var updatedCols = []; var cols = this.columns; for (var i = 0; i < cols.length; i++) - if (op.oldValues[i] !== undefined) - { + if (op.oldValues[i] !== undefined) { row[i] = op.oldValues[i]; - updatedCols.push (i); + updatedCols.push(i); } - this.signalEmit ('row-updated', row.index, updatedCols); + this.signalEmit('row-updated', row.index, updatedCols); } } - this._resetOperations (); - this._refreshRowIndexes (0); + this._resetOperations(); + this._refreshRowIndexes(0); } - ,_resetOperations: function () - { + ,_resetOperations: function() { this._operations = []; this._operationsMap = {}; } @@ -976,8 +886,7 @@ Model.implement /* * Function used to sort the model ascending. */ - ,sortFunctionAsc: function (column, a, b) - { + ,sortFunctionAsc: function(column, a, b) { if (a[column] < b[column]) return -1; else if (a[column] > b[column]) @@ -989,8 +898,7 @@ Model.implement /* * Function used to sort the model descending. */ - ,sortFunctionDesc: function (column, a, b) - { + ,sortFunctionDesc: function(column, a, b) { if (a[column] > b[column]) return -1; else if (a[column] < b[column]) @@ -1004,16 +912,15 @@ Model.implement * * @param {integer} column The column name * @param {SortWay} way The sort way - **/ - ,sortByName: function (columnName, way) - { + */ + ,sortByName: function(columnName, way) { this._requestedSortIndex = -1; this._requestedSortName = columnName; - var index = this.getColumnIndex (columnName); + var index = this.getColumnIndex(columnName); if (index != -1) - this._sort (index, way); + this._sort(index, way); } /** @@ -1021,43 +928,38 @@ Model.implement * * @param {integer} column The column index * @param {SortWay} way The sort way - **/ - ,sort: function (column, way) - { + */ + ,sort: function(column, way) { this._requestedSortIndex = column; this._requestedSortName = null; - if (!this.checkColExists (column)) + if (!this.checkColExists(column)) return; - this._sort (column, way); + this._sort(column, way); } - ,_sort: function (column, way) - { - this._setStatus (Status.LOADING); - this._realSort (column, way); - this._setStatus (Status.READY); + ,_sort: function(column, way) { + this._setStatus(Status.LOADING); + this._realSort(column, way); + this._setStatus(Status.READY); } - ,_realSort: function (column, way) - { - if (column !== this._sortColumn) - { + ,_realSort: function(column, way) { + if (column !== this._sortColumn) { if (way === SortWay.DESC) var sortFunction = this.sortFunctionDesc; else var sortFunction = this.sortFunctionAsc; - this.data.sort (sortFunction.bind (this, column)); - } - else if (way !== this._sortWay) - this.data.reverse (); + this.data.sort(sortFunction.bind(this, column)); + } else if (way !== this._sortWay) + this.data.reverse(); this._sortColumn = column; this._sortWay = way; - this._refreshRowIndexes (0); + this._refreshRowIndexes(0); } /** @@ -1068,31 +970,27 @@ Model.implement * FIXME: Not fully implemented. * * @param {String} column The column name - **/ - ,indexColumn: function (column) - { + */ + ,indexColumn: function(column) { this._requestedIndexes[column] = true; if (this._status === Status.READY) - this._buildIndex (column); + this._buildIndex(column); } - ,_buildIndex: function (column) - { - var columnIndex = this.getColumnIndex (column); + ,_buildIndex: function(column) { + var columnIndex = this.getColumnIndex(column); - if (columnIndex !== -1) - { + if (columnIndex !== -1) { var index = {}; var data = this.data; - switch (this.columns[columnIndex].type) - { + switch (this.columns[columnIndex].type) { case Connection.Type.TIMESTAMP: case Connection.Type.DATE_TIME: case Connection.Type.DATE: for (var i = 0; i < data.length; i++) - index[data[i][columnIndex].toString ()] = i; + index[data[i][columnIndex].toString()] = i; break; default: for (var i = 0; i < data.length; i++) @@ -1112,11 +1010,10 @@ Model.implement * @param {String} column The column name * @param {Object} value The value to search * @return {integer} The column index - **/ - ,search: function (column, value) - { - var index = this.getColumnIndex (column); - return this.searchByIndex (index, value); + */ + ,search: function(column, value) { + var index = this.getColumnIndex(column); + return this.searchByIndex(index, value); } /** @@ -1126,34 +1023,31 @@ Model.implement * @param {integer} col The column index * @param {Object} value The value to search * @return {integer} The column index - **/ - ,searchByIndex: function (col, value) - { - if (!this.checkColExists (col)) + */ + ,searchByIndex: function(col, value) { + if (!this.checkColExists(col)) return -1; if (value) - switch (this.columns[col].type) - { + switch (this.columns[col].type) { case Connection.Type.BOOLEAN: value = !!value; break; case Connection.Type.INTEGER: - value = parseInt (value); + value = parseInt(value); break; case Connection.Type.DOUBLE: - value = parseFloat (value); + value = parseFloat(value); break; default: - value = value.toString (); + value = value.toString(); } // Searchs the value using an internal index. var index = this._indexes[col]; - if (index) - { + if (index) { if (index[value] !== undefined) return index[value]; @@ -1164,14 +1058,13 @@ Model.implement var data = this.data; - switch (this.columns[col].type) - { + switch (this.columns[col].type) { case Connection.Type.TIMESTAMP: case Connection.Type.DATE_TIME: case Connection.Type.DATE: { for (var i = 0; i < data.length; i++) - if (value === data[i][col].toString ()) + if (value === data[i][col].toString()) return i; break; @@ -1185,40 +1078,35 @@ Model.implement return -1; } - ,_setStatus: function (status) - { + ,_setStatus: function(status) { this._status = status; - this.signalEmit ('status-changed', status); - this.signalEmit ('status-changed-after', status); + this.signalEmit('status-changed', status); + this.signalEmit('status-changed-after', status); } - ,_createTarget: function (tableIndex) - { + ,_createTarget: function(tableIndex) { var table = this.tables[tableIndex]; - return new Sql.Table - ({ + return new Sql.Table({ name: table.orgname ,schema: table.schema }); } - ,_createWhere: function (tableIndex, op, useOldValues) - { - var where = new Sql.Operation ({type: Sql.Operation.Type.AND}); + ,_createWhere: function(tableIndex, op, useOldValues) { + var where = new Sql.Operation({type: Sql.Operation.Type.AND}); var pks = this.tables[tableIndex].pks; if (pks.length === 0) return null; - for (var i = 0; i < pks.length; i++) - { + for (var i = 0; i < pks.length; i++) { var col = pks[i]; var column = this.columns[col]; - var equalOp = new Sql.Operation ({type: Sql.Operation.Type.EQUAL}); - equalOp.exprs.add (new Sql.Field ({name: column.orgname})); - where.exprs.add (equalOp); + var equalOp = new Sql.Operation({type: Sql.Operation.Type.EQUAL}); + equalOp.exprs.add(new Sql.Field({name: column.orgname})); + where.exprs.add(equalOp); var pkValue = null; @@ -1229,9 +1117,9 @@ Model.implement pkValue = op.row[col]; if (pkValue) - equalOp.exprs.add (new Sql.Value ({value: pkValue})); + equalOp.exprs.add(new Sql.Value({value: pkValue})); else if (column.flags & Connection.Flag.AI && !useOldValues) - equalOp.exprs.add (new Sql.Function ({name: 'LAST_INSERT_ID'})); + equalOp.exprs.add(new Sql.Function({name: 'LAST_INSERT_ID'})); else return null; } @@ -1239,17 +1127,15 @@ Model.implement return where; } - ,_createOperation: function (rowIndex) - { + ,_createOperation: function(rowIndex) { var op = this._operationsMap[rowIndex]; - if (!op) - { + if (!op) { op = { type: 0, row: this.data[rowIndex] }; - this._operations.push (op); + this._operations.push(op); this._operationsMap[rowIndex] = op; } @@ -1270,9 +1156,8 @@ Model.implement * @param {String} schema The original table schema * @param {Array} pks Array with the names of primary keys * @param {String} ai The autoincrement column name - **/ - ,setInfo: function (table, orgname, schema, pks, ai) - { + */ + ,setInfo: function(table, orgname, schema, pks, ai) { if (!this.tableInfo) this.tableInfo = {}; @@ -1284,16 +1169,14 @@ Model.implement ai: ai }; - this._repairColumns (); + this._repairColumns(); } - ,_repairColumns: function () - { + ,_repairColumns: function() { // Repairs wrong table info if (this.tableInfo && this.tables) - for (var i = 0; i < this.tables.length; i++) - { + for (var i = 0; i < this.tables.length; i++) { var table = this.tables[i]; var tableInfo = this.tableInfo[table.name]; @@ -1303,32 +1186,29 @@ Model.implement table.orgname = tableInfo.orgname; table.schema = tableInfo.schema; - if (tableInfo.pks) - { + if (tableInfo.pks) { table.pks = []; - for (var j = 0; j < tableInfo.pks.length; j++) - { - var colIndex = this.getColumnIndex (tableInfo.pks[j]); + for (var j = 0; j < tableInfo.pks.length; j++) { + var colIndex = this.getColumnIndex(tableInfo.pks[j]); if (colIndex !== -1) - table.pks.push (colIndex); + table.pks.push(colIndex); else - console.warn ('Db.Model: Can\'t repair primary key: `%s`.`%s`' + console.warn('Db.Model: Can\'t repair primary key: `%s`.`%s`' ,tableInfo.orgname ,tableInfo.pks[j] ); } } - if (tableInfo.ai) - { - var colIndex = this.getColumnIndex (tableInfo.ai); + if (tableInfo.ai) { + var colIndex = this.getColumnIndex(tableInfo.ai); if (colIndex !== -1) this.columns[colIndex].flags |= Connection.Flag.AI; else - console.warn ('Db.Model: Can\'t repair autoincrement column: `%s`.`%s`' + console.warn('Db.Model: Can\'t repair autoincrement column: `%s`.`%s`' ,tableInfo.orgname ,tableInfo.ai ); diff --git a/js/db/result-set.js b/js/db/result-set.js index 241a219b..daaed703 100644 --- a/js/db/result-set.js +++ b/js/db/result-set.js @@ -3,14 +3,14 @@ var Result = require('./result'); /** * This class stores the database results. - **/ + */ module.exports = new Class({ results: null ,error: null /** * Initilizes the resultset object. - **/ + */ ,initialize: function(results, error) { this.results = results; this.error = error; @@ -20,7 +20,7 @@ module.exports = new Class({ * Gets the query error. * * @return {Db.Err} the error or null if no errors hapened - **/ + */ ,getError: function() { return this.error; } @@ -40,7 +40,7 @@ module.exports = new Class({ * Fetchs the next result from the resultset. * * @return {Db.Result} the result or %null if error or there are no more results - **/ + */ ,fetchResult: function() { var result = this.fetch(); @@ -53,12 +53,12 @@ module.exports = new Class({ return null; } - + /** * Fetchs the first row from the next resultset. * * @return {Array} the row if success, %null otherwise - **/ + */ ,fetchRow: function() { var result = this.fetch(); @@ -70,6 +70,11 @@ module.exports = new Class({ return null; } + /** + * Fetchs the first row object from the next resultset. + * + * @return {Array} the row if success, %null otherwise + */ ,fetchObject: function() { var result = this.fetch(); @@ -90,7 +95,7 @@ module.exports = new Class({ * Fetchs the first row and column value from the next resultset. * * @return {Object} the value if success, %null otherwise - **/ + */ ,fetchValue: function() { var row = this.fetchRow(); diff --git a/js/db/simple-iterator.js b/js/db/simple-iterator.js index 7aca8a49..b2f8537e 100644 --- a/js/db/simple-iterator.js +++ b/js/db/simple-iterator.js @@ -1,54 +1,44 @@ -var Iterator = require ('./iterator'); -var Model = require ('./model'); +var Iterator = require('./iterator'); +var Model = require('./model'); /** * A light iterator for models. - **/ -module.exports = new Class -({ + */ +module.exports = new Class({ Extends: Vn.Object ,Implements: Iterator - ,Properties: - { + ,Properties: { /** * The model associated to this form. - **/ - model: - { + */ + model: { type: Model - ,set: function (x) - { + ,set: function(x) { this._model = x; } - ,get: function () - { + ,get: function() { return this._model; } }, /** * The row where the form positioned, has -1 if the row is unselected. - **/ - row: - { + */ + row: { type: Number - ,set: function (x) - { + ,set: function(x) { this._row = x; } - ,get: function () - { + ,get: function() { return this._row; } }, /** * The number of rows in the form. - **/ - numRows: - { + */ + numRows: { type: Number - ,get: function () - { + ,get: function() { if (this._model) return this._model.numRows; @@ -57,12 +47,10 @@ module.exports = new Class }, /** * Checks if the form data is ready. - **/ - ready: - { + */ + ready: { type: Boolean - ,get: function () - { + ,get: function() { if (this._model) return this._model.ready; diff --git a/js/hedera/form.js b/js/hedera/form.js index 7040315c..b28fa327 100644 --- a/js/hedera/form.js +++ b/js/hedera/form.js @@ -6,8 +6,7 @@ module.exports = new Class ,isOpen: false ,uiLoaded: false - ,initialize: function (gui, formInfo) - { + ,initialize: function(gui, formInfo) { this.gui = gui; this.conn = gui.conn; this.hash = gui.hash; @@ -19,107 +18,98 @@ module.exports = new Class * * @param {string} objectId The object identifier * @return {Object} The object, or %null if not found - **/ - ,$: function (objectId) - { + */ + ,$: function(objectId) { if (this.builder) - return this.builder.getById (objectId); + return this.builder.getById(objectId); return null; } - ,loadUi: function () - { + ,loadUi: function() { if (!this.isOpen) return; - var builder = new Vn.Builder (); + var builder = new Vn.Builder(); builder.signalData = this; - builder.add ('conn', this.conn); - builder.loadXml ('forms/'+ this.formInfo.path +'/ui.xml'); + builder.add('conn', this.conn); + builder.loadXml('forms/'+ this.formInfo.path +'/ui.xml'); - var res = this.builder = builder.load (); + var res = this.builder = builder.load(); this.node = res.$('form'); - res.link (); + res.link(this); - var models = res.getByTagName ('db-model'); + var models = res.getByTagName('db-model'); for (var i = 0; i < models.length; i++) models[i].conn = this.conn; - var queries = res.getByTagName ('db-query'); + var queries = res.getByTagName('db-query'); for (var i = 0; i < queries.length; i++) queries[i].conn = this.conn; - if (this.node) - { - this.gui.setForm (this.node); - this.gui.setTitle (res.$('title')); - this.gui.setActions (res.$('actions')); - this.activate (); + if (this.node) { + this.gui.setForm(this.node); + this.gui.setTitle(res.$('title')); + this.gui.setActions(res.$('actions')); + this.activate(); } this.uiLoaded = true; } - ,unloadUi: function () - { + ,unloadUi: function() { if (!this.uiLoaded) return; - if (this.node) - { - this.deactivate (); - this.gui.setTitle (null); - this.gui.setActions (null); - Vn.Node.remove (this.node); - this.deactivate (); + if (this.node) { + this.deactivate(); + this.gui.setTitle(null); + this.gui.setActions(null); + Vn.Node.remove(this.node); + this.deactivate(); this.node = null; } - if (this.builder) - { - this.builder.unref (); + if (this.builder) { + this.builder.unref(); this.builder = null; } } /** * Called when the form is opened. - **/ - ,open: function () - { - this.close (); + */ + ,open: function() { + this.close(); this.isOpen = true; - this.loadUi (); + this.loadUi(); } /** * Called when the form is closed. - **/ - ,close: function () - { + */ + ,close: function() { if (!this.isOpen) return; this.isOpen = false; - this.unloadUi (); + this.unloadUi(); } /** * Called when the form is activated. - **/ - ,activate: function () {} + */ + ,activate: function() {} /** * Called when the form is deactivated. - **/ - ,deactivate: function () {} + */ + ,deactivate: function() {} - ,_destroy: function () - { - this.close (); - this.parent (); + ,_destroy: function() { + this.close(); + this.parent(); } }); diff --git a/js/hedera/gui.scss b/js/hedera/gui.scss index 1240081a..7542f73d 100644 --- a/js/hedera/gui.scss +++ b/js/hedera/gui.scss @@ -64,25 +64,28 @@ padding: 0; margin: 0; height: 100%; - } - .action-bar > div { - padding: 0; - margin: 0; - height: 100%; - display: flex; - align-items: center; - padding: 0 1em; - gap: .5em; - } - .action-bar > div > * { - float: right; - } - .action-bar button { - margin: 0; - padding: .6em; - } - .action-bar button:hover { - background-color: rgba(2550, 255, 255, .2); + + & > div { + padding: 0; + margin: 0; + height: 100%; + display: flex; + align-items: center; + padding: 0 1em; + gap: .5em; + + & > * { + float: right; + } + } + button { + margin: 0; + padding: 10px 15px; + + &:hover { + background-color: rgba(2550, 255, 255, .2); + } + } } /* Background */ @@ -277,9 +280,14 @@ /* Mobile */ @media (max-width: 960px) { - .action-bar span.label, - .htk-button > .text { - display: none; + .action-bar { + span.label, + .htk-button > .text { + display: none; + } + .htk-button { + padding: 10px; + } } & > .navbar { padding-left: 2.8em; diff --git a/js/hedera/opensans.ttf b/js/hedera/opensans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e21ff5f1ec01719e9e699df260db5be8b220aa2a GIT binary patch literal 129796 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 CDHovt literal 0 HcmV?d00001 diff --git a/js/hedera/style.scss b/js/hedera/style.scss index e91c6804..779de98c 100644 --- a/js/hedera/style.scss +++ b/js/hedera/style.scss @@ -1,8 +1,14 @@ +@import "../htk/style/classes"; + @font-face { font-family: 'Poppins'; src: url('poppins.ttf') format('truetype'); } +@font-face { + font-family: 'Open Sans'; + src: url('opensans.ttf') format('truetype'); +} /* Global */ @@ -243,12 +249,6 @@ img.editable { cursor: pointer; } -/* Button */ - -.htk-button img { - height: 1.5em; -} - /* Float */ .clear { @@ -258,11 +258,8 @@ img.editable { /* Box */ .box { - background-color: white; + @extend %box; margin: 0 auto; - border-radius: .6em; - box-shadow: .05em .05em .2em rgba(0, 0, 0, .1); - overflow: hidden; } .box .header { padding: 0.6em 0.8em; diff --git a/js/htk/field/bar-button.js b/js/htk/field/bar-button.js index cdb0c1a4..b923f17a 100644 --- a/js/htk/field/bar-button.js +++ b/js/htk/field/bar-button.js @@ -1,8 +1,7 @@ var Button = require('./button'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Button ,Tag: 'htk-bar-button' diff --git a/js/htk/field/button.js b/js/htk/field/button.js index a812f43a..cd01a41d 100644 --- a/js/htk/field/button.js +++ b/js/htk/field/button.js @@ -7,13 +7,13 @@ module.exports = new Class({ image: { type: String ,set: function(x) { - this.span.innerText = x; + this.iconNode.name = x; } }, icon: { type: String ,set: function(x) { - this.span.innerText = x; + this.iconNode.name = x; } }, tip: { @@ -21,7 +21,7 @@ module.exports = new Class({ ,set: function(x) { if (x) { this.node.title = _(x); - this.span.title = _(x); + this.iconNode.title = _(x); } this.renderContent(); @@ -49,9 +49,8 @@ module.exports = new Class({ node.className = 'htk-button'; node.addEventListener('click', this.onClick.bind(this)); - this.span = this.createElement('span'); - this.span.className = 'material-symbols-rounded icon'; - node.appendChild(this.span); + this.iconNode = new Htk.Icon(); + node.appendChild(this.iconNode.node); } ,renderContent: function() { diff --git a/js/htk/field/calendar.js b/js/htk/field/calendar.js index 0a1eb085..f1e54421 100644 --- a/js/htk/field/calendar.js +++ b/js/htk/field/calendar.js @@ -43,12 +43,17 @@ module.exports = new Class({ thead.appendChild(tr); var th = this.createElement('th'); - th.appendChild(this.createTextNode('<')); - th.className = 'button'; - th.addEventListener('click', this.prevMonthClicked.bind(this)); + th.className = 'previous'; tr.appendChild(th); + var previousButton = new Htk.Button({ + icon: 'arrow_back_ios' + }).node; + previousButton.addEventListener('click', this.prevMonthClicked.bind(this)); + th.appendChild(previousButton); + var th = this.createElement('th'); + th.className = 'month-year'; th.colSpan = 5; tr.appendChild(th); @@ -62,12 +67,17 @@ module.exports = new Class({ th.appendChild(yearNode); var th = this.createElement('th'); - th.appendChild(this.createTextNode('>')); - th.className = 'button'; - th.addEventListener('click', this.nextMonthClicked.bind(this)); + th.className = 'next'; tr.appendChild(th); + + var nextButton = new Htk.Button({ + icon: 'arrow_forward_ios' + }).node; + nextButton.addEventListener('click', this.nextMonthClicked.bind(this)); + th.appendChild(nextButton); var tr = this.createElement('tr'); + tr.className = 'weekdays'; thead.appendChild(tr); for (var i = 1; i <= len; i++) { diff --git a/js/htk/field/html.js b/js/htk/field/html.js index 166cab44..641d9a46 100644 --- a/js/htk/field/html.js +++ b/js/htk/field/html.js @@ -4,13 +4,11 @@ module.exports = new Class Extends: Htk.Field ,Tag: 'htk-html' - ,render: function () - { - this.createRoot ('div'); + ,render: function() { + this.createRoot('div'); } - ,putValue: function (value) - { + ,putValue: function(value) { this.node.innerHTML = value; } }); diff --git a/js/htk/htk.js b/js/htk/htk.js index 5fe8cc2f..a193ab6f 100644 --- a/js/htk/htk.js +++ b/js/htk/htk.js @@ -1,6 +1,7 @@ require('db/db'); -require('./style.scss'); +require('./style/classes.scss'); +require('./style/main.scss'); Htk = module.exports = { NodeBuilder : require('./node-builder') diff --git a/js/htk/icon.js b/js/htk/icon.js index 0988fda3..75ed807f 100644 --- a/js/htk/icon.js +++ b/js/htk/icon.js @@ -42,7 +42,7 @@ module.exports = new Class({ ,render: function() { const node = this.createRoot('span'); - node.className = 'material-symbols-rounded icon'; + node.className = 'htk-icon material-symbols-rounded'; } ,_setIcon: function() { diff --git a/js/htk/repeater.js b/js/htk/repeater.js index ef15b692..183e01c2 100644 --- a/js/htk/repeater.js +++ b/js/htk/repeater.js @@ -96,7 +96,7 @@ module.exports = new Class({ var builder = this._builder = new Vn.Builder(); builder.setParent(builderResult); - builder.loadXmlFromNode(node.firstElementChild); + builder.loadXmlFromNode(node.firstElementChild, null, [this._formId]); this._onModelChange(); } @@ -121,7 +121,7 @@ module.exports = new Class({ this._builder.add(this._formId, set); var res = this._builder.load(); - res.link(); + res.link(null, [set.getObject()]); this._childsData.push({ builder: res, diff --git a/js/htk/style/classes.scss b/js/htk/style/classes.scss new file mode 100644 index 00000000..c3f913f3 --- /dev/null +++ b/js/htk/style/classes.scss @@ -0,0 +1,20 @@ + +@import "variables"; + +%box { + border-radius: .6em; + box-shadow: .05em .05em .2em rgba(0, 0, 0, .1); + overflow: hidden; + border: none; + background-color: white; +} +%clickable { + cursor: pointer; + transition: background-color 250ms ease-out; + + &:hover, + &:focus { + background-color: $color-hover-cd; + outline: none; + } +} diff --git a/js/htk/style.scss b/js/htk/style/main.scss similarity index 78% rename from js/htk/style.scss rename to js/htk/style/main.scss index 1bb9d983..cd31d7c0 100644 --- a/js/htk/style.scss +++ b/js/htk/style/main.scss @@ -1,4 +1,7 @@ +@import "variables"; +@import "classes"; + /* Grid */ .htk-grid { @@ -156,8 +159,64 @@ td.cell-image .htk-image { .htk-select-menu td { max-width: 11em; overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* Icon */ + +.htk-icon {} + +/* List */ + +.htk-list { + .item { + @extend %clickable; + padding: 20px; + border-bottom: 1px solid #DDD; + display: flex; + align-items: center; + + &:hover { + background-color: rgba(1, 1, 1, 0.05); + } + & > .side { + flex: none; + } + & > .content { + flex: 1; + + & > .important { + font-weight: bold; + font-size: 1rem; + margin-bottom: .5em; + } + & > p { + margin: .1em 0; + } + } + & > .actions { + flex: none; + display: none; + + & > .htk-button { + margin: 0; + } + & > * { + display: inline-block; + vertical-align: middle; + } + & > input { + margin: .6em; + } + } + } + .item:hover > .actions { + display: block; + } + .item:last-child { + border-bottom: none; + } } /* Button */ @@ -165,12 +224,12 @@ td.cell-image .htk-image { .htk-button { display: flex; align-items: center; - border-radius: 2em; + border-radius: 22px; font-weight: bold; - gap: .5em; - padding: 0 .5em; + gap: 8px; + padding: 0 10px; - & > span.icon { + & > .htk-icon { display: block; } } @@ -178,73 +237,91 @@ td.cell-image .htk-image { /* Calendar */ .htk-calendar { + @extend %box; width: 20em; - background-color: white; - border: none; - border-radius: .5em; -} -.htk-calendar table { - border-collapse: collapse; -} -.htk-calendar thead tr, -.htk-calendar tfoot tr { - background-color: #888; - color: white; - font-weight: normal; - vertical-align: middle; - text-align: center; - height: 3em; -} -.htk-calendar thead span { - color: white; -} -.htk-calendar thead tr { - border-bottom: none; -} -.htk-calendar tfoot tr { - border-top: none; -} -.htk-calendar th.button { - display: table-cell; -} -.htk-calendar th.button:hover { - cursor: pointer; - background-color: rgba(1, 1, 1, 0.2); -} -.htk-calendar col { - width: 14.2%; -} -.htk-calendar tr { - height: 2em; -} -.htk-calendar tbody td { - text-align: right; -} -.htk-calendar tbody td > div { - height: 2em; - width: 2em; - line-height: 2em; - text-align: center; - border-radius: 2em; - padding: 0.3em; - margin: 0 auto; - color: #555; -} -.htk-calendar div.disabled { - color: #999; -} -.htk-calendar div.today { - font-weight: bold; - color: black; -} -.htk-calendar div.selected { - color: white; - background-color: #8cc63f; -} -.htk-calendar div.enabled:hover { - cursor: pointer; - background-color: rgba(140, 198, 63, 0.8); - color: white; + + table { + border-collapse: collapse; + } + thead tr, + tfoot tr { + font-weight: normal; + vertical-align: middle; + text-align: center; + height: 3em; + } + thead > tr { + &.weekdays > th { + font-weight: normal; + color: #999; + text-transform: lowercase; + } + & > th { + &.previous, &.next { + font-size: .8rem; + + button { + border-radius: 50%; + padding: 10px; + display: block; + margin: 0 auto; + + & > .htk-icon { + font-size: 1rem; + } + } + } + &.month-year { + font-size: 1.2rem; + text-transform: lowercase; + } + } + } + tfoot tr { + border-top: none; + } + th.button { + display: table-cell; + } + th.button:hover { + cursor: pointer; + background-color: rgba(1, 1, 1, 0.2); + } + col { + width: 14.2%; + } + tr { + height: 2em; + } + tbody td { + text-align: right; + } + tbody td > div { + height: 2em; + width: 2em; + line-height: 2em; + text-align: center; + border-radius: 2em; + padding: 0.3em; + margin: 0 auto; + color: #555; + } + div.disabled { + color: #bbb; + } + div.today { + font-weight: bold; + color: black; + } + div.selected { + color: white; + background-color: #8cc63f; + } + div.enabled:hover { + cursor: pointer; + background-color: rgba(140, 198, 63, 0.8); + color: white; + } } /* Image */ @@ -439,7 +516,7 @@ td.cell-image .htk-image { & > h2 { text-align: center; font-weight: normal; - font-size: 1.5em; + font-size: 1.5rem; margin: 0; padding: 0; margin-bottom: 1em; diff --git a/js/htk/style/variables.scss b/js/htk/style/variables.scss new file mode 100644 index 00000000..aa5a68f3 --- /dev/null +++ b/js/htk/style/variables.scss @@ -0,0 +1,2 @@ + +$color-hover-cd: rgba(255, 255, 255, .1); \ No newline at end of file diff --git a/js/vn/builder.js b/js/vn/builder.js index fd741cce..ff38cce1 100644 --- a/js/vn/builder.js +++ b/js/vn/builder.js @@ -1,35 +1,30 @@ -var Object = require ('./object'); +var Object = require('./object'); /** * Creates a object from a XML specification. - **/ -module.exports = new Class -({ + */ +module.exports = new Class({ Extends: Object ,_addedMap: {} ,_contexts: null - ,add: function (id, object) - { + ,add: function(id, object) { this._addedMap[id] = object; } - ,setParent: function (parentResult) - { + ,setParent: function(parentResult) { this._parentResult = parentResult; if (parentResult && !this.signalData) this.signalData = parentResult.builder.signalData; } - ,getMain: function (result) - { + ,getMain: function(result) { return result.objects[this._mainContext]; } - ,getById: function (result, objectId) - { + ,getById: function(result, objectId) { var index = this._contextMap[objectId]; if (index !== undefined) @@ -41,18 +36,16 @@ module.exports = new Class return object; if (this._parentResult) - return this._parentResult.getById (objectId); + return this._parentResult.getById(objectId); return null; } - ,getByTagName: function (result, tagName) - { + ,getByTagName: function(result, tagName) { var tags = this._tags[tagName]; - if (tags) - { - var arr = new Array (tags.length); + if (tags) { + var arr = new Array(tags.length); for (var i = 0; i < tags.length; i++) arr[i] = result.objects[tags[i]]; @@ -69,32 +62,28 @@ module.exports = new Class * @path String The XML path * @dstDocument Document The document used to create the nodes * @return %true on success, %false othersise - **/ - ,loadXml: function (path, dstDocument) - { + */ + ,loadXml: function(path, dstDocument) { this._path = path; - return this.loadFromXmlDoc (Vn.getXml (path), dstDocument); + return this.loadFromXmlDoc(Vn.getXml(path), dstDocument); } - ,loadFromString: function (xmlString, dstDocument) - { - var parser = new DOMParser (); - var xmlDoc = parser.parseFromString (xmlString, 'text/xml'); - return this.loadFromXmlDoc (xmlDoc, dstDocument); + ,loadFromString: function(xmlString, dstDocument) { + var parser = new DOMParser(); + var xmlDoc = parser.parseFromString(xmlString, 'text/xml'); + return this.loadFromXmlDoc(xmlDoc, dstDocument); } - ,loadFromXmlDoc: function (xmlDoc, dstDocument) - { + ,loadFromXmlDoc: function(xmlDoc, dstDocument, scope) { if (!xmlDoc) return false; - this._compileInit (dstDocument); + this._compileInit(dstDocument, scope); var docElement = xmlDoc.documentElement; - if (docElement.tagName !== 'vn') - { - this._showError ('Malformed XML'); + if (docElement.tagName !== 'vn') { + this._showError('Malformed XML'); this._contexts = null; return false; } @@ -103,9 +92,9 @@ module.exports = new Class if (childs) for (var i = 0; i < childs.length; i++) - this._compileNode (childs[i]); + this._compileNode(childs[i]); - this._compileEnd (); + this._compileEnd(); return true; } @@ -115,75 +104,130 @@ module.exports = new Class * @path Node The DOM node * @dstDocument Document The document used to create the nodes * @return %true on success, %false othersise - **/ - ,loadXmlFromNode: function (node, dstDocument) - { - this._compileInit (dstDocument); - this._mainContext = this._compileNode (node).id; - this._compileEnd (); + */ + ,loadXmlFromNode: function(node, dstDocument, scope) { + this._compileInit(dstDocument, scope); + this._mainContext = this._compileNode(node).id; + this._compileEnd(); return true; } - ,load: function () - { + ,load: function() { if (this._contexts === null) return null; var contexts = this._contexts; var len = contexts.length; - var objects = new Array (len); + var objects = new Array(len); - for (var i = 0; i < len; i++) - { + for (var i = 0; i < len; i++) { var context = contexts[i]; if (context.tagName) - objects[i] = this.elementInstantiate (context); + objects[i] = this.elementInstantiate(context); else if (context.klass) - objects[i] = this.objectInstantiate (context); + objects[i] = this.objectInstantiate(context); else - objects[i] = this.textInstantiate (context); + objects[i] = this.textInstantiate(context); } - return new BuilderResult (this, objects); + return new BuilderResult(this, objects); } - ,link: function (result) - { + ,link: function(result, self, scope) { var objects = result.objects; - for (var i = this._links.length - 1; i >= 0; i--) - { + for (var i = this._links.length - 1; i >= 0; i--) { var l = this._links[i]; var addedObject = this._addedMap[l.objectId]; - if (addedObject) - { + if (addedObject) { if (l.prop) objects[l.context.id][l.prop] = addedObject; else - objects[l.context.id].appendChild (addedObject); - } - else - this._showError ('Referenced unexistent object with id \'%s\'', + objects[l.context.id].appendChild(addedObject); + } else + this._showError('Referenced unexistent object with id \'%s\'', l.objectId); } + this.linkExpr(result, self, scope); + var contexts = this._contexts; - for (var i = 0; i < contexts.length; i++) - { + for (var i = 0; i < contexts.length; i++) { var context = contexts[i]; var object = objects[i]; if (context.tagName) - this.elementLink (context, object, objects, result); + this.elementLink(context, object, objects, result); else if (context.klass) - this.objectLink (context, object, objects, result); + this.objectLink(context, object, objects, result); } } + + ,fnExpr(expr) { + return new Function(this._scopeArgs, + '"use strict"; return ' + expr + ';' + ); + } - ,_compileInit: function (dstDocument) - { + ,matchExpr(value) { + const match = /^{{(.*)}}$/.exec(value); + if (!match) return null; + return this.fnExpr(match[1]); + } + + ,linkExpr(result, self, scope) { + const contexts = this._contexts; + const objects = result.objects; + let args = [_] + + if (scope) args = args.concat(scope); + + for (let i = 0; i < contexts.length; i++) { + const context = contexts[i]; + const object = objects[i]; + + if (context.exprs) { + const values = []; + for (expr of context.exprs) { + let value = undefined; + try { + value = expr.apply(self, args); + } catch (e) { + console.warn('Expression error:', e.message); + continue; + } + values.push(value); + } + + let k = 0; + const text = context.text.replace(/{{\d+}}/g, function() { + return values[k++]; + }); + object.textContent = text; + } else { + const dynProps = context.dynProps; + + for (const prop in dynProps) { + let value = undefined; + try { + value = dynProps[prop].apply(self, args); + } catch (e) { + console.warn('Expression error:', e.message); + continue; + } + + if (context.tagName) + object.setAttribute(prop, value); + else + object[prop] = value; + } + } + } + } + + ,_compileInit: function(dstDocument, scope) { this._path = null; this._tags = {}; this._contexts = []; @@ -191,61 +235,58 @@ module.exports = new Class this._links = []; this._mainContext = null; this._doc = dstDocument ? dstDocument : document; + + this._scope = ['_']; + if (scope) + this._scope = this._scope.concat(scope); + this._scopeArgs = this._scope.join(','); } - ,_compileEnd: function () - { - for (var i = this._links.length - 1; i >= 0; i--) - { + ,_compileEnd: function() { + for (var i = this._links.length - 1; i >= 0; i--) { var l = this._links[i]; var contextId = this._contextMap[l.objectId]; - if (contextId != undefined) - { + if (contextId != undefined) { if (l.prop) l.context.objectProps[l.prop] = contextId; else - l.context.childs.push (contextId); + l.context.childs.push(contextId); - this._links.splice (i, 1); - } - else - { + this._links.splice(i, 1); + } else { var object = this._addedMap[l.objectId]; if (!object && this._parentResult) - object = this._parentResult.getById (l.objectId); + object = this._parentResult.getById(l.objectId); - if (object) - { + if (object) { l.context.props[l.prop] = object; - this._links.splice (i, 1); + this._links.splice(i, 1); } } } } - ,_compileNode: function (node) - { + ,_compileNode: function(node) { var context = null; var tagName = null; if (node.nodeType === Node.ELEMENT_NODE) - tagName = node.tagName.toLowerCase (); + tagName = node.tagName.toLowerCase(); else if (node.nodeType !== Node.TEXT_NODE - || /^[\n\r\t]*$/.test (node.textContent)) + || /^[\n\r\t]*$/.test(node.textContent)) return null; var context = - this.textCompile (node, tagName) - || this.objectCompile (node, tagName) - || this.elementCompile (node, tagName); + this.textCompile(node, tagName) + || this.objectCompile(node, tagName) + || this.elementCompile(node, tagName); context.id = this._contexts.length; - if (tagName) - { - var nodeId = node.getAttribute ('id'); + if (tagName) { + var nodeId = node.getAttribute('id'); if (nodeId) this._contextMap[nodeId] = context.id; @@ -255,44 +296,53 @@ module.exports = new Class if (!tags) this._tags[tagName] = tags = []; - tags.push (context.id); + tags.push(context.id); } - this._contexts.push (context); + this._contexts.push(context); return context; } /** * Creates a text node context. - **/ - ,textCompile: function (node, tagName) - { - if (!tagName) - var text = node.textContent; - else if (tagName === 't') - var text = _(node.firstChild.textContent); + */ + ,textCompile: function(node, tagName) { + if (!tagName) { + let text = node.textContent; + + if (/{{.*}}/.test(text)) { + let i = 0; + const self = this; + const exprs = []; + text = text.replace(/{{((?:(?!}}).)*)}}/g, function(match, capture) { + exprs.push(self.fnExpr(capture)); + return `{{${i++}}}`; + }); + + return {text, exprs}; + } else + return {text}; + } else if (tagName === 't') + return {text: _(node.firstChild.textContent)}; else return null; - - return {text: text}; } - ,textInstantiate: function (context) - { - return this._doc.createTextNode (context.text); + ,textInstantiate: function(context) { + return this._doc.createTextNode(context.exprs ? '' : context.text); } /** * Creates a object context. - **/ - ,objectCompile: function (node, tagName) - { + */ + ,objectCompile: function(node, tagName) { var klass = vnCustomTags[tagName]; if (!klass) return null; var props = {}; + var dynProps = {}; var objectProps = {}; var childs = []; var events = {}; @@ -300,6 +350,7 @@ module.exports = new Class var context = { klass: klass, props: props, + dynProps: dynProps, objectProps: objectProps, childs: childs, events: events, @@ -308,21 +359,17 @@ module.exports = new Class var a = node.attributes; - for (var i = 0; i < a.length; i++) - { + for (var i = 0; i < a.length; i++) { var attribute = a[i].nodeName; var value = a[i].nodeValue; - if (this._isEvent (attribute)) - { - var handler = this._getMethod (value) + if (this._isEvent(attribute)) { + var handler = this._getMethod(value) if (handler) - events[attribute.substr (3)] = handler; - } - else if (!/^(id|property)$/.test (attribute)) - { - this.propCompile (context, klass, props, + events[attribute.substr(3)] = handler; + } else if (!/^(id|property)$/.test(attribute)) { + this.propCompile(context, klass, props, dynProps, node, attribute, value); } } @@ -330,97 +377,89 @@ module.exports = new Class var childNodes = node.childNodes; if (childNodes) - for (var i = 0; i < childNodes.length; i++) - { + for (var i = 0; i < childNodes.length; i++) { var child = childNodes[i]; var isElement = child.nodeType === Node.ELEMENT_NODE; - var childTagName = isElement ? child.tagName.toLowerCase () : null; + var childTagName = isElement ? child.tagName.toLowerCase() : null; var childContext; - if (childTagName === 'pointer') - { - this._addLink (context, null, child.getAttribute ('object')); - } - else if (childTagName === 'custom') - { + if (childTagName === 'pointer') { + this._addLink(context, null, child.getAttribute('object')); + } else if (childTagName === 'custom') { context.custom = child; - } - else if (childContext = this._compileNode (child)) - { - var prop = isElement ? child.getAttribute ('property') : null; + } else if (childContext = this._compileNode(child)) { + var prop = isElement ? child.getAttribute('property') : null; - if (prop) - { - prop = prop.replace (/-./g, this._replaceFunc); + if (prop) { + prop = prop.replace(/-./g, this._replaceFunc); objectProps[prop] = childContext.id; - } - else - childs.push (childContext.id); + } else + childs.push(childContext.id); } } return context; } - ,propCompile: function (context, klass, props, node, attribute, value) - { + ,propCompile: function(context, klass, props, dynProps, node, attribute, value) { var isLink = false; var newValue = null; - var propName = attribute.replace (/-./g, this._replaceFunc); + var propName = attribute.replace(/-./g, this._replaceFunc); var propInfo = klass.Properties[propName]; - if (!propInfo) - { - this._showError ('Attribute \'%s\' not valid for tag \'%s\'', + if (!propInfo) { + this._showError('Attribute \'%s\' not valid for tag \'%s\'', attribute, node.tagName); return; } - if (!value) - { - this._showError ('Attribute \'%s\' empty on tag \'%s\'', + if (!value) { + this._showError('Attribute \'%s\' empty on tag \'%s\'', attribute, node.tagName); return; } - switch (propInfo.type) - { + const expr = this.matchExpr(value); + + if (expr) { + dynProps[propName] = expr; + } else { + switch (propInfo.type) { case Boolean: - newValue = (/^(true|1)$/i).test (value); + newValue = (/^(true|1)$/i).test(value); break; case Number: - newValue = 0 + new Number (value); + newValue = 0 + new Number(value); break; case String: - newValue = this._translateValue (value); + newValue = this._translateValue(value); break; case Function: - var method = this._getMethod (value); - newValue = method ? method.bind (this.signalData) : null; + var method = this._getMethod(value); + newValue = method ? method.bind(this.signalData) : null; break; default: if (propInfo.enumType) newValue = propInfo.enumType[value]; else if (propInfo.type instanceof Function) isLink = true; + } + + if (isLink) + this._addLink(context, propName, value); + else if (newValue !== null && newValue !== undefined) + props[propName] = newValue; + else + this._showError('Attribute \'%s\' invalid for tag \'%s\'', + attribute, node.tagName); } - - if (isLink) - this._addLink (context, propName, value); - else if (newValue !== null && newValue !== undefined) - props[propName] = newValue; - else - this._showError ('Attribute \'%s\' invalid for tag \'%s\'', - attribute, node.tagName); } - ,objectInstantiate: function (context) - { - return new context.klass (); + ,objectInstantiate: function(context) { + return new context.klass(); } - ,objectLink: function (context, object, objects, res) - { - object.setProperties (context.props); + ,objectLink: function(context, object, objects, res) { + object.setProperties(context.props); var objectProps = context.objectProps; for (var prop in objectProps) @@ -428,42 +467,42 @@ module.exports = new Class var childs = context.childs; for (var i = 0; i < childs.length; i++) - object.appendChild (objects[childs[i]]); + object.appendChild(objects[childs[i]]); var events = context.events; for (var event in events) - object.on (event, events[event], this.signalData); + object.on(event, events[event], this.signalData); if (context.custom) - object.loadXml (res, context.custom); + object.loadXml(res, context.custom); } /** * Creates a HTML node context. - **/ - ,elementCompile: function (node, tagName) - { + */ + ,elementCompile: function(node, tagName) { var attributes = {}; + var dynProps = {}; var childs = []; var events = {}; var handler; var a = node.attributes; - for (var i = 0; i < a.length; i++) - { + for (var i = 0; i < a.length; i++) { var attribute = a[i].nodeName; var value = a[i].nodeValue; - - if (this._isEvent (attribute)) - { - var handler = this._getMethod (value); + const expr = this.matchExpr(value); + + if (expr) { + dynProps[attribute] = expr; + } else if (this._isEvent(attribute)) { + var handler = this._getMethod(value); if (handler) - events[attribute.substr (3)] = handler; - } - else if (attribute !== 'id') - attributes[attribute] = this._translateValue (value); + events[attribute.substr(3)] = handler; + } else if (attribute !== 'id') + attributes[attribute] = this._translateValue(value); } var childContext; @@ -471,145 +510,129 @@ module.exports = new Class if (childNodes) for (var i = 0; i < childNodes.length; i++) - if (childContext = this._compileNode (childNodes[i])) - childs.push (childContext.id); + if (childContext = this._compileNode(childNodes[i])) + childs.push(childContext.id); return { - tagName: tagName, - attributes: attributes, - childs: childs, - events: events + tagName, + attributes, + dynProps, + childs, + events }; } - ,elementInstantiate: function (context) - { - return this._doc.createElement (context.tagName); + ,elementInstantiate: function(context) { + return this._doc.createElement(context.tagName); } - ,elementLink: function (context, object, objects) - { + ,elementLink: function(context, object, objects) { var attributes = context.attributes; for (var attribute in attributes) - object.setAttribute (attribute, attributes[attribute]); + object.setAttribute(attribute, attributes[attribute]); var childs = context.childs; - for (var i = 0; i < childs.length; i++) - { + for (var i = 0; i < childs.length; i++) { var child = objects[childs[i]]; if (child instanceof Htk.Widget) child = child.node; if (child instanceof Node) - object.appendChild (child); + object.appendChild(child); } var events = context.events; for (var event in events) - object.addEventListener (event, - events[event].bind (this.signalData)); + object.addEventListener(event, + events[event].bind(this.signalData)); } - ,_showError: function (error) - { + ,_showError: function(error) { var path = this._path ? this._path : 'Node'; var logArgs = ['Vn.Builder: %s: '+ error, path]; for (var i = 1; i < arguments.length; i++) - logArgs.push (arguments[i]); + logArgs.push(arguments[i]); - console.warn.apply (null, logArgs); + console.warn.apply(null, logArgs); } - ,_addLink: function (context, prop, objectId) - { - this._links.push ({ + ,_addLink: function(context, prop, objectId) { + this._links.push({ context: context ,prop: prop ,objectId: objectId }); } - ,_translateValue: function (value) - { - var chr = value.charAt (0); + ,_translateValue: function(value) { + var chr = value.charAt(0); if (chr === '_') - return _(value.substr (1)); - else if (chr === '\\' && value.charAt (1) === '_') - return value.substr (1); + return _(value.substr(1)); + else if (chr === '\\' && value.charAt(1) === '_') + return value.substr(1); return value; } - ,_getMethod: function (value) - { + ,_getMethod: function(value) { if (this.signalData) var method = this.signalData[value]; else var method = window[value]; if (method === undefined) - this._showError ('Function \'%s\' not found', value); + this._showError('Function \'%s\' not found', value); return method; } - ,_isEvent: function (attribute) - { - return /^on-\w+/.test (attribute); + ,_isEvent: function(attribute) { + return /^on-\w+/.test(attribute); } - ,_replaceFunc: function (token) - { - return token.charAt(1).toUpperCase (); + ,_replaceFunc: function(token) { + return token.charAt(1).toUpperCase(); } }); -var BuilderResult = new Class -({ +var BuilderResult = new Class({ Extends: Object - ,initialize: function (builder, objects) - { + ,initialize: function(builder, objects) { this.builder = builder; this.objects = objects; } - ,getMain: function () - { - return this.builder.getMain (this); + ,getMain: function() { + return this.builder.getMain(this); } - ,$: function (objectId) - { - return this.builder.getById (this, objectId); + ,$: function(objectId) { + return this.builder.getById(this, objectId); } - ,getById: function (objectId) - { - return this.builder.getById (this, objectId); + ,getById: function(objectId) { + return this.builder.getById(this, objectId); } - ,getByTagName: function (tagName) - { - return this.builder.getByTagName (this, tagName); + ,getByTagName: function(tagName) { + return this.builder.getByTagName(this, tagName); } - ,link: function () - { - this.builder.link (this); + ,link: function(self, scope) { + this.builder.link(this, self, scope); } - ,_destroy: function () - { + ,_destroy: function() { var objects = this.objects; for (var i = 0; i < objects.length; i++) if (objects[i] instanceof Object) - objects[i].unref (); + objects[i].unref(); - this.parent (); + this.parent(); } }); diff --git a/js/vn/date.js b/js/vn/date.js index 96b5a8e0..256c2edb 100644 --- a/js/vn/date.js +++ b/js/vn/date.js @@ -49,7 +49,7 @@ module.exports = ,'Feb' ,'Mar' ,'Apr' - ,'May' + ,'AbrMay' ,'Jun' ,'Jul' ,'Ago' diff --git a/js/vn/locale/ca.yml b/js/vn/locale/ca.yml index cba6b455..8af6588c 100644 --- a/js/vn/locale/ca.yml +++ b/js/vn/locale/ca.yml @@ -27,6 +27,7 @@ December: Decembre Jan: Gen Feb: Febr Mar: Març +AbrMay: Mai Apr: Abr Jun: Juny Jul: Jul diff --git a/js/vn/locale/en.yml b/js/vn/locale/en.yml index ea9ffe58..4ca5bcfa 100644 --- a/js/vn/locale/en.yml +++ b/js/vn/locale/en.yml @@ -28,6 +28,7 @@ Jan: Jan Feb: Feb Mar: Mar Apr: Apr +AbrMay: May Jun: Jun Jul: Jul Ago: Ago diff --git a/js/vn/locale/es.yml b/js/vn/locale/es.yml index 254dffc9..d9663c12 100644 --- a/js/vn/locale/es.yml +++ b/js/vn/locale/es.yml @@ -16,7 +16,7 @@ January: Enero February: Febrero March: Marzo April: Abril -May: May +May: Mayo June: Junio July: Julio August: Agosto @@ -28,6 +28,7 @@ Jan: Ene Feb: Feb Mar: Mar Apr: Abr +AbrMay: May Jun: Jun Jul: Jul Ago: Ago diff --git a/js/vn/locale/fr.yml b/js/vn/locale/fr.yml index bf6b5ba6..a2789597 100644 --- a/js/vn/locale/fr.yml +++ b/js/vn/locale/fr.yml @@ -28,6 +28,7 @@ Jan: Jan Feb: Fév Mar: Mars Apr: Avr +AbrMay: Mai Jun: Juin Jul: Juil Ago: Août diff --git a/js/vn/locale/mn.yml b/js/vn/locale/mn.yml index 9719aec5..97eb4d32 100644 --- a/js/vn/locale/mn.yml +++ b/js/vn/locale/mn.yml @@ -28,6 +28,7 @@ Jan: оны Feb: хоё Mar: Гур Apr: Дөр +AbrMay: May Jun: Jun Jul: Jul Ago: Най diff --git a/js/vn/locale/pt.yml b/js/vn/locale/pt.yml index 05ca2b73..db6c2892 100644 --- a/js/vn/locale/pt.yml +++ b/js/vn/locale/pt.yml @@ -28,6 +28,7 @@ Jan: Jan Feb: Fev Mar: Mar Apr: Abr +AbrMay: Mai Jun: Jun Jul: Jul Ago: Ago -- 2.40.1 From dc0ba662570b3e6ff49f3828cc783c0e2ae8bb60 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Tue, 24 May 2022 23:11:12 +0200 Subject: [PATCH 06/10] Checkpoint --- forms/account/address-list/address-list.js | 10 +- forms/account/address-list/ui.xml | 34 +- forms/account/address/address.js | 6 +- forms/account/address/style.css | 6 +- forms/account/address/ui.xml | 8 +- forms/account/conf/style.css | 15 +- forms/account/conf/ui.xml | 8 +- forms/admin/access-log/access-log.js | 3 +- forms/admin/access-log/style.css | 21 +- forms/admin/access-log/ui.xml | 32 +- forms/admin/connections/connections.js | 12 +- forms/admin/connections/style.css | 21 +- forms/admin/connections/ui.xml | 26 +- forms/admin/items/ui.xml | 10 +- forms/admin/links/links.js | 8 +- forms/admin/links/ui.xml | 13 +- forms/admin/queries/queries.js | 71 +-- forms/admin/queries/style.css | 15 +- forms/admin/queries/ui.xml | 4 +- forms/admin/users/style.css | 24 +- forms/admin/users/ui.xml | 12 +- forms/admin/users/users.js | 10 +- forms/admin/visits/ui.xml | 4 +- forms/admin/visits/visits.js | 20 +- forms/cms/home/home.js | 4 - forms/cms/home/ui.xml | 5 +- forms/news/new/new.js | 4 +- forms/news/new/style.css | 15 +- forms/news/new/ui.xml | 10 +- forms/news/news/news.js | 29 +- forms/news/news/ui.xml | 12 +- forms/reports/items-form/items-form.js | 21 +- forms/reports/items-form/ui.xml | 2 +- forms/reports/shelves/shelves.js | 22 +- forms/reports/shelves/ui.xml | 6 +- js/hedera/form.js | 22 +- js/hedera/report.js | 88 ++- js/htk/component.js | 53 +- js/htk/field/radio.js | 82 +-- js/htk/node-builder.js | 20 +- js/htk/repeater.js | 36 +- js/htk/style/variables.scss | 3 +- js/htk/widget.js | 55 +- js/sql/batch.js | 124 ++-- js/vn/builder.js | 671 +++++++++++---------- js/vn/scope.js | 60 ++ js/vn/string-util.js | 27 + 47 files changed, 861 insertions(+), 903 deletions(-) create mode 100644 js/vn/scope.js create mode 100644 js/vn/string-util.js diff --git a/forms/account/address-list/address-list.js b/forms/account/address-list/address-list.js index 1be4719e..af8cf66d 100644 --- a/forms/account/address-list/address-list.js +++ b/forms/account/address-list/address-list.js @@ -19,21 +19,23 @@ Hedera.AddressList = new Class window.history.back(); } - ,onSetDefaultClick: function() { + ,onSetDefaultClick: function(event, addressId) { + if (event.defaultPrevented) return; + this.$('defaultAddress').value = addressId; Htk.Toast.showMessage(_('DefaultAddressModified')); } - ,onRemoveAddressClick: function(button, form) { + ,onRemoveAddressClick: function(form) { if (confirm(_('AreYouSureDeleteAddress'))) { form.set('isActive', false); form.refresh(); } } - ,onEditAddressClick: function(button, form) { + ,onEditAddressClick: function(id) { this.hash.set({ form: 'account/address', - address: form.get('id') + address: id }); } }); diff --git a/forms/account/address-list/ui.xml b/forms/account/address-list/ui.xml index e113593b..594f7b67 100644 --- a/forms/account/address-list/ui.xml +++ b/forms/account/address-list/ui.xml @@ -25,7 +25,7 @@ <htk-bar-button icon="add" tip="_AddAddress" - on-click="onAddAddressClick"/> + on-click="this.onAddAddressClick()"/> </div> <div id="form" class="address-list"> <div class="box"> @@ -33,40 +33,38 @@ id="default-address" column="defaultAddressFk" form="user-form"/> - <htk-repeater model="addresses" form-id="iter" class="htk-list"> + <htk-repeater model="addresses" form-id="address" class="htk-list"> <custom> - <div class="address item" on-click="onSetDefaultClick"> + <div class="address item" on-click="this.onSetDefaultClick($event, address.id)"> <div class="side"> <htk-radio - form="iter" - column="id" radio-group="default-address" - tip="_SetAsDefault"/> + val="{{address.id}}" + tip="_SetAsDefault" + name="test"/> </div> <div class="content"> <p class="important"> - {{iter.nickname}} + {{address.nickname}} </p> <p> - {{iter.street}} + {{address.street}} </p> <p> - {{iter.postalCode}}, {{iter.city}} + {{address.postalCode}}, {{address.city}} </p> </div> - <div class="actions"> + <div + class="actions" + on-click="$event.preventDefault()"> <htk-button - form="iter" - column="id" - tip="_RemoveAddress" icon="delete" - on-click="onRemoveAddressClick"/> + tip="_RemoveAddress" + on-click="this.onRemoveAddressClick($.address)"/> <htk-button - form="iter" - column="id" - tip="_EditAddress" icon="edit" - on-click="onEditAddressClick"/> + tip="_EditAddress" + on-click="this.onEditAddressClick(address.id)"/> </div> </div> </custom> diff --git a/forms/account/address/address.js b/forms/account/address/address.js index db430998..163c57aa 100644 --- a/forms/account/address/address.js +++ b/forms/account/address/address.js @@ -8,9 +8,9 @@ Hedera.Address = new Class({ new Sql.Function({schema: 'account', name: 'myUser_getId'})); }, - onStatusChange: function(form) { - if (form.ready && this.$('address').value == 0) - form.insertRow(); + onStatusChange: function() { + if (this.$('iter').ready && this.$('address').value == 0) + this.$('iter').insertRow(); }, onOperationsDone: function() { diff --git a/forms/account/address/style.css b/forms/account/address/style.css index ea43b06e..26d66c87 100644 --- a/forms/account/address/style.css +++ b/forms/account/address/style.css @@ -1,10 +1,8 @@ -.address -{ +.address { padding: 1em; } -.address .box -{ +.address .box { max-width: 30em; padding: 3em; } diff --git a/forms/account/address/ui.xml b/forms/account/address/ui.xml index 4bc07a23..b0aef267 100644 --- a/forms/account/address/ui.xml +++ b/forms/account/address/ui.xml @@ -2,13 +2,13 @@ <vn-group> <vn-param id="address"/> <vn-hash-param key="address" param="address"/> - <db-form id="iter" on-status-changed="onStatusChange"> + <db-form id="iter" on-status-changed="this.onStatusChange()"> <db-model id="model" property="model" updatable="true" mode="ON_DEMAND" - on-operations-done="onOperationsDone"> + on-operations-done="this.onOperationsDone()"> SELECT a.id, a.street, a.nickname, a.city, a.postalCode, a.provinceFk, p.countryFk FROM myAddress a @@ -29,11 +29,11 @@ <htk-bar-button icon="close" tip="_Return" - on-click="onReturnClick"/> + on-click="this.onReturnClick()"/> <htk-bar-button icon="check" tip="_Accept" - on-click="onAcceptClick"/> + on-click="this.onAcceptClick()"/> </div> <div id="form" class="address"> <div class="box"> diff --git a/forms/account/conf/style.css b/forms/account/conf/style.css index d5680773..899d1666 100644 --- a/forms/account/conf/style.css +++ b/forms/account/conf/style.css @@ -1,23 +1,18 @@ -.conf -{ +.conf { padding: 1em; } -.conf .box -{ +.conf .box { max-width: 30em; padding: 3em; } -.pass-change -{ +.pass-change { max-width: 15em; padding: 2.5em; } -.pass-info -{ +.pass-info { width: 15em; } -.pass-info ul -{ +.pass-info ul { list-style-type: none; } diff --git a/forms/account/conf/ui.xml b/forms/account/conf/ui.xml index a59f12d5..c21aa80f 100644 --- a/forms/account/conf/ui.xml +++ b/forms/account/conf/ui.xml @@ -27,11 +27,11 @@ <htk-bar-button icon="place" tip="_Addresses" - on-click="onAddressesClick"/> + on-click="this.onAddressesClick()"/> <htk-bar-button icon="lock_reset" tip="_Change password" - on-click="onPassChangeClick"/> + on-click="this.onPassChangeClick()"/> </div> <div id="form" class="conf"> <div class="box"> @@ -98,10 +98,10 @@ placeholder="_Repeat password"/> </div> <div class="button-bar"> - <button class="thin" on-click="onPassModifyClick"> + <button class="thin" on-click="this.onPassModifyClick()"> <t>Modify</t> </button> - <button class="thin" on-click="onPassInfoClick"> + <button class="thin" on-click="this.onPassInfoClick()"> <t>Requirements</t> </button> <div class="clear"/> diff --git a/forms/admin/access-log/access-log.js b/forms/admin/access-log/access-log.js index 8efbd52a..aa58beda 100644 --- a/forms/admin/access-log/access-log.js +++ b/forms/admin/access-log/access-log.js @@ -1,6 +1,5 @@ -Hedera.AccessLog = new Class -({ +Hedera.AccessLog = new Class({ Extends: Hedera.Form }); diff --git a/forms/admin/access-log/style.css b/forms/admin/access-log/style.css index 9a6b0cfe..604b0438 100644 --- a/forms/admin/access-log/style.css +++ b/forms/admin/access-log/style.css @@ -1,36 +1,29 @@ -.access-log -{ +.access-log { padding: 1em; } -.access-log .box -{ +.access-log .box { max-width: 25em; margin: 0 auto; } -.access-log .form -{ +.access-log .form { padding: 2em; } -.access-log .form > p -{ +.access-log .form > p { font-size: 1.2em; margin: .1em 0; } /* List */ -.access-log .list -{ +.access-log .list { margin-top: 1em; } -.access-log .item -{ +.access-log .item { display: block; padding: 1em; border-bottom: 1px solid #DDD; } -.access-log .item > p -{ +.access-log .item > p { margin: .1em 0; } diff --git a/forms/admin/access-log/ui.xml b/forms/admin/access-log/ui.xml index 33cd2340..9747a1ff 100644 --- a/forms/admin/access-log/ui.xml +++ b/forms/admin/access-log/ui.xml @@ -2,11 +2,13 @@ <vn-group> <vn-param id="user"/> <vn-hash-param key="user" param="user"/> - <db-form id="user-form"> + <db-form id="userForm"> <db-model property="model"> <custom> - SELECT Id_Cliente, Cliente, Telefono, movil - FROM vn2008.Clientes WHERE Id_Cliente = #user + SELECT u.id, u.nickname, u.email, c.phone + FROM account.user u + LEFT JOIN vn.client c ON c.id = u.id + WHERE u.id = #user </custom> <sql-batch property="batch"> <custom> @@ -22,18 +24,10 @@ <div id="form" class="access-log"> <div class="box"> <div class="form"> - <p> - <htk-text form="user-form" column="Id_Cliente"/> - </p> - <p> - <htk-text form="user-form" column="Cliente"/> - </p> - <p> - <htk-text form="user-form" column="Telefono"/> - </p> - <p> - <htk-text form="user-form" column="movil"/> - </p> + <p>#{{$.userForm.id}}</p> + <p>{{$.userForm.nickname}}</p> + <p>{{$.userForm.email}}</p> + <p>{{$.userForm.phone}}</p> </div> </div> <div class="list box"> @@ -58,12 +52,12 @@ <custom> <div class="item"> <p> - <htk-text form="iter" column="stamp" format="_%a, %e %b %Y at %T"/> + {{Vn.Value.format(iter.stamp, _('%a, %e %b %Y at %T'))}} </p> <p> - <htk-text form="iter" column="platform"/> - - <htk-text form="iter" column="browser"/> - <htk-text form="iter" column="version"/> + {{iter.platform}} - + {{iter.browser}} + {{iter.version}} </p> </div> </custom> diff --git a/forms/admin/connections/connections.js b/forms/admin/connections/connections.js index ff058c12..7faab429 100644 --- a/forms/admin/connections/connections.js +++ b/forms/admin/connections/connections.js @@ -4,8 +4,8 @@ Hedera.Connections = new Class({ ,_timeoutId: null - ,onModelStatusChange: function(model) { - if (!model.ready) + ,onModelStatusChange: function() { + if (!this.$('sessions').ready) return; if (this._timeoutId) @@ -22,15 +22,15 @@ Hedera.Connections = new Class({ this.$('sessions').refresh(); } - ,onAccessLogClick: function(button, form) { + ,onAccessLogClick: function(userId) { this.hash.set({ form: 'admin/access-log' - ,user: form.get('userId') + ,user: userId }); } - ,onChangeUserClick: function(button, form) { - this.gui.supplantUser(form.get('user'), + ,onChangeUserClick: function(userName) { + this.gui.supplantUser(userName, this._onUserSupplant.bind(this)); } diff --git a/forms/admin/connections/style.css b/forms/admin/connections/style.css index 1a87896b..4e846da9 100644 --- a/forms/admin/connections/style.css +++ b/forms/admin/connections/style.css @@ -1,14 +1,11 @@ -.connections -{ +.connections { padding: 1em; } -.connections .box -{ +.connections .box { max-width: 25em; margin: 0 auto; } -.action-bar .connections-sum -{ +.action-bar .connections-sum { padding: .4em; background-color: #1e88e5; border-radius: 0.1em; @@ -17,23 +14,19 @@ /* List */ -.connections .item -{ +.connections .item { display: block; padding: 1em; border-bottom: 1px solid #DDD; } -.connections .item > button -{ +.connections .item > button { float: right; margin: 0; } -.connections .item > p -{ +.connections .item > p { margin: .1em 0; } -.connections .item > p.important -{ +.connections .item > p.important { font-size: 1.2em; text-overflow: ellipsis; white-space: nowrap; diff --git a/forms/admin/connections/ui.xml b/forms/admin/connections/ui.xml index 283d8a58..47d9a8b1 100644 --- a/forms/admin/connections/ui.xml +++ b/forms/admin/connections/ui.xml @@ -6,7 +6,7 @@ <htk-bar-button icon="refresh" tip="_Refresh" - on-click="onRefreshClick"/> + on-click="this.onRefreshClick()"/> <div class="connections-sum"> <htk-text> <db-calc-sum @@ -20,7 +20,10 @@ <div id="form" class="connections"> <div class="box"> <htk-repeater form-id="iter"> - <db-model property="model" id="sessions" on-status-changed="onModelStatusChange"> + <db-model + property="model" + id="sessions" + on-status-changed="this.onModelStatusChange()"> <custom> SELECT vu.userFk userId, vu.stamp, u.nickname, s.lastUpdate, a.platform, a.browser, a.version, u.name user @@ -36,28 +39,25 @@ <custom> <div class="item"> <htk-button - form="iter" - column="id" tip="_Access log" icon="history" - on-click="onAccessLogClick"/> + on-click="this.onAccessLogClick(iter.userId)"/> <htk-button - form="iter" - column="id" tip="_Supplant user" icon="supervisor_account" - on-click="onChangeUserClick"/> + on-click="this.onChangeUserClick(iter.user)"/> <p class="important"> + {{iter.nickname}} <htk-text form="iter" column="nickname"/> </p> <p> - <htk-text form="iter" column="stamp" format="%a, %T"/> - - <htk-text form="iter" column="lastUpdate" format="%T"/> + {{Vn.Value.format(iter.stamp, '%a, %T')}} - + {{Vn.Value.format(iter.lastUpdate, '%T')}} </p> <p> - <htk-text form="iter" column="platform"/> - - <htk-text form="iter" column="browser"/> - <htk-text form="iter" column="version"/> + {{iter.platform}} - + {{iter.browser}} + {{iter.version}} </p> </div> </custom> diff --git a/forms/admin/items/ui.xml b/forms/admin/items/ui.xml index 41fbf780..2130b16d 100644 --- a/forms/admin/items/ui.xml +++ b/forms/admin/items/ui.xml @@ -42,18 +42,16 @@ editable="true" conn="conn"/> <p class="concept"> - <htk-text form="iter" column="longName"/> + {{iter.longName}} </p> <p class="tags"> - <htk-text form="iter" column="value5"/> - <htk-text form="iter" column="value6"/> - <htk-text form="iter" column="value7"/> + {{iter.value5}} {{iter.value6}} {{iter.value7}} </p> <p> - #<htk-text form="iter" column="id"/> + {{iter.id}} </p> <p> - <htk-text form="iter" column="image"/> + {{iter.image}} </p> <div class="clear"/> </div> diff --git a/forms/admin/links/links.js b/forms/admin/links/links.js index f19f14a1..4f761884 100644 --- a/forms/admin/links/links.js +++ b/forms/admin/links/links.js @@ -1,11 +1,5 @@ -Hedera.Links = new Class -({ +Hedera.Links = new Class({ Extends: Hedera.Form - - ,repeaterFunc: function (res, form) - { - res.$('link').href = form.get ('link'); - } }); diff --git a/forms/admin/links/ui.xml b/forms/admin/links/ui.xml index 79540fd9..e82d3135 100644 --- a/forms/admin/links/ui.xml +++ b/forms/admin/links/ui.xml @@ -4,7 +4,7 @@ </div> <div id="form" class="cpanel"> <div class="box"> - <htk-repeater form-id="iter" renderer="repeaterFunc"> + <htk-repeater form-id="iter"> <db-model property="model"> <custom> SELECT image, name, description, link FROM link @@ -12,17 +12,18 @@ </custom> </db-model> <custom> - <a id="link" class="item" target="_blank"> + <a class="item" + href="{{iter.link}}" + target="_blank"> <htk-image - form="iter" - column="image" + value="{{iter.image}}" directory="link" subdir="full"/> <p class="important"> - <htk-text form="iter" column="name"/> + {{iter.name}} </p> <p> - <htk-text form="iter" column="description"/> + {{iter.description}} </p> </a> </custom> diff --git a/forms/admin/queries/queries.js b/forms/admin/queries/queries.js index cc2bb678..5beee6b1 100644 --- a/forms/admin/queries/queries.js +++ b/forms/admin/queries/queries.js @@ -1,102 +1,91 @@ -Hedera.Queries = new Class -({ +Hedera.Queries = new Class({ Extends: Hedera.Form - ,activate: function () - { + ,activate: function() { this.$('result-index').value = 0; } - ,clean: function () - { - if (this._grid) - { - this.$('grid-holder').removeChild (this._grid.node); - this._grid.unref (); + ,clean: function() { + if (this._grid) { + this.$('grid-holder').removeChild(this._grid.node); + this._grid.unref(); this._grid = null; } } - ,_onExecuteClick: function () - { - this.clean (); + ,onExecuteClick: function() { + this.clean(); - var model = new Db.Model ({ + var model = new Db.Model({ conn: this.conn, query: this.$('sql').value, resultIndex: this.$('result-index').value, updatable: this.$('updatable').value }); - model.on ('status-changed', this._onModelChange, this); + model.on('status-changed', this.onModelChange, this); } - ,_onCleanClick: function () - { - this.clean (); + ,onCleanClick: function() { + this.clean(); } - ,_onModelChange: function (model, status) - { - if (status !== Db.Model.Status.LOADING) - { - model.disconnect ('status-changed', this._onModelChange, this); - model.unref (); + ,onModelChange: function(model, status) { + if (status !== Db.Model.Status.LOADING) { + model.disconnect('status-changed', this.onModelChange, this); + model.unref(); } if (status !== Db.Model.Status.READY) return; - Htk.Toast.showMessage (_('Query executed!')); + Htk.Toast.showMessage(_('Query executed!')); var gridHolder = this.$('grid-holder'); if (gridHolder.firstChild) - gridHolder.removeChilds (gridHolder.firstChild); + gridHolder.removeChilds(gridHolder.firstChild); - var grid = new Htk.Grid (); + var grid = new Htk.Grid(); var columns = model.columns; - for (var i = 0; i < columns.length; i++) - { + for (var i = 0; i < columns.length; i++) { var c = columns[i]; - switch (c.type) - { + switch (c.type) { case Db.Conn.Type.BOOLEAN: - var column = new Htk.ColumnCheck (); + var column = new Htk.ColumnCheck(); break; case Db.Conn.Type.INTEGER: - var column = new Htk.ColumnSpin (); + var column = new Htk.ColumnSpin(); break; case Db.Conn.Type.DOUBLE: - var column = new Htk.ColumnSpin ({digits: 2}); + var column = new Htk.ColumnSpin({digits: 2}); break; case Db.Conn.Type.DATE: - var column = new Htk.ColumnDate ({format: '%a, %e %b %Y'}); + var column = new Htk.ColumnDate({format: '%a, %e %b %Y'}); break; case Db.Conn.Type.DATE_TIME: - var column = new Htk.ColumnDate ({format: '%a, %e %b %Y, %T'}); + var column = new Htk.ColumnDate({format: '%a, %e %b %Y, %T'}); break; case Db.Conn.Type.STRING: default: - var column = new Htk.ColumnText (); + var column = new Htk.ColumnText(); } - column.setProperties ({ + column.setProperties({ title: c.name, editable: this.$('updatable').value, columnIndex: i }); - grid.appendColumn (column); + grid.appendColumn(column); } grid.model = model; - gridHolder.appendChild (grid.node); + gridHolder.appendChild(grid.node); this._grid = grid; - } }); diff --git a/forms/admin/queries/style.css b/forms/admin/queries/style.css index e3c925ca..ffd2d78b 100644 --- a/forms/admin/queries/style.css +++ b/forms/admin/queries/style.css @@ -1,25 +1,20 @@ -.queries -{ +.queries { padding: 1em; } -.queries .box -{ +.queries .box { max-width: 40em; margin: 0 auto; } -.queries .form -{ +.queries .form { box-sizing: border-box; padding: 2em; } -.queries textarea -{ +.queries textarea { display: block; width: 100%; height: 8em; } -.queries .result -{ +.queries .result { margin-top: 1em; overflow: auto; } diff --git a/forms/admin/queries/ui.xml b/forms/admin/queries/ui.xml index 6d1b6745..863eccad 100644 --- a/forms/admin/queries/ui.xml +++ b/forms/admin/queries/ui.xml @@ -6,11 +6,11 @@ <htk-bar-button icon="ok" tip="_Execute" - on-click="_onExecuteClick"/> + on-click="this.onExecuteClick()"/> <htk-bar-button icon="delete" tip="_Clean" - on-click="_onCleanClick"/> + on-click="this.onCleanClick()"/> </div> <div id="form" class="queries"> <div class="box form"> diff --git a/forms/admin/users/style.css b/forms/admin/users/style.css index 30caf897..d9adf788 100644 --- a/forms/admin/users/style.css +++ b/forms/admin/users/style.css @@ -1,32 +1,25 @@ -.users -{ +.users { padding: 1em; } -.users .box -{ +.users .box { max-width: 30em; margin: 0 auto; } -.users-box -{ +.users-box { padding: 1em; border-bottom: 1px solid #DDD; } -.users-box > button -{ +.users-box > button { float: right; margin: 0; } -.users-box > p -{ +.users-box > p { margin: .2em 0; } -.users-box > p.important -{ +.users-box > p.important { font-size: 1.2em; } -.users-box > .disabled -{ +.users-box > .disabled { float: right; color: white; background-color: #F66; @@ -38,8 +31,7 @@ /* Topbar */ -.action-bar .htk-search-entry -{ +.action-bar .htk-search-entry { margin: .8em .6em; } diff --git a/forms/admin/users/ui.xml b/forms/admin/users/ui.xml index 1ec2f274..ff7b437d 100644 --- a/forms/admin/users/ui.xml +++ b/forms/admin/users/ui.xml @@ -31,18 +31,14 @@ <custom> <div class="users-box"> <htk-button - form="iter" - column="id" - tip="_Access log" icon="history" - on-click="onAccessLogClick"/> + tip="_Access log" + on-click="this.onAccessLogClick(iter.id)"/> <htk-button id="impersonate" - form="iter" - column="id" - tip="_Impersonate user" icon="supervisor_account" - on-click="onChangeUserClick"/> + tip="_Impersonate user" + on-click="this.onChangeUserClick(iter.name)"/> <span id="disabled" class="disabled"> <t>Disabled</t> </span> diff --git a/forms/admin/users/users.js b/forms/admin/users/users.js index ccca530c..00992713 100644 --- a/forms/admin/users/users.js +++ b/forms/admin/users/users.js @@ -2,10 +2,10 @@ Hedera.Users = new Class({ Extends: Hedera.Form - ,onAccessLogClick: function(button, form) { + ,onAccessLogClick: function(userId) { this.hash.set({ - 'form': 'admin/access-log' - ,'user': form.get('id') + form: 'admin/access-log' + ,user: userId }); } @@ -17,8 +17,8 @@ Hedera.Users = new Class({ 'block' : 'none'; } - ,onChangeUserClick: function(button, form) { - this.gui.supplantUser(form.get('name'), + ,onChangeUserClick: function(userName) { + this.gui.supplantUser(userName, this.onUserSupplant.bind(this)); } diff --git a/forms/admin/visits/ui.xml b/forms/admin/visits/ui.xml index 15fd4568..d27bf247 100644 --- a/forms/admin/visits/ui.xml +++ b/forms/admin/visits/ui.xml @@ -6,11 +6,11 @@ <htk-bar-button icon="refresh" tip="_Refresh" - on-click="onRefreshClick"/> + on-click="this.onRefreshClick()"/> <htk-bar-button icon="visibility" tip="_Connections" - on-click="onSessionsClick"/> + on-click="this.onSessionsClick()"/> </div> <div id="form" class="visits"> <div class="box"> diff --git a/forms/admin/visits/visits.js b/forms/admin/visits/visits.js index fd4c40b0..7c1a7674 100644 --- a/forms/admin/visits/visits.js +++ b/forms/admin/visits/visits.js @@ -1,22 +1,18 @@ -Hedera.Visits = new Class -({ +Hedera.Visits = new Class({ Extends: Hedera.Form - ,activate: function () - { - this.$('from').value = new Date (); - this.$('to').value = new Date (); + ,activate: function() { + this.$('from').value = new Date(); + this.$('to').value = new Date(); } - ,onRefreshClick: function () - { - this.$('visits').refresh (); + ,onRefreshClick: function() { + this.$('visits').refresh(); } - ,onSessionsClick: function () - { - this.hash.set ({'form': 'admin/connections'}); + ,onSessionsClick: function() { + this.hash.set({form: 'admin/connections'}); } }); diff --git a/forms/cms/home/home.js b/forms/cms/home/home.js index 85750bdc..e29f8765 100644 --- a/forms/cms/home/home.js +++ b/forms/cms/home/home.js @@ -1,9 +1,5 @@ Hedera.Home = new Class({ Extends: Hedera.Form - - ,onStartOrderClick: function() { - this.hash.set({form: 'ecomerce/catalog'}); - } }); diff --git a/forms/cms/home/ui.xml b/forms/cms/home/ui.xml index 2ec3e7c2..0fc7e62b 100644 --- a/forms/cms/home/ui.xml +++ b/forms/cms/home/ui.xml @@ -7,7 +7,7 @@ class="start-order" icon="add_shopping_cart" tip="_Start order" - on-click="onStartOrderClick"/> + on-click="this.hash.set({form: 'ecomerce/catalog'})"/> </div> <div id="form" class="home"> <div class="column mansonry" id="news-column"> @@ -25,8 +25,7 @@ <htk-image directory="news" subdir="full" - form="iter" - column="image" + value="{{iter.image}}" editable="false" full-dir="full"/> <div class="top"> diff --git a/forms/news/new/new.js b/forms/news/new/new.js index 99a3466b..02c79053 100644 --- a/forms/news/new/new.js +++ b/forms/news/new/new.js @@ -54,9 +54,9 @@ Hedera.New = new Class({ this.editor.setContent(newHtml); }, - onStatusChange: function(form) { + onStatusChange: function() { if (this.$('new-id').value == 0) - form.insertRow(); + this.$('iter').insertRow(); }, onOperationsDone: function() { diff --git a/forms/news/new/style.css b/forms/news/new/style.css index 85608368..92b661a9 100644 --- a/forms/news/new/style.css +++ b/forms/news/new/style.css @@ -1,23 +1,18 @@ -.new -{ +.new { padding: 1em; } -.new .box -{ +.new .box { max-width: 38em; padding: 2em; } /* Form */ -.new textarea -{ - min-height: 20em; +.new textarea { + min-height: 500px; } - -.new .foot -{ +.new .foot { text-align: center; margin-top: 1em; } diff --git a/forms/news/new/ui.xml b/forms/news/new/ui.xml index d3d63835..3b1fe869 100644 --- a/forms/news/new/ui.xml +++ b/forms/news/new/ui.xml @@ -2,12 +2,12 @@ <vn-group> <vn-param id="new-id"/> <vn-hash-param key="new" param="new-id"/> - <db-form id="iter" on-status-changed="onStatusChange"> + <db-form id="iter" on-status-changed="this.onStatusChange()"> <db-model id="model" property="model" updatable="true" - on-operations-done="onOperationsDone"> + on-operations-done="this.onOperationsDone()"> <custom> SELECT id, title, text, tag, priority FROM news WHERE id = #new @@ -19,7 +19,7 @@ </sql-batch> </db-model> </db-form> - <db-param form="iter" column="text" on-changed="onBodyChange"/> + <db-param form="iter" column="text" on-changed="this.onBodyChange()"/> </vn-group> <div id="title"> <h1><t>AddEditNew</t></h1> @@ -28,11 +28,11 @@ <htk-bar-button icon="close" tip="_Return" - on-click="onReturnClick"/> + on-click="this.onReturnClick()"/> <htk-bar-button icon="check" tip="_Accept" - on-click="onAcceptClick"/> + on-click="this.onAcceptClick()"/> </div> <div id="form" class="new"> <div class="box"> diff --git a/forms/news/news/news.js b/forms/news/news/news.js index 9da4dc08..54c5d1da 100644 --- a/forms/news/news/news.js +++ b/forms/news/news/news.js @@ -1,30 +1,25 @@ -Hedera.News = new Class -({ +Hedera.News = new Class({ Extends: Hedera.Form - ,editNew: function (newId) - { - this.hash.set ({ - 'form': 'news/new' - ,'new': newId + ,editNew: function(newId) { + this.hash.set({ + form: 'news/new', + new: newId }); } - ,onEditClick: function (button, form) - { - this.editNew (button.value); + ,onEditClick: function(newId) { + this.editNew(newId); } - ,onDeleteClick: function (button, form) - { - if (confirm (_('ReallyDelete'))) - form.deleteRow (); + ,onDeleteClick: function(form) { + if (confirm(_('ReallyDelete'))) + form.deleteRow(); } - ,onAddClick: function () - { - this.editNew (0); + ,onAddClick: function() { + this.editNew(0); } }); diff --git a/forms/news/news/ui.xml b/forms/news/news/ui.xml index 9e8f7109..b2302a67 100644 --- a/forms/news/news/ui.xml +++ b/forms/news/news/ui.xml @@ -6,7 +6,7 @@ <htk-bar-button icon="add" tip="_AddNew" - on-click="onAddClick"/> + on-click="this.onAddClick()"/> </div> <div id="form" class="news"> <div class="box"> @@ -22,17 +22,13 @@ <custom> <div class="item"> <htk-button - form="iter" - column="id" - tip="_EditNew" icon="edit" - on-click="onEditClick"/> + tip="_EditNew" + on-click="this.onEditClick(iter.id)"/> <htk-button - form="iter" - column="id" tip="_Remove" icon="delete" - on-click="onDeleteClick"/> + on-click="this.onDeleteClick($.iter)"/> <htk-image form="iter" column="image" diff --git a/forms/reports/items-form/items-form.js b/forms/reports/items-form/items-form.js index 34a2b2bb..9b61e689 100644 --- a/forms/reports/items-form/items-form.js +++ b/forms/reports/items-form/items-form.js @@ -1,23 +1,20 @@ -Hedera.ItemsForm = new Class -({ +Hedera.ItemsForm = new Class({ Extends: Hedera.Form - ,activate: function () - { + ,activate: function() { this.$('warehouse').value = 7; this.$('realm').value = null; } - ,onPreviewClick: function () - { - var batch = new Sql.Batch (); - batch.addValues ({ - 'warehouse': this.$('warehouse').value - ,'realm': this.$('realm').value - ,'rate': this.$('rate').value + ,onPreviewClick: function() { + var batch = new Sql.Batch(); + batch.addValues({ + warehouse: this.$('warehouse').value + ,realm: this.$('realm').value + ,rate: this.$('rate').value }); - this.gui.openReport ('items-report', batch); + this.gui.openReport('items-report', batch); } }); diff --git a/forms/reports/items-form/ui.xml b/forms/reports/items-form/ui.xml index 07fc6174..d600d785 100644 --- a/forms/reports/items-form/ui.xml +++ b/forms/reports/items-form/ui.xml @@ -6,7 +6,7 @@ <htk-bar-button icon="print" tip="_Preview" - on-click="onPreviewClick"/> + on-click="this.onPreviewClick()"/> </div> <div id="form" class="items"> <div class="box"> diff --git a/forms/reports/shelves/shelves.js b/forms/reports/shelves/shelves.js index 483ebdfb..221f37df 100644 --- a/forms/reports/shelves/shelves.js +++ b/forms/reports/shelves/shelves.js @@ -1,16 +1,13 @@ -Hedera.Shelves = new Class -({ +Hedera.Shelves = new Class({ Extends: Hedera.Form - ,activate: function () - { - this.$('date').value = new Date (); + ,activate: function() { + this.$('date').value = new Date(); this.$('useIds').value = false; } - ,onConfigChange: function () - { + ,onConfigChange: function() { var fields = [ 'realm' ,'family' @@ -24,11 +21,10 @@ Hedera.Shelves = new Class ]; for (var i = 0; i < fields.length; i++) - this.$(fields[i]).value = this.$('config').get (fields[i]); + this.$(fields[i]).value = this.$('config').get(fields[i]); } - ,onPreviewClick: function () - { + ,onPreviewClick: function() { var fields = [ 'family' ,'warehouse' @@ -42,12 +38,12 @@ Hedera.Shelves = new Class ,'date' ]; - var batch = new Sql.Batch (); + var batch = new Sql.Batch(); for (var i = 0; i < fields.length; i++) - batch.addValue (fields[i], this.$(fields[i]).value); + batch.addValue(fields[i], this.$(fields[i]).value); - this.gui.openReport ('shelves-report', batch); + this.gui.openReport('shelves-report', batch); } }); diff --git a/forms/reports/shelves/ui.xml b/forms/reports/shelves/ui.xml index e1fa2a94..cf6f7de0 100644 --- a/forms/reports/shelves/ui.xml +++ b/forms/reports/shelves/ui.xml @@ -16,7 +16,7 @@ <htk-bar-button icon="print" tip="_Preview" - on-click="onPreviewClick"/> + on-click="this.onPreviewClick()"/> </div> <div id="form" class="shelves"> <div class="box"> @@ -27,8 +27,8 @@ id="config" placeholder="_Select config" model="configs-model" - on-changed="onConfigChange" - on-ready="onConfigChange"/> + on-changed="this.onConfigChange()" + on-ready="this.onConfigChange()"/> </div> <div class="form-group"> <label><t>Date</t></label> diff --git a/js/hedera/form.js b/js/hedera/form.js index b28fa327..3e73b5cc 100644 --- a/js/hedera/form.js +++ b/js/hedera/form.js @@ -1,6 +1,5 @@ -module.exports = new Class -({ +module.exports = new Class({ Extends: Vn.Object ,isOpen: false @@ -31,28 +30,27 @@ module.exports = new Class return; var builder = new Vn.Builder(); - builder.signalData = this; - builder.add('conn', this.conn); - builder.loadXml('forms/'+ this.formInfo.path +'/ui.xml'); + builder.compileFile('forms/'+ this.formInfo.path +'/ui.xml'); - var res = this.builder = builder.load(); - this.node = res.$('form'); - res.link(this); + var scope = this.builder = builder.load(null, this); + scope.link({conn: this.conn}); - var models = res.getByTagName('db-model'); + this.node = scope.$('form'); + + var models = scope.getByTagName('db-model'); for (var i = 0; i < models.length; i++) models[i].conn = this.conn; - var queries = res.getByTagName('db-query'); + var queries = scope.getByTagName('db-query'); for (var i = 0; i < queries.length; i++) queries[i].conn = this.conn; if (this.node) { this.gui.setForm(this.node); - this.gui.setTitle(res.$('title')); - this.gui.setActions(res.$('actions')); + this.gui.setTitle(scope.$('title')); + this.gui.setActions(scope.$('actions')); this.activate(); } diff --git a/js/hedera/report.js b/js/hedera/report.js index 9129715b..ada4f97a 100644 --- a/js/hedera/report.js +++ b/js/hedera/report.js @@ -1,14 +1,12 @@ -module.exports = new Class -({ +module.exports = new Class({ Extends: Vn.Object - ,initialize: function (moduleInfo, gui) - { + ,initialize: function(moduleInfo, gui) { this.info = moduleInfo; this.gui = gui; this.conn = gui.conn; - this.parent (null); + this.parent(null); } /** @@ -16,88 +14,80 @@ module.exports = new Class * * @param {string} objectId The object identifier * @return {Object} The object, or %null if not found - **/ - ,$: function (objectId) - { - if (this.builderResult) - return this.builderResult.getById (objectId); + */ + ,$: function(objectId) { + if (this.scope) + return this.scope.getById(objectId); return null; } - ,open: function (batch) - { + ,open: function(batch) { this.batch = batch; - this.createWindow (); + this.createWindow(); } - ,print: function () - { - this.window.print (); + ,print: function() { + this.window.print(); } - ,includeCss: function (path) - { + ,includeCss: function(path) { var basePath = location.protocol +'//'+ location.host; basePath += location.port ? ':'+ location.port : ''; - basePath += location.pathname.substring (0, - location.pathname.lastIndexOf ('/')); + basePath += location.pathname.substring(0, + location.pathname.lastIndexOf('/')); - var link = this.doc.createElement ('link'); + var link = this.doc.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; - link.href = basePath +'/'+ path + Vn.getVersion (); + link.href = basePath +'/'+ path + Vn.getVersion(); - var head = this.doc.getElementsByTagName ('head')[0]; - head.appendChild (link); + var head = this.doc.getElementsByTagName('head')[0]; + head.appendChild(link); } - ,createWindow: function () - { - var reportWindow = window.open ( + ,createWindow: function() { + var reportWindow = window.open( 'js/hedera/report.html', '_blank', 'height=650, width=950, resizable=yes, fullscreen=no,'+ 'titlebar=no, menubar=no, toolbar=no, location=no, scrollbars=yes' ); - if (!reportWindow) - { - Htk.Toast.showError ( + if (!reportWindow) { + Htk.Toast.showError( _('Please unlock popups and try again')); return false; } - reportWindow.addEventListener ('load', - this._onWindowLoad.bind (this)); + reportWindow.addEventListener('load', + this._onWindowLoad.bind(this)); this.window = reportWindow; return true; } - ,_onWindowLoad: function () - { + ,_onWindowLoad: function() { this.doc = this.window.document - this.includeCss ('reports/'+ this.info.path +'/style.css'); + this.includeCss('reports/'+ this.info.path +'/style.css'); - var printButton = this.doc.getElementById ('print'); - printButton.addEventListener ('click', this.print.bind (this)); - Vn.Node.setText (printButton, _('Print')); + var printButton = this.doc.getElementById('print'); + printButton.addEventListener('click', this.print.bind(this)); + Vn.Node.setText(printButton, _('Print')); - this.onWindowCreate (); + this.onWindowCreate(); } - ,onWindowCreate: function () - { - var builder = new Vn.Builder (); - builder.signalData = this; - builder.add ('batch', this.batch); - builder.add ('conn', this.conn); - builder.loadXml ('reports/'+ this.info.path +'/ui.xml'); + ,onWindowCreate: function() { + var builder = new Vn.Builder(); + builder.compileFile('reports/'+ this.info.path +'/ui.xml'); - var res = this.builderResult = builder.load (); - res.link (); + var scope = this.scope = builder.load(this.doc, this); + scope.link({ + batch: this.batch, + conn: this.conn + }); - this.doc.body.appendChild (res.$('report')); + this.doc.body.appendChild(scope.$('report')); } }); diff --git a/js/htk/component.js b/js/htk/component.js index 9f6465fb..2a0c8a8c 100644 --- a/js/htk/component.js +++ b/js/htk/component.js @@ -1,49 +1,42 @@ -var Widget = require ('./widget'); +const Widget = require('./widget'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Widget - ,builder: null + ,scope: null - ,builderInit: function (path) - { - var builder = new Vn.Builder (); - builder.signalData = this; - builder.loadXml (path, this.doc); - this.builderResultInit (builder); + ,builderInit: function(path) { + const builder = new Vn.Builder(); + builder.compileFile(path); + this.builderResultInit(builder); } - ,builderInitString: function (xmlString) - { - var builder = new Vn.Builder (); - builder.signalData = this; - builder.loadFromString (xmlString, this.doc); - this.builderResultInit (builder); + ,builderInitString: function(xmlString) { + const builder = new Vn.Builder(); + builder.compileString(xmlString); + this.builderResultInit(builder); } - ,builderResultInit: function (builder) - { - var res = this.builder = builder.load (); - this._node = res.$('main'); - res.link (); + ,builderResultInit: function(builder) { + const scope = this.scope = builder.load(this.doc, this); + scope.link(); + + this._node = scope.$('main'); } - ,$: function (id) - { - if (this.builder) - return this.builder.getById (id); + ,$: function(id) { + if (this.scope) + return this.scope.getById(id); return null; } - ,_destroy: function () - { - if (this.builder) - this.builder.unref (); + ,_destroy: function() { + if (this.scope) + this.scope.unref(); - this.parent (); + this.parent(); } }); diff --git a/js/htk/field/radio.js b/js/htk/field/radio.js index 103aec58..2ee3128e 100644 --- a/js/htk/field/radio.js +++ b/js/htk/field/radio.js @@ -1,75 +1,83 @@ -var RadioGroup = require ('./radio-group'); +var RadioGroup = require('./radio-group'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Htk.Field ,Tag: 'htk-radio' - ,Properties: - { - tip: - { + ,Properties: { + tip: { type: String - ,set: function (x) - { + ,set: function(x) { if (x) this.node.title = _(x); } }, - radioGroup: - { + val: { + type: String + ,get: function() { + return this._val; + } + ,set: function(x) { + this._val = x; + this.node.value = !x ? '' : x; + this._onRadioGroupChange(); + } + }, + name: { + type: String + ,get: function() { + return this.node.name; + } + ,set: function(x) { + this.node.name = x; + } + }, + radioGroup: { type: RadioGroup - ,set: function (x) - { + ,get: function() { + return this._radioGroup; + } + ,set: function(x) { if (this._radioGroup) - this._radioGroup.removeButton (this); + this._radioGroup.removeButton(this); - this.link ({_radioGroup: x}, {'changed': this._onRadioGroupChange}); + this.link({_radioGroup: x}, {'changed': this._onRadioGroupChange}); this.node.name = x.name; x.buttons.push(this); - this._onRadioGroupChange (); - } - ,get: function () - { - return this._radioGroup; + this._onRadioGroupChange(); } } } ,_radioGroup: null - ,render: function () - { - var radio = Vn.Browser.createRadio ('', this.doc); + ,render: function() { + var radio = Vn.Browser.createRadio('', this.doc); radio.checked = false; - radio.addEventListener ('change', this._onChange.bind (this)); + radio.addEventListener('change', this._onChange.bind(this)); this._node = radio; } - ,_onChange: function () - { + ,_onChange: function() { + console.log(this._val); if (this.node.checked && this._radioGroup) - this._radioGroup.value = this.value; + this._radioGroup.value = this._val || this.value; } - ,_onRadioGroupChange: function () - { - if (this._radioGroup.value && this._radioGroup.value == this.value) - this.node.checked = true; - else - this.node.checked = false; + ,_onRadioGroupChange: function() { + const value = this._radioGroup.value; + this.node.checked = + value && (value == this._val || value == this.value); } - ,putValue: function (value) - { + ,putValue: function(value) { if (!value) this.node.value = ''; else this.node.value = value; } - ,setEditable: function (editable) - { + ,setEditable: function(editable) { this.node.disabled = !editable; } }); diff --git a/js/htk/node-builder.js b/js/htk/node-builder.js index fa28a1c0..952682f6 100644 --- a/js/htk/node-builder.js +++ b/js/htk/node-builder.js @@ -1,26 +1,22 @@ -module.exports = new Class -({ +module.exports = new Class({ Extends: Vn.Object ,doc: null - ,initialize: function (props) - { + ,initialize: function(props) { this.doc = document; - this.parent (props); + this.parent(props); } - ,createElement: function (tagName) - { - return document.createElement (tagName); + ,createElement: function(tagName) { + return document.createElement(tagName); } - ,createTextNode: function (text) - { - return document.createTextNode (text); + ,createTextNode: function(text) { + return document.createTextNode(text); } - ,render: function () {} + ,render: function() {} }); diff --git a/js/htk/repeater.js b/js/htk/repeater.js index 183e01c2..86aa0348 100644 --- a/js/htk/repeater.js +++ b/js/htk/repeater.js @@ -9,13 +9,12 @@ module.exports = new Class({ { /** * The source data model. - **/ + */ model: { type: Db.Model ,set: function(x) { - this.link({_model: x}, - { + this.link({_model: x}, { 'status-changed': this._onModelChange ,'row-deleted': this._onRowDelete ,'row-updated': this._onRowUpdate @@ -30,7 +29,7 @@ module.exports = new Class({ } /** * The identifier for internal iterator. - **/ + */ ,formId: { type: String @@ -44,7 +43,7 @@ module.exports = new Class({ /** * {Function (Vn.BuilderResult, Db.Form)} Function to call after every * box rendering. - **/ + */ ,renderer: { type: Function @@ -57,7 +56,7 @@ module.exports = new Class({ } /** * Wether to show the model status. - **/ + */ ,showStatus: { type: Boolean @@ -71,7 +70,7 @@ module.exports = new Class({ } /** * Message that should be displayed when source model is not ready. - **/ + */ ,emptyMessage: { type: String @@ -91,12 +90,12 @@ module.exports = new Class({ div.appendChild(this._container); } - ,loadXml: function(builderResult, node) { - this.parent(builderResult, node); + ,loadXml: function(scope, node) { + this.parent(scope, node); + this._parentScope = scope; var builder = this._builder = new Vn.Builder(); - builder.setParent(builderResult); - builder.loadXmlFromNode(node.firstElementChild, null, [this._formId]); + builder.compileNode(node.firstElementChild, [this._formId]); this._onModelChange(); } @@ -118,20 +117,21 @@ module.exports = new Class({ model: this._model, row: index }); - - this._builder.add(this._formId, set); - var res = this._builder.load(); - res.link(null, [set.getObject()]); + + var scope = this._builder.load(this.doc, null, this._parentScope); + scope.link([set.getObject()], { + [this._formId]: set + }); this._childsData.push({ - builder: res, + builder: scope, set: set }); if (this._renderer) - this._renderer(res, set); + this._renderer(scope, set); - return res.getMain(); + return scope.getMain(); } ,_onModelChange: function() { diff --git a/js/htk/style/variables.scss b/js/htk/style/variables.scss index aa5a68f3..acd48645 100644 --- a/js/htk/style/variables.scss +++ b/js/htk/style/variables.scss @@ -1,2 +1,3 @@ -$color-hover-cd: rgba(255, 255, 255, .1); \ No newline at end of file +$color-primary: #8cc63f; +$color-hover-cd: rgba(255, 255, 255, .1); diff --git a/js/htk/widget.js b/js/htk/widget.js index 612283e7..0e6cacdc 100644 --- a/js/htk/widget.js +++ b/js/htk/widget.js @@ -1,36 +1,30 @@ -var NodeBuilder = require ('./node-builder'); +var NodeBuilder = require('./node-builder'); -module.exports = new Class -({ +module.exports = new Class({ Extends: NodeBuilder ,Properties: { /** * Main HTML node that represents the widget - **/ - node: - { + */ + node: { type: Object - ,get: function () - { - this.renderBase (); + ,get: function() { + this.renderBase(); return this._node; } }, /** * CSS classes to be appendend to the node classes. - **/ - class: - { + */ + class: { type: String - ,set: function (x) - { + ,set: function(x) { this._cssClass = x; - this._refreshClass (); + this._refreshClass(); } - ,get: function () - { + ,get: function() { return this._node.className; } } @@ -38,36 +32,31 @@ module.exports = new Class ,_node: null - ,initialize: function (props) - { + ,initialize: function(props) { this.doc = document; - this.renderBase (); - this.parent (props); + this.renderBase(); + this.parent(props); } - ,createRoot: function (tagName) - { - return this._node = this.createElement (tagName); + ,createRoot: function(tagName) { + return this._node = this.createElement(tagName); } - ,renderBase: function () - { + ,renderBase: function() { if (this._node) return; - this.render (); - this._refreshClass (); + this.render(); + this._refreshClass(); } - ,_refreshClass: function () - { + ,_refreshClass: function() { if (this._node && this._cssClass) this._node.className = this._cssClass +' '+ this._node.className; } - ,remove: function () - { - Vn.Node.remove (this._node); + ,remove: function() { + Vn.Node.remove(this._node); } }); diff --git a/js/sql/batch.js b/js/sql/batch.js index 409423cb..45bdff87 100644 --- a/js/sql/batch.js +++ b/js/sql/batch.js @@ -1,6 +1,6 @@ -var Object = require ('./object'); -var Value = require ('./value'); +var Object = require('./object'); +var Value = require('./value'); /** * A map container for many Sql.Object @@ -14,12 +14,10 @@ module.exports = new Class blocked: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._blocked = x; } - ,get: function () - { + ,get: function() { return this._blocked; } } @@ -28,75 +26,64 @@ module.exports = new Class ,objects: {} ,_blocked: false - ,loadXml: function (builder, node) - { - this.parent (builder, node); + ,loadXml: function(scope, node) { + this.parent(scope, node); var childs = node.childNodes; for (var i = 0; i < childs.length; i++) - if (childs[i].tagName && childs[i].tagName.toLowerCase () == 'item') - { + if (childs[i].tagName && childs[i].tagName.toLowerCase() == 'item') { var object; - var id = childs[i].getAttribute ('name'); + var id = childs[i].getAttribute('name'); - if (id) - { - if (object = builder.getById (childs[i].getAttribute ('param'))) - this.addParam (id, object); - else if (object = builder.getById (childs[i].getAttribute ('object'))) - this.addObject (id, object); + if (id) { + if (object = scope.getById(childs[i].getAttribute('param'))) + this.addParam(id, object); + else if (object = scope.getById(childs[i].getAttribute('object'))) + this.addObject(id, object); } } } - ,get: function (id) - { + ,get: function(id) { if (this.objects[id]) return this.objects[id]; return null; } - ,add: function (id) - { + ,add: function(id) { if (!this.objects[id]) this.objects[id] = null; } - ,_addObject: function (id, object) - { - this.remove (id); + ,_addObject: function(id, object) { + this.remove(id); this.objects[id] = object; - object.on ('changed', this.emitChanged, this); - this.emitChanged (); + object.on('changed', this.emitChanged, this); + this.emitChanged(); } - ,addObject: function (id, object) - { - this._addObject (id, object.ref ()); + ,addObject: function(id, object) { + this._addObject(id, object.ref()); } - ,addValue: function (id, value) - { - this._addObject (id, - new Value ({value: value})); + ,addValue: function(id, value) { + this._addObject(id, + new Value({value: value})); } - ,addValues: function (values) - { + ,addValues: function(values) { for (var id in values) - this.addValue (id, values[id]); + this.addValue(id, values[id]); } - ,addParam: function (id, param) - { - this._addObject (id, - new Value ({param: param})); + ,addParam: function(id, param) { + this._addObject(id, + new Value({param: param})); } - ,getValue: function (id) - { + ,getValue: function(id) { var object = this.objects[id]; if (object instanceof Value) @@ -105,65 +92,54 @@ module.exports = new Class return null; } - ,addParams: function (params) - { + ,addParams: function(params) { for (var id in params) - this.addParam (id, params[id]); + this.addParam(id, params[id]); } - ,remove: function (id) - { - if (this.objects[id]) - { - this._unrefObject (this.objects[id]); + ,remove: function(id) { + if (this.objects[id]) { + this._unrefObject(this.objects[id]); delete this.objects[id]; } } - ,block: function () - { + ,block: function() { this._blocked = true; } - ,unblock: function () - { + ,unblock: function() { this._blocked = false; } - ,emitChanged: function () - { + ,emitChanged: function() { if (!this._blocked) - this.signalEmit ('changed'); + this.signalEmit('changed'); } - ,changed: function () - { - this.signalEmit ('changed'); + ,changed: function() { + this.signalEmit('changed'); } - ,isReady: function () - { + ,isReady: function() { for (var id in this.objects) - if (!(this.objects[id] && this.objects[id].isReady ())) + if (!(this.objects[id] && this.objects[id].isReady())) return false; return true; } - ,_unrefObject: function (object) - { - if (object) - { - object.disconnect ('changed', this.emitChanged, this); - object.unref (); + ,_unrefObject: function(object) { + if (object) { + object.disconnect('changed', this.emitChanged, this); + object.unref(); } } - ,_destroy: function () - { + ,_destroy: function() { for (var id in this.objects) - this._unrefObject (this.objects[id]); + this._unrefObject(this.objects[id]); - this.parent (); + this.parent(); } }); diff --git a/js/vn/builder.js b/js/vn/builder.js index ff38cce1..13e41a77 100644 --- a/js/vn/builder.js +++ b/js/vn/builder.js @@ -1,100 +1,62 @@ - -var Object = require('./object'); +const VnObject = require('./object'); +const Scope = require('./scope'); +const kebabToCamel = require('./string-util').kebabToCamel; /** * Creates a object from a XML specification. */ module.exports = new Class({ - Extends: Object - ,_addedMap: {} + Extends: VnObject ,_contexts: null - - ,add: function(id, object) { - this._addedMap[id] = object; - } - - ,setParent: function(parentResult) { - this._parentResult = parentResult; - - if (parentResult && !this.signalData) - this.signalData = parentResult.builder.signalData; - } - - ,getMain: function(result) { - return result.objects[this._mainContext]; - } - - ,getById: function(result, objectId) { - var index = this._contextMap[objectId]; - - if (index !== undefined) - return result.objects[index]; - - var object = this._addedMap[objectId]; - - if (object !== undefined) - return object; - - if (this._parentResult) - return this._parentResult.getById(objectId); - - return null; - } - - ,getByTagName: function(result, tagName) { - var tags = this._tags[tagName]; - - if (tags) { - var arr = new Array(tags.length); - - for (var i = 0; i < tags.length; i++) - arr[i] = result.objects[tags[i]]; - - return arr; - } - - return []; - } /** * Compiles an XML file. * - * @path String The XML path - * @dstDocument Document The document used to create the nodes - * @return %true on success, %false othersise + * @param {String} path The XML path + * @return {Boolean} %true on success, %false othersise */ - ,loadXml: function(path, dstDocument) { + ,compileFile: function(path) { this._path = path; - return this.loadFromXmlDoc(Vn.getXml(path), dstDocument); - } - - ,loadFromString: function(xmlString, dstDocument) { + return this.compileDocument(Vn.getXml(path)); + } + + /** + * Compiles an XML string. + * + * @param {String} xmlString The XML string + * @return {Boolean} %true on success, %false othersise + */ + ,compileString: function(xmlString) { var parser = new DOMParser(); - var xmlDoc = parser.parseFromString(xmlString, 'text/xml'); - return this.loadFromXmlDoc(xmlDoc, dstDocument); - } - - ,loadFromXmlDoc: function(xmlDoc, dstDocument, scope) { - if (!xmlDoc) - return false; + var doc = parser.parseFromString(xmlString, 'text/xml'); + return this.compileDocument(doc); + } - this._compileInit(dstDocument, scope); + /** + * Compiles a XML document. + * + * @param {Document} doc The DOM document + * @return {Boolean} %true on success, %false othersise + */ + ,compileDocument: function(doc, exprArgs) { + if (!doc) + return false; - var docElement = xmlDoc.documentElement; + this._preCompile(exprArgs); + var docElement = doc.documentElement; if (docElement.tagName !== 'vn') { - this._showError('Malformed XML'); + this.showError('The toplevel tag should be named \'vn\''); this._contexts = null; return false; } var childs = docElement.childNodes; - if (childs) for (var i = 0; i < childs.length; i++) - this._compileNode(childs[i]); + this._compile(childs[i]); - this._compileEnd(); + this._postCompile(); return true; } @@ -102,87 +64,171 @@ module.exports = new Class({ * Compiles a single DOM node. * * @path Node The DOM node - * @dstDocument Document The document used to create the nodes * @return %true on success, %false othersise */ - ,loadXmlFromNode: function(node, dstDocument, scope) { - this._compileInit(dstDocument, scope); - this._mainContext = this._compileNode(node).id; - this._compileEnd(); + ,compileNode: function(node, exprArgs) { + this._preCompile(exprArgs); + this._mainContext = this._compile(node).id; + this._postCompile(); return true; } + + /** + * Called before starting to compile nodes. + */ + ,_preCompile: function(exprArgs) { + this._path = null; + this._tags = {}; + this._contexts = []; + this._contextMap = {}; + this._links = []; + this._mainContext = null; + + this._baseExprArgs = ['_', '$']; + if (exprArgs) + this._baseExprArgs = this._baseExprArgs.concat(exprArgs); + + this._baseEventArgs = this._baseExprArgs.concat(['$event']); + + this._exprArgs = this._baseExprArgs.join(','); + this._eventArgs = this._baseEventArgs.join(','); + } - ,load: function() { + /** + * Called after all nodes have been compiled. + */ + ,_postCompile: function() {} + + /** + * Compiles a node. + */ + ,_compile: function(node) { + let context = null; + let tagName = null; + const isElement = node.nodeType === Node.ELEMENT_NODE; + + if (isElement) + tagName = node.tagName.toLowerCase(); + else if (node.nodeType !== Node.TEXT_NODE + || /^[\n\r\t]*$/.test(node.textContent)) + return null; + + context = + this.textCompile(node, tagName) + || this.objectCompile(node, tagName) + || this.elementCompile(node, tagName); + + context.id = this._contexts.length; + + if (isElement) { + var nodeId = node.getAttribute('id'); + + if (nodeId) + this._contextMap[kebabToCamel(nodeId)] = context.id; + + var tags = this._tags[tagName]; + + if (!tags) + this._tags[tagName] = tags = []; + + tags.push(context.id); + } + + this._contexts.push(context); + return context; + } + + ,getMain: function(scope) { + return scope.objects[this._mainContext]; + } + + ,getByTagName: function(scope, tagName) { + var tags = this._tags[tagName]; + + if (tags) { + var arr = new Array(tags.length); + + for (var i = 0; i < tags.length; i++) + arr[i] = scope.objects[tags[i]]; + + return arr; + } + + return []; + } + + ,load: function(dstDocument, thisArg, parentScope) { if (this._contexts === null) return null; - - var contexts = this._contexts; - var len = contexts.length; - var objects = new Array(len); + + const contexts = this._contexts; + const len = contexts.length; + const objects = new Array(len); + const doc = dstDocument ? dstDocument : document; for (var i = 0; i < len; i++) { var context = contexts[i]; if (context.tagName) - objects[i] = this.elementInstantiate(context); + objects[i] = this.elementInstantiate(doc, context); else if (context.klass) - objects[i] = this.objectInstantiate(context); + objects[i] = this.objectInstantiate(doc, context); else - objects[i] = this.textInstantiate(context); + objects[i] = this.textInstantiate(doc, context); } - return new BuilderResult(this, objects); + return new Scope(this, objects, thisArg, parentScope); } - ,link: function(result, self, scope) { - var objects = result.objects; - - for (var i = this._links.length - 1; i >= 0; i--) { - var l = this._links[i]; - var addedObject = this._addedMap[l.objectId]; + ,link: function(scope, exprScope) { + const objects = scope.objects; + const links = this._links; - if (addedObject) { - if (l.prop) - objects[l.context.id][l.prop] = addedObject; - else - objects[l.context.id].appendChild(addedObject); - } else - this._showError('Referenced unexistent object with id \'%s\'', - l.objectId); + // Pre-link + + for (var i = links.length - 1; i >= 0; i--) { + const link = links[i]; + const object = objects[link.context.id]; + const objectRef = scope._$[link.objectId]; + + if (objectRef === undefined) { + this.showError('Referenced unexistent object with id \'%s\'', + link.objectId); + continue; + } + + if (link.prop) + object[link.prop] = objectRef; + else + object.appendChild(objectRef); } - this.linkExpr(result, self, scope); + // Post-link - var contexts = this._contexts; + const baseExprScope = [ + _, + scope._$ + ].concat(exprScope); + + this.linkExpr(scope, baseExprScope); + + const contexts = this._contexts; for (var i = 0; i < contexts.length; i++) { - var context = contexts[i]; - var object = objects[i]; + const context = contexts[i]; + const object = objects[i]; if (context.tagName) - this.elementLink(context, object, objects, result); + this.elementLink(context, object, objects, scope, baseExprScope); else if (context.klass) - this.objectLink(context, object, objects, result); + this.objectLink(context, object, objects, scope, baseExprScope); } } - ,fnExpr(expr) { - return new Function(this._scopeArgs, - '"use strict"; return ' + expr + ';' - ); - } - - ,matchExpr(value) { - const match = /^{{(.*)}}$/.exec(value); - if (!match) return null; - return this.fnExpr(match[1]); - } - - ,linkExpr(result, self, scope) { + ,linkExpr(scope, baseScope, exprScope) { const contexts = this._contexts; - const objects = result.objects; - let args = [_] + const objects = scope.objects; - if (scope) args = args.concat(scope); + exprScope = baseScope.concat(exprScope); for (let i = 0; i < contexts.length; i++) { const context = contexts[i]; @@ -193,7 +239,7 @@ module.exports = new Class({ for (expr of context.exprs) { let value = undefined; try { - value = expr.apply(self, args); + value = expr.apply(scope.thisArg, exprScope); } catch (e) { console.warn('Expression error:', e.message); continue; @@ -212,7 +258,7 @@ module.exports = new Class({ for (const prop in dynProps) { let value = undefined; try { - value = dynProps[prop].apply(self, args); + value = dynProps[prop].apply(scope.thisArg, exprScope); } catch (e) { console.warn('Expression error:', e.message); continue; @@ -227,82 +273,80 @@ module.exports = new Class({ } } - ,_compileInit: function(dstDocument, scope) { - this._path = null; - this._tags = {}; - this._contexts = []; - this._contextMap = {}; - this._links = []; - this._mainContext = null; - this._doc = dstDocument ? dstDocument : document; - - this._scope = ['_']; - if (scope) - this._scope = this._scope.concat(scope); - this._scopeArgs = this._scope.join(','); + ,showError: function(error) { + var path = this._path ? this._path : 'Node'; + var logArgs = ['Vn.Builder: %s: '+ error, path]; + + for (var i = 1; i < arguments.length; i++) + logArgs.push(arguments[i]); + + console.warn.apply(null, logArgs); } - ,_compileEnd: function() { - for (var i = this._links.length - 1; i >= 0; i--) { - var l = this._links[i]; - var contextId = this._contextMap[l.objectId]; + ,_addLink: function(context, prop, objectId) { + this._links.push({ + context + ,prop + ,objectId: kebabToCamel(objectId) + }); + } + + ,fnExpr(expr) { + return new Function(this._exprArgs, + '"use strict"; return ' + expr + ';' + ); + } + + ,matchExpr(value) { + const match = /^{{(.*)}}$/.exec(value); + if (!match) return null; + return this.fnExpr(match[1]); + } + + ,_translateValue: function(value) { + var chr = value.charAt(0); + + if (chr === '_') + return _(value.substr(1)); + else if (chr === '\\' && value.charAt(1) === '_') + return value.substr(1); - if (contextId != undefined) { - if (l.prop) - l.context.objectProps[l.prop] = contextId; - else - l.context.childs.push(contextId); - - this._links.splice(i, 1); - } else { - var object = this._addedMap[l.objectId]; - - if (!object && this._parentResult) - object = this._parentResult.getById(l.objectId); - - if (object) { - l.context.props[l.prop] = object; - this._links.splice(i, 1); - } + return value; + } + + ,_getMethod: function(value) { + let method; + + if (this.isIdentifier(value)) { + // XXX: Compatibility with old events + method = value; + } else { + try { + method = new Function(this._eventArgs, + '"use strict"; return ' + value + ';' + ); + } catch (err) { + this.showError(`Method: ${err.message}: ${value}`); } } + + return method; } - - ,_compileNode: function(node) { - var context = null; - var tagName = null; - - if (node.nodeType === Node.ELEMENT_NODE) - tagName = node.tagName.toLowerCase(); - else if (node.nodeType !== Node.TEXT_NODE - || /^[\n\r\t]*$/.test(node.textContent)) - return null; - - var context = - this.textCompile(node, tagName) - || this.objectCompile(node, tagName) - || this.elementCompile(node, tagName); - - context.id = this._contexts.length; - - if (tagName) { - var nodeId = node.getAttribute('id'); - if (nodeId) - this._contextMap[nodeId] = context.id; - - var tags = this._tags[tagName]; - - if (!tags) - this._tags[tagName] = tags = []; - - tags.push(context.id); - } - - this._contexts.push(context); - return context; + ,_isEvent: function(attribute) { + return /^on-\w+/.test(attribute); } + ,isIdentifier: function(value) { + return /^[a-zA-Z_$][\w$]*$/.test(value); + } + + ,_replaceFunc: function(token) { + return token.charAt(1).toUpperCase(); + } + + //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TextNode + /** * Creates a text node context. */ @@ -328,9 +372,11 @@ module.exports = new Class({ return null; } - ,textInstantiate: function(context) { - return this._doc.createTextNode(context.exprs ? '' : context.text); + ,textInstantiate: function(doc, context) { + return doc.createTextNode(context.exprs ? '' : context.text); } + + //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Vn.Object /** * Creates a object context. @@ -342,7 +388,6 @@ module.exports = new Class({ return null; var props = {}; - var dynProps = {}; var objectProps = {}; var childs = []; var events = {}; @@ -350,7 +395,8 @@ module.exports = new Class({ var context = { klass: klass, props: props, - dynProps: dynProps, + dynProps: {}, + funcProps: {}, objectProps: objectProps, childs: childs, events: events, @@ -369,7 +415,7 @@ module.exports = new Class({ if (handler) events[attribute.substr(3)] = handler; } else if (!/^(id|property)$/.test(attribute)) { - this.propCompile(context, klass, props, dynProps, + this.propCompile(context, klass, props, node, attribute, value); } } @@ -387,7 +433,7 @@ module.exports = new Class({ this._addLink(context, null, child.getAttribute('object')); } else if (childTagName === 'custom') { context.custom = child; - } else if (childContext = this._compileNode(child)) { + } else if (childContext = this._compile(child)) { var prop = isElement ? child.getAttribute('property') : null; if (prop) { @@ -401,19 +447,20 @@ module.exports = new Class({ return context; } - ,propCompile: function(context, klass, props, dynProps, node, attribute, value) { - var isLink = false; - var newValue = null; - var propName = attribute.replace(/-./g, this._replaceFunc); - var propInfo = klass.Properties[propName]; + ,propCompile: function(context, klass, props, node, attribute, value) { + let isLink = false; + let propError = false; + let newValue = null; + const propName = attribute.replace(/-./g, this._replaceFunc); + const propInfo = klass.Properties[propName]; if (!propInfo) { - this._showError('Attribute \'%s\' not valid for tag \'%s\'', + this.showError('Attribute \'%s\' not valid for tag \'%s\'', attribute, node.tagName); return; } if (!value) { - this._showError('Attribute \'%s\' empty on tag \'%s\'', + this.showError('Attribute \'%s\' empty on tag \'%s\'', attribute, node.tagName); return; } @@ -421,7 +468,7 @@ module.exports = new Class({ const expr = this.matchExpr(value); if (expr) { - dynProps[propName] = expr; + context.dynProps[propName] = expr; } else { switch (propInfo.type) { case Boolean: @@ -434,48 +481,88 @@ module.exports = new Class({ newValue = this._translateValue(value); break; case Function: - var method = this._getMethod(value); - newValue = method ? method.bind(this.signalData) : null; + context.funcProps[propName] = this._getMethod(value); break; default: if (propInfo.enumType) newValue = propInfo.enumType[value]; else if (propInfo.type instanceof Function) isLink = true; + else + propError = true; } if (isLink) this._addLink(context, propName, value); else if (newValue !== null && newValue !== undefined) props[propName] = newValue; - else - this._showError('Attribute \'%s\' invalid for tag \'%s\'', + else if (propError) + this.showError('Attribute \'%s\' invalid for tag \'%s\'', attribute, node.tagName); } } - ,objectInstantiate: function(context) { + ,objectInstantiate: function(doc, context) { return new context.klass(); } - ,objectLink: function(context, object, objects, res) { + ,objectLink: function(context, object, objects, scope, exprScope) { object.setProperties(context.props); - var objectProps = context.objectProps; - for (var prop in objectProps) + const objectProps = context.objectProps; + for (const prop in objectProps) object[prop] = objects[objectProps[prop]]; - var childs = context.childs; - for (var i = 0; i < childs.length; i++) + const childs = context.childs; + for (let i = 0; i < childs.length; i++) object.appendChild(objects[childs[i]]); - - var events = context.events; - for (var event in events) - object.on(event, events[event], this.signalData); + + const funcProps = context.funcProps; + for (const prop in funcProps) { + let method; + const handler = funcProps[prop]; + + if (typeof handler === 'string') { + // XXX: Compatibility with old expressions + method = scope.thisArg[handler]; + if (!method) + this.showError(`Function '${handler}' not found`); + method = method.bind(scope.thisArg); + } else { + method = function() { + handler.apply(scope.thisArg, exprScope); + }; + } + + if (method) + object[prop] = method; + } + + const events = context.events; + for (const event in events) { + let listener; + const handler = events[event]; + + if (typeof handler === 'string') { + // XXX: Compatibility with old expressions + listener = scope.thisArg[handler]; + if (!listener) + this.showError(`Function '${handler}' not found`); + } else { + listener = function() { + handler.apply(scope.thisArg, exprScope.concat(arguments)); + }; + } + + if (listener) + object.on(event, listener, scope.thisArg); + } if (context.custom) - object.loadXml(res, context.custom); + object.loadXml(scope, context.custom); } + + //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Element /** * Creates a HTML node context. @@ -492,17 +579,17 @@ module.exports = new Class({ for (var i = 0; i < a.length; i++) { var attribute = a[i].nodeName; var value = a[i].nodeValue; - const expr = this.matchExpr(value); - if (expr) { - dynProps[attribute] = expr; - } else if (this._isEvent(attribute)) { + if (this._isEvent(attribute)) { var handler = this._getMethod(value); - - if (handler) - events[attribute.substr(3)] = handler; - } else if (attribute !== 'id') - attributes[attribute] = this._translateValue(value); + if (handler) events[attribute.substr(3)] = handler; + } else if (attribute !== 'id') { + const expr = this.matchExpr(value); + if (expr) + dynProps[attribute] = expr; + else + attributes[attribute] = this._translateValue(value); + } } var childContext; @@ -510,7 +597,7 @@ module.exports = new Class({ if (childNodes) for (var i = 0; i < childNodes.length; i++) - if (childContext = this._compileNode(childNodes[i])) + if (childContext = this._compile(childNodes[i])) childs.push(childContext.id); return { @@ -522,18 +609,18 @@ module.exports = new Class({ }; } - ,elementInstantiate: function(context) { - return this._doc.createElement(context.tagName); + ,elementInstantiate: function(doc, context) { + return doc.createElement(context.tagName); } - ,elementLink: function(context, object, objects) { - var attributes = context.attributes; - for (var attribute in attributes) + ,elementLink: function(context, object, objects, scope, exprScope) { + const attributes = context.attributes; + for (const attribute in attributes) object.setAttribute(attribute, attributes[attribute]); - var childs = context.childs; + const childs = context.childs; for (var i = 0; i < childs.length; i++) { - var child = objects[childs[i]]; + let child = objects[childs[i]]; if (child instanceof Htk.Widget) child = child.node; @@ -541,98 +628,24 @@ module.exports = new Class({ object.appendChild(child); } - var events = context.events; - for (var event in events) - object.addEventListener(event, - events[event].bind(this.signalData)); - } - - ,_showError: function(error) { - var path = this._path ? this._path : 'Node'; - var logArgs = ['Vn.Builder: %s: '+ error, path]; + const events = context.events; + for (const event in events) { + let listener; + const handler = events[event]; + if (typeof handler === 'string') { + // XXX: Compatibility with old expressions + listener = scope.thisArg[handler]; + if (!listener) + this.showError(`Function '${handler}' not found`); + listener = listener.bind(scope.thisArg); + } else { + listener = function(e) { + handler.apply(scope.thisArg, exprScope.concat(e)); + }; + } - for (var i = 1; i < arguments.length; i++) - logArgs.push(arguments[i]); - - console.warn.apply(null, logArgs); - } - - ,_addLink: function(context, prop, objectId) { - this._links.push({ - context: context - ,prop: prop - ,objectId: objectId - }); - } - - ,_translateValue: function(value) { - var chr = value.charAt(0); - - if (chr === '_') - return _(value.substr(1)); - else if (chr === '\\' && value.charAt(1) === '_') - return value.substr(1); - - return value; - } - - ,_getMethod: function(value) { - if (this.signalData) - var method = this.signalData[value]; - else - var method = window[value]; - - if (method === undefined) - this._showError('Function \'%s\' not found', value); - - return method; - } - - ,_isEvent: function(attribute) { - return /^on-\w+/.test(attribute); - } - - ,_replaceFunc: function(token) { - return token.charAt(1).toUpperCase(); + if (listener) + object.addEventListener(event, listener); + } } }); - -var BuilderResult = new Class({ - Extends: Object - - ,initialize: function(builder, objects) { - this.builder = builder; - this.objects = objects; - } - - ,getMain: function() { - return this.builder.getMain(this); - } - - ,$: function(objectId) { - return this.builder.getById(this, objectId); - } - - ,getById: function(objectId) { - return this.builder.getById(this, objectId); - } - - ,getByTagName: function(tagName) { - return this.builder.getByTagName(this, tagName); - } - - ,link: function(self, scope) { - this.builder.link(this, self, scope); - } - - ,_destroy: function() { - var objects = this.objects; - - for (var i = 0; i < objects.length; i++) - if (objects[i] instanceof Object) - objects[i].unref(); - - this.parent(); - } -}); - diff --git a/js/vn/scope.js b/js/vn/scope.js new file mode 100644 index 00000000..d9684b93 --- /dev/null +++ b/js/vn/scope.js @@ -0,0 +1,60 @@ +const VnObject = require('./object'); +const kebabToCamel = require('./string-util').kebabToCamel; + +module.exports = new Class({ + Extends: VnObject + + ,initialize: function(builder, objects, thisArg, parentScope) { + this.builder = builder; + this.objects = objects; + this.thisArg = thisArg; + this.parentScope = parentScope; + + if (!thisArg && parentScope) + this.thisArg = parentScope.thisArg; + } + + ,link: function(exprScope, extraObjects) { + var contextMap = this.builder._contextMap; + var objectMap = this.parentScope ? Object.create(this.parentScope._$) : {}; + this._$ = objectMap; + + for (var id in extraObjects) + objectMap[id] = extraObjects[id]; + for (var id in contextMap) + objectMap[id] = this.objects[contextMap[id]]; + + this.builder.link(this, exprScope); + } + + ,getMain: function() { + return this.builder.getMain(this); + } + + ,$: function(objectId) { + if (!objectId) return null; + return this._$[kebabToCamel(objectId)]; + } + + ,getById: function(objectId) { + return this.$(objectId); + } + + ,getByTagName: function(tagName) { + return this.builder.getByTagName(this, tagName); + } + + ,getHtmlId: function(nodeId) { + return 'vn-'+ this.uid +'-'+ nodeId; + } + + ,_destroy: function() { + var objects = this.objects; + + for (var i = 0; i < objects.length; i++) + if (objects[i] instanceof VnObject) + objects[i].unref(); + + this.parent(); + } +}); diff --git a/js/vn/string-util.js b/js/vn/string-util.js new file mode 100644 index 00000000..ccd01c7b --- /dev/null +++ b/js/vn/string-util.js @@ -0,0 +1,27 @@ +module.exports = { + kebabToCamel: kebabToCamel, + kebabToPascal: kebabToPascal +}; + +/** + * Converts a kebab-case (hyphenized) string to camelCase (lowerCamelCase). + * + * @param {String} string The kebab-case string + * @return {String} The string parsed to camelCase + */ +function kebabToCamel(string) { + function replaceFunc(token) { + return token.charAt(1).toUpperCase(); + } + return string.replace(/-./g, replaceFunc); +} +/** + * Converts a kebab-case (hyphenized) string to PascalCase (UpperCamelCase). + * + * @param {String} string The kebab-case string + * @return {String} The string parsed to PascalCase + */ +function kebabToPascal(string) { + string = string.charAt(0).toUpperCase() + string.substr(1); + return kebabToCamel(string); +} -- 2.40.1 From f515249329bf95719ee0f6ff9e5f2fe6723846fc Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Wed, 25 May 2022 20:04:16 +0200 Subject: [PATCH 07/10] Checkpoint --- forms/account/address-list/style.css | 2 +- forms/account/address-list/ui.xml | 2 +- forms/account/address/style.css | 2 +- forms/account/conf/style.css | 2 +- forms/admin/connections/connections.js | 14 +- forms/admin/connections/style.css | 24 +- forms/admin/connections/ui.xml | 50 +-- forms/admin/items/style.css | 39 +- forms/admin/items/ui.xml | 53 +-- forms/admin/links/style.css | 66 ++-- forms/admin/links/ui.xml | 46 ++- forms/admin/photos/style.css | 4 +- forms/admin/queries/style.css | 2 +- forms/admin/users/style.css | 20 +- forms/admin/users/ui.xml | 47 +-- forms/admin/users/users.js | 7 - forms/admin/visits/style.css | 49 +-- forms/admin/visits/ui.xml | 30 +- forms/agencies/packages/style.css | 2 +- forms/agencies/provinces/style.css | 2 +- forms/cms/contact/style.css | 2 +- forms/cms/why/style.css | 2 +- forms/ecomerce/basket/style.css | 2 +- forms/ecomerce/catalog/catalog.js | 4 +- forms/ecomerce/catalog/style.css | 2 +- forms/ecomerce/catalog/ui.xml | 12 +- forms/ecomerce/checkout/style.css | 10 +- forms/ecomerce/confirm/style.css | 2 +- forms/ecomerce/invoices/style.css | 13 +- forms/ecomerce/ticket/style.css | 2 +- forms/news/news/style.css | 38 +- forms/news/news/ui.xml | 56 +-- forms/reports/items-form/style.css | 36 +- forms/reports/shelves/style.css | 30 +- forms/reports/shelves/ui.xml | 18 +- js/hedera/gui.js | 4 +- js/hedera/gui.scss | 69 ++-- js/hedera/gui.xml | 4 +- js/hedera/style.scss | 162 +++------ js/htk/column/button.js | 20 +- js/htk/field/button.js | 11 +- js/htk/field/date-chooser.js | 77 ++-- js/htk/field/search-entry.js | 31 +- js/htk/field/select.js | 181 +++++----- js/htk/style/classes.scss | 14 +- js/htk/style/main.scss | 475 ++++++++++++++----------- js/htk/style/variables.scss | 2 +- 47 files changed, 779 insertions(+), 963 deletions(-) diff --git a/forms/account/address-list/style.css b/forms/account/address-list/style.css index 661afa20..2b28eb1f 100644 --- a/forms/account/address-list/style.css +++ b/forms/account/address-list/style.css @@ -3,7 +3,7 @@ padding: 1em; } .address-list .box { - max-width: 30em; + max-width: 420px; } .address-list .form { margin: 0 auto; diff --git a/forms/account/address-list/ui.xml b/forms/account/address-list/ui.xml index 594f7b67..03d9f753 100644 --- a/forms/account/address-list/ui.xml +++ b/forms/account/address-list/ui.xml @@ -35,7 +35,7 @@ form="user-form"/> <htk-repeater model="addresses" form-id="address" class="htk-list"> <custom> - <div class="address item" on-click="this.onSetDefaultClick($event, address.id)"> + <div class="item clickable" on-click="this.onSetDefaultClick($event, address.id)"> <div class="side"> <htk-radio radio-group="default-address" diff --git a/forms/account/address/style.css b/forms/account/address/style.css index 26d66c87..258faa66 100644 --- a/forms/account/address/style.css +++ b/forms/account/address/style.css @@ -3,6 +3,6 @@ padding: 1em; } .address .box { - max-width: 30em; + max-width: 420px; padding: 3em; } diff --git a/forms/account/conf/style.css b/forms/account/conf/style.css index 899d1666..9efb1a03 100644 --- a/forms/account/conf/style.css +++ b/forms/account/conf/style.css @@ -3,7 +3,7 @@ padding: 1em; } .conf .box { - max-width: 30em; + max-width: 420px; padding: 3em; } .pass-change { diff --git a/forms/admin/connections/connections.js b/forms/admin/connections/connections.js index 7faab429..29b44b14 100644 --- a/forms/admin/connections/connections.js +++ b/forms/admin/connections/connections.js @@ -11,23 +11,13 @@ Hedera.Connections = new Class({ if (this._timeoutId) clearTimeout(this._timeoutId); - this._timeoutId = setTimeout(this.onRefreshClick.bind(this), 60000); + this._timeoutId = setTimeout( + () => this.$('sessions').refresh(), 60000); } ,deactivate: function() { clearTimeout(this._timeoutId); } - - ,onRefreshClick: function() { - this.$('sessions').refresh(); - } - - ,onAccessLogClick: function(userId) { - this.hash.set({ - form: 'admin/access-log' - ,user: userId - }); - } ,onChangeUserClick: function(userName) { this.gui.supplantUser(userName, diff --git a/forms/admin/connections/style.css b/forms/admin/connections/style.css index 4e846da9..c004ce98 100644 --- a/forms/admin/connections/style.css +++ b/forms/admin/connections/style.css @@ -2,7 +2,7 @@ padding: 1em; } .connections .box { - max-width: 25em; + max-width: 420px; margin: 0 auto; } .action-bar .connections-sum { @@ -11,25 +11,3 @@ border-radius: 0.1em; box-shadow: 0 0 0.4em rgba(255, 255, 255, .1); } - -/* List */ - -.connections .item { - display: block; - padding: 1em; - border-bottom: 1px solid #DDD; -} -.connections .item > button { - float: right; - margin: 0; -} -.connections .item > p { - margin: .1em 0; -} -.connections .item > p.important { - font-size: 1.2em; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} - diff --git a/forms/admin/connections/ui.xml b/forms/admin/connections/ui.xml index 47d9a8b1..790c7e00 100644 --- a/forms/admin/connections/ui.xml +++ b/forms/admin/connections/ui.xml @@ -6,7 +6,7 @@ <htk-bar-button icon="refresh" tip="_Refresh" - on-click="this.onRefreshClick()"/> + on-click="$.sessions.refresh()"/> <div class="connections-sum"> <htk-text> <db-calc-sum @@ -19,7 +19,7 @@ </div> <div id="form" class="connections"> <div class="box"> - <htk-repeater form-id="iter"> + <htk-repeater form-id="iter" class="htk-list"> <db-model property="model" id="sessions" @@ -37,29 +37,29 @@ </custom> </db-model> <custom> - <div class="item"> - <htk-button - tip="_Access log" - icon="history" - on-click="this.onAccessLogClick(iter.userId)"/> - <htk-button - tip="_Supplant user" - icon="supervisor_account" - on-click="this.onChangeUserClick(iter.user)"/> - <p class="important"> - {{iter.nickname}} - <htk-text form="iter" column="nickname"/> - </p> - <p> - {{Vn.Value.format(iter.stamp, '%a, %T')}} - - {{Vn.Value.format(iter.lastUpdate, '%T')}} - </p> - <p> - {{iter.platform}} - - {{iter.browser}} - {{iter.version}} - </p> - </div> + <a class="item" + href="{{`#!form=admin/access-log&user=${iter.userId}`}}" + title="_Access log"> + <div class="content"> + <p class="important"> + {{iter.nickname}} + </p> + <p> + {{Vn.Value.format(iter.stamp, '%a, %T')}} - + {{Vn.Value.format(iter.lastUpdate, '%T')}} + </p> + <p> + {{iter.platform}} - {{iter.browser}} {{iter.version}} + </p> + </div> + <div class="actions" + on-click="$event.preventDefault()"> + <htk-button + tip="_Supplant user" + icon="supervisor_account" + on-click="this.onChangeUserClick(iter.user)"/> + </div> + </a> </custom> </htk-repeater> </div> diff --git a/forms/admin/items/style.css b/forms/admin/items/style.css index 0c32d69c..72a14708 100644 --- a/forms/admin/items/style.css +++ b/forms/admin/items/style.css @@ -1,41 +1,16 @@ -.items -{ +.items { padding: 1em; } -.items .box -{ - max-width: 25em; +.items .box { + max-width: 420px; margin: 0 auto; } /* Row */ -.items .row -{ - padding: 1em; - border-bottom: 1px solid #DDD; -} -.items .row > .photo -{ +.items .item .photo { margin-right: 1em; - float: left; - border-radius: 3%; - height: 5.5em; - width: 5.5em; + border-radius: 50%; + height: 80px; + width: 80px; } -.items .row > p -{ - margin: .1em 0; - margin-left: 5em; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -/* Topbar */ - -.action-bar .htk-search-entry -{ - margin: .8em .6em; -} - diff --git a/forms/admin/items/ui.xml b/forms/admin/items/ui.xml index 2130b16d..47a23a77 100644 --- a/forms/admin/items/ui.xml +++ b/forms/admin/items/ui.xml @@ -11,7 +11,7 @@ </div> <div id="form" class="items"> <div class="rows box"> - <htk-repeater form-id="iter" empty-message="_Enter a search term"> + <htk-repeater form-id="iter" class="htk-list" empty-message="_Enter a search term"> <db-model property="model" id="items"> SELECT i.id, i.longName, i.size, i.category, i.value5, i.value6, i.value7, @@ -30,30 +30,33 @@ </sql-batch> </db-model> <custom> - <div class="row"> - <htk-image - form="iter" - column="image" - stamp-column="updated" - class="photo" - directory="catalog" - subdir="200x200" - full-dir="1600x900" - editable="true" - conn="conn"/> - <p class="concept"> - {{iter.longName}} - </p> - <p class="tags"> - {{iter.value5}} {{iter.value6}} {{iter.value7}} - </p> - <p> - {{iter.id}} - </p> - <p> - {{iter.image}} - </p> - <div class="clear"/> + <div class="item"> + <div class="side"> + <htk-image + form="iter" + column="image" + stamp-column="updated" + class="photo" + directory="catalog" + subdir="200x200" + full-dir="1600x900" + editable="true" + conn="conn"/> + </div> + <div class="content"> + <p class="important"> + {{iter.longName}} + </p> + <p class="tags"> + {{iter.value5}} {{iter.value6}} {{iter.value7}} + </p> + <p> + {{iter.id}} + </p> + <p> + {{iter.image}} + </p> + </div> </div> </custom> </htk-repeater> diff --git a/forms/admin/links/style.css b/forms/admin/links/style.css index b74a6af2..6718e605 100644 --- a/forms/admin/links/style.css +++ b/forms/admin/links/style.css @@ -1,38 +1,60 @@ -.cpanel -{ +.cpanel { padding: 1em; } -.cpanel .box -{ - max-width: 30em; +.cpanel .box { + max-width: 420px; } /* Items */ -.cpanel .item -{ - display: block; - padding: 1em; - border-bottom: 1px solid #DDD; +.cpanel .items > div { + max-width: 800px; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 12px; + margin: 0 auto; } -.cpanel .item:hover -{ +.cpanel .item { + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + width: 120px; + padding: 15px; + text-align: center; + transition: background-color 250ms ease-out; +} +.cpanel .item:hover { background-color: rgba(1, 1, 1, 0.05); } -.cpanel .item > .htk-image -{ +.cpanel .item > .htk-image { + display: flex; + justify-content: center; + align-items: center; margin: 0; - margin-right: 1em; float: left; - max-height: 2.8em; - max-width: 2.8em; + height: 80px; } -.cpanel .item > p -{ +.cpanel .item > .htk-image > img { + max-height: 60px; + max-width: 60px; + padding: 0; +} +.cpanel .item > h3 { + flex: none; margin: .1em 0; + font-size: .9rem; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } -.cpanel .item > p.important -{ - font-size: 1.2em; +.cpanel .item > .secondary { + flex: none; + margin: 0; + font-size: .8rem; + color: #666; + height: 40px; + overflow: hidden; } diff --git a/forms/admin/links/ui.xml b/forms/admin/links/ui.xml index e82d3135..5c300e82 100644 --- a/forms/admin/links/ui.xml +++ b/forms/admin/links/ui.xml @@ -3,31 +3,29 @@ <h1><t>ControlPanel</t></h1> </div> <div id="form" class="cpanel"> - <div class="box"> - <htk-repeater form-id="iter"> - <db-model property="model"> - <custom> - SELECT image, name, description, link FROM link - ORDER BY name - </custom> - </db-model> + <htk-repeater form-id="iter" class="items"> + <db-model property="model"> <custom> - <a class="item" - href="{{iter.link}}" - target="_blank"> - <htk-image - value="{{iter.image}}" - directory="link" - subdir="full"/> - <p class="important"> - {{iter.name}} - </p> - <p> - {{iter.description}} - </p> - </a> + SELECT image, name, description, link FROM link + ORDER BY name </custom> - </htk-repeater> - </div> + </db-model> + <custom> + <a class="item box" + href="{{iter.link}}" + target="_blank"> + <htk-image + value="{{iter.image}}" + directory="link" + subdir="full"/> + <h3> + {{iter.name}} + </h3> + <p class="secondary"> + {{iter.description}} + </p> + </a> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/admin/photos/style.css b/forms/admin/photos/style.css index 47d90ce5..7a2234d6 100644 --- a/forms/admin/photos/style.css +++ b/forms/admin/photos/style.css @@ -3,8 +3,8 @@ padding: 1em; } .photos .box { - max-width: 25em; - padding: 2em; + max-width: 420px; + padding: 3em; } /* Dropzone */ diff --git a/forms/admin/queries/style.css b/forms/admin/queries/style.css index ffd2d78b..c2d5117b 100644 --- a/forms/admin/queries/style.css +++ b/forms/admin/queries/style.css @@ -2,7 +2,7 @@ padding: 1em; } .queries .box { - max-width: 40em; + max-width: 600px; margin: 0 auto; } .queries .form { diff --git a/forms/admin/users/style.css b/forms/admin/users/style.css index d9adf788..63dc1d54 100644 --- a/forms/admin/users/style.css +++ b/forms/admin/users/style.css @@ -2,25 +2,13 @@ padding: 1em; } .users .box { - max-width: 30em; + max-width: 420px; margin: 0 auto; } -.users-box { - padding: 1em; - border-bottom: 1px solid #DDD; +.users-box.item > .actions { + display: flex; } -.users-box > button { - float: right; - margin: 0; -} -.users-box > p { - margin: .2em 0; -} -.users-box > p.important { - font-size: 1.2em; -} -.users-box > .disabled { - float: right; +.users-box .disabled { color: white; background-color: #F66; border-radius: .2em; diff --git a/forms/admin/users/ui.xml b/forms/admin/users/ui.xml index ff7b437d..195e4b5c 100644 --- a/forms/admin/users/ui.xml +++ b/forms/admin/users/ui.xml @@ -12,7 +12,7 @@ </div> <div id="form" class="users"> <div class="box"> - <htk-repeater form-id="iter" renderer="rendererFunc"> + <htk-repeater form-id="iter" renderer="rendererFunc" class="htk-list"> <db-model property="model"> <custom> SELECT u.id, u.name, u.nickname, u.active @@ -29,28 +29,29 @@ </sql-batch> </db-model> <custom> - <div class="users-box"> - <htk-button - icon="history" - tip="_Access log" - on-click="this.onAccessLogClick(iter.id)"/> - <htk-button - id="impersonate" - icon="supervisor_account" - tip="_Impersonate user" - on-click="this.onChangeUserClick(iter.name)"/> - <span id="disabled" class="disabled"> - <t>Disabled</t> - </span> - <p class="important"> - <htk-text form="iter" column="nickname"/> - </p> - <p> - #<htk-text form="iter" column="id"/> - - <htk-text form="iter" column="name"/> - </p> - <div class="clear"/> - </div> + <a class="users-box item" + href="{{`#!form=admin/access-log&user=${iter.id}`}}" + title="_Access log"> + <div class="content"> + <p class="important"> + {{iter.nickname}} + </p> + <p> + #{{iter.id}} - {{iter.name}} + </p> + </div> + <div class="actions" + on-click="$event.preventDefault()"> + <span id="disabled" class="disabled"> + <t>Disabled</t> + </span> + <htk-button + id="impersonate" + icon="supervisor_account" + tip="_Impersonate user" + on-click="this.onChangeUserClick(iter.name)"/> + </div> + </a> </custom> </htk-repeater> </div> diff --git a/forms/admin/users/users.js b/forms/admin/users/users.js index 00992713..05f45af2 100644 --- a/forms/admin/users/users.js +++ b/forms/admin/users/users.js @@ -2,13 +2,6 @@ Hedera.Users = new Class({ Extends: Hedera.Form - ,onAccessLogClick: function(userId) { - this.hash.set({ - form: 'admin/access-log' - ,user: userId - }); - } - ,rendererFunc: function(scope, form) { var isEnabled = form.get('active') scope.$('disabled').style.display = isEnabled ? diff --git a/forms/admin/visits/style.css b/forms/admin/visits/style.css index 4ccdc136..91407404 100644 --- a/forms/admin/visits/style.css +++ b/forms/admin/visits/style.css @@ -1,46 +1,19 @@ -.visits -{ +.visits { padding: 1em; } -.visits .box -{ - max-width: 25em; - margin: 0 auto; +.visits .box { + max-width: 420px; + margin-bottom: 1em; } -.visits .form -{ - padding: 1.5em; - max-width: 20em; +.visits .box:last-child { + margin-bottom: 0; } -.visits .summary -{ - margin-top: 1em; +.visits .summary { + padding: 3em; + box-sizing: border-box; } -.visits .summary p -{ - padding: 1.5em; +.visits .summary p { font-size: 1.4em; + margin: 0; text-align: right; } - -/* List */ - -.visits .list -{ - margin-top: 1em; -} -.visits .item -{ - display: block; - padding: 1em; - border-bottom: 1px solid #DDD; -} -.visits .item > p -{ - margin: .1em 0; -} -.visits .item > p.important -{ - font-size: 1.2em; -} - diff --git a/forms/admin/visits/ui.xml b/forms/admin/visits/ui.xml index d27bf247..7a4967c5 100644 --- a/forms/admin/visits/ui.xml +++ b/forms/admin/visits/ui.xml @@ -13,7 +13,7 @@ on-click="this.onSessionsClick()"/> </div> <div id="form" class="visits"> - <div class="box"> + <div class="summary box"> <div class="form"> <div class="form-group"> <label><t>From</t></label> @@ -48,7 +48,7 @@ </p> </div> <div class="list box"> - <htk-repeater form-id="iter" empty-message="_Select date interval"> + <htk-repeater form-id="iter" empty-message="_Select date interval" class="htk-list"> <db-model property="model" id="visits"> <custom> SELECT browser, @@ -73,20 +73,18 @@ </db-model> <custom> <div class="item"> - <p class="important"> - <htk-text form="iter" column="browser"/> - <htk-text form="iter" column="minVersion"/> - - <htk-text form="iter" column="maxVersion"/> - </p> - <p> - <htk-text form="iter" column="visits"/> - <t>visits</t>, - <htk-text form="iter" column="newVisits"/> - <t>news</t> - </p> - <p> - <htk-text form="iter" column="lastVisit" format="_%a, %e %b %Y at %T"/> - </p> + <div class="content"> + <p class="important"> + {{iter.browser}} {{iter.minVersion}} - {{iter.maxVersion}} + </p> + <p> + {{iter.visits}} <t>visits</t>, + {{iter.newVisits}} <t>news</t> + </p> + <p> + {{Vn.Value.format(iter.lastVisit, _('%a, %e %b %Y at %T'))}} + </p> + </div> </div> </custom> </htk-repeater> diff --git a/forms/agencies/packages/style.css b/forms/agencies/packages/style.css index 42b69f97..abd928e6 100644 --- a/forms/agencies/packages/style.css +++ b/forms/agencies/packages/style.css @@ -4,6 +4,6 @@ } .packages .box { - max-width: 40em; + max-width: 600px; margin: 0 auto; } diff --git a/forms/agencies/provinces/style.css b/forms/agencies/provinces/style.css index cbf4d53f..292bb3e4 100644 --- a/forms/agencies/provinces/style.css +++ b/forms/agencies/provinces/style.css @@ -4,6 +4,6 @@ } .provinces .box { - max-width: 40em; + max-width: 600px; margin: 0 auto; } diff --git a/forms/cms/contact/style.css b/forms/cms/contact/style.css index 98fa547d..35b0a6b8 100644 --- a/forms/cms/contact/style.css +++ b/forms/cms/contact/style.css @@ -5,7 +5,7 @@ } .contact .box { - max-width: 30em; + max-width: 420px; padding: 2em; } .contact .form diff --git a/forms/cms/why/style.css b/forms/cms/why/style.css index 434da8da..c0436008 100644 --- a/forms/cms/why/style.css +++ b/forms/cms/why/style.css @@ -5,7 +5,7 @@ } .why .box { - max-width: 40em; + max-width: 600px; margin: 0 auto; } .why ul diff --git a/forms/ecomerce/basket/style.css b/forms/ecomerce/basket/style.css index 09abc932..11ba47b8 100644 --- a/forms/ecomerce/basket/style.css +++ b/forms/ecomerce/basket/style.css @@ -2,7 +2,7 @@ padding: 1em; } .basket .box { - max-width: 30em; + max-width: 420px; margin: 0 auto; padding: 30px; } diff --git a/forms/ecomerce/catalog/catalog.js b/forms/ecomerce/catalog/catalog.js index 048706c5..1249a32c 100644 --- a/forms/ecomerce/catalog/catalog.js +++ b/forms/ecomerce/catalog/catalog.js @@ -42,14 +42,14 @@ Hedera.Catalog = new Class({ ,setView: function(view) { if (view === Hedera.Catalog.View.GRID) { this.$('view-button').setProperties({ - icon: 'view-list', + icon: 'view_list', tip: _('List view') }); this.view = Hedera.Catalog.View.GRID; var className = 'grid-view'; } else { this.$('view-button').setProperties({ - icon: 'view-grid', + icon: 'grid_on', tip: _('Grid view') }); this.view = Hedera.Catalog.View.LIST; diff --git a/forms/ecomerce/catalog/style.css b/forms/ecomerce/catalog/style.css index dbfde6bc..5e6a7246 100644 --- a/forms/ecomerce/catalog/style.css +++ b/forms/ecomerce/catalog/style.css @@ -258,7 +258,7 @@ .list-view { - max-width: 30em; + max-width: 420px; margin: 0 auto; padding: 1em; } diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index dfb992f3..1a33f0a0 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -99,14 +99,16 @@ <htk-bar-button id="view-button" tip="_Switch view" - icon="format_list_bulleted" - on-click="onSwitchViewClick"/> + icon="view_list" + on-click="this.onSwitchViewClick()"/> <htk-bar-button icon="shopping_cart_checkout" tip="_ShoppingBasket" - on-click="onBasketClick"/> - <button class="menu" on-click="onShowMenuClick"> - <img src="image/icon/dark/menu.svg" alt="_Menu"/> + on-click="this.onBasketClick()"/> + <button + class="menu" + on-click="onShowMenuClick"> + <htk-icon name="menu"/> </button> </div> <div id="form" class="catalog"> diff --git a/forms/ecomerce/checkout/style.css b/forms/ecomerce/checkout/style.css index 01e75703..22dbaaa3 100644 --- a/forms/ecomerce/checkout/style.css +++ b/forms/ecomerce/checkout/style.css @@ -1,13 +1,13 @@ .checkout { padding: 1em; - max-width: 40em; + max-width: 600px; margin: 0 auto; } .checkout .bar { margin-bottom: 1em; } .checkout .form { - max-width: 40em; + max-width: 600px; padding: 4em 2em; } @@ -19,11 +19,9 @@ font-size: 1.2em; } .answers .htk-select { - max-width: 10em; - display: block; + max-width: 15em; margin: 0 auto; - font-size: 1.6em; - height: 1.8em; + font-size: 1.4em; } .answers p { margin: 0.3em 0; diff --git a/forms/ecomerce/confirm/style.css b/forms/ecomerce/confirm/style.css index 4dd4a61e..02758016 100644 --- a/forms/ecomerce/confirm/style.css +++ b/forms/ecomerce/confirm/style.css @@ -1,7 +1,7 @@ .confirm { padding: 1em; - max-width: 30em; + max-width: 420px; margin: 0 auto; color: #555; } diff --git a/forms/ecomerce/invoices/style.css b/forms/ecomerce/invoices/style.css index 35acf384..e010596d 100644 --- a/forms/ecomerce/invoices/style.css +++ b/forms/ecomerce/invoices/style.css @@ -1,14 +1,7 @@ -.invoices -{ +.invoices { padding: 1em; } -.invoices .box -{ - max-width: 40em; -} -.invoices .box > .header, -.invoices .htk-grid > thead > tr -{ - background-color: #3F51B6; +.invoices .box { + max-width: 600px; } diff --git a/forms/ecomerce/ticket/style.css b/forms/ecomerce/ticket/style.css index 695c24e5..510cd502 100644 --- a/forms/ecomerce/ticket/style.css +++ b/forms/ecomerce/ticket/style.css @@ -2,7 +2,7 @@ padding: 1em; } .ticket .box { - max-width: 30em; + max-width: 420px; margin: 0 auto; padding: 2em; color: #333; diff --git a/forms/news/news/style.css b/forms/news/news/style.css index b1412acb..8c343b55 100644 --- a/forms/news/news/style.css +++ b/forms/news/news/style.css @@ -1,41 +1,17 @@ -.news -{ +.news { padding: 1em; } -.news .box -{ - max-width: 35em; +.news .box { + max-width: 420px; margin: 0 auto; } /* Items */ -.news .item -{ - padding: 1em; - border-bottom: 1px solid #DDD; -} -.news .item > p -{ - margin: .1em 0; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -.news .item > p.important -{ - font-size: 1.2em; -} -.news .item > .photo -{ +.news .item .photo { float: left; margin-right: 1em; - height: 4.2em; - width: 4.2em; - border-radius: .3em; -} -.news .item > button -{ - float: right; - margin: 0; + height: 80px; + width: 80px; + border-radius: 50%; } diff --git a/forms/news/news/ui.xml b/forms/news/news/ui.xml index b2302a67..d8e3124b 100644 --- a/forms/news/news/ui.xml +++ b/forms/news/news/ui.xml @@ -10,7 +10,7 @@ </div> <div id="form" class="news"> <div class="box"> - <htk-repeater form-id="iter"> + <htk-repeater form-id="iter" class="htk-list"> <db-model property="model" id="news-model" updatable="true"> <custom> SELECT n.id, u.nickname, n.priority, n.image, n.title @@ -20,30 +20,36 @@ </custom> </db-model> <custom> - <div class="item"> - <htk-button - icon="edit" - tip="_EditNew" - on-click="this.onEditClick(iter.id)"/> - <htk-button - tip="_Remove" - icon="delete" - on-click="this.onDeleteClick($.iter)"/> - <htk-image - form="iter" - column="image" - class="photo" - directory="news" - subdir="200x200" - full-dir="full" - editable="true" - conn="conn"/> - <p class="important"> - {{iter.title}} - </p> - <p>{{iter.nickname}}</p> - <p>{{iter.priority}}</p> - </div> + <a class="item" + href="{{`#!form=news/new&new=${iter.id}`}}" + title="_EditNew"> + <div class="side"> + <htk-image + form="iter" + column="image" + class="photo" + directory="news" + subdir="200x200" + full-dir="full" + editable="true" + conn="conn"/> + </div> + <div class="content"> + <p class="important"> + {{iter.title}} + </p> + <p>{{iter.nickname}}</p> + <p>{{iter.priority}}</p> + </div> + <div + class="actions" + on-click="$event.preventDefault()"> + <htk-button + tip="_Remove" + icon="delete" + on-click="this.onDeleteClick($.iter)"/> + </div> + </a> </custom> </htk-repeater> </div> diff --git a/forms/reports/items-form/style.css b/forms/reports/items-form/style.css index ff9ba1be..bd894532 100644 --- a/forms/reports/items-form/style.css +++ b/forms/reports/items-form/style.css @@ -1,43 +1,19 @@ -.items -{ +.items { padding: 1em; } -.items .box -{ - max-width: 30em; - padding: 2em; -} -.items .form -{ - max-width: 25em; - margin: auto; -} -.items .form-group -{ - padding: 0.4em; -} -.items form label -{ - display: block; - margin-bottom: 0.5em; -} -.items input[type=text], -.items select -{ - margin: 0; - width: 100%; +.items .box { + max-width: 420px; + padding: 3em; } /* Footer */ -.items .footer -{ +.items .footer { text-align: center; margin-top: 1.5em; } -.items .footer > button -{ +.items .footer > button { margin: 0 .2em; } diff --git a/forms/reports/shelves/style.css b/forms/reports/shelves/style.css index 0be2e7cf..fb16cfd1 100644 --- a/forms/reports/shelves/style.css +++ b/forms/reports/shelves/style.css @@ -1,30 +1,8 @@ -.shelves -{ +.shelves { padding: 1em; } -.shelves .box -{ - max-width: 30em; - padding: 2em; -} -.shelves .form -{ - max-width: 25em; - margin: auto; -} -.shelves .form-group -{ - padding: 0.4em; -} -.shelves form label -{ - display: block; - margin-bottom: 0.5em; -} -.shelves input[type=text], -.shelves select -{ - margin: 0; - width: 100%; +.shelves .box { + max-width: 420px; + padding: 3em; } diff --git a/forms/reports/shelves/ui.xml b/forms/reports/shelves/ui.xml index cf6f7de0..c423d7f7 100644 --- a/forms/reports/shelves/ui.xml +++ b/forms/reports/shelves/ui.xml @@ -95,16 +95,22 @@ <htk-entry id="reportTitle"/> </div> <div class="form-group"> - <label><t>Show packing</t></label> - <htk-check id="showPacking"/> + <label> + <htk-check id="showPacking"/> + <t>Show packing</t> + </label> </div> <div class="form-group"> - <label><t>Stack different items</t></label> - <htk-check id="stack"/> + <label> + <htk-check id="stack"/> + <t>Stack different items</t> + </label> </div> <div class="form-group"> - <label><t>Use ids instead of names</t></label> - <htk-check id="useIds"/> + <label> + <htk-check id="useIds"/> + <t>Use ids instead of names</t> + </label> </div> </div> </div> diff --git a/js/hedera/gui.js b/js/hedera/gui.js index 03000355..eaea8a3d 100644 --- a/js/hedera/gui.js +++ b/js/hedera/gui.js @@ -494,11 +494,11 @@ module.exports = new Class({ ,_onSupplantName: function(resultSet) { var userName = resultSet.fetchValue(); Vn.Node.setText(this.$('supplanted'), userName); - Vn.Node.show(this.$('supplant')); + this.$('supplant').classList.toggle('show', true); } ,onSupplantExitClick: function() { - Vn.Node.hide(this.$('supplant')); + this.$('supplant').classList.toggle('show', false); this._conn.supplantEnd(); sessionStorage.removeItem('supplantUser', sessionStorage.getItem('supplantUser')); diff --git a/js/hedera/gui.scss b/js/hedera/gui.scss index 7542f73d..71bba6be 100644 --- a/js/hedera/gui.scss +++ b/js/hedera/gui.scss @@ -34,23 +34,25 @@ padding: 0 1em; margin: 0; height: 100%; - } - .menu-button:hover { - background-color: rgba(0, 0, 0, .2); - } - .menu-button img { - vertical-align: middle; - height: 1.8em; + + &:hover { + background-color: rgba(0, 0, 0, .2); + } + img { + vertical-align: middle; + height: 1.8em; + } } .title { float: left; - } - .title h1 { - font-weight: normal; - font-size: 1.4em; - padding: .8em .6em; - padding-right: .3em; - margin: 0; + + h1 { + font-weight: normal; + font-size: 1.4em; + padding: .8em .6em; + padding-right: .3em; + margin: 0; + } } .navbar > .htk-spinner { float: left; @@ -100,11 +102,12 @@ visibility: hidden; background-color: rgba(1, 1, 1, .7); opacity: 0; - } - & > .background.show { - visibility: visible; - transition: opacity 200ms ease-out; - opacity: 1; + + &.show { + visibility: visible; + transition: opacity 200ms ease-out; + opacity: 1; + } } /* Left panel */ @@ -157,14 +160,22 @@ display: block; margin: 0; text-align: left; + border-radius: 0; &:hover { background-color: #1a1a1a; color: white; } + & > .htk-icon { + display: block; + } } &.supplant { display: none; + + &.show { + display: flex; + } } } @@ -179,9 +190,10 @@ line-height: 2em; border-radius: .1em; text-align: center; - } - .test-link:hover { - background-color: #4f61c5; + + &:hover { + background-color: #4f61c5; + } } .dev-info { display: none; @@ -191,12 +203,13 @@ font-size: .9em; margin: .5em; border-radius: .1em; - } - .dev-info > p { - margin: .2em 0; - } - .dev-info > .mode { - color: #BBF; + + & > p { + margin: .2em 0; + } + & > .mode { + color: #BBF; + } } /* Menu */ diff --git a/js/hedera/gui.xml b/js/hedera/gui.xml index 9b7a922d..58b816a4 100644 --- a/js/hedera/gui.xml +++ b/js/hedera/gui.xml @@ -16,13 +16,13 @@ <div class="user-info"> <div> <span id="user-name"/> - <button class="logout" on-click="onLogoutClick"> + <button class="logout" on-click="this.onLogoutClick()"> <htk-icon name="logout" alt="_Exit"/> </button> </div> <div id="supplant" class="supplant"> <span id="supplanted"/> - <button class="logout" on-click="onSupplantExitClick"> + <button class="logout" on-click="this.onSupplantExitClick()"> <htk-icon name="logout" alt="_Exit"/> </button> </div> diff --git a/js/hedera/style.scss b/js/hedera/style.scss index 779de98c..c30e957f 100644 --- a/js/hedera/style.scss +++ b/js/hedera/style.scss @@ -148,13 +148,15 @@ input[type=text]:disabled { input[type=checkbox], input[type=radio] { cursor: pointer; - padding: .3em; - margin-right: .6em; + margin: 0; + margin-right: 10px; } select { + @extend %clickable; background-color: white; -moz-appearance: none; appearance: none; + line-height: 1em; } option { padding: .4em; @@ -174,74 +176,23 @@ input[type=button], input[type=reset], button, .button { + @extend %clickable; border: none; background-color: transparent; - padding: .5em; - cursor: pointer; - border-radius: 0.1em; + padding: 10px; + border-radius: 22px; margin: -0.5em; font-weight: bold; + + &:disabled { + background-color: rgba(0, 0, 0, .5); + } } .button { display: inline-block; text-align: center; box-sizing: border-box; } -input[type=submit]:hover, -input[type=button]:hover, -input[type=reset]:hover, -button:hover, -.button:hover { - background-color: rgba(1, 1, 1, 0.1); -} - -/* Flat button */ - -button.flat, -.button.flat { - border: none; - border-radius: 0.1em; - box-shadow: 0 0.2em 0.2em #DDD; - background-color: #AD4; - color: black; -} -button.flat:hover, -.button.flat:hover { - background-color: #9C3; - cursor: pointer; -} -button.flat:disabled, -.button.flat:disabled { - color: gray; -} - -/* Thin button */ - -input[type=submit].thin, -input[type=button].thin, -input[type=reset].thin, -button.thin, -.button.thin { - color: #008D77; - border-radius: 1.4em; - padding: .5em 1.4em; - background-color: rgba(255, 255, 255, .1); - font-weight: bold; -} -input[type=submit].thin:disabled, -input[type=button].thin:disabled, -input[type=reset].thin:disabled, -button.thin:disabled -.button.thin:disabled { - color: gray; -} -input[type=submit].thin:hover, -input[type=button].thin:hover, -input[type=reset].thin:hover, -button.thin:hover -.button.thin:hover { - background-color: rgba(0, 0, 0, .1); -} /* Image */ @@ -260,23 +211,25 @@ img.editable { .box { @extend %box; margin: 0 auto; -} -.box .header { - padding: 0.6em 0.8em; - margin: 0; - background-color: #009688; - color: white; -} -.box .header > h1 { - color: white; - text-align: left; - font-size: 1.6em; - line-height: 2em; - font-weight: normal; - display: inline; -} -.box .body { - padding: 2em; + + .header { + padding: 0.6em 0.8em; + margin: 0; + background-color: #009688; + color: white; + + & > h1 { + color: white; + text-align: left; + font-size: 1.6em; + line-height: 2em; + font-weight: normal; + display: inline; + } + } + .body { + padding: 2em; + } } /* Form */ @@ -289,24 +242,25 @@ img.editable { } .form-group { margin-bottom: 1.2em; -} -.form-group:last-child { - margin-bottom: 0; -} -.form-group > label { - display: block; - margin: 0; - margin-bottom: .2em; - color: #222; -} -.form-group > input[type=text], -.form-group > input[type=password], -.form-group > input[type=file], -.form-group > input[type=number], -.form-group > select, -.form-group > textarea { - margin: 0; - width: 100%; + + &:last-child { + margin-bottom: 0; + } + & > label { + display: block; + margin: 0; + margin-bottom: .2em; + color: #222; + } + & > input[type=text], + & > input[type=password], + & > input[type=file], + & > input[type=number], + & > select, + & > textarea { + margin: 0; + width: 100%; + } } /* Form */ @@ -366,13 +320,13 @@ img.icon { .htk-social-bar { text-align: center; -} -.htk-social-bar a { - display: inline-block; - margin: 0 .1em; -} -.htk-social-bar img { - height: 1.8em; - width: 1.8em; -} + a { + display: inline-block; + margin: 0 .1em; + } + img { + height: 1.8em; + width: 1.8em; + } +} diff --git a/js/htk/column/button.js b/js/htk/column/button.js index ac14262b..b35dc65a 100644 --- a/js/htk/column/button.js +++ b/js/htk/column/button.js @@ -40,9 +40,9 @@ module.exports = new Class({ }, render: function(tr) { - var td = this.parent(tr); + const td = this.parent(tr); - var button; + let button; if (this.href == null) { button = this.createElement('button'); @@ -54,18 +54,16 @@ module.exports = new Class({ button.target = this.target; } + if (this.tip) + button.title = _(this.tip); + button.disabled = this.disabled; td.appendChild(button); - var span = this.createElement('span'); - span.className = 'material-symbols-rounded icon'; - span.innerText = this._icon; - button.appendChild(span); - - if (this.tip) { - button.title = _(this.tip); - span.title = _(this.tip); - } + const icon = new Htk.Icon({ + name: this._icon + }); + button.appendChild(icon.node); return td; }, diff --git a/js/htk/field/button.js b/js/htk/field/button.js index cd01a41d..902f179d 100644 --- a/js/htk/field/button.js +++ b/js/htk/field/button.js @@ -2,8 +2,7 @@ module.exports = new Class({ Extends: Htk.Field ,Tag: 'htk-button' - ,Properties: - { + ,Properties: { image: { type: String ,set: function(x) { @@ -19,11 +18,7 @@ module.exports = new Class({ tip: { type: String ,set: function(x) { - if (x) { - this.node.title = _(x); - this.iconNode.title = _(x); - } - + this.node.title = x ? _(x) : ''; this.renderContent(); } ,get: function() { @@ -32,7 +27,7 @@ module.exports = new Class({ }, showText: { type: Boolean - ,set: function(x) { + ,set: function(x) { this._showText = x; this.renderContent(); } diff --git a/js/htk/field/date-chooser.js b/js/htk/field/date-chooser.js index 275bb793..579c4a44 100644 --- a/js/htk/field/date-chooser.js +++ b/js/htk/field/date-chooser.js @@ -1,5 +1,5 @@ -var Calendar = require ('./calendar'); +var Calendar = require('./calendar'); module.exports = new Class ({ @@ -10,80 +10,65 @@ module.exports = new Class ,calendar: null ,ignoreCalendarChange: false - ,render: function () - { - var node = this.createRoot ('div'); - node.className = 'htk-date-chooser'; - - this.label = this.createElement ('span'); - this.node.appendChild (this.label); + ,render: function() { + const node = this.createRoot('button'); + node.className = 'htk-date-chooser input'; + node.addEventListener('click', this._onClick.bind(this)); - this.setEditable (this._editable); + this.label = this.createElement('span'); + node.appendChild(this.label); + + const dropDown = new Htk.Icon({ + name: 'expand_more' + }); + node.appendChild(dropDown.node); + + this.setEditable(this._editable); } - ,putValue: function (value) - { + ,putValue: function(value) { var dateString; if (value instanceof Date) - dateString = Vn.Date.strftime (value, this.format); + dateString = Vn.Date.strftime(value, this.format); else dateString = ''; - Vn.Node.setText (this.label, dateString); + Vn.Node.setText(this.label, dateString); } - ,setEditable: function (editable) - { - Vn.Node.remove (this.label); - - if (this.calendar) - { - this.node.removeChild (this.button); - - this.calendar.disconnectByInstance (this); + ,setEditable: function(editable) { + if (this.calendar) { + this.calendar.disconnectByInstance(this); this.calendar = null; } - - if (editable && !this.calendar) - { - this.button = this.createElement ('button'); - this.button.className = 'input'; - this.button.title = _('ChangeDate'); - this.button.addEventListener ('click', this._onClick.bind (this)); - this.button.appendChild (this.label); - this.node.appendChild (this.button); - - this.calendar = new Calendar (); - this.calendar.on ('changed', this._onCalendarChange.bind (this)); + if (editable) { + this.calendar = new Calendar(); + this.calendar.on('changed', this._onCalendarChange.bind(this)); - this.popup = new Htk.Popup (); + this.popup = new Htk.Popup(); this.popup.child = this.calendar; } - else if (!editable) - this.node.appendChild (this.label); } - ,_onCalendarChange: function (calendar) - { + ,_onCalendarChange: function(calendar) { if (this.ignoreCalendarChange) return; - this.popup.hide (); + this.popup.hide(); var newDate = calendar.value; - this.putValue (newDate); - this.valueChanged (newDate); + this.putValue(newDate); + this.valueChanged(newDate); } - ,_onClick: function (event) - { + ,_onClick: function() { this.ignoreCalendarChange = true; this.calendar.value = this._value; - this.calendar.goToSelectedMonth (); + this.calendar.goToSelectedMonth(); this.ignoreCalendarChange = false; - this.popup.show (this.button); + this.popup.show(this.node); } }); diff --git a/js/htk/field/search-entry.js b/js/htk/field/search-entry.js index 62ac2268..e87fed09 100644 --- a/js/htk/field/search-entry.js +++ b/js/htk/field/search-entry.js @@ -1,32 +1,29 @@ -module.exports = new Class -({ +module.exports = new Class({ Extends: Htk.Field ,Tag: 'htk-search-entry' - ,render: function () - { - var div = this.createRoot ('div'); + ,render: function() { + var div = this.createRoot('div'); div.className = 'htk-search-entry'; - var icon = new Htk.Icon ({ - icon: 'search', + var icon = new Htk.Icon({ + name: 'search', alt: _('Search') }); - div.appendChild (icon.node); + div.appendChild(icon.node); - var input = this.createElement ('input'); + var input = this.createElement('input'); input.className = 'entry'; input.type = 'text'; input.placeholder = _('Search'); - input.addEventListener ('change', this._onChange.bind (this)); - div.appendChild (input); + input.addEventListener('change', this._onChange.bind(this)); + div.appendChild(input); this._input = input; } - ,_onChange: function (event) - { + ,_onChange: function() { var newValue; if (this._input.value === '') @@ -34,19 +31,17 @@ module.exports = new Class else newValue = this._input.value; - this.valueChanged (newValue); + this.valueChanged(newValue); } - ,putValue: function (value) - { + ,putValue: function(value) { if (!value) this._input.value = ''; else this._input.value = value; } - ,setEditable: function (editable) - { + ,setEditable: function(editable) { this.node.readOnly = !editable; } }); diff --git a/js/htk/field/select.js b/js/htk/field/select.js index 2ffa6788..9b1f788f 100644 --- a/js/htk/field/select.js +++ b/js/htk/field/select.js @@ -1,8 +1,7 @@ -var ColumnText = require ('../column/text'); +var ColumnText = require('../column/text'); -module.exports = new Class -({ +module.exports = new Class({ Extends: Htk.Field ,Implements: Db.Iterator ,Tag: 'htk-combo' @@ -10,49 +9,44 @@ module.exports = new Class { /** * The model associated to this form. - **/ + */ model: { type: Db.Model - ,set: function (x) - { - this.link ({_model: x}, {'status-changed-after': this._onModelChange}); - this._onModelChange (); + ,set: function(x) { + this.link({_model: x}, {'status-changed-after': this._onModelChange}); + this._onModelChange(); } - ,get: function () - { + ,get: function() { return this._model; } }, /** * The row where the form positioned, has -1 if the row is unselected. - **/ + */ row: { type: Number - ,set: function (x) - { + ,set: function(x) { if (!this._model || this._model.numRows <= x || x < -1) x = -1; if (x == this._row) return; this._row = x; - this.iterChanged (); + this.iterChanged(); } - ,get: function () - { + ,get: function() { return this._row; } }, /** * The number of rows in the form. - **/ + */ numRows: { type: Number - ,get: function () - { + ,get: function() { if (this._model) return this._model.numRows; @@ -61,43 +55,38 @@ module.exports = new Class }, /** * Checks if the form data is ready. - **/ + */ ready: { type: Boolean - ,get: function () - { + ,get: function() { return this._model && this._model.ready; } }, /** * Checks if the form data is ready. - **/ + */ placeholder: { type: String - ,set: function (x) - { + ,set: function(x) { this._placeholder = x; - this._refreshShowText (x); + this._refreshShowText(x); } - ,get: function () - { + ,get: function() { return this._placeholder; } }, /** * Wether to allow null values. - **/ + */ notNull: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._notNull = x; } - ,get: function () - { + ,get: function() { return this._notNull; } } @@ -112,75 +101,75 @@ module.exports = new Class ,_notNull: true ,_webkitRefresh: false - ,render: function () - { - var button = this.createRoot ('button'); + ,render: function() { + const button = this.createRoot('button'); button.type = 'button'; button.className = 'htk-select input'; - button.addEventListener ('mousedown', this._onButtonMouseDown.bind (this)); + button.addEventListener('mousedown', this._onButtonMouseDown.bind(this)); + + this.label = this.createElement('span'); + button.appendChild(this.label); + + const dropDown = new Htk.Icon({ + name: 'expand_more' + }); + button.appendChild(dropDown.node); } - ,on: function (id, callback, instance) - { - switch (id) - { + ,on: function(id, callback, instance) { + switch (id) { case 'click': case 'mousedown': case 'focusout': - this.node.addEventListener (id, - callback.bind (instance, this)); + this.node.addEventListener(id, + callback.bind(instance, this)); break; default: - this.parent (id, callback, instance); + this.parent(id, callback, instance); } } - ,_setRow: function (row) - { + ,_setRow: function(row) { this._row = row; - this._refreshShowText (); - this.iterChanged (); + this._refreshShowText(); + this.iterChanged(); } - ,_onButtonMouseDown: function (e) - { - if (this._popup) - { - this._popup.hide (); + ,_onButtonMouseDown: function(e) { + if (this._popup) { + this._popup.hide(); return; } var model = this._model; - var menu = this.createElement ('div'); + var menu = this.createElement('div'); menu.className = 'htk-select-menu'; - var grid = new Htk.Grid ({showHeader: false}); - menu.appendChild (grid.node); + var grid = new Htk.Grid({showHeader: false}); + menu.appendChild(grid.node); var gridNode = grid.node; - gridNode.addEventListener ('click', this._onGridClicked.bind (this, grid)); + gridNode.addEventListener('click', this._onGridClicked.bind(this, grid)); - var column = new ColumnText ({columnIndex: this.showColumnIndex}); - grid.appendColumn (column); + var column = new ColumnText({columnIndex: this.showColumnIndex}); + grid.appendColumn(column); grid.model = model; - var popup = this._popup = new Htk.Popup ({childNode: menu}); - popup.on ('closed', this._onPopupClose.bind (this)); - popup.show (this.node); + var popup = this._popup = new Htk.Popup({childNode: menu}); + popup.on('closed', this._onPopupClose.bind(this)); + popup.show(this.node); - this.signalEmit ('menu-show'); + this.signalEmit('menu-show'); - e.stopPropagation (); + e.stopPropagation(); } - ,_onGridClicked: function (grid, e) - { + ,_onGridClicked: function(grid, e) { var target = e.target; var parentNode = target.parentNode; - while (parentNode !== grid.tbody) - { + while (parentNode !== grid.tbody) { target = parentNode; parentNode = parentNode.parentNode; } @@ -189,29 +178,27 @@ module.exports = new Class var row = target.rowIndex - 1; if (row >= 0) - value = this._model.getByIndex (row, this.valueColumnIndex); + value = this._model.getByIndex(row, this.valueColumnIndex); else value = null; - this._setRow (row); - this.valueChanged (value); - this._popup.hide (); + this._setRow(row); + this.valueChanged(value); + this._popup.hide(); - e.stopPropagation (); + e.stopPropagation(); } - ,_onPopupClose: function () - { + ,_onPopupClose: function() { this._popup = null; - this.signalEmit ('menu-hide'); + this.signalEmit('menu-hide'); } - ,_refreshShowText: function () - { + ,_refreshShowText: function() { var model = this._model; if (this._row !== -1) - var showText = model.getByIndex (this._row, this.showColumnIndex); + var showText = model.getByIndex(this._row, this.showColumnIndex); else if (model && model.status === Db.Model.Status.LOADING) var showText = _('Loading...'); else if (this._placeholder) @@ -219,45 +206,39 @@ module.exports = new Class else var showText = ''; - Vn.Node.setText (this.node, showText); + Vn.Node.setText(this.label, showText); } - ,_onModelChange: function () - { + ,_onModelChange: function() { var model = this._model; - this.signalEmit ('status-changed'); + this.signalEmit('status-changed'); if (this._popup) - this._popup.reset (); + this._popup.reset(); - if (model && model.ready) - { - this._selectOption (); - this.signalEmit ('ready'); - } - else - this._setRow (-1); + if (model && model.ready) { + this._selectOption(); + this.signalEmit('ready'); + } else + this._setRow(-1); } - ,setEditable: function (editable) - { + ,setEditable: function(editable) { this.node.disabled = !editable; } - ,_selectOption: function () - { + ,_selectOption: function() { var row; if (this._model && this._model.ready) - row = this._model.searchByIndex (this.valueColumnIndex, this._value); + row = this._model.searchByIndex(this.valueColumnIndex, this._value); else row = -1; - this._setRow (row); + this._setRow(row); } - ,putValue: function (value) - { - this._selectOption (); + ,putValue: function(value) { + this._selectOption(); } }); diff --git a/js/htk/style/classes.scss b/js/htk/style/classes.scss index c3f913f3..c29384c7 100644 --- a/js/htk/style/classes.scss +++ b/js/htk/style/classes.scss @@ -9,12 +9,12 @@ background-color: white; } %clickable { - cursor: pointer; - transition: background-color 250ms ease-out; + cursor: pointer; + transition: background-color 250ms ease-out; - &:hover, - &:focus { - background-color: $color-hover-cd; - outline: none; - } + &:hover, + &:focus { + background-color: $color-hover-cd; + outline: none; + } } diff --git a/js/htk/style/main.scss b/js/htk/style/main.scss index cd31d7c0..058ab157 100644 --- a/js/htk/style/main.scss +++ b/js/htk/style/main.scss @@ -2,6 +2,22 @@ @import "variables"; @import "classes"; +/* Icon */ + +.htk-icon {} + +/* Button */ + +.htk-button { + display: flex; + align-items: center; + gap: 8px; + + & > .htk-icon { + display: block; + } +} + /* Grid */ .htk-grid { @@ -10,7 +26,7 @@ & > thead > tr, & > tfoot > tr { - background-color: #8cc63f; + background-color: $color-primary; vertical-align: middle; height: 3em; } @@ -98,18 +114,25 @@ th.cell-radio { text-align: center; } td.cell-button { - max-width: 1em; + max-width: 20px; text-align: center; } td.cell-button > button, td.cell-button > a { - display: inline-block; + @extend %clickable; + display: block; + height: 44px; + width: 44px; margin: 0 auto; - padding: .5em; + border-radius: 50%; + padding: 10px; border: none; background-color: transparent; - border-radius: .1em; box-sizing: border-box; + + & > .htk-icon { + display: block; + } } td.cell-button > button:hover, td.cell-button > a:hover { @@ -134,52 +157,64 @@ td.cell-image .htk-image { /* Select */ +.htk-select, +.htk-date-chooser { + display: flex; + align-items: center; + font-weight: normal; + + & > span { + flex: 1; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + & > .htk-icon { + flex: none; + color: #666; + } +} .htk-select { width: 100%; - height: 2em; - text-align: left; } .htk-select-menu { height: 100%; max-height: 80em; overflow: auto; min-width: 14em; -} -.htk-select-menu tbody > tr { - border-top: none; - height: 2.5em; -} -.htk-select-menu td.message { - padding: 1em; -} -.htk-select-menu tr:hover { - background-color: rgba(1, 1, 1, 0.1); - cursor: pointer; -} -.htk-select-menu td { - max-width: 11em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -/* Icon */ - -.htk-icon {} + tbody > tr { + border-top: none; + height: 2.5em; + } + td.message { + padding: 1em; + } + tr:hover { + background-color: rgba(1, 1, 1, 0.1); + cursor: pointer; + } + td { + max-width: 11em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} /* List */ .htk-list { - .item { + a.item, + .item.clickable { @extend %clickable; + } + .item { padding: 20px; border-bottom: 1px solid #DDD; display: flex; align-items: center; - &:hover { - background-color: rgba(1, 1, 1, 0.05); - } & > .side { flex: none; } @@ -198,6 +233,7 @@ td.cell-image .htk-image { & > .actions { flex: none; display: none; + align-items: center; & > .htk-button { margin: 0; @@ -212,28 +248,13 @@ td.cell-image .htk-image { } } .item:hover > .actions { - display: block; + display: flex; } .item:last-child { border-bottom: none; } } -/* Button */ - -.htk-button { - display: flex; - align-items: center; - border-radius: 22px; - font-weight: bold; - gap: 8px; - padding: 0 10px; - - & > .htk-icon { - display: block; - } -} - /* Calendar */ .htk-calendar { @@ -306,21 +327,25 @@ td.cell-image .htk-image { margin: 0 auto; color: #555; } - div.disabled { - color: #bbb; - } - div.today { - font-weight: bold; - color: black; - } - div.selected { - color: white; - background-color: #8cc63f; - } - div.enabled:hover { - cursor: pointer; - background-color: rgba(140, 198, 63, 0.8); - color: white; + div { + &.disabled { + color: #bbb; + } + &.today { + font-weight: bold; + color: black; + } + &.selected { + color: white; + background-color: $color-primary; + } + &.enabled { + @extend %clickable; + + &:hover { + background-color: rgba(140, 198, 63, 0.8); + } + } } } @@ -329,43 +354,46 @@ td.cell-image .htk-image { .htk-image { position: relative; overflow: hidden; -} -.htk-image.clickable:hover { - cursor: pointer; - opacity: 0.85; -} -.htk-image > img { - display: block; - height: 100%; - width: 100%; -} -.htk-image > button { - position: absolute; - top: 0; - left: 0; - margin: 0; - padding: .15em; - display: none; -} -.htk-image:hover > button { - display: block; -} -.htk-image > button > img { - display: block; - height: 1.2em; - height: 1.2em; + + &.clickable:hover { + cursor: pointer; + opacity: 0.85; + } + & > img { + display: block; + height: 100%; + width: 100%; + } + & > button { + position: absolute; + top: 0; + left: 0; + margin: 0; + padding: .15em; + display: none; + } + &:hover > button { + display: block; + } + & > button > img { + display: block; + height: 1.2em; + height: 1.2em; + } } /* Full image */ -.htk-full-image img { - display: block; - cursor: pointer; -} -.htk-full-image .htk-spinner { - background-color: #FFF; - margin: .6em; - display: block; +.htk-full-image { + img { + display: block; + cursor: pointer; + } + .htk-spinner { + background-color: #FFF; + margin: .6em; + display: block; + } } /* Image editor */ @@ -374,31 +402,33 @@ td.cell-image .htk-image { width: 18em; margin: 0 auto; padding: 1.5em; -} -.htk-image-editor h2 { - color: white; - background-color: #009688; - text-align: left; - font-size: 1.3em; - line-height: 1.7em; - font-weight: normal; - padding: 0.6em 0.8em; - margin: 0; -} -.htk-image-editor iframe { - display: none; -} -.htk-image-editor .footer { - margin-top: 2em; -} -.htk-image-editor .footer > .htk-spinner { - padding-right: 1.2em; - height: 1.3em; - width: 1.3em; -} -.htk-image-editor .footer > .htk-spinner, -.htk-image-editor .footer > input { - float: right; + + h2 { + color: white; + background-color: #009688; + text-align: left; + font-size: 1.3em; + line-height: 1.7em; + font-weight: normal; + padding: 0.6em 0.8em; + margin: 0; + } + iframe { + display: none; + } + .footer { + margin-top: 2em; + + & > .htk-spinner { + padding-right: 1.2em; + height: 1.3em; + width: 1.3em; + } + & > .htk-spinner, + & > input { + float: right; + } + } } /* Toast */ @@ -415,38 +445,40 @@ td.cell-image .htk-image { overflow: auto; max-height: 40em; overflow: visible; -} -.htk-toast > div { - margin: .5em 0; - padding: .5em 2%; - border-radius: 0.1em; - box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.6); - width: 96%; - opacity: 0; - transform: translateZ(0) translateY(-1em); - -webkit-transform: translateZ(0) translateY(-1em); + & > div { + margin: .5em 0; + padding: .5em 2%; + border-radius: 0.1em; + box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.6); + width: 96%; + + opacity: 0; + transform: translateZ(0) translateY(-1em); + -webkit-transform: translateZ(0) translateY(-1em); + + transition-property: opacity, transform; + transition-duration: 200ms; + transition-timing-function: ease-out; - transition-property: opacity, transform; - transition-duration: 200ms; - transition-timing-function: ease-out; -} -.htk-toast > div.show { - opacity: 1; - transform: translateZ(0) translateY(0em); - -webkit-transform: translateZ(0) translateY(0em); -} -.htk-toast > .message { - background-color: #BBFFBB; - color: #363; -} -.htk-toast > .warning { - background-color: #FFE0B2; - color: #C30; -} -.htk-toast > .error { - background-color: #FFCDD2; - color: #A00; + &.show { + opacity: 1; + transform: translateZ(0) translateY(0em); + -webkit-transform: translateZ(0) translateY(0em); + } + } + & > .message { + background-color: #BBFFBB; + color: #363; + } + & > .warning { + background-color: #FFE0B2; + color: #C30; + } + & > .error { + background-color: #FFCDD2; + color: #A00; + } } /* Popup */ @@ -471,15 +503,16 @@ td.cell-image .htk-image { border-radius: 10px; box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.6); box-sizing: content-box; -} -.htk-popup.modal { - position: absolute; - font-size: 1.2em; - top: 50%; - left: 50%; -} -.htk-popup > * { - border-radius: 0.1em; + + &.modal { + position: absolute; + font-size: 1.2em; + top: 50%; + left: 50%; + } + & > * { + border-radius: 0.1em; + } } /* Dialog */ @@ -489,23 +522,24 @@ td.cell-image .htk-image { max-width: 20em; font-weight: normal; color: #555; -} -.htk-dialog p { - margin: 0; -} -.htk-dialog img { - float: left; - height: 3em; - margin-top: 0; - margin-right: 1em; -} -.htk-dialog p { - padding: 0; -} -.htk-dialog .button-bar > button { - float: right; - margin-left: 1em; - margin-top: .5em; + + p { + margin: 0; + } + img { + float: left; + height: 3em; + margin-top: 0; + margin-right: 1em; + } + p { + padding: 0; + } + .button-bar > button { + float: right; + margin-left: 1em; + margin-top: .5em; + } } /* Assistant */ @@ -595,30 +629,36 @@ td.cell-image .htk-image { /* Search entry */ .htk-search-entry { + display: flex; + align-items: center; + gap: 10px; background-color: white; - height: 2.8em; - border-radius: 1.4em; - padding: 0 1.4em; -} -.htk-search-entry > * { - display: inline-block; - vertical-align: middle; -} -.htk-search-entry > img { - margin: 0; - height: 1.5em; - margin-right: .6em; -} -.htk-search-entry > .entry { - margin: 0; - border: none; - width: 8em; - box-shadow: none; - padding-right: 0; - padding-left: 0; -} -.htk-search-entry > .entry:focus { - background-color: initial; + height: 40px; + border-radius: 20px; + padding: 0 15px; + overflow: hidden; + + & > * { + display: inline-block; + vertical-align: middle; + } + & > .htk-icon { + display: block; + margin: 0; + color: gray; + } + & > .entry { + margin: 0; + border: none; + width: 100px; + box-shadow: none; + padding-right: 0; + padding-left: 0; + height: inherit; + } + & > .entry:focus { + background-color: initial; + } } /* Spinner */ @@ -628,23 +668,24 @@ td.cell-image .htk-image { height: 1.8em; position: relative; display: inline-block; -} -.htk-spinner > .spinner { - left: 0; - position: absolute; - width: inherit; - height: inherit; - box-sizing: border-box; - border-radius: 50%; - border: .3em solid transparent; - border-top-color: #666; - border-left-color: #666; - animation: spinner 1s linear infinite; - -webkit-animation: spinner 1s linear infinite; -} -.htk-spinner.dark > .spinner { - border-top-color: white; - border-left-color: white; + + & > .spinner { + left: 0; + position: absolute; + width: inherit; + height: inherit; + box-sizing: border-box; + border-radius: 50%; + border: 2px solid transparent; + border-top-color: #666; + border-left-color: #666; + animation: spinner 1s linear infinite; + -webkit-animation: spinner 1s linear infinite; + } + &.dark > .spinner { + border-top-color: white; + border-left-color: white; + } } @keyframes spinner { to {transform: rotate(360deg);} diff --git a/js/htk/style/variables.scss b/js/htk/style/variables.scss index acd48645..848254cb 100644 --- a/js/htk/style/variables.scss +++ b/js/htk/style/variables.scss @@ -1,3 +1,3 @@ $color-primary: #8cc63f; -$color-hover-cd: rgba(255, 255, 255, .1); +$color-hover-cd: rgba(0, 0, 0, .05); -- 2.40.1 From 614038470d75234efe327d588250e2cd5250c004 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Thu, 26 May 2022 08:08:31 +0200 Subject: [PATCH 08/10] Checkpoint --- forms/account/address-list/style.css | 11 - forms/account/address-list/ui.xml | 2 +- forms/account/address/style.css | 8 - forms/account/address/ui.xml | 110 +++--- forms/account/conf/conf.js | 1 + forms/account/conf/style.css | 14 - forms/account/conf/ui.xml | 20 +- forms/admin/access-log/style.css | 23 +- forms/admin/access-log/ui.xml | 62 ++-- forms/admin/connections/style.css | 11 +- forms/admin/connections/ui.xml | 84 +++-- forms/admin/items/style.css | 10 - forms/admin/items/ui.xml | 101 +++--- forms/admin/links/style.css | 20 +- forms/admin/links/ui.xml | 6 +- forms/admin/photos/photos.js | 23 +- forms/admin/photos/style.css | 8 - forms/admin/photos/ui.xml | 2 +- forms/admin/users/style.css | 18 +- forms/admin/users/ui.xml | 82 +++-- forms/admin/visits/style.css | 11 +- forms/admin/visits/ui.xml | 47 +-- forms/agencies/packages/style.css | 9 - forms/agencies/packages/ui.xml | 2 +- forms/agencies/provinces/style.css | 9 - forms/agencies/provinces/ui.xml | 4 +- forms/cms/about/style.css | 48 +-- forms/cms/about/ui.xml | 2 +- forms/cms/contact/style.css | 33 +- forms/cms/contact/ui.xml | 87 +++-- forms/cms/home/style.css | 8 +- forms/cms/training/locale/ca.yml | 1 - forms/cms/training/locale/en.yml | 1 - forms/cms/training/locale/es.yml | 1 - forms/cms/training/locale/fr.yml | 1 - forms/cms/training/locale/pt.yml | 1 - forms/cms/training/style.css | 59 ---- forms/cms/training/training.js | 5 - forms/cms/training/ui.xml | 41 --- forms/cms/why/style.css | 26 +- forms/cms/why/ui.xml | 26 +- forms/ecomerce/basket/basket.js | 13 +- forms/ecomerce/basket/style.css | 23 +- forms/ecomerce/basket/ui.xml | 14 +- forms/ecomerce/catalog/style.css | 252 +++++--------- forms/ecomerce/catalog/ui.xml | 15 +- forms/ecomerce/checkout/style.css | 12 +- forms/ecomerce/checkout/ui.xml | 274 +++++++-------- forms/ecomerce/confirm/style.css | 83 ++--- forms/ecomerce/confirm/ui.xml | 332 +++++++++--------- forms/ecomerce/invoices/style.css | 7 - forms/ecomerce/invoices/ui.xml | 8 +- forms/ecomerce/orders/style.css | 8 - forms/ecomerce/orders/ui.xml | 45 +-- forms/ecomerce/ticket/style.css | 9 - forms/ecomerce/ticket/ui.xml | 12 +- forms/news/new/style.css | 15 - forms/news/new/ui.xml | 48 ++- forms/news/news/style.css | 11 - forms/news/news/ui.xml | 82 +++-- forms/reports/items-form/style.css | 19 -- forms/reports/items-form/ui.xml | 66 ++-- forms/reports/shelves/style.css | 8 - forms/reports/shelves/ui.xml | 180 +++++----- js/db/calc-sum.js | 2 +- js/db/calc.js | 10 +- js/db/form.js | 8 +- js/db/param.js | 6 +- js/db/query.js | 10 +- js/db/result.js | 10 +- js/hedera/form.js | 2 +- js/hedera/gui.js | 10 +- js/hedera/gui.scss | 207 ++++++------ js/hedera/gui.xml | 13 +- js/hedera/report.js | 2 +- js/hedera/style.scss | 13 +- js/htk/column.js | 43 +-- js/htk/column/date.js | 22 +- js/htk/column/image.js | 22 +- js/htk/column/link.js | 15 +- js/htk/column/spin.js | 43 +-- js/htk/column/text.js | 41 +-- js/htk/dialog.js | 8 +- js/htk/field.js | 6 +- js/htk/field/image.js | 12 +- js/htk/field/label.js | 22 +- js/htk/field/text.js | 20 +- js/htk/full-image.js | 66 ++-- js/htk/grid.js | 6 +- js/htk/htk.js | 3 +- js/htk/image-editor.js | 4 +- js/htk/popup.js | 155 ++++----- js/htk/style/{main.scss => components.scss} | 6 +- js/htk/style/index.scss | 7 + js/htk/style/spacing.scss | 355 ++++++++++++++++++++ js/htk/style/text.scss | 70 ++++ js/htk/style/variables.scss | 20 ++ js/htk/style/width.scss | 26 ++ js/htk/toast.js | 122 +++---- js/sql/batch.js | 2 +- js/sql/delete.js | 11 +- js/sql/dml.js | 2 +- js/sql/expr.js | 4 +- js/sql/field.js | 7 +- js/sql/filter-item.js | 4 +- js/sql/filter.js | 2 +- js/sql/function.js | 2 +- js/sql/holder.js | 11 +- js/sql/insert.js | 2 +- js/sql/list.js | 2 +- js/sql/multi-stmt.js | 2 +- js/sql/object.js | 8 +- js/sql/operation.js | 2 +- js/sql/search-tags.js | 19 +- js/sql/select.js | 2 +- js/sql/stmt.js | 2 +- js/sql/string.js | 2 +- js/sql/table.js | 7 +- js/sql/target.js | 4 +- js/sql/update.js | 2 +- js/sql/value.js | 6 +- js/vn/cookie.js | 2 +- js/vn/date.js | 2 +- js/vn/hash-listener.js | 9 +- js/vn/hash.js | 12 +- js/vn/json-connection.js | 14 +- js/vn/json-exception.js | 5 +- js/vn/locale.js | 2 +- js/vn/object.js | 14 +- js/vn/param.js | 2 +- js/vn/url.js | 6 +- js/vn/vn.js | 22 +- rest/core/query.php | 4 +- rest/core/restore-password.php | 2 +- rest/core/set-password.php | 2 +- rest/image/image.php | 4 +- rest/tpv/confirm-mail.php | 2 +- rest/tpv/confirm-post.php | 2 +- rest/tpv/confirm-soap.php | 2 +- rest/tpv/tpv.php | 2 +- web/app.php | 4 +- web/json-exception.php | 2 +- web/json-reply.php | 2 +- web/json-request.php | 2 +- web/jwt.php | 6 +- web/rest-request.php | 2 +- 146 files changed, 2031 insertions(+), 2163 deletions(-) delete mode 100644 forms/cms/training/locale/ca.yml delete mode 100644 forms/cms/training/locale/en.yml delete mode 100644 forms/cms/training/locale/es.yml delete mode 100644 forms/cms/training/locale/fr.yml delete mode 100644 forms/cms/training/locale/pt.yml delete mode 100644 forms/cms/training/style.css delete mode 100644 forms/cms/training/training.js delete mode 100644 forms/cms/training/ui.xml rename js/htk/style/{main.scss => components.scss} (99%) create mode 100644 js/htk/style/index.scss create mode 100644 js/htk/style/spacing.scss create mode 100644 js/htk/style/text.scss create mode 100644 js/htk/style/width.scss diff --git a/forms/account/address-list/style.css b/forms/account/address-list/style.css index 2b28eb1f..92b791ba 100644 --- a/forms/account/address-list/style.css +++ b/forms/account/address-list/style.css @@ -1,15 +1,4 @@ -.address-list { - padding: 1em; -} -.address-list .box { - max-width: 420px; -} -.address-list .form { - margin: 0 auto; - max-width: 25em; - padding: 2em; -} .address-list .htk-list .side { padding-right: 16px; } diff --git a/forms/account/address-list/ui.xml b/forms/account/address-list/ui.xml index 03d9f753..9232a038 100644 --- a/forms/account/address-list/ui.xml +++ b/forms/account/address-list/ui.xml @@ -28,7 +28,7 @@ on-click="this.onAddAddressClick()"/> </div> <div id="form" class="address-list"> - <div class="box"> + <div class="box vn-w-sm"> <htk-radio-group id="default-address" column="defaultAddressFk" diff --git a/forms/account/address/style.css b/forms/account/address/style.css index 258faa66..e69de29b 100644 --- a/forms/account/address/style.css +++ b/forms/account/address/style.css @@ -1,8 +0,0 @@ - -.address { - padding: 1em; -} -.address .box { - max-width: 420px; - padding: 3em; -} diff --git a/forms/account/address/ui.xml b/forms/account/address/ui.xml index b0aef267..6a1b5aff 100644 --- a/forms/account/address/ui.xml +++ b/forms/account/address/ui.xml @@ -36,61 +36,61 @@ on-click="this.onAcceptClick()"/> </div> <div id="form" class="address"> - <div class="box"> - <div class="form"> - <h2><t>AddEditAddress</t></h2> - <div class="form-group"> - <htk-entry - placeholder="_Name" - column="nickname" form="iter"/> - </div> - <div class="form-group"> - <htk-entry - placeholder="_Address" - column="street" form="iter"/> - </div> - <div class="form-group"> - <htk-entry - placeholder="_City" - column="city" form="iter"/> - </div> - <div class="form-group"> - <htk-entry - placeholder="_ZipCode" - column="postalCode" form="iter"/> - </div> - <div class="form-group"> - <htk-combo - placeholder="_Country"> - <db-param - id="country" - property="param" - form="iter" - column="countryFk" - one-way="true"/> - <db-model property="model"> - SELECT id, country FROM vn.country - ORDER BY country - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <htk-combo - placeholder="_Province" - column="provinceFk" - form="iter"> - <db-model property="model"> - SELECT id, name FROM vn.province - WHERE countryFk = #country - ORDER BY name - <sql-batch property="batch"> - <custom> - <item name="country" param="country"/> - </custom> - </sql-batch> - </db-model> - </htk-combo> - </div> + <div class="form box vn-w-sm vn-pa-lg"> + <h5 class="vn-mb-md"> + <t>AddEditAddress</t> + </h5> + <div class="form-group"> + <htk-entry + placeholder="_Name" + column="nickname" form="iter"/> + </div> + <div class="form-group"> + <htk-entry + placeholder="_Address" + column="street" form="iter"/> + </div> + <div class="form-group"> + <htk-entry + placeholder="_City" + column="city" form="iter"/> + </div> + <div class="form-group"> + <htk-entry + placeholder="_ZipCode" + column="postalCode" form="iter"/> + </div> + <div class="form-group"> + <htk-combo + placeholder="_Country"> + <db-param + id="country" + property="param" + form="iter" + column="countryFk" + one-way="true"/> + <db-model property="model"> + SELECT id, country FROM vn.country + ORDER BY country + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <htk-combo + placeholder="_Province" + column="provinceFk" + form="iter"> + <db-model property="model"> + SELECT id, name FROM vn.province + WHERE countryFk = #country + ORDER BY name + <sql-batch property="batch"> + <custom> + <item name="country" param="country"/> + </custom> + </sql-batch> + </db-model> + </htk-combo> </div> </div> </div> diff --git a/forms/account/conf/conf.js b/forms/account/conf/conf.js index 4e82f0d4..5a7c37d1 100644 --- a/forms/account/conf/conf.js +++ b/forms/account/conf/conf.js @@ -4,6 +4,7 @@ Hedera.Conf = new Class({ ,activate: function() { this.$('user-model').setInfo('c', 'myClient', 'hedera'); + this.$('user-model').setInfo('u', 'myUser', 'account'); if (this.hash.get('verificationToken')) this.onPassChangeClick(); diff --git a/forms/account/conf/style.css b/forms/account/conf/style.css index 9efb1a03..13dbdcf8 100644 --- a/forms/account/conf/style.css +++ b/forms/account/conf/style.css @@ -1,18 +1,4 @@ -.conf { - padding: 1em; -} -.conf .box { - max-width: 420px; - padding: 3em; -} -.pass-change { - max-width: 15em; - padding: 2.5em; -} -.pass-info { - width: 15em; -} .pass-info ul { list-style-type: none; } diff --git a/forms/account/conf/ui.xml b/forms/account/conf/ui.xml index c21aa80f..d8f3119a 100644 --- a/forms/account/conf/ui.xml +++ b/forms/account/conf/ui.xml @@ -34,9 +34,10 @@ on-click="this.onPassChangeClick()"/> </div> <div id="form" class="conf"> - <div class="box"> - <div class="form"> - <h2><t>Personal information</t></h2> + <div class="form box vn-w-sm vn-pa-lg"> + <h5 class="vn-mb-md"> + <t>Personal information</t> + </h5> <div class="form-group"> <htk-entry placeholder="_Username" @@ -76,14 +77,15 @@ </label> </div> </div> - </div> </div> <htk-popup id="change-password" modal="true"> - <div property="child-node" class="htk-dialog pass-change"> + <div property="child-node" class="htk-dialog vn-w-xs vn-pa-lg"> <div class="form"> - <h2><t>Change password</t></h2> + <h5 class="vn-mb-md"> + <t>Change password</t> + </h5> <input id="old-password" type="password" @@ -111,10 +113,10 @@ <htk-popup id="password-info" modal="true"> - <div property="child-node" class="htk-dialog pass-info"> - <h3> + <div property="child-node" class="htk-dialog pass-info vn-w-xs vn-pa-lg"> + <h5 class="vn-mb-md"> <t>Password requirements</t> - </h3> + </h5> <ul> <li> <htk-text form="password-form" column="length"/> diff --git a/forms/admin/access-log/style.css b/forms/admin/access-log/style.css index 604b0438..b9edd1c4 100644 --- a/forms/admin/access-log/style.css +++ b/forms/admin/access-log/style.css @@ -1,13 +1,4 @@ -.access-log { - padding: 1em; -} -.access-log .box { - max-width: 25em; - margin: 0 auto; -} -.access-log .form { - padding: 2em; -} + .access-log .form > p { font-size: 1.2em; margin: .1em 0; @@ -15,15 +6,7 @@ /* List */ -.access-log .list { - margin-top: 1em; -} -.access-log .item { - display: block; - padding: 1em; - border-bottom: 1px solid #DDD; -} -.access-log .item > p { - margin: .1em 0; +.access-log .htk-list { + margin-top: 16px; } diff --git a/forms/admin/access-log/ui.xml b/forms/admin/access-log/ui.xml index 9747a1ff..eb3b8661 100644 --- a/forms/admin/access-log/ui.xml +++ b/forms/admin/access-log/ui.xml @@ -22,7 +22,7 @@ <h1><t>AccessLog</t></h1> </div> <div id="form" class="access-log"> - <div class="box"> + <div class="box vn-w-xs vn-pa-lg"> <div class="form"> <p>#{{$.userForm.id}}</p> <p>{{$.userForm.nickname}}</p> @@ -30,39 +30,35 @@ <p>{{$.userForm.phone}}</p> </div> </div> - <div class="list box"> - <div> - <htk-repeater form-id="iter"> - <db-model property="model"> - <custom> - SELECT u.stamp, a.platform, a.browser, a.version, a.javascript, a.cookies - FROM visitUser u - JOIN visitAccess c ON c.id = u.accessFk - JOIN visitAgent a ON a.id = c.agentFk - WHERE u.userFk = #user - ORDER BY u.stamp DESC - LIMIT 8 - </custom> - <sql-batch property="batch"> - <custom> - <item name="user" param="user"/> - </custom> - </sql-batch> - </db-model> + <htk-repeater form-id="iter" class="box vn-w-xs htk-list vn-mt-md"> + <db-model property="model"> + <custom> + SELECT u.stamp, a.platform, a.browser, a.version, a.javascript, a.cookies + FROM visitUser u + JOIN visitAccess c ON c.id = u.accessFk + JOIN visitAgent a ON a.id = c.agentFk + WHERE u.userFk = #user + ORDER BY u.stamp DESC + LIMIT 8 + </custom> + <sql-batch property="batch"> <custom> - <div class="item"> - <p> - {{Vn.Value.format(iter.stamp, _('%a, %e %b %Y at %T'))}} - </p> - <p> - {{iter.platform}} - - {{iter.browser}} - {{iter.version}} - </p> - </div> + <item name="user" param="user"/> </custom> - </htk-repeater> - </div> - </div> + </sql-batch> + </db-model> + <custom> + <div class="item"> + <div class="content"> + <p> + {{Vn.Value.format(iter.stamp, _('%a, %e %b %Y at %T'))}} + </p> + <p> + {{iter.platform}} - {{iter.browser}} {{iter.version}} + </p> + </div> + </div> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/admin/connections/style.css b/forms/admin/connections/style.css index c004ce98..b7ac80ac 100644 --- a/forms/admin/connections/style.css +++ b/forms/admin/connections/style.css @@ -1,13 +1,6 @@ -.connections { - padding: 1em; -} -.connections .box { - max-width: 420px; - margin: 0 auto; -} + .action-bar .connections-sum { padding: .4em; background-color: #1e88e5; - border-radius: 0.1em; - box-shadow: 0 0 0.4em rgba(255, 255, 255, .1); + border-radius: .1em; } diff --git a/forms/admin/connections/ui.xml b/forms/admin/connections/ui.xml index 790c7e00..6482b5c4 100644 --- a/forms/admin/connections/ui.xml +++ b/forms/admin/connections/ui.xml @@ -18,50 +18,48 @@ </div> </div> <div id="form" class="connections"> - <div class="box"> - <htk-repeater form-id="iter" class="htk-list"> - <db-model - property="model" - id="sessions" - on-status-changed="this.onModelStatusChange()"> - <custom> - SELECT vu.userFk userId, vu.stamp, u.nickname, s.lastUpdate, - a.platform, a.browser, a.version, u.name user - FROM userSession s - JOIN visitUser vu ON vu.id = s.userVisitFk - JOIN visitAccess ac ON ac.id = vu.accessFk - JOIN visitAgent a ON a.id = ac.agentFk - JOIN visit v ON v.id = a.visitFk - JOIN account.user u ON u.id = vu.userFk - ORDER BY lastUpdate DESC - </custom> - </db-model> + <htk-repeater form-id="iter" class="box htk-list vn-w-xs"> + <db-model + property="model" + id="sessions" + on-status-changed="this.onModelStatusChange()"> <custom> - <a class="item" - href="{{`#!form=admin/access-log&user=${iter.userId}`}}" - title="_Access log"> - <div class="content"> - <p class="important"> - {{iter.nickname}} - </p> - <p> - {{Vn.Value.format(iter.stamp, '%a, %T')}} - - {{Vn.Value.format(iter.lastUpdate, '%T')}} - </p> - <p> - {{iter.platform}} - {{iter.browser}} {{iter.version}} - </p> - </div> - <div class="actions" - on-click="$event.preventDefault()"> - <htk-button - tip="_Supplant user" - icon="supervisor_account" - on-click="this.onChangeUserClick(iter.user)"/> - </div> - </a> + SELECT vu.userFk userId, vu.stamp, u.nickname, s.lastUpdate, + a.platform, a.browser, a.version, u.name user + FROM userSession s + JOIN visitUser vu ON vu.id = s.userVisitFk + JOIN visitAccess ac ON ac.id = vu.accessFk + JOIN visitAgent a ON a.id = ac.agentFk + JOIN visit v ON v.id = a.visitFk + JOIN account.user u ON u.id = vu.userFk + ORDER BY lastUpdate DESC </custom> - </htk-repeater> - </div> + </db-model> + <custom> + <a class="item" + href="{{`#!form=admin/access-log&user=${iter.userId}`}}" + title="_Access log"> + <div class="content"> + <p class="important"> + {{iter.nickname}} + </p> + <p> + {{Vn.Value.format(iter.stamp, '%a, %T')}} - + {{Vn.Value.format(iter.lastUpdate, '%T')}} + </p> + <p> + {{iter.platform}} - {{iter.browser}} {{iter.version}} + </p> + </div> + <div class="actions" + on-click="$event.preventDefault()"> + <htk-button + tip="_Supplant user" + icon="supervisor_account" + on-click="this.onChangeUserClick(iter.user)"/> + </div> + </a> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/admin/items/style.css b/forms/admin/items/style.css index 72a14708..f79beab4 100644 --- a/forms/admin/items/style.css +++ b/forms/admin/items/style.css @@ -1,15 +1,5 @@ -.items { - padding: 1em; -} -.items .box { - max-width: 420px; - margin: 0 auto; -} - -/* Row */ .items .item .photo { - margin-right: 1em; border-radius: 50%; height: 80px; width: 80px; diff --git a/forms/admin/items/ui.xml b/forms/admin/items/ui.xml index 47a23a77..974c60f0 100644 --- a/forms/admin/items/ui.xml +++ b/forms/admin/items/ui.xml @@ -10,56 +10,57 @@ <htk-search-entry param="filter"/> </div> <div id="form" class="items"> - <div class="rows box"> - <htk-repeater form-id="iter" class="htk-list" empty-message="_Enter a search term"> - <db-model property="model" id="items"> - SELECT i.id, i.longName, i.size, i.category, - i.value5, i.value6, i.value7, - i.image, im.updated - FROM vn.item i - LEFT JOIN image im - ON im.collectionFk = 'catalog' - AND im.name = i.image - WHERE i.longName LIKE CONCAT('%', #filter, '%') - OR i.id = #filter - ORDER BY i.longName LIMIT 50 - <sql-batch property="batch"> - <custom> - <item name="filter" param="filter"/> - </custom> - </sql-batch> - </db-model> - <custom> - <div class="item"> - <div class="side"> - <htk-image - form="iter" - column="image" - stamp-column="updated" - class="photo" - directory="catalog" - subdir="200x200" - full-dir="1600x900" - editable="true" - conn="conn"/> - </div> - <div class="content"> - <p class="important"> - {{iter.longName}} - </p> - <p class="tags"> - {{iter.value5}} {{iter.value6}} {{iter.value7}} - </p> - <p> - {{iter.id}} - </p> - <p> - {{iter.image}} - </p> - </div> + <htk-repeater + class="htk-list rows box vn-w-xs" + form-id="iter" + empty-message="_Enter a search term"> + <db-model property="model" id="items"> + SELECT i.id, i.longName, i.size, i.category, + i.value5, i.value6, i.value7, + i.image, im.updated + FROM vn.item i + LEFT JOIN image im + ON im.collectionFk = 'catalog' + AND im.name = i.image + WHERE i.longName LIKE CONCAT('%', #filter, '%') + OR i.id = #filter + ORDER BY i.longName LIMIT 50 + <sql-batch property="batch"> + <custom> + <item name="filter" param="filter"/> + </custom> + </sql-batch> + </db-model> + <custom> + <div class="item"> + <div class="side vn-mr-md"> + <htk-image + form="iter" + column="image" + stamp-column="updated" + class="photo" + directory="catalog" + subdir="200x200" + full-dir="1600x900" + editable="true" + conn="conn"/> </div> - </custom> - </htk-repeater> - </div> + <div class="content"> + <p class="important"> + {{iter.longName}} + </p> + <p class="tags"> + {{iter.value5}} {{iter.value6}} {{iter.value7}} + </p> + <p> + {{iter.id}} + </p> + <p> + {{iter.image}} + </p> + </div> + </div> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/admin/links/style.css b/forms/admin/links/style.css index 6718e605..4ec8fa2c 100644 --- a/forms/admin/links/style.css +++ b/forms/admin/links/style.css @@ -1,19 +1,10 @@ -.cpanel { - padding: 1em; -} -.cpanel .box { - max-width: 420px; -} - -/* Items */ - .cpanel .items > div { - max-width: 800px; + max-width: 900px; display: flex; flex-wrap: wrap; justify-content: center; - gap: 12px; + gap: 16px; margin: 0 auto; } .cpanel .item { @@ -21,7 +12,7 @@ flex-direction: column; align-items: center; margin: 0; - width: 120px; + width: 140px; padding: 15px; text-align: center; transition: background-color 250ms ease-out; @@ -42,7 +33,7 @@ max-width: 60px; padding: 0; } -.cpanel .item > h3 { +.cpanel .item > h6 { flex: none; margin: .1em 0; font-size: .9rem; @@ -50,11 +41,10 @@ white-space: nowrap; overflow: hidden; } -.cpanel .item > .secondary { +.cpanel .item > .text-secondary { flex: none; margin: 0; font-size: .8rem; - color: #666; height: 40px; overflow: hidden; } diff --git a/forms/admin/links/ui.xml b/forms/admin/links/ui.xml index 5c300e82..c5e166c9 100644 --- a/forms/admin/links/ui.xml +++ b/forms/admin/links/ui.xml @@ -18,10 +18,10 @@ value="{{iter.image}}" directory="link" subdir="full"/> - <h3> + <h6> {{iter.name}} - </h3> - <p class="secondary"> + </h6> + <p class="text-secondary"> {{iter.description}} </p> </a> diff --git a/forms/admin/photos/photos.js b/forms/admin/photos/photos.js index 7130d0a0..ecffa24a 100644 --- a/forms/admin/photos/photos.js +++ b/forms/admin/photos/photos.js @@ -6,8 +6,7 @@ var Status = { ,UPLOADED : 3 }; -Hedera.Photos = new Class -({ +Hedera.Photos = new Class({ Extends: Hedera.Form ,filesData: [] ,uploadCount: 0 @@ -54,21 +53,22 @@ Hedera.Photos = new Class statusNode.className = 'status'; li.appendChild(statusNode); - var button = new Htk.Button({ - tip: 'Remove', - icon: 'delete' - }); - button.on('click', this.onFileRemove, this); - li.appendChild(button.node); - var fileData = { li: li, file: file, name: name, statusNode: statusNode }; + + var button = new Htk.Button({ + tip: 'Remove', + icon: 'delete' + }); + button.node.addEventListener('click', + () => this.onFileRemove(fileData)); + li.appendChild(button.node); + this.filesData.push(fileData); - button.value = fileData; this.$('file-list').appendChild(li); this.setImageStatus(fileData, Status.NONE, 'add', _('Pending upload')); @@ -151,8 +151,7 @@ Hedera.Photos = new Class statusNode.title = title ? title : ''; } - ,onFileRemove: function(button) { - var fileData = button.value; + ,onFileRemove: function(fileData) { this.$('file-list').removeChild(fileData.li); for (var i = 0; i < this.filesData.length; i++) diff --git a/forms/admin/photos/style.css b/forms/admin/photos/style.css index 7a2234d6..3167f4ed 100644 --- a/forms/admin/photos/style.css +++ b/forms/admin/photos/style.css @@ -1,12 +1,4 @@ -.photos { - padding: 1em; -} -.photos .box { - max-width: 420px; - padding: 3em; -} - /* Dropzone */ .photos .dropzone { diff --git a/forms/admin/photos/ui.xml b/forms/admin/photos/ui.xml index 4b5910fd..4a4bb83c 100644 --- a/forms/admin/photos/ui.xml +++ b/forms/admin/photos/ui.xml @@ -3,7 +3,7 @@ <h1><t>Images</t></h1> </div> <div id="form" class="photos"> - <div class="box"> + <div class="box form vn-w-sm vn-pa-lg"> <div class="form-group"> <label><t>Collection</t></label> <htk-combo id="schema"> diff --git a/forms/admin/users/style.css b/forms/admin/users/style.css index 63dc1d54..586a0d0e 100644 --- a/forms/admin/users/style.css +++ b/forms/admin/users/style.css @@ -1,10 +1,4 @@ -.users { - padding: 1em; -} -.users .box { - max-width: 420px; - margin: 0 auto; -} + .users-box.item > .actions { display: flex; } @@ -12,14 +6,6 @@ color: white; background-color: #F66; border-radius: .2em; - padding: .2em; - margin: .3em; + padding: .3em; font-size: .8em; } - -/* Topbar */ - -.action-bar .htk-search-entry { - margin: .8em .6em; -} - diff --git a/forms/admin/users/ui.xml b/forms/admin/users/ui.xml index 195e4b5c..64e8ac00 100644 --- a/forms/admin/users/ui.xml +++ b/forms/admin/users/ui.xml @@ -11,49 +11,47 @@ param="user-name"/> </div> <div id="form" class="users"> - <div class="box"> - <htk-repeater form-id="iter" renderer="rendererFunc" class="htk-list"> - <db-model property="model"> - <custom> - SELECT u.id, u.name, u.nickname, u.active - FROM account.user u - WHERE u.name LIKE CONCAT('%', #user, '%') - OR u.nickname LIKE CONCAT('%', #user, '%') - OR u.id = #user - ORDER BY u.name LIMIT 200 - </custom> - <sql-batch property="batch"> - <custom> - <item name="user" param="user-name"/> - </custom> - </sql-batch> - </db-model> + <htk-repeater form-id="iter" renderer="rendererFunc" class="htk-list box vn-w-xs"> + <db-model property="model"> <custom> - <a class="users-box item" - href="{{`#!form=admin/access-log&user=${iter.id}`}}" - title="_Access log"> - <div class="content"> - <p class="important"> - {{iter.nickname}} - </p> - <p> - #{{iter.id}} - {{iter.name}} - </p> - </div> - <div class="actions" - on-click="$event.preventDefault()"> - <span id="disabled" class="disabled"> - <t>Disabled</t> - </span> - <htk-button - id="impersonate" - icon="supervisor_account" - tip="_Impersonate user" - on-click="this.onChangeUserClick(iter.name)"/> - </div> - </a> + SELECT u.id, u.name, u.nickname, u.active + FROM account.user u + WHERE u.name LIKE CONCAT('%', #user, '%') + OR u.nickname LIKE CONCAT('%', #user, '%') + OR u.id = #user + ORDER BY u.name LIMIT 200 </custom> - </htk-repeater> - </div> + <sql-batch property="batch"> + <custom> + <item name="user" param="user-name"/> + </custom> + </sql-batch> + </db-model> + <custom> + <a class="users-box item" + href="{{`#!form=admin/access-log&user=${iter.id}`}}" + title="_Access log"> + <div class="content"> + <p class="important"> + {{iter.nickname}} + </p> + <p> + #{{iter.id}} - {{iter.name}} + </p> + </div> + <div class="actions" + on-click="$event.preventDefault()"> + <span id="disabled" class="disabled"> + <t>Disabled</t> + </span> + <htk-button + id="impersonate" + icon="supervisor_account" + tip="_Impersonate user" + on-click="this.onChangeUserClick(iter.name)"/> + </div> + </a> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/admin/visits/style.css b/forms/admin/visits/style.css index 91407404..e8dae95f 100644 --- a/forms/admin/visits/style.css +++ b/forms/admin/visits/style.css @@ -1,17 +1,10 @@ -.visits { - padding: 1em; -} + .visits .box { - max-width: 420px; - margin-bottom: 1em; + margin-bottom: 16px; } .visits .box:last-child { margin-bottom: 0; } -.visits .summary { - padding: 3em; - box-sizing: border-box; -} .visits .summary p { font-size: 1.4em; margin: 0; diff --git a/forms/admin/visits/ui.xml b/forms/admin/visits/ui.xml index 7a4967c5..c0b32d53 100644 --- a/forms/admin/visits/ui.xml +++ b/forms/admin/visits/ui.xml @@ -13,8 +13,8 @@ on-click="this.onSessionsClick()"/> </div> <div id="form" class="visits"> - <div class="summary box"> - <div class="form"> + <div class="vn-w-xs"> + <div class="form vn-pa-lg box"> <div class="form-group"> <label><t>From</t></label> <htk-date-chooser> @@ -28,27 +28,28 @@ </htk-date-chooser> </div> </div> - </div> - <div class="summary box"> - <p> - <htk-text> - <db-calc-sum - property="param" - model="visits" - column-name="visits"/> - </htk-text> - <t>visits</t>, - <htk-text> - <db-calc-sum - property="param" - model="visits" - column-name="newVisits"/> - </htk-text> - <t>news</t> - </p> - </div> - <div class="list box"> - <htk-repeater form-id="iter" empty-message="_Select date interval" class="htk-list"> + <div class="summary vn-pa-lg box"> + <p> + <htk-text> + <db-calc-sum + property="param" + model="visits" + column-name="visits"/> + </htk-text> + <t>visits</t>, + <htk-text> + <db-calc-sum + property="param" + model="visits" + column-name="newVisits"/> + </htk-text> + <t>news</t> + </p> + </div> + <htk-repeater + class="box htk-list" + form-id="iter" + empty-message="_Select date interval"> <db-model property="model" id="visits"> <custom> SELECT browser, diff --git a/forms/agencies/packages/style.css b/forms/agencies/packages/style.css index abd928e6..e69de29b 100644 --- a/forms/agencies/packages/style.css +++ b/forms/agencies/packages/style.css @@ -1,9 +0,0 @@ -.packages -{ - padding: 1em; -} -.packages .box -{ - max-width: 600px; - margin: 0 auto; -} diff --git a/forms/agencies/packages/ui.xml b/forms/agencies/packages/ui.xml index 126c120a..866bab74 100644 --- a/forms/agencies/packages/ui.xml +++ b/forms/agencies/packages/ui.xml @@ -3,7 +3,7 @@ <h1><t>ListByAgency</t></h1> </div> <div id="form" class="packages"> - <div class="box"> + <div class="box vn-w-sm"> <htk-grid> <db-model property="model"> <custom> diff --git a/forms/agencies/provinces/style.css b/forms/agencies/provinces/style.css index 292bb3e4..e69de29b 100644 --- a/forms/agencies/provinces/style.css +++ b/forms/agencies/provinces/style.css @@ -1,9 +0,0 @@ -.provinces -{ - padding: 1em; -} -.provinces .box -{ - max-width: 600px; - margin: 0 auto; -} diff --git a/forms/agencies/provinces/ui.xml b/forms/agencies/provinces/ui.xml index 5094002a..d9a3bcbf 100644 --- a/forms/agencies/provinces/ui.xml +++ b/forms/agencies/provinces/ui.xml @@ -6,12 +6,12 @@ <div id="title"> <h1><t>ByProvince</t></h1> </div> -<div id="form" class="provinces"> +<div id="form" class="provinces vn-w-sm"> <div class="box"> <htk-grid> <db-model property="model"> <custom> - CALL vn2008.desglose_volume (#agency) + CALL vn2008.desglose_volume(#agency) </custom> <sql-batch property="batch"> <custom> diff --git a/forms/cms/about/style.css b/forms/cms/about/style.css index 6d7a41eb..7c948ca7 100644 --- a/forms/cms/about/style.css +++ b/forms/cms/about/style.css @@ -1,15 +1,5 @@ -.about -{ - padding: 1em; -} -.about .cols -{ - max-width: 85em; - margin: 0 auto; -} -@media screen and (min-width: 1000px) /* and (max-width: 1399px) */ -{ +@media screen and (min-width: 1000px) /* and (max-width: 1399px) */ { .about .cols { column-count: 2; @@ -17,8 +7,7 @@ -webkit-column-count: 2; } }/* -@media screen and (min-width: 1400px) -{ +@media screen and (min-width: 1400px) { .about .cols { column-count: 3; @@ -26,8 +15,7 @@ -webkit-column-count: 3; } } -@media screen and (min-width: 2000px) -{ +@media screen and (min-width: 2000px) { .about .cols { column-count: 4; @@ -35,39 +23,33 @@ -webkit-column-count: 4; } }*/ -.about .box -{ +.about .box { margin-bottom: 1em; padding: 2em; } -.about h1 -{ +.about h1 { padding: 0; margin: 0; font-weight: normal; font-size: 1.6em; } -.about h2 -{ +.about h2 { text-align: center; font-size: 1.2em; font-weight: normal; margin: 1em; } -.about h3 -{ +.about h3 { text-align: center; font-size: 1.2em; font-weight: normal; padding: 1em; color: #00796B; } -.about p -{ +.about p { margin: 1em 0; } -.about p.summary -{ +.about p.summary { max-width: 26em; text-align: center; background-color: #FF8; @@ -79,8 +61,7 @@ /* Images */ -.about img -{ +.about img { max-width: 90%; text-align: center; padding: 1em; @@ -90,16 +71,13 @@ .about img[alt="producers"], .about img[alt="4_control"], .about img[alt="dealer"], -.about img[alt="goods_transport"] -{ +.about img[alt="goods_transport"] { float: right; } -.about img[alt="2_control"] -{ +.about img[alt="2_control"] { float: left; } -.about img[alt="glass"] -{ +.about img[alt="glass"] { display: inline; padding: 0; padding-left: 0.9em; diff --git a/forms/cms/about/ui.xml b/forms/cms/about/ui.xml index 79628032..3dff0745 100644 --- a/forms/cms/about/ui.xml +++ b/forms/cms/about/ui.xml @@ -3,7 +3,7 @@ <h1><t>About</t></h1> </div> <div id="form" class="about"> -<div class="cols"> +<div class="cols vn-w-lg"> <div class="box"> <h1> <t>QualityAndVariety</t> diff --git a/forms/cms/contact/style.css b/forms/cms/contact/style.css index 35b0a6b8..a330fa93 100644 --- a/forms/cms/contact/style.css +++ b/forms/cms/contact/style.css @@ -1,55 +1,38 @@ -.contact -{ - padding: 1em; -} -.contact .box -{ - max-width: 420px; - padding: 2em; -} -.contact .form -{ +.contact .form { position: relative; text-align: left; max-width: 25em; margin: 0 auto; } -.contact form -{ +.contact form { margin: 0 auto; } -.contact form p -{ +.contact form p { margin: 1em auto; display: block; margin-top: 2em; } -.contact textarea -{ +.contact textarea { height: 5em; } -.contact button -{ +.contact button { display: block; margin: 0 auto; margin-top: 1em; padding: 0.6em; } -.contact .mandatory-message -{ +.contact .mandatory-message { font-size: .9em; } /* Captcha */ -.captcha img -{ +.captcha img { vertical-align: middle; margin-left: 1em; } -.captcha input -{ +.captcha input { max-width: 8em; } diff --git a/forms/cms/contact/ui.xml b/forms/cms/contact/ui.xml index bcb3afe2..d00840ae 100644 --- a/forms/cms/contact/ui.xml +++ b/forms/cms/contact/ui.xml @@ -3,54 +3,47 @@ <h1><t>IWantCustomer</t></h1> </div> <div id="form" class="contact"> - <div class="box"> - <div class="form"> - <p> - <t>FillFormData</t> + <div class="box form vn-w-xs vn-pa-lg"> + <p><t>FillFormData</t></p> + <p><t>OrCallUs</t></p> + <form id="contact-form"> + <input type="hidden" name="srv" value="json:misc/contact"/> + <div class="form-group"> + <label><t>Name</t></label> + <input type="text" name="name"/> + </div> + <div class="form-group"> + <label><t>City</t></label> + <input type="text" name="city"/> + </div> + <div class="form-group"> + <label><t>PC</t></label> + <input type="text" name="pc"/> + </div> + <div class="form-group"> + <label><t>Phone</t></label> + <input type="text" name="phone"/> + </div> + <div class="form-group"> + <label><t>EMail</t></label> + <input type="text" name="email"/> + </div> + <div class="form-group"> + <label><t>Message</t></label> + <textarea name="message"/> + </div> + <div class="form-group captcha"> + <label><t>Anti-Spam</t></label> + <input type="text" name="captcha"/> + <img alt="Captcha" id="captcha-img"/> + </div> + <p class="mandatory-message"> + <t>AllFieldsMandatory</t> </p> - <p> - <t>OrCallUs</t> - </p> - <form - id="contact-form"> - <input type="hidden" name="srv" value="json:misc/contact"/> - <div class="form-group"> - <label><t>Name</t></label> - <input type="text" name="name"/> - </div> - <div class="form-group"> - <label><t>City</t></label> - <input type="text" name="city"/> - </div> - <div class="form-group"> - <label><t>PC</t></label> - <input type="text" name="pc"/> - </div> - <div class="form-group"> - <label><t>Phone</t></label> - <input type="text" name="phone"/> - </div> - <div class="form-group"> - <label><t>EMail</t></label> - <input type="text" name="email"/> - </div> - <div class="form-group"> - <label><t>Message</t></label> - <textarea name="message"/> - </div> - <div class="form-group captcha"> - <label><t>Anti-Spam</t></label> - <input type="text" name="captcha"/> - <img alt="Captcha" id="captcha-img"/> - </div> - <p class="mandatory-message"> - <t>AllFieldsMandatory</t> - </p> - <button class="thin"> - <t>Send</t> - </button> - </form> - </div> + <button> + <t>Send</t> + </button> + </form> </div> </div> </vn> diff --git a/forms/cms/home/style.css b/forms/cms/home/style.css index cabc2689..772bed89 100644 --- a/forms/cms/home/style.css +++ b/forms/cms/home/style.css @@ -1,4 +1,8 @@ +.home { + padding: 0 !important; +} + /* News panel */ .column { @@ -9,7 +13,7 @@ border: 1px solid white; } .action-bar button.start-order:hover { - background-color: white; + background-color: white !important; color: black; } @@ -39,7 +43,7 @@ font-size: 0.9em; color: #444; text-align: right; - margin: 0.8em 0; + margin: .8em 0; } .new-text { margin: 1.5em 0; diff --git a/forms/cms/training/locale/ca.yml b/forms/cms/training/locale/ca.yml deleted file mode 100644 index 0967ef42..00000000 --- a/forms/cms/training/locale/ca.yml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/forms/cms/training/locale/en.yml b/forms/cms/training/locale/en.yml deleted file mode 100644 index 0967ef42..00000000 --- a/forms/cms/training/locale/en.yml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/forms/cms/training/locale/es.yml b/forms/cms/training/locale/es.yml deleted file mode 100644 index 0967ef42..00000000 --- a/forms/cms/training/locale/es.yml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/forms/cms/training/locale/fr.yml b/forms/cms/training/locale/fr.yml deleted file mode 100644 index 0967ef42..00000000 --- a/forms/cms/training/locale/fr.yml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/forms/cms/training/locale/pt.yml b/forms/cms/training/locale/pt.yml deleted file mode 100644 index 0967ef42..00000000 --- a/forms/cms/training/locale/pt.yml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/forms/cms/training/style.css b/forms/cms/training/style.css deleted file mode 100644 index 150a3560..00000000 --- a/forms/cms/training/style.css +++ /dev/null @@ -1,59 +0,0 @@ - -/* News panel */ - -.column -{ - margin: .5em; - max-width: 120em; -} - -/* New */ - -.new -{ - text-align: left; - background-color: white; - color: #222; - border: none; - border-radius: 0.1em; - box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.2); - margin: .5em; -} -.new img -{ - display: block; - margin: auto; - width: 100%; -} -.new .top -{ - padding: 1.5em; - padding-bottom: 1px; -} -.new h2 -{ - font-size: 1.6em; - color: black; - font-weight: normal; - padding: 0; -} -.new-info -{ - font-size: 0.9em; - color: #444; - text-align: right; - margin: 0.8em 0; -} -.new-text -{ - margin: 1.5em 0; -} -.new-text a -{ - color: blue; - text-decoration: underline; -} -.new-text li -{ - margin: 0.4em 0; -} diff --git a/forms/cms/training/training.js b/forms/cms/training/training.js deleted file mode 100644 index adb059b7..00000000 --- a/forms/cms/training/training.js +++ /dev/null @@ -1,5 +0,0 @@ - -Hedera.Training = new Class -({ - Extends: Hedera.Form -}); diff --git a/forms/cms/training/ui.xml b/forms/cms/training/ui.xml deleted file mode 100644 index 3fecb4b3..00000000 --- a/forms/cms/training/ui.xml +++ /dev/null @@ -1,41 +0,0 @@ -<vn> -<div id="title"> - <h1><t>Training</t></h1> -</div> -<div id="form" class="training"> - <div class="column mansonry" id="news-column"> - <htk-repeater form-id="new"> - <db-model property="model"> - <custom> - SELECT title, created, text, image, id FROM news - WHERE tag = 'course' - ORDER BY priority, created DESC - </custom> - </db-model> - <custom> - <div class="masonry-box"> - <div class="new"> - <htk-image - directory="news" - subdir="full" - form="new" - column="image" - editable="false" - full-dir="full"/> - <div class="top"> - <h2><htk-text form="new" column="title"/></h2> - <p class="new-info"> - <htk-text format="_%a, %e %b %Y" form="new" column="created"/> - </p> - <div class="new-text"> - <htk-html form="new" column="text"/> - </div> - </div> - </div> - </div> - </custom> - </htk-repeater> - <div class="clear"/> - </div> -</div> -</vn> diff --git a/forms/cms/why/style.css b/forms/cms/why/style.css index c0436008..edc70906 100644 --- a/forms/cms/why/style.css +++ b/forms/cms/why/style.css @@ -1,27 +1,13 @@ -.why -{ - padding: 1em; -} -.why .box -{ - max-width: 600px; - margin: 0 auto; -} -.why ul -{ +.why ul { list-style-type: none; - padding: 0 1em; - padding-bottom: 1em; - max-width: 36em; - margin: 0 auto; + padding: 0; + margin-top: 0; } -.why li -{ - padding: 0.5em 0; +.why li { + padding-bottom: 16px; } -.why img -{ +.why img { display: block; margin: 0 auto; max-width: 95%; diff --git a/forms/cms/why/ui.xml b/forms/cms/why/ui.xml index 98bb6c9c..822cda36 100644 --- a/forms/cms/why/ui.xml +++ b/forms/cms/why/ui.xml @@ -3,20 +3,18 @@ <h1><t>AboutCompany</t></h1> </div> <div id="form" class="why"> - <div class="box"> - <div class="body"> - <ul> - <li><t>BecauseOurBigCatalog</t></li> - <li><t>BecauseThisWeb</t></li> - <li><t>BecauseOurShoppingDep</t></li> - <li><t>BecauseOrderIsEasy</t></li> - <li><t>BecauseOurPlant</t></li> - <li><t>BecauseOurSalesDep</t></li> - <li><t>BecauseOurWorkShop</t></li> - <li><t>BecauseWeHaveWhatYouNeed</t></li> - </ul> - <img src="forms/cms/why/store.png" alt="Store photo"/> - </div> + <div class="box vn-w-sm vn-pa-lg"> + <ul class="vn-mb-lg"> + <li><t>BecauseOurBigCatalog</t></li> + <li><t>BecauseThisWeb</t></li> + <li><t>BecauseOurShoppingDep</t></li> + <li><t>BecauseOrderIsEasy</t></li> + <li><t>BecauseOurPlant</t></li> + <li><t>BecauseOurSalesDep</t></li> + <li><t>BecauseOurWorkShop</t></li> + <li><t>BecauseWeHaveWhatYouNeed</t></li> + </ul> + <img src="forms/cms/why/store.png" alt="Store photo"/> </div> </div> </vn> diff --git a/forms/ecomerce/basket/basket.js b/forms/ecomerce/basket/basket.js index a4366e6a..8ee16071 100644 --- a/forms/ecomerce/basket/basket.js +++ b/forms/ecomerce/basket/basket.js @@ -1,6 +1,5 @@ -Hedera.Basket = new Class -({ +Hedera.Basket = new Class({ Extends: Hedera.Form ,open: function() { @@ -25,15 +24,7 @@ Hedera.Basket = new Class this.hash.set({form: 'ecomerce/checkout'}); } - ,onCatalogClick: function() { - this.hash.set({form: 'ecomerce/catalog'}); - } - - ,onCheckoutClick: function() { - this.hash.set({form: 'ecomerce/confirm'}); - } - - ,onDeleteClick: function(button, form) { + ,onDeleteClick: function(form) { if (confirm(_('ReallyDelete'))) form.deleteRow(); } diff --git a/forms/ecomerce/basket/style.css b/forms/ecomerce/basket/style.css index 11ba47b8..f49533d6 100644 --- a/forms/ecomerce/basket/style.css +++ b/forms/ecomerce/basket/style.css @@ -1,20 +1,5 @@ -.basket { - padding: 1em; -} -.basket .box { - max-width: 420px; - margin: 0 auto; - padding: 30px; -} -.basket .form > p { - margin: 0; - font-size: 1.4em; - color: white; - text-align: right; -} + .basket .head { - padding-bottom: 30px; - margin: 0; border-bottom: 1px solid #DDD; } .basket .head p { @@ -24,6 +9,12 @@ font-size: 1.4em; text-align: right; } +.basket .form > p { + margin: 0; + font-size: 1.4em; + color: white; + text-align: right; +} /* Lines */ diff --git a/forms/ecomerce/basket/ui.xml b/forms/ecomerce/basket/ui.xml index a9de28ac..be46122f 100644 --- a/forms/ecomerce/basket/ui.xml +++ b/forms/ecomerce/basket/ui.xml @@ -6,19 +6,19 @@ <htk-bar-button icon="settings" tip="_ConfigureOrder" - on-click="onConfigureClick"/> + on-click="this.onConfigureClick()"/> <htk-bar-button icon="local_florist" tip="_Catalog" - on-click="onCatalogClick"/> + on-click="this.hash.set({form: 'ecomerce/catalog'})"/> <htk-bar-button icon="shopping_cart_checkout" tip="_Checkout" - on-click="onCheckoutClick"/> + on-click="this.hash.set({form: 'ecomerce/confirm'})"/> </div> <div id="form" class="basket"> - <div class="box"> - <div class="head"> + <div class="box vn-w-sm vn-pa-lg"> + <div class="head vn-pb-lg"> <p> <t>Total</t> <htk-text format="%.2d€"> @@ -41,12 +41,10 @@ <custom> <div class="line"> <htk-button - form="iter" - column="id" class="delete" tip="_Remove" icon="delete" - on-click="onDeleteClick"/> + on-click="this.onDeleteClick($.iter)"/> <htk-image form="iter" column="image" diff --git a/forms/ecomerce/catalog/style.css b/forms/ecomerce/catalog/style.css index 5e6a7246..2dc15597 100644 --- a/forms/ecomerce/catalog/style.css +++ b/forms/ecomerce/catalog/style.css @@ -1,19 +1,17 @@ -.catalog -{ +.catalog { + padding: 0 !important; margin-right: 18em; } /* Topbar */ -.catalog-actions > .htk-search-entry -{ +.catalog-actions > .htk-search-entry { margin-right: .4em; } /* Right panel */ -.right-panel -{ +.right-panel { position: fixed; top: 4.4em; bottom: 0; @@ -22,8 +20,7 @@ overflow: auto; background-color: #fafafa; } -.right-panel .basket-info -{ +.right-panel .basket-info { background-color: #8cc63f; color: white; padding: 1.2em 2em; @@ -31,20 +28,17 @@ margin: 1em; text-align: center; } -.right-panel .basket-info > button -{ +.right-panel .basket-info > button { color: white; margin: 0 auto; display: block; margin-top: .4em; } -.right-panel .basket-info > button:hover -{ +.right-panel .basket-info > button:hover { background-color: white; color: #60872c; } -.right-panel .basket-info > p -{ +.right-panel .basket-info > p { margin: 0; padding: .4em 0; font-size: 1.1em; @@ -52,77 +46,64 @@ white-space: nowrap; overflow: hidden; } -.right-panel .filter -{ +.right-panel .filter { margin: 1em; } .right-panel .categories, .right-panel .filters, -.right-panel .order -{ +.right-panel .order { margin: 1.5em 0; } .right-panel .filters, -.right-panel .order -{ +.right-panel .order { display: none; } -.right-panel .realm-msg -{ +.right-panel .realm-msg { margin-top: 1em; } -.right-panel .realm-msg > h1 -{ +.right-panel .realm-msg > h5 { font-weight: normal; text-align: center; padding: 2.5em 0; color: #777; } -.right-panel h2 -{ +.right-panel h2 { font-weight: normal; color: #777; font-size: 1.1em; } -.right-panel .realms > div > div -{ +.right-panel .realms > div > div { text-align: center; } -.right-panel .realms a -{ +.right-panel .realms a { display: inline-block; width: 25%; padding: .6em; box-sizing: border-box; } -.right-panel .realms a:hover -{ +.right-panel .realms a:hover { background-color: rgba(1, 1, 1, .05); border-radius: .15em; } -.right-panel .realms a > img -{ +.right-panel .realms a > img { display: block; padding: 0; width: 100%; } .right-panel .vn-filter, -.right-panel select -{ +.right-panel select { margin: 0 auto; margin-bottom: .7em; display: block; } -.vn-filter > ul -{ +.vn-filter > ul { margin: 0; list-style-type: none; text-align: left; color: #666; padding-left: .8em; } -.vn-filter li -{ +.vn-filter li { margin: 0; margin-top: .3em; line-height: 2em; @@ -131,16 +112,17 @@ white-space: nowrap; overflow: hidden; } -.vn-filter li > button -{ +.vn-filter li > button { vertical-align: middle; text-align: center; padding: .2em; margin: 0; margin-right: .2em; } -.right-panel .filters > button -{ +.vn-filter li > button > span { + display: block; +} +.right-panel .filters > button { display: block; margin: 0 auto; margin-top: 1em; @@ -148,41 +130,34 @@ /* Items */ -.item-box -{ +.item-box { transition: background-color 200ms ease-in; } -.item-box:hover -{ +.item-box:hover { cursor: pointer; background-color: #eee; } -.item-info -{ +.item-info { position: relative; } -.item-info .second-category -{ +.item-info .second-category { font-weight: bold; color: orange; } -.item-info .third-category -{ +.item-info .third-category { font-weight: bold; color: red; } -.item-info > h2 -{ +.item-info > h2 { padding: 0; margin-bottom: .15em; font-weight: normal; font-size: 1em; text-overflow: ellipsis; overflow: hidden; - max-height: 3.8em; + max-height: 2.8em; } -.item-info > p -{ +.item-info > p { margin: 0; padding: 0; color: #777; @@ -191,24 +166,20 @@ white-space: nowrap; overflow: hidden; } -.item-info .sub-name -{ +.item-info .sub-name { text-transform: uppercase; padding: 0; margin-bottom: .2em; font-size: .9em; } -.item-info > .htk-button -{ +.item-info > .htk-button { margin: -0.3em; padding: .3em; } -.item-info > .htk-button > img -{ +.item-info > .htk-button > img { vertical-align: middle; } -.item-info .available-price -{ +.item-info .available-price { white-space: nowrap; font-size: .95em; text-align: right; @@ -216,32 +187,27 @@ column-gap: .2em; display: flex; } -.item-info .available-price > * -{ +.item-info .available-price > * { border-radius: .2em; - padding: .3em; + padding: .1em .3em; border: .1em transparent solid; background-color: white; } -.item-info .grouping -{ +.item-info .grouping { width: 2em; background-color: #ddd; } -.item-info .available -{ +.item-info .available { width: 3.3em; border-color: #bbb; color: #777; } -.item-info .price -{ +.item-info .price { width: 4em; border-color: #9cbc28; color: #748c1e; } -.tags -{ +.tags { font-size: .8em; display: table; color: #333; @@ -256,14 +222,12 @@ /* List view */ -.list-view -{ +.list-view { max-width: 420px; margin: 0 auto; padding: 1em; } -.list-view .item-box -{ +.list-view .item-box { display: block; position: relative; width: 100%; @@ -272,20 +236,17 @@ overflow: visible; border-bottom: 1px solid #DDD; } -.list-view .item-box > .htk-image -{ +.list-view .item-box > .htk-image { margin: 1em; width: 3.5em; height: 3.5em; float: left; overflow: hidden; } -.list-view .item-box > .htk-image > img -{ +.list-view .item-box > .htk-image > img { border-radius: 50%; } -.list-view .item-info -{ +.list-view .item-info { position: absolute; left: 5.5em; right: 0; @@ -294,59 +255,49 @@ margin: .8em; margin-left: 0; } -.list-view .item-info > h2 -{ +.list-view .item-info > h2 { font-size: 1em; white-space: nowrap; } -.list-view .item-info > .color -{ +.list-view .item-info > .color { display: none; } -.list-view .item-info > .htk-button -{ +.list-view .item-info > .htk-button { float: right; } -.list-view .item-info .available-price -{ +.list-view .item-info .available-price { clear: both; float: right; position:absolute; bottom: 0; right: 0; } -.list-view .item-info .tags -{ +.list-view .item-info .tags { display: block; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } -.list-view .item-info .tags > tr -{ +.list-view .item-info .tags > tr { display: inline-block; } -.list-view .item-info .tags td -{ +.list-view .item-info .tags td { display: inline-block; padding-right: .5em; } -.list-view .item-info .tags td:first-child -{ +.list-view .item-info .tags td:first-child { display: none; } /* Grid view */ -.grid-view -{ +.grid-view { padding: 1em; padding-right: .2em; padding-bottom: .4em; text-align: center; } -.grid-view .item-box -{ +.grid-view .item-box { text-align: left; position: relative; display: inline-block; @@ -357,14 +308,12 @@ height: 11em; overflow: hidden; } -.grid-view .item-box > .htk-image -{ +.grid-view .item-box > .htk-image { width: 11em; height: 100%; float: left; } -.grid-view .item-info -{ +.grid-view .item-info { position: absolute; left: 11.4em; right: 0; @@ -372,8 +321,7 @@ bottom: 0; margin: .6em; } -.grid-view .item-info .available-price -{ +.grid-view .item-info .available-price { position: absolute; bottom: 0; right: 0; @@ -389,107 +337,79 @@ /* Card */ -.card-popup -{ +.card-popup { overflow: auto; } -.item-card -{ +.item-card { font-size: .9em; width: 20em; } -.item-card .top -{ +.item-card .top { padding: 1em; } -.item-card .item-info -{ +.item-card .item-info { margin-left: 9em; height: 8em; } -.item-card .htk-image -{ +.item-card .htk-image { height: 8em; width: 8em; float: left; border-radius: .3em; } -.item-card .desc -{ +.item-card .desc { clear: both; margin-top: 1em 0; font-size: .9em; } -.item-card .lots-grid -{ +.item-card .lots-grid { border-top: 1px solid #DDD; } -.item-card .lots-grid tr -{ +.item-card .lots-grid tr { height: 3em; } -.item-card .lots-grid .cell-spin -{ +.item-card .lots-grid .cell-spin { max-width: initial; width: 3em; } -.item-card .lots-grid .price-kg -{ +.item-card .lots-grid .price-kg { font-size: .8em; color: #999; width: 1px; } -.item-card .lots-grid .cell-text -{ +.item-card .lots-grid .cell-text { max-width: initial; width: auto; } -.item-card .lots-grid .cell-button -{ +.item-card .lots-grid .cell-button { max-width: initial; width: 1em; } -.item-card .footer -{ - text-align: center; +.item-card .footer { + display: flex; + align-items: center; + justify-content: space-between; background-color: #1a1a1a; color: white; - line-height: 2em; - padding: .4em; + padding: 10px; } -.item-card .footer > button -{ - margin: 0; +.item-card .footer > button:hover { + background-color: rgba(255, 255, 255, .1); } -.item-card .erase -{ - float: left; -} -.item-card .confirm -{ - float: right; -} -.item-card .erase > img, -.item-card .confirm > img -{ +.item-card .footer > button > .htk-icon { display: block; - height: 1em; } /* Mobile */ -.catalog-actions > button.menu -{ +.catalog-actions > button.menu { display: none; - padding: 1.1em .5em; } -.catalog-actions > button.menu > img -{ - height: 1.8em; +.catalog-actions > button.menu > .htk-icon { + display: block; } -@media (max-width: 960px) -{ +@media (max-width: 960px) { .catalog-actions > button.menu { display: block; diff --git a/forms/ecomerce/catalog/ui.xml b/forms/ecomerce/catalog/ui.xml index 1a33f0a0..f6f2aa9b 100644 --- a/forms/ecomerce/catalog/ui.xml +++ b/forms/ecomerce/catalog/ui.xml @@ -108,7 +108,7 @@ <button class="menu" on-click="onShowMenuClick"> - <htk-icon name="menu"/> + <htk-icon name="menu" alt="_Menu"/> </button> </div> <div id="form" class="catalog"> @@ -213,7 +213,7 @@ </div> </div> <div id="realm-msg" class="realm-msg"> - <h1><t>Choose a realm</t></h1> + <h5><t>Choose a realm</t></h5> </div> <div id="filters" class="filters"> <h2><t>Filter by</t></h2> @@ -467,20 +467,25 @@ on-clicked="onAddLotClick"/> </htk-grid> <div class="footer"> - <button on-click="onEraseClick" title="_Erase" class="erase"> + <button + title="_Erase" + on-click="this.onEraseClick()" + class="erase"> <htk-icon name="delete" theme="dark" alt="_Erase"/> </button> <htk-text id="amount"/> - <button on-click="onConfirmClick" title="_Confirm" class="confirm"> + <button + title="_Confirm" + on-click="this.onConfirmClick()" + class="confirm"> <htk-icon name="done" theme="dark" alt="_Confirm"/> </button> - <div class="clear"/> </div> </div> </htk-popup> diff --git a/forms/ecomerce/checkout/style.css b/forms/ecomerce/checkout/style.css index 22dbaaa3..61885aad 100644 --- a/forms/ecomerce/checkout/style.css +++ b/forms/ecomerce/checkout/style.css @@ -1,14 +1,6 @@ -.checkout { - padding: 1em; - max-width: 600px; - margin: 0 auto; -} + .checkout .bar { - margin-bottom: 1em; -} -.checkout .form { - max-width: 600px; - padding: 4em 2em; + margin-bottom: 16px; } /* Step */ diff --git a/forms/ecomerce/checkout/ui.xml b/forms/ecomerce/checkout/ui.xml index 69eecd9a..ec6db8da 100644 --- a/forms/ecomerce/checkout/ui.xml +++ b/forms/ecomerce/checkout/ui.xml @@ -68,144 +68,146 @@ on-click="onCancelClick"/> </div> <div id="form" class="checkout"> - <div class="box bar"> - <htk-assistant-bar - id="assistant-bar" - assistant="assistant"/> - </div> - <div class="box"> - <div class="form"> - <htk-assistant id="assistant" - endFunc="onConfirmClick"> - <htk-step - name="method" - validate-func="methodValidate"> - <h2><t>DeliveryOrPickupQuestion</t></h2> - <div class="answers radio"> - <htk-radio-group - id="rg-method" - param="method" - on-changed="onMethodChange"/> - <div> - <label> - <htk-radio radio-group="rg-method" value="AGENCY"/> - <t>Receive the order</t> - </label> + <div class="vn-w-sm"> + <div class="box bar"> + <htk-assistant-bar + id="assistant-bar" + assistant="assistant"/> + </div> + <div class="box vn-px-lg vn-py-xl"> + <div class="form"> + <htk-assistant id="assistant" + endFunc="onConfirmClick"> + <htk-step + name="method" + validate-func="methodValidate"> + <h2><t>DeliveryOrPickupQuestion</t></h2> + <div class="answers radio"> + <htk-radio-group + id="rg-method" + param="method" + on-changed="onMethodChange"/> + <div> + <label> + <htk-radio radio-group="rg-method" value="AGENCY"/> + <t>Receive the order</t> + </label> + </div> + <div> + <label> + <htk-radio radio-group="rg-method" value="PICKUP"/> + <t>PickupInStore</t> + </label> + </div> </div> - <div> - <label> - <htk-radio radio-group="rg-method" value="PICKUP"/> - <t>PickupInStore</t> - </label> + </htk-step> + <htk-step + name="date" + show-func="dateShow" + validate-func="dateValidate"> + <h2 id="date-question"/> + <div class="answers"> + <htk-calendar + id="calendar" + class="thin-calendar" + param="date" + restrict-func="calendarRestrict" + on-changed="onFieldChange"/> </div> - </div> - </htk-step> - <htk-step - name="date" - show-func="dateShow" - validate-func="dateValidate"> - <h2 id="date-question"/> - <div class="answers"> - <htk-calendar - id="calendar" - class="thin-calendar" - param="date" - restrict-func="calendarRestrict" - on-changed="onFieldChange"/> - </div> - </htk-step> - <htk-step - name="address" - show-func="addressShow" - validate-func="addressValidate"> - <h2 id="address-question"/> - <div class="answers target"> - <db-form id="address-form" model="addresses"/> - <htk-repeater - id="repeater" - form-id="iter" - on-change="onAddressChange" - renderer="addressRenderer"> - <db-model property="model" id="addresses"> - SELECT a.id, a.nickname, p.name province, a.city, a.street, a.isActive, c.country - FROM myAddress a - LEFT JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - WHERE a.isActive - </db-model> - <custom> - <div class="address" id="address"> - <p class="consignee"> - <htk-text form="iter" column="nickname"/> - </p> - <p> - <htk-text form="iter" column="street"/> - </p> - </div> - </custom> - </htk-repeater> - </div> - </htk-step> - <htk-step - name="agency" - show-func="agencyShow" - validate-func="agencyValidate"> - <h2><t>AgencyQuestion</t></h2> - <div class="answers target"> - <htk-combo - id="agency-combo" - param="agency" - on-changed="onFieldChange" - model="agencies"/> - </div> - </htk-step> - <htk-step - name="pickup" - show-func="pickupShow" - validate-func="pickupValidate"> - <h2><t>PickupWarehouseQuestion</t></h2> - <div class="answers target"> - <htk-combo - id="warehouse-combo" - param="agency" - on-changed="onFieldChange" - model="warehouses"/> - </div> - </htk-step> - <htk-step - name="confirm-delivery"> - <h2><t>ConfirmData</t></h2> - <div class="answers target"> - <p> - <t>Arrival</t> - <htk-text format="%D" param="date"/> - </p> - <p> - <htk-text form="address-form" column="street"/> - </p> - <p> - <t>Agency</t> - <htk-text form="agency-combo" column="description"/> - </p> - <div class="clear"/> - </div> - </htk-step> - <htk-step - name="confirm-pickup"> - <h2><t>ConfirmData</t></h2> - <div class="answers target"> - <p> - <t>Pickup</t> - <htk-text format="%D" param="date"/> - </p> - <p> - <t>Warehouse</t> - <htk-text form="warehouse-combo" column="description"/> - </p> - <div class="clear"/> - </div> - </htk-step> - </htk-assistant> + </htk-step> + <htk-step + name="address" + show-func="addressShow" + validate-func="addressValidate"> + <h2 id="address-question"/> + <div class="answers target"> + <db-form id="address-form" model="addresses"/> + <htk-repeater + id="repeater" + form-id="iter" + on-change="onAddressChange" + renderer="addressRenderer"> + <db-model property="model" id="addresses"> + SELECT a.id, a.nickname, p.name province, a.city, a.street, a.isActive, c.country + FROM myAddress a + LEFT JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + WHERE a.isActive + </db-model> + <custom> + <div class="address" id="address"> + <p class="consignee"> + <htk-text form="iter" column="nickname"/> + </p> + <p> + <htk-text form="iter" column="street"/> + </p> + </div> + </custom> + </htk-repeater> + </div> + </htk-step> + <htk-step + name="agency" + show-func="agencyShow" + validate-func="agencyValidate"> + <h2><t>AgencyQuestion</t></h2> + <div class="answers target"> + <htk-combo + id="agency-combo" + param="agency" + on-changed="onFieldChange" + model="agencies"/> + </div> + </htk-step> + <htk-step + name="pickup" + show-func="pickupShow" + validate-func="pickupValidate"> + <h2><t>PickupWarehouseQuestion</t></h2> + <div class="answers target"> + <htk-combo + id="warehouse-combo" + param="agency" + on-changed="onFieldChange" + model="warehouses"/> + </div> + </htk-step> + <htk-step + name="confirm-delivery"> + <h2><t>ConfirmData</t></h2> + <div class="answers target"> + <p> + <t>Arrival</t> + <htk-text format="%D" param="date"/> + </p> + <p> + <htk-text form="address-form" column="street"/> + </p> + <p> + <t>Agency</t> + <htk-text form="agency-combo" column="description"/> + </p> + <div class="clear"/> + </div> + </htk-step> + <htk-step + name="confirm-pickup"> + <h2><t>ConfirmData</t></h2> + <div class="answers target"> + <p> + <t>Pickup</t> + <htk-text format="%D" param="date"/> + </p> + <p> + <t>Warehouse</t> + <htk-text form="warehouse-combo" column="description"/> + </p> + <div class="clear"/> + </div> + </htk-step> + </htk-assistant> + </div> </div> </div> </div> diff --git a/forms/ecomerce/confirm/style.css b/forms/ecomerce/confirm/style.css index 02758016..0f39b3f9 100644 --- a/forms/ecomerce/confirm/style.css +++ b/forms/ecomerce/confirm/style.css @@ -1,24 +1,11 @@ -.confirm -{ - padding: 1em; - max-width: 420px; - margin: 0 auto; - color: #555; + +.confirm .summary { + margin-bottom: 16px; } -.confirm .box -{ - padding: 2.2em 2.5em; -} -.confirm .summary -{ - margin-bottom: 1em; -} -.confirm .address -{ +.confirm .address { margin-top: .8em; } -.confirm h2 -{ +.confirm h2 { font-size: 1.1em; font-weight: normal; padding: 0; @@ -26,61 +13,48 @@ margin-bottom: .5em; color: #333; } -.confirm button -{ +.confirm button { font-size: 1.4em; } -.confirm p -{ +.confirm p { margin: .2em 0; } -.confirm .modify-order -{ +.confirm .modify-order { float: left; } -.confirm .confirm-order -{ +.confirm .confirm-order { float: right; } -.confirm .payment > div -{ +.confirm .payment > div { margin-bottom: 1.4em; } -.confirm .payment > .button-bar -{ +.confirm .payment > .button-bar { margin: 0; margin-top: 1.8em; } /* Table */ -.confirm .debt-info -{ +.confirm .debt-info { padding: 0; } -.confirm .debt-info > table -{ +.confirm .debt-info > table { border-collapse: collapse; } -.confirm td -{ +.confirm td { padding: .15em 0; } -.confirm .sum-total > td -{ +.confirm .sum-total > td { border-top: solid 1px #DDD; font-weight: bold; } -.confirm .currency -{ +.confirm .currency { text-align: right; } -.confirm .credit-info -{ +.confirm .credit-info { display: none; } -.confirm .exceeded-info -{ +.confirm .exceeded-info { display: none; color: #E53935; } @@ -88,34 +62,27 @@ /* Pay */ .confirm .amount-selector, -.confirm .pay-methods > div -{ +.confirm .pay-methods > div { display: none; } -.confirm .pay-methods > div -{ +.confirm .pay-methods > div { margin: .3em 0; } -.confirm .pay-methods > div > label > input[type=radio] -{ +.confirm .pay-methods > div > label > input[type=radio] { margin: 0; margin-right: .5em; vertical-align: middle; } -.confirm .pay-methods > div > div -{ +.confirm .pay-methods > div > div { padding: .5em 1.5em; display: none; } -.confirm .pay-methods > div.selected > div -{ +.confirm .pay-methods > div.selected > div { display: block; } -.confirm .transfer-account -{ +.confirm .transfer-account { margin-top: .5em; } -.confirm .transfer-account > p -{ +.confirm .transfer-account > p { margin: .1em 0; } diff --git a/forms/ecomerce/confirm/ui.xml b/forms/ecomerce/confirm/ui.xml index 75f9ae71..740aadea 100644 --- a/forms/ecomerce/confirm/ui.xml +++ b/forms/ecomerce/confirm/ui.xml @@ -30,181 +30,183 @@ <h1><t>Order summary</t></h1> </div> <div id="form" class="confirm"> - <div class="box summary"> - <div> - <div class="delivery"> - <p> - <t>Delivery at</t> - <htk-text format="%D" form="order-form" column="sent"/> - </p> - <p> - <span id="method"><t>Agency</t></span> - <htk-text form="order-form" column="agency"/> - </p> - </div> - <div id="address" class="address"> - <p> - <htk-text form="order-form" column="nickname"/> - </p> - <p> - <htk-text form="order-form" column="street"/> - </p> - <p> - <htk-text form="order-form" column="postalCode"/>, - <htk-text form="order-form" column="city"/> - </p> - </div> - </div> - </div> - <div class="box payment"> - <div> - <table class="debt-info"> - <tbody> - <tr> - <td> - <t>Previous balance</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" id="debt"/> - </td> - </tr> - <tr> - <td> - <t>Order total</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" form="order-form" column="taxableBase"/> - </td> - </tr> - <tr> - <td> - <t>Order VAT</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" form="order-form" column="tax"/> - </td> - </tr> - <tr class="total-debt sum-total"> - <td> - <t>Total debt</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" id="total-debt"/> - </td> - </tr> - <tr id="credit-info" class="credit-info"> - <td> - <t>Credit</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" form="order-form" column="credit"/> - </td> - </tr> - <tr id="exceeded-info" class="exceeded-info sum-total"> - <td> - <t>Exceeded credit</t> - </td> - <td class="currency"> - <htk-text format="%.2d€" id="credit-excess"/> - </td> - </tr> - </tbody> - </table> - </div> - <div id="amount-selector" class="amount-selector"> - <h2> - <t>Amount to pay</t> - </h2> - <div class="radio"> - <htk-radio-group - id="pay-amount"/> - <div> - <htk-radio radio-group="pay-amount" value="ALL"/> - <label> - <t>Total debt</t>, - <htk-text format="%.2d€" id="total-amount"/> - </label> + <div class="vn-w-sm"> + <div class="box vn-pa-lg summary"> + <div> + <div class="delivery"> + <p> + <t>Delivery at</t> + <htk-text format="%D" form="order-form" column="sent"/> + </p> + <p> + <span id="method"><t>Agency</t></span> + <htk-text form="order-form" column="agency"/> + </p> </div> - <div> - <htk-radio radio-group="pay-amount" value="EXCEEDED"/> - <label> - <t>Exceeded credit</t>, - <htk-text format="%.2d€" id="excess-amount"/> - </label> + <div id="address" class="address"> + <p> + <htk-text form="order-form" column="nickname"/> + </p> + <p> + <htk-text form="order-form" column="street"/> + </p> + <p> + <htk-text form="order-form" column="postalCode"/>, + <htk-text form="order-form" column="city"/> + </p> </div> </div> </div> - <div> - <h2> - <t>Pay method</t> - </h2> - <div class="pay-methods"> - <htk-radio-group - id="pay-method" - on-changed="onPayMethodChange"/> - <div id="balance-method"> - <label> - <htk-radio radio-group="pay-method" value="BALANCE"/> - <t>Use my balance</t> - </label> + <div class="box vn-pa-lg payment"> + <div> + <table class="debt-info"> + <tbody> + <tr> + <td> + <t>Previous balance</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" id="debt"/> + </td> + </tr> + <tr> + <td> + <t>Order total</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" form="order-form" column="taxableBase"/> + </td> + </tr> + <tr> + <td> + <t>Order VAT</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" form="order-form" column="tax"/> + </td> + </tr> + <tr class="total-debt sum-total"> + <td> + <t>Total debt</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" id="total-debt"/> + </td> + </tr> + <tr id="credit-info" class="credit-info"> + <td> + <t>Credit</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" form="order-form" column="credit"/> + </td> + </tr> + <tr id="exceeded-info" class="exceeded-info sum-total"> + <td> + <t>Exceeded credit</t> + </td> + <td class="currency"> + <htk-text format="%.2d€" id="credit-excess"/> + </td> + </tr> + </tbody> + </table> + </div> + <div id="amount-selector" class="amount-selector"> + <h2> + <t>Amount to pay</t> + </h2> + <div class="radio"> + <htk-radio-group + id="pay-amount"/> <div> - <t>You have a favorable balance.</t> + <htk-radio radio-group="pay-amount" value="ALL"/> + <label> + <t>Total debt</t>, + <htk-text format="%.2d€" id="total-amount"/> + </label> </div> - </div> - <div id="credit-method"> - <label> - <htk-radio radio-group="pay-method" value="CREDIT"/> - <t>Use my credit</t> - </label> <div> - <t>You have a favorable credit.</t> + <htk-radio radio-group="pay-amount" value="EXCEEDED"/> + <label> + <t>Exceeded credit</t>, + <htk-text format="%.2d€" id="excess-amount"/> + </label> </div> </div> - <div id="card-method"> - <label> - <htk-radio radio-group="pay-method" value="CARD"/> - <t>Credit card</t> - </label> - <div> - <t>You will be redirected to the payment.</t> - </div> - </div> - <div id="transfer-method"> - <label> - <htk-radio radio-group="pay-method" value="TRANSFER"/> - <t>Bank Transfer</t> - </label> - <div> - <t>Make a transfer to one account.</t> - <htk-repeater form-id="iter"> - <db-model property="model"> - SELECT name, iban FROM mainAccountBank - </db-model> - <custom> - <div class="transfer-account"> - <p><htk-text form="iter" column="name"/></p> - <p><htk-text form="iter" column="iban"/></p> - </div> - </custom> - </htk-repeater> - </div> - </div> - <div id="later-method"> - <label> - <htk-radio radio-group="pay-method" value="LATER"/> - <t>Pay later</t> - </label> - </div> </div> - </div> - <div class="button-bar"> - <button on-click="onModifyClick" id="modify" class="thin modify-order"> - <t>Modify</t> - </button> - <button on-click="onConfirmClick" id="confirm" class="thin confirm-order"> - <t>Confirm</t> - </button> - <div class="clear"/> + <div> + <h2> + <t>Pay method</t> + </h2> + <div class="pay-methods"> + <htk-radio-group + id="pay-method" + on-changed="onPayMethodChange"/> + <div id="balance-method"> + <label> + <htk-radio radio-group="pay-method" value="BALANCE"/> + <t>Use my balance</t> + </label> + <div> + <t>You have a favorable balance.</t> + </div> + </div> + <div id="credit-method"> + <label> + <htk-radio radio-group="pay-method" value="CREDIT"/> + <t>Use my credit</t> + </label> + <div> + <t>You have a favorable credit.</t> + </div> + </div> + <div id="card-method"> + <label> + <htk-radio radio-group="pay-method" value="CARD"/> + <t>Credit card</t> + </label> + <div> + <t>You will be redirected to the payment.</t> + </div> + </div> + <div id="transfer-method"> + <label> + <htk-radio radio-group="pay-method" value="TRANSFER"/> + <t>Bank Transfer</t> + </label> + <div> + <t>Make a transfer to one account.</t> + <htk-repeater form-id="iter"> + <db-model property="model"> + SELECT name, iban FROM mainAccountBank + </db-model> + <custom> + <div class="transfer-account"> + <p><htk-text form="iter" column="name"/></p> + <p><htk-text form="iter" column="iban"/></p> + </div> + </custom> + </htk-repeater> + </div> + </div> + <div id="later-method"> + <label> + <htk-radio radio-group="pay-method" value="LATER"/> + <t>Pay later</t> + </label> + </div> + </div> + </div> + <div class="button-bar"> + <button on-click="onModifyClick" id="modify" class="thin modify-order"> + <t>Modify</t> + </button> + <button on-click="onConfirmClick" id="confirm" class="thin confirm-order"> + <t>Confirm</t> + </button> + <div class="clear"/> + </div> </div> </div> </div> diff --git a/forms/ecomerce/invoices/style.css b/forms/ecomerce/invoices/style.css index e010596d..e69de29b 100644 --- a/forms/ecomerce/invoices/style.css +++ b/forms/ecomerce/invoices/style.css @@ -1,7 +0,0 @@ -.invoices { - padding: 1em; -} -.invoices .box { - max-width: 600px; -} - diff --git a/forms/ecomerce/invoices/ui.xml b/forms/ecomerce/invoices/ui.xml index 5e9b5e05..e69a3ce7 100644 --- a/forms/ecomerce/invoices/ui.xml +++ b/forms/ecomerce/invoices/ui.xml @@ -3,9 +3,9 @@ <h1><t>Invoices</t></h1> </div> <div id="form" class="invoices"> - <div class="box"> - <div> - <htk-grid show-header="false"> + <htk-grid + class="box vn-w-sm" + show-header="false"> <db-model property="model" id="tickets"> SELECT id, ref, issued, amount, hasPdf FROM myInvoice @@ -19,7 +19,5 @@ renderer="donwloadRenderer" target="_blank"/> </htk-grid> - </div> - </div> </div> </vn> diff --git a/forms/ecomerce/orders/style.css b/forms/ecomerce/orders/style.css index 3dd75dbb..0ad1d87e 100644 --- a/forms/ecomerce/orders/style.css +++ b/forms/ecomerce/orders/style.css @@ -1,11 +1,3 @@ -.orders { - padding: 1em; -} -.orders .box { - max-width: 25em; -} - -/* Balance */ .balance { margin-right: .5em; diff --git a/forms/ecomerce/orders/ui.xml b/forms/ecomerce/orders/ui.xml index 9f52ef70..e119a895 100644 --- a/forms/ecomerce/orders/ui.xml +++ b/forms/ecomerce/orders/ui.xml @@ -38,30 +38,31 @@ on-click="onBasketClick"/> </div> <div id="form" class="orders"> - <div class="box confirmed"> - <htk-repeater form-id="iter" renderer="repeaterFunc" class="htk-list"> - <db-model property="model" id="tickets"> - <custom> - CALL myTicket_list (NULL, NULL); - </custom> - </db-model> + <htk-repeater + class="htk-list box confirmed vn-w-sm" + form-id="iter" + renderer="repeaterFunc"> + <db-model property="model" id="tickets"> <custom> - <a id="link" class="item" title="{{_('SeeOrder')}}"> - <div class="content"> - <p class="important total"> - {{Vn.Value.format(iter.total, '%.2d€')}} - </p> - <p class="important"> - {{Vn.Value.format(iter.landed, '%D')}} - </p> - <p>#{{iter.id}}</p> - <p>{{iter.nickname}}</p> - <p>{{iter.agency}}</p> - </div> - </a> + CALL myTicket_list (NULL, NULL); </custom> - </htk-repeater> - </div> + </db-model> + <custom> + <a id="link" class="item" title="{{_('SeeOrder')}}"> + <div class="content"> + <p class="important total"> + {{Vn.Value.format(iter.total, '%.2d€')}} + </p> + <p class="important"> + {{Vn.Value.format(iter.landed, '%D')}} + </p> + <p>#{{iter.id}}</p> + <p>{{iter.nickname}}</p> + <p>{{iter.agency}}</p> + </div> + </a> + </custom> + </htk-repeater> </div> <htk-dialog id="error-dialog" diff --git a/forms/ecomerce/ticket/style.css b/forms/ecomerce/ticket/style.css index 510cd502..76aed3ac 100644 --- a/forms/ecomerce/ticket/style.css +++ b/forms/ecomerce/ticket/style.css @@ -1,12 +1,3 @@ -.ticket { - padding: 1em; -} -.ticket .box { - max-width: 420px; - margin: 0 auto; - padding: 2em; - color: #333; -} /* Header */ diff --git a/forms/ecomerce/ticket/ui.xml b/forms/ecomerce/ticket/ui.xml index 9f986f6c..aaf31dc5 100644 --- a/forms/ecomerce/ticket/ui.xml +++ b/forms/ecomerce/ticket/ui.xml @@ -23,15 +23,11 @@ on-click="onPrintClick"/> </div> <div id="form" class="ticket"> - <div class="box"> + <div class="box vn-w-sm vn-pa-lg"> <htk-loader class="head" form="ticket"> + <h5>#<htk-text column="id" form="ticket"/></h5> <div> - <p class="important ticket-id"> - #<htk-text column="id" form="ticket"/> - </p> - </div> - <div> - <h3><t>ShippingInformation</t></h3> + <h6><t>ShippingInformation</t></h6> <p> <t>Preparation</t> <htk-text form="ticket" column="shipped" format="%D"/> </p> @@ -43,7 +39,7 @@ </p> </div> <div class="address"> - <h3><t>DeliveryAddress</t></h3> + <h6><t>DeliveryAddress</t></h6> <p> <htk-text form="ticket" column="nickname"/> </p> diff --git a/forms/news/new/style.css b/forms/news/new/style.css index 92b661a9..c5a3c123 100644 --- a/forms/news/new/style.css +++ b/forms/news/new/style.css @@ -1,19 +1,4 @@ -.new { - padding: 1em; -} -.new .box { - max-width: 38em; - padding: 2em; -} - -/* Form */ - .new textarea { min-height: 500px; } -.new .foot { - text-align: center; - margin-top: 1em; -} - diff --git a/forms/news/new/ui.xml b/forms/news/new/ui.xml index 3b1fe869..ff78e7c1 100644 --- a/forms/news/new/ui.xml +++ b/forms/news/new/ui.xml @@ -35,31 +35,29 @@ on-click="this.onAcceptClick()"/> </div> <div id="form" class="new"> - <div class="box"> - <div class="form"> - <div class="form-group"> - <label><t>Title</t></label> - <htk-entry form="iter" column="title"/> - </div> - <div class="form-group"> - <label><t>Tag</t></label> - <htk-combo form="iter" column="tag"> - <db-model property="model"> - <custom> - SELECT name, description FROM newsTag - ORDER BY description - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Priority</t></label> - <htk-entry form="iter" column="priority"/> - </div> - <div class="form-group"> - <label><t>NewBody</t></label> - <textarea id="html-editor"/> - </div> + <div class="box form vn-w-sm vn-pa-lg"> + <div class="form-group"> + <label><t>Title</t></label> + <htk-entry form="iter" column="title"/> + </div> + <div class="form-group"> + <label><t>Tag</t></label> + <htk-combo form="iter" column="tag"> + <db-model property="model"> + <custom> + SELECT name, description FROM newsTag + ORDER BY description + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Priority</t></label> + <htk-entry form="iter" column="priority"/> + </div> + <div class="form-group"> + <label><t>NewBody</t></label> + <textarea id="html-editor"/> </div> </div> </div> diff --git a/forms/news/news/style.css b/forms/news/news/style.css index 8c343b55..e8457eea 100644 --- a/forms/news/news/style.css +++ b/forms/news/news/style.css @@ -1,16 +1,5 @@ -.news { - padding: 1em; -} -.news .box { - max-width: 420px; - margin: 0 auto; -} - -/* Items */ .news .item .photo { - float: left; - margin-right: 1em; height: 80px; width: 80px; border-radius: 50%; diff --git a/forms/news/news/ui.xml b/forms/news/news/ui.xml index d8e3124b..4eb06118 100644 --- a/forms/news/news/ui.xml +++ b/forms/news/news/ui.xml @@ -9,49 +9,47 @@ on-click="this.onAddClick()"/> </div> <div id="form" class="news"> - <div class="box"> - <htk-repeater form-id="iter" class="htk-list"> - <db-model property="model" id="news-model" updatable="true"> - <custom> - SELECT n.id, u.nickname, n.priority, n.image, n.title - FROM news n - JOIN account.user u ON u.id = n.userFk - ORDER BY priority, n.created DESC - </custom> - </db-model> + <htk-repeater form-id="iter" class="box htk-list vn-w-sm"> + <db-model property="model" id="news-model" updatable="true"> <custom> - <a class="item" - href="{{`#!form=news/new&new=${iter.id}`}}" - title="_EditNew"> - <div class="side"> - <htk-image - form="iter" - column="image" - class="photo" - directory="news" - subdir="200x200" - full-dir="full" - editable="true" - conn="conn"/> - </div> - <div class="content"> - <p class="important"> - {{iter.title}} - </p> - <p>{{iter.nickname}}</p> - <p>{{iter.priority}}</p> - </div> - <div - class="actions" - on-click="$event.preventDefault()"> - <htk-button - tip="_Remove" - icon="delete" - on-click="this.onDeleteClick($.iter)"/> - </div> - </a> + SELECT n.id, u.nickname, n.priority, n.image, n.title + FROM news n + JOIN account.user u ON u.id = n.userFk + ORDER BY priority, n.created DESC </custom> - </htk-repeater> - </div> + </db-model> + <custom> + <a class="item" + href="{{`#!form=news/new&new=${iter.id}`}}" + title="_EditNew"> + <div class="side vn-mr-md"> + <htk-image + form="iter" + column="image" + class="photo" + directory="news" + subdir="200x200" + full-dir="full" + editable="true" + conn="conn"/> + </div> + <div class="content"> + <p class="important"> + {{iter.title}} + </p> + <p>{{iter.nickname}}</p> + <p>{{iter.priority}}</p> + </div> + <div + class="actions" + on-click="$event.preventDefault()"> + <htk-button + tip="_Remove" + icon="delete" + on-click="this.onDeleteClick($.iter)"/> + </div> + </a> + </custom> + </htk-repeater> </div> </vn> diff --git a/forms/reports/items-form/style.css b/forms/reports/items-form/style.css index bd894532..e69de29b 100644 --- a/forms/reports/items-form/style.css +++ b/forms/reports/items-form/style.css @@ -1,19 +0,0 @@ - -.items { - padding: 1em; -} -.items .box { - max-width: 420px; - padding: 3em; -} - -/* Footer */ - -.items .footer { - text-align: center; - margin-top: 1.5em; -} -.items .footer > button { - margin: 0 .2em; -} - diff --git a/forms/reports/items-form/ui.xml b/forms/reports/items-form/ui.xml index d600d785..b735cf7a 100644 --- a/forms/reports/items-form/ui.xml +++ b/forms/reports/items-form/ui.xml @@ -9,40 +9,38 @@ on-click="this.onPreviewClick()"/> </div> <div id="form" class="items"> - <div class="box"> - <div class="form"> - <div class="form-group"> - <label><t>Store</t></label> - <htk-combo> - <vn-param property="param" id="warehouse"/> - <db-model property="model"> - <custom> - SELECT id, name FROM vn2008.warehouse - WHERE reserve ORDER BY name - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Realm</t></label> - <htk-combo not-null="false"> - <vn-param property="param" id="realm"/> - <db-model property="model"> - <custom> - SELECT id, reino FROM vn2008.reinos - WHERE display != FALSE ORDER BY reino - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Rate</t></label> - <select id="rate"> - <option>3</option> - <option>2</option> - <option>1</option> - </select> - </div> + <div class="form box vn-w-sm vn-pa-lg"> + <div class="form-group"> + <label><t>Store</t></label> + <htk-combo> + <vn-param property="param" id="warehouse"/> + <db-model property="model"> + <custom> + SELECT id, name FROM vn2008.warehouse + WHERE reserve ORDER BY name + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Realm</t></label> + <htk-combo not-null="false"> + <vn-param property="param" id="realm"/> + <db-model property="model"> + <custom> + SELECT id, reino FROM vn2008.reinos + WHERE display != FALSE ORDER BY reino + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Rate</t></label> + <select id="rate"> + <option>3</option> + <option>2</option> + <option>1</option> + </select> </div> </div> </div> diff --git a/forms/reports/shelves/style.css b/forms/reports/shelves/style.css index fb16cfd1..e69de29b 100644 --- a/forms/reports/shelves/style.css +++ b/forms/reports/shelves/style.css @@ -1,8 +0,0 @@ - -.shelves { - padding: 1em; -} -.shelves .box { - max-width: 420px; - padding: 3em; -} diff --git a/forms/reports/shelves/ui.xml b/forms/reports/shelves/ui.xml index c423d7f7..8bb26e4f 100644 --- a/forms/reports/shelves/ui.xml +++ b/forms/reports/shelves/ui.xml @@ -19,99 +19,97 @@ on-click="this.onPreviewClick()"/> </div> <div id="form" class="shelves"> - <div class="box"> - <div class="form"> - <div class="form-group"> - <label><t>Configuration</t></label> - <htk-combo - id="config" - placeholder="_Select config" - model="configs-model" - on-changed="this.onConfigChange()" - on-ready="this.onConfigChange()"/> - </div> - <div class="form-group"> - <label><t>Date</t></label> - <htk-date-chooser id="date"/> - </div> - <div class="form-group"> - <label><t>Reign</t></label> - <htk-combo id="realm"> - <db-model property="model" id="realms"> + <div class="form box vn-w-sm vn-pa-lg"> + <div class="form-group"> + <label><t>Configuration</t></label> + <htk-combo + id="config" + placeholder="_Select config" + model="configs-model" + on-changed="this.onConfigChange()" + on-ready="this.onConfigChange()"/> + </div> + <div class="form-group"> + <label><t>Date</t></label> + <htk-date-chooser id="date"/> + </div> + <div class="form-group"> + <label><t>Reign</t></label> + <htk-combo id="realm"> + <db-model property="model" id="realms"> + <custom> + SELECT id, reino FROM vn2008.reinos + WHERE display != FALSE ORDER BY reino + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Family</t></label> + <htk-combo id="family"> + <db-model property="model"> + <custom> + SELECT tipo_id, Tipo FROM vn2008.Tipos + WHERE reino_id = #realm ORDER BY Tipo + </custom> + <sql-batch property="batch"> <custom> - SELECT id, reino FROM vn2008.reinos - WHERE display != FALSE ORDER BY reino + <item name="realm" param="realm"/> </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Family</t></label> - <htk-combo id="family"> - <db-model property="model"> - <custom> - SELECT tipo_id, Tipo FROM vn2008.Tipos - WHERE reino_id = #realm ORDER BY Tipo - </custom> - <sql-batch property="batch"> - <custom> - <item name="realm" param="realm"/> - </custom> - </sql-batch> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Store</t></label> - <htk-combo id="warehouse"> - <db-model property="model" id="warehouses"> - <custom> - SELECT id, name FROM vn2008.warehouse - WHERE reserve ORDER BY name - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Shelf</t></label> - <htk-combo id="shelf"> - <db-model property="model" id="shelves"> - <custom> - SELECT id, name FROM shelf - </custom> - </db-model> - </htk-combo> - </div> - <div class="form-group"> - <label><t>Name prefix</t></label> - <htk-entry id="namePrefix"/> - </div> - <div class="form-group"> - <label><t>Limit amount per item</t></label> - <htk-entry id="maxAmount"/> - </div> - <div class="form-group"> - <label><t>Title</t></label> - <htk-entry id="reportTitle"/> - </div> - <div class="form-group"> - <label> - <htk-check id="showPacking"/> - <t>Show packing</t> - </label> - </div> - <div class="form-group"> - <label> - <htk-check id="stack"/> - <t>Stack different items</t> - </label> - </div> - <div class="form-group"> - <label> - <htk-check id="useIds"/> - <t>Use ids instead of names</t> - </label> - </div> + </sql-batch> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Store</t></label> + <htk-combo id="warehouse"> + <db-model property="model" id="warehouses"> + <custom> + SELECT id, name FROM vn2008.warehouse + WHERE reserve ORDER BY name + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Shelf</t></label> + <htk-combo id="shelf"> + <db-model property="model" id="shelves"> + <custom> + SELECT id, name FROM shelf + </custom> + </db-model> + </htk-combo> + </div> + <div class="form-group"> + <label><t>Name prefix</t></label> + <htk-entry id="namePrefix"/> + </div> + <div class="form-group"> + <label><t>Limit amount per item</t></label> + <htk-entry id="maxAmount"/> + </div> + <div class="form-group"> + <label><t>Title</t></label> + <htk-entry id="reportTitle"/> + </div> + <div class="form-group"> + <label> + <htk-check id="showPacking"/> + <t>Show packing</t> + </label> + </div> + <div class="form-group"> + <label> + <htk-check id="stack"/> + <t>Stack different items</t> + </label> + </div> + <div class="form-group"> + <label> + <htk-check id="useIds"/> + <t>Use ids instead of names</t> + </label> </div> </div> </div> diff --git a/js/db/calc-sum.js b/js/db/calc-sum.js index 8755e65e..9314a236 100644 --- a/js/db/calc-sum.js +++ b/js/db/calc-sum.js @@ -3,7 +3,7 @@ var Calc = require ('./calc'); /** * Computes a sum of data in the model. - **/ + */ module.exports = new Class ({ Extends: Calc diff --git a/js/db/calc.js b/js/db/calc.js index 17e8d91f..17851a6b 100644 --- a/js/db/calc.js +++ b/js/db/calc.js @@ -4,7 +4,7 @@ var SimpleIterator = require ('./simple-iterator'); /** * Interface for handle foreach operations on the model. - **/ + */ module.exports = new Class ({ Extends: Vn.Param @@ -132,23 +132,23 @@ module.exports = new Class * You don't need to define it if model isn't updatable. * * @param {integer} row The row number - **/ + */ ,before: function (row) {} /** * Called after each update or insert row operation. * * @param {integer} row The row number - **/ + */ ,after: function (row) {} /** * Called before each model refresh. - **/ + */ ,init: function () {} /** * Called when an operation in the model is complete. - **/ + */ ,done: function () {} }); diff --git a/js/db/form.js b/js/db/form.js index b97b8edb..53affd10 100644 --- a/js/db/form.js +++ b/js/db/form.js @@ -11,7 +11,7 @@ module.exports = new Class { /** * The model associated to this form. - **/ + */ model: { type: Model @@ -30,7 +30,7 @@ module.exports = new Class }, /** * The row where the form positioned, has -1 if the row is unselected. - **/ + */ row: { type: Number @@ -51,7 +51,7 @@ module.exports = new Class }, /** * The number of rows in the form. - **/ + */ numRows: { type: Number @@ -65,7 +65,7 @@ module.exports = new Class }, /** * Checks if the form data is ready. - **/ + */ ready: { type: Boolean diff --git a/js/db/param.js b/js/db/param.js index 02058053..daa630b7 100644 --- a/js/db/param.js +++ b/js/db/param.js @@ -10,7 +10,7 @@ module.exports = new Class { /** * The form field referenced by this param. - **/ + */ column: { type: String @@ -26,7 +26,7 @@ module.exports = new Class }, /** * The form referenced by this param. - **/ + */ form: { type: Form @@ -48,7 +48,7 @@ module.exports = new Class /** * Determines whether the link to the form is unidirectional, ie, a * change in the form updates the parameter but not vice versa. - **/ + */ oneWay: { type: Boolean diff --git a/js/db/query.js b/js/db/query.js index c0e9f64c..eca97c8e 100644 --- a/js/db/query.js +++ b/js/db/query.js @@ -9,7 +9,7 @@ module.exports = new Class { /** * The connection used to execute the statement. - **/ + */ conn: { type: Connection @@ -25,7 +25,7 @@ module.exports = new Class }, /** * The model query. - **/ + */ query: { type: String @@ -41,7 +41,7 @@ module.exports = new Class }, /** * The model select statement. - **/ + */ stmt: { type: Sql.Stmt @@ -57,7 +57,7 @@ module.exports = new Class }, /** * The batch used to execute the statement. - **/ + */ batch: { type: Sql.Batch @@ -73,7 +73,7 @@ module.exports = new Class }, /** * Wether to execute automatically de query que it's ready. - **/ + */ autoLoad: { type: Boolean, diff --git a/js/db/result.js b/js/db/result.js index 90466c93..2fb2eefe 100644 --- a/js/db/result.js +++ b/js/db/result.js @@ -1,11 +1,11 @@ /** * This class stores a database result. - **/ + */ module.exports = new Class ({ /** * Initilizes the result object. - **/ + */ initialize: function (result) { this.data = result.data; @@ -29,7 +29,7 @@ module.exports = new Class * * @param {String} columnName The column name * @return {Object} The cell value - **/ + */ ,get: function (columnName) { var columnIndex = this.columnMap[columnName]; @@ -38,7 +38,7 @@ module.exports = new Class /** * Resets the result iterator. - **/ + */ ,reset: function () { this.row = -1; @@ -46,7 +46,7 @@ module.exports = new Class /** * Moves the internal iterator to the next row. - **/ + */ ,next: function () { this.row++; diff --git a/js/hedera/form.js b/js/hedera/form.js index 3e73b5cc..a3723c0d 100644 --- a/js/hedera/form.js +++ b/js/hedera/form.js @@ -33,7 +33,7 @@ module.exports = new Class({ builder.compileFile('forms/'+ this.formInfo.path +'/ui.xml'); var scope = this.builder = builder.load(null, this); - scope.link({conn: this.conn}); + scope.link(null, {conn: this.conn}); this.node = scope.$('form'); diff --git a/js/hedera/gui.js b/js/hedera/gui.js index eaea8a3d..87d5c6c0 100644 --- a/js/hedera/gui.js +++ b/js/hedera/gui.js @@ -35,11 +35,6 @@ module.exports = new Class({ this.$('background').onclick = function() {}; - this.$('menu-button').addEventListener('click', function(event) { - event.stopPropagation(); - this.showMenu(); - }.bind(this)); - this.$('left-panel').addEventListener('click', function(event) { event.stopPropagation(); }); @@ -264,6 +259,11 @@ module.exports = new Class({ } } + ,onMenuClick(event) { + event.stopPropagation(); + this.showMenu(); + } + ,showMenu: function() { this.showBackground(); Vn.Node.addClass(this.$('left-panel'), 'show'); diff --git a/js/hedera/gui.scss b/js/hedera/gui.scss index 71bba6be..e529ebbf 100644 --- a/js/hedera/gui.scss +++ b/js/hedera/gui.scss @@ -1,3 +1,6 @@ + +@import "../htk/style/classes"; + .vn-gui { height: inherit; @@ -20,72 +23,71 @@ overflow: hidden; height: 64px; color: white; + display: flex; + align-items: center; transition-property: left, background-color, transform; transition-duration: 200ms; transition-timing-function: ease-in-out; - } - .menu-button { - position: absolute; - left: 0; - display: none; - border: none; - background-color: transparent; - padding: 0 1em; - margin: 0; - height: 100%; - &:hover { - background-color: rgba(0, 0, 0, .2); + & > .menu-button { + flex: none; + display: none; + border: none; + + &:hover { + background-color: rgba(255, 255, 255, .1); + } + & > .htk-icon { + display: block; + } } - img { - vertical-align: middle; - height: 1.8em; + & > .title-wraper { + flex: auto; + display: flex; + align-items: center; + gap: 15px; + overflow: hidden; + + & > .title { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + h1 { + font-weight: normal; + font-size: 1.4em; + padding-left: 8px; + margin: 0; + } + } } - } - .title { - float: left; - - h1 { - font-weight: normal; - font-size: 1.4em; - padding: .8em .6em; - padding-right: .3em; - margin: 0; - } - } - .navbar > .htk-spinner { - float: left; - margin: 1.05em .8em; - } - - /* Action bar */ - - .action-bar { - float: right; - padding: 0; - margin: 0; - height: 100%; - - & > div { + & > .action-bar { + flex: none; padding: 0; margin: 0; height: 100%; - display: flex; - align-items: center; - padding: 0 1em; - gap: .5em; - & > * { - float: right; + & > div { + padding: 0; + margin: 0; + height: 100%; + display: flex; + align-items: center; + padding: 0 1em; + gap: .5em; + + & > * { + float: right; + } } - } - button { - margin: 0; - padding: 10px 15px; + button { + margin: 0; + padding: 10px 15px; - &:hover { - background-color: rgba(2550, 255, 255, .2); + &:hover { + background-color: rgba(2550, 255, 255, .2); + } } } } @@ -141,40 +143,44 @@ width: 160px; margin-left: 37px; } - .user-info > div { - display: flex; - justify-content: space-between; - align-items: center; - overflow: hidden; - font-weight: bold; - border: 1px solid #eaeaea; + .user-info { margin: 25px; - & > span { - padding: 10px; + & > div { + display: flex; + justify-content: space-between; + align-items: center; overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .logout { - display: block; - margin: 0; - text-align: left; - border-radius: 0; + font-weight: bold; + border: 1px solid #eaeaea; - &:hover { - background-color: #1a1a1a; - color: white; + & > span { + padding: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } - & > .htk-icon { + .logout { display: block; - } - } - &.supplant { - display: none; + margin: 0; + text-align: left; + border-radius: 0; - &.show { - display: flex; + &:hover { + background-color: #1a1a1a; + color: white; + } + & > .htk-icon { + display: block; + } + } + &.supplant { + display: none; + border-top: none; + + &.show { + display: flex; + } } } } @@ -283,35 +289,40 @@ transition-property: opacity, transform; transition-duration: 200ms; transition-timing-function: ease-out; - } - .form-holder.show { - opacity: 1; - transform: translateZ(0) translateX(0em); - -webkit-transform: translateZ(0) translateX(0em); + + &.show { + opacity: 1; + transform: translateZ(0) translateX(0em); + -webkit-transform: translateZ(0) translateX(0em); + } + & > * { + padding: $spacing-md; + } } /* Mobile */ @media (max-width: 960px) { - .action-bar { - span.label, - .htk-button > .text { - display: none; - } - .htk-button { - padding: 10px; - } - } & > .navbar { - padding-left: 2.8em; + padding-left: 16px; left: 0; + + & > .menu-button { + display: block; + } + & > .action-bar { + button { + padding: 10px; + } + span.label, + button > .text { + display: none; + } + } } & > .body { margin-left: 0; } - .menu-button { - display: block; - } .left-panel { top: 0; left: -250px; diff --git a/js/hedera/gui.xml b/js/hedera/gui.xml index 58b816a4..d083ad2c 100644 --- a/js/hedera/gui.xml +++ b/js/hedera/gui.xml @@ -1,12 +1,17 @@ <vn> <div id="main" class="vn-gui"> <div id="top-bar" class="navbar"> - <div id="action-bar" class="action-bar"/> - <button id="menu-button" class="menu-button"> + <button + id="menu-button" + class="menu-button" + on-click="onMenuClick"> <htk-icon name="menu" alt="_Menu"/> </button> - <div id="title" class="title"/> - <htk-spinner id="loader" class="loader dark"/> + <div class="title-wraper"> + <div id="title" class="title"/> + <htk-spinner id="loader" class="loader dark"/> + </div> + <div id="action-bar" class="action-bar"/> </div> <div id="left-panel" class="left-panel"> <div class="menu-overflow"> diff --git a/js/hedera/report.js b/js/hedera/report.js index ada4f97a..0d471090 100644 --- a/js/hedera/report.js +++ b/js/hedera/report.js @@ -82,7 +82,7 @@ module.exports = new Class({ builder.compileFile('reports/'+ this.info.path +'/ui.xml'); var scope = this.scope = builder.load(this.doc, this); - scope.link({ + scope.link(null, { batch: this.batch, conn: this.conn }); diff --git a/js/hedera/style.scss b/js/hedera/style.scss index c30e957f..2fe7bd0c 100644 --- a/js/hedera/style.scss +++ b/js/hedera/style.scss @@ -62,16 +62,6 @@ a img { a img:hover { opacity: 0.9; } -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: .2em 0; -} -h1 { - font-size: 1.5em; -} -h2 { - font-size: 1.2em; -} p { margin: 0.8em 0; } @@ -153,7 +143,7 @@ input[type=radio] { } select { @extend %clickable; - background-color: white; + background-color: transparent; -moz-appearance: none; appearance: none; line-height: 1em; @@ -211,6 +201,7 @@ img.editable { .box { @extend %box; margin: 0 auto; + box-sizing: border-box; .header { padding: 0.6em 0.8em; diff --git a/js/htk/column.js b/js/htk/column.js index fbd701e3..d2704070 100644 --- a/js/htk/column.js +++ b/js/htk/column.js @@ -1,10 +1,10 @@ -var NodeBuilder = require ('./node-builder'); +var NodeBuilder = require('./node-builder'); /** * Represents a grid column. This is an abstract class and should not be * instantiated directly. - **/ + */ module.exports = new Class ({ Extends: NodeBuilder @@ -44,8 +44,7 @@ module.exports = new Class class: { type: String - ,set: function (x) - { + ,set: function(x) { this._userCssClass = x; if (this._cssClass) @@ -53,8 +52,7 @@ module.exports = new Class else this._cssClass = x; } - ,get: function () - { + ,get: function() { return this._userCssClass; } } @@ -65,19 +63,17 @@ module.exports = new Class /** * Initializes the column. - **/ - ,initialize: function (props) - { - this.parent (props); - this.td = this.createElement ('td'); + */ + ,initialize: function(props) { + this.parent(props); + this.td = this.createElement('td'); } - ,renderHeader: function () - { - var th = this.createElement ('th'); + ,renderHeader: function() { + var th = this.createElement('th'); if (this.title) - th.appendChild (this.createTextNode (this.title)); + th.appendChild(this.createTextNode(this.title)); return th; } @@ -86,10 +82,9 @@ module.exports = new Class * Draws the cell and returns its associated td. * * @return {HTMLTableData} the rendered cell - **/ - ,render: function () - { - var td = this.td.cloneNode (true); + */ + ,render: function() { + var td = this.td.cloneNode(true); if (this._cssClass) td.className = this._cssClass; @@ -97,15 +92,13 @@ module.exports = new Class return td; } - ,updateColumnIndex: function (model) - { + ,updateColumnIndex: function(model) { if (this.column) - this.columnIndex = model.getColumnIndex (this.column); + this.columnIndex = model.getColumnIndex(this.column); } - ,changed: function (tr, newValue) - { - this.signalEmit ('changed', tr.rowIndex - 1, newValue); + ,changed: function(tr, newValue) { + this.signalEmit('changed', tr.rowIndex - 1, newValue); } }); diff --git a/js/htk/column/date.js b/js/htk/column/date.js index 94866871..f215c755 100644 --- a/js/htk/column/date.js +++ b/js/htk/column/date.js @@ -7,16 +7,14 @@ module.exports = new Class { /** * Format that applies to the value. - **/ + */ format: { type: String - ,set: function (x) - { + ,set: function(x) { this._format = _(x); } - ,get: function () - { + ,get: function() { return this._format; } } @@ -24,18 +22,16 @@ module.exports = new Class ,_format: _('%a, %e %b %Y') - ,initialize: function (props) - { + ,initialize: function(props) { this._cssClass = 'cell-date'; - this.parent (props); + this.parent(props); } - ,render: function (tr) - { - var text = Vn.Date.strftime (this.value, this._format); + ,render: function(tr) { + var text = Vn.Date.strftime(this.value, this._format); - var td = this.parent (tr); - td.appendChild (this.createTextNode (text)); + var td = this.parent(tr); + td.appendChild(this.createTextNode(text)); return td; } diff --git a/js/htk/column/image.js b/js/htk/column/image.js index ddad8143..acf246cd 100644 --- a/js/htk/column/image.js +++ b/js/htk/column/image.js @@ -7,7 +7,7 @@ module.exports = new Class { /** * The directory where the images are allocated. - **/ + */ directory: { type: String @@ -15,7 +15,7 @@ module.exports = new Class }, /** * The subdirectory where the images are allocated. - **/ + */ subdir: { type: String @@ -23,7 +23,7 @@ module.exports = new Class }, /** * Subdirectory where full images are allocated. - **/ + */ fullDir: { type: String @@ -31,22 +31,20 @@ module.exports = new Class }, /** * The REST connection used to upload the image. - **/ + */ conn: { type: Vn.JsonConnection } } - ,initialize: function (props) - { + ,initialize: function(props) { this._cssClass = 'cell-image'; - this.parent (props); + this.parent(props); } - ,render: function (tr) - { - var image = new Htk.Image ({ + ,render: function(tr) { + var image = new Htk.Image({ directory: this.directory ,subdir: this.subdir ,fullDir: this.fullDir @@ -55,8 +53,8 @@ module.exports = new Class ,doc: this.doc }); - var td = this.parent (tr); - td.appendChild (image.node); + var td = this.parent(tr); + td.appendChild(image.node); return td; } }); diff --git a/js/htk/column/link.js b/js/htk/column/link.js index d50437f2..62b45f85 100644 --- a/js/htk/column/link.js +++ b/js/htk/column/link.js @@ -7,7 +7,7 @@ module.exports = new Class { /** * The link url. - **/ + */ href: { type: String @@ -15,7 +15,7 @@ module.exports = new Class }, /** * the target where the link is opened. - **/ + */ target: { type: String @@ -23,17 +23,16 @@ module.exports = new Class } } - ,render: function (tr) - { - var link = this.createElement ('a'); + ,render: function(tr) { + var link = this.createElement('a'); link.href = this.href; - link.appendChild (this.createTextNode (this.value)); + link.appendChild(this.createTextNode(this.value)); if (this.target) link.target = this.target; - var td = this.parent (tr); - td.appendChild (link); + var td = this.parent(tr); + td.appendChild(link); return td; } }); diff --git a/js/htk/column/spin.js b/js/htk/column/spin.js index eaed6852..a115d739 100644 --- a/js/htk/column/spin.js +++ b/js/htk/column/spin.js @@ -7,7 +7,7 @@ module.exports = new Class { /** * The text to append to the number. - **/ + */ unit: { type: String @@ -15,59 +15,52 @@ module.exports = new Class }, /** * The number of decimal places to display. - **/ + */ digits: { type: Number ,value: 0 } } - ,initialize: function (props) - { + ,initialize: function(props) { this._cssClass = 'cell-spin'; - this.parent (props); + this.parent(props); } - ,renderHeader: function () - { - var th = this.parent (); + ,renderHeader: function() { + var th = this.parent(); th.className = 'cell-spin'; return th; } - ,render: function (tr) - { - var td = this.parent (tr); + ,render: function(tr) { + var td = this.parent(tr); var valueString = null; if (this.value !== null && this.value !== undefined) - valueString = new Number (this.value).toFixed (this.digits); + valueString = new Number(this.value).toFixed(this.digits); - if (this.editable) - { - var entry = this.createElement ('input'); + if (this.editable) { + var entry = this.createElement('input'); entry.type = 'text'; - entry.addEventListener ('change', this.inputChanged.bind (this, tr, entry)); - td.appendChild (entry); + entry.addEventListener('change', this.inputChanged.bind(this, tr, entry)); + td.appendChild(entry); if (valueString) entry.value = valueString; - } - else if (valueString) - { + } else if (valueString) { if (this.unit) valueString = valueString + this.unit; - var text = this.createTextNode (valueString); - td.appendChild (text); + var text = this.createTextNode(valueString); + td.appendChild(text); } return td; } - ,inputChanged: function (tr, entry) - { - this.changed (tr, parseInt (entry.value)); + ,inputChanged: function(tr, entry) { + this.changed(tr, parseInt(entry.value)); } }); diff --git a/js/htk/column/text.js b/js/htk/column/text.js index ae1eb277..fabfd4bf 100644 --- a/js/htk/column/text.js +++ b/js/htk/column/text.js @@ -7,16 +7,14 @@ module.exports = new Class { /** * Format that applies to the value. - **/ + */ format: { type: String - ,set: function (x) - { + ,set: function(x) { this._format = _(x); } - ,get: function () - { + ,get: function() { return this._format; } } @@ -24,37 +22,32 @@ module.exports = new Class ,_format: null - ,initialize: function (props) - { + ,initialize: function(props) { this._cssClass = 'cell-text'; - this.parent (props); + this.parent(props); } - ,render: function (tr) - { + ,render: function(tr) { var node; - if (this.editable) - { + if (this.editable) { var value = this.value ? this.value : ''; - node = this.createElement ('input'); + node = this.createElement('input'); node.type = 'text'; node.value = value; - node.addEventListener ('changed', - this.inputChanged.bind (this, tr, node)); - } - else - node = this.createTextNode ( - Vn.Value.format (this.value, this._format)); + node.addEventListener('changed', + this.inputChanged.bind(this, tr, node)); + } else + node = this.createTextNode( + Vn.Value.format(this.value, this._format)); - var td = this.parent (tr); - td.appendChild (node); + var td = this.parent(tr); + td.appendChild(node); return td; } - ,inputChanged: function (tr, node) - { - this.changed (tr, node.value); + ,inputChanged: function(tr, node) { + this.changed(tr, node.value); } }); diff --git a/js/htk/dialog.js b/js/htk/dialog.js index 5b74cdc7..f8d0f30b 100644 --- a/js/htk/dialog.js +++ b/js/htk/dialog.js @@ -3,7 +3,7 @@ var Popup = require('./popup'); /** * Class to show message dialogs with buttons. - **/ + */ var Dialog = new Class(); module.exports = Dialog; @@ -53,7 +53,7 @@ Dialog.implement({ { /** * The message displayed to the user. - **/ + */ message: { type: String @@ -66,7 +66,7 @@ Dialog.implement({ } /** * The dialog icon. - **/ + */ ,icon: { type: String @@ -79,7 +79,7 @@ Dialog.implement({ } /** * The dialog buttons. - **/ + */ ,buttons: { enumType: Button diff --git a/js/htk/field.js b/js/htk/field.js index c022f4cb..0a7e42a1 100644 --- a/js/htk/field.js +++ b/js/htk/field.js @@ -99,7 +99,7 @@ module.exports = new Class({ * editable. * * @param {Boolean} editable Whether the user is allowed to edit the entry - **/ + */ ,setEditable: function(editable) {} /** @@ -107,7 +107,7 @@ module.exports = new Class({ * on the associated entry. * * @param {Object} value The new value for the entry - **/ + */ ,putValue: function(value) {} /** @@ -115,7 +115,7 @@ module.exports = new Class({ * on the associated entry changes. * * @param {Object} value The new entry value - **/ + */ ,valueChanged: function(value) { this._value = value; diff --git a/js/htk/field/image.js b/js/htk/field/image.js index f3109bee..4b0dbaf8 100644 --- a/js/htk/field/image.js +++ b/js/htk/field/image.js @@ -1,6 +1,6 @@ /** * Class to display or edit an image. Also it allows to show it's full version. - **/ + */ module.exports = new Class({ Extends: Htk.Field ,Tag: 'htk-image' @@ -8,7 +8,7 @@ module.exports = new Class({ { /** * The directory where the images are allocated. - **/ + */ directory: { type: String ,set: function(x) { @@ -21,7 +21,7 @@ module.exports = new Class({ }, /** * The subdirectory where the images are allocated. - **/ + */ subdir: { type: String ,set: function(x) { @@ -34,7 +34,7 @@ module.exports = new Class({ }, /** * The timestamp field of the last update, used for caching purposes. - **/ + */ stampColumn: { type: String ,set: function(x) { @@ -47,7 +47,7 @@ module.exports = new Class({ }, /** * Whether to show the full image when mouse hover. - **/ + */ fullDir: { type: String ,set: function(x) { @@ -60,7 +60,7 @@ module.exports = new Class({ }, /** * The REST connection used to upload the image. - **/ + */ conn: { type: Vn.JsonConnection } diff --git a/js/htk/field/label.js b/js/htk/field/label.js index d3006802..94f09b68 100644 --- a/js/htk/field/label.js +++ b/js/htk/field/label.js @@ -7,17 +7,15 @@ module.exports = new Class { /** * Format that applies to the value. - **/ + */ format: { type: String - ,set: function (x) - { + ,set: function(x) { this._format = _(x); - this.putValue (this._value); + this.putValue(this._value); } - ,get: function () - { + ,get: function() { return this._format; } } @@ -25,14 +23,12 @@ module.exports = new Class ,_format: null - ,render: function () - { - this.createRoot ('label'); + ,render: function() { + this.createRoot('label'); } - ,putValue: function (value) - { - Vn.Node.setText (this.node, - Vn.Value.format (value, this._format)); + ,putValue: function(value) { + Vn.Node.setText(this.node, + Vn.Value.format(value, this._format)); } }); diff --git a/js/htk/field/text.js b/js/htk/field/text.js index e0483c89..14fe88b2 100644 --- a/js/htk/field/text.js +++ b/js/htk/field/text.js @@ -7,17 +7,15 @@ module.exports = new Class { /** * Format that applies to the value. - **/ + */ format: { type: String - ,set: function (x) - { + ,set: function(x) { this._format = _(x); - this.putValue (this._value); + this.putValue(this._value); } - ,get: function () - { + ,get: function() { return this._format; } } @@ -25,13 +23,11 @@ module.exports = new Class ,_format: null - ,render: function () - { - this._node = this.createTextNode (''); + ,render: function() { + this._node = this.createTextNode(''); } - ,putValue: function (value) - { - this._node.nodeValue = Vn.Value.format (value, this._format); + ,putValue: function(value) { + this._node.nodeValue = Vn.Value.format(value, this._format); } }); diff --git a/js/htk/full-image.js b/js/htk/full-image.js index 3492f2c3..b4e0d00e 100644 --- a/js/htk/full-image.js +++ b/js/htk/full-image.js @@ -1,6 +1,6 @@ -var Popup = require ('./popup'); -var Spinner = require ('./spinner'); +var Popup = require('./popup'); +var Spinner = require('./spinner'); module.exports = new Class ({ @@ -9,81 +9,71 @@ module.exports = new Class { /** * Subdirectory where full images are allocated. - **/ + */ fullDir: { type: String - ,set: function (x) - { + ,set: function(x) { this._fullDir = x; } - ,get: function () - { + ,get: function() { return this._fullDir; } } } - ,show: function (src) - { - var popup = new Popup ({class: 'htk-full-image', modal: true}); + ,show: function(src) { + var popup = new Popup({class: 'htk-full-image', modal: true}); - var img = document.createElement ('img'); + var img = document.createElement('img'); img.className = 'htk-full-image'; - img.addEventListener ('click', this._onImageClick.bind (this, popup)); + img.addEventListener('click', this._onImageClick.bind(this, popup)); //img.addEventListener ('error', this._onImageError.bind (this, popup)); img.src = src; - if (!img.complete) - { - img.addEventListener ('load', this._onImageLoad.bind (this, popup, img)); + if (!img.complete) { + img.addEventListener('load', this._onImageLoad.bind(this, popup, img)); - var spinner = new Spinner (); - spinner.start (); + var spinner = new Spinner(); + spinner.start(); popup.child = spinner; - } - else - this._onImageLoad (popup, img); + } else + this._onImageLoad(popup, img); - popup.open (); + popup.open(); } - ,_onImageLoad: function (popup, img) - { + ,_onImageLoad: function(popup, img) { var scale = null; var width = img.width; var height = img.height; - var innerWidth = Vn.Browser.getInnerWidth () - 50; - var innerHeight = Vn.Browser.getInnerHeight () - 50; + var innerWidth = Vn.Browser.getInnerWidth() - 50; + var innerHeight = Vn.Browser.getInnerHeight() - 50; - if (width > innerWidth) - { + if (width > innerWidth) { scale = width / innerWidth; - height = parseInt (height / scale); + height = parseInt(height / scale); width = innerWidth; } - if (height > innerHeight) - { + if (height > innerHeight) { scale = height / innerHeight; - width = parseInt (width / scale); + width = parseInt(width / scale); height = innerHeight; } - if (scale !== null) - { + if (scale !== null) { img.style.width = width +'px'; img.style.height = height +'px'; } popup.childNode = img; - popup.reset (); + popup.reset(); } - ,_onImageClick: function (popup) - { - popup.hide (); + ,_onImageClick: function(popup) { + popup.hide(); } - ,_onImageError: function (popup) {} + ,_onImageError: function(popup) {} }); diff --git a/js/htk/grid.js b/js/htk/grid.js index 03e6e99b..3293a1c8 100644 --- a/js/htk/grid.js +++ b/js/htk/grid.js @@ -9,7 +9,7 @@ module.exports = new Class({ { /** * The source data model. - **/ + */ model: { type: Db.Model @@ -35,7 +35,7 @@ module.exports = new Class({ }, /** * Message that should be displayed when source model is not ready. - **/ + */ emptyMessage: { type: String @@ -43,7 +43,7 @@ module.exports = new Class({ }, /** * Wether to display the header with column titles. - **/ + */ showHeader: { type: Boolean diff --git a/js/htk/htk.js b/js/htk/htk.js index a193ab6f..8bd652cf 100644 --- a/js/htk/htk.js +++ b/js/htk/htk.js @@ -1,7 +1,6 @@ require('db/db'); -require('./style/classes.scss'); -require('./style/main.scss'); +require('./style/index.scss'); Htk = module.exports = { NodeBuilder : require('./node-builder') diff --git a/js/htk/image-editor.js b/js/htk/image-editor.js index 224cf0a6..3b31ed94 100644 --- a/js/htk/image-editor.js +++ b/js/htk/image-editor.js @@ -6,13 +6,13 @@ var Tpl = require('./image-editor.xml').default; /** * A form to handle the image database, it allows to add new images or * replace it. - **/ + */ module.exports = new Class({ Extends: Component, Properties: { /** * The REST connection used to upload the image. - **/ + */ conn: { type: Vn.JsonConnection } diff --git a/js/htk/popup.js b/js/htk/popup.js index a81ea1e0..72dfd9ec 100644 --- a/js/htk/popup.js +++ b/js/htk/popup.js @@ -1,9 +1,9 @@ -var Widget = require ('./widget'); +var Widget = require('./widget'); /** * Class to handle popups. - **/ + */ module.exports = new Class ({ Extends: Widget @@ -12,48 +12,42 @@ module.exports = new Class { /** * The popup child. - **/ + */ child: { type: Widget - ,set: function (x) - { + ,set: function(x) { this._child = x; - this._setChildNode (x.node); + this._setChildNode(x.node); } - ,get: function () - { + ,get: function() { return this._child; } } /** * The popup child Node. - **/ + */ ,childNode: { type: Object - ,set: function (x) - { + ,set: function(x) { this._child = null; - this._setChildNode (x); + this._setChildNode(x); } - ,get: function () - { + ,get: function() { return this.node.firstChild; } } /** * Indicates how the dialog must be displayed. - **/ + */ ,modal: { type: Boolean - ,set: function (x) - { + ,set: function(x) { this._modal = x; } - ,get: function () - { + ,get: function() { return this._modal; } } @@ -64,82 +58,69 @@ module.exports = new Class ,_isOpen: false ,_child: null - ,initialize: function (props) - { - this._bgMouseDownHandler = this._bgMouseDown.bind (this); - this.parent (props); + ,initialize: function(props) { + this._bgMouseDownHandler = this._bgMouseDown.bind(this); + this.parent(props); } - ,render: function () - { - var div = this.createRoot ('div'); + ,render: function() { + var div = this.createRoot('div'); div.className = 'htk-popup'; } - ,_setChildNode: function (childNode) - { - Vn.Node.removeChilds (this.node); - this.node.appendChild (childNode); + ,_setChildNode: function(childNode) { + Vn.Node.removeChilds(this.node); + this.node.appendChild(childNode); } - ,show: function (parent) - { + ,show: function(parent) { this._parent = parent; - this.open (); + this.open(); } - ,isModal: function () - { - return this._modal || Vn.isMobile (); + ,isModal: function() { + return this._modal || Vn.isMobile(); } - ,open: function () - { - if (this._isOpen) - { - this.reset (); + ,open: function() { + if (this._isOpen) { + this.reset(); return; } - this.node.addEventListener ('mousedown', this._onMouseDown.bind (this)); + this.node.addEventListener('mousedown', this._onMouseDown.bind(this)); - if (this.isModal ()) - { - var bg = this._bg = this.createElement ('div'); + if (this.isModal()) { + var bg = this._bg = this.createElement('div'); bg.className = 'htk-background'; - bg.addEventListener ('mousedown', this._bgMouseDownHandler); - Htk.Toast.pushTop (bg); + bg.addEventListener('mousedown', this._bgMouseDownHandler); + Htk.Toast.pushTop(bg); - Vn.Node.addClass (this.node, 'modal'); - bg.appendChild (this.node); + Vn.Node.addClass(this.node, 'modal'); + bg.appendChild(this.node); - this.doc.body.appendChild (bg); - setTimeout (this._onOpacityTimeout.bind (this), 0); - } - else - { - this.doc.addEventListener ('mousedown', this._bgMouseDownHandler); - this.doc.body.appendChild (this.node); + this.doc.body.appendChild(bg); + setTimeout(this._onOpacityTimeout.bind(this), 0); + } else { + this.doc.addEventListener('mousedown', this._bgMouseDownHandler); + this.doc.body.appendChild(this.node); } this._isOpen = true; - this.reset (); - setTimeout (this._onResetTimeout.bind (this), 0); + this.reset(); + setTimeout(this._onResetTimeout.bind(this), 0); } - ,_onOpacityTimeout: function () - { + ,_onOpacityTimeout: function() { if (this._bg) this._bg.style.opacity = 1; } - ,_onResetTimeout: function () - { - this.reset (); + ,_onResetTimeout: function() { + this.reset(); } - ,reset: function () - { + ,reset: function() { if (!this._isOpen) return; @@ -156,26 +137,21 @@ module.exports = new Class var innerWidth = window.innerWidth; var innerHeight = window.innerHeight; - if (width + dblMargin > innerWidth) - { + if (width + dblMargin > innerWidth) { width = innerWidth - dblMargin; style.width = width +'px'; } - if (height + dblMargin > innerHeight) - { + if (height + dblMargin > innerHeight) { height = innerHeight - dblMargin; style.height = height +'px'; } - if (this.isModal ()) - { + if (this.isModal()) { style.marginLeft = (-node.offsetWidth / 2) +'px'; style.marginTop = (-node.offsetHeight / 2) +'px'; - } - else - { + } else { var spacing = 4; - var rect = this._parent.getBoundingClientRect (); + var rect = this._parent.getBoundingClientRect(); var left = rect.left; var top = rect.top + spacing + this._parent.offsetHeight; @@ -194,37 +170,32 @@ module.exports = new Class } } - ,hide: function () - { + ,hide: function() { if (!this._isOpen) return; - if (this._bg) - { - Htk.Toast.popTop (); - Vn.Node.remove (this._bg); - Vn.Node.removeClass (this._node, 'modal'); + if (this._bg) { + Htk.Toast.popTop(); + Vn.Node.remove(this._bg); + Vn.Node.removeClass(this._node, 'modal'); this._bg = null; - } - else - this.doc.removeEventListener ('mousedown', this._bgMouseDownHandler); + } else + this.doc.removeEventListener('mousedown', this._bgMouseDownHandler); - Vn.Node.remove (this._node); + Vn.Node.remove(this._node); this._parent = null; this._isOpen = false; - this.signalEmit ('closed'); + this.signalEmit('closed'); } - ,_bgMouseDown: function (e) - { + ,_bgMouseDown: function(e) { if (e !== this._lastEvent) - this.hide (); + this.hide(); this._lastEvent = null; } - ,_onMouseDown: function (e) - { + ,_onMouseDown: function(e) { this._lastEvent = e; } }); diff --git a/js/htk/style/main.scss b/js/htk/style/components.scss similarity index 99% rename from js/htk/style/main.scss rename to js/htk/style/components.scss index 058ab157..b79d6073 100644 --- a/js/htk/style/main.scss +++ b/js/htk/style/components.scss @@ -1,6 +1,5 @@ -@import "variables"; -@import "classes"; +@import "./variables"; /* Icon */ @@ -220,6 +219,7 @@ td.cell-image .htk-image { } & > .content { flex: 1; + overflow: hidden; & > .important { font-weight: bold; @@ -228,6 +228,8 @@ td.cell-image .htk-image { } & > p { margin: .1em 0; + text-overflow: ellipsis; + white-space: nowrap; } } & > .actions { diff --git a/js/htk/style/index.scss b/js/htk/style/index.scss new file mode 100644 index 00000000..5885abaf --- /dev/null +++ b/js/htk/style/index.scss @@ -0,0 +1,7 @@ + +@import "./variables"; +@import "./classes"; +@import "./spacing"; +@import "./text"; +@import "./width"; +@import "./components"; diff --git a/js/htk/style/spacing.scss b/js/htk/style/spacing.scss new file mode 100644 index 00000000..35e3fa10 --- /dev/null +++ b/js/htk/style/spacing.scss @@ -0,0 +1,355 @@ +/** + * CSS spacing classes + * + * vn-[p|m][t|r|b|l|a|x|y]-[none|auto|xs|sm|md|lg|xl] + * T D S + * + * T - type + * - values: p (padding), m (margin) + * + * D - direction + * - values: + * t (top), r (right), b (bottom), l (left), + * a (all), x (both left & right), y (both top & bottom) + * + * S - size + * - values: + * none, + * auto (ONLY for specific margins: vn-ml-*, vn-mr-*, vn-mx-*), + * xs (extra small), + * sm (small), + * md (medium), + * lg (large), + * xl (extra large) + */ + + @import "./variables"; + +//++++++++++++++++++++++++++++++++++++++++++++++++ Padding + +// None + +.vn-pa-none { + padding: 0; +} +.vn-pl-none { + padding-left: 0; +} +.vn-pr-none { + padding-right: 0; +} +.vn-pt-none { + padding-top: 0; +} +.vn-pb-none { + padding-bottom: 0; +} +.vn-py-none { + padding-top: 0; + padding-bottom: 0; +} +.vn-px-none { + padding-left: 0; + padding-right: 0; +} + +// Extra small + +.vn-pa-xs { + padding: $spacing-xs; +} +.vn-pl-xs { + padding-left: $spacing-xs; +} +.vn-pr-xs { + padding-right: $spacing-xs; +} +.vn-pt-xs { + padding-top: $spacing-xs; +} +.vn-pb-xs { + padding-bottom: $spacing-xs; +} +.vn-py-xs { + padding-top: $spacing-xs; + padding-bottom: $spacing-xs; +} +.vn-px-xs { + padding-left: $spacing-xs; + padding-right: $spacing-xs; +} + +// Small + +.vn-pa-sm { + padding: $spacing-sm; +} +.vn-pl-sm { + padding-left: $spacing-sm; +} +.vn-pr-sm { + padding-right: $spacing-sm; +} +.vn-pt-sm { + padding-top: $spacing-sm; +} +.vn-pb-sm { + padding-bottom: $spacing-sm; +} +.vn-py-sm { + padding-top: $spacing-sm; + padding-bottom: $spacing-sm; +} +.vn-px-sm { + padding-left: $spacing-sm; + padding-right: $spacing-sm; +} + +// Medium + +.vn-pa-md { + padding: $spacing-md; +} +.vn-pl-md { + padding-left: $spacing-md; +} +.vn-pr-md { + padding-right: $spacing-md; +} +.vn-pt-md { + padding-top: $spacing-md; +} +.vn-pb-md { + padding-bottom: $spacing-md; +} +.vn-py-md { + padding-top: $spacing-md; + padding-bottom: $spacing-md; +} +.vn-px-md { + padding-left: $spacing-md; + padding-right: $spacing-md; +} + +// Large + +.vn-pa-lg { + padding: $spacing-lg; +} +.vn-pl-lg { + padding-left: $spacing-lg; +} +.vn-pr-lg { + padding-right: $spacing-lg; +} +.vn-pt-lg { + padding-top: $spacing-lg; +} +.vn-pb-lg { + padding-bottom: $spacing-lg; +} +.vn-py-lg { + padding-top: $spacing-lg; + padding-bottom: $spacing-lg; +} +.vn-px-lg { + padding-left: $spacing-lg; + padding-right: $spacing-lg; +} + +// Extra large + +.vn-pa-xl { + padding: $spacing-xl; +} +.vn-pl-xl { + padding-left: $spacing-xl; +} +.vn-pr-xl { + padding-right: $spacing-xl; +} +.vn-pt-xl { + padding-top: $spacing-xl; +} +.vn-pb-xl { + padding-bottom: $spacing-xl; +} +.vn-py-xl { + padding-top: $spacing-xl; + padding-bottom: $spacing-xl; +} +.vn-px-xl { + padding-left: $spacing-xl; + padding-right: $spacing-xl; +} + +//++++++++++++++++++++++++++++++++++++++++++++++++ Margin + +// None + +.vn-ma-none { + padding: 0; +} +.vn-ml-none { + padding-left: 0; +} +.vn-mr-none { + padding-right: 0; +} +.vn-mt-none { + padding-top: 0; +} +.vn-mb-none { + padding-bottom: 0; +} +.vn-my-none { + padding-top: 0; + padding-bottom: 0; +} +.vn-mx-none { + padding-left: 0; + padding-right: 0; +} + +// Auto + +.vn-ml-none { + padding-left: auto; +} +.vn-mr-none { + padding-right: auto; +} +.vn-mx-none { + padding-left: auto; + padding-right: auto; +} + +// Extra small + +.vn-ma-xs { + margin: $spacing-xs; +} +.vn-mt-xs { + margin-top: $spacing-xs; +} +.vn-ml-xs { + margin-left: $spacing-xs; +} +.vn-mr-xs { + margin-right: $spacing-xs; +} +.vn-mb-xs { + margin-bottom: $spacing-xs; +} +.vn-my-xs { + margin-top: $spacing-xs; + margin-bottom: $spacing-xs; +} +.vn-mx-xs { + margin-left: $spacing-xs; + margin-right: $spacing-xs; +} + +// Small + +.vn-ma-sm { + margin: $spacing-sm; +} +.vn-mt-sm { + margin-top: $spacing-sm; +} +.vn-ml-sm { + margin-left: $spacing-sm; +} +.vn-mr-sm { + margin-right: $spacing-sm; +} +.vn-mb-sm { + margin-bottom: $spacing-sm; +} +.vn-my-sm { + margin-top: $spacing-sm; + margin-bottom: $spacing-sm; +} +.vn-mx-sm { + margin-left: $spacing-sm; + margin-right: $spacing-sm; +} + +// Medium + +.vn-ma-md { + margin: $spacing-md; +} +.vn-mt-md { + margin-top: $spacing-md; +} +.vn-ml-md { + margin-left: $spacing-md; +} +.vn-mr-md { + margin-right: $spacing-md; +} +.vn-mb-md { + margin-bottom: $spacing-md; +} +.vn-my-md { + margin-top: $spacing-md; + margin-bottom: $spacing-md; +} +.vn-mx-md { + margin-left: $spacing-md; + margin-right: $spacing-md; +} + +// Large + +.vn-ma-lg { + margin: $spacing-lg; +} +.vn-mt-lg { + margin-top: $spacing-lg; +} +.vn-ml-lg { + margin-left: $spacing-lg; +} +.vn-mr-lg { + margin-right: $spacing-lg; +} +.vn-mb-lg { + margin-bottom: $spacing-lg; +} +.vn-my-lg { + margin-top: $spacing-lg; + margin-bottom: $spacing-lg; +} +.vn-mx-lg { + margin-left: $spacing-lg; + margin-right: $spacing-lg; +} + +/* Extra large */ + +.vn-ma-xl { + margin: $spacing-xl; +} +.vn-mt-xl { + margin-top: $spacing-xl; +} +.vn-ml-xl { + margin-left: $spacing-xl; +} +.vn-mr-xl { + margin-right: $spacing-xl; +} +.vn-mb-xl { + margin-bottom: $spacing-xl; +} +.vn-my-xl { + margin-top: $spacing-xl; + margin-bottom: $spacing-xl; +} +.vn-mx-xl { + margin-left: $spacing-xl; + margin-right: $spacing-xl; +} diff --git a/js/htk/style/text.scss b/js/htk/style/text.scss new file mode 100644 index 00000000..701a84d0 --- /dev/null +++ b/js/htk/style/text.scss @@ -0,0 +1,70 @@ +@import "./variables"; + +/* Headings */ + +.text-h1, h1 { + font-size: 2.3rem; +} +.text-h2, h2 { + font-size: 2.25rem; +} +.text-h3, h3 { + font-size: 2rem; +} +.text-h4, h4 { + font-size: 1.6rem; +} +.text-h5, h5 { + font-size: 1.3rem; +} +.text-h6, h6 { + font-size: 1.125rem; +} +.text-subtitle1 { + font-size: 1.06rem; +} +.text-subtitle2 { + font-size: 1rem; +} +.text-body1 { + font-size: .875rem; +} +.text-body2 { + font-size: .875rem; +} +.text-caption { + font-size: .875rem; +} +.text-overline { + font-size: .8rem; +} + +h1, h2, h3, h4, h5, h6 { + padding: 0; + margin-top: 0; + margin-bottom: 4px; +} + +/* Colors */ + +.text-primary { + color: $color-main; +} +.text-secondary { + color: $color-font-light; +} + +/* Helpers */ + +.text-uppercase { + text-transform: uppercase; +} +.text-center { + text-align: center; +} +.text-right { + text-align: right; +} +.text-left { + text-align: left; +} diff --git a/js/htk/style/variables.scss b/js/htk/style/variables.scss index 848254cb..b516079f 100644 --- a/js/htk/style/variables.scss +++ b/js/htk/style/variables.scss @@ -1,3 +1,23 @@ +// Width + +$width-xs: 400px; +$width-sm: 544px; +$width-md: 800px; +$width-lg: 1280px; +$width-xl: 1600px; + +// Spacing + +$spacing-xs: 4px; +$spacing-sm: 8px; +$spacing-md: 16px; +$spacing-lg: 32px; +$spacing-xl: 70px; + +// Light theme + $color-primary: #8cc63f; $color-hover-cd: rgba(0, 0, 0, .05); +$color-main: #333; +$color-font-light: #666; diff --git a/js/htk/style/width.scss b/js/htk/style/width.scss new file mode 100644 index 00000000..e017de3e --- /dev/null +++ b/js/htk/style/width.scss @@ -0,0 +1,26 @@ +@import "./variables"; + +%margin-auto { + margin-left: auto; + margin-right: auto; +} +.vn-w-xs { + @extend %margin-auto; + max-width: $width-xs; +} +.vn-w-sm { + @extend %margin-auto; + max-width: $width-sm; +} +.vn-w-md { + @extend %margin-auto; + max-width: $width-md; +} +.vn-w-lg { + @extend %margin-auto; + max-width: $width-lg; +} +.vn-w-xl { + @extend %margin-auto; + max-width: $width-xl; +} diff --git a/js/htk/toast.js b/js/htk/toast.js index ac3f46f9..e08f142d 100644 --- a/js/htk/toast.js +++ b/js/htk/toast.js @@ -1,6 +1,6 @@ /** * Class to show toast messages. - **/ + */ module.exports = { maxMessages: 6 @@ -13,60 +13,52 @@ module.exports = * Shows a normal toast message. * * @param {String} message The message text - **/ - ,showMessage: function (message) - { - this._showText (message, 'message'); + */ + ,showMessage: function(message) { + this._showText(message, 'message'); } /** * Shows a warning toast message. * * @param {String} message The message text - **/ - ,showWarning: function (message) - { - this._showText (message, 'warning'); + */ + ,showWarning: function(message) { + this._showText(message, 'warning'); } /** * Shows an error toast message. * * @param {String} message The message text - **/ - ,showError: function (message) - { - this._showText (message, 'error'); + */ + ,showError: function(message) { + this._showText(message, 'error'); } - ,pushTop: function (top) - { - this._topHeap.push (top); - this._refreshPosition (); + ,pushTop: function(top) { + this._topHeap.push(top); + this._refreshPosition(); } - ,popTop: function () - { - var top = this._topHeap.pop (); - this._refreshPosition (); + ,popTop: function() { + var top = this._topHeap.pop(); + this._refreshPosition(); return top; } - ,_refreshPosition: function () - { + ,_refreshPosition: function() { if (!this._container) return; var left; var heapLen = this._topHeap.length; - if (heapLen > 0) - { + if (heapLen > 0) { var top = this._topHeap[heapLen - 1]; - var rect = top.getBoundingClientRect (); - left = (rect.left + parseInt (rect.width / 2) - window.pageXOffset) +'px'; - } - else + var rect = top.getBoundingClientRect(); + left = (rect.left + parseInt(rect.width / 2) - window.pageXOffset) +'px'; + } else left = ''; this._container.style.left = left; @@ -74,87 +66,79 @@ module.exports = /** * Hides all currently displayed toast messages. - **/ - ,hide: function () - { + */ + ,hide: function() { if (!this._container) return; if (this._timeouts) for (var i = 0; i < this._timeouts.length; i++) - clearTimeout (this._timeouts[i]); + clearTimeout(this._timeouts[i]); this._timeouts = null; - document.removeEventListener ('mousedown', this.hideHandler); - Vn.Node.remove (this._container); + document.removeEventListener('mousedown', this.hideHandler); + Vn.Node.remove(this._container); this._container = null; this.nodes = []; } - ,_createContainer: function () - { - if (!this._container) - { - var container = document.createElement ('div'); + ,_createContainer: function() { + if (!this._container) { + var container = document.createElement('div'); container.className = 'htk-toast'; - document.body.appendChild (container); + document.body.appendChild(container); - this.hideHandler = this.hide.bind (this); - document.addEventListener ('mousedown', this.hideHandler); + this.hideHandler = this.hide.bind(this); + document.addEventListener('mousedown', this.hideHandler); this._timeouts = []; this._container = container; } - this._refreshPosition (); + this._refreshPosition(); } - ,_showText: function (message, className) - { - this._createContainer (); + ,_showText: function(message, className) { + this._createContainer(); if (this._timeouts.length >= this.maxMessages) - this._onMessageTimeout (); + this._onMessageTimeout(); - var toast = document.createElement ('div'); + var toast = document.createElement('div'); toast.className = className; - toast.addEventListener ('mousedown', this._onMessageMouseDown); + toast.addEventListener('mousedown', this._onMessageMouseDown); - var textNode = document.createTextNode (message); - toast.appendChild (textNode); + var textNode = document.createTextNode(message); + toast.appendChild(textNode); - this._container.appendChild (toast); + this._container.appendChild(toast); - var timeoutId = setTimeout (this._onMessageTimeout.bind (this), this.timeout * 1000); - this._timeouts.push (timeoutId); + var timeoutId = setTimeout(this._onMessageTimeout.bind(this), this.timeout * 1000); + this._timeouts.push(timeoutId); - setTimeout (this._onShowToastTimeout.bind (this, toast), 50); + setTimeout(this._onShowToastTimeout.bind(this, toast), 50); } - ,_onShowToastTimeout: function (toast) - { - Vn.Node.addClass (toast, 'show'); + ,_onShowToastTimeout: function(toast) { + Vn.Node.addClass(toast, 'show'); } - ,_onMessageTimeout: function () - { + ,_onMessageTimeout: function() { if (!this._container) return; var nodes = this._container.childNodes; - if (nodes.length > 0) - { - clearTimeout (this._timeouts.shift ()); - Vn.Node.remove (nodes[0]); + if (nodes.length > 0) { + clearTimeout(this._timeouts.shift()); + Vn.Node.remove(nodes[0]); } if (nodes.length == 0) - this.hide (); + this.hide(); } - ,_onMessageMouseDown: function (event) - { - event.stopPropagation (); + ,_onMessageMouseDown: function(event) { + event.stopPropagation(); } }; diff --git a/js/sql/batch.js b/js/sql/batch.js index 45bdff87..96312241 100644 --- a/js/sql/batch.js +++ b/js/sql/batch.js @@ -4,7 +4,7 @@ var Value = require('./value'); /** * A map container for many Sql.Object - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/sql/delete.js b/js/sql/delete.js index eed14b9b..41ee95f5 100644 --- a/js/sql/delete.js +++ b/js/sql/delete.js @@ -1,19 +1,18 @@ -var Stmt = require ('./stmt'); +var Stmt = require('./stmt'); /** * The equivalent of a SQL delete. - **/ + */ module.exports = new Class ({ Extends: Stmt - ,render: function (batch) - { - var sql = 'DELETE FROM ' + this.renderTarget (batch); + ,render: function(batch) { + var sql = 'DELETE FROM ' + this.renderTarget(batch); if (this.where) - sql += ' WHERE ' + this.where.render (batch); + sql += ' WHERE ' + this.where.render(batch); sql += ' LIMIT 1'; // Only for security. diff --git a/js/sql/dml.js b/js/sql/dml.js index a17fde24..ab5cf0db 100644 --- a/js/sql/dml.js +++ b/js/sql/dml.js @@ -5,7 +5,7 @@ var Field = require ('./field'); /** * The equivalent of a SQL DML. - **/ + */ module.exports = new Class ({ Extends: Stmt diff --git a/js/sql/expr.js b/js/sql/expr.js index 140fcbbb..df05401e 100644 --- a/js/sql/expr.js +++ b/js/sql/expr.js @@ -1,9 +1,9 @@ -var Object = require ('./object'); +var Object = require('./object'); /** * The equivalent of a SQL expression. - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/sql/field.js b/js/sql/field.js index a0d4b9ee..315d5af1 100644 --- a/js/sql/field.js +++ b/js/sql/field.js @@ -1,11 +1,11 @@ -var Expr = require ('./expr'); +var Expr = require('./expr'); /** * The equivalent of a SQL field. * * @param {string} taget The name of the owner table - **/ + */ module.exports = new Class ({ Extends: Expr @@ -24,8 +24,7 @@ module.exports = new Class } } - ,render: function (batch) - { + ,render: function(batch) { var sql = (this.target) ? '`' + this.target + '`.' : ''; return sql + '`' + this.name + '`'; } diff --git a/js/sql/filter-item.js b/js/sql/filter-item.js index dccf5a63..ce5b4640 100644 --- a/js/sql/filter-item.js +++ b/js/sql/filter-item.js @@ -1,9 +1,9 @@ -var Operation = require ('./operation'); +var Operation = require('./operation'); /** * The equivalent of a SQL operation. - **/ + */ module.exports = new Class ({ Extends: Operation diff --git a/js/sql/filter.js b/js/sql/filter.js index 54512ce7..a574ff3b 100644 --- a/js/sql/filter.js +++ b/js/sql/filter.js @@ -3,7 +3,7 @@ var Operation = require ('./operation'); /** * The equivalent of a SQL operation. - **/ + */ module.exports = new Class ({ Extends: Operation diff --git a/js/sql/function.js b/js/sql/function.js index 6d868a3a..b24df9d9 100644 --- a/js/sql/function.js +++ b/js/sql/function.js @@ -7,7 +7,7 @@ var List = require ('./list'); * * @param {string} funcName The name of the function * @param {Array#Sql.Expr} param Array with function parameters - **/ + */ module.exports = new Class ({ Extends: Expr diff --git a/js/sql/holder.js b/js/sql/holder.js index 2d1a3f2d..797731e2 100644 --- a/js/sql/holder.js +++ b/js/sql/holder.js @@ -1,9 +1,9 @@ -var Object = require ('./object'); +var Object = require('./object'); /** * A holder for another object. - **/ + */ module.exports = new Class ({ Extends: Object @@ -16,12 +16,11 @@ module.exports = new Class } } - ,render: function (batch) - { + ,render: function(batch) { var object; - if (batch && (object = batch.get (this.id))) - return object.render (batch); + if (batch && (object = batch.get(this.id))) + return object.render(batch); return '#'+ this.id; } diff --git a/js/sql/insert.js b/js/sql/insert.js index 51df787d..a74d29ae 100644 --- a/js/sql/insert.js +++ b/js/sql/insert.js @@ -3,7 +3,7 @@ var Dml = require ('./dml'); /** * The equivalent of a SQL insert. - **/ + */ module.exports = new Class ({ Extends: Dml diff --git a/js/sql/list.js b/js/sql/list.js index 7dd109e1..e9ff9275 100644 --- a/js/sql/list.js +++ b/js/sql/list.js @@ -3,7 +3,7 @@ var Object = require ('./object'); /** * List of Sql.Object - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/sql/multi-stmt.js b/js/sql/multi-stmt.js index 60ae789e..ecd91a91 100644 --- a/js/sql/multi-stmt.js +++ b/js/sql/multi-stmt.js @@ -3,7 +3,7 @@ var Stmt = require ('./stmt'); /** * The equivalent of a SQL multi statement. - **/ + */ module.exports = new Class ({ Extends: Stmt diff --git a/js/sql/object.js b/js/sql/object.js index 21db49dd..284756f2 100644 --- a/js/sql/object.js +++ b/js/sql/object.js @@ -1,6 +1,6 @@ /** * Base class for all objects on this library. - **/ + */ module.exports = new Class ({ Extends: Vn.Object @@ -10,14 +10,14 @@ module.exports = new Class * * @param {Sql.Batch} batch The batch used to render the object * @return {String} The SQL string - **/ + */ ,render: function (batch) {} /** * Gets if the object is ready to be rendered. * * @return {boolean} %true if the object is ready, %false otherwise - **/ + */ ,isReady: function () { return true; @@ -27,6 +27,6 @@ module.exports = new Class * Through the query looking for containers and adds it to the batch. * * @return {Sql.Batch} batch The batch - **/ + */ ,findHolders: function (batch) {} }); diff --git a/js/sql/operation.js b/js/sql/operation.js index 229cd2b1..be8a4145 100644 --- a/js/sql/operation.js +++ b/js/sql/operation.js @@ -6,7 +6,7 @@ var Expr = require ('./expr'); * * @param {Array#Sql.Expr} expr Array with the exprs * @param {Sql..Operation.Type} type The type of the operation - **/ + */ var Operation = new Class (); module.exports = Operation; diff --git a/js/sql/search-tags.js b/js/sql/search-tags.js index 5fe37250..4c24ff80 100644 --- a/js/sql/search-tags.js +++ b/js/sql/search-tags.js @@ -1,22 +1,19 @@ -var Value = require ('./value'); +var Value = require('./value'); /** * The equivalent of a SQL value. - **/ + */ module.exports = new Class ({ Extends: Value ,Tag: 'sql-search-tags' - ,render: function (batch) - { - if (typeof this._value == 'string') - { - var value = this._value.replace (/^|\s+|$/g, '%'); - return "'" + value.replace (this.regexp, this.replaceFunc) + "'"; - } - else - return this.parent (); + ,render: function(batch) { + if (typeof this._value == 'string') { + var value = this._value.replace(/^|\s+|$/g, '%'); + return "'" + value.replace(this.regexp, this.replaceFunc) + "'"; + } else + return this.parent(); } }); diff --git a/js/sql/select.js b/js/sql/select.js index 96558a6a..4a0db861 100644 --- a/js/sql/select.js +++ b/js/sql/select.js @@ -4,7 +4,7 @@ var Field = require ('./field'); /** * The equivalent of a SQL select. - **/ + */ module.exports = new Class ({ Extends: Stmt diff --git a/js/sql/stmt.js b/js/sql/stmt.js index ba7e86c3..e447db74 100644 --- a/js/sql/stmt.js +++ b/js/sql/stmt.js @@ -4,7 +4,7 @@ var Expr = require ('./expr'); /** * The equivalent of a SQL statement. - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/sql/string.js b/js/sql/string.js index b58341f4..aa9fefb7 100644 --- a/js/sql/string.js +++ b/js/sql/string.js @@ -4,7 +4,7 @@ var Holder = require ('./holder'); /** * Literal SQL string. - **/ + */ module.exports = new Class ({ Extends: Stmt diff --git a/js/sql/table.js b/js/sql/table.js index 7e5bcf9c..3ab4cf9f 100644 --- a/js/sql/table.js +++ b/js/sql/table.js @@ -1,9 +1,9 @@ -var Target = require ('./target'); +var Target = require('./target'); /** * Represents a database table. - **/ + */ module.exports = new Class ({ Extends: Target @@ -21,8 +21,7 @@ module.exports = new Class } } - ,render: function (batch) - { + ,render: function(batch) { var sql = this.schema ? '`' + this.schema + '`.' : ''; sql += '`' + this.name + '`'; return sql; diff --git a/js/sql/target.js b/js/sql/target.js index 1065f09a..e45fda9a 100644 --- a/js/sql/target.js +++ b/js/sql/target.js @@ -1,9 +1,9 @@ -var Object = require ('./object'); +var Object = require('./object'); /** * The equivalent of a SQL target. - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/sql/update.js b/js/sql/update.js index 456a3aec..89d4ae8e 100644 --- a/js/sql/update.js +++ b/js/sql/update.js @@ -3,7 +3,7 @@ var Dml = require ('./dml'); /** * The equivalent of a SQL update. - **/ + */ module.exports = new Class ({ Extends: Dml diff --git a/js/sql/value.js b/js/sql/value.js index f0c6a061..5f79032f 100644 --- a/js/sql/value.js +++ b/js/sql/value.js @@ -3,7 +3,7 @@ var Expr = require('./expr'); /** * The equivalent of a SQL value. - **/ + */ module.exports = new Class({ Extends: Expr ,Tag: 'sql-value' @@ -12,7 +12,7 @@ module.exports = new Class({ { /** * The master param. - **/ + */ param: { type: Vn.Param @@ -26,7 +26,7 @@ module.exports = new Class({ }, /** * The value. - **/ + */ value: { type: String diff --git a/js/vn/cookie.js b/js/vn/cookie.js index 045edbda..7ab233e1 100644 --- a/js/vn/cookie.js +++ b/js/vn/cookie.js @@ -1,6 +1,6 @@ /** * Brownser cookie handler. - **/ + */ module.exports = { set: function (key, value, days) diff --git a/js/vn/date.js b/js/vn/date.js index 256c2edb..2c0d887a 100644 --- a/js/vn/date.js +++ b/js/vn/date.js @@ -1,6 +1,6 @@ /** * Date handling utilities. - **/ + */ Date.prototype.clone = function() { return new Date(this.getTime()); diff --git a/js/vn/hash-listener.js b/js/vn/hash-listener.js index e9f90f4f..2a554675 100644 --- a/js/vn/hash-listener.js +++ b/js/vn/hash-listener.js @@ -1,15 +1,14 @@ -var Object = require ('./object'); +var Object = require('./object'); /** * Class to handle the URL. - **/ + */ module.exports = new Class ({ Extends: Object - ,changed: function () - { - this.signalEmit ('changed'); + ,changed: function() { + this.signalEmit('changed'); } }); diff --git a/js/vn/hash.js b/js/vn/hash.js index c96ff5de..1a8b6417 100644 --- a/js/vn/hash.js +++ b/js/vn/hash.js @@ -3,7 +3,7 @@ var HashListener = require('./hash-listener'); /** * Class to handle the URL. - **/ + */ module.exports = { _hash: null @@ -30,7 +30,7 @@ module.exports = * Gets the hash part of the URL. * * @param {string} key The variable name - **/ + */ ,get: function(key) { return this._hashMap[key]; } @@ -39,7 +39,7 @@ module.exports = * Unsets a hash key. * * @param {string} key The variable name - **/ + */ ,unset: function(key) { this.add({[key]: undefined}); } @@ -48,7 +48,7 @@ module.exports = * Sets the hash part of the URL, respecting the current hash variables. * * @param {Object} map A key-value map - **/ + */ ,add: function(map) { var newMap = this._hashMap; @@ -62,7 +62,7 @@ module.exports = * Sets the hash part of the URL. * * @param {Object} map A key-value map - **/ + */ ,set: function(map) { if (map) for (var key in map) @@ -92,7 +92,7 @@ module.exports = * @param {Object} map A key-value map * @param {boolean} add %true to combine with the current map, %false otherwise * @return {String} The URL - **/ + */ ,make: function(map, add) { var hash = '#!'; diff --git a/js/vn/json-connection.js b/js/vn/json-connection.js index 7e981ad7..e5ec6d22 100644 --- a/js/vn/json-connection.js +++ b/js/vn/json-connection.js @@ -4,7 +4,7 @@ var JsonException = require('./json-exception'); /** * Handler for JSON rest connections. - **/ + */ module.exports = new Class({ Extends: Object @@ -14,7 +14,7 @@ module.exports = new Class({ /** * Initilizes the connection object. - **/ + */ ,initialize: function() { this.parent(); this.fetchToken(); @@ -44,7 +44,7 @@ module.exports = new Class({ * @param {String} password The user password * @param {Boolean} remember Specifies if the user should be remembered * @param {Function} openCallback The function to call when operation is done - **/ + */ ,open: function(user, pass, remember, callback) { if (user !== null && user !== undefined) { var params = { @@ -82,7 +82,7 @@ module.exports = new Class({ * Closes the connection to the REST service. * * @param {Function} callback The function to call when operation is done - **/ + */ ,close: function(callback) { this.lbSend('POST', 'Accounts/logout', null, this._onClose.bind(this, callback)); @@ -109,7 +109,7 @@ module.exports = new Class({ * * @param {String} user The user name * @param {Function} callback The callback function - **/ + */ ,supplantUser: function(user, callback) { var params = {supplantUser: user}; this.send('client/supplant', params, @@ -126,7 +126,7 @@ module.exports = new Class({ /** * Ends the user supplanting and restores the last login. - **/ + */ ,supplantEnd: function() { this.lbSend('POST', 'Accounts/logout'); this.fetchToken(); @@ -139,7 +139,7 @@ module.exports = new Class({ * @param {String} restService The service path * @param {Map} params The params to pass to the service * @param {Function} callback The response callback - **/ + */ ,send: function(restService, params, callback) { if (!params) params = {}; diff --git a/js/vn/json-exception.js b/js/vn/json-exception.js index cd7ebc13..e60c416b 100644 --- a/js/vn/json-exception.js +++ b/js/vn/json-exception.js @@ -1,6 +1,6 @@ /** * This class stores the database errors. - **/ + */ module.exports = new Class ({ exception: null @@ -10,8 +10,7 @@ module.exports = new Class ,line: null ,trace: null - ,initialize: function (exception, message, code, file, line, trace) - { + ,initialize: function(exception, message, code, file, line, trace) { this.exception = exception; this.message = message; this.code = code; diff --git a/js/vn/locale.js b/js/vn/locale.js index 1a786050..2ee50062 100644 --- a/js/vn/locale.js +++ b/js/vn/locale.js @@ -3,7 +3,7 @@ vnLocaleStrings = {}; /** * Class to manage the internationalization. - **/ + */ module.exports = { language: null diff --git a/js/vn/object.js b/js/vn/object.js index a8818c80..651187b9 100644 --- a/js/vn/object.js +++ b/js/vn/object.js @@ -3,7 +3,7 @@ * The main base class. Manages the signal system. * * @param signals Map with all connected signal handlers - **/ + */ module.exports = new Class ({ Tag: 'vn-object' @@ -55,7 +55,7 @@ module.exports = new Class * @param {String} id The signal identifier * @param {Function} callback The callback * @param {Object} instance The instance - **/ + */ ,on: function (id, callback, instance) { if (!(callback instanceof Function)) @@ -84,7 +84,7 @@ module.exports = new Class * @param {String} id The signal identifier * @param {Function} callback The callback * @param {Boolean} block %true for lock the signal, %false for unlock - **/ + */ ,blockSignal: function (id, callback, block, instance) { if (!this._signalData) @@ -105,7 +105,7 @@ module.exports = new Class * Emits a signal in the current object. * * @param {String} id The signal identifier - **/ + */ ,signalEmit: function (id) { if (!this._signalData) @@ -133,7 +133,7 @@ module.exports = new Class * @param {String} id The signal identifier * @param {Function} callback The connected callback * @param {Object} instance The instance - **/ + */ ,disconnect: function (id, callback, instance) { if (!this._signalData) @@ -154,7 +154,7 @@ module.exports = new Class * Disconnects all signals for the given instance. * * @param {Object} instance The instance - **/ + */ ,disconnectByInstance: function (instance) { if (!this._signalData) @@ -175,7 +175,7 @@ module.exports = new Class /** * Destroys the object, this method should only be called before losing * the last reference to the object. - **/ + */ ,_destroy: function () { if (!this._signalData) diff --git a/js/vn/param.js b/js/vn/param.js index 6b26855c..7001198c 100644 --- a/js/vn/param.js +++ b/js/vn/param.js @@ -5,7 +5,7 @@ var Value = require ('./value'); /** * Simply a linkable value holder. - **/ + */ module.exports = new Class ({ Extends: Object diff --git a/js/vn/url.js b/js/vn/url.js index f5f9bba0..582733d8 100644 --- a/js/vn/url.js +++ b/js/vn/url.js @@ -1,13 +1,13 @@ /** * Class to handle the URL. - **/ + */ module.exports = { /** * Gets the value of a URL variable. * * @param {string} key The variable name - **/ + */ getQuery: function(key) { var regExp = new RegExp('[\?\&]'+ key +'=([^\&]*)(\&?)', 'i'); var value = location.search.match(regExp); @@ -20,7 +20,7 @@ module.exports = * * @param {string} key The variable name * @param {string} value The new value - **/ + */ ,setQuery: function(key, value) { var changed = true; var found = false; diff --git a/js/vn/vn.js b/js/vn/vn.js index 6a0ebe5a..6c8a13f5 100644 --- a/js/vn/vn.js +++ b/js/vn/vn.js @@ -45,7 +45,7 @@ Vn = module.exports = { * is already included, does nothing. * * @param {string} fileName The stylesheet file name - **/ + */ ,includeCss: function (fileName) { var cssData = this.cssIncludes[fileName]; @@ -75,7 +75,7 @@ Vn = module.exports = { * Excludes a CSS stylesheet from the current document. * * @param {string} fileName The stylesheet file name - **/ + */ ,excludeCss: function (fileName) { var cssData = this.cssIncludes[fileName]; @@ -145,7 +145,7 @@ Vn = module.exports = { * Should be called on the last statically incuded script. * * @param {Function} callback The main function - **/ + */ ,main: function (callback) { if (this.mainCalled) @@ -206,7 +206,7 @@ Vn = module.exports = { * current script. * * @param {...} The list of files as function arguments - **/ + */ ,include: function () { for (var i = 0; i < arguments.length; i++) @@ -223,7 +223,7 @@ Vn = module.exports = { * current script. * * @param {...} The list of files as function arguments - **/ + */ ,resource: function () { for (var i = 0; i < arguments.length; i++) @@ -240,7 +240,7 @@ Vn = module.exports = { * are resolved. * * @param {Function} callback The callback function - **/ + */ ,define: function (callback) { this.currentCallback = callback; @@ -251,7 +251,7 @@ Vn = module.exports = { * * @param {string} libName The folder of the library * @param {Array<string>} files Array with every library file name - **/ + */ ,includeLib: function (libName, files) { Vn.Locale.loadScript ('js/'+ libName +'.js'); @@ -267,7 +267,7 @@ Vn = module.exports = { * @param {string} fileName The script file name * @param {Function} callback The function to call when script is * downloaded and included - **/ + */ ,includeJs: function (fileName, callback, skipVersion) { var includeData = this._realIncludeJs (fileName, skipVersion); @@ -344,7 +344,7 @@ Vn = module.exports = { * * @param {string} path The file path * @param {Function} callback The function to call when file is downloaded - **/ + */ ,loadXml: function (path, callback) { var includeData = this._realLoadXml (path); @@ -387,7 +387,7 @@ Vn = module.exports = { * * @param {string} path The file path * @return {Object} The DOM object - **/ + */ ,getXml: function (path) { var includeData = this.includes[path]; @@ -402,7 +402,7 @@ Vn = module.exports = { * Checks if user is using a mobile browser. * * return {boolean} %true if is mobile, %false otherwise. - **/ + */ ,isMobile: function () { if (this.isMobileCached === null) diff --git a/rest/core/query.php b/rest/core/query.php index a188e300..bca294d6 100644 --- a/rest/core/query.php +++ b/rest/core/query.php @@ -74,7 +74,7 @@ class Query extends Vn\Web\JsonRequest { /** * Transforms the database result into a JSON parseable object. - **/ + */ function transformResult($result) { $tableMap = []; $columns = $result->fetch_fields(); @@ -161,7 +161,7 @@ class Query extends Vn\Web\JsonRequest { /** * Transforms the database value into a JSON parseable value. - **/ + */ function castValue($value, $type) { if ($value === '' && $type != Type::STRING) $value = NULL; diff --git a/rest/core/restore-password.php b/rest/core/restore-password.php index 3d8812a8..3408edf0 100644 --- a/rest/core/restore-password.php +++ b/rest/core/restore-password.php @@ -4,7 +4,7 @@ include __DIR__.'/account.php'; /** * Restores the user password. - **/ + */ class RestorePassword extends Vn\Web\JsonRequest { const PARAMS = ['verificationToken', 'newPassword']; diff --git a/rest/core/set-password.php b/rest/core/set-password.php index 99de91bd..5ceaa87b 100644 --- a/rest/core/set-password.php +++ b/rest/core/set-password.php @@ -4,7 +4,7 @@ include __DIR__.'/account.php'; /** * Sets the user password. - **/ + */ class SetPassword extends Vn\Web\JsonRequest { const PARAMS = [ 'setUser' diff --git a/rest/image/image.php b/rest/image/image.php index 1e5b3112..0e6cae0f 100644 --- a/rest/image/image.php +++ b/rest/image/image.php @@ -7,7 +7,7 @@ class Image { * Creates an image resource from a valid image file. * * @param string $srcFile The source file name - **/ + */ static function create($srcFile) { $imageType = exif_imagetype($srcFile); @@ -39,7 +39,7 @@ class Image { * @param integer $maxWidth The maximum width of resized image in pixels * @param boolean $crop Wether to crop the image * @param boolean $symbolicSrc If it is not necessary to resize the image creates a symbolic link using the passed path as source - **/ + */ static function resizeSave($image, $dstFile, $maxHeight, $maxWidth, $crop = FALSE, $symbolicSrc = NULL) { $width = imagesx($image); $height = imagesy($image); diff --git a/rest/tpv/confirm-mail.php b/rest/tpv/confirm-mail.php index 29fcbf68..719bfed1 100644 --- a/rest/tpv/confirm-mail.php +++ b/rest/tpv/confirm-mail.php @@ -4,7 +4,7 @@ require_once(__DIR__.'/tpv.php'); /** * Gets transaction confirmations from the IMAP mailbox. - **/ + */ class ConfirmMail extends Vn\Lib\Method { function run($db) { $imap = NULL; diff --git a/rest/tpv/confirm-post.php b/rest/tpv/confirm-post.php index 9aef1112..20d3cb79 100644 --- a/rest/tpv/confirm-post.php +++ b/rest/tpv/confirm-post.php @@ -4,7 +4,7 @@ require_once(__DIR__.'/tpv.php'); /** * Gets transaction confirmation from HTTP POST. - **/ + */ class ConfirmPost extends Vn\Web\RestRequest { function run($db) { Tpv::confirm($db, $_POST); diff --git a/rest/tpv/confirm-soap.php b/rest/tpv/confirm-soap.php index 07e44d2b..0af1cd8e 100644 --- a/rest/tpv/confirm-soap.php +++ b/rest/tpv/confirm-soap.php @@ -5,7 +5,7 @@ require_once(__DIR__.'/tpv.php'); /** * Gets transaction confirmation from SOAP service. - **/ + */ class ConfirmSoap extends Vn\Web\RestRequest { function run($db) { global $tpvConfirmSoap; diff --git a/rest/tpv/tpv.php b/rest/tpv/tpv.php index 652de159..3ae34f04 100644 --- a/rest/tpv/tpv.php +++ b/rest/tpv/tpv.php @@ -3,7 +3,7 @@ class Tpv { /** * Tryes to confirm a transaction with the given params. - **/ + */ static function confirm($db, $params) { if (!(isset($params['Ds_Amount']) && isset($params['Ds_Order']) diff --git a/web/app.php b/web/app.php index c47d31b2..4f1e5636 100644 --- a/web/app.php +++ b/web/app.php @@ -7,7 +7,7 @@ namespace Vn\Web; * * Format for $_REQUEST['srv'] variable: * - [serviceName]:[requestDir]/[requestFile] - **/ + */ class App extends \Vn\Lib\App { protected $conn = NULL; private $allowedServices = @@ -48,7 +48,7 @@ class App extends \Vn\Lib\App { * or the default config file if isn't defined a file for the vhost. * * @return string The config file name - **/ + */ function getConfigFile() { if (!empty($_SERVER['SERVER_NAME']) && preg_match('/^[\w\-\.]+$/', $_SERVER['SERVER_NAME'])) { diff --git a/web/json-exception.php b/web/json-exception.php index d71e16f6..7b22549b 100644 --- a/web/json-exception.php +++ b/web/json-exception.php @@ -8,7 +8,7 @@ namespace Vn\Web; * @property string $exception The exception name * @property string $message The message string * @property string $code The code of message - **/ + */ class JsonException { var $exception = NULL; var $message; diff --git a/web/json-reply.php b/web/json-reply.php index a3f7a4fa..07b24579 100644 --- a/web/json-reply.php +++ b/web/json-reply.php @@ -7,7 +7,7 @@ namespace Vn\Web; * * @property Object $data The returned data * @property array $warnings Array with warning messages - **/ + */ class JsonReply { var $data = NULL; var $warnings = NULL; diff --git a/web/json-request.php b/web/json-request.php index 58c5bdf5..f8535fa8 100644 --- a/web/json-request.php +++ b/web/json-request.php @@ -4,6 +4,6 @@ namespace Vn\Web; /** * Base class for JSON services. - **/ + */ abstract class JsonRequest extends RestRequest {} diff --git a/web/jwt.php b/web/jwt.php index 121ac22a..5aec98e5 100644 --- a/web/jwt.php +++ b/web/jwt.php @@ -7,7 +7,7 @@ use Exception; /** * Basic class to encode, decode and verify JWT tokens. It implements the HS256 * algorithm from the RFC 7519 standard. - **/ + */ class Jwt { /** * Creates a new JWT token with the passed $payload and $key. @@ -15,7 +15,7 @@ class Jwt { * @param {Array} $payload The data to encode * @param {string} $key The key used to sign the token * @return {string} The new JWT token - **/ + */ static function encode($payload, $key) { $header = [ 'alg' => 'HS256', @@ -35,7 +35,7 @@ class Jwt { * @param {Array} $token The JWT token * @param {string} $key The key used to validate the token * @return {string} The JWT validated and decoded data - **/ + */ static function decode($token, $key) { $parts = explode('.', $token); diff --git a/web/rest-request.php b/web/rest-request.php index 78f6796a..55fa0878 100644 --- a/web/rest-request.php +++ b/web/rest-request.php @@ -9,7 +9,7 @@ class Security { /** * Base class for REST services. - **/ + */ abstract class RestRequest extends \Vn\Lib\Method { const PARAMS = NULL; const SECURITY = Security::DEFINER; -- 2.40.1 From f80e8b44762491dbc906dd99a93218ece7cc7a8f Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Thu, 26 May 2022 10:00:19 +0200 Subject: [PATCH 09/10] Beta --- forms/admin/access-log/ui.xml | 14 ++++---- forms/ecomerce/catalog/catalog.js | 36 +++++++++++---------- js/hedera/app.js | 54 +++++++++++++++++-------------- js/hedera/gui.js | 5 ++- js/hedera/gui.scss | 22 +++++++------ js/htk/style/components.scss | 1 + js/vn/json-connection.js | 7 ++-- 7 files changed, 75 insertions(+), 64 deletions(-) diff --git a/forms/admin/access-log/ui.xml b/forms/admin/access-log/ui.xml index eb3b8661..732def39 100644 --- a/forms/admin/access-log/ui.xml +++ b/forms/admin/access-log/ui.xml @@ -5,8 +5,9 @@ <db-form id="userForm"> <db-model property="model"> <custom> - SELECT u.id, u.nickname, u.email, c.phone - FROM account.user u + SELECT u.id, u.name user, u.nickname, u.email, c.phone, r.name role + FROM account.user u + JOIN account.role r ON r.id = u.role LEFT JOIN vn.client c ON c.id = u.id WHERE u.id = #user </custom> @@ -24,10 +25,11 @@ <div id="form" class="access-log"> <div class="box vn-w-xs vn-pa-lg"> <div class="form"> - <p>#{{$.userForm.id}}</p> - <p>{{$.userForm.nickname}}</p> - <p>{{$.userForm.email}}</p> - <p>{{$.userForm.phone}}</p> + <h4><htk-text form="user-form" column="nickname"/></h4> + <p>#<htk-text form="user-form" column="id"/> - <htk-text form="user-form" column="user"/></p> + <p><htk-text form="user-form" column="role"/></p> + <p><htk-text form="user-form" column="email"/></p> + <p><htk-text form="user-form" column="phone"/></p> </div> </div> <htk-repeater form-id="iter" class="box vn-w-xs htk-list vn-mt-md"> diff --git a/forms/ecomerce/catalog/catalog.js b/forms/ecomerce/catalog/catalog.js index 1249a32c..f9dfdaf7 100644 --- a/forms/ecomerce/catalog/catalog.js +++ b/forms/ecomerce/catalog/catalog.js @@ -295,10 +295,8 @@ Vn.Filter = new Class({ Extends: Htk.Field ,Tag: 'vn-filter' ,Child: 'model' - ,Properties: - { - model: - { + ,Properties: { + model: { type: Db.Model ,set: function(x) { x.batch = this._batch; @@ -309,8 +307,7 @@ Vn.Filter = new Class({ return this._model; } }, - placeholder: - { + placeholder: { type: String ,set: function(x) { this._select.placeholder = x; @@ -320,8 +317,7 @@ Vn.Filter = new Class({ return this._placeholder; } }, - filter: - { + filter: { type: Sql.Filter ,set: function(x) { this._filter = x; @@ -330,7 +326,7 @@ Vn.Filter = new Class({ ,get: function() { return this._filter; } - }, + } } ,_valueColumnIndex: 0 @@ -432,18 +428,24 @@ Vn.Filter = new Class({ if (!this._label) return; - var row = -1; + let row = -1; + const model = this._model; - if (this._model.ready) - row = this._model.searchByIndex(this._valueColumnIndex, this._value); + if (model) { + if (this._model.ready) + row = model.searchByIndex(this._valueColumnIndex, this._value); - if (row != -1) { - var label = this._model.getByIndex(row, this._showColumnIndex); - this._label.nodeValue = label; - this._emptyLabel = false; + if (row != -1) { + var label = model.getByIndex(row, this._showColumnIndex); + this._label.nodeValue = label; + this._emptyLabel = false; + } else { + this._emptyLabel = true; + this._label.nodeValue = _('Loading...'); + } } else { this._emptyLabel = true; - this._label.nodeValue = _('Loading...'); + this._label.nodeValue = ''; } } }); diff --git a/js/hedera/app.js b/js/hedera/app.js index a27fa926..faded048 100644 --- a/js/hedera/app.js +++ b/js/hedera/app.js @@ -62,38 +62,42 @@ module.exports = new Class({ } ,_onConnError: function(conn, error) { - if (error instanceof Vn.JsonException) - switch (error.exception) { - case 'BadLogin': - Htk.Toast.showError(_('Invalid login')); - this._logout(); - break; - case 'Forbidden': - Htk.Toast.showError(_('You don\'t have enough privileges')); - break; - case 'UserDisabled': - Htk.Toast.showError(_('User disabled')); - this._logout(); - break; - case 'SessionExpired': - Htk.Toast.showError(_('Session expired')); - this._logout(); - break; - case 'OutdatedVersion': - this._newVersion(error); - break; - default: + if (error instanceof Vn.JsonException) { + if (error.message) Htk.Toast.showError(error.message); - } else if (error.statusCode) - switch (error.statusCode) { + else + switch (error.exception) { + case 'BadLogin': + Htk.Toast.showError(_('Invalid login')); + this._logout(); + break; + case 'Forbidden': + Htk.Toast.showError(_('You don\'t have enough privileges')); + break; + case 'UserDisabled': + Htk.Toast.showError(_('User disabled')); + this._logout(); + break; + case 'SessionExpired': + Htk.Toast.showError(_('Session expired')); + this._logout(); + break; + case 'OutdatedVersion': + this._newVersion(error); + break; + default: + Htk.Toast.showError(error.message); + } + } else if (error.statusCode) { + switch (error.statusCode) { case 401: Htk.Toast.showError(_('Invalid login')); this._logout(); break; default: Htk.Toast.showError(error.message); - } - else { + } + } else { console.error(error); this._notifyError(error); } diff --git a/js/hedera/gui.js b/js/hedera/gui.js index 87d5c6c0..5c248edc 100644 --- a/js/hedera/gui.js +++ b/js/hedera/gui.js @@ -477,9 +477,8 @@ module.exports = new Class({ this._onUserSupplant.bind(this, callback, user)); } - ,_onUserSupplant: function(callback, user, supplantOk) { - if (!supplantOk) - return; + ,_onUserSupplant: function(callback, user, supplantOk, err) { + if (err) throw err; sessionStorage.setItem('supplantUser', user); this.loadMenu(); diff --git a/js/hedera/gui.scss b/js/hedera/gui.scss index e529ebbf..fe811fa2 100644 --- a/js/hedera/gui.scss +++ b/js/hedera/gui.scss @@ -1,6 +1,9 @@ @import "../htk/style/classes"; +$side-panel-width: 250px; +$navbar-height: 64px; + .vn-gui { height: inherit; @@ -16,12 +19,12 @@ .navbar { position: fixed; background-color: #1A1A1A; - left: 250px; + left: $side-panel-width; top: 0; right: 0; z-index: 1; overflow: hidden; - height: 64px; + height: $navbar-height; color: white; display: flex; align-items: center; @@ -48,17 +51,18 @@ align-items: center; gap: 15px; overflow: hidden; + padding-left: 15px; & > .title { - white-space: nowrap; overflow: hidden; - text-overflow: ellipsis; h1 { font-weight: normal; font-size: 1.4em; - padding-left: 8px; margin: 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } } } @@ -122,7 +126,7 @@ top: 0; background-color: white; z-index: 20; - width: 250px; + width: $side-panel-width; } .menu-overflow { position: absolute; @@ -135,7 +139,7 @@ .menu-header { background-color: #1A1A1A; color: white; - height: 64px; + height: $navbar-height; display: flex; } .logo { @@ -269,8 +273,8 @@ /* Body */ & > .body { - margin-left: 250px; - padding-top: 4.4em; + margin-left: $side-panel-width; + padding-top: $navbar-height; height: inherit; box-sizing: border-box; height: inherit; diff --git a/js/htk/style/components.scss b/js/htk/style/components.scss index b79d6073..93580c6f 100644 --- a/js/htk/style/components.scss +++ b/js/htk/style/components.scss @@ -230,6 +230,7 @@ td.cell-image .htk-image { margin: .1em 0; text-overflow: ellipsis; white-space: nowrap; + overflow: hidden; } } & > .actions { diff --git a/js/vn/json-connection.js b/js/vn/json-connection.js index e5ec6d22..9e012eb8 100644 --- a/js/vn/json-connection.js +++ b/js/vn/json-connection.js @@ -116,12 +116,12 @@ module.exports = new Class({ this._onUserSupplant.bind(this, callback)); } - ,_onUserSupplant: function(callback, json) { + ,_onUserSupplant: function(callback, json, err) { if (json) this.token = json; if (callback) - callback(json != null); + callback(err == null, err); } /** @@ -302,7 +302,6 @@ module.exports = new Class({ data = null; error = e; } - if (callback) try { callback(data, error); @@ -314,7 +313,7 @@ module.exports = new Class({ if (error) { if (error.exception == 'SessionExpired') this.clearToken(); - + this.signalEmit('error', error); } } -- 2.40.1 From 60eabacf22b43198f73f1be6a9ac9bc073a13b5d Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio <juan@verdnatura.es> Date: Thu, 26 May 2022 10:01:29 +0200 Subject: [PATCH 10/10] Version increased --- debian/changelog | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7f5ab720..54e7bb79 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -hedera-web (1.407.69) stable; urgency=low +hedera-web (1.407.70) stable; urgency=low * Initial Release. diff --git a/package.json b/package.json index cc6d5ac9..cb39779d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hedera-web", - "version": "1.407.69", + "version": "1.407.70", "description": "Verdnatura web page", "license": "GPL-3.0", "repository": { -- 2.40.1