mirror of
https://github.com/GenderDysphoria/GenderDysphoria.fyi.git
synced 2025-11-25 20:42:40 +00:00
Added support for loading posts
This commit is contained in:
@@ -1,64 +1,8 @@
|
||||
const glob = require('./lib/glob');
|
||||
const { groupBy, keyBy, filter, find, get, memoize } = require('lodash');
|
||||
const { ROOT, kind, KIND } = require('./resolve');
|
||||
const File = require('./file');
|
||||
const Asset = require('./asset');
|
||||
const Page = require('./page');
|
||||
const Promise = require('bluebird');
|
||||
const { ROOT } = require('./resolve');
|
||||
|
||||
const KIND_MAP = {
|
||||
[KIND.PAGE]: Page,
|
||||
[KIND.ASSET]: Asset,
|
||||
[KIND.OTHER]: File,
|
||||
};
|
||||
const Files = require('./files');
|
||||
|
||||
module.exports = exports = async function loadPublicFiles () {
|
||||
const files = await Promise.map(glob('public/**/*', { cwd: ROOT, nodir: true }), (filepath) => {
|
||||
const k = kind(filepath);
|
||||
const F = KIND_MAP[k];
|
||||
const f = new F(filepath);
|
||||
if (f.kind === KIND.PAGE && f.preprocessed) return false;
|
||||
return f;
|
||||
}).filter(Boolean);
|
||||
|
||||
const {
|
||||
[KIND.PAGE]: pages,
|
||||
[KIND.ASSET]: assets,
|
||||
} = groupBy(files, 'kind');
|
||||
|
||||
function within (dir) {
|
||||
const subset = filter(files, { dir });
|
||||
|
||||
const getTitlecard = memoize(() =>
|
||||
get(find(files, { name: 'titlecard' }), [ 0, 'url' ]),
|
||||
);
|
||||
|
||||
const {
|
||||
[KIND.PAGE]: subpages,
|
||||
[KIND.ASSET]: subassets,
|
||||
} = groupBy(subset, 'kind');
|
||||
|
||||
const webready = subassets && keyBy(subassets.map((a) => a.webready()), 'name');
|
||||
|
||||
return {
|
||||
all: subset,
|
||||
get titlecard () { return getTitlecard; },
|
||||
get pages () {
|
||||
return subpages;
|
||||
},
|
||||
get assets () {
|
||||
return webready;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
all: files,
|
||||
pages,
|
||||
assets,
|
||||
for: memoize(within),
|
||||
get tasks () {
|
||||
return files.map((a) => a.tasks()).flat(1);
|
||||
},
|
||||
};
|
||||
return new Files(await glob('public/**/*', { cwd: ROOT, nodir: true }));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user