diff --git a/.circleci/config.yml b/.circleci/config.yml index 0fc2473ce..fc6f86d2e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,7 +9,7 @@ jobs: # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ # - image: circleci/postgres:9.4 - - image: circleci/postgres:13.1-ram + - image: circleci/postgres:13.3-ram environment: POSTGRES_USER: penpot_test POSTGRES_PASSWORD: penpot_test @@ -29,21 +29,21 @@ jobs: # Download and cache dependencies - restore_cache: keys: - - v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}} + - v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}} # fallback to using the latest cache if no exact match is found - v1-dependencies- - # run lint + # run backend lint - run: - working_directory: "./backend" name: backend lint + working_directory: "./backend" command: "clj-kondo --lint src/" - # run test + # run backend test - run: - working_directory: "./backend" name: backend test - command: "clojure -M:dev:tests" + working_directory: "./backend" + command: "clojure -X:dev:test" environment: PENPOT_TEST_DATABASE_URI: "postgresql://localhost/penpot_test" PENPOT_TEST_DATABASE_USERNAME: penpot_test @@ -51,11 +51,31 @@ jobs: PENPOT_TEST_REDIS_URI: "redis://localhost/1" - run: - working_directory: "./frontend" name: frontend tests + working_directory: "./frontend" command: | yarn install - npx shadow-cljs compile tests + clojure -M:dev:shadow-cljs compile test + node target/tests.js + + environment: + JAVA_HOME: /usr/lib/jvm/openjdk16 + PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin:/usr/lib/jvm/openjdk16/bin + + # - run: + # name: common lint + # working_directory: "./common" + # command: "clj-kondo --lint src/" + + - run: + working_directory: "./common" + name: common tests + command: | + yarn install + clojure -M:dev:shadow-cljs compile test + node target/tests.js + clojure -X:dev:test + environment: JAVA_HOME: /usr/lib/jvm/openjdk16 PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin:/usr/lib/jvm/openjdk16/bin @@ -63,5 +83,5 @@ jobs: - save_cache: paths: - ~/.m2 - key: v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}} + key: v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}} diff --git a/.gitignore b/.gitignore index 4695ea70a..d1cc5a7af 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,8 @@ node_modules /exporter/target /exporter/.shadow-cljs /docker/images/bundle* +/common/.shadow-cljs +/common/target /.clj-kondo/.cache /bundle* /media diff --git a/backend/deps.edn b/backend/deps.edn index 8032825c0..6a3ae1669 100644 --- a/backend/deps.edn +++ b/backend/deps.edn @@ -1,22 +1,14 @@ -{:mvn/repos - {"central" {:url "https://repo1.maven.org/maven2/"} - "clojars" {:url "https://clojars.org/repo"} - "jcenter" {:url "https://jcenter.bintray.com/"}} +{ + ;; :mvn/repos + ;; {"central" {:url "https://repo1.maven.org/maven2/"} + ;; "clojars" {:url "https://clojars.org/repo"} + ;; "jcenter" {:url "https://jcenter.bintray.com/"} + ;; } :deps - {org.clojure/clojure {:mvn/version "1.10.3"} - org.clojure/data.json {:mvn/version "2.2.3"} - org.clojure/core.async {:mvn/version "1.3.618"} - org.clojure/tools.cli {:mvn/version "1.0.206"} - org.clojure/clojurescript {:mvn/version "1.10.844"} + {penpot/common + {:local/root "../common"} ;; Logging - org.clojure/tools.logging {:mvn/version "1.1.0"} - org.apache.logging.log4j/log4j-api {:mvn/version "2.14.1"} - org.apache.logging.log4j/log4j-core {:mvn/version "2.14.1"} - org.apache.logging.log4j/log4j-web {:mvn/version "2.14.1"} - org.apache.logging.log4j/log4j-jul {:mvn/version "2.14.1"} - org.apache.logging.log4j/log4j-slf4j18-impl {:mvn/version "2.14.1"} - org.slf4j/slf4j-api {:mvn/version "2.0.0-alpha1"} org.zeromq/jeromq {:mvn/version "0.5.2"} com.taoensso/nippy {:mvn/version "3.1.1"} @@ -32,49 +24,31 @@ org.eclipse.jetty/jetty-servlet]} io.prometheus/simpleclient_httpserver {:mvn/version "0.9.0"} - selmer/selmer {:mvn/version "1.12.40"} - expound/expound {:mvn/version "0.8.9"} - com.cognitect/transit-clj {:mvn/version "1.0.324"} - io.lettuce/lettuce-core {:mvn/version "6.1.2.RELEASE"} java-http-clj/java-http-clj {:mvn/version "0.4.2"} info.sunng/ring-jetty9-adapter {:mvn/version "0.15.1"} com.github.seancorfield/next.jdbc {:mvn/version "1.2.659"} metosin/reitit-ring {:mvn/version "0.5.13"} - metosin/jsonista {:mvn/version "0.3.3"} - org.postgresql/postgresql {:mvn/version "42.2.20"} com.zaxxer/HikariCP {:mvn/version "4.0.3"} funcool/datoteka {:mvn/version "2.0.0"} - funcool/promesa {:mvn/version "6.0.1"} - funcool/cuerdas {:mvn/version "2021.05.09-0"} buddy/buddy-core {:mvn/version "1.10.1"} buddy/buddy-hashers {:mvn/version "1.8.1"} buddy/buddy-sign {:mvn/version "3.4.1"} - lambdaisland/uri {:mvn/version "1.4.54" - :exclusions [org.clojure/data.json]} - - frankiesardo/linked {:mvn/version "1.3.0"} - danlentz/clj-uuid {:mvn/version "0.1.9"} org.jsoup/jsoup {:mvn/version "1.13.1"} org.im4java/im4java {:mvn/version "1.4.0"} org.lz4/lz4-java {:mvn/version "1.7.1"} - commons-io/commons-io {:mvn/version "2.8.0"} - com.sun.mail/jakarta.mail {:mvn/version "2.0.1"} org.clojars.pntblnk/clj-ldap {:mvn/version "0.0.17"} integrant/integrant {:mvn/version "0.8.0"} - software.amazon.awssdk/s3 {:mvn/version "2.16.62"} + software.amazon.awssdk/s3 {:mvn/version "2.16.62"}} - ;; exception printing - io.aviso/pretty {:mvn/version "0.1.37"} - environ/environ {:mvn/version "1.2.0"}} - :paths ["src" "resources" "../common" "common"] + :paths ["src" "resources"] :aliases {:dev {:extra-deps @@ -82,19 +56,24 @@ org.clojure/tools.namespace {:mvn/version "RELEASE"} org.clojure/test.check {:mvn/version "RELEASE"} - fipp/fipp {:mvn/version "0.6.23"} - criterium/criterium {:mvn/version "0.4.6"} - mockery/mockery {:mvn/version "0.1.4"}} - :extra-paths ["tests" "dev"]} + criterium/criterium {:mvn/version "RELEASE"} + mockery/mockery {:mvn/version "RELEASE"}} + :extra-paths ["test" "dev"]} :fn-fixtures {:exec-fn app.cli.fixtures/run :args {}} - :tests + :kaocha {:extra-deps {lambdaisland/kaocha {:mvn/version "1.0.829"}} :main-opts ["-m" "kaocha.runner"]} + :test + {:extra-deps {io.github.cognitect-labs/test-runner + {:git/url "https://github.com/cognitect-labs/test-runner.git" + :sha "705ad25bbf0228b1c38d0244a36001c2987d7337"}} + :exec-fn cognitect.test-runner.api/test} + :outdated {:extra-deps {com.github.liquidz/antq {:mvn/version "RELEASE"}} :main-opts ["-m" "antq.core"]} diff --git a/backend/dev/user.clj b/backend/dev/user.clj index fc3fe94bd..4f47934a8 100644 --- a/backend/dev/user.clj +++ b/backend/dev/user.clj @@ -50,7 +50,7 @@ ;; --- Development Stuff (defn- run-tests - ([] (run-tests #"^app.tests.*")) + ([] (run-tests #"^app.*-test$")) ([o] (repl/refresh) (cond diff --git a/backend/src/app/notifications.clj b/backend/src/app/notifications.clj index 75b7de0c6..f938352e9 100644 --- a/backend/src/app/notifications.clj +++ b/backend/src/app/notifications.clj @@ -163,7 +163,7 @@ ;; when connection is closed (mtx-aconn :dec) - (mtx-sessions :observe (/ (inst-ms (dt/duration-between created-at (dt/now))) 1000.0)) + (mtx-sessions :observe (/ (inst-ms (dt/diff created-at (dt/now))) 1000.0)) ;; close subscription (a/close! sub-ch)))) diff --git a/backend/src/app/util/time.clj b/backend/src/app/util/time.clj index c2839f483..9d5d3d4d7 100644 --- a/backend/src/app/util/time.clj +++ b/backend/src/app/util/time.clj @@ -10,13 +10,14 @@ [clojure.spec.alpha :as s] [cuerdas.core :as str]) (:import - java.time.Instant java.time.Duration - java.util.Date - java.time.ZonedDateTime + java.time.Instant + java.time.OffsetDateTime java.time.ZoneId + java.time.ZonedDateTime java.time.format.DateTimeFormatter java.time.temporal.TemporalAmount + java.util.Date org.apache.logging.log4j.core.util.CronExpression)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -54,28 +55,37 @@ (obj->duration ms-or-obj))) (defn duration-between + {:deprecated true} [t1 t2] (Duration/between t1 t2)) -(letfn [(conformer [v] - (cond - (duration? v) v +(defn diff + [t1 t2] + (Duration/between t1 t2)) - (string? v) - (try - (duration v) - (catch java.time.format.DateTimeParseException _e - ::s/invalid)) +(s/def ::duration + (s/conformer + (fn [v] + (cond + (duration? v) v - :else - ::s/invalid)) - (unformer [v] - (subs (str v) 2))] - (s/def ::duration (s/conformer conformer unformer))) + (string? v) + (try + (duration v) + (catch java.time.format.DateTimeParseException _e + ::s/invalid)) + + :else + ::s/invalid)) + (fn [v] + (subs (str v) 2)))) (extend-protocol clojure.core/Inst java.time.Duration - (inst-ms* [v] (.toMillis ^Duration v))) + (inst-ms* [v] (.toMillis ^Duration v)) + + OffsetDateTime + (inst-ms* [v] (.toEpochMilli (.toInstant ^OffsetDateTime v)))) (defmethod print-method Duration [mv ^java.io.Writer writer] diff --git a/backend/src/app/worker.clj b/backend/src/app/worker.clj index e33a11464..b6752c896 100644 --- a/backend/src/app/worker.clj +++ b/backend/src/app/worker.clj @@ -442,7 +442,7 @@ (s/assert dt/cron? cron) (let [now (dt/now) next (dt/next-valid-instant-from cron now)] - (inst-ms (dt/duration-between now next)))) + (inst-ms (dt/diff now next)))) (defn- schedule-task [{:keys [scheduler] :as cfg} {:keys [cron] :as task}] diff --git a/backend/tests/app/tests/test_bounces_handling.clj b/backend/test/app/bounce_handling_test.clj similarity index 99% rename from backend/tests/app/tests/test_bounces_handling.clj rename to backend/test/app/bounce_handling_test.clj index 57e838af5..3d423f73f 100644 --- a/backend/tests/app/tests/test_bounces_handling.clj +++ b/backend/test/app/bounce_handling_test.clj @@ -4,16 +4,16 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-bounces-handling +(ns app.bounce-handling-test (:require - [clojure.pprint :refer [pprint]] - [app.http.awsns :as awsns] - [app.emails :as emails] - [app.tests.helpers :as th] [app.db :as db] + [app.emails :as emails] + [app.http.awsns :as awsns] + [app.test-helpers :as th] [app.util.time :as dt] - [mockery.core :refer [with-mocks]] - [clojure.test :as t])) + [clojure.pprint :refer [pprint]] + [clojure.test :as t] + [mockery.core :refer [with-mocks]])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) diff --git a/backend/tests/app/tests/test_emails.clj b/backend/test/app/emails_test.clj similarity index 92% rename from backend/tests/app/tests/test_emails.clj rename to backend/test/app/emails_test.clj index 7cc62966e..4e3e5bed9 100644 --- a/backend/tests/app/tests/test_emails.clj +++ b/backend/test/app/emails_test.clj @@ -4,13 +4,13 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-emails +(ns app.emails-test (:require [clojure.test :as t] [promesa.core :as p] [app.db :as db] [app.emails :as emails] - [app.tests.helpers :as th])) + [app.test-helpers :as th])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) diff --git a/backend/tests/app/tests/test_services_files.clj b/backend/test/app/services_files_test.clj similarity index 98% rename from backend/tests/app/tests/test_services_files.clj rename to backend/test/app/services_files_test.clj index 248dc86f2..b9a1c4426 100644 --- a/backend/tests/app/tests/test_services_files.clj +++ b/backend/test/app/services_files_test.clj @@ -4,13 +4,13 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-files +(ns app.services-files-test (:require [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] [app.storage :as sto] - [app.tests.helpers :as th] + [app.test-helpers :as th] [clojure.test :as t] [datoteka.core :as fs])) @@ -134,7 +134,7 @@ (t/deftest file-media-gc-task (letfn [(create-file-media-object [{:keys [profile-id file-id]}] (let [mfile {:filename "sample.jpg" - :tempfile (th/tempfile "app/tests/_files/sample.jpg") + :tempfile (th/tempfile "app/test_files/sample.jpg") :content-type "image/jpeg" :size 312043} params {::th/type :upload-file-media-object diff --git a/backend/tests/app/tests/test_services_fonts.clj b/backend/test/app/services_fonts_test.clj similarity index 93% rename from backend/tests/app/tests/test_services_fonts.clj rename to backend/test/app/services_fonts_test.clj index 86836b71e..71f217b6a 100644 --- a/backend/tests/app/tests/test_services_fonts.clj +++ b/backend/test/app/services_fonts_test.clj @@ -4,13 +4,13 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-fonts +(ns app.services-fonts-test (:require [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] [app.storage :as sto] - [app.tests.helpers :as th] + [app.test-helpers :as th] [clojure.java.io :as io] [clojure.test :as t] [datoteka.core :as fs])) @@ -24,7 +24,7 @@ proj-id (:default-project-id prof) font-id (uuid/custom 10 1) - ttfdata (-> (io/resource "app/tests/_files/font-1.ttf") + ttfdata (-> (io/resource "app/test_files/font-1.ttf") (fs/slurp-bytes)) params {::th/type :create-font-variant @@ -59,7 +59,7 @@ proj-id (:default-project-id prof) font-id (uuid/custom 10 1) - data (-> (io/resource "app/tests/_files/font-1.woff") + data (-> (io/resource "app/test_files/font-1.woff") (fs/slurp-bytes)) params {::th/type :create-font-variant diff --git a/backend/tests/app/tests/test_services_management.clj b/backend/test/app/services_management_test.clj similarity index 99% rename from backend/tests/app/tests/test_services_management.clj rename to backend/test/app/services_management_test.clj index f662b4381..7e75d434a 100644 --- a/backend/tests/app/tests/test_services_management.clj +++ b/backend/test/app/services_management_test.clj @@ -4,13 +4,13 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-management +(ns app.services-management-test (:require [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] [app.storage :as sto] - [app.tests.helpers :as th] + [app.test-helpers :as th] [clojure.test :as t] [buddy.core.bytes :as b] [datoteka.core :as fs])) diff --git a/backend/tests/app/tests/test_services_media.clj b/backend/test/app/services_media_test.clj similarity index 96% rename from backend/tests/app/tests/test_services_media.clj rename to backend/test/app/services_media_test.clj index 112eed779..a0e9c9780 100644 --- a/backend/tests/app/tests/test_services_media.clj +++ b/backend/test/app/services_media_test.clj @@ -4,12 +4,12 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-media +(ns app.services-media-test (:require [app.common.uuid :as uuid] [app.db :as db] [app.storage :as sto] - [app.tests.helpers :as th] + [app.test-helpers :as th] [clojure.test :as t] [datoteka.core :as fs])) @@ -57,7 +57,7 @@ :project-id (:default-project-id prof) :is-shared false}) mfile {:filename "sample.jpg" - :tempfile (th/tempfile "app/tests/_files/sample.jpg") + :tempfile (th/tempfile "app/test_files/sample.jpg") :content-type "image/jpeg" :size 312043} diff --git a/backend/tests/app/tests/test_services_profile.clj b/backend/test/app/services_profile_test.clj similarity index 98% rename from backend/tests/app/tests/test_services_profile.clj rename to backend/test/app/services_profile_test.clj index c3daf5c14..3fc1ab3a6 100644 --- a/backend/tests/app/tests/test_services_profile.clj +++ b/backend/test/app/services_profile_test.clj @@ -4,16 +4,16 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-profile +(ns app.services-profile-test (:require - [clojure.test :as t] - [clojure.java.io :as io] - [mockery.core :refer [with-mocks]] - [cuerdas.core :as str] - [datoteka.core :as fs] [app.db :as db] [app.rpc.mutations.profile :as profile] - [app.tests.helpers :as th])) + [app.test-helpers :as th] + [clojure.java.io :as io] + [clojure.test :as t] + [cuerdas.core :as str] + [datoteka.core :as fs] + [mockery.core :refer [with-mocks]])) ;; TODO: profile deletion with teams ;; TODO: profile deletion with owner teams @@ -108,7 +108,7 @@ :profile-id (:id profile) :file {:filename "sample.jpg" :size 123123 - :tempfile "tests/app/tests/_files/sample.jpg" + :tempfile (th/tempfile "app/test_files/sample.jpg") :content-type "image/jpeg"}} out (th/mutation! data)] diff --git a/backend/tests/app/tests/test_services_projects.clj b/backend/test/app/services_projects_test.clj similarity index 97% rename from backend/tests/app/tests/test_services_projects.clj rename to backend/test/app/services_projects_test.clj index 5c791fe74..6137bb0ff 100644 --- a/backend/tests/app/tests/test_services_projects.clj +++ b/backend/test/app/services_projects_test.clj @@ -4,14 +4,14 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-projects +(ns app.services-projects-test (:require - [clojure.test :as t] - [promesa.core :as p] + [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] - [app.tests.helpers :as th] - [app.common.uuid :as uuid])) + [app.test-helpers :as th] + [clojure.test :as t] + [promesa.core :as p])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) diff --git a/backend/tests/app/tests/test_services_teams.clj b/backend/test/app/services_teams_test.clj similarity index 95% rename from backend/tests/app/tests/test_services_teams.clj rename to backend/test/app/services_teams_test.clj index c64f7922d..144d652f8 100644 --- a/backend/tests/app/tests/test_services_teams.clj +++ b/backend/test/app/services_teams_test.clj @@ -4,16 +4,16 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-teams +(ns app.services-teams-test (:require [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] [app.storage :as sto] - [app.tests.helpers :as th] - [mockery.core :refer [with-mocks]] + [app.test-helpers :as th] [clojure.test :as t] - [datoteka.core :as fs])) + [datoteka.core :as fs] + [mockery.core :refer [with-mocks]])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) diff --git a/backend/tests/app/tests/test_services_viewer.clj b/backend/test/app/services_viewer_test.clj similarity index 97% rename from backend/tests/app/tests/test_services_viewer.clj rename to backend/test/app/services_viewer_test.clj index ce638a19e..d3176f81a 100644 --- a/backend/tests/app/tests/test_services_viewer.clj +++ b/backend/test/app/services_viewer_test.clj @@ -4,13 +4,13 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-services-viewer +(ns app.services-viewer-test (:require - [clojure.test :as t] - [datoteka.core :as fs] [app.common.uuid :as uuid] [app.db :as db] - [app.tests.helpers :as th])) + [app.test-helpers :as th] + [clojure.test :as t] + [datoteka.core :as fs])) (t/use-fixtures :once th/state-init) (t/use-fixtures :each th/database-reset) diff --git a/backend/tests/app/tests/test_storage.clj b/backend/test/app/storage_test.clj similarity index 98% rename from backend/tests/app/tests/test_storage.clj rename to backend/test/app/storage_test.clj index 7c0f49e8f..d35dae02f 100644 --- a/backend/tests/app/tests/test_storage.clj +++ b/backend/test/app/storage_test.clj @@ -4,12 +4,12 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-storage +(ns app.storage-test (:require [app.common.exceptions :as ex] [app.db :as db] [app.storage :as sto] - [app.tests.helpers :as th] + [app.test-helpers :as th] [app.util.time :as dt] [clojure.java.io :as io] [clojure.test :as t] @@ -106,7 +106,7 @@ :project-id (:default-project-id prof) :is-shared false}) mfile {:filename "sample.jpg" - :tempfile (th/tempfile "app/tests/_files/sample.jpg") + :tempfile (th/tempfile "app/test_files/sample.jpg") :content-type "image/jpeg" :size 312043} @@ -167,7 +167,7 @@ :project-id (:default-project-id prof) :is-shared false}) mfile {:filename "sample.jpg" - :tempfile (th/tempfile "app/tests/_files/sample.jpg") + :tempfile (th/tempfile "app/test_files/sample.jpg") :content-type "image/jpeg" :size 312043} diff --git a/backend/tests/app/tests/_files/font-1.otf b/backend/test/app/test_files/font-1.otf similarity index 100% rename from backend/tests/app/tests/_files/font-1.otf rename to backend/test/app/test_files/font-1.otf diff --git a/backend/tests/app/tests/_files/font-1.ttf b/backend/test/app/test_files/font-1.ttf similarity index 100% rename from backend/tests/app/tests/_files/font-1.ttf rename to backend/test/app/test_files/font-1.ttf diff --git a/backend/tests/app/tests/_files/font-1.woff b/backend/test/app/test_files/font-1.woff similarity index 100% rename from backend/tests/app/tests/_files/font-1.woff rename to backend/test/app/test_files/font-1.woff diff --git a/backend/tests/app/tests/_files/font-2.otf b/backend/test/app/test_files/font-2.otf similarity index 100% rename from backend/tests/app/tests/_files/font-2.otf rename to backend/test/app/test_files/font-2.otf diff --git a/backend/tests/app/tests/_files/font-2.woff b/backend/test/app/test_files/font-2.woff similarity index 100% rename from backend/tests/app/tests/_files/font-2.woff rename to backend/test/app/test_files/font-2.woff diff --git a/backend/tests/app/tests/_files/sample.jpg b/backend/test/app/test_files/sample.jpg similarity index 100% rename from backend/tests/app/tests/_files/sample.jpg rename to backend/test/app/test_files/sample.jpg diff --git a/backend/tests/app/tests/_files/sample1.svg b/backend/test/app/test_files/sample1.svg similarity index 100% rename from backend/tests/app/tests/_files/sample1.svg rename to backend/test/app/test_files/sample1.svg diff --git a/backend/tests/app/tests/_files/sample2.svg b/backend/test/app/test_files/sample2.svg similarity index 100% rename from backend/tests/app/tests/_files/sample2.svg rename to backend/test/app/test_files/sample2.svg diff --git a/backend/tests/app/tests/helpers.clj b/backend/test/app/test_helpers.clj similarity index 99% rename from backend/tests/app/tests/helpers.clj rename to backend/test/app/test_helpers.clj index bf6de1ff1..c7541a4a0 100644 --- a/backend/tests/app/tests/helpers.clj +++ b/backend/test/app/test_helpers.clj @@ -4,7 +4,7 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.helpers +(ns app.test-helpers (:require [app.common.data :as d] [app.common.pages :as cp] diff --git a/backend/tests.edn b/backend/tests.edn index 5b277459d..6d31eb3c6 100644 --- a/backend/tests.edn +++ b/backend/tests.edn @@ -1,5 +1,5 @@ #kaocha/v1 {:tests [{:id :unit - :test-paths ["tests" "src"] - :ns-patterns ["test-.*"]}]} + :test-paths ["test" "src"] + :ns-patterns [".*-test$"]}]} diff --git a/common/deps.edn b/common/deps.edn new file mode 100644 index 000000000..aa42cd43e --- /dev/null +++ b/common/deps.edn @@ -0,0 +1,76 @@ +{ + ;; :mvn/repos + ;; {"central" {:url "https://repo1.maven.org/maven2/"} + ;; "clojars" {:url "https://clojars.org/repo"} + ;; "jcenter" {:url "https://jcenter.bintray.com/"}} + :deps + {org.clojure/clojure {:mvn/version "1.10.3"} + org.clojure/data.json {:mvn/version "2.3.1"} + org.clojure/core.async {:mvn/version "1.3.618"} + org.clojure/tools.cli {:mvn/version "1.0.206"} + org.clojure/clojurescript {:mvn/version "1.10.866"} + metosin/jsonista {:mvn/version "0.3.3"} + + ;; Logging + org.clojure/tools.logging {:mvn/version "1.1.0"} + org.apache.logging.log4j/log4j-api {:mvn/version "2.14.1"} + org.apache.logging.log4j/log4j-core {:mvn/version "2.14.1"} + org.apache.logging.log4j/log4j-web {:mvn/version "2.14.1"} + org.apache.logging.log4j/log4j-jul {:mvn/version "2.14.1"} + org.apache.logging.log4j/log4j-slf4j18-impl {:mvn/version "2.14.1"} + org.slf4j/slf4j-api {:mvn/version "2.0.0-alpha1"} + + selmer/selmer {:mvn/version "1.12.40"} + expound/expound {:mvn/version "0.8.9"} + com.cognitect/transit-clj {:mvn/version "1.0.324"} + java-http-clj/java-http-clj {:mvn/version "0.4.2"} + + funcool/promesa {:mvn/version "6.0.1"} + funcool/cuerdas {:mvn/version "2021.05.29-0"} + + lambdaisland/uri {:mvn/version "1.4.54" + :exclusions [org.clojure/data.json]} + + frankiesardo/linked {:mvn/version "1.3.0"} + danlentz/clj-uuid {:mvn/version "0.1.9"} + commons-io/commons-io {:mvn/version "2.8.0"} + com.sun.mail/jakarta.mail {:mvn/version "2.0.1"} + + ;; exception printing + io.aviso/pretty {:mvn/version "0.1.37"} + environ/environ {:mvn/version "1.2.0"}} + :paths ["src"] + :aliases + {:dev + {:extra-deps + {org.clojure/tools.namespace {:mvn/version "RELEASE"} + org.clojure/test.check {:mvn/version "RELEASE"} + org.clojure/tools.deps.alpha {:mvn/version "RELEASE"} + thheller/shadow-cljs {:mvn/version "2.14.1"} + criterium/criterium {:mvn/version "RELEASE"} + mockery/mockery {:mvn/version "RELEASE"}} + :extra-paths ["test" "dev"]} + + :repl + {:extra-deps + {com.bhauman/rebel-readline {:mvn/version "RELEASE"}} + :main-opts ["-m" "rebel-readline.main"]} + + :kaocha + {:extra-deps {lambdaisland/kaocha {:mvn/version "RELEASE"}} + :main-opts ["-m" "kaocha.runner"]} + + :test + {:extra-paths ["test"] + :extra-deps {io.github.cognitect-labs/test-runner + {:git/url "https://github.com/cognitect-labs/test-runner.git" + :sha "705ad25bbf0228b1c38d0244a36001c2987d7337"}} + :exec-fn cognitect.test-runner.api/test} + + :shadow-cljs + {:main-opts ["-m" "shadow.cljs.devtools.cli"]} + + :outdated + {:extra-deps {com.github.liquidz/antq {:mvn/version "RELEASE"}} + :main-opts ["-m" "antq.core"]}}} + diff --git a/common/dev/user.clj b/common/dev/user.clj new file mode 100644 index 000000000..10336b4f3 --- /dev/null +++ b/common/dev/user.clj @@ -0,0 +1,51 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) UXBOX Labs SL + +(ns user + (:require + [clojure.java.io :as io] + [clojure.pprint :refer [pprint print-table]] + [clojure.repl :refer :all] + [clojure.spec.alpha :as s] + [clojure.spec.gen.alpha :as sgen] + [clojure.test :as test] + [clojure.tools.namespace.repl :as repl] + [clojure.walk :refer [macroexpand-all]] + [criterium.core :refer [quick-bench bench with-progress-reporting]])) + +;; --- Benchmarking Tools + +(defmacro run-quick-bench + [& exprs] + `(with-progress-reporting (quick-bench (do ~@exprs) :verbose))) + +(defmacro run-quick-bench' + [& exprs] + `(quick-bench (do ~@exprs))) + +(defmacro run-bench + [& exprs] + `(with-progress-reporting (bench (do ~@exprs) :verbose))) + +(defmacro run-bench' + [& exprs] + `(bench (do ~@exprs))) + +;; --- Development Stuff + +(defn- run-tests + ([] (run-tests #"^app.common.tests.*")) + ([o] + (repl/refresh) + (cond + (instance? java.util.regex.Pattern o) + (test/run-all-tests o) + + (symbol? o) + (if-let [sns (namespace o)] + (do (require (symbol sns)) + (test/test-vars [(resolve o)])) + (test/test-ns o))))) diff --git a/common/package.json b/common/package.json new file mode 100644 index 000000000..434435182 --- /dev/null +++ b/common/package.json @@ -0,0 +1,13 @@ +{ + "name": "penpot-common", + "version": "1.0.0", + "main": "index.js", + "license": "MPL-2.0", + "dependencies": { + "luxon": "^1.27.0" + }, + "devDependencies": { + "source-map-support": "^0.5.19", + "ws": "^7.4.6" + } +} diff --git a/common/shadow-cljs.edn b/common/shadow-cljs.edn new file mode 100644 index 000000000..e6bcd7175 --- /dev/null +++ b/common/shadow-cljs.edn @@ -0,0 +1,17 @@ +{:deps {:aliases [:dev]} + ;; :http {:port 3448} + ;; :nrepl {:port 3447} + :jvm-opts ["-Xmx700m" "-Xms100m" "-XX:+UseSerialGC" "-XX:-OmitStackTraceInFastThrow"] + + :builds + {:test + {:target :node-test + :output-to "target/tests.js" + :ns-regexp "^app.common.*-test$" + ;; :autorun true + + :compiler-options + {:output-feature-set :es-next + :output-wrapper false + :warnings {:fn-deprecated false}}}}} + diff --git a/common/app/common/attrs.cljc b/common/src/app/common/attrs.cljc similarity index 100% rename from common/app/common/attrs.cljc rename to common/src/app/common/attrs.cljc diff --git a/common/app/common/data.cljc b/common/src/app/common/data.cljc similarity index 100% rename from common/app/common/data.cljc rename to common/src/app/common/data.cljc diff --git a/common/app/common/data/undo_stack.cljc b/common/src/app/common/data/undo_stack.cljc similarity index 100% rename from common/app/common/data/undo_stack.cljc rename to common/src/app/common/data/undo_stack.cljc diff --git a/common/app/common/exceptions.cljc b/common/src/app/common/exceptions.cljc similarity index 100% rename from common/app/common/exceptions.cljc rename to common/src/app/common/exceptions.cljc diff --git a/common/app/common/geom/align.cljc b/common/src/app/common/geom/align.cljc similarity index 100% rename from common/app/common/geom/align.cljc rename to common/src/app/common/geom/align.cljc diff --git a/common/app/common/geom/matrix.cljc b/common/src/app/common/geom/matrix.cljc similarity index 100% rename from common/app/common/geom/matrix.cljc rename to common/src/app/common/geom/matrix.cljc diff --git a/common/app/common/geom/point.cljc b/common/src/app/common/geom/point.cljc similarity index 100% rename from common/app/common/geom/point.cljc rename to common/src/app/common/geom/point.cljc diff --git a/common/app/common/geom/proportions.cljc b/common/src/app/common/geom/proportions.cljc similarity index 100% rename from common/app/common/geom/proportions.cljc rename to common/src/app/common/geom/proportions.cljc diff --git a/common/app/common/geom/shapes.cljc b/common/src/app/common/geom/shapes.cljc similarity index 100% rename from common/app/common/geom/shapes.cljc rename to common/src/app/common/geom/shapes.cljc diff --git a/common/app/common/geom/shapes/common.cljc b/common/src/app/common/geom/shapes/common.cljc similarity index 100% rename from common/app/common/geom/shapes/common.cljc rename to common/src/app/common/geom/shapes/common.cljc diff --git a/common/app/common/geom/shapes/intersect.cljc b/common/src/app/common/geom/shapes/intersect.cljc similarity index 100% rename from common/app/common/geom/shapes/intersect.cljc rename to common/src/app/common/geom/shapes/intersect.cljc diff --git a/common/app/common/geom/shapes/path.cljc b/common/src/app/common/geom/shapes/path.cljc similarity index 100% rename from common/app/common/geom/shapes/path.cljc rename to common/src/app/common/geom/shapes/path.cljc diff --git a/common/app/common/geom/shapes/rect.cljc b/common/src/app/common/geom/shapes/rect.cljc similarity index 100% rename from common/app/common/geom/shapes/rect.cljc rename to common/src/app/common/geom/shapes/rect.cljc diff --git a/common/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc similarity index 100% rename from common/app/common/geom/shapes/transforms.cljc rename to common/src/app/common/geom/shapes/transforms.cljc diff --git a/common/app/common/math.cljc b/common/src/app/common/math.cljc similarity index 100% rename from common/app/common/math.cljc rename to common/src/app/common/math.cljc diff --git a/common/app/common/media.cljc b/common/src/app/common/media.cljc similarity index 100% rename from common/app/common/media.cljc rename to common/src/app/common/media.cljc diff --git a/common/app/common/pages.cljc b/common/src/app/common/pages.cljc similarity index 100% rename from common/app/common/pages.cljc rename to common/src/app/common/pages.cljc diff --git a/common/app/common/pages/changes.cljc b/common/src/app/common/pages/changes.cljc similarity index 100% rename from common/app/common/pages/changes.cljc rename to common/src/app/common/pages/changes.cljc diff --git a/common/app/common/pages/common.cljc b/common/src/app/common/pages/common.cljc similarity index 100% rename from common/app/common/pages/common.cljc rename to common/src/app/common/pages/common.cljc diff --git a/common/app/common/pages/helpers.cljc b/common/src/app/common/pages/helpers.cljc similarity index 100% rename from common/app/common/pages/helpers.cljc rename to common/src/app/common/pages/helpers.cljc diff --git a/common/app/common/pages/indices.cljc b/common/src/app/common/pages/indices.cljc similarity index 100% rename from common/app/common/pages/indices.cljc rename to common/src/app/common/pages/indices.cljc diff --git a/common/app/common/pages/init.cljc b/common/src/app/common/pages/init.cljc similarity index 100% rename from common/app/common/pages/init.cljc rename to common/src/app/common/pages/init.cljc diff --git a/common/app/common/pages/migrations.cljc b/common/src/app/common/pages/migrations.cljc similarity index 100% rename from common/app/common/pages/migrations.cljc rename to common/src/app/common/pages/migrations.cljc diff --git a/common/app/common/pages/spec.cljc b/common/src/app/common/pages/spec.cljc similarity index 100% rename from common/app/common/pages/spec.cljc rename to common/src/app/common/pages/spec.cljc diff --git a/common/app/common/spec.cljc b/common/src/app/common/spec.cljc similarity index 100% rename from common/app/common/spec.cljc rename to common/src/app/common/spec.cljc diff --git a/common/app/common/text.cljc b/common/src/app/common/text.cljc similarity index 96% rename from common/app/common/text.cljc rename to common/src/app/common/text.cljc index a3d1e97fd..6c92810a7 100644 --- a/common/app/common/text.cljc +++ b/common/src/app/common/text.cljc @@ -9,7 +9,7 @@ [app.common.attrs :as attrs] [app.common.uuid :as uuid] [app.common.data :as d] - [app.util.transit :as t] + [app.common.transit :as t] [clojure.walk :as walk] [cuerdas.core :as str])) @@ -82,13 +82,11 @@ (defn encode-style-value [v] - #?(:cljs (t/encode v) - :clj (t/encode-str v))) + (t/encode-str v)) (defn decode-style-value [v] - #?(:cljs (t/decode v) - :clj (t/decode-str v))) + (t/decode-str v)) (defn encode-style [key val] @@ -235,9 +233,9 @@ (remove empty?) (mapcat vec) (distinct)) - proc #(process-attr children %1 %2)] + f #(process-attr children %1 %2)] (persistent! - (transduce xform proc (transient []) children)))) + (transduce xform (completing f) (transient []) children)))) (build-block [{:keys [key children] :as paragraph}] {:key key diff --git a/common/src/app/common/transit.cljc b/common/src/app/common/transit.cljc new file mode 100644 index 000000000..365d1913e --- /dev/null +++ b/common/src/app/common/transit.cljc @@ -0,0 +1,216 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) UXBOX Labs SL + +(ns app.common.transit + (:require + [app.common.geom.matrix :as gmt] + [app.common.geom.point :as gpt] + [cognitect.transit :as t] + [linked.core :as lk] + [linked.set :as lks] + #?(:cljs ["luxon" :as lxn])) + #?(:clj + (:import + app.common.geom.matrix.Matrix + app.common.geom.point.Point + java.io.ByteArrayInputStream + java.io.ByteArrayOutputStream + java.io.File + java.time.Instant + java.time.Duration + java.time.OffsetDateTime + linked.set.LinkedSet))) + +;; --- MISC + +#?(:clj + (defn str->bytes + ([^String s] + (str->bytes s "UTF-8")) + ([^String s, ^String encoding] + (.getBytes s encoding)))) + +#?(:clj + (defn- bytes->str + ([^bytes data] + (bytes->str data "UTF-8")) + ([^bytes data, ^String encoding] + (String. data encoding)))) + +#?(:clj + (def ^:private file-write-handler + (t/write-handler + (constantly "file") + (fn [v] (str v))))) + +#?(:cljs + (def bigint-read-handler + (t/read-handler + (fn [value] + (js/parseInt value 10))))) + +#?(:cljs + (def uuid-read-handler + (t/read-handler uuid))) + +;; --- GEOM + +(def point-write-handler + (t/write-handler + (constantly "point") + (fn [v] (into {} v)))) + +(def point-read-handler + (t/read-handler gpt/map->Point)) + +(def matrix-write-handler + (t/write-handler + (constantly "matrix") + (fn [v] (into {} v)))) + +(def matrix-read-handler + (t/read-handler gmt/map->Matrix)) + +;; --- ORDERED SET + +(def ordered-set-write-handler + (t/write-handler + (constantly "ordered-set") + (fn [v] (vec v)))) + +(def ordered-set-read-handler + (t/read-handler #(into (lk/set) %))) + +;; --- DURATION + +(def duration-read-handler + #?(:cljs (t/read-handler #(.fromMillis ^js lxn/Duration %)) + :clj (t/read-handler #(Duration/ofMillis %)))) + +(def duration-write-handler + (t/write-handler + (constantly "duration") + (fn [v] (inst-ms v)))) + +;; --- TIME + +(def ^:private instant-read-handler + #?(:clj + (t/read-handler + (fn [v] (-> (Long/parseLong v) + (Instant/ofEpochMilli)))) + :cljs + (t/read-handler + (fn [v] + (let [ms (js/parseInt v 10)] + (.fromMillis ^js lxn/DateTime ms)))))) + +(def ^:private instant-write-handler + (t/write-handler + (constantly "m") + (fn [v] (str (inst-ms v))))) + +;; --- HANDLERS + +(def +read-handlers+ + {"matrix" matrix-read-handler + "ordered-set" ordered-set-read-handler + "point" point-read-handler + "duration" duration-read-handler + "m" instant-read-handler + #?@(:cljs ["n" bigint-read-handler + "u" uuid-read-handler]) + }) + +(def +write-handlers+ + #?(:clj + {Matrix matrix-write-handler + Point point-write-handler + Instant instant-write-handler + LinkedSet ordered-set-write-handler + + File file-write-handler + OffsetDateTime instant-write-handler} + :cljs + {gmt/Matrix matrix-write-handler + gpt/Point point-write-handler + lxn/DateTime instant-write-handler + lxn/Duration duration-write-handler + lks/LinkedSet ordered-set-write-handler} + )) + +;; --- Low-Level Api + +#?(:clj + (defn reader + ([istream] + (reader istream nil)) + ([istream {:keys [type] :or {type :json}}] + (t/reader istream type {:handlers +read-handlers+})))) + +#?(:clj + (defn writer + ([ostream] + (writer ostream nil)) + ([ostream {:keys [type] :or {type :json}}] + (t/writer ostream type {:handlers +write-handlers+})))) +#?(:clj + (defn read! + [reader] + (t/read reader))) + +#?(:clj + (defn write! + [writer data] + (t/write writer data))) + + +;; --- High-Level Api + +#?(:clj + (defn encode + ([data] (encode data nil)) + ([data opts] + (with-open [out (ByteArrayOutputStream.)] + (t/write (writer out opts) data) + (.toByteArray out))))) + +#?(:clj + (defn decode + ([data] (decode data nil)) + ([data opts] + (with-open [input (ByteArrayInputStream. ^bytes data)] + (t/read (reader input opts)))))) + +(defn encode-str + ([data] (encode-str data nil)) + ([data opts] + #?(:cljs + (let [t (:type opts :json) + w (t/writer t {:handlers +write-handlers+})] + (t/write w data)) + :clj + (->> (encode data opts) + (bytes->str))))) + +(defn decode-str + ([data] (decode-str data nil)) + ([data opts] + #?(:cljs + (let [t (:type opts :json) + r (t/reader t {:handlers +read-handlers+})] + (t/read r data)) + :clj + (-> (str->bytes data) + (decode opts))))) + +(defn transit? + "Checks if a string can be decoded with transit" + [v] + (try + (-> v decode-str nil? not) + (catch #?(:cljs js/SyntaxError :clj Exception) e + false))) diff --git a/common/app/common/uri.cljc b/common/src/app/common/uri.cljc similarity index 100% rename from common/app/common/uri.cljc rename to common/src/app/common/uri.cljc diff --git a/common/app/common/uuid.cljc b/common/src/app/common/uuid.cljc similarity index 87% rename from common/app/common/uuid.cljc rename to common/src/app/common/uuid.cljc index 0cc0106df..f7530aae3 100644 --- a/common/app/common/uuid.cljc +++ b/common/src/app/common/uuid.cljc @@ -42,7 +42,6 @@ #?(:clj (UUID/fromString s) :cljs (c/uuid s))) -#?(:clj - (defn custom - ([a] (UUID. 0 a)) - ([b a] (UUID. b a)))) +(defn custom + ([a] #?(:clj (UUID. 0 a) :cljs (c/uuid (impl/custom 0 a)))) + ([b a] #?(:clj (UUID. b a) :cljs (c/uuid (impl/custom b a))))) diff --git a/common/app/common/uuid_impl.js b/common/src/app/common/uuid_impl.js similarity index 94% rename from common/app/common/uuid_impl.js rename to common/src/app/common/uuid_impl.js index 791dd58ea..2c2a9f45b 100644 --- a/common/app/common/uuid_impl.js +++ b/common/src/app/common/uuid_impl.js @@ -189,4 +189,10 @@ goog.scope(function() { self.v1 = v1; self.v4 = v4; + + self.custom = function formatAsUUID(mostSigBits, leastSigBits) { + const most = mostSigBits.toString("16").padStart(16, "0"); + const least = leastSigBits.toString("16").padStart(16, "0"); + return `${most.substring(0, 8)}-${most.substring(8, 12)}-${most.substring(12)}-${least.substring(0, 4)}-${least.substring(4)}`; + } }); diff --git a/common/app/common/version.cljc b/common/src/app/common/version.cljc similarity index 97% rename from common/app/common/version.cljc rename to common/src/app/common/version.cljc index aafad2d38..cb79885cf 100644 --- a/common/app/common/version.cljc +++ b/common/src/app/common/version.cljc @@ -7,7 +7,6 @@ (ns app.common.version "A version parsing helper." (:require - [app.common.data :as d] [cuerdas.core :as str])) (def version-re #"^(([A-Za-z]+)\-?)?((\d+)\.(\d+)\.(\d+))(\-?((alpha|prealpha|beta|rc|dev)(\d+)?))?(\-?(\d+))?(\-?g(\w+))$") diff --git a/backend/tests/app/tests/test_common_geom_shapes.clj b/common/test/app/common/geom_shapes_test.cljc similarity index 99% rename from backend/tests/app/tests/test_common_geom_shapes.clj rename to common/test/app/common/geom_shapes_test.cljc index 8019da994..2b6a6fc57 100644 --- a/backend/tests/app/tests/test_common_geom_shapes.clj +++ b/common/test/app/common/geom_shapes_test.cljc @@ -4,7 +4,7 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-common-geom-shapes +(ns app.common.geom-shapes-test (:require [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] diff --git a/backend/tests/app/tests/test_common_geom.clj b/common/test/app/common/geom_test.cljc similarity index 98% rename from backend/tests/app/tests/test_common_geom.clj rename to common/test/app/common/geom_test.cljc index 4656f716c..fce01a061 100644 --- a/backend/tests/app/tests/test_common_geom.clj +++ b/common/test/app/common/geom_test.cljc @@ -4,7 +4,7 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-common-geom +(ns app.common.geom-test (:require [clojure.test :as t] [app.common.geom.point :as gpt] diff --git a/backend/tests/app/tests/test_common_pages_migrations.clj b/common/test/app/common/pages_migrations_test.cljc similarity index 92% rename from backend/tests/app/tests/test_common_pages_migrations.clj rename to common/test/app/common/pages_migrations_test.cljc index 4e8adebd6..ab697886e 100644 --- a/backend/tests/app/tests/test_common_pages_migrations.clj +++ b/common/test/app/common/pages_migrations_test.cljc @@ -4,17 +4,14 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-common-pages-migrations +(ns app.common.pages-migrations-test (:require [clojure.test :as t] [clojure.pprint :refer [pprint]] - [promesa.core :as p] - [mockery.core :refer [with-mock]] [app.common.data :as d] [app.common.pages :as cp] [app.common.pages.migrations :as cpm] - [app.common.uuid :as uuid] - [app.tests.helpers :as th])) + [app.common.uuid :as uuid])) (t/deftest test-migration-8-1 (let [page-id (uuid/custom 0 0) @@ -43,8 +40,8 @@ res (cpm/migrate-data data)] - (pprint data) - (pprint res) + ;; (pprint data) + ;; (pprint res) (t/is (= (dissoc data :version) (dissoc res :version))))) @@ -86,8 +83,8 @@ res (cpm/migrate-data data)] - (pprint res) - (pprint expct) + ;; (pprint res) + ;; (pprint expct) (t/is (= (dissoc expct :version) (dissoc res :version))) diff --git a/backend/tests/app/tests/test_common_pages.clj b/common/test/app/common/pages_test.cljc similarity index 99% rename from backend/tests/app/tests/test_common_pages.clj rename to common/test/app/common/pages_test.cljc index 80e3ea7e2..abfa5f8f3 100644 --- a/backend/tests/app/tests/test_common_pages.clj +++ b/common/test/app/common/pages_test.cljc @@ -4,15 +4,12 @@ ;; ;; Copyright (c) UXBOX Labs SL -(ns app.tests.test-common-pages +(ns app.common.pages-test (:require [clojure.test :as t] [clojure.pprint :refer [pprint]] - [promesa.core :as p] - [mockery.core :refer [with-mock]] [app.common.pages :as cp] - [app.common.uuid :as uuid] - [app.tests.helpers :as th])) + [app.common.uuid :as uuid])) (t/deftest process-change-set-option (let [file-id (uuid/custom 2 2) diff --git a/common/test/app/common/setup_test.cljc b/common/test/app/common/setup_test.cljc new file mode 100644 index 000000000..5b11a5af2 --- /dev/null +++ b/common/test/app/common/setup_test.cljc @@ -0,0 +1,10 @@ +(ns app.common.setup-test + (:require + [clojure.test :as t])) + +#?(:cljs + (defmethod t/report [:cljs.test/default :end-run-tests] + [m] + (if (t/successful? m) + (set! (.-exitCode js/process) 0) + (set! (.-exitCode js/process) 1)))) diff --git a/frontend/tests/app/test_draft_conversion.cljs b/common/test/app/common/text_test.cljc similarity index 89% rename from frontend/tests/app/test_draft_conversion.cljs rename to common/test/app/common/text_test.cljc index 72c143e6a..9cd52a253 100644 --- a/frontend/tests/app/test_draft_conversion.cljs +++ b/common/test/app/common/text_test.cljc @@ -1,9 +1,9 @@ -(ns app.test-draft-conversion +(ns app.common.text-test (:require [app.common.data :as d] [app.common.text :as txt] - [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]])) + [clojure.test :as t :include-macros true] + [clojure.pprint :refer [pprint]])) (t/deftest test-basic-conversion-roundtrip (let [text "qwqw 🠒" diff --git a/common/yarn.lock b/common/yarn.lock new file mode 100644 index 000000000..425c4fc04 --- /dev/null +++ b/common/yarn.lock @@ -0,0 +1,31 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +luxon@^1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f" + integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA== + +source-map-support@^0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +ws@^7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== diff --git a/docker/devenv/files/start-tmux.sh b/docker/devenv/files/start-tmux.sh index 1770934fd..e21875389 100755 --- a/docker/devenv/files/start-tmux.sh +++ b/docker/devenv/files/start-tmux.sh @@ -21,7 +21,7 @@ tmux -2 new-session -d -s penpot tmux new-window -t penpot:1 -n 'shadow watch' tmux select-window -t penpot:1 tmux send-keys -t penpot 'cd penpot/frontend' enter C-l -tmux send-keys -t penpot 'npx shadow-cljs watch main' enter +tmux send-keys -t penpot 'clojure -M:dev:shadow-cljs watch main' enter tmux new-window -t penpot:2 -n 'exporter' tmux select-window -t penpot:2 diff --git a/frontend/deps.edn b/frontend/deps.edn index 4a3337c6a..8d2446506 100644 --- a/frontend/deps.edn +++ b/frontend/deps.edn @@ -1,9 +1,32 @@ -{:paths ["src" "vendor" "resources" "../common"] - :deps {} +{:paths ["src" "vendor" "resources" "test"] + :deps + {penpot/common + {:local/root "../common"} + + binaryage/devtools {:mvn/version "RELEASE"} + metosin/reitit-core {:mvn/version "0.5.13"} + + funcool/beicon {:mvn/version "2021.04.29-0"} + funcool/okulary {:mvn/version "2020.04.14-0"} + funcool/potok {:mvn/version "4.0.0"} + funcool/rumext {:mvn/version "2021.05.12-1"} + funcool/tubax {:mvn/version "2021.05.20-0"} + + instaparse/instaparse {:mvn/version "1.4.10"} + } + :aliases {:outdated {:extra-deps {com.github.liquidz/antq {:mvn/version "RELEASE"} org.slf4j/slf4j-nop {:mvn/version "RELEASE"}} :main-opts ["-m" "antq.core"]} + + :dev + {:extra-deps + {thheller/shadow-cljs {:mvn/version "2.14.1"}}} + + :shadow-cljs + {:main-opts ["-m" "shadow.cljs.devtools.cli"]} + }} diff --git a/frontend/package.json b/frontend/package.json index 8e710283d..b16eb66cd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -32,8 +32,7 @@ "postcss": "^8.2.15", "postcss-clean": "^1.2.2", "rimraf": "^3.0.0", - "sass": "^1.32.8", - "shadow-cljs": "2.12.6" + "sass": "^1.32.8" }, "dependencies": { "date-fns": "^2.21.3", @@ -48,7 +47,7 @@ "react": "~17.0.1", "react-dom": "~17.0.1", "react-virtualized": "^9.22.3", - "rxjs": "~7.0.1", + "rxjs": "~7.1.0", "sax": "^1.2.4", "source-map-support": "^0.5.16", "tdigest": "^0.1.1", diff --git a/frontend/shadow-cljs.edn b/frontend/shadow-cljs.edn index d4b2b0a2e..82c7116a6 100644 --- a/frontend/shadow-cljs.edn +++ b/frontend/shadow-cljs.edn @@ -1,32 +1,9 @@ -{:http {:port 3448} +{:deps {:aliases [:dev]} + :http {:port 3448} :nrepl {:port 3447} :jvm-opts ["-Xmx700m" "-Xms100m" "-XX:+UseSerialGC" "-XX:-OmitStackTraceInFastThrow"] :dev-http {8888 "classpath:public"} - :source-paths ["src", "vendor", "resources", "../common", "tests", "dev"] - :dependencies - [[binaryage/devtools "RELEASE"] - - [environ/environ "1.2.0"] - [metosin/reitit-core "0.5.13"] - [expound/expound "0.8.9"] - - [danlentz/clj-uuid "0.1.9"] - [frankiesardo/linked "1.3.0"] - - [funcool/beicon "2021.04.29-0"] - [funcool/cuerdas "2021.05.09-0"] - [funcool/okulary "2020.04.14-0"] - [funcool/potok "4.0.0"] - [funcool/promesa "6.0.0"] - [funcool/rumext "2021.05.12-1"] - [funcool/tubax "2021.05.20-0"] - - [lambdaisland/uri "1.4.54" - :exclusions [org.clojure/data.json]] - - [instaparse/instaparse "1.4.10"]] - :builds {:main {:target :browser @@ -58,11 +35,11 @@ :anon-fn-naming-policy :off :source-map-detail-level :all}}} - :tests + :test {:target :node-test :output-to "target/tests.js" - :ns-regexp "^app.test-" - :autorun true + :ns-regexp "^app.*-test$" + ;; :autorun true :compiler-options {:output-feature-set :es8 diff --git a/frontend/src/app/util/perf.cljs b/frontend/src/app/util/perf.cljs index 03935f301..e23401201 100644 --- a/frontend/src/app/util/perf.cljs +++ b/frontend/src/app/util/perf.cljs @@ -39,7 +39,7 @@ this))) (defn tdigest-summary - [td] + [^js td] (str "samples=" (unchecked-get td "n") "\n" "Q50=" (.percentile td 0.50) "\n" "Q75=" (.percentile td 0.75) "\n" diff --git a/frontend/test.cljs b/frontend/test.cljs deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend/tests/app/test_components_basic.cljs b/frontend/test/app/components_basic_test.cljs similarity index 98% rename from frontend/tests/app/test_components_basic.cljs rename to frontend/test/app/components_basic_test.cljs index 2c6eba888..702b36cad 100644 --- a/frontend/tests/app/test_components_basic.cljs +++ b/frontend/test/app/components_basic_test.cljs @@ -1,4 +1,4 @@ -(ns app.test-components-basic +(ns app.components-basic-test (:require [app.common.data :as d] [app.common.geom.point :as gpt] @@ -29,7 +29,7 @@ (->> state (the/do-update (dw/select-shape (thp/id :shape1))) - (the/do-watch-update dwl/add-component) + (the/do-watch-update dwl/add-component) (rx/do (fn [new-state] (let [shape1 (thp/get-shape new-state :shape1) @@ -73,7 +73,7 @@ (the/do-update (dw/select-shapes (lks/set (thp/id :shape1) (thp/id :shape2)))) - (the/do-watch-update dwl/add-component) + (the/do-watch-update dwl/add-component) (rx/do (fn [new-state] (let [shape1 (thp/get-shape new-state :shape1) @@ -125,7 +125,7 @@ (->> state (the/do-update (dw/select-shape (thp/id :group1))) - (the/do-watch-update dwl/add-component) + (the/do-watch-update dwl/add-component) (rx/do (fn [new-state] (let [[[group shape1 shape2] diff --git a/frontend/tests/app/test_components_sync.cljs b/frontend/test/app/components_sync_test.cljs similarity index 97% rename from frontend/tests/app/test_components_sync.cljs rename to frontend/test/app/components_sync_test.cljs index e93ab55ed..048cea7a1 100644 --- a/frontend/tests/app/test_components_sync.cljs +++ b/frontend/test/app/components_sync_test.cljs @@ -1,18 +1,18 @@ -(ns app.test-components-sync +(ns app.components-sync-test (:require - [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [beicon.core :as rx] - [linked.core :as lks] - [app.test-helpers.events :as the] - [app.test-helpers.pages :as thp] - [app.test-helpers.libraries :as thl] - [app.common.geom.point :as gpt] [app.common.data :as d] + [app.common.geom.point :as gpt] [app.common.pages.helpers :as cph] [app.main.data.workspace.changes :as dwc] [app.main.data.workspace.libraries :as dwl] - [app.main.data.workspace.libraries-helpers :as dwlh])) + [app.main.data.workspace.libraries-helpers :as dwlh] + [app.test-helpers.events :as the] + [app.test-helpers.libraries :as thl] + [app.test-helpers.pages :as thp] + [beicon.core :as rx] + [cljs.pprint :refer [pprint]] + [cljs.test :as t :include-macros true] + [linked.core :as lks])) (t/use-fixtures :each {:before thp/reset-idmap!}) diff --git a/frontend/test/app/init_test.cljs b/frontend/test/app/init_test.cljs new file mode 100644 index 000000000..0e36cdcd0 --- /dev/null +++ b/frontend/test/app/init_test.cljs @@ -0,0 +1,9 @@ +(ns app.init-test + (:require + [cljs.test :as t :include-macros true])) + +(defmethod t/report [:cljs.test/default :end-run-tests] + [m] + (if (t/successful? m) + (set! (.-exitCode js/process) 0) + (set! (.-exitCode js/process) 1))) diff --git a/frontend/tests/app/test_shapes.cljs b/frontend/test/app/shapes_test.cljs similarity index 72% rename from frontend/tests/app/test_shapes.cljs rename to frontend/test/app/shapes_test.cljs index 2b473c02a..45bf8afb7 100644 --- a/frontend/tests/app/test_shapes.cljs +++ b/frontend/test/app/shapes_test.cljs @@ -1,16 +1,17 @@ -(ns app.test-shapes - (:require [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [clojure.stacktrace :as stk] - [beicon.core :as rx] - [linked.core :as lks] - [app.test-helpers.events :as the] - [app.test-helpers.pages :as thp] - [app.test-helpers.libraries :as thl] - [app.common.geom.point :as gpt] - [app.common.data :as d] - [app.common.pages.helpers :as cph] - [app.main.data.workspace.libraries :as dwl])) +(ns app.shapes-test + (:require + [app.common.data :as d] + [app.common.geom.point :as gpt] + [app.common.pages.helpers :as cph] + [app.main.data.workspace.libraries :as dwl] + [app.test-helpers.events :as the] + [app.test-helpers.libraries :as thl] + [app.test-helpers.pages :as thp] + [beicon.core :as rx] + [cljs.pprint :refer [pprint]] + [cljs.test :as t :include-macros true] + [clojure.stacktrace :as stk] + [linked.core :as lks])) (t/use-fixtures :each {:before thp/reset-idmap!}) diff --git a/frontend/tests/app/test_helpers/events.cljs b/frontend/test/app/test_helpers/events.cljs similarity index 66% rename from frontend/tests/app/test_helpers/events.cljs rename to frontend/test/app/test_helpers/events.cljs index 106510ab3..85c6488ad 100644 --- a/frontend/tests/app/test_helpers/events.cljs +++ b/frontend/test/app/test_helpers/events.cljs @@ -1,14 +1,15 @@ (ns app.test-helpers.events - (:require [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [beicon.core :as rx] - [potok.core :as ptk] - [app.common.uuid :as uuid] - [app.common.geom.point :as gpt] - [app.common.geom.shapes :as gsh] - [app.common.pages :as cp] - [app.common.pages.helpers :as cph] - [app.main.data.workspace :as dw])) + (:require + [cljs.test :as t :include-macros true] + [cljs.pprint :refer [pprint]] + [beicon.core :as rx] + [potok.core :as ptk] + [app.common.uuid :as uuid] + [app.common.geom.point :as gpt] + [app.common.geom.shapes :as gsh] + [app.common.pages :as cp] + [app.common.pages.helpers :as cph] + [app.main.data.workspace :as dw])) ;; ---- Helpers to manage global events diff --git a/frontend/tests/app/test_helpers/libraries.cljs b/frontend/test/app/test_helpers/libraries.cljs similarity index 87% rename from frontend/tests/app/test_helpers/libraries.cljs rename to frontend/test/app/test_helpers/libraries.cljs index aa6289445..b93f81f2a 100644 --- a/frontend/tests/app/test_helpers/libraries.cljs +++ b/frontend/test/app/test_helpers/libraries.cljs @@ -1,16 +1,17 @@ (ns app.test-helpers.libraries - (:require [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [beicon.core :as rx] - [potok.core :as ptk] - [app.common.uuid :as uuid] - [app.common.geom.point :as gpt] - [app.common.geom.shapes :as gsh] - [app.common.pages :as cp] - [app.common.pages.helpers :as cph] - [app.main.data.workspace :as dw] - [app.main.data.workspace.libraries-helpers :as dwlh] - [app.test-helpers.pages :as thp])) + (:require + [cljs.test :as t :include-macros true] + [cljs.pprint :refer [pprint]] + [beicon.core :as rx] + [potok.core :as ptk] + [app.common.uuid :as uuid] + [app.common.geom.point :as gpt] + [app.common.geom.shapes :as gsh] + [app.common.pages :as cp] + [app.common.pages.helpers :as cph] + [app.main.data.workspace :as dw] + [app.main.data.workspace.libraries-helpers :as dwlh] + [app.test-helpers.pages :as thp])) ;; ---- Helpers to manage libraries and synchronization diff --git a/frontend/tests/app/test_helpers/pages.cljs b/frontend/test/app/test_helpers/pages.cljs similarity index 100% rename from frontend/tests/app/test_helpers/pages.cljs rename to frontend/test/app/test_helpers/pages.cljs diff --git a/frontend/tests/app/test_util_range_tree.cljs b/frontend/test/app/util/range_tree_test.cljs similarity index 96% rename from frontend/tests/app/test_util_range_tree.cljs rename to frontend/test/app/util/range_tree_test.cljs index 507a8386b..d97a46c79 100644 --- a/frontend/tests/app/test_util_range_tree.cljs +++ b/frontend/test/app/util/range_tree_test.cljs @@ -1,8 +1,9 @@ -(ns app.test-util-range-tree - (:require [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [app.common.geom.point :as gpt] - [app.util.range-tree :as rt])) +(ns app.util.range-tree-test + (:require + [cljs.test :as t :include-macros true] + [cljs.pprint :refer [pprint]] + [app.common.geom.point :as gpt] + [app.util.range-tree :as rt])) (defn check-max-height [tree num-nodes]) (defn check-sorted [tree]) @@ -109,7 +110,7 @@ (rt/insert 50 :e) (rt/update 50 :d :xx))] (t/is (= (rt/get tree 50) [:b :xx :e])))) - + (t/testing "Try to update non-existing element" (let [tree (-> (rt/make-tree) (rt/insert 100 :a) diff --git a/frontend/tests/app/test_util_simple_math.cljs b/frontend/test/app/util/simple_math_test.cljs similarity index 92% rename from frontend/tests/app/test_util_simple_math.cljs rename to frontend/test/app/util/simple_math_test.cljs index bc6d48c74..4b220a9e1 100644 --- a/frontend/tests/app/test_util_simple_math.cljs +++ b/frontend/test/app/util/simple_math_test.cljs @@ -1,8 +1,9 @@ -(ns app.test-util-simple-math - (:require [cljs.test :as t :include-macros true] - [cljs.pprint :refer [pprint]] - [app.common.math :as cm] - [app.util.simple-math :as sm])) +(ns app.util.simple-math-test + (:require + [cljs.test :as t :include-macros true] + [cljs.pprint :refer [pprint]] + [app.common.math :as cm] + [app.util.simple-math :as sm])) (t/deftest test-parser-inst (t/testing "Evaluate an empty string" diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 592ff54ca..34b578a2f 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -252,16 +252,6 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -274,14 +264,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -307,11 +289,6 @@ async-foreach@^0.1.3: resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - async-settle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" @@ -342,14 +319,14 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^10.2.4: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== + version "10.2.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.6.tgz#aadd9ec34e1c98d403e01950038049f0eb252949" + integrity sha512-8lChSmdU6dCNMCQopIf4Pe5kipkAGj/fvTMslCsih0uHpOrXOPUEVOmYMMqmw3cekQkSD7EhIeuYl5y0BLdKqg== dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" + browserslist "^4.16.6" + caniuse-lite "^1.0.30001230" colorette "^1.2.2" - fraction.js "^4.0.13" + fraction.js "^4.1.1" normalize-range "^0.1.2" postcss-value-parser "^4.1.0" @@ -383,11 +360,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -437,16 +409,6 @@ block-stream@*: dependencies: inherits "~2.0.0" -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -483,78 +445,12 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.16.3: +browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -580,25 +476,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -669,10 +546,10 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001196, caniuse-lite@^1.0.30001219: - version "1.0.30001221" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001221.tgz#b916721ddf59066cfbe96c5c9a77cf7ae5c52e65" - integrity sha512-b9TOZfND3uGSLjMOrLh8XxSQ41x8mX+9MLJYDM4AAHLfaZHttrLNPrScWjVnBITRZbY5sPpCt7X85n7VSLZ+/g== +caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001230: + version "1.0.30001230" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71" + integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ== caseless@~0.12.0: version "0.12.0" @@ -733,14 +610,6 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.2.7" -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -953,21 +822,11 @@ config-chain@^1.1.12: ini "^1.3.4" proto-list "~1.2.1" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - content-type@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -994,14 +853,14 @@ copy-props@^2.0.1: is-plain-object "^5.0.0" core-js-pure@^3.0.0: - version "3.11.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.11.2.tgz#10e3b35788c00f431bc0d601d7551475ec3e792c" - integrity sha512-DQxdEKm+zFsnON7ZGOgUAQXBt1UJJ01tOzN/HgQ7cNf0oEHW1tcBLfCQQd1q6otdLu5gAdvKYxKHAoXGwE/kiQ== + version "3.13.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.13.0.tgz#9d267fb47d1d7046cfbc05e7b67bb235b6735355" + integrity sha512-7VTvXbsMxROvzPAVczLgfizR8CyYnvWPrb1eGrtlZAJfjQWEHLofVfCKljLHdpazTfpaziRORwUH/kfGDKvpdA== core-js@^3.6.4: - version "3.11.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.2.tgz#af087a43373fc6e72942917c4a4c3de43ed574d6" - integrity sha512-3tfrrO1JpJSYGKnd9LKTBPqgUES/UYiCzMKeqwR1+jF16q4kD1BY2NvqkfuzXwQ6+CIWm55V9cjD7PQd+hijdw== + version "3.13.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.13.0.tgz#58ca436bf01d6903aee3d364089868d0d89fe58d" + integrity sha512-iWDbiyha1M5vFwPFmQnvRv+tJzGbFAm6XimJUT0NgHYW3xZEs1SkCAcasWSVFxpI2Xb/V1DDJckq3v90+bQnog== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -1018,37 +877,6 @@ cosmiconfig@^5.0.0: js-yaml "^3.13.1" parse-json "^4.0.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - 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@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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" - cross-fetch@^3.0.4: version "3.1.4" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" @@ -1075,23 +903,6 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - 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" - css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -1187,9 +998,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" date-fns@^2.21.3: - version "2.21.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.21.3.tgz#8f5f6889d7a96bbcc1f0ea50239b397a83357f9b" - integrity sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw== + version "2.22.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.0.tgz#e25d79dda0639ae9e840d02ab34446613037c392" + integrity sha512-1TMrlJRPYjeR6KS9TgnJz4DX1rHW5NkfgIHpe9NWL6TGTzd6qo8mLo6ibt3p1wvXAu/DOal1Yce5YloFGeexBA== dateformat@^3.0.3: version "3.0.3" @@ -1287,14 +1098,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -1310,15 +1113,6 @@ diff@3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dom-helpers@^5.1.3: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -1335,11 +1129,6 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -1404,22 +1193,9 @@ editorconfig@^0.15.3: sigmund "^1.0.1" electron-to-chromium@^1.3.723: - version "1.3.726" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz#6d3c577e5f5a48904ba891464740896c05e3bdb1" - integrity sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" + version "1.3.741" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.741.tgz#dc1024b19b31e27fb2c8c0a1f120cb05fc6ca695" + integrity sha512-4i3T0cwnHo1O4Mnp9JniEco8bZiXoqbm3PhW5hv7uu8YLg35iajYrRnNyKFaN8/8SSTskU2hYqVTeYVPceSpUA== emoji-regex@^7.0.1: version "7.0.3" @@ -1457,10 +1233,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== +es-abstract@^1.17.2, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -1470,14 +1246,14 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.2: has-symbols "^1.0.2" is-callable "^1.2.3" is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" + unbox-primitive "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -1557,19 +1333,6 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -1837,10 +1600,10 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== +fraction.js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" + integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== fragment-cache@^0.2.1: version "0.2.1" @@ -2030,9 +1793,9 @@ glob@7.1.2: path-is-absolute "^1.0.0" glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2293,23 +2056,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hasha@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" @@ -2328,15 +2074,6 @@ highlight.js@^10.6.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -2358,23 +2095,13 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -2427,21 +2154,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -2495,9 +2212,9 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== is-binary-path@^1.0.0: version "1.0.1" @@ -2514,11 +2231,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-buffer@^1.1.5: version "1.1.6" @@ -2531,9 +2248,9 @@ is-callable@^1.1.4, is-callable@^1.2.3: integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-core-module@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" - integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: has "^1.0.3" @@ -2552,9 +2269,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-descriptor@^0.1.0: version "0.1.6" @@ -2638,9 +2355,9 @@ is-negative-zero@^2.0.1: integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^3.0.0: version "3.0.0" @@ -2676,13 +2393,13 @@ is-promise@^2.2.2: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-relative@^1.0.0: version "1.0.0" @@ -2701,17 +2418,17 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-typedarray@~1.0.0: version "1.0.0" @@ -2740,7 +2457,7 @@ is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3127,9 +2844,9 @@ lru-queue@^0.1.0: es5-ext "~0.10.2" luxon@^1.26.0: - version "1.26.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.26.0.tgz#d3692361fda51473948252061d0f8561df02b578" - integrity sha512-+V5QIQ5f6CDXQpWNICELwjwuHdqeJM1UenlZWx5ujcRMc9venvluCjFb4t5NYLhb6IhkbMVOxzVuOqkgMxee2A== + version "1.27.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f" + integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA== make-iterator@^1.0.0: version "1.0.1" @@ -3168,9 +2885,9 @@ map-visit@^1.0.0: object-visit "^1.0.0" marked@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.3.tgz#3551c4958c4da36897bda2a16812ef1399c8d6b0" - integrity sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.6.tgz#c3ab1403b9b70f26acd92590fc272eb1718e778c" + integrity sha512-S2mYj0FzTQa0dLddssqwRVW4EOJOVJ355Xm2Vcbm+LU7GQRGWvwbO5K87OaPSOux2AwTSgtPPaXmc8sDPrhn2A== matchdep@^2.0.0: version "2.0.0" @@ -3182,15 +2899,6 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -3259,14 +2967,6 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.47.0: version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" @@ -3284,16 +2984,6 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3450,39 +3140,10 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - 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.1" - 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 "^1.0.1" - node-releases@^1.1.71: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== node-sass@^4.8.3: version "4.14.1" @@ -3603,10 +3264,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== +object-inspect@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -3673,14 +3334,13 @@ object.reduce@^1.0.0: make-iterator "^1.0.0" object.values@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" + es-abstract "^1.18.2" once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" @@ -3711,11 +3371,6 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -3784,22 +3439,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-filepath@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -3839,11 +3483,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3872,9 +3511,9 @@ path-key@^2.0.0, path-key@^2.0.1: integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-root-regex@^0.1.0: version "0.1.2" @@ -3897,17 +3536,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -3934,9 +3562,9 @@ phantomjs-prebuilt@^2.1.16: which "^1.2.10" picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0: version "2.3.0" @@ -4010,13 +3638,13 @@ postcss@^7.0.16: supports-color "^6.1.0" postcss@^8.2.15: - version "8.2.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" - integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + version "8.3.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" + integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== dependencies: colorette "^1.2.2" nanoid "^3.1.23" - source-map "^0.6.1" + source-map-js "^0.6.2" pretty-hrtime@^1.0.0: version "1.0.3" @@ -4033,11 +3661,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" @@ -4074,18 +3697,6 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - 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" - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -4111,16 +3722,6 @@ pumpify@^1.3.5: inherits "^2.0.3" pump "^2.0.0" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -4136,36 +3737,11 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - randomcolor@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/randomcolor/-/randomcolor-0.6.2.tgz#7a57362ae1a1278439aeed2c15e5deb8ea33f56d" integrity sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A== -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - react-dom@~17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" @@ -4260,11 +3836,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -readline-sync@^1.4.7: - version "1.4.10" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" - integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -4446,22 +4017,14 @@ rimraf@^3.0.0: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rxjs@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.0.1.tgz#5f41c4f991cea550471fc5d215727390103702c7" - integrity sha512-wViQ4Vgps1xJwqWIBooMNN44usCSthL7wCUl4qWqrVjhGfWyVyXcxlYzfDKkJKACQvZMTOft/jJ3RkbwK1j9QQ== +rxjs@~7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.1.0.tgz#94202d27b19305ef7b1a4f330277b2065df7039e" + integrity sha512-gCFO5iHIbRPwznl6hAYuwNFld8W4S2shtSJIqG27ReWXo9IWrCyEICxUA+6vJHwSR/OakoenC4QsDxq50tzYmw== dependencies: tslib "~2.1.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4494,9 +4057,9 @@ sass-graph@2.2.5: yargs "^13.3.2" sass@^1.32.8: - version "1.32.12" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" - integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== + version "1.34.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.34.0.tgz#e46d5932d8b0ecc4feb846d861f26a578f7f7172" + integrity sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -4558,36 +4121,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@^1.0.5: +setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shadow-cljs-jar@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b" - integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg== - -shadow-cljs@2.12.6: - version "2.12.6" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.12.6.tgz#039539fdc35a19c2f2cd15792ae17e7928f97428" - integrity sha512-dNw989EFQki/59kD8Cd8b6HIpBTqPj9ksWIvSg6hI1bgezZHT0oHfJH5UIbXPD+dnVLvbOnDnfOMWYH6ozalcA== - dependencies: - node-libs-browser "^2.2.1" - readline-sync "^1.4.7" - shadow-cljs-jar "1.3.2" - source-map-support "^0.4.15" - which "^1.3.1" - ws "^3.0.0" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4691,6 +4229,11 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -4710,13 +4253,6 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.16: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -4774,9 +4310,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -4830,30 +4366,11 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - 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" - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -4913,7 +4430,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -5107,13 +4624,6 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" @@ -5135,11 +4645,6 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -5209,11 +4714,6 @@ tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5246,12 +4746,7 @@ ua-parser-js@^0.7.18, ua-parser-js@^0.7.28: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -unbox-primitive@^1.0.0: +unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== @@ -5335,14 +4830,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -5363,20 +4850,6 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -5466,11 +4939,6 @@ vinyl@^2.0.0, vinyl@^2.2.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -5492,7 +4960,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1, which@^1.2.10, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -5551,15 +5019,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - xmldom@0.1.27: version "0.1.27" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" @@ -5577,7 +5036,7 @@ xregexp@^5.0.1: dependencies: "@babel/runtime-corejs3" "^7.12.1" -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==