diff --git a/lib/get-mini-toc-items.js b/lib/get-mini-toc-items.js index 537ea5cd12..73152536e6 100644 --- a/lib/get-mini-toc-items.js +++ b/lib/get-mini-toc-items.js @@ -1,6 +1,8 @@ import cheerio from 'cheerio' import { range } from 'lodash-es' +import renderContent from './render-content/index.js' + export default function getMiniTocItems(html, maxHeadingLevel = 2, headingScope = '') { const $ = cheerio.load(html, { xmlMode: true }) @@ -123,3 +125,25 @@ function minimalMiniToc(toc) { return minimal }) } + +export async function getAutomatedPageMiniTocItems( + items, + context, + depth = 2, + markdownHeading = '' +) { + const titles = + markdownHeading + + items + .map((item) => { + let title = '' + for (let i = 0; i < depth; i++) { + title += '#' + } + return title + ` ${item}\n` + }) + .join('') + + const toc = await renderContent(titles, context) + return getMiniTocItems(toc, depth, '') +} diff --git a/lib/rest/index.js b/lib/rest/index.js index 5b0fa4bc0c..0c0dc8db11 100644 --- a/lib/rest/index.js +++ b/lib/rest/index.js @@ -3,8 +3,7 @@ import fs from 'fs' import path from 'path' import { readCompressedJsonFileFallback } from '../read-json-file.js' -import renderContent from '../render-content/index.js' -import getMiniTocItems from '../get-mini-toc-items.js' +import { getAutomatedPageMiniTocItems } from '../get-mini-toc-items.js' import { allVersions } from '../all-versions.js' import languages from '../languages.js' @@ -98,12 +97,8 @@ export async function getRestMiniTocItems( if (!restOperationData.get(language).get(version).get(category).get(subCategory)) { const languageTree = restOperationData.get(language) - let toc = '' - // only a string with the raw HTML of each heading level 3 - // is needed to generate the toc - const titles = restOperations.map((operation) => `### ${operation.title}\n`).join('') - toc += await renderContent(titles, context) - const restOperationsMiniTocItems = getMiniTocItems(toc, 3, '') + const titles = restOperations.map((operation) => operation.title) + const restOperationsMiniTocItems = await getAutomatedPageMiniTocItems(titles, context, 3) languageTree.get(version).get(category).set(subCategory, { restOperationsMiniTocItems, }) diff --git a/lib/search/indexes/github-docs-dotcom-en-records.json.br b/lib/search/indexes/github-docs-dotcom-en-records.json.br index 7cbd529cae..a833564d53 100644 --- a/lib/search/indexes/github-docs-dotcom-en-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e37926cd793686d6883ea4ae47505bfe06abc6a44b0b588797173ebc6bf05534 -size 1439878 +oid sha256:7ce7ea2e9adb4628a850aa4ef242a011a6794948c7a6f7b2498ab2b58b986c5b +size 1442042 diff --git a/lib/search/indexes/github-docs-dotcom-en.json.br b/lib/search/indexes/github-docs-dotcom-en.json.br index f80a1a2e51..5cde1b22c1 100644 --- a/lib/search/indexes/github-docs-dotcom-en.json.br +++ b/lib/search/indexes/github-docs-dotcom-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:67a7c71852dc089a8b20edd68ef4e1d70ae46606e4a6e43152b042f3e36e90fd -size 5510865 +oid sha256:2bf2cb72f82ad9a85c5dca3d166870a14c01e9282546fc01cb181f0d8db72887 +size 5526839 diff --git a/package.json b/package.json index f5a8fdd5f0..b9b4123ab1 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ "browser-test": "cross-env BROWSER=1 NODE_OPTIONS=--experimental-vm-modules JEST_PUPPETEER_CONFIG=jest-puppeteer.config.cjs jest tests/browser/browser.js", "build": "next build", "debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon --inspect server.js", - "dev": "npm start", + "dev": "cross-env DISABLE_RENDERING_CACHE=true npm start", "lint": "eslint '**/*.{js,mjs,ts,tsx}'", "lint-translation": "cross-env NODE_OPTIONS=--experimental-vm-modules TEST_TRANSLATION=true jest tests/linting/lint-files.js", "prepare": "husky install",