diff --git a/.gitignore b/.gitignore index 07be599381..5c3f839bb9 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ yarn-error.log* *.njsproj *.sln *.sw? + diff --git a/.tsbuildinfo b/.tsbuildinfo new file mode 100644 index 0000000000..18c723601f --- /dev/null +++ b/.tsbuildinfo @@ -0,0 +1 @@ +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.object.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/webpack-env/index.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","886e50ef125efb7878f744e86908884c0133e7a6d9d80013f421b0cd8fb2af94",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"c9cc4c881c910ce378659524d985d2b72b79029b0c473df5d4d3557b4cf6010a","affectsGlobalScope":true},"2db0dd3aaa2ed285950273ce96ae8a450b45423aa9da2d10e194570f1233fa6b","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36",{"version":"392eadc2af403dd10b4debfbc655c089a7fa6a9750caeb770cfb30051e55e848","affectsGlobalScope":true},"b67f9c5d42e7770ddf8b6d1747b531275c44617e8071d2602a2cffd2932ad95e","53f0960fdcc53d097918adfd8861ffbe0db989c56ffc16c052197bf115da5ed6",{"version":"662163e5327f260b23ca0a1a1ad8a74078aabb587c904fcb5ef518986987eaff","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"c48c503c6b3f63baf18257e9a87559b5602a4e960107c762586d2a6a62b64a18","affectsGlobalScope":true},"b0c0d1d13be149f790a75b381b413490f98558649428bb916fd2d71a3f47a134","3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","3bb6e21a9f30417c0a059e240b3f8f70c8af9c4cb6f2fd1bc2db594c647e285f","7483ef24249f6a3e24eb3d8136ec7fe0633cd6f8ffe752e2a8d99412aff35bb7","d0ca5d7df114035258a9d01165be309371fcccf0cccd9d57b1453204686d1ed0",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"1bb9aab2311a9d596a45dba7c378b4e23846738d9bae54d60863dd3676b1edbc","affectsGlobalScope":true},"173b6275a81ebdb283b180654890f46516c21199734fed01a773b1c168b8c45c","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","1b9adafe8a7fefaeaf9099a0e06f602903f6268438147b843a33a5233ac71745","98273274f2dbb79b0b2009b20f74eca4a7146a3447c912d580cd5d2d94a7ae30","c933f7ba4b201c98b14275fd11a14abb950178afd2074703250fe3654fc10cd2","2eaa31492906bc8525aff3c3ec2236e22d90b0dfeee77089f196cd0adf0b3e3b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"8f5814f29dbaf8bacd1764aebdf1c8a6eb86381f6a188ddbac0fcbaab855ce52","a63d03de72adfb91777784015bd3b4125abd2f5ef867fc5a13920b5649e8f52b","d20e003f3d518a7c1f749dbe27c6ab5e3be7b3c905a48361b04a9557de4a6900",{"version":"1d4d78c8b23c9ddaaaa49485e6adc2ec01086dfe5d8d4d36ca4cdc98d2f7e74a","affectsGlobalScope":true},{"version":"44fc16356b81c0463cc7d7b2b35dcf324d8144136f5bc5ce73ced86f2b3475b5","affectsGlobalScope":true},"575fb200043b11b464db8e42cc64379c5fd322b6d787638e005b5ee98a64486d","6de2f225d942562733e231a695534b30039bdf1875b377bb7255881f0df8ede8","56249fd3ef1f6b90888e606f4ea648c43978ef43a7263aafad64f8d83cd3b8aa","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","7b166975fdbd3b37afb64707b98bca88e46577bbc6c59871f9383a7df2daacd1","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","81505c54d7cad0009352eaa21bd923ab7cdee7ec3405357a54d9a5da033a2084","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","2ee1645e0df9d84467cfe1d67b0ad3003c2f387de55874d565094464ee6f2927",{"version":"abe61b580e030f1ca3ee548c8fd7b40fc686a97a056d5d1481f34c39c637345f","affectsGlobalScope":true},{"version":"9cf780e96b687e4bdfd1907ed26a688c18b89797490a00598fa8b8ab683335dd","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","9ae88ce9f73446c24b2d2452e993b676da1b31fca5ceb7276e7f36279f693ed1","e49d7625faff2a7842e4e7b9b197f972633fca685afcf6b4403400c97d087c36","b82c38abc53922b1b3670c3af6f333c21b735722a8f156e7d357a2da7c53a0a0",{"version":"b423f53647708043299ded4daa68d95c967a2ac30aa1437adc4442129d7d0a6c","affectsGlobalScope":true},{"version":"7245af181218216bacb01fbdf51095617a51661f20d77178c69a377e16fb69ed","affectsGlobalScope":true},"4f0fc7b7f54422bd97cfaf558ddb4bca86893839367b746a8f86b60ac7619673","4cdd8b6b51599180a387cc7c1c50f49eca5ce06595d781638fd0216520d98246","d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c",{"version":"ac14eb65c59722f0333e776a73e6a02cea23b5aa857a749ea176daf4e960e872","affectsGlobalScope":true},"7c6929fd7cbf38499b6a600b91c3b603d1d78395046dc3499b2b92d01418b94b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc"],"root":[],"options":{"allowSyntheticDefaultImports":true,"declarationMap":false,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":false,"jsx":1,"module":99,"skipLibCheck":true,"sourceMap":false,"strict":false,"target":99,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[72],[107],[108,113,142],[109,114,120,121,128,139,150],[109,110,120,128],[111,151],[112,113,121,129],[113,139,147],[114,116,120,128],[107,115],[116,117],[120],[118,120],[107,120],[120,121,122,139,150],[120,121,122,135,139,142],[105,108,155],[116,120,123,128,139,150],[120,121,123,124,128,139,147,150],[123,125,139,147,150],[72,73,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157],[120,126],[127,150,155],[116,120,128,139],[129],[130],[107,131],[128,129,132,149,155],[133],[134],[120,135,136],[135,137,151,153],[108,120,139,140,141,142],[108,139,141],[139,140],[142],[143],[107,139],[120,145,146],[145,146],[113,128,139,147],[148],[128,149],[108,123,134,150],[113,151],[139,152],[127,153],[154],[108,113,120,122,131,139,150,153,155],[139,156],[82,86,150],[82,139,150],[77],[79,82,147,150],[128,147],[158],[77,158],[79,82,128,150],[74,75,78,81,108,120,139,150],[74,80],[78,82,108,142,150,158],[108,158],[98,108,158],[76,77,158],[82],[76,77,78,79,80,81,82,83,84,86,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104],[82,89,90],[80,82,90,91],[81],[74,77,82],[82,86,90,91],[86],[80,82,85,150],[74,79,80,82,86,89],[108,139],[77,82,98,108,155,158]],"referencedMap":[[72,1],[73,1],[107,2],[108,3],[109,4],[110,5],[111,6],[112,7],[113,8],[114,9],[115,10],[116,11],[117,11],[119,12],[118,13],[120,14],[121,15],[122,16],[106,17],[123,18],[124,19],[125,20],[158,21],[126,22],[127,23],[128,24],[129,25],[130,26],[131,27],[132,28],[133,29],[134,30],[135,31],[136,31],[137,32],[139,33],[141,34],[140,35],[142,36],[143,37],[144,38],[145,39],[146,40],[147,41],[148,42],[149,43],[150,44],[151,45],[152,46],[153,47],[154,48],[155,49],[156,50],[89,51],[96,52],[88,51],[103,53],[80,54],[79,55],[102,56],[97,57],[100,58],[82,59],[81,60],[77,61],[76,62],[99,63],[78,64],[83,65],[87,65],[105,66],[104,65],[91,67],[92,68],[94,69],[90,70],[93,71],[98,56],[85,72],[86,73],[95,74],[75,75],[101,76]],"exportedModulesMap":[[72,1],[73,1],[107,2],[108,3],[109,4],[110,5],[111,6],[112,7],[113,8],[114,9],[115,10],[116,11],[117,11],[119,12],[118,13],[120,14],[121,15],[122,16],[106,17],[123,18],[124,19],[125,20],[158,21],[126,22],[127,23],[128,24],[129,25],[130,26],[131,27],[132,28],[133,29],[134,30],[135,31],[136,31],[137,32],[139,33],[141,34],[140,35],[142,36],[143,37],[144,38],[145,39],[146,40],[147,41],[148,42],[149,43],[150,44],[151,45],[152,46],[153,47],[154,48],[155,49],[156,50],[89,51],[96,52],[88,51],[103,53],[80,54],[79,55],[102,56],[97,57],[100,58],[82,59],[81,60],[77,61],[76,62],[99,63],[78,64],[83,65],[87,65],[105,66],[104,65],[91,67],[92,68],[94,69],[90,70],[93,71],[98,56],[85,72],[86,73],[95,74],[75,75],[101,76]],"semanticDiagnosticsPerFile":[72,73,107,108,109,110,111,112,113,114,115,116,117,119,118,120,121,122,106,157,123,124,125,158,126,127,128,129,130,131,132,133,134,135,136,137,138,139,141,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,71,69,70,12,13,16,15,2,17,18,19,20,21,22,23,24,3,25,4,26,30,27,28,29,31,32,33,5,34,35,36,37,6,41,38,39,40,42,7,43,48,49,44,45,46,47,8,53,50,51,52,54,9,55,56,57,60,58,59,61,62,10,1,63,11,67,65,64,68,66,14,89,96,88,103,80,79,102,97,100,82,81,77,76,99,78,83,84,87,74,105,104,91,92,94,90,93,98,85,86,95,75,101]},"version":"5.4.5"} \ No newline at end of file diff --git a/src/components/LinkItems/Item.vue b/src/components/LinkItems/Item.vue index 5ddc8d8798..88c0f82f62 100644 --- a/src/components/LinkItems/Item.vue +++ b/src/components/LinkItems/Item.vue @@ -259,6 +259,11 @@ export default { } &:focus { outline: 2px solid var(--primary); + box-shadow: 0 0 0 3px rgba(0,0,0,0.05), var(--item-shadow); + } + &.tile--selected { + outline: 2px solid var(--primary); + box-shadow: 0 0 0 3px rgba(0,0,0,0.05), var(--item-shadow); } &.add-new { border: 2px dashed var(--primary) !important; @@ -279,6 +284,7 @@ export default { z-index: 2; display: -webkit-box; -webkit-line-clamp: 3; + line-clamp: 3; /* standard property for compatibility */ -webkit-box-orient: vertical; word-break: keep-all; overflow: hidden; diff --git a/src/components/Settings/SearchBar.vue b/src/components/Settings/SearchBar.vue index 42d7cc775f..e3e60a5a03 100644 --- a/src/components/Settings/SearchBar.vue +++ b/src/components/Settings/SearchBar.vue @@ -1,29 +1,103 @@ @@ -151,10 +465,16 @@ export default { @import '@/styles/media-queries.scss'; + .search-settings-row { + display: flex; + // flex-direction: column; + align-items: center; + // width: 100%; + } form.normal { display: flex; align-items: center; - border-radius: 0 0 var(--curve-factor-navbar) 0; + // border-radius: 0 0 var(--curve-factor-navbar) 0; padding: 0 0.2rem 0.2rem 0; background: var(--search-container-background); .search-wrap { @@ -211,6 +531,52 @@ export default { } } + .settings-block { + display: flex; + flex-direction: column; + align-items: center; + margin: 0.5rem 0; + width: 100%; + position: relative; + + border-radius: 0 0 var(--curve-factor-navbar) 0; + padding: 0 0.2rem 0.2rem 0; + background: var(--search-container-background); + .settings-toggle { + background: var(--settings-background); + color: var(--settings-text-color); + border: none; + padding: 0.5rem; + margin: 0.5rem 0.5rem 0.5rem 0; + border-radius: var(--curve-factor); + cursor: pointer; + &:hover { + background: var(--settings-text-color); + color: var(--settings-background); + } + } + + .settings-toggle svg { + width: 1rem; + height: 1rem; + fill: currentColor; + display: block; + } + + .floating-search-panel { + position: absolute; + top: 100%; + left: 0; + min-width: 180px; + max-width: max-content; + background: var(--settings-background); + border: 1px solid var(--settings-text-color); + border-radius: var(--curve-factor); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + z-index: 10; + } + } + @include tablet { form.normal { display: block; @@ -278,4 +644,34 @@ export default { } } } + .theme-label { + color: var(--settings-text-color); + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.9rem; + } + .advanced-fields { + padding: 0.4rem 0.6rem 0.6rem 0.6rem; + border-top: 1px solid var(--settings-text-color); + .adv-hint { + margin: 0.2rem 0 0.4rem 0; + font-size: 0.7rem; + opacity: 0.7; + color: var(--settings-text-color); + } + .field-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); + gap: 0.25rem 0.5rem; + } + .field-check { + display: flex; + align-items: center; + gap: 0.3rem; + font-size: 0.7rem; + color: var(--settings-text-color); + input { margin: 0; } + } + } diff --git a/src/mixins/HomeMixin.js b/src/mixins/HomeMixin.js index 6f163f88ef..56fa363367 100644 --- a/src/mixins/HomeMixin.js +++ b/src/mixins/HomeMixin.js @@ -4,7 +4,7 @@ import Defaults, { localStorageKeys, iconCdns } from '@/utils/defaults'; import Keys from '@/utils/StoreMutations'; -import { searchTiles } from '@/utils/Search'; +import { searchTiles, searchTilesWithFields } from '@/utils/Search'; import { checkItemVisibility } from '@/utils/CheckItemVisibility'; const HomeMixin = { @@ -99,10 +99,15 @@ const HomeMixin = { }, /* Returns only the tiles that match the users search query */ filterTiles(allTiles) { - if (!allTiles) { - return []; - } + if (!allTiles) return []; const visibleTiles = allTiles.filter((tile) => checkItemVisibility(tile)); + const { appConfig } = this; + const adv = appConfig?.advancedSearch || {}; + const enabled = !!adv.enabled; + const fields = adv.fields || {}; + if (enabled) { + return searchTilesWithFields(visibleTiles, this.searchValue, fields); + } return searchTiles(visibleTiles, this.searchValue); }, /* Checks if any sections or items use icons from a given CDN */ diff --git a/src/mixins/ItemMixin.js b/src/mixins/ItemMixin.js index 35518ff451..07ecb5ffca 100644 --- a/src/mixins/ItemMixin.js +++ b/src/mixins/ItemMixin.js @@ -152,6 +152,12 @@ export default { } else if (this.accumulatedTarget === 'clipboard') { e.preventDefault(); this.copyToClipboard(url); + } else { + // Explicitly navigate to ensure clicks always open even if other handlers interfere + // Use anchorTarget mapping for correct behavior (same tab/new tab/parent/top) + e.preventDefault(); + const target = this.anchorTarget || '_self'; + window.open(url, target); } // Emit event to clear search field, etc this.$emit('itemClicked'); diff --git a/src/store.js b/src/store.js index 9130139c68..8bce7a82e4 100644 --- a/src/store.js +++ b/src/store.js @@ -73,6 +73,10 @@ const store = new Vuex.Store({ if (!state.config) return {}; return state.config.appConfig || {}; }, + goToLinkEnabled(state, getters) { + // Default to true if not set + return typeof getters.appConfig.goToLinkEnabled === 'boolean' ? getters.appConfig.goToLinkEnabled : true; + }, sections(state) { return filterUserSections(state.config.sections || []); }, @@ -89,6 +93,9 @@ const store = new Vuex.Store({ webSearch(state, getters) { return getters.appConfig.webSearch || {}; }, + advancedSearch(state, getters) { + return getters.appConfig.advancedSearch || {}; + }, visibleComponents(state, getters) { return componentVisibility(getters.appConfig); }, @@ -232,6 +239,22 @@ const store = new Vuex.Store({ state.config = newConfig; InfoHandler('Sections updated', InfoKeys.EDITOR); }, + // Dynamically update disableWebSearch in appConfig + setDisableWebSearch(state, value) { + if (!state.config.appConfig) state.config.appConfig = {}; + state.config.appConfig.disableWebSearch = value; + }, + // Dynamically update goToLinkEnabled in appConfig + setGoToLinkEnabled(state, value) { + if (!state.config.appConfig) state.config.appConfig = {}; + state.config.appConfig.goToLinkEnabled = value; + }, + // Update advanced search settings (partial merge) + setAdvancedSearch(state, value) { + if (!state.config.appConfig) state.config.appConfig = {}; + const current = state.config.appConfig.advancedSearch || {}; + state.config.appConfig.advancedSearch = { ...current, ...value }; + }, [UPDATE_SECTION](state, payload) { const { sectionIndex, sectionData } = payload; const newConfig = { ...state.config }; diff --git a/src/utils/ConfigSchema.json b/src/utils/ConfigSchema.json index 92039798ab..5e48a35f3c 100644 --- a/src/utils/ConfigSchema.json +++ b/src/utils/ConfigSchema.json @@ -183,6 +183,12 @@ "appConfig": { "type": "object", "properties": { + "goToLinkEnabled": { + "title": "Go To Link Enabled", + "type": "boolean", + "default": true, + "description": "If true, enables Go to Link (auto-detect links) in the search bar." + }, "startingView": { "title": "Starting View", "type": "string", @@ -351,6 +357,12 @@ "default": "false", "description": "If set to true, web search will be disabled all together" }, + "enableCtrlEnterWebSearch": { + "title": "Enable Ctrl/Cmd+Enter Web Search", + "type": "boolean", + "default": false, + "description": "When true and web search is enabled, pressing Ctrl+Enter (Cmd+Enter on macOS) will force a web search using the configured engine, ignoring advanced selection or link detection" + }, "searchEngine": { "title": "Search Engine", "type": "string", @@ -404,6 +416,34 @@ } } }, + "advancedSearch": { + "title": "Advanced Search", + "type": "object", + "description": "Enable filtering search by specific fields", + "additionalProperties": false, + "properties": { + "enabled": { + "title": "Advanced Search Enabled", + "type": "boolean", + "default": false, + "description": "If true, only selected fields will be searched" + }, + "fields": { + "title": "Advanced Search Fields", + "type": "object", + "additionalProperties": false, + "properties": { + "title": { "type": "boolean", "default": false }, + "description": { "type": "boolean", "default": false }, + "provider": { "type": "boolean", "default": false }, + "url": { "type": "boolean", "default": false }, + "tags": { "type": "boolean", "default": false }, + "domain": { "type": "boolean", "default": false } + }, + "description": "Which fields to include in advanced search filtering" + } + } + }, "enableFontAwesome": { "title": "Enable Font-Awesome?", "type": "boolean", diff --git a/src/utils/Search.js b/src/utils/Search.js index 99f3248403..78f526be27 100644 --- a/src/utils/Search.js +++ b/src/utils/Search.js @@ -51,6 +51,37 @@ export const searchTiles = (allTiles, searchTerm) => { }); }; +/** + * Advanced search: filter only within selected fields + * @param {array} allTiles tiles + * @param {string} searchTerm user query + * @param {object} fieldSelection map of fieldName -> boolean + * Supported keys: title, description, provider, url, tags, domain + * @returns filtered tiles + */ +export const searchTilesWithFields = (allTiles, searchTerm, fieldSelection = {}) => { + if (!searchTerm) return allTiles; + if (!allTiles) return []; + // If no fields explicitly selected (all false), fall back to original behavior + const anySelected = Object.values(fieldSelection).some(Boolean); + if (!anySelected) return searchTiles(allTiles, searchTerm); + + return allTiles.filter((tile) => { + const { + title, description, provider, url, tags, + } = tile; + const domain = getDomainFromUrl(url); + return ( + (fieldSelection.title && filterHelper(title, searchTerm)) + || (fieldSelection.description && filterHelper(description, searchTerm)) + || (fieldSelection.provider && filterHelper(provider, searchTerm)) + || (fieldSelection.url && filterHelper(url, searchTerm)) + || (fieldSelection.tags && filterHelper(tags, searchTerm)) + || (fieldSelection.domain && filterHelper(domain, searchTerm)) + ); + }); +}; + /* From a list of search bangs, return the URL associated with it */ export const getSearchEngineFromBang = (searchQuery, bangList) => { const bangNames = Object.keys(bangList); diff --git a/src/views/Home.vue b/src/views/Home.vue index 004b181ac9..944c3c9822 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -19,6 +19,26 @@ + +
+
Exact Match
+
+
+
+