a tool for shared writing and social publishing
1import * as PageLexicons from "./src/pages";
2import { BlockLexicons } from "./src/blocks";
3import { PubLeafletDocument } from "./src/document";
4import * as PublicationLexicons from "./src/publication";
5import * as PollLexicons from "./src/polls";
6import * as InteractionsLexicons from "./src/interactions";
7import { ThemeLexicons } from "./src/theme";
8
9import * as fs from "fs";
10import * as path from "path";
11import { PubLeafletRichTextFacet } from "./src/facet";
12import { PubLeafletComment } from "./src/comment";
13import { PubLeafletAuthFullPermissions } from "./src/authFullPermissions";
14import { PubLeafletContent } from "./src/content";
15
16const outdir = path.join("lexicons", "pub", "leaflet");
17
18if (fs.existsSync(outdir)) {
19 fs.rmSync(outdir, { recursive: true });
20}
21fs.mkdirSync(outdir, { recursive: true });
22
23const lexicons = [
24 PubLeafletDocument,
25 PubLeafletContent,
26 PubLeafletComment,
27 PubLeafletRichTextFacet,
28 PubLeafletAuthFullPermissions,
29 PageLexicons.PubLeafletPagesLinearDocument,
30 PageLexicons.PubLeafletPagesCanvasDocument,
31 ...ThemeLexicons,
32 ...BlockLexicons,
33 ...Object.values(PublicationLexicons),
34 ...Object.values(PollLexicons),
35 ...Object.values(InteractionsLexicons),
36];
37
38// Write each lexicon to a file
39lexicons.forEach((lexicon) => {
40 let id = lexicon.id.split(".");
41 let folder = path.join(outdir, ...id.slice(2, -1));
42 if (!fs.existsSync(folder)) fs.mkdirSync(folder, { recursive: true });
43 const filename = path.join(folder, id[id.length - 1] + ".json");
44 fs.writeFileSync(filename, JSON.stringify(lexicon, null, 2));
45});