@vuepress-plume/plugin-search 1.0.0-rc.162 → 1.0.0-rc.164

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,8 +21,7 @@ const defaultLocales = { "/": {
21
21
  function useLocale(locales) {
22
22
  const localesRef = toRef(locales);
23
23
  const routeLocale = useRouteLocale();
24
- const locale = computed(() => localesRef.value[routeLocale.value] ?? defaultLocales[routeLocale.value] ?? defaultLocales["/"]);
25
- return locale;
24
+ return computed(() => localesRef.value[routeLocale.value] ?? defaultLocales[routeLocale.value] ?? defaultLocales["/"]);
26
25
  }
27
26
 
28
27
  //#endregion
@@ -31,14 +30,9 @@ const searchIndexData = shallowRef(searchIndex);
31
30
  function useSearchIndex() {
32
31
  return searchIndexData;
33
32
  }
34
- if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) {
35
- __VUE_HMR_RUNTIME__.updateSearchIndex = (data) => {
36
- searchIndexData.value = data;
37
- };
38
- __VUE_HMR_RUNTIME__.updateSearchIndex = (data) => {
39
- searchIndexData.value = data;
40
- };
41
- }
33
+ if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) __VUE_HMR_RUNTIME__.updateSearchIndex = (data) => {
34
+ searchIndexData.value = data;
35
+ };
42
36
 
43
37
  //#endregion
44
38
  export { useLocale, useSearchIndex };
@@ -2,13 +2,6 @@ import { SearchOptions, SearchPluginOptions } from "../shared/index.js";
2
2
  import { App, Plugin } from "vuepress/core";
3
3
  export * from "../shared/index.js";
4
4
 
5
- //#region src/node/searchPlugin.d.ts
6
- declare function searchPlugin({
7
- locales,
8
- isSearchable,
9
- ...searchOptions
10
- }?: SearchPluginOptions): Plugin;
11
- //#endregion
12
5
  //#region src/node/prepareSearchIndex.d.ts
13
6
  interface SearchIndexOptions {
14
7
  app: App;
@@ -21,4 +14,11 @@ declare function prepareSearchIndex({
21
14
  searchOptions
22
15
  }: SearchIndexOptions): Promise<void>;
23
16
  //#endregion
17
+ //#region src/node/searchPlugin.d.ts
18
+ declare function searchPlugin({
19
+ locales,
20
+ isSearchable,
21
+ ...searchOptions
22
+ }?: SearchPluginOptions): Plugin;
23
+ //#endregion
24
24
  export { prepareSearchIndex, searchPlugin };
package/lib/node/index.js CHANGED
@@ -1,154 +1,11 @@
1
- import { addViteOptimizeDepsInclude, getFullLocaleConfig } from "@vuepress/helper";
2
- import chokidar from "chokidar";
3
- import { colors, getDirname, logger, path } from "vuepress/utils";
4
1
  import MiniSearch from "minisearch";
5
2
  import pMap from "p-map";
3
+ import { colors, getDirname, logger, path } from "vuepress/utils";
4
+ import { addViteOptimizeDepsInclude, getFullLocaleConfig } from "@vuepress/helper";
5
+ import chokidar from "chokidar";
6
6
 
7
7
  export * from "../shared/index.js"
8
8
 
9
- //#region src/node/locales/de.ts
10
- const deSearchLocale = {
11
- placeholder: "Dokumente durchsuchen",
12
- resetButtonTitle: "Suche zurücksetzen",
13
- backButtonTitle: "Schließen",
14
- noResultsText: "Keine Suchergebnisse:",
15
- footer: {
16
- selectText: "Auswählen",
17
- selectKeyAriaLabel: "Eingabe",
18
- navigateText: "Wechseln",
19
- navigateUpKeyAriaLabel: "Nach oben",
20
- navigateDownKeyAriaLabel: "Nach unten",
21
- closeText: "Schließen",
22
- closeKeyAriaLabel: "Beenden"
23
- }
24
- };
25
-
26
- //#endregion
27
- //#region src/node/locales/en.ts
28
- const enSearchLocale = {
29
- placeholder: "Search",
30
- resetButtonTitle: "Reset search",
31
- backButtonTitle: "Close search",
32
- noResultsText: "No results for",
33
- footer: {
34
- selectText: "to select",
35
- selectKeyAriaLabel: "enter",
36
- navigateText: "to navigate",
37
- navigateUpKeyAriaLabel: "up arrow",
38
- navigateDownKeyAriaLabel: "down arrow",
39
- closeText: "to close",
40
- closeKeyAriaLabel: "escape"
41
- }
42
- };
43
-
44
- //#endregion
45
- //#region src/node/locales/fr.ts
46
- const frSearchLocale = {
47
- placeholder: "Rechercher dans la documentation",
48
- resetButtonTitle: "Réinitialiser la recherche",
49
- backButtonTitle: "Fermer",
50
- noResultsText: "Aucun résultat trouvé :",
51
- footer: {
52
- selectText: "sélectionner",
53
- selectKeyAriaLabel: "Entrée",
54
- navigateText: "naviguer",
55
- navigateUpKeyAriaLabel: "haut",
56
- navigateDownKeyAriaLabel: "bas",
57
- closeText: "fermer",
58
- closeKeyAriaLabel: "sortie"
59
- }
60
- };
61
-
62
- //#endregion
63
- //#region src/node/locales/ja.ts
64
- const jaSearchLocale = {
65
- placeholder: "ドキュメントを検索",
66
- resetButtonTitle: "検索をリセット",
67
- backButtonTitle: "閉じる",
68
- noResultsText: "検索結果がありません:",
69
- footer: {
70
- selectText: "選択",
71
- selectKeyAriaLabel: "入力",
72
- navigateText: "切り替え",
73
- navigateUpKeyAriaLabel: "上へ",
74
- navigateDownKeyAriaLabel: "下へ",
75
- closeText: "閉じる",
76
- closeKeyAriaLabel: "終了"
77
- }
78
- };
79
-
80
- //#endregion
81
- //#region src/node/locales/ru.ts
82
- const ruSearchLocale = {
83
- placeholder: "Поиск по документации",
84
- resetButtonTitle: "Сбросить поиск",
85
- backButtonTitle: "Закрыть",
86
- noResultsText: "Нет результатов поиска:",
87
- footer: {
88
- selectText: "Выбрать",
89
- selectKeyAriaLabel: "Ввод",
90
- navigateText: "Переключить",
91
- navigateUpKeyAriaLabel: "Вверх",
92
- navigateDownKeyAriaLabel: "Вниз",
93
- closeText: "Закрыть",
94
- closeKeyAriaLabel: "Выход"
95
- }
96
- };
97
-
98
- //#endregion
99
- //#region src/node/locales/zh-tw.ts
100
- const zhTwSearchLocale = {
101
- placeholder: "搜索文檔",
102
- resetButtonTitle: "重置搜索",
103
- backButtonTitle: "關閉",
104
- noResultsText: "無搜索結果:",
105
- footer: {
106
- selectText: "選擇",
107
- selectKeyAriaLabel: "輸入",
108
- navigateText: "切換",
109
- navigateUpKeyAriaLabel: "向上",
110
- navigateDownKeyAriaLabel: "向下",
111
- closeText: "關閉",
112
- closeKeyAriaLabel: "退出"
113
- }
114
- };
115
-
116
- //#endregion
117
- //#region src/node/locales/zh.ts
118
- const zhSearchLocale = {
119
- placeholder: "搜索文档",
120
- resetButtonTitle: "重置搜索",
121
- backButtonTitle: "关闭",
122
- noResultsText: "无搜索结果:",
123
- footer: {
124
- selectText: "选择",
125
- selectKeyAriaLabel: "输入",
126
- navigateText: "切换",
127
- navigateUpKeyAriaLabel: "向上",
128
- navigateDownKeyAriaLabel: "向下",
129
- closeText: "关闭",
130
- closeKeyAriaLabel: "退出"
131
- }
132
- };
133
-
134
- //#endregion
135
- //#region src/node/locales/index.ts
136
- const SEARCH_LOCALES = [
137
- [["en", "en-US"], enSearchLocale],
138
- [[
139
- "zh",
140
- "zh-CN",
141
- "zh-Hans",
142
- "zh-Hant"
143
- ], zhSearchLocale],
144
- [["zh-TW"], zhTwSearchLocale],
145
- [["de", "de-DE"], deSearchLocale],
146
- [["fr", "fr-FR"], frSearchLocale],
147
- [["ru", "ru-RU"], ruSearchLocale],
148
- [["ja", "ja-JP"], jaSearchLocale]
149
- ];
150
-
151
- //#endregion
152
9
  //#region src/node/prepareSearchIndex.ts
153
10
  const SEARCH_INDEX_DIR = "internal/minisearchIndex/";
154
11
  const indexByLocales = /* @__PURE__ */ new Map();
@@ -187,15 +44,13 @@ async function prepareSearchIndex({ app, isSearchable, searchOptions }) {
187
44
  if (app.env.isDebug) logger.info(`\n[${colors.green("@vuepress-plume/plugin-search")}] prepare search time spent: ${(performance.now() - start).toFixed(2)}ms`);
188
45
  }
189
46
  async function onSearchIndexUpdated(filepath, { app, isSearchable, searchOptions }) {
190
- const pages = isSearchable ? app.pages.filter(isSearchable) : app.pages;
191
- if (pages.some((p) => p.filePathRelative?.endsWith(filepath))) {
47
+ if ((isSearchable ? app.pages.filter(isSearchable) : app.pages).some((p) => p.filePathRelative?.endsWith(filepath))) {
192
48
  await indexFile(app.pages.find((p) => p.filePathRelative?.endsWith(filepath)), searchOptions);
193
49
  await writeTemp(app);
194
50
  }
195
51
  }
196
52
  async function onSearchIndexRemoved(filepath, { app, isSearchable, searchOptions }) {
197
- const pages = isSearchable ? app.pages.filter(isSearchable) : app.pages;
198
- if (pages.some((p) => p.filePathRelative?.endsWith(filepath))) {
53
+ if ((isSearchable ? app.pages.filter(isSearchable) : app.pages).some((p) => p.filePathRelative?.endsWith(filepath))) {
199
54
  const page = app.pages.find((p) => p.filePathRelative?.endsWith(filepath));
200
55
  const fileId = page.path;
201
56
  const locale = page.pathLocale;
@@ -209,8 +64,7 @@ async function writeTemp(app) {
209
64
  const records = [];
210
65
  for (const [locale] of indexByLocales) {
211
66
  const index = indexByLocales.get(locale);
212
- const localeName = locale.replace(/^\/|\/$/g, "").replace(/\//g, "_") || "default";
213
- const filename = `searchBox-${localeName}.js`;
67
+ const filename = `searchBox-${locale.replace(/^\/|\/$/g, "").replace(/\//g, "_") || "default"}.js`;
214
68
  records.push(`${JSON.stringify(locale)}: () => import('@${SEARCH_INDEX_DIR}${filename}')`);
215
69
  await app.writeTemp(`${SEARCH_INDEX_DIR}${filename}`, `export default ${JSON.stringify(JSON.stringify(index) ?? {})}`);
216
70
  }
@@ -301,6 +155,149 @@ if (import.meta.hot) {
301
155
  `;
302
156
  }
303
157
 
158
+ //#endregion
159
+ //#region src/node/locales/de.ts
160
+ const deSearchLocale = {
161
+ placeholder: "Dokumente durchsuchen",
162
+ resetButtonTitle: "Suche zurücksetzen",
163
+ backButtonTitle: "Schließen",
164
+ noResultsText: "Keine Suchergebnisse:",
165
+ footer: {
166
+ selectText: "Auswählen",
167
+ selectKeyAriaLabel: "Eingabe",
168
+ navigateText: "Wechseln",
169
+ navigateUpKeyAriaLabel: "Nach oben",
170
+ navigateDownKeyAriaLabel: "Nach unten",
171
+ closeText: "Schließen",
172
+ closeKeyAriaLabel: "Beenden"
173
+ }
174
+ };
175
+
176
+ //#endregion
177
+ //#region src/node/locales/en.ts
178
+ const enSearchLocale = {
179
+ placeholder: "Search",
180
+ resetButtonTitle: "Reset search",
181
+ backButtonTitle: "Close search",
182
+ noResultsText: "No results for",
183
+ footer: {
184
+ selectText: "to select",
185
+ selectKeyAriaLabel: "enter",
186
+ navigateText: "to navigate",
187
+ navigateUpKeyAriaLabel: "up arrow",
188
+ navigateDownKeyAriaLabel: "down arrow",
189
+ closeText: "to close",
190
+ closeKeyAriaLabel: "escape"
191
+ }
192
+ };
193
+
194
+ //#endregion
195
+ //#region src/node/locales/fr.ts
196
+ const frSearchLocale = {
197
+ placeholder: "Rechercher dans la documentation",
198
+ resetButtonTitle: "Réinitialiser la recherche",
199
+ backButtonTitle: "Fermer",
200
+ noResultsText: "Aucun résultat trouvé :",
201
+ footer: {
202
+ selectText: "sélectionner",
203
+ selectKeyAriaLabel: "Entrée",
204
+ navigateText: "naviguer",
205
+ navigateUpKeyAriaLabel: "haut",
206
+ navigateDownKeyAriaLabel: "bas",
207
+ closeText: "fermer",
208
+ closeKeyAriaLabel: "sortie"
209
+ }
210
+ };
211
+
212
+ //#endregion
213
+ //#region src/node/locales/ja.ts
214
+ const jaSearchLocale = {
215
+ placeholder: "ドキュメントを検索",
216
+ resetButtonTitle: "検索をリセット",
217
+ backButtonTitle: "閉じる",
218
+ noResultsText: "検索結果がありません:",
219
+ footer: {
220
+ selectText: "選択",
221
+ selectKeyAriaLabel: "入力",
222
+ navigateText: "切り替え",
223
+ navigateUpKeyAriaLabel: "上へ",
224
+ navigateDownKeyAriaLabel: "下へ",
225
+ closeText: "閉じる",
226
+ closeKeyAriaLabel: "終了"
227
+ }
228
+ };
229
+
230
+ //#endregion
231
+ //#region src/node/locales/ru.ts
232
+ const ruSearchLocale = {
233
+ placeholder: "Поиск по документации",
234
+ resetButtonTitle: "Сбросить поиск",
235
+ backButtonTitle: "Закрыть",
236
+ noResultsText: "Нет результатов поиска:",
237
+ footer: {
238
+ selectText: "Выбрать",
239
+ selectKeyAriaLabel: "Ввод",
240
+ navigateText: "Переключить",
241
+ navigateUpKeyAriaLabel: "Вверх",
242
+ navigateDownKeyAriaLabel: "Вниз",
243
+ closeText: "Закрыть",
244
+ closeKeyAriaLabel: "Выход"
245
+ }
246
+ };
247
+
248
+ //#endregion
249
+ //#region src/node/locales/zh-tw.ts
250
+ const zhTwSearchLocale = {
251
+ placeholder: "搜索文檔",
252
+ resetButtonTitle: "重置搜索",
253
+ backButtonTitle: "關閉",
254
+ noResultsText: "無搜索結果:",
255
+ footer: {
256
+ selectText: "選擇",
257
+ selectKeyAriaLabel: "輸入",
258
+ navigateText: "切換",
259
+ navigateUpKeyAriaLabel: "向上",
260
+ navigateDownKeyAriaLabel: "向下",
261
+ closeText: "關閉",
262
+ closeKeyAriaLabel: "退出"
263
+ }
264
+ };
265
+
266
+ //#endregion
267
+ //#region src/node/locales/zh.ts
268
+ const zhSearchLocale = {
269
+ placeholder: "搜索文档",
270
+ resetButtonTitle: "重置搜索",
271
+ backButtonTitle: "关闭",
272
+ noResultsText: "无搜索结果:",
273
+ footer: {
274
+ selectText: "选择",
275
+ selectKeyAriaLabel: "输入",
276
+ navigateText: "切换",
277
+ navigateUpKeyAriaLabel: "向上",
278
+ navigateDownKeyAriaLabel: "向下",
279
+ closeText: "关闭",
280
+ closeKeyAriaLabel: "退出"
281
+ }
282
+ };
283
+
284
+ //#endregion
285
+ //#region src/node/locales/index.ts
286
+ const SEARCH_LOCALES = [
287
+ [["en", "en-US"], enSearchLocale],
288
+ [[
289
+ "zh",
290
+ "zh-CN",
291
+ "zh-Hans",
292
+ "zh-Hant"
293
+ ], zhSearchLocale],
294
+ [["zh-TW"], zhTwSearchLocale],
295
+ [["de", "de-DE"], deSearchLocale],
296
+ [["fr", "fr-FR"], frSearchLocale],
297
+ [["ru", "ru-RU"], ruSearchLocale],
298
+ [["ja", "ja-JP"], jaSearchLocale]
299
+ ];
300
+
304
301
  //#endregion
305
302
  //#region src/node/searchPlugin.ts
306
303
  const __dirname = getDirname(import.meta.url);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuepress-plume/plugin-search",
3
3
  "type": "module",
4
- "version": "1.0.0-rc.162",
4
+ "version": "1.0.0-rc.164",
5
5
  "description": "The Plugin for VuePress 2 - local search",
6
6
  "author": "pengzhanbo <volodymyr@foxmail.com>",
7
7
  "license": "MIT",
@@ -40,7 +40,7 @@
40
40
  "chokidar": "4.0.3",
41
41
  "focus-trap": "^7.6.5",
42
42
  "mark.js": "^8.11.1",
43
- "minisearch": "^7.1.2",
43
+ "minisearch": "^7.2.0",
44
44
  "p-map": "^7.0.3",
45
45
  "vue": "^3.5.21"
46
46
  },