chore: naming consistency

This commit is contained in:
endiliey 2018-09-15 15:15:30 +08:00
parent 5eab627340
commit c132c7445f
11 changed files with 62 additions and 56 deletions

View file

@ -1,9 +1,9 @@
import {renderRoutes} from 'react-router-config'; import {renderRoutes} from 'react-router-config';
import routes from '@generated/routes'; // eslint-disable-line import routes from '@generated/routes'; // eslint-disable-line
import docsMetadata from '@generated/docsMetadata'; // eslint-disable-line import docsMetadatas from '@generated/docsMetadatas'; // eslint-disable-line
import pagesMetadata from '@generated/pagesMetadata'; // eslint-disable-line import pagesMetadatas from '@generated/pagesMetadatas'; // eslint-disable-line
import siteConfig from '@generated/siteConfig'; //eslint-disable-line import siteConfig from '@generated/siteConfig'; //eslint-disable-line
export default () => export default () =>
renderRoutes(routes, {docsMetadata, pagesMetadata, siteConfig}); renderRoutes(routes, {docsMetadatas, pagesMetadatas, siteConfig});

View file

@ -7,10 +7,10 @@ const {getSubFolder, idx} = require('../utils');
async function loadDocs({siteDir, docsDir, env, siteConfig}) { async function loadDocs({siteDir, docsDir, env, siteConfig}) {
// @tested - load all sidebars including versioned sidebars // @tested - load all sidebars including versioned sidebars
const allSidebars = loadSidebars({siteDir, env}); const docsSidebars = loadSidebars({siteDir, env});
// @tested - build the docs ordering such as next, previous, category and sidebar // @tested - build the docs ordering such as next, previous, category and sidebar
const order = createOrder(allSidebars); const order = createOrder(docsSidebars);
/* Settle versions & translations from environment */ /* Settle versions & translations from environment */
const translationEnabled = idx(env, ['translation', 'enabled']); const translationEnabled = idx(env, ['translation', 'enabled']);
@ -24,7 +24,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
(versioningEnabled && idx(env, ['versioning', 'versions'])) || []; (versioningEnabled && idx(env, ['versioning', 'versions'])) || [];
/* Prepare metadata container */ /* Prepare metadata container */
const metadatas = {}; const docsMetadatas = {};
/* metadata for default docs files */ /* metadata for default docs files */
const docsFiles = await globby(['**/*.md'], { const docsFiles = await globby(['**/*.md'], {
@ -49,7 +49,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
order, order,
siteConfig siteConfig
); );
metadatas[metadata.id] = metadata; docsMetadatas[metadata.id] = metadata;
}) })
); );
@ -80,7 +80,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
order, order,
siteConfig siteConfig
); );
metadatas[metadata.id] = metadata; docsMetadatas[metadata.id] = metadata;
}) })
); );
@ -98,27 +98,30 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
order, order,
siteConfig siteConfig
); );
metadatas[metadata.id] = metadata; docsMetadatas[metadata.id] = metadata;
}) })
); );
/* /*
Get the titles of the previous and next ids so that we can use them Get the titles of the previous and next ids so that we can use them
*/ */
Object.keys(metadatas).forEach(currentID => { Object.keys(docsMetadatas).forEach(currentID => {
const previousID = idx(metadatas, [currentID, 'previous']); const previousID = idx(docsMetadatas, [currentID, 'previous']);
if (previousID) { if (previousID) {
const previousTitle = idx(metadatas, [previousID, 'title']); const previousTitle = idx(docsMetadatas, [previousID, 'title']);
metadatas[currentID].previous_title = previousTitle || 'Previous'; docsMetadatas[currentID].previous_title = previousTitle || 'Previous';
} }
const nextID = idx(metadatas, [currentID, 'next']); const nextID = idx(docsMetadatas, [currentID, 'next']);
if (nextID) { if (nextID) {
const nextTitle = idx(metadatas, [nextID, 'title']); const nextTitle = idx(docsMetadatas, [nextID, 'title']);
metadatas[currentID].next_title = nextTitle || 'Next'; docsMetadatas[currentID].next_title = nextTitle || 'Next';
} }
}); });
return metadatas; return {
docsSidebars,
docsMetadatas
};
} }
module.exports = loadDocs; module.exports = loadDocs;

View file

@ -20,15 +20,15 @@ module.exports = async function load(siteDir) {
// docs // docs
const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath); const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath);
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); const {docsMetadatas, docsSidebars} = await loadDocs({siteDir, docsDir, env, siteConfig});
await generate( await generate(
'docsMetadata.js', 'docsMetadatas.js',
`export default ${JSON.stringify(docsMetadata, null, 2)};` `export default ${JSON.stringify(docsMetadatas, null, 2)};`
); );
/* Create source to metadata mapping */ /* Create source to metadata mapping */
const sourceToMetadata = {}; const sourceToMetadata = {};
Object.values(docsMetadata).forEach( Object.values(docsMetadatas).forEach(
({source, version, permalink, language}) => { ({source, version, permalink, language}) => {
sourceToMetadata[source] = { sourceToMetadata[source] = {
version, version,
@ -40,10 +40,10 @@ module.exports = async function load(siteDir) {
// pages // pages
const pagesDir = path.resolve(siteDir, 'pages'); const pagesDir = path.resolve(siteDir, 'pages');
const pagesMetadata = await loadPages(pagesDir); const pagesMetadatas = await loadPages(pagesDir);
await generate( await generate(
'pagesMetadata.js', 'pagesMetadatas.js',
`export default ${JSON.stringify(pagesMetadata, null, 2)};` `export default ${JSON.stringify(pagesMetadatas, null, 2)};`
); );
// resolve outDir // resolve outDir
@ -60,10 +60,11 @@ module.exports = async function load(siteDir) {
siteConfig, siteConfig,
siteDir, siteDir,
docsDir, docsDir,
docsMetadata, docsMetadatas,
docsSidebars,
env, env,
pagesDir, pagesDir,
pagesMetadata, pagesMetadatas,
outDir, outDir,
themePath, themePath,
baseUrl, baseUrl,

View file

@ -6,13 +6,13 @@ async function loadPages(pagesDir) {
cwd: pagesDir cwd: pagesDir
}); });
const pagesMetadata = await Promise.all( const pagesMetadatas = await Promise.all(
pagesFiles.map(async source => ({ pagesFiles.map(async source => ({
path: encodePath(fileToPath(source)), path: encodePath(fileToPath(source)),
source source
})) }))
); );
return pagesMetadata; return pagesMetadatas;
} }
module.exports = loadPages; module.exports = loadPages;

View file

@ -1,4 +1,4 @@
async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) { async function genRoutesConfig({docsMetadatas = {}, pagesMetadatas = []}) {
function genDocsRoute(metadata) { function genDocsRoute(metadata) {
const {permalink, source} = metadata; const {permalink, source} = metadata;
return ` return `
@ -38,7 +38,7 @@ async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) {
component: NotFound component: NotFound
}`; }`;
const docsRoutes = Object.values(docsMetadata) const docsRoutes = Object.values(docsMetadatas)
.map(genDocsRoute) .map(genDocsRoute)
.join(','); .join(',');
@ -48,7 +48,7 @@ async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) {
`import Loading from '@theme/Loading';\n` + `import Loading from '@theme/Loading';\n` +
`import Docs from '@theme/Docs';\n` + `import Docs from '@theme/Docs';\n` +
`import NotFound from '@theme/NotFound';\n` + `import NotFound from '@theme/NotFound';\n` +
`const routes = [${docsRoutes},${pagesMetadata `const routes = [${docsRoutes},${pagesMetadatas
.map(genPagesRoute) .map(genPagesRoute)
.join(',')}${notFoundRoute}\n];\n` + .join(',')}${notFoundRoute}\n];\n` +
`export default routes;\n` `export default routes;\n`

View file

@ -7,7 +7,7 @@ import Layout from '@theme/Layout'; // eslint-disable-line
export default class Docs extends React.Component { export default class Docs extends React.Component {
render() { render() {
const {route, siteConfig, docsMetadata, metadata} = this.props; const {route, siteConfig, docsMetadatas, metadata} = this.props;
return ( return (
<Layout {...this.props}> <Layout {...this.props}>
<Helmet> <Helmet>
@ -15,16 +15,16 @@ export default class Docs extends React.Component {
</Helmet> </Helmet>
<div> <div>
{metadata.previous && {metadata.previous &&
docsMetadata[metadata.previous] && ( docsMetadatas[metadata.previous] && (
<Link to={docsMetadata[metadata.previous].permalink}> <Link to={docsMetadatas[metadata.previous].permalink}>
<span> {metadata.previous_title}</span> <span> {metadata.previous_title}</span>
</Link> </Link>
)} )}
</div> </div>
<div> <div>
{metadata.next && {metadata.next &&
docsMetadata[metadata.next] && ( docsMetadatas[metadata.next] && (
<Link to={docsMetadata[metadata.next].permalink}> <Link to={docsMetadatas[metadata.next].permalink}>
<span>{metadata.next_title} </span> <span>{metadata.next_title} </span>
</Link> </Link>
)} )}

View file

@ -5,11 +5,11 @@ import styles from './styles.css';
/* eslint-disable react/prefer-stateless-function */ /* eslint-disable react/prefer-stateless-function */
export default class Layout extends React.Component { export default class Layout extends React.Component {
render() { render() {
const {children, pagesMetadata, docsMetadata = {}, location} = this.props; const {children, pagesMetadatas, docsMetadatas = {}, location} = this.props;
const docsLinks = Object.values(docsMetadata).map(data => ({ const docsLinks = Object.values(docsMetadatas).map(data => ({
path: `${data.permalink}` path: `${data.permalink}`
})); }));
const routeLinks = [...pagesMetadata, ...docsLinks].map( const routeLinks = [...pagesMetadatas, ...docsLinks].map(
data => data =>
data.path !== location.pathname && ( data.path !== location.pathname && (
<li key={data.path}> <li key={data.path}>

View file

@ -14,13 +14,13 @@ module.exports = function createServerConfig(props) {
// Workaround for Webpack 4 Bug (https://github.com/webpack/webpack/issues/6522) // Workaround for Webpack 4 Bug (https://github.com/webpack/webpack/issues/6522)
config.output.globalObject('this'); config.output.globalObject('this');
const {siteConfig, docsMetadata, pagesMetadata} = props; const {siteConfig, docsMetadatas, pagesMetadatas} = props;
// static site generator webpack plugin // static site generator webpack plugin
const docsLinks = Object.values(docsMetadata).map(data => ({ const docsLinks = Object.values(docsMetadatas).map(data => ({
path: `${data.permalink}` path: `${data.permalink}`
})); }));
const paths = [...docsLinks, ...pagesMetadata].map(data => data.path); const paths = [...docsLinks, ...pagesMetadatas].map(data => data.path);
config.plugin('siteGenerator').use(staticSiteGenerator, [ config.plugin('siteGenerator').use(staticSiteGenerator, [
{ {
entry: 'main', entry: 'main',

View file

@ -8,6 +8,8 @@ describe('loadConfig', () => {
expect(config).toEqual({ expect(config).toEqual({
baseUrl: '/', baseUrl: '/',
organizationName: 'endiliey', organizationName: 'endiliey',
customDocsPath: 'docs',
docsUrl: 'docs',
projectName: 'hello', projectName: 'hello',
tagline: 'Hello World', tagline: 'Hello World',
title: 'Hello' title: 'Hello'

View file

@ -5,28 +5,28 @@ describe('loadDocs', () => {
test('simple website', async () => { test('simple website', async () => {
const props = await loadSetup('simple'); const props = await loadSetup('simple');
const {siteDir, docsDir, env, siteConfig} = props; const {siteDir, docsDir, env, siteConfig} = props;
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
expect(docsMetadata).toMatchSnapshot(); expect(docsMetadatas).toMatchSnapshot();
}); });
test('versioned website', async () => { test('versioned website', async () => {
const props = await loadSetup('versioned'); const props = await loadSetup('versioned');
const {siteDir, docsDir, env, siteConfig} = props; const {siteDir, docsDir, env, siteConfig} = props;
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
expect(docsMetadata).toMatchSnapshot(); expect(docsMetadatas).toMatchSnapshot();
}); });
test('versioned & translated website', async () => { test('versioned & translated website', async () => {
const props = await loadSetup('transversioned'); const props = await loadSetup('transversioned');
const {siteDir, docsDir, env, siteConfig} = props; const {siteDir, docsDir, env, siteConfig} = props;
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
expect(docsMetadata).toMatchSnapshot(); expect(docsMetadatas).toMatchSnapshot();
}); });
test('translated website', async () => { test('translated website', async () => {
const props = await loadSetup('translated'); const props = await loadSetup('translated');
const {siteDir, docsDir, env, siteConfig} = props; const {siteDir, docsDir, env, siteConfig} = props;
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
expect(docsMetadata).toMatchSnapshot(); expect(docsMetadatas).toMatchSnapshot();
}); });
}); });

View file

@ -4,9 +4,9 @@ import path from 'path';
describe('loadPages', () => { describe('loadPages', () => {
test('valid pages', async () => { test('valid pages', async () => {
const pagesDir = path.join(__dirname, '__fixtures__', 'simple-pages'); const pagesDir = path.join(__dirname, '__fixtures__', 'simple-pages');
const pagesMetadata = await loadPages(pagesDir); const pagesMetadatas = await loadPages(pagesDir);
pagesMetadata.sort((a, b) => a.path > b.path); // because it was unordered pagesMetadatas.sort((a, b) => a.path > b.path); // because it was unordered
expect(pagesMetadata).toEqual([ expect(pagesMetadatas).toEqual([
{ {
path: '/', path: '/',
source: 'index.js' source: 'index.js'
@ -24,12 +24,12 @@ describe('loadPages', () => {
source: 'foo/index.js' source: 'foo/index.js'
} }
]); ]);
expect(pagesMetadata).not.toBeNull(); expect(pagesMetadatas).not.toBeNull();
}); });
test('invalid pages', async () => { test('invalid pages', async () => {
const nonExistingDir = path.join(__dirname, '__fixtures__', 'nonExisting'); const nonExistingDir = path.join(__dirname, '__fixtures__', 'nonExisting');
const pagesMetadata = await loadPages(nonExistingDir); const pagesMetadatas = await loadPages(nonExistingDir);
expect(pagesMetadata).toEqual([]); expect(pagesMetadatas).toEqual([]);
}); });
}); });