|
1 | 1 | const path = require('path') |
2 | | -const languages = require('./languages') |
3 | | -const versions = Object.keys(require('./all-versions')) |
4 | | -const createTree = require('./create-tree') |
5 | | -const nonEnterpriseDefaultVersion = require('./non-enterprise-default-version') |
6 | | -const englishPath = path.join(__dirname, '..', 'content') |
7 | 2 | const walk = require('walk-sync').entries |
8 | 3 | const Page = require('./page') |
9 | | - |
10 | | -// This function creates a nested object that can be accessed like this: |
11 | | -// siteTree[languageCode][version].childPages[<array of pages>].childPages[<array of pages>] (etc...) |
12 | | -async function loadTree () { |
13 | | - // We only need to initialize pages once per language (since pages don't change per version), so we do that |
14 | | - // first since it's the most expensive work. This gets us a nested object with pages attached that we can use |
15 | | - // as the basis for the siteTree after we do some versioning. |
16 | | - const rawTree = {} |
17 | | - await Promise.all(Object.values(languages) |
18 | | - .map(async (langObj) => { |
19 | | - rawTree[langObj.code] = await createTree(englishPath, langObj) |
20 | | - })) |
21 | | - |
22 | | - // Now that we have the paged tree, we can walk it for every version and do two operations: |
23 | | - // 1. Add a versioned href to every node (we can get this easily from the permalinks array). |
24 | | - // 2. Recurisvely drop any child pages that are not available in the current version. |
25 | | - // Note that order of languages and versions doesn't matter, but order of child page arrays DOES matter (for nav). |
26 | | - const siteTree = {} |
27 | | - await Promise.all(Object.keys(languages).map(async (langCode) => { |
28 | | - const treePerVersion = {} |
29 | | - |
30 | | - await Promise.all(versions.map(async (version) => { |
31 | | - // Yes, we are mutating the rawTree object here. |
32 | | - versionPages(rawTree[langCode]) |
33 | | - |
34 | | - // This step can't be asynchronous because the order of child pages matters. |
35 | | - function versionPages (item) { |
36 | | - // Add a versioned href as a convenience for use in layouts. |
37 | | - item.href = item.page.permalinks |
38 | | - .find(pl => pl.pageVersion === version || (pl.pageVersion === 'homepage' && version === nonEnterpriseDefaultVersion)) |
39 | | - |
40 | | - if (!item.childPages) return item |
41 | | - |
42 | | - // Drop child pages that do not apply to the current version |
43 | | - item.childPages = item.childPages.filter(childPage => childPage.page.applicableVersions.includes(version)) |
44 | | - item.childPages.forEach(childPage => versionPages(childPage)) |
45 | | - } |
46 | | - |
47 | | - treePerVersion[version] = rawTree[langCode] |
48 | | - })) |
49 | | - |
50 | | - siteTree[langCode] = treePerVersion |
51 | | - })) |
52 | | - |
53 | | - console.log(siteTree.en[nonEnterpriseDefaultVersion]) |
54 | | - |
55 | | - return siteTree |
56 | | -} |
57 | | - |
58 | | -async function loadPageListFromTree (tree) { |
59 | | - const siteTree = tree || await loadTree() |
60 | | - |
61 | | - // Traverse the tree of pages and create a simple array of pages. |
62 | | - // (We don't care about the language code or version here, so we can start two levels in.) |
63 | | - const collection = Object.values(siteTree).map(v => Object.values(v)).flat() |
64 | | - const result = [] |
65 | | - collectPages(collection, result) |
66 | | - |
67 | | - function collectPages (arr, result) { |
68 | | - arr.forEach(item => { |
69 | | - if (item.page) { |
70 | | - result.push(item.page) |
71 | | - } |
72 | | - if (item.childPages) { |
73 | | - collectPages(item.childPages, result) |
74 | | - } |
75 | | - }) |
76 | | - } |
77 | | - |
78 | | - return result |
79 | | -} |
| 4 | +const languages = require('./languages') |
80 | 5 |
|
81 | 6 | async function loadPageList () { |
82 | 7 | // load english pages |
@@ -141,8 +66,6 @@ async function loadPageMap (pageList) { |
141 | 66 | } |
142 | 67 |
|
143 | 68 | module.exports = { |
144 | | - loadTree, |
145 | | - // loadPages: loadPageListFromTree, |
146 | 69 | loadPages: loadPageList, |
147 | 70 | loadPageMap |
148 | 71 | } |
0 commit comments