mirror of
https://git.boykissers.com/pawkey/pawkey-sk.git
synced 2025-12-20 04:04:16 +00:00
* refactor: add MarkerIdAssigner instead of processVueFile and remove transformedCodeCache object * chore: add minimatch, a glob matcher * chore: expose MarkerIdAssigner from plugin * Revert "chore: expose MarkerIdAssigner from plugin" This reverts commit 88c6d820f8635c35f1c15b4aac0987075d7cf8aa. * chore: add plugin to generate virtual module * chore: parse inlining earlier * chore: use virtual module in search * chore: use remove old generation * chore: fix type errors * chore: add patch to workaround vitejs/vite#19792 * chore: improve filtering files to process * chore: rename plugin * docs: add comment for plugin ordering * fix: unnecessary log * fix: spdx license header
44 lines
948 B
TypeScript
44 lines
948 B
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { searchIndexes as generated } from 'search-index:settings';
|
|
import type { GeneratedSearchIndexItem } from 'search-index:settings';
|
|
|
|
export type SearchIndexItem = {
|
|
id: string;
|
|
path?: string;
|
|
label: string;
|
|
keywords: string[];
|
|
icon?: string;
|
|
children?: SearchIndexItem[];
|
|
};
|
|
|
|
const rootMods = new Map(generated.map(item => [item.id, item]));
|
|
|
|
function walk(item: GeneratedSearchIndexItem) {
|
|
if (item.inlining) {
|
|
for (const id of item.inlining) {
|
|
const inline = rootMods.get(id);
|
|
if (inline) {
|
|
(item.children ??= []).push(inline);
|
|
rootMods.delete(id);
|
|
} else {
|
|
console.log('[Settings Search Index] Failed to inline', id);
|
|
}
|
|
}
|
|
}
|
|
|
|
for (const child of item.children ?? []) {
|
|
walk(child);
|
|
}
|
|
}
|
|
|
|
for (const item of generated) {
|
|
walk(item);
|
|
}
|
|
|
|
export const searchIndexes: SearchIndexItem[] = generated;
|
|
|