From 27690c3da6109951abf8bac9df821a154e11dac9 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 18 Nov 2024 14:55:13 +0100 Subject: [PATCH] :sparkles: Add test runner for cljs on common module In the same way as frontend tests are run and fix some tokens related tests --- .circleci/config.yml | 6 + common/package.json | 12 +- common/shadow-cljs.edn | 20 +- common/src/app/common/time.cljc | 20 +- common/test/common_tests/runner.cljc | 89 ++++ common/test/common_tests/time_test.cljc | 16 + .../types/shape_decode_encode_test.cljc | 2 +- .../common_tests/types/tokens_lib_test.cljc | 154 +++--- common/yarn.lock | 446 +++++++++++++++++- frontend/package.json | 2 +- frontend/src/app/config.cljs | 1 - 11 files changed, 664 insertions(+), 104 deletions(-) create mode 100644 common/test/common_tests/runner.cljc create mode 100644 common/test/common_tests/time_test.cljc diff --git a/.circleci/config.yml b/.circleci/config.yml index 74d1cbf30..1a4824038 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -33,6 +33,12 @@ jobs: command: | clojure -M:dev:test + - run: + name: "NODE tests" + working_directory: "./common" + command: | + yarn run test + - save_cache: paths: - ~/.m2 diff --git a/common/package.json b/common/package.json index 425ff1a87..7d65e949f 100644 --- a/common/package.json +++ b/common/package.json @@ -1,11 +1,11 @@ { "name": "common", "version": "1.0.0", - "main": "index.js", "license": "MPL-2.0", "author": "Kaleidos INC", "private": true, "packageManager": "yarn@4.3.1", + "type": "module", "repository": { "type": "git", "url": "https://github.com/penpot/penpot" @@ -15,6 +15,8 @@ "sax": "^1.4.1" }, "devDependencies": { + "concurrently": "^9.0.1", + "nodemon": "^3.1.7", "shadow-cljs": "2.28.18", "source-map-support": "^0.5.21", "ws": "^8.17.0" @@ -23,9 +25,9 @@ "fmt:clj:check": "cljfmt check --parallel=false src/ test/", "fmt:clj": "cljfmt fix --parallel=true src/ test/", "lint:clj": "clj-kondo --parallel=true --lint src/", - "test:watch": "clojure -M:dev:shadow-cljs watch test", - "test:compile": "clojure -M:dev:shadow-cljs compile test --config-merge '{:autorun false}'", - "test:run": "node target/test.js", - "test": "yarn run test:compile && yarn run test:run" + "lint": "yarn run lint:clj", + "watch:test": "concurrently \"clojure -M:dev:shadow-cljs watch test\" \"nodemon -C -d 2 -w target/tests/ --exec 'node target/tests/test.js'\"", + "build:test": "clojure -M:dev:shadow-cljs compile test", + "test": "yarn run build:test && node target/tests/test.js" } } diff --git a/common/shadow-cljs.edn b/common/shadow-cljs.edn index 274f6dae1..fc3f4be04 100644 --- a/common/shadow-cljs.edn +++ b/common/shadow-cljs.edn @@ -1,19 +1,15 @@ {:deps {:aliases [:dev]} :builds {:test - {:target :node-test - :output-to "target/test.js" - :output-dir "target/test/" - :ns-regexp "^common-tests.*-test$" - :autorun true + {:target :esm + :output-dir "target/tests" + :runtime :node + :js-options {:js-provider :import} - :compiler-options - {:output-feature-set :es-next - :output-wrapper false - :source-map true - :source-map-include-sources-content true - :source-map-detail-level :all - :warnings {:fn-deprecated false}}} + + :modules + {:test {:init-fn common-tests.runner/-main + :prepend-js "globalThis.navigator = {userAgent: \"\"}"}}} :bench {:target :node-script diff --git a/common/src/app/common/time.cljc b/common/src/app/common/time.cljc index 4f27d0531..20e8b68da 100644 --- a/common/src/app/common/time.cljc +++ b/common/src/app/common/time.cljc @@ -27,10 +27,22 @@ #?(:clj (Instant/now) :cljs (.local ^js DateTime))) -#?(:clj - (defn is-after? - [one other] - (.isAfter one other))) +(defn is-after? + "Analgous to: da > db" + [da db] + (let [result (compare da db)] + (cond + (neg? result) false + (zero? result) false + :else true))) + +(defn is-before? + [da db] + (let [result (compare da db)] + (cond + (neg? result) true + (zero? result) false + :else false))) (defn instant? [o] diff --git a/common/test/common_tests/runner.cljc b/common/test/common_tests/runner.cljc new file mode 100644 index 000000000..5245578c1 --- /dev/null +++ b/common/test/common_tests/runner.cljc @@ -0,0 +1,89 @@ +;; 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) KALEIDOS INC + +(ns common-tests.runner + (:require + [clojure.test :as t] + [common-tests.colors-test] + [common-tests.data-test] + [common-tests.files-builder-test] + [common-tests.files-changes-test] + [common-tests.files-migrations-test] + [common-tests.geom-point-test] + [common-tests.geom-shapes-test] + [common-tests.geom-test] + [common-tests.logic.chained-propagation-test] + [common-tests.logic.comp-creation-test] + [common-tests.logic.comp-detach-with-nested-test] + [common-tests.logic.comp-remove-swap-slots-test] + [common-tests.logic.comp-reset-test] + [common-tests.logic.comp-sync-test] + [common-tests.logic.comp-touched-test] + [common-tests.logic.copying-and-duplicating-test] + [common-tests.logic.duplicated-pages-test] + [common-tests.logic.move-shapes-test] + [common-tests.logic.multiple-nesting-levels-test] + [common-tests.logic.swap-and-reset-test] + [common-tests.logic.swap-as-override-test] + [common-tests.pages-helpers-test] + [common-tests.record-test] + [common-tests.schema-test] + [common-tests.svg-path-test] + [common-tests.svg-test] + [common-tests.text-test] + [common-tests.time-test] + [common-tests.types-modifiers-test] + [common-tests.types-shape-interactions-test] + [common-tests.types.shape-decode-encode-test] + [common-tests.types.tokens-lib-test] + [common-tests.types.types-component-test] + [common-tests.types.types-libraries-test])) + +#?(:cljs (enable-console-print!)) + +#?(:cljs + (defmethod cljs.test/report [:cljs.test/default :end-run-tests] [m] + (if (cljs.test/successful? m) + (.exit js/process 0) + (.exit js/process 1)))) + +(defn -main + [& args] + (t/run-tests + 'common-tests.colors-test + 'common-tests.data-test + 'common-tests.files-builder-test + 'common-tests.files-changes-test + 'common-tests.files-migrations-test + 'common-tests.geom-point-test + 'common-tests.geom-shapes-test + 'common-tests.geom-test + 'common-tests.logic.chained-propagation-test + 'common-tests.logic.comp-creation-test + 'common-tests.logic.comp-detach-with-nested-test + 'common-tests.logic.comp-remove-swap-slots-test + 'common-tests.logic.comp-reset-test + 'common-tests.logic.comp-sync-test + 'common-tests.logic.comp-touched-test + 'common-tests.logic.copying-and-duplicating-test + 'common-tests.logic.duplicated-pages-test + 'common-tests.logic.move-shapes-test + 'common-tests.logic.multiple-nesting-levels-test + 'common-tests.logic.swap-and-reset-test + 'common-tests.logic.swap-as-override-test + 'common-tests.pages-helpers-test + 'common-tests.record-test + 'common-tests.schema-test + 'common-tests.svg-path-test + 'common-tests.svg-test + 'common-tests.text-test + 'common-tests.types-modifiers-test + 'common-tests.types-shape-interactions-test + 'common-tests.types.shape-decode-encode-test + 'common-tests.types.types-component-test + 'common-tests.types.types-libraries-test + 'common-tests.types.tokens-lib-test + 'common-tests.time-test)) diff --git a/common/test/common_tests/time_test.cljc b/common/test/common_tests/time_test.cljc new file mode 100644 index 000000000..982ca8a43 --- /dev/null +++ b/common/test/common_tests/time_test.cljc @@ -0,0 +1,16 @@ +;; 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) KALEIDOS INC + +(ns common-tests.time-test + (:require + [app.common.time :as dt] + [clojure.test :as t])) + +(t/deftest compare-time + (let [dta (dt/parse-instant 10000) + dtb (dt/parse-instant 20000)] + (t/is (false? (dt/is-after? dta dtb))) + (t/is (true? (dt/is-before? dta dtb))))) diff --git a/common/test/common_tests/types/shape_decode_encode_test.cljc b/common/test/common_tests/types/shape_decode_encode_test.cljc index 2434f5fc6..49ca27599 100644 --- a/common/test/common_tests/types/shape_decode_encode_test.cljc +++ b/common/test/common_tests/types/shape_decode_encode_test.cljc @@ -148,4 +148,4 @@ ;; (app.common.pprint/pprint shape) ;; (app.common.pprint/pprint shape-3) (= shape shape-3))) - {:num 1000}))) + {:num 100}))) diff --git a/common/test/common_tests/types/tokens_lib_test.cljc b/common/test/common_tests/types/tokens_lib_test.cljc index e4e04dae2..32f33e083 100644 --- a/common/test/common_tests/types/tokens_lib_test.cljc +++ b/common/test/common_tests/types/tokens_lib_test.cljc @@ -14,8 +14,16 @@ [app.common.types.tokens-lib :as ctob] [clojure.test :as t])) -(t/testing "token" - (t/deftest make-token +(defn setup-virtual-time + [next] + (let [current (volatile! (inst-ms (dt/now)))] + (with-redefs [dt/now #(dt/parse-instant (vswap! current inc))] + (next)))) + +(t/use-fixtures :once setup-virtual-time) + +(t/deftest tokens + (t/testing "make-token" (let [now (dt/now) token1 (ctob/make-token :name "test-token-1" :type :boolean @@ -40,14 +48,14 @@ (t/is (= (:modified-at token2) now)) (t/is (ctob/valid-token? token2)))) - (t/deftest invalid-tokens + (t/testing "invalid-tokens" (let [args {:name 777 :type :invalid}] - (t/is (thrown-with-msg? Exception #"expected valid token" + (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid token" (apply ctob/make-token args))) (t/is (false? (ctob/valid-token? {}))))) - (t/deftest find-token-value-references + (t/testing "find-token-value-references" (t/testing "finds references inside curly braces in a string" (t/is (= #{"foo" "bar"} (ctob/find-token-value-references "{foo} + {bar}"))) (t/testing "ignores extra text" @@ -57,8 +65,8 @@ (t/testing "handles edge-case for extra curly braces" (t/is (= #{"foo" "bar"} (ctob/find-token-value-references "{foo}} + {bar}")))))) -(t/testing "token-set" - (t/deftest make-token-set +(t/deftest token-set + (t/testing "make-token-set" (let [now (dt/now) token-set1 (ctob/make-token-set :name "test-token-set-1") token-set2 (ctob/make-token-set :name "test-token-set-2" @@ -76,13 +84,13 @@ (t/is (= (:modified-at token-set2) now)) (t/is (empty? (:tokens token-set2))))) - (t/deftest invalid-token-set + (t/testing "invalid-token-set" (let [args {:name 777 :description 999}] - (t/is (thrown-with-msg? Exception #"expected valid token set" + (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid token set" (apply ctob/make-token-set args))))) - (t/deftest move-token-set + (t/testing "move-token-set" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "A")) (ctob/add-set (ctob/make-token-set :name "B")) @@ -107,7 +115,7 @@ (t/is (= original-order (move "A" "foo/bar/baz"))) (t/is (= original-order (move "Missing" "Move")))))) - (t/deftest tokens-tree + (t/testing "tokens-tree" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "A" :tokens {"foo.bar.baz" (ctob/make-token :name "foo.bar.baz" @@ -125,8 +133,8 @@ (t/is (= (get-in expected ["foo" "bar" "bam" :name]) "foo.bar.bam")) (t/is (= (get-in expected ["baz" "boo" :name]) "baz.boo"))))) -(t/testing "token-theme" - (t/deftest make-token-theme +(t/deftest token-theme + (t/testing "make-token-theme" (let [now (dt/now) token-theme1 (ctob/make-token-theme :name "test-token-theme-1") token-theme2 (ctob/make-token-theme :name "test-token-theme-2" @@ -150,24 +158,24 @@ (t/is (= (:modified-at token-theme2) now)) (t/is (empty? (:sets token-theme2))))) - (t/deftest invalid-token-theme + (t/testing "invalid-token-theme" (let [args {:name 777 :group nil :description 999 :is-source 42}] - (t/is (thrown-with-msg? Exception #"expected valid token theme" + (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid token theme" (apply ctob/make-token-theme args)))))) -(t/testing "tokens-lib" - (t/deftest make-tokens-lib +(t/deftest tokens-lib + (t/testing "make-tokens-lib" (let [tokens-lib (ctob/make-tokens-lib)] (t/is (= (ctob/set-count tokens-lib) 0)))) - (t/deftest invalid-tokens-lib + (t/testing "invalid-tokens-lib" (let [args {:sets nil :themes nil}] - (t/is (thrown-with-msg? Exception #"expected valid tokens lib" + (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid tokens lib" (apply ctob/make-tokens-lib args)))))) @@ -263,8 +271,8 @@ (t/is (nil? token-set'))))) -(t/testing "token in a lib" - (t/deftest add-token +(t/deftest token-in-a-lib + (t/testing "add-token" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set"))) token (ctob/make-token :name "test-token" @@ -283,7 +291,7 @@ (t/is (= (:name token') "test-token")) (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))) - (t/deftest update-token + (t/testing "update-token" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -324,7 +332,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))) (t/is (dt/is-after? (:modified-at token') (:modified-at token))))) - (t/deftest rename-token + (t/testing "rename-token" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -356,7 +364,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))) (t/is (dt/is-after? (:modified-at token') (:modified-at token))))) - (t/deftest delete-token + (t/testing "delete-token" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -377,7 +385,7 @@ (t/is (nil? token')) (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))) - (t/deftest list-active-themes-tokens-in-order + (t/testing "list-active-themes-tokens-in-order" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :name "out-of-order-theme" ;; Out of order sets in theme @@ -405,8 +413,8 @@ (t/is (= ["set-a-token" "set-b-token"] expected-token-names))))) -(t/testing "token-theme in a lib" - (t/deftest add-token-theme +(t/deftest token-theme-in-a-lib + (t/testing "add-token-theme" (let [tokens-lib (ctob/make-tokens-lib) token-theme (ctob/make-token-theme :name "test-token-theme") tokens-lib' (ctob/add-theme tokens-lib token-theme) @@ -418,7 +426,7 @@ (t/is (= (first token-themes') token-theme)) (t/is (= token-theme' token-theme)))) - (t/deftest update-token-theme + (t/testing "update-token-theme" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) @@ -440,7 +448,7 @@ (t/is (= (:description token-theme') "some description")) (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme))))) - (t/deftest rename-token-theme + (t/testing "rename-token-theme" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) @@ -457,7 +465,7 @@ (t/is (= (:name token-theme') "updated-name")) (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme))))) - (t/deftest delete-token-theme + (t/testing "delete-token-theme" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) @@ -470,7 +478,7 @@ (t/is (= (ctob/theme-count tokens-lib') 0)) (t/is (nil? token-theme')))) - (t/deftest toggle-set-in-theme + (t/testing "toggle-set-in-theme" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "token-set-2")) @@ -487,8 +495,8 @@ (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme)))))) -(t/testing "serialization" - (t/deftest transit-serialization +(t/deftest serialization + (t/testing "transit-serialization" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" (ctob/make-token :name "test-token" @@ -503,23 +511,24 @@ (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (ctob/theme-count tokens-lib') 1)))) - (t/deftest fressian-serialization - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" (ctob/make-token :name "test-token" - :type :boolean - :value true)) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme")) - (ctob/toggle-set-in-theme "" "test-token-theme" "test-token-set")) - encoded-blob (fres/encode tokens-lib) - tokens-lib' (fres/decode encoded-blob)] + #?(:clj + (t/testing "fressian-serialization" + (let [tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-set (ctob/make-token-set :name "test-token-set")) + (ctob/add-token-in-set "test-token-set" (ctob/make-token :name "test-token" + :type :boolean + :value true)) + (ctob/add-theme (ctob/make-token-theme :name "test-token-theme")) + (ctob/toggle-set-in-theme "" "test-token-theme" "test-token-set")) + encoded-blob (fres/encode tokens-lib) + tokens-lib' (fres/decode encoded-blob)] - (t/is (ctob/valid-tokens-lib? tokens-lib')) - (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (ctob/theme-count tokens-lib') 1))))) + (t/is (ctob/valid-tokens-lib? tokens-lib')) + (t/is (= (ctob/set-count tokens-lib') 1)) + (t/is (= (ctob/theme-count tokens-lib') 1)))))) -(t/testing "grouping" - (t/deftest split-and-join +(t/deftest grouping + (t/testing "split-and-join" (let [name "group/subgroup/name" path (ctob/split-path name "/") name' (ctob/join-path path "/")] @@ -528,14 +537,14 @@ (t/is (= (nth path 2) "name")) (t/is (= name' name)))) - (t/deftest remove-spaces + (t/testing "remove-spaces" (let [name "group / subgroup / name" path (ctob/split-path name "/")] (t/is (= (first path) "group")) (t/is (= (second path) "subgroup")) (t/is (= (nth path 2) "name")))) - (t/deftest group-and-ungroup + (t/testing "group-and-ungroup" (let [token-set1 (ctob/make-token-set :name "token-set1") token-set2 (ctob/make-token-set :name "some group/token-set2") @@ -548,7 +557,7 @@ (t/is (= (:name token-set1'') "token-set1")) (t/is (= (:name token-set2'') "some group/token-set2")))) - (t/deftest get-groups-str + (t/testing "get-groups-str" (let [token-set1 (ctob/make-token-set :name "token-set1") token-set2 (ctob/make-token-set :name "some-group/token-set2") token-set3 (ctob/make-token-set :name "some-group/some-subgroup/token-set3")] @@ -556,7 +565,7 @@ (t/is (= (ctob/get-groups-str token-set2 "/") "some-group")) (t/is (= (ctob/get-groups-str token-set3 "/") "some-group/some-subgroup")))) - (t/deftest get-final-name + (t/testing "get-final-name" (let [token-set1 (ctob/make-token-set :name "token-set1") token-set2 (ctob/make-token-set :name "some-group/token-set2") token-set3 (ctob/make-token-set :name "some-group/some-subgroup/token-set3")] @@ -565,7 +574,7 @@ (t/is (= (ctob/get-final-name token-set3 "/") "token-set3")))) (t/testing "grouped tokens" - (t/deftest grouped-tokens + (t/testing "grouped-tokens" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -599,7 +608,7 @@ (t/is (= (:name (nth tokens-list 3)) "group1.subgroup11.token4")) (t/is (= (:name (nth tokens-list 4)) "group2.token5")))) - (t/deftest update-token-in-groups + (t/testing "update-token-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -634,7 +643,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))) (t/is (dt/is-after? (:modified-at token') (:modified-at token))))) - (t/deftest rename-token-in-groups + (t/testing "rename-token-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -668,7 +677,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))) (t/is (dt/is-after? (:modified-at token') (:modified-at token))))) - (t/deftest move-token-of-group + (t/testing "move-token-of-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -703,7 +712,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))) (t/is (dt/is-after? (:modified-at token') (:modified-at token))))) - (t/deftest delete-token-in-group + (t/testing "delete-token-in-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "test-token-set")) (ctob/add-token-in-set "test-token-set" @@ -727,7 +736,7 @@ (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))))) (t/testing "grouped sets" - (t/deftest grouped-sets + (t/testing "grouped-sets" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) @@ -786,7 +795,7 @@ (t/is (= (ctob/group? (second node-set5)) false)) (t/is (= (:name (second node-set5)) "group2/token-set-5")))) - (t/deftest update-set-in-groups + (t/testing "update-set-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) @@ -812,7 +821,7 @@ (t/is (= (:description token-set') "some description")) (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))) - (t/deftest rename-set-in-groups + (t/testing "rename-set-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) @@ -839,7 +848,7 @@ (t/is (= (:description token-set') nil)) (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))) - (t/deftest move-set-of-group + (t/testing "move-set-of-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) @@ -868,7 +877,7 @@ (t/is (= (:description token-set') nil)) (t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))) - (t/deftest delete-set-in-group + (t/testing "delete-set-in-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))) @@ -884,7 +893,7 @@ (t/is (nil? token-set'))))) (t/testing "grouped themes" - (t/deftest grouped-themes + (t/testing "grouped-themes" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) @@ -941,7 +950,7 @@ (t/is (= (ctob/group? (second node-theme4)) false)) (t/is (= (:name (second node-theme4)) "token-theme-4")))) - (t/deftest update-theme-in-groups + (t/testing "update-theme-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) @@ -967,7 +976,7 @@ (t/is (= (:description token-theme') "some description")) (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme))))) - (t/deftest get-theme-groups + (t/testing "get-theme-groups" (let [token-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) @@ -976,13 +985,14 @@ token-groups (ctob/get-theme-groups token-lib)] (t/is (= token-groups ["group1" "group2"])))) - (t/deftest rename-theme-in-groups + (t/testing "rename-theme-in-groups" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-3")) (ctob/add-theme (ctob/make-token-theme :group "group2" :name "token-theme-4"))) + tokens-lib' (-> tokens-lib (ctob/update-theme "group1" "token-theme-2" (fn [token-theme] @@ -1003,7 +1013,7 @@ (t/is (= (:description token-theme') nil)) (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme))))) - (t/deftest move-theme-of-group + (t/testing "move-theme-of-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) @@ -1033,7 +1043,7 @@ (t/is (= (:description token-theme') nil)) (t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme))))) - (t/deftest delete-theme-in-group + (t/testing "delete-theme-in-group" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2"))) @@ -1049,8 +1059,8 @@ (t/is (nil? token-theme')))))) #?(:clj - (t/testing "dtcg encoding/decoding" - (t/deftest decode-dtcg-json + (t/deftest dtcg-encoding-decoding + (t/testing "decode-dtcg-json" (let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-example.json") (tr/decode-str)) lib (ctob/decode-dtcg-json (ctob/ensure-tokens-lib nil) json) @@ -1078,7 +1088,7 @@ (t/testing "invalid tokens got discarded" (t/is (nil? (get-set-token "typography" "H1.Bold")))))) - (t/deftest encode-dtcg-json + (t/testing "encode-dtcg-json" (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "core" :tokens {"colors.red.600" @@ -1111,7 +1121,7 @@ "$type" "color"}}}}} expected)))) - (t/deftest encode-decode-dtcg-json + (t/testing "encode-decode-dtcg-json" (with-redefs [dt/now (constantly #inst "2024-10-16T12:01:20.257840055-00:00")] (let [tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "core" diff --git a/common/yarn.lock b/common/yarn.lock index 94f9b89aa..aba0aea01 100644 --- a/common/yarn.lock +++ b/common/yarn.lock @@ -88,7 +88,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^4.0.0": +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" dependencies: @@ -104,6 +104,16 @@ __metadata: languageName: node linkType: hard +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + "asn1.js@npm:^4.10.1": version: 4.10.1 resolution: "asn1.js@npm:4.10.1" @@ -139,6 +149,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": version: 4.12.0 resolution: "bn.js@npm:4.12.0" @@ -153,6 +170,16 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + "brace-expansion@npm:^2.0.1": version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" @@ -162,6 +189,15 @@ __metadata: languageName: node linkType: hard +"braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + "brorand@npm:^1.0.1, brorand@npm:^1.1.0": version: 1.1.0 resolution: "brorand@npm:1.1.0" @@ -308,6 +344,35 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chokidar@npm:^3.5.2": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -332,6 +397,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -352,14 +428,41 @@ __metadata: version: 0.0.0-use.local resolution: "common@workspace:." dependencies: + concurrently: "npm:^9.0.1" luxon: "npm:^3.4.4" + nodemon: "npm:^3.1.7" sax: "npm:^1.4.1" - shadow-cljs: "npm:2.28.11" + shadow-cljs: "npm:2.28.18" source-map-support: "npm:^0.5.21" ws: "npm:^8.17.0" languageName: unknown linkType: soft +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"concurrently@npm:^9.0.1": + version: 9.1.0 + resolution: "concurrently@npm:9.1.0" + dependencies: + chalk: "npm:^4.1.2" + lodash: "npm:^4.17.21" + rxjs: "npm:^7.8.1" + shell-quote: "npm:^1.8.1" + supports-color: "npm:^8.1.1" + tree-kill: "npm:^1.2.2" + yargs: "npm:^17.7.2" + bin: + conc: dist/bin/concurrently.js + concurrently: dist/bin/concurrently.js + checksum: 10c0/f2f42f94dde508bfbaf47b5ac654db9e8a4bf07d3d7b6267dd058ae6f362eec677ae7c8ede398d081e5fd0d1de5811dc9a53e57d3f1f68e72ac6459db9e0896b + languageName: node + linkType: hard + "console-browserify@npm:^1.1.0": version: 1.2.0 resolution: "console-browserify@npm:1.2.0" @@ -460,6 +563,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -585,6 +700,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.1.1": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + "events@npm:^3.0.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -610,6 +732,15 @@ __metadata: languageName: node linkType: hard +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + "foreground-child@npm:^3.1.0": version: 3.1.1 resolution: "foreground-child@npm:3.1.1" @@ -638,6 +769,25 @@ __metadata: languageName: node linkType: hard +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + "function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" @@ -645,6 +795,13 @@ __metadata: languageName: node linkType: hard +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" @@ -658,6 +815,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + "glob@npm:^10.2.2, glob@npm:^10.3.10": version: 10.3.16 resolution: "glob@npm:10.3.16" @@ -689,6 +855,20 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" @@ -813,6 +993,13 @@ __metadata: languageName: node linkType: hard +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -851,6 +1038,22 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -858,6 +1061,15 @@ __metadata: languageName: node linkType: hard +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -865,6 +1077,13 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + "isarray@npm:^1.0.0, isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -906,6 +1125,13 @@ __metadata: languageName: node linkType: hard +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.2.2 resolution: "lru-cache@npm:10.2.2" @@ -977,6 +1203,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + "minimatch@npm:^9.0.1": version: 9.0.4 resolution: "minimatch@npm:9.0.4" @@ -1086,6 +1321,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + "negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" @@ -1144,6 +1386,26 @@ __metadata: languageName: node linkType: hard +"nodemon@npm:^3.1.7": + version: 3.1.7 + resolution: "nodemon@npm:3.1.7" + dependencies: + chokidar: "npm:^3.5.2" + debug: "npm:^4" + ignore-by-default: "npm:^1.0.1" + minimatch: "npm:^3.1.2" + pstree.remy: "npm:^1.1.8" + semver: "npm:^7.5.3" + simple-update-notifier: "npm:^2.0.0" + supports-color: "npm:^5.5.0" + touch: "npm:^3.1.0" + undefsafe: "npm:^2.0.5" + bin: + nodemon: bin/nodemon.js + checksum: 10c0/e0b46939abdbce251b1d6281005a5763cee57db295bb00bc4a753b0f5320dac00fe53547fb6764c70a086cf6d1238875cccb800fbc71544b3ecbd3ef71183c87 + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -1155,6 +1417,13 @@ __metadata: languageName: node linkType: hard +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + "object-inspect@npm:^1.13.1": version: 1.13.1 resolution: "object-inspect@npm:1.13.1" @@ -1255,6 +1524,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -1293,6 +1569,13 @@ __metadata: languageName: node linkType: hard +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 + languageName: node + linkType: hard + "public-encrypt@npm:^4.0.0": version: 4.0.3 resolution: "public-encrypt@npm:4.0.3" @@ -1375,6 +1658,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + "readline-sync@npm:^1.4.7": version: 1.4.10 resolution: "readline-sync@npm:1.4.10" @@ -1382,6 +1674,13 @@ __metadata: languageName: node linkType: hard +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -1399,6 +1698,15 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + "safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -1436,6 +1744,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.5.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -1476,9 +1793,9 @@ __metadata: languageName: node linkType: hard -"shadow-cljs@npm:2.28.11": - version: 2.28.11 - resolution: "shadow-cljs@npm:2.28.11" +"shadow-cljs@npm:2.28.18": + version: 2.28.18 + resolution: "shadow-cljs@npm:2.28.18" dependencies: node-libs-browser: "npm:^2.2.1" readline-sync: "npm:^1.4.7" @@ -1488,7 +1805,7 @@ __metadata: ws: "npm:^7.4.6" bin: shadow-cljs: cli/runner.js - checksum: 10c0/c5c77d524ee8f44e4ae2ddc196af170d02405cc8731ea71f852c7b220fc1ba8aaf5cf33753fd8a7566c8749bb75d360f903dfb0d131bcdc6c2c33f44404bd6a3 + checksum: 10c0/4732cd11a5722644a0a91ae5560a55f62432ae5317bd2d1fd5bf12af8354c81776f4fcfce5c477b43af1ac2ecd4a216887337e1b92cca37a1b8cb9c157a393c1 languageName: node linkType: hard @@ -1508,6 +1825,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + "side-channel@npm:^1.0.6": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -1527,6 +1851,15 @@ __metadata: languageName: node linkType: hard +"simple-update-notifier@npm:^2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -1627,7 +1960,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -1685,6 +2018,33 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -1715,6 +2075,40 @@ __metadata: languageName: node linkType: hard +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"touch@npm:^3.1.0": + version: 3.1.1 + resolution: "touch@npm:3.1.1" + bin: + nodetouch: bin/nodetouch.js + checksum: 10c0/d2e4d269a42c846a22a29065b9af0b263de58effc85a1764bb7a2e8fc4b47700e9e2fcbd7eb1f5bffbb7c73d860f93600cef282b93ddac8f0b62321cb498b36e + languageName: node + linkType: hard + +"tree-kill@npm:^1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + languageName: node + linkType: hard + +"tslib@npm:^2.1.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0" @@ -1722,6 +2116,13 @@ __metadata: languageName: node linkType: hard +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -1815,7 +2216,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -1874,9 +2275,38 @@ __metadata: languageName: node linkType: hard +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard diff --git a/frontend/package.json b/frontend/package.json index b5018182d..ba3c0ce70 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -35,7 +35,7 @@ "lint:scss:fix": "yarn run prettier -c resources/styles -c src/**/*.scss -w", "build:test": "clojure -M:dev:shadow-cljs compile test", "test": "yarn run build:test && node target/tests/test.js", - "watch:test": "concurrently \"clojure -M:dev:shadow-cljs watch test\" \"nodemon -w target/tests/test.js --exec 'sleep 2 && node target/tests/test.js'\"", + "watch:test": "mkdir -p target/tests && concurrently \"clojure -M:dev:shadow-cljs watch test\" \"nodemon -C -d 2 -w target/tests --exec 'node target/tests/test.js'\"", "test:e2e": "playwright test --project default", "translations": "node ./scripts/translations.js", "watch:app:assets": "node ./scripts/watch.js", diff --git a/frontend/src/app/config.cljs b/frontend/src/app/config.cljs index 2ac4d98df..b58876f97 100644 --- a/frontend/src/app/config.cljs +++ b/frontend/src/app/config.cljs @@ -90,7 +90,6 @@ "unknown" date))) - ;; --- Global Config Vars (def default-theme "default")