mirror of
https://github.com/withastro/astro.git
synced 2025-01-27 22:19:04 -05:00
d08ddaf5b9
* chore: `yarn` => `pnpm` * docs: `yarn` => `pnpm` * chore(ci): yarn => pnpm * chore(ci): update pnpm cache path * fix: add missing deps * fix: add missing deps * test: add package.json to all test fixtures * chore: improve hoisting behavior * chore: move turbo into package.json * chore: update npmrc * fix: add missing `debug` dependency * chore: remove prepare script * test: fix new tests * fix: fully resolve renderer paths and `astro/internal` path * chore: update lockfile * chore: remove log * fix: resolve renderers in vite-plugin-jsx * fix: prefer public-hoist-pattern to shamefully-hoist * chore: ignore @babel/core peer warning * chore: update dependencies * test: add autoprefixer as explicit dep * chore: update `.npmrc` file in examples * chore: update dependencies * fix: resolve renderer dependencies in static build * fix: static build renderer resolution * chore: fix smoke tests * chore: hoist autoprefixer * chore: update lockfile * attempt: use full file:// path on Windows * attempt: use astro/internal * attempt: optimize astro/internal * attempt: expose ./internal.js * chore: add missing package.json files * attempt: resolve astro/internal path * chore: tidy package.json * chore: update lockfile * chore: update deps * chore: update deps * chore: yarn -> pnpm * attempt: explicit /@fs urls * attempt: explicit /@fs urls * chore: update all examples for pnpm * chore: fix hoisting for with-vite-plugin-pwa * chore(ci): fix sharp install * chore: update with-vite-plugin-pwa example * fix: pin vite-plugin-pwa to 0.11.11 * fix: add workbox-window to vite-plugin-pwa deps * refactor: use pnpm update --recursive Co-authored-by: JuanM04 <me@juanm04.com> * chore: yarn => pnpm * chore: yarn => pnpm * fix: update smoke test to skip examples which don't work in static build * update lockfile * chore: update .npmrc files * chore: update lockfile * fix: smoke script * chore: update .npmrc file * fix: return to shamefully-hoist (shamefully) * chore: update lockfile * fix(smoke): ignore scripts for smoke tests * fix: update example to disable renderers * chore: bump version * chore(ci): fix smoke tests * attempt: disable --frozen-lockfile for smoke tests * chore: update smoke test * chore: fix rebase issue * chore: update lockfile * fix: smoke tests * fix(ci): run external smoke tests first * fix(ci): run syntax * chore: update lockfile * fix(ci): ensure submodules are up-to-date * fix(ci): ensure submodules are up-to-date * chore: update lockfile * chore: update for webapi * chore: silence node:* warnings * chore: update deps * fix(ci): persist generated webapi assets * fix(ci): webapi build script * chore(ci): remove custom node caching * chore: keep turbo.json * chore: update turbo, ignore create-astro * chore: update deps * fix(ci): test command * chore(ci): update test script Co-authored-by: JuanM04 <me@juanm04.com>
37 lines
827 B
TypeScript
37 lines
827 B
TypeScript
import { visit } from 'unist-util-visit';
|
|
import slugger from 'github-slugger';
|
|
|
|
/** */
|
|
export default function createCollectHeaders() {
|
|
const headers: any[] = [];
|
|
|
|
function rehypeCollectHeaders() {
|
|
return function (tree: any) {
|
|
visit(tree, (node) => {
|
|
if (node.type !== 'element') return;
|
|
const { tagName } = node;
|
|
if (tagName[0] !== 'h') return;
|
|
const [_, level] = tagName.match(/h([0-6])/) ?? [];
|
|
if (!level) return;
|
|
const depth = Number.parseInt(level);
|
|
|
|
let text = '';
|
|
|
|
visit(node, 'text', (child) => {
|
|
text += child.value;
|
|
});
|
|
|
|
let slug = node?.properties?.id || slugger.slug(text);
|
|
|
|
node.properties = node.properties || {};
|
|
node.properties.id = slug;
|
|
headers.push({ depth, slug, text });
|
|
});
|
|
};
|
|
}
|
|
|
|
return {
|
|
headers,
|
|
rehypeCollectHeaders,
|
|
};
|
|
}
|