-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgenerateSearch.js
66 lines (60 loc) · 1.45 KB
/
generateSearch.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { getBlogsMetadata } from "./getBlogPosts.js";
import widgetCatalog from "../public/widget-catalog/widgets.json" assert { type: "json" };
import fs from "fs";
import slugify from "../utils/slugify.js";
function writeSearch() {
const _posts = getBlogsMetadata()
.map(
({
draft,
title,
tags,
author,
longExcerpt,
shortExcerpt,
url,
_type,
}) => ({
draft,
title,
tags,
author,
longExcerpt,
shortExcerpt,
url,
_type,
})
)
.filter(({ draft }) => !draft);
const widgets = widgetCatalog.flatMap(([_, widgets]) =>
widgets
.map((widget) =>
widget.url
? {
category: widget.category,
title: widget.title,
url: `${slugify(widget.category)}/${widget.url}`,
keywords: widget.keywords,
_type: "widget",
}
: undefined
)
.filter(Boolean)
);
const workshops = {
title: "Workshops",
shortExcerpt: "We offer data science classes on request.",
tags: ["Workshops", "classes", "education"],
url: "/workshops",
_type: "workshops",
};
const results = [..._posts, ...widgets, workshops];
fs.writeFile("search.json", JSON.stringify(results), function (err) {
if (err) {
console.log(err);
return;
}
console.log("Search created.");
});
}
writeSearch();