38 lines
836 B
TypeScript
38 lines
836 B
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import type { GeneratedSearchIndexItem } from 'search-index';
|
|
|
|
export type SearchIndexItem = {
|
|
id: string;
|
|
parentId?: string;
|
|
path?: string;
|
|
label: string;
|
|
keywords: string[];
|
|
texts: string[];
|
|
icon?: string;
|
|
};
|
|
|
|
export function genSearchIndexes(generated: GeneratedSearchIndexItem[]): SearchIndexItem[] {
|
|
const rootMods = new Map(generated.map(item => [item.id, item]));
|
|
|
|
// link inlining here
|
|
for (const item of generated) {
|
|
if (item.inlining) {
|
|
for (const id of item.inlining) {
|
|
const inline = rootMods.get(id);
|
|
if (inline) {
|
|
inline.parentId = item.id;
|
|
inline.path = item.path;
|
|
} else {
|
|
console.log('[Settings Search Index] Failed to inline', id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return generated;
|
|
}
|