Просмотр исходного кода

chore(search): upgrade fuse.js to 7.1.0 with export interop

Mega Yu 1 месяц назад
Родитель
Сommit
2aedbc06a5
4 измененных файлов с 26 добавлено и 6 удалено
  1. 1 1
      package.json
  2. 4 1
      src/main/frontend/worker/search.cljs
  3. 17 0
      src/test/frontend/worker/search_test.cljs
  4. 4 4
      yarn.lock

+ 1 - 1
package.json

@@ -152,7 +152,7 @@
         "emoji-mart": "^5.5.2",
         "fs": "0.0.1-security",
         "fs-extra": "^11.3.0",
-        "fuse.js": "6.4.6",
+        "fuse.js": "7.1.0",
         "grapheme-splitter": "1.0.4",
         "graphology": "0.20.0",
         "hnswlib-wasm": "^0.8.2",

+ 4 - 1
src/main/frontend/worker/search.cljs

@@ -16,7 +16,10 @@
             [logseq.graph-parser.text :as text]
             [missionary.core :as m]))
 
-(def fuse (aget Fuse "default"))
+(def fuse
+  ;; Fuse 6 exposed the constructor on `default`, while Fuse 7's CJS path returns
+  ;; the constructor directly.
+  (or (aget Fuse "default") Fuse))
 
 ;; TODO: use sqlite for fuzzy search
 ;; maybe https://github.com/nalgeon/sqlean/blob/main/docs/fuzzy.md?

+ 17 - 0
src/test/frontend/worker/search_test.cljs

@@ -200,3 +200,20 @@
           result (#'search/search-blocks-aux (checking-db) sql "a/" "%a/%" "page-1" 10)]
       (is (some? result))
       (is (empty? result)))))
+
+(deftest fuse-constructor-interop
+  (testing "Fuse constructor remains usable for build/search/add/remove across export shapes"
+    (let [ctor search/fuse
+          indice (ctor. (clj->js [{:id "1" :title "alpha beta"}])
+                        (clj->js {:keys ["title"]
+                                  :shouldSort true
+                                  :tokenize true
+                                  :distance 1024
+                                  :threshold 0.5
+                                  :minMatchCharLength 1}))]
+      (.add indice (clj->js {:id "2" :title "gamma"}))
+      (.remove indice (fn [page] (= "2" (aget page "id"))))
+      (let [result (js->clj (.search indice "alpha" (clj->js {:limit 5})) :keywordize-keys true)]
+        (is (some? ctor))
+        (is (= 1 (count result)))
+        (is (= "alpha beta" (get-in result [0 :item :title])))))))

+ 4 - 4
yarn.lock

@@ -4366,10 +4366,10 @@ function-bind@^1.1.2:
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
   integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 
-fuse.js@6.4.6:
-  version "6.4.6"
-  resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.4.6.tgz#62f216c110e5aa22486aff20be7896d19a059b79"
-  integrity sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw==
+fuse.js@7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.1.0.tgz#306228b4befeee11e05b027087c2744158527d09"
+  integrity sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==
 
 gauge@^3.0.0:
   version "3.0.2"