From 605e6e7a5049806f9b2129731c28f2a182cd5cb5 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sat, 15 Jan 2022 10:38:41 +0100 Subject: [PATCH] Change search input to accept property filters as well Signed-off-by: trivernis --- mediarepo-ui/package.json | 3 +- mediarepo-ui/src-tauri/Cargo.lock | 352 ++++++++------- mediarepo-ui/src-tauri/Cargo.toml | 17 +- mediarepo-ui/src-tauri/tauri.conf.json | 6 - .../src/api/models/FilterQueryBuilder.ts | 1 - mediarepo-ui/src/api/models/SearchFilters.ts | 4 + .../filter-input/filter-input.component.html | 16 + .../filter-input/filter-input.component.scss | 3 + .../filter-input.component.spec.ts | 25 ++ .../filter-input/filter-input.component.ts | 126 ++++++ .../components/shared/input/input.module.ts | 13 +- .../input/tag-input/tag-input.component.ts | 81 ++-- .../file-search/file-search.component.html | 12 +- .../file-search/file-search.component.ts | 16 +- mediarepo-ui/src/app/utils/compare-utils.ts | 13 + mediarepo-ui/tsconfig.app.json | 24 +- mediarepo-ui/yarn.lock | 420 +++++++++--------- 17 files changed, 652 insertions(+), 480 deletions(-) create mode 100644 mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.html create mode 100644 mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.scss create mode 100644 mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.spec.ts create mode 100644 mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.ts create mode 100644 mediarepo-ui/src/app/utils/compare-utils.ts diff --git a/mediarepo-ui/package.json b/mediarepo-ui/package.json index 8491755..b099241 100644 --- a/mediarepo-ui/package.json +++ b/mediarepo-ui/package.json @@ -3,9 +3,10 @@ "version": "0.12.0", "scripts": { "ng": "ng", - "start": "ng serve", + "start": "ng serve --configuration production", "build": "ng build", "watch": "ng build --watch --configuration development", + "watch-prod": "ng build --watch --configuration production", "test": "ng test", "lint": "ng lint", "tauri": "tauri" diff --git a/mediarepo-ui/src-tauri/Cargo.lock b/mediarepo-ui/src-tauri/Cargo.lock index f9a3751..a74a66b 100644 --- a/mediarepo-ui/src-tauri/Cargo.lock +++ b/mediarepo-ui/src-tauri/Cargo.lock @@ -70,9 +70,9 @@ version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -140,9 +140,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake3" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "526c210b4520e416420759af363083471656e819a75e831b8d2c9d5a584f2413" +checksum = "882e99e4a0cb2ae6cb6e442102e8e6b7131718d94110e64c3e6a34ea9b106f37" dependencies = [ "arrayref", "arrayvec", @@ -159,6 +159,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1d36a02058e76b040de25a4464ba1c80935655595b661505c8b39b664828b95" +dependencies = [ + "generic-array", +] + [[package]] name = "bromine" version = "0.17.1" @@ -188,9 +197,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.8.0" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "byteorder" @@ -356,8 +365,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7606b05842fea68ddcc89e8053b8860ebcb2a0ba8d6abfe3a148e5d5a8d3f0c1" dependencies = [ "com_macros_support", - "proc-macro2 1.0.35", - "syn 1.0.84", + "proc-macro2 1.0.36", + "syn 1.0.85", ] [[package]] @@ -366,9 +375,9 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97e9a6d20f4ac8830e309a455d7e9416e65c6af5a97c88c55fbb4c2012e107da" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -476,9 +485,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -497,9 +506,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "97242a70df9b89a65d0b6df3c4bf5b9ce03c5b7309019777fbde37e7537f8762" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -510,14 +519,23 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "cfcae03edb34f947e64acdb1c33ec169824e20657e9ecb61cef6c8c74dcb8120" dependencies = [ "cfg-if 1.0.0", "lazy_static", ] +[[package]] +name = "crypto-common" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d6b536309245c849479fba3da410962a43ed8e51c26b729208ec0ac2798d0" +dependencies = [ + "generic-array", +] + [[package]] name = "cssparser" version = "0.27.2" @@ -529,10 +547,10 @@ dependencies = [ "itoa 0.4.8", "matches", "phf 0.8.0", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "smallvec", - "syn 1.0.84", + "syn 1.0.85", ] [[package]] @@ -541,8 +559,8 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" dependencies = [ - "quote 1.0.10", - "syn 1.0.84", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -569,10 +587,10 @@ checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "strsim", - "syn 1.0.84", + "syn 1.0.85", ] [[package]] @@ -582,8 +600,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ "darling_core", - "quote 1.0.10", - "syn 1.0.84", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -606,17 +624,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", -] - [[package]] name = "derive_more" version = "0.99.17" @@ -624,19 +631,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "rustc_version 0.4.0", - "syn 1.0.84", + "syn 1.0.85", ] [[package]] name = "digest" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "b697d66081d42af4fba142d56918a3cb21dc8eb63372c6b85d14f44fb9c5979b" dependencies = [ + "block-buffer", + "crypto-common", "generic-array", + "subtle", ] [[package]] @@ -709,9 +719,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "embed_plist" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53dd2e43a7d32952a6054141ee0d75183958620e84e5eab045de362dff13dc99" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] name = "fastrand" @@ -866,9 +876,9 @@ version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -983,9 +993,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -1004,9 +1014,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1085,9 +1095,9 @@ dependencies = [ "heck", "proc-macro-crate 1.1.0", "proc-macro-error", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1196,9 +1206,9 @@ dependencies = [ "heck", "proc-macro-crate 1.1.0", "proc-macro-error", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1228,20 +1238,20 @@ dependencies = [ "log", "mac", "markup5ever", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] name = "http" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" +checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" dependencies = [ "bytes", "fnv", - "itoa 0.4.8", + "itoa 1.0.1", ] [[package]] @@ -1636,9 +1646,9 @@ checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" dependencies = [ "darling", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1710,24 +1720,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "085fe377a4b2805c0fbc09484415ec261174614b7f080b0e0d520456ac421a67" +checksum = "720d3ea1055e4e4574c0c0b0f8c3fd4f24c4cdaf465948206dea090b57b526ad" dependencies = [ - "derivative", "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5249369707a1e07b39f78d98c8f34e00aca7dcb053812fdbb5ad7be82c1bba38" +checksum = "0d992b768490d7fe0d8586d9b5745f6c49f557da6d81dc982b1d167ad4edbb21" dependencies = [ "proc-macro-crate 1.1.0", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1765,16 +1774,6 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" -[[package]] -name = "open" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176ee4b630d174d2da8241336763bb459281dddc0f4d87f72c3b1efc9a6109b7" -dependencies = [ - "pathdiff", - "winapi", -] - [[package]] name = "openssl" version = "0.10.38" @@ -1791,9 +1790,9 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" @@ -1864,12 +1863,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - [[package]] name = "pathsearch" version = "0.2.0" @@ -1956,9 +1949,9 @@ dependencies = [ "phf_generator 0.8.0", "phf_shared 0.8.0", "proc-macro-hack", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1970,9 +1963,9 @@ dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", "proc-macro-hack", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -1995,9 +1988,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -2037,9 +2030,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "precomputed-hash" @@ -2073,9 +2066,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", "version_check", ] @@ -2085,8 +2078,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "version_check", ] @@ -2107,9 +2100,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392a54546fda6b7cc663379d0e6ce8b324cf88aecc5a499838e1be9781bdce2e" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid 0.2.2", ] @@ -2125,11 +2118,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" dependencies = [ - "proc-macro2 1.0.35", + "proc-macro2 1.0.36", ] [[package]] @@ -2193,7 +2186,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", ] [[package]] @@ -2282,7 +2275,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", "redox_syscall", ] @@ -2474,29 +2467,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" +checksum = "97565067517b60e2d1ea8b268e59ce036de907ac523ad83a0475da04e818989a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" +checksum = "ed201699328568d8d08208fdd080e3ff594e6c422e438b6705905da01005d537" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] name = "serde_json" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +checksum = "ee2bb9cd061c5865d345bb02ca49fcef1391741b672b54a0bf7b679badec3142" dependencies = [ "itoa 1.0.1", "ryu", @@ -2531,9 +2524,9 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -2590,9 +2583,9 @@ checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "smallvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "soup-sys" @@ -2646,8 +2639,8 @@ checksum = "f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97" dependencies = [ "phf_generator 0.8.0", "phf_shared 0.8.0", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", ] [[package]] @@ -2675,9 +2668,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" dependencies = [ "heck", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -2687,11 +2680,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" dependencies = [ "heck", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + [[package]] name = "syn" version = "0.15.44" @@ -2705,12 +2704,12 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" +checksum = "a684ac3dcd8913827e18cd09a68384ee66c1de24157e3c556c9ab16d85695fb7" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "unicode-xid 0.2.2", ] @@ -2817,7 +2816,6 @@ dependencies = [ "http", "ignore", "once_cell", - "open", "percent-encoding", "rand 0.8.4", "raw-window-handle 0.3.4", @@ -2847,8 +2845,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c9c9a9bea25b9d6f5845b8662e18447e17218f99860cab37e39e2b57a9fcd49" dependencies = [ "anyhow", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "serde_json", "tauri-utils", "winres", @@ -2862,8 +2860,8 @@ checksum = "1663739ab53e281919676f216fb56a031104d0d2cd1a2dd5b012d279bcdb0ea4" dependencies = [ "blake3", "kuchiki", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "regex", "serde", "serde_json", @@ -2879,9 +2877,9 @@ version = "1.0.0-beta.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bddf9f5868402323f35ef94fa6ab1d5d10b29aea9de598d829723aa1db5693b4" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", "tauri-codegen", ] @@ -2929,8 +2927,8 @@ dependencies = [ "html5ever", "kuchiki", "phf 0.10.1", - "proc-macro2 1.0.35", - "quote 1.0.10", + "proc-macro2 1.0.36", + "quote 1.0.14", "serde", "serde_json", "thiserror", @@ -2940,13 +2938,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", @@ -2984,9 +2982,9 @@ version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -3068,9 +3066,9 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", ] [[package]] @@ -3095,9 +3093,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5e6136799e1079699e0d9784c883e03af55cf6a1bee48fe1d79ca552c1bc36f" +checksum = "5d81bfa81424cc98cb034b837c985b7a290f592e5b4322f353f94a0ab0f9f594" dependencies = [ "ansi_term", "lazy_static", @@ -3196,7 +3194,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", ] [[package]] @@ -3219,9 +3217,9 @@ checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "waker-fn" @@ -3271,9 +3269,9 @@ dependencies = [ "bumpalo", "lazy_static", "log", - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", "wasm-bindgen-shared", ] @@ -3295,7 +3293,7 @@ version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" dependencies = [ - "quote 1.0.10", + "quote 1.0.14", "wasm-bindgen-macro-support", ] @@ -3305,9 +3303,9 @@ version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" dependencies = [ - "proc-macro2 1.0.35", - "quote 1.0.10", - "syn 1.0.84", + "proc-macro2 1.0.36", + "quote 1.0.14", + "syn 1.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3515,18 +3513,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.9.1+zstd.1.5.1" +version = "0.9.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "538b8347df9257b7fbce37677ef7535c00a3c7bf1f81023cc328ed7fe4b41de8" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.2+zstd.1.5.1" +version = "4.1.3+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb4cfe2f6e6d35c5d27ecd9d256c4b6f7933c4895654917460ec56c29336cc1" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" dependencies = [ "libc", "zstd-sys", diff --git a/mediarepo-ui/src-tauri/Cargo.toml b/mediarepo-ui/src-tauri/Cargo.toml index ff17dd3..aab1966 100644 --- a/mediarepo-ui/src-tauri/Cargo.toml +++ b/mediarepo-ui/src-tauri/Cargo.toml @@ -2,7 +2,7 @@ name = "app" version = "0.12.0" description = "A Tauri App" -authors = [ "you" ] +authors = ["you"] license = "" repository = "" default-run = "app" @@ -14,20 +14,23 @@ tauri-build = { version = "^1.0.0-beta.4" } [dependencies] serde_json = "^1.0" -serde = { version = "^1.0", features = [ "derive" ] } -tauri = { version = "^1.0.0-beta.8", features = ["dialog-all", "path-all", "shell-open"] } +serde = { version = "^1.0", features = ["derive"] } thiserror = "^1.0.30" typemap_rev = "^0.1.5" +[dependencies.tauri] +version = "^1.0.0-beta.8" +features = ["dialog-all"] + [dependencies.tracing-subscriber] version = "^0.3.0" -features = [ "env-filter" ] +features = ["env-filter"] [dependencies.mediarepo-api] git = "https://github.com/Trivernis/mediarepo-api.git" rev = "bd21f48f41aa2943f76b21addf137b2e58d492ca" -features = [ "tauri-plugin" ] +features = ["tauri-plugin"] [features] -default = [ "custom-protocol" ] -custom-protocol = [ "tauri/custom-protocol" ] +default = ["custom-protocol"] +custom-protocol = ["tauri/custom-protocol"] diff --git a/mediarepo-ui/src-tauri/tauri.conf.json b/mediarepo-ui/src-tauri/tauri.conf.json index 94fb3b2..562d24a 100644 --- a/mediarepo-ui/src-tauri/tauri.conf.json +++ b/mediarepo-ui/src-tauri/tauri.conf.json @@ -52,12 +52,6 @@ "allowlist": { "dialog": { "all": true - }, - "path": { - "all": true - }, - "shell": { - "open": true } }, "windows": [ diff --git a/mediarepo-ui/src/api/models/FilterQueryBuilder.ts b/mediarepo-ui/src/api/models/FilterQueryBuilder.ts index 770190c..3fae4fb 100644 --- a/mediarepo-ui/src/api/models/FilterQueryBuilder.ts +++ b/mediarepo-ui/src/api/models/FilterQueryBuilder.ts @@ -85,7 +85,6 @@ export class FilterQueryBuilder { let valueStarted = false; for (const char of expression) { - console.log(char); if (!valueStarted) { switch (char) { case " ": diff --git a/mediarepo-ui/src/api/models/SearchFilters.ts b/mediarepo-ui/src/api/models/SearchFilters.ts index 6a96558..de6fa63 100644 --- a/mediarepo-ui/src/api/models/SearchFilters.ts +++ b/mediarepo-ui/src/api/models/SearchFilters.ts @@ -17,6 +17,10 @@ export class SearchFilters { return !!this.filters.find(f => deepEqual(f, expression)); } + public addFilterExpression(filter: FilterExpression) { + this.filters.push(filter); + } + public addFilter(filter: FilterQuery, index: number) { this.filters = [...this.filters.slice( 0, diff --git a/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.html b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.html new file mode 100644 index 0000000..ba01846 --- /dev/null +++ b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.html @@ -0,0 +1,16 @@ + + + Enter a filter expression + + + + + + {{tag}} + + + diff --git a/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.scss b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.scss new file mode 100644 index 0000000..bc76a27 --- /dev/null +++ b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.scss @@ -0,0 +1,3 @@ +mat-form-field { + width: 100%; +} diff --git a/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.spec.ts b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.spec.ts new file mode 100644 index 0000000..8df597e --- /dev/null +++ b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterInputComponent } from './filter-input.component'; + +describe('FilterInputComponent', () => { + let component: FilterInputComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ FilterInputComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.ts b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.ts new file mode 100644 index 0000000..80e42d0 --- /dev/null +++ b/mediarepo-ui/src/app/components/shared/input/filter-input/filter-input.component.ts @@ -0,0 +1,126 @@ +import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from "@angular/core"; +import {Observable} from "rxjs"; +import {FormControl} from "@angular/forms"; +import {Tag} from "../../../../../api/models/Tag"; +import {FilterExpression} from "../../../../../api/api-types/files"; +import {debounceTime, map, startWith} from "rxjs/operators"; +import {compareSearchResults} from "../../../../utils/compare-utils"; +import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; +import {FilterQueryBuilder} from "../../../../../api/models/FilterQueryBuilder"; + +@Component({ + selector: "app-filter-input", + templateUrl: "./filter-input.component.html", + styleUrls: ["./filter-input.component.scss"] +}) +export class FilterInputComponent implements OnChanges { + + @Input() availableTags: Tag[] = []; + @Output() filterAdded = new EventEmitter(); + + public autosuggestFilters: Observable; + public formControl = new FormControl(); + + private propertyQueriesWithValues: { [key: string]: (string | undefined)[] } = { + ".status": ["imported", "archived", "deleted"], + ".fileSize": [undefined], + ".importedTime": [undefined], + ".createdTime": [undefined], + ".changedTime": [undefined], + ".contentDescriptor": [undefined], + ".fileId": [undefined], + ".tagCount": [undefined] + }; + private comparators = [ + ">", + "<", + "=" + ]; + private tagsForAutocomplete: string[] = []; + + constructor() { + this.autosuggestFilters = this.formControl.valueChanges.pipe( + startWith(null), + debounceTime(250), + map((value) => value ? this.filterAutosuggestFilters(value) : this.tagsForAutocomplete.slice(0, 20)) + ); + this.tagsForAutocomplete = this.availableTags.map( + t => t.getNormalizedOutput()); + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes["availableTags"]) { + this.tagsForAutocomplete = this.availableTags.map( + t => t.getNormalizedOutput()); + } + } + + public addFilterByInput(): void { + const filter = FilterQueryBuilder.buildFilterFromString(this.formControl.value); + + if ("Tag" in filter) { + const tagFilter = filter["Tag"]; + + if (this.tagsForAutocomplete.includes(tagFilter.tag)) { + this.filterAdded.emit({ Query: filter }); + this.clearFilterInput(); + } else { + this.formControl.setErrors(["invalid tag"]); + } + } else { + this.filterAdded.emit({ Query: filter }); + this.clearFilterInput(); + } + } + + public addFilterByAutocomplete(_event: MatAutocompleteSelectedEvent): void { + } + + private filterAutosuggestFilters(filterValue: string): string[] { + const trimmedValue = filterValue.trim(); + let isNegation = trimmedValue.startsWith("-"); + const cleanValue = trimmedValue.replace(/^-/, ""); + const autosuggestTags = this.tagsForAutocomplete.filter(t => t.includes(cleanValue)).map(t => isNegation ? "-" + t : t); + let propertyQuerySuggestions: string[] = []; + console.error("NEW STATE"); + + if (trimmedValue.startsWith(".")) { + propertyQuerySuggestions = this.buildPropertyQuerySuggestions(trimmedValue); + } + + return [...autosuggestTags, ...propertyQuerySuggestions].sort((r, l) => compareSearchResults( + cleanValue, + r, + l + )).slice(0, 50); + } + + private clearFilterInput() { + this.formControl.setValue(""); + } + + private buildPropertyQuerySuggestions(trimmedValue: string): string[] { + const parts = trimmedValue.split(/ |==|=|<|>/g).filter(p => p.length > 0); + console.log(parts); + const validProperties = Object.keys(this.propertyQueriesWithValues).filter(q => q.toLowerCase().startsWith(parts[0].trim().toLowerCase())); + let validComparators = this.comparators.filter(c => trimmedValue.includes(c)); + + if (validComparators.length === 0) { + validComparators = this.comparators; + } + + let value = ""; + if (parts.length > 1 && !this.comparators.includes(parts[1].trim())) { + value = parts[1].trim(); + } else if (parts.length > 2) { + value = parts[2].trim(); + } + console.log("properties", validProperties, "comparators", validComparators, "value", value); + + if (validComparators.length == 1) { + return validProperties.map(p => validComparators.map(c => this.propertyQueriesWithValues[p].map(v => `${p} ${c} ${v ?? value}`.trim())).flat()).flat(); + } else { + return validProperties.map(p => validComparators.map(c => `${p} ${c} ${value}`.trim())).flat(); + } + } +} diff --git a/mediarepo-ui/src/app/components/shared/input/input.module.ts b/mediarepo-ui/src/app/components/shared/input/input.module.ts index db989e3..6a52aa1 100644 --- a/mediarepo-ui/src/app/components/shared/input/input.module.ts +++ b/mediarepo-ui/src/app/components/shared/input/input.module.ts @@ -1,8 +1,6 @@ import {NgModule} from "@angular/core"; import {CommonModule} from "@angular/common"; -import { - NativeFileSelectComponent -} from "./native-file-select/native-file-select.component"; +import {NativeFileSelectComponent} from "./native-file-select/native-file-select.component"; import {TagInputComponent} from "./tag-input/tag-input.component"; import {MatAutocompleteModule} from "@angular/material/autocomplete"; import {MatFormFieldModule} from "@angular/material/form-field"; @@ -12,16 +10,19 @@ import {NgIconsModule} from "@ng-icons/core"; import {MatFolder, MatInsertDriveFile} from "@ng-icons/material-icons"; import {MatButtonModule} from "@angular/material/button"; import {FlexModule} from "@angular/flex-layout"; +import {FilterInputComponent} from "./filter-input/filter-input.component"; @NgModule({ declarations: [ NativeFileSelectComponent, - TagInputComponent + TagInputComponent, + FilterInputComponent ], exports: [ NativeFileSelectComponent, - TagInputComponent + TagInputComponent, + FilterInputComponent ], imports: [ CommonModule, @@ -29,7 +30,7 @@ import {FlexModule} from "@angular/flex-layout"; MatFormFieldModule, ReactiveFormsModule, MatInputModule, - NgIconsModule.withIcons({MatInsertDriveFile, MatFolder}), + NgIconsModule.withIcons({ MatInsertDriveFile, MatFolder }), MatButtonModule, FlexModule, ] diff --git a/mediarepo-ui/src/app/components/shared/input/tag-input/tag-input.component.ts b/mediarepo-ui/src/app/components/shared/input/tag-input/tag-input.component.ts index 2f12ee7..32f4b15 100644 --- a/mediarepo-ui/src/app/components/shared/input/tag-input/tag-input.component.ts +++ b/mediarepo-ui/src/app/components/shared/input/tag-input/tag-input.component.ts @@ -1,18 +1,10 @@ -import { - Component, - ElementRef, - EventEmitter, - Input, - OnChanges, - Output, - SimpleChanges, - ViewChild -} from "@angular/core"; +import {Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild} from "@angular/core"; import {Tag} from "../../../../../api/models/Tag"; import {FormControl} from "@angular/forms"; import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; import {Observable} from "rxjs"; import {debounceTime, map, startWith} from "rxjs/operators"; +import {compareSearchResults} from "../../../../utils/compare-utils"; @Component({ selector: "app-tag-input", @@ -39,7 +31,27 @@ export class TagInputComponent implements OnChanges { startWith(null), debounceTime(250), map((tag: string | null) => tag ? this.filterSuggestionTag( - tag) : this.tagsForAutocomplete.slice(0, 20))); + tag) : this.tagsForAutocomplete.slice(0, 20)) + ); + } + + /** + * Normalizes the tag by removing whitespaces + * @param {string} tag + * @returns {string} + * @private + */ + private static normalizeTag(tag: string): string { + let normalizedTag = tag.trim(); + let parts = normalizedTag.split(":"); + + if (parts.length > 1) { + const namespace = parts.shift()!.trim(); + const name = parts.join(":").trim(); + return namespace + ":" + name; + } else { + return normalizedTag; + } } ngOnChanges(changes: SimpleChanges): void { @@ -71,16 +83,20 @@ export class TagInputComponent implements OnChanges { private filterSuggestionTag(tag: string) { let normalizedTag = TagInputComponent.normalizeTag(tag); const negated = normalizedTag.startsWith("-") && this.allowNegation; - normalizedTag = this.allowNegation ? normalizedTag.replace(/^-/, - "") : normalizedTag; + normalizedTag = this.allowNegation ? normalizedTag.replace( + /^-/, + "" + ) : normalizedTag; const containsWildcard = normalizedTag.endsWith("*"); - normalizedTag = this.allowWildcards ? normalizedTag.replace(/\*\s*$/, - "") : normalizedTag; + normalizedTag = this.allowWildcards ? normalizedTag.replace( + /\*\s*$/, + "" + ) : normalizedTag; const autocompleteTags = this.tagsForAutocomplete.filter( t => t.includes(normalizedTag)) .map(t => negated ? "-" + t : t) - .sort((l, r) => TagInputComponent.compareSuggestionTags(normalizedTag, l, r)) + .sort((l, r) => compareSearchResults(normalizedTag, l, r)) .slice(0, 50); if (containsWildcard) { @@ -104,37 +120,4 @@ export class TagInputComponent implements OnChanges { } return this.tagsForAutocomplete.includes(tag); } - - /** - * Normalizes the tag by removing whitespaces - * @param {string} tag - * @returns {string} - * @private - */ - private static normalizeTag(tag: string): string { - let normalizedTag = tag.trim(); - let parts = normalizedTag.split(":"); - - if (parts.length > 1) { - const namespace = parts.shift()!.trim(); - const name = parts.join(":").trim(); - return namespace + ":" + name; - } else { - return normalizedTag; - } - } - - private static compareSuggestionTags(query: string, l: string, r: string): number { - if (l.startsWith(query) && !r.startsWith(query)) { - return -1; - } else if (!l.startsWith(query) && r.startsWith(query)) { - return 1; - } else if (l.length < r.length) { - return -1; - } else if (l.length > r.length) { - return 1; - } else { - return l.localeCompare(r); - } - } } diff --git a/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.html b/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.html index 2987507..c67f1b0 100644 --- a/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.html +++ b/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.html @@ -17,15 +17,13 @@ - + - + @@ -40,7 +38,7 @@ -
diff --git a/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.ts b/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.ts index 4395355..17a8866 100644 --- a/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.ts +++ b/mediarepo-ui/src/app/components/shared/sidebar/file-search/file-search.component.ts @@ -60,16 +60,18 @@ export class FileSearchComponent implements AfterViewChecked, OnInit { this.searchEndEvent.emit(); } - public addSearchQuery(queryStr: string) { - let filter = FilterQueryBuilder.buildFilterFromString(queryStr); + public addFilterExpression(filter: FilterExpression) { + this.filters.removeFilter(filter); + this.filters.addFilterExpression(filter); + this.state.setTagFilters(this.filters); + } + + public addTagFilter(filterString: string) { + const filter = FilterQueryBuilder.buildFilterFromString(filterString); if (filter) { - this.filters.removeFilter({ Query: filter }); - this.filters.appendFilter(filter); + this.addFilterExpression({ Query: filter }); } - - queryStr = queryStr.replace(/^-/g, ""); - this.state.setTagFilters(this.filters); } public getValidSearchTags(): Tag[] { diff --git a/mediarepo-ui/src/app/utils/compare-utils.ts b/mediarepo-ui/src/app/utils/compare-utils.ts new file mode 100644 index 0000000..4849dba --- /dev/null +++ b/mediarepo-ui/src/app/utils/compare-utils.ts @@ -0,0 +1,13 @@ +export function compareSearchResults(query: string, l: string, r: string): number { + if (l.startsWith(query) && !r.startsWith(query)) { + return -1; + } else if (!l.startsWith(query) && r.startsWith(query)) { + return 1; + } else if (l.length < r.length) { + return -1; + } else if (l.length > r.length) { + return 1; + } else { + return l.localeCompare(r); + } +} diff --git a/mediarepo-ui/tsconfig.app.json b/mediarepo-ui/tsconfig.app.json index 82d91dc..4615b79 100644 --- a/mediarepo-ui/tsconfig.app.json +++ b/mediarepo-ui/tsconfig.app.json @@ -1,15 +1,15 @@ /* To learn more about this file see: https://angular.io/config/tsconfig. */ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] } diff --git a/mediarepo-ui/yarn.lock b/mediarepo-ui/yarn.lock index 2af8ece..c67318b 100644 --- a/mediarepo-ui/yarn.lock +++ b/mediarepo-ui/yarn.lock @@ -10,23 +10,23 @@ "@jridgewell/resolve-uri" "1.0.0" sourcemap-codec "1.4.8" -"@angular-devkit/architect@0.1301.2": - version "0.1301.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.2.tgz#a646862b7ef388e4912473c14d336dde94cfc517" - integrity sha512-v8e6OF80Ezo5MTHtFcq1AZJH+Wq+hN9pMZ1iLGkODIfKIW9zx6aPhx0JY0b7sZkfNVL8ay8JA8f339eBMnOE9A== +"@angular-devkit/architect@0.1301.3": + version "0.1301.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.3.tgz#197f92c984adf22776798ce568e64396e464a03d" + integrity sha512-fFSevgYGZHCybYoyTkZ9b1YCSthBmoi77alwWjqMhYXUNXx7yx50zJZ6Ur2v3YpctVjU6eoGc5FDFyVHwXT0Iw== dependencies: - "@angular-devkit/core" "13.1.2" + "@angular-devkit/core" "13.1.3" rxjs "6.6.7" "@angular-devkit/build-angular@~13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-13.1.2.tgz#77004c925aced5ff9993c42cc098aaf47e06ec76" - integrity sha512-0FeDqfjWJjgIU42T3136RNYb7Yv2as6Z8rAnfUlX6RjRGZf98+6ZQZ80yREgrLkm7L8G1qWJc1sn3NyVMDwf9A== + version "13.1.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-13.1.3.tgz#c04cef8a2d405cb66332b674d204a2717b6807f6" + integrity sha512-C5Qv8aGmpGbETG4Mawly/5LnkRwfJAzANL5BtYJn8ZaDlZKCkhvAaRXHpm4Mdqg5idACAT8hgYqPQvqyEBaVDA== dependencies: "@ampproject/remapping" "1.0.2" - "@angular-devkit/architect" "0.1301.2" - "@angular-devkit/build-webpack" "0.1301.2" - "@angular-devkit/core" "13.1.2" + "@angular-devkit/architect" "0.1301.3" + "@angular-devkit/build-webpack" "0.1301.3" + "@angular-devkit/core" "13.1.3" "@babel/core" "7.16.0" "@babel/generator" "7.16.0" "@babel/helper-annotate-as-pure" "7.16.0" @@ -37,7 +37,7 @@ "@babel/runtime" "7.16.3" "@babel/template" "7.16.0" "@discoveryjs/json-ext" "0.5.6" - "@ngtools/webpack" "13.1.2" + "@ngtools/webpack" "13.1.3" ansi-colors "4.1.1" babel-loader "8.2.3" babel-plugin-istanbul "6.1.1" @@ -46,9 +46,9 @@ circular-dependency-plugin "5.2.2" copy-webpack-plugin "10.0.0" core-js "3.19.3" - critters "0.0.15" + critters "0.0.16" css-loader "6.5.1" - esbuild-wasm "0.14.2" + esbuild-wasm "0.14.11" glob "7.2.0" https-proxy-agent "5.0.0" inquirer "8.2.0" @@ -88,20 +88,20 @@ webpack-merge "5.8.0" webpack-subresource-integrity "5.0.0" optionalDependencies: - esbuild "0.14.2" + esbuild "0.14.11" -"@angular-devkit/build-webpack@0.1301.2": - version "0.1301.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1301.2.tgz#e1035aefc696232497d5c3024308b3b0175be109" - integrity sha512-Xk0k0tMcLOy2HI1/YrfWeLUrtKvk7/E7fhG3XoozT/pXBQgiZGoPuCt34HNPDkx3WNSedzvh5DNv8kPlILfjIw== +"@angular-devkit/build-webpack@0.1301.3": + version "0.1301.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1301.3.tgz#4f8f9fd9e09992aaf904c4457f268b203c19b45d" + integrity sha512-FFwKdhq5n0lrqkiJRZoWKy21gERtvupkk0BpIVPTbRqyiqB2htiGM995uBBjpeDngytDLx+BwPFipVfQ+WIi9w== dependencies: - "@angular-devkit/architect" "0.1301.2" + "@angular-devkit/architect" "0.1301.3" rxjs "6.6.7" -"@angular-devkit/core@13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.2.tgz#7ff959aaff4206daa141d6139aed06947bf74ad1" - integrity sha512-uXVesIRiCL/Nv+RSV8JM4j8IoZiGCGnqV2FOJ1hvH7DPxIjhjPMdG/B54xMydZpeASW3ofuxeORyAXxFIBm8Zg== +"@angular-devkit/core@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.3.tgz#d1f8a6b4ad4326732a160a7549fccca1369fd108" + integrity sha512-o14jGDk4h14dVYYQafOn+2rq9CDmDMbDV6logqKYCLzTDRlK8gccDnqJM/QKAlfWCzbllZqcHDmg6FyoRLO9RQ== dependencies: ajv "8.8.2" ajv-formats "2.1.1" @@ -110,12 +110,12 @@ rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.2.tgz#4e6d25e1b2a3360f5a7ef434615ed895ce0bb8de" - integrity sha512-ayYbHGU8QpMGx8ZyhKOBupz+Zfv/2H1pNQErahYV3qg7hA9hfjTGmNmDQ4iw0fiT04NajjUxuomlKsCsg7oXDw== +"@angular-devkit/schematics@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.3.tgz#2328f9cf63d6f556392d96b73af794fc52bfc87f" + integrity sha512-TvjThB/pFXNFM0j0WX5yg0L2/3xNsqawQuWhkDJ05MBDEnSxbgv5hmOzNL8SNIEMgP0VbSTHtSg5kZvmNiH7vg== dependencies: - "@angular-devkit/core" "13.1.2" + "@angular-devkit/core" "13.1.3" jsonc-parser "3.0.0" magic-string "0.25.7" ora "5.4.1" @@ -186,23 +186,23 @@ tslib "^2.3.0" "@angular/cdk@^13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-13.1.1.tgz#bfc1050df357a26bda03410d821ae05826dcf88e" - integrity sha512-66PyWg+zKdxTe3b1pc1RduT8hsMs/hJ0aD0JX0pSEWVq7O0OJWJ5f0z+Mk03T9tAERA3NK1GifcKEDq5k7R2Zw== + version "13.1.2" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-13.1.2.tgz#aaa1b577d1b8101d3d59f4da9a1ea51b7f7a5191" + integrity sha512-xORyqvfM0MueJpxHxVi3CR/X/f1RPKr45vt7NV6/x91OTnh2ukwxg++dAGuA6M5gUAHcVAcaBrfju4GQlU9hmg== dependencies: tslib "^2.3.0" optionalDependencies: parse5 "^5.0.0" "@angular/cli@~13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.1.2.tgz#e83f593dd78020a328f1bc94b88cfab6267fde4e" - integrity sha512-jEsQWzHgODFpppWGb49jfqlN8YYhphsKY3MPHlrjmd05qWgKItUGSgA46hSoDqjaJKVUN9koUnJBFCc9utERYA== + version "13.1.3" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.1.3.tgz#d143f30ee67481cc315e0d18fecb076101dfa280" + integrity sha512-Ju/A8LFnfcv1PC665a5FiIQx9SXqB+3yWYFXPIiVkkRcye95gpfsbV48WW7QV35gzIwbR1m3H907Zg6ptiNv0A== dependencies: - "@angular-devkit/architect" "0.1301.2" - "@angular-devkit/core" "13.1.2" - "@angular-devkit/schematics" "13.1.2" - "@schematics/angular" "13.1.2" + "@angular-devkit/architect" "0.1301.3" + "@angular-devkit/core" "13.1.3" + "@angular-devkit/schematics" "13.1.3" + "@schematics/angular" "13.1.3" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.3.3" @@ -272,9 +272,9 @@ tslib "^2.3.0" "@angular/material@^13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-13.1.1.tgz#4d2d5a1ea6527b282beb26de6491eb3a221fab2a" - integrity sha512-kKWZBhnzuBYAVO1nrkqEaVTCJ2onEWs+tzAJDIlmbo9USiQyVCnFXx+rs86m4kRUxeAAZ9mcW5BGJr6oy5ClCA== + version "13.1.2" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-13.1.2.tgz#497e9b34f4672ce207bb1198a823cda1f1d416ef" + integrity sha512-M7eDgTMCZ/naoiS6Z5nj3N/sNUFc+CGPHX4yb563RuknqN7huDCvdyxA6KnhYLZsVlNCPh5ZrEr6H8ZiYJWcpg== dependencies: tslib "^2.3.0" @@ -1347,16 +1347,16 @@ integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== "@ng-icons/core@^13.2.0": - version "13.2.0" - resolved "https://registry.yarnpkg.com/@ng-icons/core/-/core-13.2.0.tgz#cfa2b56f60aa7b8de025dfaeb51c23b406cdbcad" - integrity sha512-RPcqaImQPmYJkhrVTDDKTYcflxhuoJpvhcW/D+zIlZQq+krsbr8pL0QVUHV51HW6aJTKtNvsZmGm7MBlF3KJqQ== + version "13.2.1" + resolved "https://registry.yarnpkg.com/@ng-icons/core/-/core-13.2.1.tgz#46d1d97d3d479da2fd2ca3b58978715f6b261338" + integrity sha512-4wI60pGxD9ul9kEipY8Ph0cza6d71xAJj6eE1fqFDtTQ4DDUfSSGFbB8grxs9qUec5B9QCLk8QoLaAWEzyDn8Q== dependencies: tslib "^2.2.0" "@ng-icons/feather-icons@^13.2.0": - version "13.2.0" - resolved "https://registry.yarnpkg.com/@ng-icons/feather-icons/-/feather-icons-13.2.0.tgz#c85f06bade7c54dbb287a386e5b03320eb80bcca" - integrity sha512-gr8vaEyAuCDlcrweDf+Gi29TlTiZjrezXkQPD/5LysOiKv+5ZddlIqH+DJGNZfyeIYeHd0UWwoiWw8t1+KbQGg== + version "13.2.1" + resolved "https://registry.yarnpkg.com/@ng-icons/feather-icons/-/feather-icons-13.2.1.tgz#1a937711f0b11aa505914a84abec685dfebf1bf6" + integrity sha512-Uvassb3YS1bkQyrkHrUAimf5G7sAC9EzjZUSEbb23zsTYqp8R2Z4rUcJJkhzC/xZecKLhRqldQlKFsRVoo+Iug== dependencies: tslib "^2.2.0" @@ -1367,10 +1367,10 @@ dependencies: tslib "^2.2.0" -"@ngtools/webpack@13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.1.2.tgz#58d8bfe8b3d4ee3b5aa1ceb3f7911b77410c6c6b" - integrity sha512-F/KraxCCUjSn5nWVEQSuyVfnoE9j/bTcpIb+6e38/Hq/saPfsUoNiRjWlTAxCD44vHbMuVkJ/ZRZT6hdICAslw== +"@ngtools/webpack@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.1.3.tgz#f3e516da2b2a352db9d723e8cebbe15b526de14c" + integrity sha512-6Pf52IbChm/dFuegfv0smeBTW2moi0Gdkyjgk/7VWqE6hN35m+YGrCh+XnPp1POJwOKxhAByhV9zs6NWxrK1vA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1453,12 +1453,12 @@ node-gyp "^8.2.0" read-package-json-fast "^2.0.1" -"@nrwl/cli@*", "@nrwl/cli@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-13.4.4.tgz#6fbf68e42e728e107e737780ed440d6356a16bc5" - integrity sha512-pUQryKBLryTtbxNMdFCAXWJazAdaFp/3pICr/pnWbEvLf1deumfFsGswVy1lwjoeuk6ofb5H0h6fUeRgCtD8Zw== +"@nrwl/cli@*", "@nrwl/cli@13.4.5": + version "13.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-13.4.5.tgz#21937c66d7bc7d2109c5e32b7ed2f1bbf8509979" + integrity sha512-CyiGIBhVd2EEx3+HST5TwOwI6kL8zKvWBMXrHs0jAB9lJIjqdzLdTPYHsfLOcAYsl08l8eySVVCkGr9UG5XSPQ== dependencies: - "@nrwl/tao" "13.4.4" + "@nrwl/tao" "13.4.5" chalk "4.1.0" enquirer "~2.3.6" v8-compile-cache "2.3.0" @@ -1494,10 +1494,10 @@ tslib "^2.0.0" yargs-parser "20.0.0" -"@nrwl/tao@13.4.4": - version "13.4.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-13.4.4.tgz#aa392332e8ee7147a51fb8420c734aba47875717" - integrity sha512-znW/pZ+vMuwa4Wgel8YH+SeCrZzNZvsCmmO0YLSWt2lwBFnU+evNlNNNyPCA+AXQA1EkpYIMQ/W+YxQNA6NYaQ== +"@nrwl/tao@13.4.5": + version "13.4.5" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-13.4.5.tgz#bb61a1280a10dfca8956af42cb3e60443381b2b3" + integrity sha512-DYVmYDEeJ9zLagU52nVXBdA+0SXrypmydrxFLhEAc79tlForNX3dmjqePhNDq7JqllmD643DiNh0pydgsPzUdQ== dependencies: chalk "4.1.0" enquirer "~2.3.6" @@ -1505,7 +1505,7 @@ fs-extra "^9.1.0" ignore "^5.0.4" jsonc-parser "3.0.0" - nx "13.4.4" + nx "13.4.5" rxjs "^6.5.4" rxjs-for-await "0.0.2" semver "7.3.4" @@ -1513,13 +1513,13 @@ tslib "^2.3.0" yargs-parser "20.0.0" -"@schematics/angular@13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.2.tgz#bd3fd2fd1bb225bffb24fedad1409b64b1d08323" - integrity sha512-OMbuOsnzUFjIGeo99NYwIPwjX6udJAiT5Sj5K7QZZYj66HuAqNBMV57J8GPA56edx5mOHZZApWMjXLlOxRXbJA== +"@schematics/angular@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.3.tgz#c763cdf1a2e0784d5263c23b581bfeb4a4a2f12e" + integrity sha512-IixVWAEtN97N74PCxg3T03Ar/ECjGyJBWKAjKTTCrgNSWhm2mKgIc4RyI6cVCnltfJWIo48fcFhlOx/elShaCg== dependencies: - "@angular-devkit/core" "13.1.2" - "@angular-devkit/schematics" "13.1.2" + "@angular-devkit/core" "13.1.3" + "@angular-devkit/schematics" "13.1.3" jsonc-parser "3.0.0" "@sindresorhus/is@^0.14.0": @@ -2870,7 +2870,7 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@^1.4.0: +colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -3050,13 +3050,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -critters@0.0.15: - version "0.0.15" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.15.tgz#b1c8d18fd18e614471733d7d749deac0f386b738" - integrity sha512-AE7hkXb3eZUbEvS1SKZa+OU4o2kUOXtzVeE/2E/mjU/0mV1wpBT1HfUCWVRS4zwvkBNJ0AQYsVjAoFm+kIhfdw== +critters@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93" + integrity sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A== dependencies: chalk "^4.1.0" - css-select "^4.1.3" + css-select "^4.2.0" parse5 "^6.0.1" parse5-htmlparser2-tree-adapter "^6.0.1" postcss "^8.3.7" @@ -3139,7 +3139,7 @@ css-prefers-color-scheme@^3.1.1: dependencies: postcss "^7.0.5" -css-select@^4.1.3: +css-select@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== @@ -3554,9 +3554,9 @@ ejs@^3.1.5: jake "^10.6.1" electron-to-chromium@^1.4.17: - version "1.4.43" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.43.tgz#665c0cd8d5e7cce0ba78d90a514c8c813ca3bdbe" - integrity sha512-PO3kEfcxPrti/4STbXvCkNIF4fgWvCKl2508e6UI7KomCDffpIfeBZLXsh5DK/XGsjUw3kwq6WEsi0MJTlGAdg== + version "1.4.46" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz#c88a6fedc766589826db0481602a888864ade1ca" + integrity sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ== emoji-regex@^8.0.0: version "8.0.0" @@ -3669,118 +3669,124 @@ es6-error@^4.1.1: resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -esbuild-android-arm64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz#256b7cf2f9d382a2a92a4ff4e13187587c9b7c6a" - integrity sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw== - -esbuild-darwin-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz#891a59ce6bc3aded0265f982469b3eb9571b92f8" - integrity sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA== - -esbuild-darwin-arm64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz#ab834fffa9c612b2901ca1e77e4695d4d8aa63a2" - integrity sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A== - -esbuild-freebsd-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz#f7fc87a83f02de27d5a48472571efa1a432ae86d" - integrity sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ== - -esbuild-freebsd-arm64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz#bc8758420431106751f3180293cac0b5bc4ce2ee" - integrity sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ== - -esbuild-linux-32@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz#0cc2dcd816d6d66e255bc7aeac139b1d04246812" - integrity sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ== - -esbuild-linux-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz#c790f739aa75b15c153609ea3457153fbe4db93d" - integrity sha512-4bzMS2dNxOJoFIiHId4w+tqQzdnsch71JJV1qZnbnErSFWcR9lRgpSqWnTTFtv6XM+MvltRzSXC5wQ7AEBY6Hg== - -esbuild-linux-arm64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz#96858a1f89ad30274dec780d0e3dd8b5691c6b0c" - integrity sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww== - -esbuild-linux-arm@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz#03e193225afa9b1215d2ec6efe8edf0c03eeed6f" - integrity sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ== - -esbuild-linux-mips64le@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz#972f218d2cb5125237376d40ad60a6e5356a782c" - integrity sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ== - -esbuild-linux-ppc64le@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz#20b71622ac09142b0e523f633af0829def7fed6b" - integrity sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA== - -esbuild-netbsd-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz#dbd6a25117902ef67aa11d8779dd9c6bca7fbe82" - integrity sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw== - -esbuild-openbsd-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz#3c5f199eed459b2f88865548394c0b77383d9ca4" - integrity sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q== - -esbuild-sunos-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz#900a681db6b76c6a7f60fc28d2bfe5b11698641c" - integrity sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow== - -esbuild-wasm@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.2.tgz#49c59c610a0be48becec87a7d9019d143468f2f9" - integrity sha512-Rs8NjWoo1UdsVjhxT2o6kLCX9Sh65pyd3/h4XeJ3jjQNM6NgL+/CSowuJgvOIjDAXMLXpc6fdGnyZQDil9IUJA== - -esbuild-windows-32@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz#61e0ba5bd95b277a55d2b997ac4c04dfe2559220" - integrity sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ== - -esbuild-windows-64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz#6ab59ef721ff75c682a1c8ae0570dabb637abddb" - integrity sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg== - -esbuild-windows-arm64@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz#aca2a4f83d2f0d1592ad4be832ed0045fc888cda" - integrity sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA== - -esbuild@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.2.tgz#9c1e1a652549cc33e44885eea42ea2cc6267edc2" - integrity sha512-l076A6o/PIgcyM24s0dWmDI/b8RQf41uWoJu9I0M71CtW/YSw5T5NUeXxs5lo2tFQD+O4CW4nBHJXx3OY5NpXg== +esbuild-android-arm64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz#b8b34e35a5b43880664ac7a3fbc70243d7ed894f" + integrity sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw== + +esbuild-darwin-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz#ba805de98c0412e50fcd0636451797da157b0625" + integrity sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ== + +esbuild-darwin-arm64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz#4d3573e448af76ce33e16231f3d9f878542d6fe8" + integrity sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg== + +esbuild-freebsd-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz#9294e6ab359ec93590ab097b0f2017de7c78ab4d" + integrity sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA== + +esbuild-freebsd-arm64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz#ae3e0b09173350b66cf8321583c9a1c1fcb8bb55" + integrity sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w== + +esbuild-linux-32@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz#ddadbc7038aa5a6b1675bb1503cf79a0cbf1229a" + integrity sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg== + +esbuild-linux-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz#d698e3ce3a231ddfeec6b5df8c546ae8883fcd88" + integrity sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg== + +esbuild-linux-arm64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz#85faea9fa99ad355b5e3b283197a4dfd0a110fe7" + integrity sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg== + +esbuild-linux-arm@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz#74cbcf0b8a22c8401bcbcd6ebd4cbf2baca8b7b4" + integrity sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ== + +esbuild-linux-mips64le@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz#490429211a3233f5cbbd8575b7758b897e42979a" + integrity sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw== + +esbuild-linux-ppc64le@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz#fc79d60710213b5b98345f5b138d48245616827a" + integrity sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ== + +esbuild-linux-s390x@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz#ca4b93556bbba6cc95b0644f2ee93c982165ba07" + integrity sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw== + +esbuild-netbsd-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz#edb340bc6653c88804cac2253e21b74258fce165" + integrity sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw== + +esbuild-openbsd-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz#caeff5f946f79a60ce7bcf88871ca4c71d3476e8" + integrity sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q== + +esbuild-sunos-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz#90ce7e1749c2958a53509b4bae7b8f7d98f276d6" + integrity sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg== + +esbuild-wasm@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.11.tgz#bd09f4c42969cddcae39007d284f8ef747aae85d" + integrity sha512-9e1R6hv0hiU+BkJI2edqUuWfXUbOP2Mox+Ijl/uY1vLLlSsunkrcADqD/4Rz+VCEDzw6ecscJM+uJqR2fRmEUg== + +esbuild-windows-32@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz#d067f4ce15b29efba6336e6a23597120fafe49ec" + integrity sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ== + +esbuild-windows-64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz#13e86dd37a6cd61a5276fa2d271342d0f74da864" + integrity sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg== + +esbuild-windows-arm64@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz#e8edfdf1d712085e6dc3fba18a0c225aaae32b75" + integrity sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ== + +esbuild@0.14.11: + version "0.14.11" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.11.tgz#ac4acb78907874832afb704c3afe58ad37715c27" + integrity sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg== optionalDependencies: - esbuild-android-arm64 "0.14.2" - esbuild-darwin-64 "0.14.2" - esbuild-darwin-arm64 "0.14.2" - esbuild-freebsd-64 "0.14.2" - esbuild-freebsd-arm64 "0.14.2" - esbuild-linux-32 "0.14.2" - esbuild-linux-64 "0.14.2" - esbuild-linux-arm "0.14.2" - esbuild-linux-arm64 "0.14.2" - esbuild-linux-mips64le "0.14.2" - esbuild-linux-ppc64le "0.14.2" - esbuild-netbsd-64 "0.14.2" - esbuild-openbsd-64 "0.14.2" - esbuild-sunos-64 "0.14.2" - esbuild-windows-32 "0.14.2" - esbuild-windows-64 "0.14.2" - esbuild-windows-arm64 "0.14.2" + esbuild-android-arm64 "0.14.11" + esbuild-darwin-64 "0.14.11" + esbuild-darwin-arm64 "0.14.11" + esbuild-freebsd-64 "0.14.11" + esbuild-freebsd-arm64 "0.14.11" + esbuild-linux-32 "0.14.11" + esbuild-linux-64 "0.14.11" + esbuild-linux-arm "0.14.11" + esbuild-linux-arm64 "0.14.11" + esbuild-linux-mips64le "0.14.11" + esbuild-linux-ppc64le "0.14.11" + esbuild-linux-s390x "0.14.11" + esbuild-netbsd-64 "0.14.11" + esbuild-openbsd-64 "0.14.11" + esbuild-sunos-64 "0.14.11" + esbuild-windows-32 "0.14.11" + esbuild-windows-64 "0.14.11" + esbuild-windows-arm64 "0.14.11" escalade@^3.1.1: version "3.1.1" @@ -4093,9 +4099,9 @@ fast-glob@3.2.7: micromatch "^4.0.4" fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.10" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.10.tgz#2734f83baa7f43b7fd41e13bc34438f4ffe284ee" - integrity sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A== + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5559,14 +5565,14 @@ karma-source-map-support@1.4.0: source-map-support "^0.5.5" karma@~6.3.10: - version "6.3.10" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.10.tgz#dfaeae8ef79e6dd3bc95701b3b9d37e79140f8be" - integrity sha512-Ofv+sgrkT8Czo6bzzQCvrwVyRSG8/3e7RbawEuxjfsINony+IR/S2csNRUFgPNfmWvju+dqi/MzQGOJ2LnlmfQ== + version "6.3.11" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.11.tgz#2c2fb09f1a9f52e1a0739adeedace2a68d4c0d34" + integrity sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ== dependencies: body-parser "^1.19.0" braces "^3.0.2" chokidar "^3.5.1" - colors "^1.4.0" + colors "1.4.0" connect "^3.7.0" di "^0.0.1" dom-serialize "^2.2.1" @@ -6369,12 +6375,12 @@ nx@13.1.3: dependencies: "@nrwl/cli" "*" -nx@13.4.4: - version "13.4.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-13.4.4.tgz#e4af9678abd8d46c559d459ddb19981faa41dd86" - integrity sha512-Q1fYC6zX1bciBmmlQXTPXxhhUR1bEoWSjuic4ZNvgJ5ZR3Tqe/12nm8u3aIZixO75UC0aNSzrgLR++DAgv6yzA== +nx@13.4.5: + version "13.4.5" + resolved "https://registry.yarnpkg.com/nx/-/nx-13.4.5.tgz#f68857ea33dae302c0d1171f0909155ab0be2bd7" + integrity sha512-efUyCh6jgBWh8SIXoxa33M+pwLQyEbsjb0g6qoNORAibmzHlf0aI79t3pn7Ru2O33D+GTU3qQ/DJVxbE9M/2zg== dependencies: - "@nrwl/cli" "13.4.4" + "@nrwl/cli" "13.4.5" object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" @@ -7517,9 +7523,9 @@ regex-parser@^2.2.11: integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -9080,9 +9086,9 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^8.1.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6" - integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ== + version "8.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" + integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== ws@~8.2.3: version "8.2.3"