blume 2.1.3 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +134 -0
- package/README.md +4 -4
- package/dist/cli/{chunk-y4msrwm9.js → chunk-080mfch6.js} +15 -15
- package/dist/cli/{chunk-gfc5fqvf.js → chunk-1ch3ct3r.js} +18 -18
- package/dist/cli/{chunk-gfc5fqvf.js.map → chunk-1ch3ct3r.js.map} +1 -1
- package/dist/cli/{chunk-32khwcb6.js → chunk-2ssh60qh.js} +42 -69
- package/dist/cli/{chunk-32khwcb6.js.map → chunk-2ssh60qh.js.map} +9 -10
- package/dist/cli/{chunk-9qzgg6mj.js → chunk-34wap3ed.js} +3 -3
- package/dist/cli/{chunk-k3gr1nm9.js → chunk-40vk8kgf.js} +13 -16
- package/dist/cli/{chunk-k3gr1nm9.js.map → chunk-40vk8kgf.js.map} +3 -3
- package/dist/cli/chunk-487b95qy.js +329 -0
- package/dist/cli/chunk-487b95qy.js.map +13 -0
- package/dist/cli/chunk-4zxh25hc.js +157 -0
- package/dist/cli/chunk-4zxh25hc.js.map +10 -0
- package/dist/cli/chunk-69rjf786.js +146 -0
- package/dist/cli/chunk-69rjf786.js.map +11 -0
- package/dist/cli/{chunk-dqhg54mr.js → chunk-9h8mh2tk.js} +3 -3
- package/dist/cli/{chunk-dqhg54mr.js.map → chunk-9h8mh2tk.js.map} +2 -2
- package/dist/cli/{chunk-bqxaqn5p.js → chunk-9jqmq5hv.js} +8 -8
- package/dist/cli/{chunk-bqxaqn5p.js.map → chunk-9jqmq5hv.js.map} +1 -1
- package/dist/cli/{chunk-dv2z0rzf.js → chunk-aafhwx74.js} +38 -13
- package/dist/cli/{chunk-dv2z0rzf.js.map → chunk-aafhwx74.js.map} +5 -4
- package/dist/cli/{chunk-desvm72z.js → chunk-b680sv30.js} +22 -26
- package/dist/cli/chunk-b680sv30.js.map +13 -0
- package/dist/cli/{chunk-0w6hs479.js → chunk-beb0z983.js} +30 -18
- package/dist/cli/chunk-beb0z983.js.map +10 -0
- package/dist/cli/{chunk-1f882900.js → chunk-c5bjxq8v.js} +2 -2
- package/dist/cli/chunk-e1n41w9m.js +155 -0
- package/dist/cli/chunk-e1n41w9m.js.map +11 -0
- package/dist/cli/{chunk-sc93apfs.js → chunk-etckvbrh.js} +17 -17
- package/dist/cli/{chunk-sc93apfs.js.map → chunk-etckvbrh.js.map} +2 -2
- package/dist/cli/{chunk-bxwhtvw8.js → chunk-f260jdrn.js} +5 -5
- package/dist/cli/{chunk-74wfhv79.js → chunk-fnxgtjeq.js} +1 -1
- package/dist/cli/{chunk-ms9z66nz.js → chunk-gwy55cx3.js} +2 -2
- package/dist/cli/{chunk-ms9z66nz.js.map → chunk-gwy55cx3.js.map} +2 -2
- package/dist/cli/{chunk-dhwtqnnd.js → chunk-gxhcf2hs.js} +2 -2
- package/dist/cli/{chunk-tfycddbt.js → chunk-h0qwdbem.js} +2 -2
- package/dist/cli/{chunk-nbyvgnnm.js → chunk-hktq4j5r.js} +109 -49
- package/dist/cli/chunk-hktq4j5r.js.map +36 -0
- package/dist/cli/{chunk-twy7psdz.js → chunk-hn3g2b89.js} +14 -10
- package/dist/cli/chunk-hn3g2b89.js.map +10 -0
- package/dist/cli/{chunk-j1x92mx9.js → chunk-j4nfgn2j.js} +1 -1
- package/dist/cli/{chunk-dpy8qdjf.js → chunk-k45sq16q.js} +74 -183
- package/dist/cli/chunk-k45sq16q.js.map +18 -0
- package/dist/cli/{chunk-5cmts6dv.js → chunk-kmswjxj9.js} +7 -7
- package/dist/cli/{chunk-5cmts6dv.js.map → chunk-kmswjxj9.js.map} +1 -1
- package/dist/cli/{chunk-36bxs9c7.js → chunk-nqna8dzp.js} +27 -23
- package/dist/cli/chunk-nqna8dzp.js.map +10 -0
- package/dist/cli/{chunk-a57yh0h9.js → chunk-p834rkcn.js} +7 -7
- package/dist/cli/{chunk-a57yh0h9.js.map → chunk-p834rkcn.js.map} +1 -1
- package/dist/cli/{chunk-60hz265r.js → chunk-ppa6mg4d.js} +24 -11
- package/dist/cli/chunk-ppa6mg4d.js.map +10 -0
- package/dist/cli/{chunk-s0bdnc7v.js → chunk-q1wwrxzw.js} +5 -4
- package/dist/cli/chunk-q1wwrxzw.js.map +10 -0
- package/dist/cli/{chunk-ave1wcbr.js → chunk-qcyxkj44.js} +1 -1
- package/dist/cli/{chunk-124fvmzq.js → chunk-r5nm9w0c.js} +11183 -8806
- package/dist/cli/{chunk-124fvmzq.js.map → chunk-r5nm9w0c.js.map} +82 -66
- package/dist/cli/{chunk-ckrcm08h.js → chunk-rtvgmg2j.js} +48 -62
- package/dist/cli/{chunk-ckrcm08h.js.map → chunk-rtvgmg2j.js.map} +4 -5
- package/dist/cli/{chunk-297ajdcv.js → chunk-t2h8pwy1.js} +6 -6
- package/dist/cli/{chunk-297ajdcv.js.map → chunk-t2h8pwy1.js.map} +3 -3
- package/dist/cli/{chunk-gxtg6ed2.js → chunk-x60e15st.js} +21 -21
- package/dist/cli/{chunk-gxtg6ed2.js.map → chunk-x60e15st.js.map} +3 -3
- package/dist/cli/{chunk-58bt3hag.js → chunk-x7bh6d9j.js} +4 -4
- package/dist/cli/{chunk-hvcxng5f.js → chunk-ydqzkhjn.js} +6 -6
- package/dist/cli/{chunk-kdpzw38a.js → chunk-yg8ckc3g.js} +95 -7
- package/dist/cli/chunk-yg8ckc3g.js.map +11 -0
- package/dist/cli/{chunk-0pmb4tr4.js → chunk-zxd5jrgx.js} +1205 -222
- package/dist/cli/chunk-zxd5jrgx.js.map +44 -0
- package/dist/cli/index.js +78 -42
- package/dist/cli/index.js.map +7 -6
- package/dist/types/ai/changelog-components.d.ts +18 -0
- package/dist/types/ai/changelog-markdown.d.ts +12 -0
- package/dist/types/ai/openapi-components.d.ts +7 -7
- package/dist/types/ai/operation-details.d.ts +39 -0
- package/dist/types/ai/relative-links.d.ts +3 -1
- package/dist/types/ai/serializers.d.ts +6 -4
- package/dist/types/analytics/head.d.ts +4 -2
- package/dist/types/analytics/script.d.ts +8 -2
- package/dist/types/components/content/youtube.d.ts +20 -0
- package/dist/types/components/layout/nav-utils.d.ts +8 -0
- package/dist/types/components/openapi/example-panels.d.ts +33 -0
- package/dist/types/components/openapi/helpers.d.ts +53 -11
- package/dist/types/components/openapi/snippets.d.ts +7 -1
- package/dist/types/core/alert-diagnostics.d.ts +10 -0
- package/dist/types/core/builtin-tags.d.ts +16 -0
- package/dist/types/core/changelog-list.d.ts +48 -0
- package/dist/types/core/closest-match.d.ts +6 -0
- package/dist/types/core/code-fence-diagnostics.d.ts +18 -0
- package/dist/types/core/code-fences.d.ts +8 -1
- package/dist/types/core/config-input.d.ts +38 -6
- package/dist/types/core/content-assets.d.ts +16 -18
- package/dist/types/core/data.d.ts +6 -2
- package/dist/types/core/diagnostics.d.ts +14 -0
- package/dist/types/core/directive-diagnostics.d.ts +22 -8
- package/dist/types/core/former-routes.d.ts +14 -0
- package/dist/types/core/github.d.ts +5 -4
- package/dist/types/core/heading-markers.d.ts +65 -2
- package/dist/types/core/hidden-pages.d.ts +3 -0
- package/dist/types/core/includes.d.ts +23 -0
- package/dist/types/core/last-modified.d.ts +18 -6
- package/dist/types/core/links.d.ts +42 -2
- package/dist/types/core/load-module.d.ts +19 -4
- package/dist/types/core/manifest.d.ts +14 -1
- package/dist/types/core/markdown-mirrors.d.ts +22 -0
- package/dist/types/core/mcp-clients.d.ts +47 -0
- package/dist/types/core/mdx-elements.d.ts +32 -0
- package/dist/types/core/mdx-syntax.d.ts +100 -0
- package/dist/types/core/meta-diagnostics.d.ts +7 -0
- package/dist/types/core/meta.d.ts +32 -5
- package/dist/types/core/nav-diagnostics.d.ts +16 -2
- package/dist/types/core/navigation.d.ts +13 -0
- package/dist/types/core/ordering-prefix.d.ts +6 -0
- package/dist/types/core/pinned-ids.d.ts +23 -0
- package/dist/types/core/project-graph.d.ts +9 -1
- package/dist/types/core/redirect-patterns.d.ts +18 -0
- package/dist/types/core/relative-files.d.ts +31 -0
- package/dist/types/core/schema.d.ts +322 -11
- package/dist/types/core/sources/normalize.d.ts +101 -9
- package/dist/types/core/sources/types.d.ts +16 -0
- package/dist/types/core/static-files.d.ts +10 -0
- package/dist/types/core/static-host.d.ts +42 -0
- package/dist/types/core/svg-images.d.ts +26 -0
- package/dist/types/core/syntax-diagnostics.d.ts +14 -0
- package/dist/types/core/types.d.ts +42 -1
- package/dist/types/deploy/generated-files.d.ts +41 -0
- package/dist/types/deploy/redirects.d.ts +21 -7
- package/dist/types/markdown/code-title.d.ts +9 -5
- package/dist/types/markdown/directives.d.ts +8 -0
- package/dist/types/markdown/fence-language.d.ts +51 -0
- package/dist/types/markdown/fence-meta.d.ts +5 -0
- package/dist/types/markdown/github-alerts.d.ts +35 -0
- package/dist/types/openapi/asyncapi.d.ts +6 -5
- package/dist/types/openapi/checks.d.ts +10 -5
- package/dist/types/openapi/model.d.ts +55 -8
- package/dist/types/openapi/parse.d.ts +4 -1
- package/dist/types/ratelimit/index.d.ts +2 -0
- package/dist/types/ratelimit/memory.d.ts +1 -1
- package/dist/types/ratelimit/schema.d.ts +40 -0
- package/dist/types/ratelimit/unkey.d.ts +48 -0
- package/dist/types/sources/filesystem.d.ts +14 -4
- package/dist/types/sources/mdx-remote.d.ts +6 -3
- package/dist/types/sources/registry.d.ts +3 -3
- package/dist/types/theme/color.d.ts +33 -0
- package/dist/types/theme/palette.d.ts +122 -0
- package/docs/01-quickstart.mdx +1 -1
- package/docs/02-deployment.mdx +24 -8
- package/docs/04-migrating.mdx +16 -4
- package/docs/advanced/changelog.mdx +27 -1
- package/docs/advanced/skills.mdx +1 -1
- package/docs/cli/audit.mdx +1 -1
- package/docs/cli/doctor.mdx +2 -2
- package/docs/cli/evals.mdx +1 -1
- package/docs/cli/index.mdx +4 -2
- package/docs/cli/validate.mdx +10 -7
- package/docs/configuration/analytics.mdx +2 -0
- package/docs/configuration/customization.mdx +3 -1
- package/docs/configuration/index.mdx +7 -6
- package/docs/configuration/rate-limiting.mdx +20 -1
- package/docs/configuration/theming.mdx +5 -1
- package/docs/content/components.mdx +26 -6
- package/docs/content/frontmatter.mdx +1 -1
- package/docs/content/i18n.mdx +1 -1
- package/docs/content/includes.mdx +6 -2
- package/docs/content/index.mdx +11 -1
- package/docs/content/islands.mdx +2 -0
- package/docs/content/meta.mdx +9 -3
- package/docs/content/navigation.mdx +14 -6
- package/docs/content/sources/obsidian.mdx +1 -1
- package/docs/content/sources/remote-mdx.mdx +3 -1
- package/docs/content/syntax.mdx +76 -8
- package/docs/content/variables.mdx +3 -1
- package/docs/discoverability/agent-discovery.mdx +1 -1
- package/docs/discoverability/json-api.mdx +1 -1
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/markdown.mdx +2 -2
- package/docs/discoverability/mcp.mdx +40 -8
- package/docs/discoverability/open-graph.mdx +1 -1
- package/docs/discoverability/sitemap-and-robots.mdx +1 -1
- package/docs/references/graphql.mdx +2 -0
- package/docs/references/openapi.mdx +45 -7
- package/package.json +4 -4
- package/skills/blume/SKILL.md +2 -2
- package/skills/blume-migrate/SKILL.md +51 -29
- package/skills/blume-migrate/references/docsify.md +262 -0
- package/skills/blume-migrate/references/docus.md +298 -0
- package/skills/blume-migrate/references/docusaurus.md +5 -5
- package/skills/blume-migrate/references/fern.md +327 -0
- package/skills/blume-migrate/references/fumadocs.md +1 -1
- package/skills/blume-migrate/references/gitbook.md +267 -0
- package/skills/blume-migrate/references/github-wiki.md +259 -0
- package/skills/blume-migrate/references/jekyll.md +253 -0
- package/skills/blume-migrate/references/mdbook.md +256 -0
- package/skills/blume-migrate/references/mintlify.md +5 -5
- package/skills/blume-migrate/references/mkdocs.md +236 -0
- package/skills/blume-migrate/references/monorepo.md +20 -8
- package/skills/blume-migrate/references/nextra.md +5 -5
- package/skills/blume-migrate/references/readme.md +257 -0
- package/skills/blume-migrate/references/redocly.md +198 -0
- package/skills/blume-migrate/references/starlight.md +3 -3
- package/skills/blume-migrate/references/vitepress.md +204 -0
- package/skills/blume-migrate/references/vuepress.md +271 -0
- package/skills/blume-migrate/scripts/docsify-codemod.mjs +2387 -0
- package/skills/blume-migrate/scripts/docus-codemod.mjs +2542 -0
- package/skills/blume-migrate/scripts/fern-codemod.mjs +2633 -0
- package/skills/blume-migrate/scripts/github-wiki-codemod.mjs +2808 -0
- package/skills/blume-migrate/scripts/include-excerpts.mjs +649 -0
- package/skills/blume-migrate/scripts/jekyll-codemod.mjs +3649 -0
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +17 -13
- package/skills/blume-migrate/scripts/mkdocs-codemod.mjs +2526 -0
- package/skills/blume-migrate/scripts/operation-routes.mjs +508 -0
- package/skills/blume-migrate/scripts/pin-heading-ids.mjs +1049 -0
- package/skills/blume-migrate/scripts/readme-codemod.mjs +4139 -0
- package/skills/blume-migrate/scripts/vitepress-codemod.mjs +1511 -0
- package/src/ai/changelog-components.ts +24 -0
- package/src/ai/changelog-markdown.ts +45 -41
- package/src/ai/component-markdown.ts +22 -9
- package/src/ai/llms.ts +36 -5
- package/src/ai/markdown.ts +2 -2
- package/src/ai/openapi-components.ts +25 -9
- package/src/ai/operation-details.ts +208 -0
- package/src/ai/relative-links.ts +48 -8
- package/src/ai/serializers.ts +7 -6
- package/src/ai/site-skill.ts +6 -2
- package/src/analytics/head.ts +11 -5
- package/src/analytics/script.ts +13 -3
- package/src/astro/generate.ts +47 -11
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +27 -1
- package/src/astro/mdx-source-errors.ts +46 -0
- package/src/astro/templates.ts +93 -189
- package/src/audit/checks/redirects.ts +5 -1
- package/src/audit/redirects.ts +36 -19
- package/src/audit/report.ts +22 -9
- package/src/audit/run.ts +12 -28
- package/src/audit/terms.ts +23 -0
- package/src/audit/url.ts +2 -2
- package/src/cli/build-failure.ts +256 -7
- package/src/cli/command-meta.ts +1 -1
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/build.ts +12 -3
- package/src/cli/commands/check.ts +13 -2
- package/src/cli/commands/dev.ts +1 -1
- package/src/cli/commands/doctor.ts +4 -2
- package/src/cli/commands/init.ts +3 -3
- package/src/cli/commands/preview.ts +17 -1
- package/src/cli/commands/validate.ts +22 -10
- package/src/cli/prepare.ts +1 -1
- package/src/cli/preview-pages.ts +161 -0
- package/src/cli/required-secrets.ts +0 -1
- package/src/cli/unknown-flags.ts +1 -42
- package/src/components/code-copy.ts +51 -0
- package/src/components/code-language.ts +75 -0
- package/src/components/content/AccordionItem.astro +16 -1
- package/src/components/content/Callout.astro +11 -1
- package/src/components/content/Changelog.astro +189 -0
- package/src/components/content/CodeBlock.astro +8 -11
- package/src/components/content/Tabs.astro +16 -2
- package/src/components/content/YouTube.astro +6 -4
- package/src/components/content/code-block.ts +33 -0
- package/src/components/content/content-strings.ts +5 -1
- package/src/components/content/inline-markdown.ts +35 -8
- package/src/components/content/youtube.ts +49 -7
- package/src/components/layout/Analytics.astro +5 -1
- package/src/components/layout/NavTree.astro +8 -3
- package/src/components/layout/PageActions.astro +81 -23
- package/src/components/layout/RootLayout.astro +35 -32
- package/src/components/layout/SiteFooter.astro +31 -8
- package/src/components/layout/nav-utils.ts +14 -0
- package/src/components/layout/search/pagefind.ts +2 -1
- package/src/components/openapi/Operation.astro +4 -0
- package/src/components/openapi/PanelTabs.astro +9 -3
- package/src/components/openapi/RequestBody.astro +42 -8
- package/src/components/openapi/RequestPanel.astro +34 -53
- package/src/components/openapi/example-panels.ts +110 -0
- package/src/components/openapi/helpers.ts +195 -20
- package/src/components/openapi/operation-model.ts +63 -26
- package/src/components/openapi/request.ts +13 -0
- package/src/components/openapi/snippets.ts +14 -2
- package/src/core/alert-diagnostics.ts +89 -0
- package/src/core/builtin-tags.ts +76 -0
- package/src/core/changelog-list.ts +87 -0
- package/src/core/closest-match.ts +41 -0
- package/src/core/code-fence-diagnostics.ts +267 -0
- package/src/core/code-fences.ts +43 -7
- package/src/core/component-diagnostics.ts +65 -12
- package/src/core/config-input.ts +39 -5
- package/src/core/config.ts +46 -1
- package/src/core/content-assets.ts +64 -144
- package/src/core/data.ts +10 -3
- package/src/core/diagnostics.ts +36 -3
- package/src/core/directive-diagnostics.ts +265 -47
- package/src/core/former-routes.ts +46 -0
- package/src/core/git-ignored.ts +53 -0
- package/src/core/github.ts +5 -4
- package/src/core/heading-markers.ts +156 -2
- package/src/core/hidden-pages.ts +64 -0
- package/src/core/includes.ts +181 -41
- package/src/core/last-modified.ts +47 -10
- package/src/core/links.ts +438 -83
- package/src/core/load-module.ts +98 -9
- package/src/core/manifest.ts +12 -9
- package/src/core/markdown-mirrors.ts +52 -0
- package/src/core/mcp-clients.ts +87 -0
- package/src/core/mdx-elements.ts +153 -0
- package/src/core/mdx-syntax.ts +377 -0
- package/src/core/meta-diagnostics.ts +134 -0
- package/src/core/meta.ts +154 -55
- package/src/core/nav-diagnostics.ts +41 -4
- package/src/core/navigation.ts +70 -10
- package/src/core/ordering-prefix.ts +22 -2
- package/src/core/pinned-ids.ts +141 -0
- package/src/core/project-graph.ts +221 -29
- package/src/core/redirect-patterns.ts +41 -0
- package/src/core/relative-files.ts +145 -0
- package/src/core/schema.ts +110 -6
- package/src/core/sources/mdx-remote.ts +75 -14
- package/src/core/sources/normalize.ts +885 -179
- package/src/core/sources/notion.ts +5 -4
- package/src/core/sources/obsidian.ts +2 -5
- package/src/core/sources/types.ts +17 -0
- package/src/core/static-files.ts +40 -0
- package/src/core/static-host.ts +125 -0
- package/src/core/svg-images.ts +98 -0
- package/src/core/syntax-diagnostics.ts +491 -0
- package/src/core/types.ts +43 -1
- package/src/deploy/artifacts.ts +2 -28
- package/src/deploy/generated-files.ts +128 -0
- package/src/deploy/platforms/vercel.ts +25 -1
- package/src/deploy/redirects.ts +43 -16
- package/src/deploy/sitemap.ts +2 -1
- package/src/markdown/base-links.ts +87 -6
- package/src/markdown/code-title.ts +29 -13
- package/src/markdown/content-assets.ts +210 -0
- package/src/markdown/directives.ts +69 -5
- package/src/markdown/fence-language.ts +106 -0
- package/src/markdown/fence-meta.ts +42 -0
- package/src/markdown/github-alerts.ts +172 -0
- package/src/markdown/heading-anchors.ts +265 -56
- package/src/markdown/include.ts +30 -3
- package/src/markdown/index.ts +145 -40
- package/src/markdown/prompt-text.ts +95 -0
- package/src/markdown/relative-links.ts +37 -2
- package/src/markdown/route-snapshot.ts +22 -12
- package/src/markdown/svg-fallback.ts +51 -0
- package/src/markdown/title-heading.ts +134 -0
- package/src/migrate/migrate.ts +127 -2
- package/src/og/card.ts +14 -4
- package/src/openapi/asyncapi.ts +14 -6
- package/src/openapi/checks.ts +160 -15
- package/src/openapi/model.ts +172 -33
- package/src/openapi/parse.ts +13 -4
- package/src/openapi/render-mdx.ts +55 -9
- package/src/openapi/source.ts +87 -6
- package/src/ratelimit/index.ts +2 -0
- package/src/ratelimit/memory.ts +1 -1
- package/src/ratelimit/runtime.ts +81 -0
- package/src/ratelimit/schema.ts +2 -0
- package/src/ratelimit/unkey.ts +61 -0
- package/src/registry/eject.ts +0 -1
- package/src/registry/registry.ts +1 -1
- package/src/search/documents.ts +10 -2
- package/src/sources/filesystem.ts +28 -3
- package/src/sources/mdx-remote.ts +7 -15
- package/src/theme/color.ts +14 -0
- package/src/theme/entry.ts +22 -1
- package/src/theme/palette.ts +74 -1
- package/dist/cli/chunk-0pmb4tr4.js.map +0 -35
- package/dist/cli/chunk-0w6hs479.js.map +0 -10
- package/dist/cli/chunk-150jk7km.js +0 -52
- package/dist/cli/chunk-150jk7km.js.map +0 -10
- package/dist/cli/chunk-36bxs9c7.js.map +0 -10
- package/dist/cli/chunk-53jqw8z0.js +0 -89
- package/dist/cli/chunk-53jqw8z0.js.map +0 -10
- package/dist/cli/chunk-60hz265r.js.map +0 -10
- package/dist/cli/chunk-desvm72z.js.map +0 -14
- package/dist/cli/chunk-dpy8qdjf.js.map +0 -17
- package/dist/cli/chunk-es8h0v3j.js +0 -441
- package/dist/cli/chunk-es8h0v3j.js.map +0 -11
- package/dist/cli/chunk-kdpzw38a.js.map +0 -11
- package/dist/cli/chunk-nbyvgnnm.js.map +0 -36
- package/dist/cli/chunk-s0bdnc7v.js.map +0 -10
- package/dist/cli/chunk-twy7psdz.js.map +0 -10
- package/dist/cli/chunk-ydp3065p.js +0 -64
- package/dist/cli/chunk-ydp3065p.js.map +0 -10
- /package/dist/cli/{chunk-y4msrwm9.js.map → chunk-080mfch6.js.map} +0 -0
- /package/dist/cli/{chunk-9qzgg6mj.js.map → chunk-34wap3ed.js.map} +0 -0
- /package/dist/cli/{chunk-1f882900.js.map → chunk-c5bjxq8v.js.map} +0 -0
- /package/dist/cli/{chunk-bxwhtvw8.js.map → chunk-f260jdrn.js.map} +0 -0
- /package/dist/cli/{chunk-74wfhv79.js.map → chunk-fnxgtjeq.js.map} +0 -0
- /package/dist/cli/{chunk-dhwtqnnd.js.map → chunk-gxhcf2hs.js.map} +0 -0
- /package/dist/cli/{chunk-tfycddbt.js.map → chunk-h0qwdbem.js.map} +0 -0
- /package/dist/cli/{chunk-j1x92mx9.js.map → chunk-j4nfgn2j.js.map} +0 -0
- /package/dist/cli/{chunk-ave1wcbr.js.map → chunk-qcyxkj44.js.map} +0 -0
- /package/dist/cli/{chunk-58bt3hag.js.map → chunk-x7bh6d9j.js.map} +0 -0
- /package/dist/cli/{chunk-hvcxng5f.js.map → chunk-ydqzkhjn.js.map} +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
compileEveryRedirect,
|
|
4
|
+
matchCompiledRedirect,
|
|
5
|
+
requestPath,
|
|
6
|
+
platformRedirects,
|
|
7
|
+
distDir,
|
|
8
|
+
deployPlatform,
|
|
9
|
+
resolveProjectContext,
|
|
10
|
+
loadConfig
|
|
11
|
+
} from "./chunk-r5nm9w0c.js";
|
|
12
|
+
import {
|
|
13
|
+
normalizeBasePath,
|
|
14
|
+
stripBasePath
|
|
15
|
+
} from "./chunk-zccbjcj0.js";
|
|
16
|
+
import {
|
|
17
|
+
commandMeta,
|
|
18
|
+
normalizeHost,
|
|
19
|
+
logger
|
|
20
|
+
} from "./index.js";
|
|
21
|
+
import {
|
|
22
|
+
publicFolder,
|
|
23
|
+
trailingSlashAnswer,
|
|
24
|
+
answerRequestsFirst,
|
|
25
|
+
refuseIfEjected
|
|
26
|
+
} from "./chunk-e1n41w9m.js";
|
|
27
|
+
import {
|
|
28
|
+
deployOutputDir
|
|
29
|
+
} from "./chunk-k45sq16q.js";
|
|
30
|
+
import {
|
|
31
|
+
parsePort
|
|
32
|
+
} from "./chunk-fnxgtjeq.js";
|
|
33
|
+
|
|
34
|
+
// src/cli/commands/preview.ts
|
|
35
|
+
import { existsSync } from "node:fs";
|
|
36
|
+
import { preview } from "astro";
|
|
37
|
+
import { defineCommand } from "citty";
|
|
38
|
+
import { join as join2 } from "pathe";
|
|
39
|
+
|
|
40
|
+
// src/cli/preview-pages.ts
|
|
41
|
+
import { readFileSync, statSync } from "node:fs";
|
|
42
|
+
import { Server } from "node:http";
|
|
43
|
+
import { join } from "pathe";
|
|
44
|
+
var isDirectory = (path) => {
|
|
45
|
+
try {
|
|
46
|
+
return statSync(path).isDirectory();
|
|
47
|
+
} catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var previewPageUrl = (distDir, base, url) => {
|
|
52
|
+
const queryAt = url.search(/[?#]/u);
|
|
53
|
+
const pathname = queryAt === -1 ? url : url.slice(0, queryAt);
|
|
54
|
+
if (pathname.endsWith("/")) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
let route;
|
|
58
|
+
try {
|
|
59
|
+
route = decodeURIComponent(stripBasePath(base, pathname));
|
|
60
|
+
} catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const page = join(distDir, route);
|
|
64
|
+
if (!page.startsWith(`${distDir}/`)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return isDirectory(`${page}.html`) === true && isDirectory(join(page, "index.html")) === false ? `${pathname}/index.html${queryAt === -1 ? "" : url.slice(queryAt)}` : null;
|
|
68
|
+
};
|
|
69
|
+
var previewRedirects = (config, runtimeDir) => {
|
|
70
|
+
if (config.redirects.length === 0) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
let manifest;
|
|
74
|
+
try {
|
|
75
|
+
manifest = JSON.parse(readFileSync(join(runtimeDir, "blume.manifest.json"), "utf-8"));
|
|
76
|
+
} catch {
|
|
77
|
+
manifest = { routes: [] };
|
|
78
|
+
}
|
|
79
|
+
return compileEveryRedirect(platformRedirects({ config, manifest }));
|
|
80
|
+
};
|
|
81
|
+
var previewAnswer = (routing, request) => {
|
|
82
|
+
const url = request.url ?? "/";
|
|
83
|
+
const redirect = matchCompiledRedirect(routing.redirects, requestPath(url));
|
|
84
|
+
if (redirect) {
|
|
85
|
+
return { kind: "redirect", location: redirect[0], status: redirect[1] };
|
|
86
|
+
}
|
|
87
|
+
const slash = trailingSlashAnswer(request, routing.base, routing.isPublicFolder);
|
|
88
|
+
if (slash) {
|
|
89
|
+
return slash;
|
|
90
|
+
}
|
|
91
|
+
const page = previewPageUrl(routing.distDir, routing.base, url);
|
|
92
|
+
return page === null ? null : { kind: "rewrite", url: page };
|
|
93
|
+
};
|
|
94
|
+
var servePreview = (preview, routing) => {
|
|
95
|
+
if (!(("server" in preview) && preview.server instanceof Server)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
answerRequestsFirst(preview.server, (request) => previewAnswer(routing, request));
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// src/cli/commands/preview.ts
|
|
102
|
+
var previewCommand = defineCommand({
|
|
103
|
+
args: {
|
|
104
|
+
host: { description: "Network host to bind.", type: "string" },
|
|
105
|
+
port: { description: "Port to listen on.", type: "string" }
|
|
106
|
+
},
|
|
107
|
+
meta: commandMeta.preview,
|
|
108
|
+
async run({ args }) {
|
|
109
|
+
const root = process.cwd();
|
|
110
|
+
await refuseIfEjected(root, "preview");
|
|
111
|
+
const { config } = await loadConfig(root);
|
|
112
|
+
const context = resolveProjectContext(root, config);
|
|
113
|
+
const { deployment } = config;
|
|
114
|
+
const platform = deployPlatform(deployment);
|
|
115
|
+
if (deployment.options.output === "server" && platform.previewDeploy) {
|
|
116
|
+
logger.error(`\`blume preview\` can't serve a ${deployment.kind}() server build: ${platform.astro?.package} has no local preview server. Run \`blume dev\` to try the site locally, or deploy a preview with \`${platform.previewDeploy}\`.`);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
if (!existsSync(join2(context.outDir, "astro.config.mjs")) || !existsSync(deployOutputDir(config, context))) {
|
|
120
|
+
logger.error("No build found. Run `blume build` first.");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
const server = await preview({
|
|
124
|
+
logLevel: "info",
|
|
125
|
+
root: context.outDir,
|
|
126
|
+
server: {
|
|
127
|
+
host: normalizeHost(args.host),
|
|
128
|
+
port: parsePort(args.port)
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
if (deployment.options.output === "static") {
|
|
132
|
+
servePreview(server, {
|
|
133
|
+
base: normalizeBasePath(deployment.options.base),
|
|
134
|
+
distDir: distDir(context),
|
|
135
|
+
isPublicFolder: publicFolder(join2(context.root, "public")),
|
|
136
|
+
redirects: previewRedirects(config, context.outDir)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
export {
|
|
142
|
+
previewCommand
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
//# debugId=A1D72D1423B1BFEC64756E2164756E21
|
|
146
|
+
//# sourceMappingURL=chunk-69rjf786.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/commands/preview.ts", "../src/cli/preview-pages.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { existsSync } from \"node:fs\";\n\nimport { preview } from \"astro\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { normalizeBasePath } from \"../../core/base-path.ts\";\nimport { loadConfig } from \"../../core/config.ts\";\nimport { resolveProjectContext } from \"../../core/project.ts\";\nimport { publicFolder } from \"../../core/static-host.ts\";\nimport { deployOutputDir } from \"../../deploy/adapter-output.ts\";\nimport { deployPlatform } from \"../../deploy/platforms/index.ts\";\nimport { distDir } from \"../../deploy/platforms/paths.ts\";\nimport { parsePort } from \"../args.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { refuseIfEjected } from \"../eject-scripts.ts\";\nimport { normalizeHost } from \"../host-args.ts\";\nimport { logger } from \"../log.ts\";\nimport { previewRedirects, servePreview } from \"../preview-pages.ts\";\n\nexport const previewCommand = defineCommand({\n args: {\n host: { description: \"Network host to bind.\", type: \"string\" },\n port: { description: \"Port to listen on.\", type: \"string\" },\n },\n meta: commandMeta.preview,\n async run({ args }) {\n const root = process.cwd();\n await refuseIfEjected(root, \"preview\");\n const { config } = await loadConfig(root);\n const context = resolveProjectContext(root, config);\n\n // Astro previews a server build through its adapter's preview entrypoint,\n // and the Vercel and Netlify adapters declare none, so Astro would throw\n // mid-command. Say so up front, with what to run instead.\n const { deployment } = config;\n const platform = deployPlatform(deployment);\n if (deployment.options.output === \"server\" && platform.previewDeploy) {\n logger.error(\n `\\`blume preview\\` can't serve a ${deployment.kind}() server build: ${platform.astro?.package} has no local preview server. Run \\`blume dev\\` to try the site locally, or deploy a preview with \\`${platform.previewDeploy}\\`.`\n );\n process.exit(1);\n }\n\n // `blume dev` writes `.blume/astro.config.mjs` too, so the runtime alone\n // doesn't mean there's anything to serve: the build output must exist.\n if (\n !existsSync(join(context.outDir, \"astro.config.mjs\")) ||\n !existsSync(deployOutputDir(config, context))\n ) {\n logger.error(\"No build found. Run `blume build` first.\");\n process.exit(1);\n }\n\n const server = await preview({\n logLevel: \"info\",\n root: context.outDir,\n server: {\n // `normalizeHost` maps a bare `--host` (citty parses it as \"\") to\n // `true` so Vite binds all interfaces instead of the hostname \"\".\n host: normalizeHost(args.host),\n port: parsePort(args.port),\n },\n });\n // A static build is served by Vite, which knows nothing of the host's\n // redirect rules or trailing-slash handling, and whose HTML fallback\n // would answer a page with the redirect page of a redirect from its\n // `.html` URL.\n if (deployment.options.output === \"static\") {\n servePreview(server, {\n base: normalizeBasePath(deployment.options.base),\n distDir: distDir(context),\n isPublicFolder: publicFolder(join(context.root, \"public\")),\n redirects: previewRedirects(config, context.outDir),\n });\n }\n },\n});\n",
|
|
6
|
+
"import { readFileSync, statSync } from \"node:fs\";\nimport { Server } from \"node:http\";\nimport type { IncomingMessage } from \"node:http\";\n\nimport type { PreviewServer } from \"astro\";\nimport { join } from \"pathe\";\n\nimport { stripBasePath } from \"../core/base-path.ts\";\nimport {\n compileEveryRedirect,\n matchCompiledRedirect,\n requestPath,\n} from \"../core/redirect-patterns.ts\";\nimport type { CompiledRedirect } from \"../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport {\n answerRequestsFirst,\n trailingSlashAnswer,\n} from \"../core/static-host.ts\";\nimport type { HostAnswer } from \"../core/static-host.ts\";\nimport type { BlumeManifest } from \"../core/types.ts\";\nimport { platformRedirects } from \"../deploy/redirects.ts\";\n\n/**\n * Astro previews a static build on Vite's preview server, which serves the\n * files in `dist/` and nothing a host would add: the redirect rules the build\n * writes for it (`_redirects`, `vercel.json`), which carry every pattern\n * redirect, and the host's handling of a trailing slash (see\n * `core/static-host.ts`). Its HTML fallback also answers a slashless `/guide`\n * with `guide.html` whenever that path exists. It checks with\n * `fs.existsSync`, which a directory passes too. A redirect from\n * `/guide.html` (a migrated site's URL) has its redirect page written to\n * `dist/guide.html/index.html`, a directory, so the fallback rewrites\n * `/guide` to it, Astro's own preview rewrite appends `/index.html`, and the\n * page at `/guide` becomes a redirect page that refreshes to itself forever.\n * Hosts look up files, so they serve the page at `guide/index.html`.\n */\n\n/** Whether `path` is a directory (true) or a file (false); null when absent. */\nconst isDirectory = (path: string): boolean | null => {\n try {\n return statSync(path).isDirectory();\n } catch {\n return null;\n }\n};\n\n/**\n * The URL to serve a preview request from in place of the one Vite's HTML\n * fallback would pick, or null to leave the request alone: the page's own\n * `index.html` when `dist/<route>.html` is a directory, the redirect page of\n * a redirect from `<route>.html`. `base` is the normalized\n * `deployment.base`, which the URL carries and `dist/` doesn't.\n */\nexport const previewPageUrl = (\n distDir: string,\n base: string,\n url: string\n): string | null => {\n const queryAt = url.search(/[?#]/u);\n const pathname = queryAt === -1 ? url : url.slice(0, queryAt);\n if (pathname.endsWith(\"/\")) {\n return null;\n }\n let route: string;\n try {\n route = decodeURIComponent(stripBasePath(base, pathname));\n } catch {\n return null;\n }\n const page = join(distDir, route);\n if (!page.startsWith(`${distDir}/`)) {\n return null;\n }\n return isDirectory(`${page}.html`) === true &&\n isDirectory(join(page, \"index.html\")) === false\n ? `${pathname}/index.html${queryAt === -1 ? \"\" : url.slice(queryAt)}`\n : null;\n};\n\n/**\n * The configured redirects as a static build's host files carry them, for\n * the preview to answer as the host would. They're based against the pages\n * of the last generated project (`blume.manifest.json` in the runtime dir),\n * which tell a page from a public file and say which moved pages' Markdown\n * copies move with them.\n */\nexport const previewRedirects = (\n config: ResolvedConfig,\n runtimeDir: string\n): CompiledRedirect[] => {\n if (config.redirects.length === 0) {\n return [];\n }\n let manifest: Pick<BlumeManifest, \"routes\">;\n try {\n manifest = JSON.parse(\n readFileSync(join(runtimeDir, \"blume.manifest.json\"), \"utf-8\")\n );\n } catch {\n manifest = { routes: [] };\n }\n return compileEveryRedirect(platformRedirects({ config, manifest }));\n};\n\n/** What a static build's preview answers like a host would. */\nexport interface PreviewRouting {\n /** The normalized `deployment.base` (`\"\"` at the root). */\n base: string;\n distDir: string;\n /**\n * Whether a path names a folder of HTML in the project's `public/`, served\n * at its slashed URL (see `publicFolder`).\n */\n isPublicFolder: (path: string) => boolean;\n /** Every configured redirect, as the build's host files carry them. */\n redirects: readonly CompiledRedirect[];\n}\n\n/**\n * How the preview answers a request ahead of Vite: a configured redirect\n * first, as the host's rules do, then the trailing slash, then the page\n * Vite's fallback would miss ({@link previewPageUrl}).\n */\nexport const previewAnswer = (\n routing: PreviewRouting,\n request: Pick<IncomingMessage, \"method\" | \"url\">\n): HostAnswer | null => {\n const url = request.url ?? \"/\";\n const redirect = matchCompiledRedirect(routing.redirects, requestPath(url));\n if (redirect) {\n return { kind: \"redirect\", location: redirect[0], status: redirect[1] };\n }\n const slash = trailingSlashAnswer(\n request,\n routing.base,\n routing.isPublicFolder\n );\n if (slash) {\n return slash;\n }\n const page = previewPageUrl(routing.distDir, routing.base, url);\n return page === null ? null : { kind: \"rewrite\", url: page };\n};\n\n/**\n * Answer each request with {@link previewAnswer} before Vite's middleware\n * sees it. Astro's static preview hands back Vite's HTTP server beside the\n * documented fields; without one, the server is left as it is.\n */\nexport const servePreview = (\n preview: PreviewServer,\n routing: PreviewRouting\n): void => {\n if (!(\"server\" in preview && preview.server instanceof Server)) {\n return;\n }\n answerRequestsFirst(preview.server, (request) =>\n previewAnswer(routing, request)\n );\n};\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA,iBAAS;;;ACJT;AACA;AAIA;AAkCA,IAAM,cAAc,CAAC,SAAiC;AAAA,EACpD,IAAI;AAAA,IACF,OAAO,SAAS,IAAI,EAAE,YAAY;AAAA,IAClC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAWJ,IAAM,iBAAiB,CAC5B,SACA,MACA,QACkB;AAAA,EAClB,MAAM,UAAU,IAAI,OAAO,OAAO;AAAA,EAClC,MAAM,WAAW,YAAY,KAAK,MAAM,IAAI,MAAM,GAAG,OAAO;AAAA,EAC5D,IAAI,SAAS,SAAS,GAAG,GAAG;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QAAQ,mBAAmB,cAAc,MAAM,QAAQ,CAAC;AAAA,IACxD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,MAAM,OAAO,KAAK,SAAS,KAAK;AAAA,EAChC,IAAI,CAAC,KAAK,WAAW,GAAG,UAAU,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAY,GAAG,WAAW,MAAM,QACrC,YAAY,KAAK,MAAM,YAAY,CAAC,MAAM,QACxC,GAAG,sBAAsB,YAAY,KAAK,KAAK,IAAI,MAAM,OAAO,MAChE;AAAA;AAUC,IAAM,mBAAmB,CAC9B,QACA,eACuB;AAAA,EACvB,IAAI,OAAO,UAAU,WAAW,GAAG;AAAA,IACjC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,WAAW,KAAK,MACd,aAAa,KAAK,YAAY,qBAAqB,GAAG,OAAO,CAC/D;AAAA,IACA,MAAM;AAAA,IACN,WAAW,EAAE,QAAQ,CAAC,EAAE;AAAA;AAAA,EAE1B,OAAO,qBAAqB,kBAAkB,EAAE,QAAQ,SAAS,CAAC,CAAC;AAAA;AAsB9D,IAAM,gBAAgB,CAC3B,SACA,YACsB;AAAA,EACtB,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,WAAW,sBAAsB,QAAQ,WAAW,YAAY,GAAG,CAAC;AAAA,EAC1E,IAAI,UAAU;AAAA,IACZ,OAAO,EAAE,MAAM,YAAY,UAAU,SAAS,IAAI,QAAQ,SAAS,GAAG;AAAA,EACxE;AAAA,EACA,MAAM,QAAQ,oBACZ,SACA,QAAQ,MACR,QAAQ,cACV;AAAA,EACA,IAAI,OAAO;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,eAAe,QAAQ,SAAS,QAAQ,MAAM,GAAG;AAAA,EAC9D,OAAO,SAAS,OAAO,OAAO,EAAE,MAAM,WAAW,KAAK,KAAK;AAAA;AAQtD,IAAM,eAAe,CAC1B,SACA,YACS;AAAA,EACT,IAAI,GAAE,YAAY,YAAW,QAAQ,kBAAkB,SAAS;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,oBAAoB,QAAQ,QAAQ,CAAC,YACnC,cAAc,SAAS,OAAO,CAChC;AAAA;;;AD3IK,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM,EAAE,aAAa,yBAAyB,MAAM,SAAS;AAAA,IAC7D,MAAM,EAAE,aAAa,sBAAsB,MAAM,SAAS;AAAA,EAC5D;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IACzB,MAAM,gBAAgB,MAAM,SAAS;AAAA,IACrC,QAAQ,WAAW,MAAM,WAAW,IAAI;AAAA,IACxC,MAAM,UAAU,sBAAsB,MAAM,MAAM;AAAA,IAKlD,QAAQ,eAAe;AAAA,IACvB,MAAM,WAAW,eAAe,UAAU;AAAA,IAC1C,IAAI,WAAW,QAAQ,WAAW,YAAY,SAAS,eAAe;AAAA,MACpE,OAAO,MACL,mCAAmC,WAAW,wBAAwB,SAAS,OAAO,8GAA8G,SAAS,kBAC/M;AAAA,MACA,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAIA,IACE,CAAC,WAAW,MAAK,QAAQ,QAAQ,kBAAkB,CAAC,KACpD,CAAC,WAAW,gBAAgB,QAAQ,OAAO,CAAC,GAC5C;AAAA,MACA,OAAO,MAAM,0CAA0C;AAAA,MACvD,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,MAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU;AAAA,MACV,MAAM,QAAQ;AAAA,MACd,QAAQ;AAAA,QAGN,MAAM,cAAc,KAAK,IAAI;AAAA,QAC7B,MAAM,UAAU,KAAK,IAAI;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,IAKD,IAAI,WAAW,QAAQ,WAAW,UAAU;AAAA,MAC1C,aAAa,QAAQ;AAAA,QACnB,MAAM,kBAAkB,WAAW,QAAQ,IAAI;AAAA,QAC/C,SAAS,QAAQ,OAAO;AAAA,QACxB,gBAAgB,aAAa,MAAK,QAAQ,MAAM,QAAQ,CAAC;AAAA,QACzD,WAAW,iBAAiB,QAAQ,QAAQ,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;AAAA;AAEJ,CAAC;",
|
|
9
|
+
"debugId": "A1D72D1423B1BFEC64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -212,7 +212,7 @@ var registry = [
|
|
|
212
212
|
slot: "Feedback"
|
|
213
213
|
}),
|
|
214
214
|
layoutComponent({
|
|
215
|
-
description: "The site footer: a row of links, social icons,
|
|
215
|
+
description: "The site footer: a copyright line, a row of links, social icons, and the Cookie settings link.",
|
|
216
216
|
file: "SiteFooter.astro",
|
|
217
217
|
name: "footer",
|
|
218
218
|
slot: "Footer"
|
|
@@ -223,5 +223,5 @@ var findItem = (name) => registry.find((item) => item.name === name);
|
|
|
223
223
|
|
|
224
224
|
export { packageSrc, registry, findItem };
|
|
225
225
|
|
|
226
|
-
//# debugId=
|
|
227
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# debugId=C83E2C96A43B459064756E2164756E21
|
|
227
|
+
//# sourceMappingURL=chunk-9h8mh2tk.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/registry/registry.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { join } from \"pathe\";\n\nimport { packageRoot } from \"../core/package-root.ts\";\n\n/** A file copied into the user's project by `blume add`. */\nexport interface RegistryFile {\n /** Path to the source file, relative to the blume package `src` directory. */\n source: string;\n /** Destination path relative to the project root. */\n target: string;\n /** Rewrite the file's relative imports to `blume/*` specifiers on copy. */\n rewrite?: boolean;\n}\n\nexport interface RegistryItem {\n name: string;\n description: string;\n files: RegistryFile[];\n /** Lines printed after install to guide the user. */\n postInstall: string[];\n}\n\n/** Absolute path to the blume package `src` directory (the copy source root). */\nexport const packageSrc = join(packageRoot(), \"src\");\n\n/**\n * A built-in layout component offered as editable source. `blume add` rewrites\n * its relative imports to `blume/*`, so it renders identically to the built-in\n * until the user changes it, then registers under the matching `layout` slot.\n */\nconst layoutComponent = (config: {\n name: string;\n description: string;\n /** Source basename under `src/components/layout`. */\n file: string;\n /** Layout slot key, also the import name in the post-install hint. */\n slot: string;\n}): RegistryItem => {\n const target = `components/blume/${config.file}`;\n return {\n description: config.description,\n files: [\n {\n rewrite: true,\n source: `components/layout/${config.file}`,\n target,\n },\n ],\n name: config.name,\n postInstall: [\n \"Register it in components.ts:\",\n ' import { defineComponents } from \"blume\";',\n ` import ${config.slot} from \"./${target}\";`,\n \"\",\n ` export default defineComponents({ layout: { ${config.slot} } });`,\n \"\",\n \"It imports the rest from `blume/*`, so it matches the built-in until you edit it.\",\n ],\n };\n};\n\n/**\n * A built-in MDX content component offered as editable source. Like\n * {@link layoutComponent}, but registered under the `mdx` map (the tag you write\n * in `.mdx`) rather than a `layout` slot.\n */\nconst contentComponent = (config: {\n name: string;\n description: string;\n /** Source basename under `src/components/content`. */\n file: string;\n /** MDX tag / component name, also the import name in the post-install hint. */\n tag: string;\n}): RegistryItem => {\n const target = `components/blume/${config.file}`;\n return {\n description: config.description,\n files: [\n {\n rewrite: true,\n source: `components/content/${config.file}`,\n target,\n },\n ],\n name: config.name,\n postInstall: [\n \"Register it in components.ts:\",\n ' import { defineComponents } from \"blume\";',\n ` import ${config.tag} from \"./${target}\";`,\n \"\",\n ` export default defineComponents({ mdx: { ${config.tag} } });`,\n \"\",\n \"It imports the rest from `blume/*`, so it matches the built-in until you edit it.\",\n ],\n };\n};\n\n/** Every user-facing content component, by `blume add` name → source basename. */\nconst CONTENT_COMPONENTS: {\n name: string;\n description: string;\n file: string;\n tag: string;\n}[] = [\n {\n description: \"Aside for notes, tips, and warnings.\",\n file: \"Callout.astro\",\n name: \"callout\",\n tag: \"Callout\",\n },\n {\n description: \"A linkable card with icon, title, and body.\",\n file: \"Card.astro\",\n name: \"card\",\n tag: \"Card\",\n },\n {\n description: \"A responsive grid of cards.\",\n file: \"CardGroup.astro\",\n name: \"card-group\",\n tag: \"CardGroup\",\n },\n {\n description: \"Tabbed code blocks for multiple languages.\",\n file: \"CodeGroup.astro\",\n name: \"code-group\",\n tag: \"CodeGroup\",\n },\n {\n description: \"A small status/label badge.\",\n file: \"Badge.astro\",\n name: \"badge\",\n tag: \"Badge\",\n },\n {\n description: \"A numbered list of steps.\",\n file: \"Steps.astro\",\n name: \"steps\",\n tag: \"Steps\",\n },\n {\n description: \"A single step within Steps.\",\n file: \"Step.astro\",\n name: \"step\",\n tag: \"Step\",\n },\n {\n description: \"A tabbed content panel.\",\n file: \"Tabs.astro\",\n name: \"tabs\",\n tag: \"Tabs\",\n },\n {\n description: \"A single tab within Tabs.\",\n file: \"Tab.astro\",\n name: \"tab\",\n tag: \"Tab\",\n },\n {\n description: \"A collapsible accordion group.\",\n file: \"Accordion.astro\",\n name: \"accordion\",\n tag: \"Accordion\",\n },\n {\n description: \"A single item within an Accordion.\",\n file: \"AccordionItem.astro\",\n name: \"accordion-item\",\n tag: \"AccordionItem\",\n },\n {\n description: \"A multi-column layout.\",\n file: \"Columns.astro\",\n name: \"columns\",\n tag: \"Columns\",\n },\n {\n description: \"A single column within Columns.\",\n file: \"Column.astro\",\n name: \"column\",\n tag: \"Column\",\n },\n {\n description: \"A bordered frame around an image or embed.\",\n file: \"Frame.astro\",\n name: \"frame\",\n tag: \"Frame\",\n },\n {\n description: \"An inline expand/collapse disclosure.\",\n file: \"Expandable.astro\",\n name: \"expandable\",\n tag: \"Expandable\",\n },\n {\n description: \"A titled content panel.\",\n file: \"Panel.astro\",\n name: \"panel\",\n tag: \"Panel\",\n },\n {\n description: \"A hover tooltip.\",\n file: \"Tooltip.astro\",\n name: \"tooltip\",\n tag: \"Tooltip\",\n },\n {\n description: \"A compact linkable tile.\",\n file: \"Tile.astro\",\n name: \"tile\",\n tag: \"Tile\",\n },\n {\n description: \"A styled prompt / terminal block.\",\n file: \"Prompt.astro\",\n name: \"prompt\",\n tag: \"Prompt\",\n },\n {\n description: \"A responsive, privacy-friendly YouTube embed.\",\n file: \"YouTube.astro\",\n name: \"youtube\",\n tag: \"YouTube\",\n },\n];\n\n/** The built-in, Blume-owned source registry. */\nexport const registry: RegistryItem[] = [\n layoutComponent({\n description: \"The top navigation bar (logo, search, nav links).\",\n file: \"Header.astro\",\n name: \"header\",\n slot: \"Header\",\n }),\n layoutComponent({\n description: \"The sidebar navigation tree.\",\n file: \"NavTree.astro\",\n name: \"sidebar\",\n slot: \"Sidebar\",\n }),\n layoutComponent({\n description: \"The breadcrumb trail shown above page content.\",\n file: \"Breadcrumbs.astro\",\n name: \"breadcrumbs\",\n slot: \"Breadcrumbs\",\n }),\n layoutComponent({\n description: \"The on-this-page table of contents.\",\n file: \"TableOfContents.astro\",\n name: \"table-of-contents\",\n slot: \"TableOfContents\",\n }),\n layoutComponent({\n description: \"The previous/next pagination footer.\",\n file: \"Pagination.astro\",\n name: \"pagination\",\n slot: \"Pagination\",\n }),\n layoutComponent({\n description: 'The \"Was this page helpful?\" feedback rating.',\n file: \"PageFeedback.astro\",\n name: \"feedback\",\n slot: \"Feedback\",\n }),\n layoutComponent({\n description:\n \"The site footer: a row of links, social icons,
|
|
5
|
+
"import { join } from \"pathe\";\n\nimport { packageRoot } from \"../core/package-root.ts\";\n\n/** A file copied into the user's project by `blume add`. */\nexport interface RegistryFile {\n /** Path to the source file, relative to the blume package `src` directory. */\n source: string;\n /** Destination path relative to the project root. */\n target: string;\n /** Rewrite the file's relative imports to `blume/*` specifiers on copy. */\n rewrite?: boolean;\n}\n\nexport interface RegistryItem {\n name: string;\n description: string;\n files: RegistryFile[];\n /** Lines printed after install to guide the user. */\n postInstall: string[];\n}\n\n/** Absolute path to the blume package `src` directory (the copy source root). */\nexport const packageSrc = join(packageRoot(), \"src\");\n\n/**\n * A built-in layout component offered as editable source. `blume add` rewrites\n * its relative imports to `blume/*`, so it renders identically to the built-in\n * until the user changes it, then registers under the matching `layout` slot.\n */\nconst layoutComponent = (config: {\n name: string;\n description: string;\n /** Source basename under `src/components/layout`. */\n file: string;\n /** Layout slot key, also the import name in the post-install hint. */\n slot: string;\n}): RegistryItem => {\n const target = `components/blume/${config.file}`;\n return {\n description: config.description,\n files: [\n {\n rewrite: true,\n source: `components/layout/${config.file}`,\n target,\n },\n ],\n name: config.name,\n postInstall: [\n \"Register it in components.ts:\",\n ' import { defineComponents } from \"blume\";',\n ` import ${config.slot} from \"./${target}\";`,\n \"\",\n ` export default defineComponents({ layout: { ${config.slot} } });`,\n \"\",\n \"It imports the rest from `blume/*`, so it matches the built-in until you edit it.\",\n ],\n };\n};\n\n/**\n * A built-in MDX content component offered as editable source. Like\n * {@link layoutComponent}, but registered under the `mdx` map (the tag you write\n * in `.mdx`) rather than a `layout` slot.\n */\nconst contentComponent = (config: {\n name: string;\n description: string;\n /** Source basename under `src/components/content`. */\n file: string;\n /** MDX tag / component name, also the import name in the post-install hint. */\n tag: string;\n}): RegistryItem => {\n const target = `components/blume/${config.file}`;\n return {\n description: config.description,\n files: [\n {\n rewrite: true,\n source: `components/content/${config.file}`,\n target,\n },\n ],\n name: config.name,\n postInstall: [\n \"Register it in components.ts:\",\n ' import { defineComponents } from \"blume\";',\n ` import ${config.tag} from \"./${target}\";`,\n \"\",\n ` export default defineComponents({ mdx: { ${config.tag} } });`,\n \"\",\n \"It imports the rest from `blume/*`, so it matches the built-in until you edit it.\",\n ],\n };\n};\n\n/** Every user-facing content component, by `blume add` name → source basename. */\nconst CONTENT_COMPONENTS: {\n name: string;\n description: string;\n file: string;\n tag: string;\n}[] = [\n {\n description: \"Aside for notes, tips, and warnings.\",\n file: \"Callout.astro\",\n name: \"callout\",\n tag: \"Callout\",\n },\n {\n description: \"A linkable card with icon, title, and body.\",\n file: \"Card.astro\",\n name: \"card\",\n tag: \"Card\",\n },\n {\n description: \"A responsive grid of cards.\",\n file: \"CardGroup.astro\",\n name: \"card-group\",\n tag: \"CardGroup\",\n },\n {\n description: \"Tabbed code blocks for multiple languages.\",\n file: \"CodeGroup.astro\",\n name: \"code-group\",\n tag: \"CodeGroup\",\n },\n {\n description: \"A small status/label badge.\",\n file: \"Badge.astro\",\n name: \"badge\",\n tag: \"Badge\",\n },\n {\n description: \"A numbered list of steps.\",\n file: \"Steps.astro\",\n name: \"steps\",\n tag: \"Steps\",\n },\n {\n description: \"A single step within Steps.\",\n file: \"Step.astro\",\n name: \"step\",\n tag: \"Step\",\n },\n {\n description: \"A tabbed content panel.\",\n file: \"Tabs.astro\",\n name: \"tabs\",\n tag: \"Tabs\",\n },\n {\n description: \"A single tab within Tabs.\",\n file: \"Tab.astro\",\n name: \"tab\",\n tag: \"Tab\",\n },\n {\n description: \"A collapsible accordion group.\",\n file: \"Accordion.astro\",\n name: \"accordion\",\n tag: \"Accordion\",\n },\n {\n description: \"A single item within an Accordion.\",\n file: \"AccordionItem.astro\",\n name: \"accordion-item\",\n tag: \"AccordionItem\",\n },\n {\n description: \"A multi-column layout.\",\n file: \"Columns.astro\",\n name: \"columns\",\n tag: \"Columns\",\n },\n {\n description: \"A single column within Columns.\",\n file: \"Column.astro\",\n name: \"column\",\n tag: \"Column\",\n },\n {\n description: \"A bordered frame around an image or embed.\",\n file: \"Frame.astro\",\n name: \"frame\",\n tag: \"Frame\",\n },\n {\n description: \"An inline expand/collapse disclosure.\",\n file: \"Expandable.astro\",\n name: \"expandable\",\n tag: \"Expandable\",\n },\n {\n description: \"A titled content panel.\",\n file: \"Panel.astro\",\n name: \"panel\",\n tag: \"Panel\",\n },\n {\n description: \"A hover tooltip.\",\n file: \"Tooltip.astro\",\n name: \"tooltip\",\n tag: \"Tooltip\",\n },\n {\n description: \"A compact linkable tile.\",\n file: \"Tile.astro\",\n name: \"tile\",\n tag: \"Tile\",\n },\n {\n description: \"A styled prompt / terminal block.\",\n file: \"Prompt.astro\",\n name: \"prompt\",\n tag: \"Prompt\",\n },\n {\n description: \"A responsive, privacy-friendly YouTube embed.\",\n file: \"YouTube.astro\",\n name: \"youtube\",\n tag: \"YouTube\",\n },\n];\n\n/** The built-in, Blume-owned source registry. */\nexport const registry: RegistryItem[] = [\n layoutComponent({\n description: \"The top navigation bar (logo, search, nav links).\",\n file: \"Header.astro\",\n name: \"header\",\n slot: \"Header\",\n }),\n layoutComponent({\n description: \"The sidebar navigation tree.\",\n file: \"NavTree.astro\",\n name: \"sidebar\",\n slot: \"Sidebar\",\n }),\n layoutComponent({\n description: \"The breadcrumb trail shown above page content.\",\n file: \"Breadcrumbs.astro\",\n name: \"breadcrumbs\",\n slot: \"Breadcrumbs\",\n }),\n layoutComponent({\n description: \"The on-this-page table of contents.\",\n file: \"TableOfContents.astro\",\n name: \"table-of-contents\",\n slot: \"TableOfContents\",\n }),\n layoutComponent({\n description: \"The previous/next pagination footer.\",\n file: \"Pagination.astro\",\n name: \"pagination\",\n slot: \"Pagination\",\n }),\n layoutComponent({\n description: 'The \"Was this page helpful?\" feedback rating.',\n file: \"PageFeedback.astro\",\n name: \"feedback\",\n slot: \"Feedback\",\n }),\n layoutComponent({\n description:\n \"The site footer: a copyright line, a row of links, social icons, and the Cookie settings link.\",\n file: \"SiteFooter.astro\",\n name: \"footer\",\n slot: \"Footer\",\n }),\n ...CONTENT_COMPONENTS.map(contentComponent),\n];\n\nexport const findItem = (name: string): RegistryItem | undefined =>\n registry.find((item) => item.name === name);\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "C83E2C96A43B459064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -11,17 +11,17 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
AGENTS,
|
|
13
13
|
launchAgent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-aafhwx74.js";
|
|
15
15
|
import {
|
|
16
16
|
YAML_SCHEMA
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import"./chunk-zccbjcj0.js";
|
|
17
|
+
} from "./chunk-r5nm9w0c.js";
|
|
19
18
|
import {
|
|
20
19
|
scanProject
|
|
21
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-zxd5jrgx.js";
|
|
21
|
+
import"./chunk-zccbjcj0.js";
|
|
22
22
|
import {
|
|
23
23
|
buildMcpData
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-b680sv30.js";
|
|
25
25
|
import {
|
|
26
26
|
seconds,
|
|
27
27
|
money,
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
} from "./chunk-0n9xkp3d.js";
|
|
35
35
|
import {
|
|
36
36
|
parseTimeoutSeconds
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-fnxgtjeq.js";
|
|
38
38
|
|
|
39
39
|
// src/cli/commands/eval.ts
|
|
40
40
|
import { existsSync } from "node:fs";
|
|
@@ -697,5 +697,5 @@ export {
|
|
|
697
697
|
evalCommand
|
|
698
698
|
};
|
|
699
699
|
|
|
700
|
-
//# debugId=
|
|
701
|
-
//# sourceMappingURL=chunk-
|
|
700
|
+
//# debugId=A08E98490DA10DBB64756E2164756E21
|
|
701
|
+
//# sourceMappingURL=chunk-9jqmq5hv.js.map
|
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
"import type { BlumeProject } from \"../core/project-graph.ts\";\nimport type { Diagnostic } from \"../core/types.ts\";\nimport { locateQuestion } from \"./schema.ts\";\nimport type { EvalQuestion } from \"./schema.ts\";\n\nconst DOCS_URL = \"https://useblume.dev/docs/cli/evals\";\n\n/** Where a finding should anchor when no route hint matches a page. */\nexport interface EvalsAnchor {\n path: string;\n raw: string;\n}\n\n/** The manifest route a hint names, if any. */\nconst hintedRoute = (question: EvalQuestion, project: BlumeProject) => {\n for (const hint of question.routes) {\n const route = project.manifest.routes.find(\n (candidate) => candidate.path === hint\n );\n if (route) {\n return route;\n }\n }\n};\n\n/**\n * Warnings for route hints that name no manifest route — docs move, and a\n * finding that silently anchors to the evals file instead of the page it\n * used to name is a debugging session; a warning is a one-line fix.\n */\nexport const routeFindings = (\n question: EvalQuestion,\n project: BlumeProject,\n anchor: EvalsAnchor\n): Diagnostic[] => {\n const known = new Set(project.manifest.routes.map((route) => route.path));\n return question.routes\n .filter((hint) => !known.has(hint))\n .map((hint) => ({\n code: \"BLUME_EVAL_ROUTE_UNKNOWN\",\n docsUrl: DOCS_URL,\n file: anchor.path,\n line: locateQuestion(anchor.raw, question.id),\n message: `Question \"${question.id}\" hints at route \"${hint}\", which matches no page.`,\n severity: \"warning\" as const,\n suggestion:\n \"Update the question's `routes` to the page's current route, or remove the hint.\",\n }));\n};\n\n/** What the finding needs to know about how the question went. */\nexport interface QuestionOutcome {\n /** Why the run errored, when it did. */\n detail?: string;\n /** The expected facts the judge found absent or contradicted. */\n missing: string[];\n status: \"error\" | \"fail\";\n}\n\n/**\n * The diagnostic for a failed or errored question. A failure is anchored to\n * the page that should have answered it (via the first matching route hint)\n * or, failing that, to the question's line in the evals file. An errored run —\n * the agent crashed, timed out, or answered in a shape Blume couldn't read —\n * says nothing about the docs, so it always points at the question instead of\n * a page there's nothing to fix in.\n */\nexport const questionFinding = (\n question: EvalQuestion,\n outcome: QuestionOutcome,\n project: BlumeProject,\n anchor: EvalsAnchor\n): Diagnostic => {\n const questionSite = {\n file: anchor.path,\n line: locateQuestion(anchor.raw, question.id),\n };\n\n if (outcome.status === \"error\") {\n return {\n code: \"BLUME_EVAL_QUESTION_ERROR\",\n docsUrl: DOCS_URL,\n message: `The agent run failed for \"${question.question}\"${\n outcome.detail ? ` — ${outcome.detail}` : \"\"\n }, so the docs weren't graded.`,\n severity: question.severity,\n suggestion:\n \"Rerun `blume eval`; if it persists, check the agent CLI installation and the failure detail.\",\n ...questionSite,\n };\n }\n\n const route = hintedRoute(question, project);\n const site = route\n ? { file: route.sourcePath, url: route.path }\n : questionSite;\n\n const missing =\n outcome.missing.length > 0\n ? ` — missing: ${outcome.missing.join(\"; \")}`\n : \"\";\n return {\n code: \"BLUME_EVAL_QUESTION_FAILED\",\n docsUrl: DOCS_URL,\n message: `Docs could not answer: \"${question.question}\"${missing}`,\n severity: question.severity,\n suggestion:\n \"State the missing facts on this page, then rerun `blume eval`.\",\n ...site,\n };\n};\n"
|
|
11
11
|
],
|
|
12
12
|
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
13
|
+
"debugId": "A08E98490DA10DBB64756E2164756E21",
|
|
14
14
|
"names": []
|
|
15
15
|
}
|
|
@@ -3,10 +3,6 @@ import {
|
|
|
3
3
|
countBySeverity
|
|
4
4
|
} from "./index.js";
|
|
5
5
|
|
|
6
|
-
// src/audit/report.ts
|
|
7
|
-
import { colors } from "consola/utils";
|
|
8
|
-
import { relative } from "pathe";
|
|
9
|
-
|
|
10
6
|
// src/audit/catalog.ts
|
|
11
7
|
var CHECKS = [
|
|
12
8
|
{
|
|
@@ -779,7 +775,34 @@ var finding = (id, site, detail, fix) => {
|
|
|
779
775
|
};
|
|
780
776
|
};
|
|
781
777
|
|
|
778
|
+
// src/audit/terms.ts
|
|
779
|
+
var shortId = (id) => id.replace("BLUME_AUDIT_", "").toLowerCase();
|
|
780
|
+
var matchesTerms = (id, terms) => {
|
|
781
|
+
const meta = CHECKS.find((check) => check.id === id);
|
|
782
|
+
const short = shortId(id);
|
|
783
|
+
return terms.some((raw) => {
|
|
784
|
+
const term = raw.trim().toLowerCase();
|
|
785
|
+
return term === short || term === id.toLowerCase() || term === meta?.category;
|
|
786
|
+
});
|
|
787
|
+
};
|
|
788
|
+
var checkSelected = (id, filter) => (!filter.only?.length || matchesTerms(id, filter.only)) && !matchesTerms(id, filter.skip ?? []);
|
|
789
|
+
var checkTerms = () => [
|
|
790
|
+
...new Set([
|
|
791
|
+
...CHECKS.map((check) => check.category),
|
|
792
|
+
...CHECKS.map((check) => shortId(check.id))
|
|
793
|
+
])
|
|
794
|
+
];
|
|
795
|
+
var unknownCheckTerms = (terms) => {
|
|
796
|
+
const known = new Set(checkTerms());
|
|
797
|
+
return terms.filter((raw) => {
|
|
798
|
+
const term = raw.trim().toLowerCase();
|
|
799
|
+
return !(known.has(term) || known.has(term.replace(/^blume_audit_/u, "")));
|
|
800
|
+
});
|
|
801
|
+
};
|
|
802
|
+
|
|
782
803
|
// src/audit/report.ts
|
|
804
|
+
import { colors } from "consola/utils";
|
|
805
|
+
import { relative } from "pathe";
|
|
783
806
|
var SEVERITY_COLOR = {
|
|
784
807
|
error: colors.red,
|
|
785
808
|
info: colors.blue,
|
|
@@ -849,12 +872,14 @@ var rollup = (diagnostics) => {
|
|
|
849
872
|
}
|
|
850
873
|
return checks.toSorted((a, b) => (worst.get(a.category) ?? 0) - (worst.get(b.category) ?? 0) || a.category.localeCompare(b.category) || SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity] || b.count - a.count);
|
|
851
874
|
};
|
|
852
|
-
var skippedTiers = (
|
|
853
|
-
const
|
|
854
|
-
return
|
|
875
|
+
var skippedTiers = (result) => TIER_FLAGS.flatMap(({ flag, tier }) => {
|
|
876
|
+
const count = CHECKS.filter((check) => check.tier === tier && checkSelected(check.id, result)).length;
|
|
877
|
+
return result.tiers[tier] || count === 0 ? [] : [
|
|
878
|
+
` ${colors.dim(`⊘ ${tier.padEnd(12)} skipped — pass ${flag} (${count} checks)`)}`
|
|
879
|
+
];
|
|
855
880
|
});
|
|
856
|
-
var activeChecks = (
|
|
857
|
-
var auditCount = (result) => activeChecks(result
|
|
881
|
+
var activeChecks = (result) => CHECKS.filter((check) => result.tiers[check.tier] && checkSelected(check.id, result)).length;
|
|
882
|
+
var auditCount = (result) => activeChecks(result) * result.pages;
|
|
858
883
|
var summaryLine = (counts, audits) => [
|
|
859
884
|
`${audits.toLocaleString("en-US")} audit${audits === 1 ? "" : "s"}`,
|
|
860
885
|
`${counts.error} error${counts.error === 1 ? "" : "s"}`,
|
|
@@ -902,7 +927,7 @@ var formatReport = (result, root, options = {}) => {
|
|
|
902
927
|
}
|
|
903
928
|
lines.push("");
|
|
904
929
|
}
|
|
905
|
-
const skipped = skippedTiers(result
|
|
930
|
+
const skipped = skippedTiers(result);
|
|
906
931
|
if (skipped.length > 0) {
|
|
907
932
|
lines.push(...skipped, "");
|
|
908
933
|
}
|
|
@@ -1007,7 +1032,7 @@ var launchInstalledAgent = async (bin, prompt, platform = process.platform) => {
|
|
|
1007
1032
|
}
|
|
1008
1033
|
};
|
|
1009
1034
|
|
|
1010
|
-
export {
|
|
1035
|
+
export { finding, checkSelected, checkTerms, unknownCheckTerms, formatReport, reportJson, formatCatalog, AGENTS, writeAgentReport, fixPrompt, launchAgent, launchInstalledAgent };
|
|
1011
1036
|
|
|
1012
|
-
//# debugId=
|
|
1013
|
-
//# sourceMappingURL=chunk-
|
|
1037
|
+
//# debugId=367C2A1AC5492B0664756E2164756E21
|
|
1038
|
+
//# sourceMappingURL=chunk-aafhwx74.js.map
|