« get me outta code hell

index.js « page « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/page/index.js
blob: 149503f0255472a3fc0917891f3bf62458b7f8d6 (plain)
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
/** @format */

// NB: This is the index for the page/ directory and contains exports for all
// other modules here! It's not the page spec for the homepage - see
// homepage.js for that.
//
// Each module published in this list should follow a particular format,
// including any of the following exports:
//
// condition({wikiData})
//     Returns a boolean indicating whether to process targets/writes (true) or
//     skip this page spec altogether (false). This is usually used for
//     selectively toggling pages according to site feature flags, though it may
//     also be used to e.g. skip out if no targets would be found (preventing
//     writeTargetless from generating an empty index page).
//
// targets({wikiData})
//     Gets the objects which this page's write() function should be called on.
//     Usually this will simply mean returning the appropriate thingData array,
//     but it may also apply filter/map/etc if useful.
//
// write(thing, {wikiData})
//     Provides descriptors for any page and data writes associated with the
//     given thing (which will be a value from the targets() array). This
//     includes page (HTML) writes, data (JSON) writes, etc. Notably, this
//     function does not perform any file operations itself; it only describes
//     the operations which will be processed elsewhere, once for each
//     translation language.  The write function also immediately transforms
//     any data which will be reused across writes of the same page, so that
//     this data is effectively cached (rather than recalculated for each
//     language/write).
//
// writeTargetless({wikiData})
//     Provides descriptors for page/data/etc writes which will be used
//     without concern for targets. This is usually used for writing index pages
//     which should be generated just once (rather than corresponding to
//     targets).
//
// As these modules are effectively the HTML templates for all site layout,
// common patterns may also be exported alongside the special exports above.
// These functions should be referenced only from adjacent modules, as they
// pertain only to site page generation.

export * as album from './album.js';
export * as albumCommentary from './album-commentary.js';
export * as artist from './artist.js';
export * as artistAlias from './artist-alias.js';
export * as flash from './flash.js';
export * as group from './group.js';
export * as homepage from './homepage.js';
export * as listing from './listing.js';
export * as news from './news.js';
export * as static from './static.js';
export * as tag from './tag.js';
export * as track from './track.js';