~/Projects/hoppscotch
git clone https://code.lsong.org/hoppscotch
Commit
- Commit
- dbae90a1937bd96d976ff24bf6b4babc4abcb6b9
- Author
- liyasthomas <[email protected]>
- Date
- 2021-09-08 09:21:22 +0530 +0530
- Diffstat
components/app/Fuse.vue | 38 +++++++++ components/app/Header.vue | 2 components/app/Lunr.vue | 59 --------------- | 11 +- | 0 components/app/Shortcuts.vue | 128 +++++++++++++++++++------------- components/app/ShortcutsEntry.vue | 31 +++++++ helpers/shortcuts.js | 45 +++++++++- package-lock.json | 41 +++------ package.json | 3
refactor: replace lunr with fuse
diff --git a/components/app/Fuse.vue b/components/app/Fuse.vue new file mode 100644 index 0000000000000000000000000000000000000000..ee19a31fb4001dc3504ac9fe9f872643862b5e14 --- /dev/null +++ b/components/app/Fuse.vue @@ -0,0 +1,38 @@ +<template> + <div key="outputHash"> + <AppPowerSearchEntry + v-for="(shortcut, shortcutIndex) in searchResults" + :key="`shortcut-${shortcutIndex}`" + :ref="`item-${shortcutIndex}`" + :shortcut="shortcut.item" + @action="$emit('action', shortcut.item.action)" + /> + <div + v-if="searchResults.length === 0" + class="flex flex-col text-secondaryLight p-4 items-center justify-center" + > + <i class="opacity-75 pb-2 material-icons">manage_search</i> + <span class="text-center"> + {{ $t("state.nothing_found") }} "{{ search }}" + </span> + </div> + </div> +</template> + +<script setup lang="ts"> +import { computed } from "@nuxtjs/composition-api" +import Fuse from "fuse.js" + +const props = defineProps<{ + input: Record<string, any>[] + search: string +}>() + +const options = { + keys: ["keys", "label", "action", "tags"], +} + +const fuse = new Fuse(props.input, options) + +const searchResults = computed(() => fuse.search(props.search)) +</script> diff --git a/components/app/Header.vue b/components/app/Header.vue index 7d32d2e431798aa363e8fc47033bcdb4727290ce..567e969a76f7d334a7bb71d33f5b3e781200aa1e 100644 --- a/components/app/Header.vue +++ b/components/app/Header.vue @@ -83,7 +83,7 @@ <AppAnnouncement v-if="!isOnLine" /> <FirebaseLogin :show="showLogin" @hide-modal="showLogin = false" /> <AppSupport :show="showSupport" @hide-modal="showSupport = false" /> - <AppSearch :show="showSearch" @hide-modal="showSearch = false" /> + <AppPowerSearch :show="showSearch" @hide-modal="showSearch = false" /> </div> </template> diff --git a/components/app/Lunr.vue b/components/app/Lunr.vue deleted file mode 100644 index c6f3dcbf383e0464dd5b28a8e6306f241025fa0d..0000000000000000000000000000000000000000 --- a/components/app/Lunr.vue +++ /dev/null @@ -1,59 +0,0 @@ -<template> - <div key="outputHash"> - <AppSearchEntry - v-for="(shortcut, shortcutIndex) in searchResults" - :key="`shortcut-${shortcutIndex}`" - :ref="`item-${shortcutIndex}`" - :shortcut="shortcut" - @action="$emit('action', shortcut.action)" - /> - <div - v-if="searchResults.length === 0" - class="flex flex-col text-secondaryLight p-4 items-center justify-center" - > - <i class="opacity-75 pb-2 material-icons">manage_search</i> - <span class="text-center"> - {{ $t("state.nothing_found") }} "{{ search }}" - </span> - </div> - </div> -</template> - -<script setup lang="ts"> -import { computed } from "@nuxtjs/composition-api" -import lunr from "lunr" - -const props = defineProps<{ - input: Record<string, any>[] - search: string -}>() - -const transformedInput = computed(() => - props.input.map((val, i) => { - return { - __id: i, - ...val, - } - }) -) - -const firstInput = computed(() => - transformedInput.value.length > 0 ? transformedInput.value[0] : {} -) - -const idx = computed(() => { - return lunr(function () { - this.ref("__id") - - Object.keys(firstInput.value).forEach((key) => this.field(key), this) - - transformedInput.value.forEach((doc) => { - this.add(doc) - }, this) - }) -}) - -const searchResults = computed(() => - idx.value.search(`${props.search}*`).map((result) => props.input[+result.ref]) -) -</script> diff --git a/components/app/PowerSearch.vue b/components/app/PowerSearch.vue new file mode 100644 index 0000000000000000000000000000000000000000..ad402751c385daf94e3ec2ece98a1f9e20d14496 --- /dev/null +++ b/components/app/PowerSearch.vue @@ -0,0 +1,77 @@ +<template> + <SmartModal v-if="show" full-width @close="$emit('hide-modal')"> + <template #body> + <input + id="command" + v-model="search" + v-focus + type="text" + autocomplete="off" + name="command" + :placeholder="$t('app.type_a_command_search').toString()" + class=" + bg-transparent + border-b border-dividerLight + flex flex-shrink-0 + text-secondaryDark text-base + p-6 + " + /> + <AppFuse + v-if="search" + :input="fuse" + :search="search" + @action="runAction" + /> + <div + v-else + class=" + divide-y divide-dividerLight + flex flex-col + space-y-4 + flex-1 + overflow-auto + hide-scrollbar + " + > + <div v-for="(map, mapIndex) in mappings" :key="`map-${mapIndex}`"> + <h5 class="my-2 text-secondaryLight py-2 px-6"> + {{ $t(map.section) }} + </h5> + <AppPowerSearchEntry + v-for="(shortcut, shortcutIndex) in map.shortcuts" + :key="`map-${mapIndex}-shortcut-${shortcutIndex}`" + :shortcut="shortcut" + @action="runAction" + /> + </div> + </div> + </template> + </SmartModal> +</template> + +<script setup lang="ts"> +import { ref } from "@nuxtjs/composition-api" +import { HoppAction, invokeAction } from "~/helpers/actions" +import { spotlight as mappings, fuse } from "~/helpers/shortcuts" + +defineProps<{ + show: boolean +}>() + +const emit = defineEmits<{ + (e: "hide-modal"): void +}>() + +const search = ref("") + +const hideModal = () => { + search.value = "" + emit("hide-modal") +} + +const runAction = (command: HoppAction) => { + invokeAction(command) + hideModal() +} +</script> diff --git a/components/app/PowerSearchEntry.vue b/components/app/PowerSearchEntry.vue new file mode 100644 index 0000000000000000000000000000000000000000..2b25f9eff35f89b6aeec929eea293cbe64e1d93d --- /dev/null +++ b/components/app/PowerSearchEntry.vue @@ -0,0 +1,66 @@ +<template> + <div + class=" + cursor-pointer + flex + py-2 + px-6 + transition + items-center + group + hover:bg-primaryLight + focus:outline-none + focus-visible:bg-primaryLight + " + tabindex="0" + @click="$emit('action', shortcut.action)" + @keydown.enter="$emit('action', shortcut.action)" + > + <SmartIcon + class=" + mr-4 + opacity-75 + transition + svg-icons + group-hover:opacity-100 + group-focus:opacity-100 + " + :name="shortcut.icon" + /> + <span + class=" + flex flex-1 + mr-4 + transition + group-hover:text-secondaryDark + group-focus:text-secondaryDark + " + > + {{ $t(shortcut.label) }} + </span> + <span + v-for="(key, keyIndex) in shortcut.keys" + :key="`key-${keyIndex}`" + class="shortcut-key" + > + {{ key }} + </span> + </div> +</template> + +<script setup lang="ts"> +defineProps<{ + shortcut: Object +}>() +</script> + +<style lang="scss" scoped> +.shortcut-key { + @apply bg-dividerLight; + @apply rounded; + @apply ml-2; + @apply py-1; + @apply px-2; + @apply inline-flex; +} +</style> diff --git a/components/app/Search.vue b/components/app/Search.vue deleted file mode 100644 index dbdd68f38e0b9f3fe193ba383f152404582aab8e..0000000000000000000000000000000000000000 --- a/components/app/Search.vue +++ /dev/null @@ -1,78 +0,0 @@ -<template> - <SmartModal v-if="show" full-width @close="$emit('hide-modal')"> - <template #body> - <input - id="command" - v-model="search" - v-focus - type="text" - autocomplete="off" - name="command" - :placeholder="$t('app.type_a_command_search')" - class=" - bg-transparent - border-b border-dividerLight - flex flex-shrink-0 - text-secondaryDark text-base - p-6 - " - /> - <AppLunr - v-if="search" - log - :input="lunr" - :search="search" - @action="runAction" - /> - <div - v-else - class=" - divide-y divide-dividerLight - flex flex-col - space-y-4 - flex-1 - overflow-auto - hide-scrollbar - " - > - <div v-for="(map, mapIndex) in mappings" :key="`map-${mapIndex}`"> - <h5 class="my-2 text-secondaryLight py-2 px-6"> - {{ $t(map.section) }} - </h5> - <AppSearchEntry - v-for="(shortcut, shortcutIndex) in map.shortcuts" - :key="`map-${mapIndex}-shortcut-${shortcutIndex}`" - :shortcut="shortcut" - @action="runAction" - /> - </div> - </div> - </template> - </SmartModal> -</template> - -<script setup lang="ts"> -import { ref } from "@nuxtjs/composition-api" -import { HoppAction, invokeAction } from "~/helpers/actions" -import { spotlight as mappings, lunr } from "~/helpers/shortcuts" - -defineProps<{ - show: boolean -}>() - -const emit = defineEmits<{ - (e: "hide-modal"): void -}>() - -const search = ref("") - -const hideModal = () => { - search.value = "" - emit("hide-modal") -} - -const runAction = (command: HoppAction) => { - invokeAction(command) - hideModal() -} -</script> diff --git a/components/app/SearchEntry.vue b/components/app/SearchEntry.vue deleted file mode 100644 index 2b25f9eff35f89b6aeec929eea293cbe64e1d93d..0000000000000000000000000000000000000000 --- a/components/app/SearchEntry.vue +++ /dev/null @@ -1,66 +0,0 @@ -<template> - <div - class=" - cursor-pointer - flex - py-2 - px-6 - transition - items-center - group - hover:bg-primaryLight - focus:outline-none - focus-visible:bg-primaryLight - " - tabindex="0" - @click="$emit('action', shortcut.action)" - @keydown.enter="$emit('action', shortcut.action)" - > - <SmartIcon - class=" - mr-4 - opacity-75 - transition - svg-icons - group-hover:opacity-100 - group-focus:opacity-100 - " - :name="shortcut.icon" - /> - <span - class=" - flex flex-1 - mr-4 - transition - group-hover:text-secondaryDark - group-focus:text-secondaryDark - " - > - {{ $t(shortcut.label) }} - </span> - <span - v-for="(key, keyIndex) in shortcut.keys" - :key="`key-${keyIndex}`" - class="shortcut-key" - > - {{ key }} - </span> - </div> -</template> - -<script setup lang="ts"> -defineProps<{ - shortcut: Object -}>() -</script> - -<style lang="scss" scoped> -.shortcut-key { - @apply bg-dividerLight; - @apply rounded; - @apply ml-2; - @apply py-1; - @apply px-2; - @apply inline-flex; -} -</style> diff --git a/components/app/Shortcuts.vue b/components/app/Shortcuts.vue index 1a27f422f76f109feaa5b1d825e4d31e529e5e66..0b8fd803dc0a85c3fbe228c05de3434fc97e1bd0 100644 --- a/components/app/Shortcuts.vue +++ b/components/app/Shortcuts.vue @@ -19,12 +19,13 @@<ButtonSecondary svg="x" class="rounded" @click.native="close()" /> </div> </div> - <!-- <div class="bg-primary border-b border-dividerLight"> + <div class="bg-primary border-b border-dividerLight"> <div class="flex flex-col my-4 mx-6"> <input v-model="filterText" + top-0 <AppSlideOver :show="show" @close="close()"> - bg-primary + autocomplete="off" class=" bg-primaryLight border border-dividerLight @@ -36,111 +37,136 @@ px-4 focus-visible:border-divider " :placeholder="$t('action.search')" + v-focus /> </div> - </div> --> - <div + </div> + top-0 class=" <div + <div +<template> + bg-primary <div -<template> + bg-primary <div - <AppSlideOver :show="show" @close="close()"> + border-b border-dividerLight <div - <template #content> + flex + <h1 class="font-semibold text-secondaryDark"> <template> + border-b border-dividerLight class=" +<template> <template> - bg-primary + flex + v-for="(shortcut, index) in map.item.shortcuts" + :key="`shortcut-${index}`" + :shortcut="shortcut" + /> + </div> <div + v-if="searchResults.length === 0" + class=" + z-10 <div + z-10 class=" - <div + z-10 bg-primary - <div + z-10 border-b border-dividerLight + justify-center + " > + <i class="opacity-75 pb-2 material-icons">manage_search</i> + <span class="text-center"> + {{ $t("state.nothing_found") }} "{{ filterText }}" + </span> + </div> + </div> <div - p-2 + v-else class=" + <div - class=" + <div <template> - class=" + <div <AppSlideOver :show="show" @close="close()"> - class=" + <div <template #content> +<template> class=" + > + <div <div - class=" + <div class=" - class=" + <div bg-primary - class=" + <div border-b border-dividerLight - class=" + <div flex - class=" + <div p-2 - bg-primary + class=" - bg-primary + class=" <template> - :key="`map-${mapIndex}-shortcut-${shortcutIndex}-key-${keyIndex}`" + <AppShortcutsEntry - bg-primary + class=" <template #content> - bg-primary + class=" <div - {{ key }} + :shortcut="shortcut" - </span> - </div> + /> </div> </div> </template> </AppSlideOver> </template> - border-b border-dividerLight <template> - border-b border-dividerLight <AppSlideOver :show="show" @close="close()"> -import shortcuts from "~/helpers/shortcuts" - -export default defineComponent({ - border-b border-dividerLight class=" - border-b border-dividerLight + items-center bg-primary - border-b border-dividerLight + items-center border-b border-dividerLight - border-b border-dividerLight + items-center flex border-b border-dividerLight + items-center p-2 - flex + sticky - flex <template> + flex + - flex + sticky <AppSlideOver :show="show" @close="close()"> - border-b border-dividerLight + keys: ["shortcuts.label"], +} border-b border-dividerLight - flex +<template> <template #content> - flex <div - flex + + sticky class=" - flex + + sticky bg-primary border-b border-dividerLight - border-b border-dividerLight - flex + sticky border-b border-dividerLight - close() { + sticky flex - class=" - }, +}>() border-b border-dividerLight - border-b border-dividerLight - flex +const close = () => { + filterText.value = "" + emit("close") + p-2 p-2 </script> diff --git a/components/app/ShortcutsEntry.vue b/components/app/ShortcutsEntry.vue new file mode 100644 index 0000000000000000000000000000000000000000..7115cc82189da40e89fa613a805534e27a062f24 --- /dev/null +++ b/components/app/ShortcutsEntry.vue @@ -0,0 +1,31 @@ +<template> + <div class="flex items-center"> + <span class="flex flex-1 mr-4"> + {{ $t(shortcut.label) }} + </span> + <span + v-for="(key, index) in shortcut.keys" + :key="`key-${index}`" + class="shortcut-key" + > + {{ key }} + </span> + </div> +</template> + +<script setup lang="ts"> +defineProps<{ + shortcut: Object +}>() +</script> + +<style lang="scss" scoped> +.shortcut-key { + @apply bg-dividerLight; + @apply rounded; + @apply ml-2; + @apply py-1; + @apply px-2; + @apply inline-flex; +} +</style> diff --git a/helpers/shortcuts.js b/helpers/shortcuts.js index 01cce5d48cefbd52645c2c22f64aa298e222e212..2a72b065d9913f26f046cc563c05f0f695e9d847 100644 --- a/helpers/shortcuts.js +++ b/helpers/shortcuts.js @@ -193,37 +193,54 @@ ], }, ] -export const lunr = [ +export const fuse = [ { keys: ["?"], label: "shortcut.general.help_menu", action: "modals.support.toggle", icon: "life-buoy", + tags: [ + "help", + "support", + "menu", + "discord", + label: "shortcut.general.command_menu", keys: ["?"], +import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" + label: "shortcut.general.help_menu", + "troubleshooting", + "chat", + "community", + "feedback", + "report", + "bug", + "issue", + "ticket", + ], }, { keys: [getPlatformSpecialKey(), "K"], label: "shortcut.general.show_all", action: "flyouts.keybinds.toggle", icon: "zap", + keys: [getPlatformSpecialKey(), "K"], keys: ["?"], - { }, { keys: [getPlatformSpecialKey(), "←"], label: "shortcut.navigation.back", action: "navigation.jump.back", icon: "arrow-right", + keys: [getPlatformSpecialKey(), "K"], label: "shortcut.general.help_menu", - }, { keys: [getPlatformSpecialKey(), "→"], label: "shortcut.navigation.forward", action: "navigation.jump.forward", icon: "arrow-right", - tags: "forward jump next forward page navigation go", + tags: ["forward", "jump", "next", "forward", "page", "navigation", "go"], }, { keys: [getPlatformAlternateKey(), "R"], @@ -230,6 +248,7 @@ label: "shortcut.navigation.rest", action: "navigation.jump.rest", icon: "arrow-right", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" + label: "shortcut.request.delete_method", }, { keys: [getPlatformAlternateKey(), "Q"], @@ -236,7 +256,8 @@ label: "shortcut.navigation.graphql", action: "navigation.jump.graphql", icon: "arrow-right", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" { + }, { keys: [getPlatformAlternateKey(), "W"], @@ -243,8 +265,20 @@ label: "shortcut.navigation.realtime", action: "navigation.jump.realtime", icon: "arrow-right", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" + label: "shortcut.request.save_to_collections", + "realtime", + "jump", + "page", + "navigation", + "websocket", + label: "shortcut.general.show_all", keys: ["?"], import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" + keys: [getPlatformAlternateKey(), "Q"], + "sse", + "go", + ], +import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" keys: ["?"], { keys: [getPlatformAlternateKey(), "D"], @@ -252,7 +286,7 @@ label: "shortcut.navigation.documentation", action: "navigation.jump.documentation", icon: "arrow-right", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" -import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" + section: "shortcut.general.title", }, { @@ -261,7 +295,7 @@ label: "shortcut.navigation.settings", action: "navigation.jump.settings", icon: "arrow-right", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" - label: "shortcut.general.close_current_menu", + keys: [getPlatformAlternateKey(), "D"], }, { keys: [getPlatformSpecialKey(), "M"], @@ -269,6 +303,6 @@ label: "shortcut.miscellaneous.invite", action: "modals.share.toggle", icon: "gift", import { getPlatformAlternateKey, getPlatformSpecialKey } from "./platformutils" - label: "shortcut.request.send_request", + label: "shortcut.navigation.documentation", }, ] diff --git a/package-lock.json b/package-lock.json index 85673876a2177eacf0bfd3624998ea178d928433..897a20ee07e472c2eda684476903cbb9cf3bbb0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,11 +21,11 @@ "acorn-walk": "^8.2.0", "core-js": "^3.17.2", "esprima": "^4.0.1", "firebase": "^9.0.1", + "fuse.js": "^6.4.6", "graphql": "^15.5.0", "graphql-language-service-interface": "^2.8.4", "json-loader": "^0.5.7", "lodash": "^4.17.21", - "lunr": "^2.3.9", "mustache": "^4.2.0", "node-interval-tree": "^1.3.3", "nuxt": "^2.15.8", @@ -62,7 +62,6 @@ "@nuxtjs/svg": "^0.2.0", "@testing-library/jest-dom": "^5.14.1", "@types/cookie": "^0.4.1", "@types/lodash": "^4.14.172", - "@types/lunr": "^2.3.4", "@types/splitpanes": "^2.2.1", "@vue/runtime-dom": "^3.2.9", "@vue/test-utils": "^1.2.2", @@ -8129,12 +8128,6 @@ "node_modules/@types/long": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" - }, - "node_modules/@types/lunr": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz", - "integrity": "sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g==", - "dev": true }, "node_modules/@types/mdast": { "version": "3.0.7", @@ -17443,6 +17436,14 @@ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/fuse.js": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.4.6.tgz", + "integrity": "sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw==", + "engines": { + "node": ">=10" + } + }, "node_modules/gaze": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -23241,12 +23242,6 @@ "yallist": "^3.0.2" } }, "integrity": "sha512-qH9AYSQDDTaSWSdtOvB3G1RdPpcYSgddAdFYqpFewlKQ1GJj/L+sM7vwqCG7/ip6AiM04Sry1sgmFzaEoFREUA==", - "version": "2.0.0", - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "integrity": "sha512-qH9AYSQDDTaSWSdtOvB3G1RdPpcYSgddAdFYqpFewlKQ1GJj/L+sM7vwqCG7/ip6AiM04Sry1sgmFzaEoFREUA==", "": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -42088,13 +42083,6 @@ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, "dir-glob": "^3.0.1", - "requires": true, - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz", - "integrity": "sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g==", - "dev": true - }, - "dir-glob": "^3.0.1", "packages": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.7.tgz", @@ -49464,6 +49452,12 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, { + "schema-utils": "^1.0.0", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.4.6.tgz", + "integrity": "sha512-/gYxR/0VpXmWSfZOIPS3rWwU8SHgsRTwWuXhyb2O6s7aRuVtHtxCkR33bNYu3wyLyNx/Wpv0vU7FZy8Vj53VNw==" + }, +{ "@babel/plugin-transform-for-of": "^7.0.0", "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", @@ -53819,11 +53813,6 @@ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { "yallist": "^3.0.2" } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" }, "magic-string": { "version": "0.25.7", diff --git a/package.json b/package.json index 8a015486602d3285b9c4e7ee1d665ff5a8496198..71b1e7143ca076c776140c75cbc3069a1324d8b9 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ "acorn-walk": "^8.2.0", "core-js": "^3.17.2", "esprima": "^4.0.1", "firebase": "^9.0.1", + "fuse.js": "^6.4.6", "graphql": "^15.5.0", "graphql-language-service-interface": "^2.8.4", "json-loader": "^0.5.7", "lodash": "^4.17.21", - "lunr": "^2.3.9", "mustache": "^4.2.0", "node-interval-tree": "^1.3.3", "nuxt": "^2.15.8", @@ -78,7 +78,6 @@ "@nuxtjs/svg": "^0.2.0", "@testing-library/jest-dom": "^5.14.1", "@types/cookie": "^0.4.1", "@types/lodash": "^4.14.172", - "@types/lunr": "^2.3.4", "@types/splitpanes": "^2.2.1", "@vue/runtime-dom": "^3.2.9", "@vue/test-utils": "^1.2.2",