blume 2.1.2 → 2.2.0
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 +133 -0
- package/README.md +4 -4
- package/dist/cli/{chunk-74wfhv79.js → chunk-05f21r8h.js} +1 -1
- package/dist/cli/{chunk-9qzgg6mj.js → chunk-1cm0h819.js} +3 -3
- package/dist/cli/{chunk-nbyvgnnm.js → chunk-1rkxzg3n.js} +104 -47
- package/dist/cli/chunk-1rkxzg3n.js.map +36 -0
- package/dist/cli/{chunk-desvm72z.js → chunk-2nr29y95.js} +22 -26
- package/dist/cli/chunk-2nr29y95.js.map +13 -0
- package/dist/cli/{chunk-32khwcb6.js → chunk-49r370mb.js} +42 -69
- package/dist/cli/{chunk-32khwcb6.js.map → chunk-49r370mb.js.map} +9 -10
- package/dist/cli/{chunk-ms9z66nz.js → chunk-4rftmttv.js} +2 -2
- package/dist/cli/{chunk-s0bdnc7v.js → chunk-79bzzkx4.js} +5 -4
- package/dist/cli/chunk-79bzzkx4.js.map +10 -0
- package/dist/cli/{chunk-hvcxng5f.js → chunk-7tekknev.js} +6 -6
- package/dist/cli/{chunk-dv2z0rzf.js → chunk-8b489v1b.js} +38 -13
- package/dist/cli/{chunk-dv2z0rzf.js.map → chunk-8b489v1b.js.map} +5 -4
- package/dist/cli/{chunk-0pmb4tr4.js → chunk-8f8xw4x2.js} +1195 -222
- package/dist/cli/chunk-8f8xw4x2.js.map +44 -0
- package/dist/cli/chunk-96snx8yy.js +329 -0
- package/dist/cli/chunk-96snx8yy.js.map +13 -0
- package/dist/cli/{chunk-ckrcm08h.js → chunk-a3ydrqny.js} +48 -62
- package/dist/cli/{chunk-ckrcm08h.js.map → chunk-a3ydrqny.js.map} +4 -5
- package/dist/cli/{chunk-bxwhtvw8.js → chunk-ahc5gc9h.js} +5 -5
- package/dist/cli/{chunk-dpy8qdjf.js → chunk-as09pafp.js} +73 -182
- package/dist/cli/chunk-as09pafp.js.map +18 -0
- package/dist/cli/{chunk-tfycddbt.js → chunk-bjk964fp.js} +2 -2
- package/dist/cli/{chunk-gfc5fqvf.js → chunk-br0n8n3e.js} +18 -18
- package/dist/cli/{chunk-gfc5fqvf.js.map → chunk-br0n8n3e.js.map} +1 -1
- package/dist/cli/{chunk-297ajdcv.js → chunk-c69tw29j.js} +6 -6
- package/dist/cli/{chunk-297ajdcv.js.map → chunk-c69tw29j.js.map} +3 -3
- package/dist/cli/chunk-cn3dy3hz.js +146 -0
- package/dist/cli/chunk-cn3dy3hz.js.map +11 -0
- package/dist/cli/{chunk-124fvmzq.js → chunk-dm4mg9bj.js} +11064 -8742
- package/dist/cli/{chunk-124fvmzq.js.map → chunk-dm4mg9bj.js.map} +78 -64
- package/dist/cli/{chunk-dqhg54mr.js → chunk-dmx6cezx.js} +1 -1
- package/dist/cli/{chunk-60hz265r.js → chunk-dpcahcrb.js} +24 -11
- package/dist/cli/chunk-dpcahcrb.js.map +10 -0
- package/dist/cli/{chunk-a57yh0h9.js → chunk-dyk3r7jw.js} +7 -7
- package/dist/cli/{chunk-a57yh0h9.js.map → chunk-dyk3r7jw.js.map} +1 -1
- package/dist/cli/{chunk-twy7psdz.js → chunk-enk76qd5.js} +14 -10
- package/dist/cli/chunk-enk76qd5.js.map +10 -0
- package/dist/cli/{chunk-k3gr1nm9.js → chunk-fqy4n3q2.js} +13 -16
- package/dist/cli/{chunk-k3gr1nm9.js.map → chunk-fqy4n3q2.js.map} +3 -3
- package/dist/cli/{chunk-sc93apfs.js → chunk-frk2wdq1.js} +17 -17
- package/dist/cli/{chunk-sc93apfs.js.map → chunk-frk2wdq1.js.map} +2 -2
- package/dist/cli/{chunk-kdpzw38a.js → chunk-gprwej7h.js} +95 -7
- package/dist/cli/chunk-gprwej7h.js.map +11 -0
- package/dist/cli/chunk-kkrteb15.js +157 -0
- package/dist/cli/chunk-kkrteb15.js.map +10 -0
- package/dist/cli/{chunk-ave1wcbr.js → chunk-m9bp2hc1.js} +1 -1
- package/dist/cli/{chunk-58bt3hag.js → chunk-mrvh4c88.js} +4 -4
- package/dist/cli/{chunk-5cmts6dv.js → chunk-p8zg3a2h.js} +7 -7
- package/dist/cli/{chunk-5cmts6dv.js.map → chunk-p8zg3a2h.js.map} +1 -1
- package/dist/cli/{chunk-0w6hs479.js → chunk-rkqae7kh.js} +30 -18
- package/dist/cli/chunk-rkqae7kh.js.map +10 -0
- package/dist/cli/{chunk-bqxaqn5p.js → chunk-t5xx74rd.js} +8 -8
- package/dist/cli/{chunk-bqxaqn5p.js.map → chunk-t5xx74rd.js.map} +1 -1
- package/dist/cli/{chunk-1f882900.js → chunk-th0pgaj5.js} +2 -2
- package/dist/cli/{chunk-dhwtqnnd.js → chunk-vnbvhgmd.js} +2 -2
- package/dist/cli/{chunk-gxtg6ed2.js → chunk-vzy9rh6y.js} +21 -21
- package/dist/cli/{chunk-gxtg6ed2.js.map → chunk-vzy9rh6y.js.map} +3 -3
- package/dist/cli/{chunk-j1x92mx9.js → chunk-w6e455pz.js} +1 -1
- package/dist/cli/chunk-wehv26ry.js +155 -0
- package/dist/cli/chunk-wehv26ry.js.map +11 -0
- package/dist/cli/{chunk-y4msrwm9.js → chunk-xgq4eytj.js} +15 -15
- package/dist/cli/{chunk-36bxs9c7.js → chunk-xt0qvz1t.js} +27 -23
- package/dist/cli/chunk-xt0qvz1t.js.map +10 -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 +1 -1
- package/dist/types/core/content-assets.d.ts +16 -18
- 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/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 +9 -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 +267 -7
- 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/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 +23 -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 +2 -2
- package/docs/configuration/theming.mdx +5 -1
- package/docs/content/components.mdx +26 -6
- package/docs/content/frontmatter.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/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 +10 -9
- package/skills/blume/SKILL.md +2 -2
- package/skills/blume-migrate/SKILL.md +49 -27
- 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 +3 -3
- 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 +2 -2
- 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 +32 -6
- 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 +89 -185
- 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/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/RootLayout.astro +18 -31
- 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 +1 -1
- package/src/core/config.ts +46 -1
- package/src/core/content-assets.ts +64 -144
- 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/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 +16 -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 +17 -3
- 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/registry/eject.ts +0 -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-74wfhv79.js.map → chunk-05f21r8h.js.map} +0 -0
- /package/dist/cli/{chunk-9qzgg6mj.js.map → chunk-1cm0h819.js.map} +0 -0
- /package/dist/cli/{chunk-ms9z66nz.js.map → chunk-4rftmttv.js.map} +0 -0
- /package/dist/cli/{chunk-hvcxng5f.js.map → chunk-7tekknev.js.map} +0 -0
- /package/dist/cli/{chunk-bxwhtvw8.js.map → chunk-ahc5gc9h.js.map} +0 -0
- /package/dist/cli/{chunk-tfycddbt.js.map → chunk-bjk964fp.js.map} +0 -0
- /package/dist/cli/{chunk-dqhg54mr.js.map → chunk-dmx6cezx.js.map} +0 -0
- /package/dist/cli/{chunk-ave1wcbr.js.map → chunk-m9bp2hc1.js.map} +0 -0
- /package/dist/cli/{chunk-58bt3hag.js.map → chunk-mrvh4c88.js.map} +0 -0
- /package/dist/cli/{chunk-1f882900.js.map → chunk-th0pgaj5.js.map} +0 -0
- /package/dist/cli/{chunk-dhwtqnnd.js.map → chunk-vnbvhgmd.js.map} +0 -0
- /package/dist/cli/{chunk-j1x92mx9.js.map → chunk-w6e455pz.js.map} +0 -0
- /package/dist/cli/{chunk-y4msrwm9.js.map → chunk-xgq4eytj.js.map} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/static-host.ts", "../src/cli/eject-scripts.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * What a static host does with the URLs `blume dev` and `blume preview`\n * would otherwise answer on their own terms. Astro's `trailingSlash: \"never\"`\n * has both 404 a slashed URL (`/guide/`), which every host answers: Vercel\n * redirects it to `/guide`, and the others serve `guide/index.html`. And a\n * folder of HTML shipped in `public/` (`public/demo/index.html`) is served at\n * `/demo/`, `/demo` redirecting there, so the relative links inside it\n * resolve against the folder; the dev server 404s both spellings, and Vite's\n * preview serves only the slashless one.\n */\n\nimport { statSync } from \"node:fs\";\nimport type { IncomingMessage, Server, ServerResponse } from \"node:http\";\n\nimport { join, resolve } from \"pathe\";\n\nimport { stripBasePath } from \"./base-path.ts\";\nimport { trimEnd } from \"./trim.ts\";\n\n/** How to answer a request ahead of the server's own handlers. */\nexport type HostAnswer =\n | { kind: \"redirect\"; location: string; status: number }\n | { kind: \"rewrite\"; url: string };\n\n/**\n * The paths Astro keeps out of its trailing-slash handling (`/_astro/`,\n * `/@vite/`, `/.well-known/`, `//`), and the root.\n */\nconst UNHANDLED_PATH = /^\\/(?:[_@./]|$)/u;\n\n/** A request URL's path and its query string, `?` included. */\nconst splitUrl = (url: string): { pathname: string; search: string } => {\n const queryAt = url.search(/[?#]/u);\n return queryAt === -1\n ? { pathname: url, search: \"\" }\n : { pathname: url.slice(0, queryAt), search: url.slice(queryAt) };\n};\n\n/**\n * Whether `public/<path>/index.html` exists: a folder of HTML the site ships\n * as is. `path` is the decoded request path with `deployment.base` stripped.\n */\nexport const publicFolder = (publicDir: string) => {\n const root = resolve(publicDir);\n return (path: string): boolean => {\n const index = join(root, path, \"index.html\");\n if (!index.startsWith(`${root}/`)) {\n return false;\n }\n try {\n return statSync(index).isFile();\n } catch {\n return false;\n }\n };\n};\n\n/**\n * How a static host answers a URL's trailing slash, or null to leave the\n * request alone. A slashed URL redirects to its slashless page, its query\n * kept, unless it names a public folder, which serves its `index.html`; a\n * slashless public folder redirects to its slashed URL. `base` is the\n * normalized `deployment.base`, which the URL carries and `public/` doesn't.\n * The redirect is a `301`, a `308` for a method a `301` would turn into a\n * `GET`, as Astro answers on a server-rendered route.\n */\nexport const trailingSlashAnswer = (\n request: Pick<IncomingMessage, \"method\" | \"url\">,\n base: string,\n isPublicFolder: (path: string) => boolean\n): HostAnswer | null => {\n const { pathname, search } = splitUrl(request.url ?? \"/\");\n if (UNHANDLED_PATH.test(pathname)) {\n return null;\n }\n let path: string;\n try {\n path = decodeURIComponent(stripBasePath(base, pathname));\n } catch {\n return null;\n }\n const status =\n request.method === \"GET\" || request.method === \"HEAD\" ? 301 : 308;\n if (!pathname.endsWith(\"/\")) {\n return isPublicFolder(path)\n ? { kind: \"redirect\", location: `${pathname}/${search}`, status }\n : null;\n }\n const slashless = trimEnd(pathname, \"/\");\n return isPublicFolder(trimEnd(path, \"/\"))\n ? { kind: \"rewrite\", url: `${slashless}/index.html${search}` }\n : { kind: \"redirect\", location: `${slashless}${search}`, status };\n};\n\n/**\n * Answer every request on `server` with `answer` first: a redirect is sent\n * then and there, and a rewrite changes the URL the server's own handlers\n * (Vite's middleware) then see. They're the request listeners the server\n * already has, so this goes ahead of every middleware, Astro's included.\n */\nexport const answerRequestsFirst = (\n server: Server,\n answer: (request: IncomingMessage) => HostAnswer | null,\n headers: Record<string, string> = {}\n): void => {\n const handlers = server.listeners(\"request\");\n server.removeAllListeners(\"request\");\n server.on(\"request\", (request: IncomingMessage, response: ServerResponse) => {\n const answered = answer(request);\n if (answered?.kind === \"redirect\") {\n response.writeHead(answered.status, {\n ...headers,\n Location: answered.location,\n });\n response.end();\n return;\n }\n if (answered) {\n request.url = answered.url;\n }\n for (const handler of handlers) {\n handler.call(server, request, response);\n }\n });\n};\n",
|
|
6
|
+
"import { existsSync, readFileSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nimport { join } from \"pathe\";\n\nimport { EJECTED_CONFIG_HEADER } from \"../astro/templates.ts\";\nimport { packageRoot } from \"../core/package-root.ts\";\nimport { commandsFor, detectProjectPackageManager } from \"./init/scaffold.ts\";\nimport type { PackageManager } from \"./init/scaffold.ts\";\nimport { logger } from \"./log.ts\";\n\n/** A JSON value, as `JSON.parse` of a manifest can return. */\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/** The slice of package.json the rewrite touches; the rest rides along. */\ninterface PackageManifest {\n [key: string]: JsonValue | undefined;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n scripts?: Record<string, string>;\n}\n\n/** Package name → the semver range to depend on it at. */\nexport interface DependencyRanges {\n [name: string]: string;\n}\n\n/**\n * The version range Blume itself uses for each package it depends on or\n * accepts as a peer, plus `blume` at the installed version — what an ejected\n * app should pin so it keeps building against the same majors.\n */\nexport const blumeDependencyRanges = (): DependencyRanges => {\n // SAFETY: blume's own package.json, which declares its version and both\n // dependency maps; nothing else is read.\n const manifest = JSON.parse(\n readFileSync(join(packageRoot(), \"package.json\"), \"utf-8\")\n ) as {\n dependencies: Record<string, string>;\n peerDependencies: Record<string, string>;\n version: string;\n };\n return {\n ...manifest.peerDependencies,\n ...manifest.dependencies,\n blume: `^${manifest.version}`,\n };\n};\n\n/** Whether the manifest already lists `name` in any dependency field. */\nconst declares = (pkg: PackageManifest, name: string): boolean =>\n [\n pkg.dependencies,\n pkg.devDependencies,\n pkg.optionalDependencies,\n pkg.peerDependencies,\n ].some((field) => field !== undefined && Object.hasOwn(field, name));\n\n/**\n * Point the project's package.json at the ejected app. Its scripts run Astro\n * directly: after an eject the Blume CLI no longer manages the runtime, so\n * scaffolded scripts like `\"dev\": \"blume dev\"` would rebuild the removed\n * `.blume` tree instead of serving the ejected app. And every package the\n * ejected app imports by bare name (`dependencies`, from `eject()`) that the\n * project doesn't list yet becomes a dependency at the range Blume itself\n * uses (`ranges`).\n *\n * Returns the names it added, so the caller can ask for an install. A missing\n * or unreadable package.json is left alone.\n */\nexport const updatePackageScripts = async (\n root: string,\n dependencies: string[] = [],\n ranges: DependencyRanges = blumeDependencyRanges()\n): Promise<string[]> => {\n const pkgPath = join(root, \"package.json\");\n let pkg: PackageManifest;\n try {\n pkg = JSON.parse(await readFile(pkgPath, \"utf-8\"));\n } catch {\n return [];\n }\n const scripts = pkg.scripts ?? {};\n pkg.scripts = {\n ...scripts,\n build: \"astro build\",\n dev: \"astro dev\",\n preview: \"astro preview\",\n };\n const added = dependencies.filter((name) => !declares(pkg, name));\n if (added.length > 0) {\n // Sorted, the way package managers write the field.\n pkg.dependencies = Object.fromEntries(\n Object.entries({\n ...pkg.dependencies,\n ...Object.fromEntries(added.map((name) => [name, ranges[name] ?? \"*\"])),\n }).toSorted(([a], [b]) => (a < b ? -1 : 1))\n );\n }\n await writeFile(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, \"utf-8\");\n return added;\n};\n\n/**\n * The first line Blume 1's `blume eject` wrote into the ejected\n * `astro.config.mjs` — the hidden runtime's own header, carried over. Blume 2's\n * hidden runtime keeps it under `.blume/`, never at the project root, so a root\n * config that opens with it is an app Blume 1 ejected.\n */\nconst BLUME_1_EJECTED_CONFIG_HEADER =\n \"// Generated by Blume. Do not edit; this file is recreated on each run.\";\n\n/**\n * Whether `root` holds an app `blume eject` already wrote: a root\n * `astro.config.mjs` whose first line is eject's header, or the header Blume 1\n * ejected with. The header is the only signal: a Blume project may keep its own\n * `astro.config.mjs` and a codegen `src/generated/` folder beside its content,\n * and neither makes it an ejected app.\n */\nexport const isEjectedProject = (root: string): boolean => {\n const config = join(root, \"astro.config.mjs\");\n if (!existsSync(config)) {\n return false;\n }\n const source = readFileSync(config, \"utf-8\");\n return (\n source.startsWith(EJECTED_CONFIG_HEADER) ||\n source.startsWith(BLUME_1_EJECTED_CONFIG_HEADER)\n );\n};\n\n/** The Blume commands that run the hidden `.blume/` copy of the site. */\nexport type RuntimeCommand = \"build\" | \"check\" | \"dev\" | \"preview\" | \"sync\";\n\n/**\n * What an ejected app runs in place of each {@link RuntimeCommand}: its own\n * `dev`/`build`/`preview` scripts (eject writes them), or Astro's CLI for the\n * check and the content sync.\n */\nconst ejectedEquivalent = (\n pm: PackageManager,\n command: RuntimeCommand\n): string => {\n const { build, dev, exec } = commandsFor(pm);\n return {\n build,\n check: `${exec} astro check`,\n dev,\n // Spelled like `dev`: npm runs a custom script only through `run`.\n preview: pm === \"npm\" ? \"npm run preview\" : `${pm} preview`,\n sync: `${exec} astro sync`,\n }[command];\n};\n\n/**\n * Stop a command that works on the hidden runtime in an ejected app. `dev`,\n * `build`, `check`, and `sync` would regenerate `.blume/` from\n * `blume.config.ts` and run that hidden copy, ignoring every edit made to the\n * app since eject, and `preview` would look for that copy's build; point at\n * the app's own command under the project's package manager instead.\n */\nexport const refuseIfEjected = async (\n root: string,\n command: RuntimeCommand\n): Promise<void> => {\n if (!isEjectedProject(root)) {\n return;\n }\n const pm = await detectProjectPackageManager(root);\n logger.error(\n `This project was ejected to a standalone Astro app, so \\`blume ${command}\\` would run a regenerated copy of the site instead of it. Run \\`${ejectedEquivalent(pm, command)}\\` instead.`\n );\n process.exit(1);\n};\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "CFEE49169891DC2F64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
resolveRuntimeDir,
|
|
4
4
|
resolveProjectContext,
|
|
5
5
|
loadConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-dm4mg9bj.js";
|
|
7
7
|
import"./chunk-zccbjcj0.js";
|
|
8
8
|
import {
|
|
9
9
|
commandMeta,
|
|
@@ -11,24 +11,24 @@ import {
|
|
|
11
11
|
} from "./index.js";
|
|
12
12
|
import {
|
|
13
13
|
readDevLock
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import"./chunk-
|
|
14
|
+
} from "./chunk-bjk964fp.js";
|
|
15
|
+
import"./chunk-as09pafp.js";
|
|
16
16
|
import {
|
|
17
17
|
refuseIfEjected
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import"./chunk-
|
|
20
|
-
import"./chunk-
|
|
21
|
-
import"./chunk-
|
|
22
|
-
import"./chunk-
|
|
23
|
-
import"./chunk-
|
|
18
|
+
} from "./chunk-wehv26ry.js";
|
|
19
|
+
import"./chunk-1rkxzg3n.js";
|
|
20
|
+
import"./chunk-8f8xw4x2.js";
|
|
21
|
+
import"./chunk-2nr29y95.js";
|
|
22
|
+
import"./chunk-a3ydrqny.js";
|
|
23
|
+
import"./chunk-w6e455pz.js";
|
|
24
24
|
import"./chunk-jq5n4avg.js";
|
|
25
|
-
import"./chunk-
|
|
26
|
-
import"./chunk-
|
|
25
|
+
import"./chunk-96snx8yy.js";
|
|
26
|
+
import"./chunk-dmx6cezx.js";
|
|
27
27
|
import {
|
|
28
28
|
prepareProject
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import"./chunk-
|
|
31
|
-
import"./chunk-
|
|
29
|
+
} from "./chunk-c69tw29j.js";
|
|
30
|
+
import"./chunk-4rftmttv.js";
|
|
31
|
+
import"./chunk-79bzzkx4.js";
|
|
32
32
|
|
|
33
33
|
// src/cli/commands/sync.ts
|
|
34
34
|
import { rm } from "node:fs/promises";
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
//# debugId=67B7B6A961A6206764756E2164756E21
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-xgq4eytj.js.map
|
|
@@ -7,50 +7,51 @@ import {
|
|
|
7
7
|
} from "./index.js";
|
|
8
8
|
import {
|
|
9
9
|
deployPlatform
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-dm4mg9bj.js";
|
|
11
|
+
import"./chunk-8f8xw4x2.js";
|
|
11
12
|
import"./chunk-zccbjcj0.js";
|
|
12
|
-
import
|
|
13
|
+
import {
|
|
14
|
+
refuseIfEjected
|
|
15
|
+
} from "./chunk-wehv26ry.js";
|
|
13
16
|
import {
|
|
14
17
|
publishBuildProject,
|
|
15
18
|
ogCacheDir,
|
|
16
19
|
pruneCardCache,
|
|
17
20
|
cardCacheTally
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import"./chunk-
|
|
21
|
+
} from "./chunk-1rkxzg3n.js";
|
|
22
|
+
import"./chunk-2nr29y95.js";
|
|
20
23
|
import {
|
|
21
24
|
deployOutputDir,
|
|
22
25
|
deployStaticDir,
|
|
23
26
|
surfaceAdapterOutput
|
|
24
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-as09pafp.js";
|
|
28
|
+
import"./chunk-96snx8yy.js";
|
|
25
29
|
import {
|
|
26
30
|
ensureGitignore
|
|
27
31
|
} from "./chunk-yzhm0j9q.js";
|
|
28
|
-
import"./chunk-
|
|
32
|
+
import"./chunk-w6e455pz.js";
|
|
29
33
|
import {
|
|
30
34
|
removedBuildFlags,
|
|
31
35
|
flagList,
|
|
32
36
|
removedBuildFlagsAdvice
|
|
33
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-1cm0h819.js";
|
|
34
38
|
import {
|
|
35
|
-
astroBuildDiagnostics
|
|
36
|
-
|
|
39
|
+
astroBuildDiagnostics,
|
|
40
|
+
buildFailureLocator
|
|
41
|
+
} from "./chunk-kkrteb15.js";
|
|
37
42
|
import {
|
|
38
43
|
refuseIfDevRunning
|
|
39
|
-
} from "./chunk-
|
|
40
|
-
import
|
|
41
|
-
refuseIfEjected
|
|
42
|
-
} from "./chunk-53jqw8z0.js";
|
|
43
|
-
import"./chunk-ckrcm08h.js";
|
|
44
|
+
} from "./chunk-bjk964fp.js";
|
|
45
|
+
import"./chunk-a3ydrqny.js";
|
|
44
46
|
import"./chunk-jq5n4avg.js";
|
|
45
|
-
import"./chunk-
|
|
46
|
-
import"./chunk-dqhg54mr.js";
|
|
47
|
+
import"./chunk-dmx6cezx.js";
|
|
47
48
|
import {
|
|
48
49
|
prepareProject
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-c69tw29j.js";
|
|
50
51
|
import {
|
|
51
52
|
serverFeatures
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import"./chunk-
|
|
53
|
+
} from "./chunk-4rftmttv.js";
|
|
54
|
+
import"./chunk-79bzzkx4.js";
|
|
54
55
|
|
|
55
56
|
// src/cli/commands/build.ts
|
|
56
57
|
import { existsSync } from "node:fs";
|
|
@@ -169,7 +170,7 @@ var reportBuild = async (project, distDir, args) => {
|
|
|
169
170
|
`));
|
|
170
171
|
await runClientAssetChecks(distDir, args);
|
|
171
172
|
if (project.droppedPages > 0) {
|
|
172
|
-
logger.warn(`${project.droppedPages} page(s) failed
|
|
173
|
+
logger.warn(`${project.droppedPages} page(s) failed validation and are missing from this build.`);
|
|
173
174
|
}
|
|
174
175
|
logger.success(`Built to ${distDir}`);
|
|
175
176
|
};
|
|
@@ -236,7 +237,10 @@ var buildCommand = defineCommand({
|
|
|
236
237
|
if (error instanceof BlumeError || !(error instanceof Error)) {
|
|
237
238
|
throw error;
|
|
238
239
|
}
|
|
239
|
-
reportDiagnostics(astroBuildDiagnostics(error
|
|
240
|
+
reportDiagnostics(await astroBuildDiagnostics(error, {
|
|
241
|
+
locate: buildFailureLocator(project),
|
|
242
|
+
root
|
|
243
|
+
}), root);
|
|
240
244
|
process.exit(1);
|
|
241
245
|
}
|
|
242
246
|
await reportCardCache(project, !runtimeDir);
|
|
@@ -271,5 +275,5 @@ export {
|
|
|
271
275
|
runClientAssetChecks
|
|
272
276
|
};
|
|
273
277
|
|
|
274
|
-
//# debugId=
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
278
|
+
//# debugId=43360653920765D464756E2164756E21
|
|
279
|
+
//# sourceMappingURL=chunk-xt0qvz1t.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/commands/build.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { existsSync } from \"node:fs\";\nimport { readdir, stat } from \"node:fs/promises\";\n\nimport { build } from \"astro\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { publishBuildProject } from \"../../astro/integration.ts\";\nimport { BlumeError } from \"../../core/diagnostics.ts\";\nimport { ensureGitignore } from \"../../core/gitignore.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport { serverFeatures } from \"../../core/server-features.ts\";\nimport {\n deployOutputDir,\n deployStaticDir,\n surfaceAdapterOutput,\n} from \"../../deploy/adapter-output.ts\";\nimport { deployPlatform } from \"../../deploy/platforms/index.ts\";\nimport { cardCacheTally, ogCacheDir, pruneCardCache } from \"../../og/cache.ts\";\nimport {\n flagList,\n removedBuildFlags,\n removedBuildFlagsAdvice,\n} from \"../../upgrade/upgrade.ts\";\nimport {\n astroBuildDiagnostics,\n buildFailureLocator,\n} from \"../build-failure.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { refuseIfDevRunning } from \"../dev-lock.ts\";\nimport { refuseIfEjected } from \"../eject-scripts.ts\";\nimport { logger, reportDiagnostics } from \"../log.ts\";\nimport { prepareProject } from \"../prepare.ts\";\n\nconst BUDGET_JS = \"budget-js\";\nconst BUDGET_CSS = \"budget-css\";\n\ninterface BudgetArgs {\n \"budget-css\"?: string;\n \"budget-js\"?: string;\n}\n\n/**\n * Reject a non-numeric performance budget. `Number(\"250kb\")` is `NaN` and\n * `total > NaN` is always false, so a typo'd flag would silently pass the gate;\n * fail up front instead.\n */\nconst validateBudgetFlags = (args: BudgetArgs): void => {\n for (const flag of [BUDGET_JS, BUDGET_CSS] as const) {\n const value = args[flag];\n const parsed = Number(value);\n // Equivalent to `!(parsed > 0)` but without the inverted check: this must\n // also reject `NaN` (a typo'd flag like \"250kb\"), which `parsed <= 0` alone\n // would let through since `NaN <= 0` is false.\n if (value !== undefined && (Number.isNaN(parsed) || parsed <= 0)) {\n logger.error(\n `Invalid --${flag} \"${value}\" (expected a positive number of kB).`\n );\n process.exit(1);\n }\n }\n};\n\n/**\n * Report how many OG cards the build read back from the on-disk cache against\n * how many it rendered (the endpoint tallies both), so a warm rebuild shows\n * where the time went. With `prune`, also drop the cached cards this build\n * never asked for — renamed pages, edited descriptions, cards from an earlier\n * Blume version — so a persisted cache holds exactly the current site's cards.\n */\nconst reportCardCache = async (\n project: BlumeProject,\n prune: boolean\n): Promise<void> => {\n const cards = cardCacheTally();\n if (!cards) {\n return;\n }\n logger.info(\n `OG cards: ${cards.hits} reused from the cache, ${cards.misses} rendered`\n );\n if (prune) {\n await pruneCardCache(ogCacheDir(project.context));\n }\n};\n\nconst formatBytes = (bytes: number): string => {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n const digits = bytes < 1024 * 100 ? 1 : 0;\n return `${(bytes / 1024).toFixed(digits)} kB`;\n};\n\n/** Sizes of `dist/_astro/*.<ext>`, largest first (empty when none exist). */\nconst astroAssets = async (\n distDir: string,\n ext: string\n): Promise<{ name: string; size: number }[]> => {\n const astroDir = join(distDir, \"_astro\");\n if (!existsSync(astroDir)) {\n return [];\n }\n const entries = await readdir(astroDir);\n const files = entries.filter((name) => name.endsWith(`.${ext}`));\n const sized = await Promise.all(\n files.map(async (name) => {\n const info = await stat(join(astroDir, name));\n return { name, size: info.size };\n })\n );\n return sized.toSorted((a, b) => b.size - a.size);\n};\n\nconst totalSize = (assets: { size: number }[]): number =>\n assets.reduce((sum, asset) => sum + asset.size, 0);\n\n/**\n * Print the client JavaScript Astro shipped, largest first, plus the total. A\n * dependency-free bundle report — the interactive weight of a docs site is its\n * `_astro/*.js`, so this surfaces regressions without a visualizer.\n */\nconst reportBundleSizes = async (distDir: string): Promise<void> => {\n const sized = await astroAssets(distDir, \"js\");\n if (sized.length === 0) {\n logger.info(\"No client JavaScript emitted — the site ships zero JS.\");\n return;\n }\n const rows = sized\n .slice(0, 15)\n .map((file) => ` ${formatBytes(file.size).padStart(8)} ${file.name}`);\n logger.box(\n [\n `Client JavaScript — ${sized.length} file(s), ${formatBytes(totalSize(sized))} total`,\n \"\",\n ...rows,\n sized.length > 15 ? ` … and ${sized.length - 15} more` : null,\n ]\n .filter((line) => line !== null)\n .join(\"\\n\")\n );\n};\n\n/**\n * Enforce a performance budget on the built client assets: fail the build when\n * total `_astro/*.js` (or `*.css`) exceeds the given kB cap. Budgets that would\n * otherwise be \"documented, not measured\" become a real CI gate. Returns whether\n * every budget passed.\n */\nconst enforceBudget = async (\n distDir: string,\n args: BudgetArgs\n): Promise<\"fail\" | \"pass\" | \"skip\"> => {\n const checks: { ext: string; limitKb: number; name: string }[] = [\n ...(args[BUDGET_JS]\n ? [{ ext: \"js\", limitKb: Number(args[BUDGET_JS]), name: \"JavaScript\" }]\n : []),\n ...(args[BUDGET_CSS]\n ? [{ ext: \"css\", limitKb: Number(args[BUDGET_CSS]), name: \"CSS\" }]\n : []),\n ];\n if (checks.length === 0) {\n return \"skip\";\n }\n let passed = true;\n for (const check of checks) {\n // oxlint-disable-next-line no-await-in-loop -- a couple of sequential reads\n const total = totalSize(await astroAssets(distDir, check.ext));\n const limit = check.limitKb * 1024;\n if (total > limit) {\n passed = false;\n logger.error(\n `${check.name} budget exceeded: ${formatBytes(total)} > ${check.limitKb} kB`\n );\n } else {\n logger.success(\n `${check.name} budget: ${formatBytes(total)} / ${check.limitKb} kB`\n );\n }\n }\n return passed ? \"pass\" : \"fail\";\n};\n\n/**\n * Run the optional bundle report (`--analyze`) and performance-budget gate\n * against the directory whose `_astro/` client assets the deploy serves.\n * Shared by real and isolated builds — an isolated CI run passing\n * `--budget-js` must still fail on an exceeded budget rather than silently\n * skipping the check. Exits non-zero when a budget is exceeded.\n */\nexport const runClientAssetChecks = async (\n staticDir: string,\n args: { analyze?: boolean } & BudgetArgs\n): Promise<void> => {\n if (args.analyze) {\n await reportBundleSizes(staticDir);\n }\n if ((await enforceBudget(staticDir, args)) === \"fail\") {\n process.exit(1);\n }\n};\n\n/**\n * Print the build summary box and run the optional bundle report / budget\n * gate against the served static dir. The deploy artifacts themselves\n * (search index, llms.txt, sitemap, robots, redirect and header files, …)\n * were written by the integration's `astro:build:done` hook during\n * `build()` — see `deploy/artifacts.ts`. Exits non-zero if a budget is\n * exceeded.\n */\nconst reportBuild = async (\n project: BlumeProject,\n distDir: string,\n args: { analyze?: boolean } & BudgetArgs\n): Promise<void> => {\n const { config } = project;\n const features = serverFeatures(config);\n // The sitemap needs both the flag and a `site` (absolute URLs) — only the\n // latter deserves the remediation hint.\n const sitemapNote = config.seo.sitemap\n ? \"no (set deployment.site)\"\n : \"no (seo.sitemap is false)\";\n const rows: [label: string, value: string | number][] = [\n [\"Output\", config.deployment.options.output],\n [\"Adapter\", config.deployment.kind],\n [\"Site\", config.deployment.options.site ?? \"not set\"],\n [\"Search\", config.search.provider.kind],\n [\"Redirects\", config.redirects.length],\n [\n \"Sitemap\",\n config.deployment.options.site && config.seo.sitemap\n ? \"yes\"\n : sitemapNote,\n ],\n [\"Robots\", config.seo.robots ? \"yes\" : \"no\"],\n [\"Agent JSON\", config.agents.agentReadability ? \"yes\" : \"no\"],\n [\"LLM files\", config.agents.llmsTxt.enabled ? \"yes\" : \"no\"],\n [\"Server features\", features.length > 0 ? features.join(\", \") : \"none\"],\n ];\n // One label column for every row, sized by the longest label.\n const labelWidth = Math.max(...rows.map(([label]) => label.length)) + 2;\n logger.box(\n rows\n .map(([label, value]) => `${label.padEnd(labelWidth)}${value}`)\n .join(\"\\n\")\n );\n\n await runClientAssetChecks(distDir, args);\n\n // Only reachable with --no-strict (strict aborts earlier): repeat the missing\n // count next to the success banner so it can't scroll away unseen.\n if (project.droppedPages > 0) {\n logger.warn(\n `${project.droppedPages} page(s) failed validation and are missing from this build.`\n );\n }\n logger.success(`Built to ${distDir}`);\n};\n\nexport const buildCommand = defineCommand({\n args: {\n analyze: {\n description: \"Report client JavaScript bundle sizes after the build.\",\n type: \"boolean\",\n },\n [BUDGET_CSS]: {\n description: \"Fail if total client CSS exceeds this many kB.\",\n type: \"string\",\n },\n [BUDGET_JS]: {\n description: \"Fail if total client JavaScript exceeds this many kB.\",\n type: \"string\",\n },\n isolated: {\n description:\n \"Build into an isolated .blume-verify runtime (and its own dist) so a running dev server and the real dist/ are untouched. For verifying changes while `blume dev` runs.\",\n type: \"boolean\",\n },\n preview: {\n description: \"Include drafts and unpublished CMS content.\",\n type: \"boolean\",\n },\n strict: {\n default: true,\n description:\n \"Fail on error diagnostics (default; pass --no-strict to build anyway, dropping pages that fail validation).\",\n type: \"boolean\",\n },\n },\n meta: commandMeta.build,\n async run({ args, rawArgs }) {\n const root = process.cwd();\n\n // citty accepts unknown flags, so a Blume 1 `--adapter vercel --output\n // server` would otherwise build a static site without a word.\n const removed = removedBuildFlags(rawArgs);\n if (removed.length > 0) {\n logger.error(\n `blume build no longer takes ${flagList(removed)}. ${removedBuildFlagsAdvice(removed)}`\n );\n process.exit(1);\n }\n await refuseIfEjected(root, \"build\");\n\n // `--isolated` (or BLUME_RUNTIME_DIR) relocates the whole runtime to a\n // sibling dir so this build never touches a live dev server's `.blume/` or\n // the user's real `dist/`. A non-default runtime dir has no dev lock, so the\n // refusal below lets it proceed; a plain build still refuses.\n const runtimeDir = args.isolated\n ? \".blume-verify\"\n : process.env.BLUME_RUNTIME_DIR;\n refuseIfDevRunning(root, \"building\", { isolatedHint: true, runtimeDir });\n if (args.isolated) {\n await ensureGitignore(root, [\".blume-verify/\"]);\n }\n\n validateBudgetFlags(args);\n\n const project = await prepareProject({\n mode: \"build\",\n preview: args.preview,\n root,\n runtimeDir,\n strict: args.strict,\n });\n\n logger.start(\n `Building ${project.graph.pages.length} page(s) (${project.config.deployment.options.output} output)`\n );\n\n // Hand the scanned project to the integration: its `astro:build:done`\n // hook writes the deploy artifacts (search index, llms.txt, sitemap, …)\n // into Astro's client output during the build. An isolated build is a\n // throwaway verify that only needs to confirm the site compiles and\n // renders, so it publishes nothing — no network post-steps (a hosted\n // search sync would push), no deploy artifacts.\n if (!runtimeDir) {\n publishBuildProject(project);\n }\n\n try {\n await build({\n logLevel: \"info\",\n root: project.context.outDir,\n });\n } catch (error) {\n // Astro rejects when the site fails to compile or render (MDX that\n // doesn't parse, a component that throws): report that as a build error\n // at the file it names, not as an internal error blaming Blume. A\n // BlumeError keeps its own diagnostic.\n if (error instanceof BlumeError || !(error instanceof Error)) {\n throw error;\n }\n reportDiagnostics(\n await astroBuildDiagnostics(error, {\n locate: buildFailureLocator(project),\n root,\n }),\n root\n );\n process.exit(1);\n }\n\n // A real build also prunes the cache; an isolated verify must not evict\n // cards a live dev server is still serving.\n await reportCardCache(project, !runtimeDir);\n\n // Everything the deploy target does differently after `astro build` comes\n // off its platform (see `deploy/platforms/*`): a server build's post-build\n // step (Vercel's function-bundle audit and negotiation routes, Cloudflare's\n // wrapper Worker), and where its bundle and static assets landed.\n const { deployment } = project.config;\n const platform = deployPlatform(deployment);\n const server = deployment.options.output === \"server\";\n const finalize = async (isolated: boolean): Promise<void> => {\n if (\n server &&\n platform.finalizeBuild &&\n !(await platform.finalizeBuild({ isolated, log: logger, project }))\n ) {\n process.exit(1);\n }\n };\n\n // The bundle report and budget gate still run for an isolated build —\n // `blume build --isolated --budget-js 100` exiting 0 without measuring\n // anything would be a silent false pass in CI. An isolated build never\n // surfaces the adapter bundle to the project root, so its output dirs\n // resolve under the relocated runtime.\n if (runtimeDir) {\n await finalize(true);\n await runClientAssetChecks(\n deployStaticDir(project.config, project.context),\n args\n );\n logger.success(\n `Isolated build OK — output at ${deployOutputDir(project.config, project.context)} (not published).`\n );\n return;\n }\n\n // A server adapter's deploy bundle is a build artifact — keep it out of\n // version control (Vercel's own CLI ignores `.vercel/` for the same reason).\n // Ignoring it is independent of whether the bundle had to be moved below:\n // Vercel writes straight to the project root, Netlify does not.\n const { ignoreDir } = platform.hiddenRuntime;\n if (server && ignoreDir) {\n await ensureGitignore(root, [ignoreDir]);\n }\n\n // Netlify writes its deploy bundle relative to the Astro root — which Blume\n // points at the hidden `.blume` runtime — so the bundle lands where the\n // deploy platform never looks. Surface it up to the project root before\n // publishing artifacts into the served static dir.\n const surfaced = await surfaceAdapterOutput(\n project.config,\n project.context\n );\n if (surfaced.moved) {\n logger.success(`Surfaced ${deployment.kind} output to ${surfaced.to}`);\n }\n\n await finalize(false);\n\n await reportBuild(\n project,\n deployStaticDir(project.config, project.context),\n args\n );\n },\n});\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "43360653920765D464756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
package/dist/cli/index.js
CHANGED
|
@@ -80,7 +80,7 @@ var commandMeta = {
|
|
|
80
80
|
name: "mcp-stdio"
|
|
81
81
|
},
|
|
82
82
|
migrate: {
|
|
83
|
-
description: "Migrate a docs site from Mintlify,
|
|
83
|
+
description: "Migrate a docs site from Mintlify, Docusaurus, GitBook, MkDocs, ReadMe, or another framework with a coding agent.",
|
|
84
84
|
name: "migrate"
|
|
85
85
|
},
|
|
86
86
|
preview: {
|
|
@@ -197,36 +197,61 @@ var DOCS_CONTENT_SOURCES = "/docs/content/sources";
|
|
|
197
197
|
var DOCS_CONTENT_SOURCES_OBSIDIAN = "/docs/content/sources/obsidian";
|
|
198
198
|
var DOCS_CONTENT_NAVIGATION = "/docs/content/navigation";
|
|
199
199
|
var DOCS_CONTENT_INCLUDES = "/docs/content/includes";
|
|
200
|
+
var DOCS_OPENAPI_WARNINGS = "/docs/references/openapi#spec-warnings";
|
|
201
|
+
var DOCS_OTHER_TOOLS_SYNTAX = "/docs/content/syntax#syntax-from-other-tools";
|
|
202
|
+
var DOCS_MARKDOWN_AND_MDX = "/docs/content#markdown-and-mdx";
|
|
200
203
|
var DOCS_PATHS = new Map(Object.entries({
|
|
201
204
|
BLUME_ADAPTER_REQUIRED: DOCS_DEPLOYMENT,
|
|
202
|
-
BLUME_ASSETS_UNCHECKED: DOCS_CLI_VALIDATE,
|
|
203
205
|
BLUME_ASSET_FETCH_FAILED: DOCS_CONTENT_SOURCES,
|
|
204
206
|
BLUME_BROKEN_ANCHOR: DOCS_CLI_VALIDATE,
|
|
205
207
|
BLUME_BROKEN_ASSET: DOCS_CLI_VALIDATE,
|
|
206
208
|
BLUME_BROKEN_LINK: DOCS_CLI_VALIDATE,
|
|
209
|
+
BLUME_BROKEN_REDIRECT: DOCS_CLI_VALIDATE,
|
|
210
|
+
BLUME_CODE_FENCE_OPTION: "/docs/content/syntax",
|
|
207
211
|
BLUME_COMPONENTS_INVALID: "/docs/configuration/customization",
|
|
208
212
|
BLUME_CONFIG_INVALID: "/docs/configuration",
|
|
209
213
|
BLUME_CONFIG_LOAD_FAILED: "/docs/configuration",
|
|
210
214
|
BLUME_CONTENT_ROOT_MISSING: DOCS_CONTENT_SOURCES,
|
|
211
215
|
BLUME_DEAD_LINK: DOCS_CLI_VALIDATE,
|
|
212
216
|
BLUME_DEPENDENCY_MISSING: "/docs/cli/doctor",
|
|
217
|
+
BLUME_DIRECTIVE_CLOSING_TEXT: "/docs/content/syntax",
|
|
218
|
+
BLUME_DIRECTIVE_OPENING_TEXT: "/docs/content/syntax",
|
|
219
|
+
BLUME_DIRECTIVE_SPACED_NAME: "/docs/content/syntax",
|
|
213
220
|
BLUME_DUPLICATE_ROUTE: DOCS_CONTENT_NAVIGATION,
|
|
214
221
|
BLUME_DUPLICATE_SIDEBAR_ORDER: DOCS_CONTENT_NAVIGATION,
|
|
215
222
|
BLUME_EXAMPLE_NOT_FOUND: "/docs/content/components#component",
|
|
216
223
|
BLUME_FRONTMATTER_INVALID: "/docs/content/frontmatter",
|
|
224
|
+
BLUME_GRAPHQL_UNKNOWN_CODE_SAMPLE: "/docs/references/graphql",
|
|
217
225
|
BLUME_INCLUDE_CYCLE: DOCS_CONTENT_INCLUDES,
|
|
218
226
|
BLUME_INCLUDE_MALFORMED: DOCS_CONTENT_INCLUDES,
|
|
219
227
|
BLUME_INCLUDE_NOT_FOUND: DOCS_CONTENT_INCLUDES,
|
|
220
228
|
BLUME_INCLUDE_OUTSIDE_ROOT: DOCS_CONTENT_INCLUDES,
|
|
229
|
+
BLUME_MDC_SYNTAX: DOCS_OTHER_TOOLS_SYNTAX,
|
|
230
|
+
BLUME_MDX_ATTRIBUTE_LIST: DOCS_OTHER_TOOLS_SYNTAX,
|
|
221
231
|
BLUME_MDX_CURLY_ANCHOR: "/docs/content/syntax",
|
|
232
|
+
BLUME_MDX_EVENT_HANDLER: "/docs/content/islands",
|
|
233
|
+
BLUME_MDX_SYNTAX: DOCS_MARKDOWN_AND_MDX,
|
|
234
|
+
BLUME_MDX_UNCLOSED_ELEMENT: DOCS_OTHER_TOOLS_SYNTAX,
|
|
235
|
+
BLUME_MDX_UNDEFINED_NAME: DOCS_MARKDOWN_AND_MDX,
|
|
236
|
+
BLUME_MD_ATTRIBUTE_LIST: DOCS_OTHER_TOOLS_SYNTAX,
|
|
237
|
+
BLUME_MD_CURLY_ANCHOR: "/docs/content/syntax",
|
|
238
|
+
BLUME_MD_DIRECTIVE: "/docs/content/syntax",
|
|
239
|
+
BLUME_MD_GITHUB_ALERT: "/docs/content/syntax",
|
|
222
240
|
BLUME_META_INVALID: "/docs/content/meta",
|
|
223
241
|
BLUME_META_LOAD_FAILED: "/docs/content/meta",
|
|
242
|
+
BLUME_META_OUTSIDE_INCLUDE: "/docs/content/meta",
|
|
243
|
+
BLUME_META_UNKNOWN_PAGE: "/docs/content/meta",
|
|
224
244
|
BLUME_MISSING_SECRET: DOCS_DEPLOYMENT,
|
|
225
245
|
BLUME_NAV_DUPLICATE_LABEL: DOCS_CONTENT_NAVIGATION,
|
|
226
246
|
BLUME_NAV_HIDDEN_IN_SIDEBAR: DOCS_CONTENT_NAVIGATION,
|
|
227
247
|
BLUME_NAV_INDEX_TITLE_MISMATCH: DOCS_CONTENT_NAVIGATION,
|
|
228
248
|
BLUME_NAV_MISSING_PAGE: DOCS_CONTENT_NAVIGATION,
|
|
229
249
|
BLUME_NODE_VERSION: "/docs/quickstart",
|
|
250
|
+
BLUME_OPENAPI_DUPLICATE_OPERATION_ID: DOCS_OPENAPI_WARNINGS,
|
|
251
|
+
BLUME_OPENAPI_LOCAL_SERVER: DOCS_OPENAPI_WARNINGS,
|
|
252
|
+
BLUME_OPENAPI_NULLABLE: DOCS_OPENAPI_WARNINGS,
|
|
253
|
+
BLUME_OPENAPI_UNKNOWN_CODE_SAMPLE: "/docs/references/openapi#code-samples-and-schemas",
|
|
254
|
+
BLUME_PUBLIC_OPENAPI_JSON: "/docs/discoverability/json-api",
|
|
230
255
|
BLUME_SEARCH_SYNC_FAILED: "/docs/configuration/search",
|
|
231
256
|
BLUME_SERVER_FEATURE_REQUIRED: DOCS_DEPLOYMENT,
|
|
232
257
|
BLUME_SIDEBAR_DISPLAY_IGNORED: DOCS_CONTENT_NAVIGATION,
|
|
@@ -238,15 +263,23 @@ var DOCS_PATHS = new Map(Object.entries({
|
|
|
238
263
|
BLUME_SOURCE_UNAVAILABLE: DOCS_CONTENT_SOURCES,
|
|
239
264
|
BLUME_SOURCE_UNRESOLVED_LINK: "/docs/content/sources/contentful",
|
|
240
265
|
BLUME_SOURCE_UNSUPPORTED_NODE: "/docs/content/sources/payload",
|
|
266
|
+
BLUME_SVG_UNOPTIMIZED: "/docs/content/syntax#links-and-images",
|
|
267
|
+
BLUME_TEMPLATE_TAG: DOCS_OTHER_TOOLS_SYNTAX,
|
|
268
|
+
BLUME_THEME_COLOR_INVALID: "/docs/configuration/theming",
|
|
241
269
|
BLUME_TRANSLATE_MISSING: "/docs/cli/translate",
|
|
242
270
|
BLUME_TRANSLATE_STALE: "/docs/cli/translate",
|
|
271
|
+
BLUME_TSCONFIG_EXTENDS: "/docs/cli#type-checking",
|
|
272
|
+
BLUME_UNKNOWN_CODE_LANGUAGE: "/docs/content/syntax",
|
|
243
273
|
BLUME_UNKNOWN_COMPONENT: "/docs/configuration/customization",
|
|
244
274
|
BLUME_UNKNOWN_DIRECTIVE: "/docs/content/syntax",
|
|
245
275
|
BLUME_UNKNOWN_ICON: DOCS_CONTENT_NAVIGATION,
|
|
246
276
|
BLUME_UNKNOWN_OPTION: "/docs/cli",
|
|
277
|
+
BLUME_UNKNOWN_PROP: "/docs/content/components",
|
|
247
278
|
BLUME_UNLOADABLE_FILE_NAME: "/docs/content",
|
|
279
|
+
BLUME_UNSUPPORTED_LINK_SCHEME: DOCS_CLI_VALIDATE,
|
|
248
280
|
BLUME_WIKILINK_AMBIGUOUS: DOCS_CONTENT_SOURCES_OBSIDIAN,
|
|
249
281
|
BLUME_WIKILINK_UNRESOLVED: DOCS_CONTENT_SOURCES_OBSIDIAN,
|
|
282
|
+
BLUME_WIKILINK_UNSUPPORTED: DOCS_OTHER_TOOLS_SYNTAX,
|
|
250
283
|
BLUME_YARN_PNP: "/docs/quickstart"
|
|
251
284
|
}));
|
|
252
285
|
var resolveDocsUrl = (code) => {
|
|
@@ -515,6 +548,29 @@ ${summary}
|
|
|
515
548
|
return hasErrors(diagnostics);
|
|
516
549
|
};
|
|
517
550
|
|
|
551
|
+
// src/core/closest-match.ts
|
|
552
|
+
var distance = (from, to) => {
|
|
553
|
+
let previous = Array.from({ length: to.length + 1 }, (_, index) => index);
|
|
554
|
+
for (const [row, fromChar] of [...from].entries()) {
|
|
555
|
+
const current = [row + 1];
|
|
556
|
+
for (const [column, toChar] of [...to].entries()) {
|
|
557
|
+
current.push(Math.min((previous[column + 1] ?? 0) + 1, (current[column] ?? 0) + 1, (previous[column] ?? 0) + (fromChar === toChar ? 0 : 1)));
|
|
558
|
+
}
|
|
559
|
+
previous = current;
|
|
560
|
+
}
|
|
561
|
+
return previous[to.length] ?? 0;
|
|
562
|
+
};
|
|
563
|
+
var closestMatch = (name, candidates) => {
|
|
564
|
+
let best;
|
|
565
|
+
for (const candidate of candidates) {
|
|
566
|
+
const edits = distance(name, candidate);
|
|
567
|
+
if (edits <= 2 && edits * 2 < candidate.length && (best === undefined || edits < best.edits)) {
|
|
568
|
+
best = { candidate, edits };
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
return best?.candidate;
|
|
572
|
+
};
|
|
573
|
+
|
|
518
574
|
// src/cli/unknown-flags.ts
|
|
519
575
|
var kebabCase = (name) => name.replaceAll(/(?<upper>[A-Z])/gu, (letter) => `-${letter.toLowerCase()}`);
|
|
520
576
|
var camelCase = (name) => name.replaceAll(/-(?<letter>[a-z])/gu, (match) => match.slice(1).toUpperCase());
|
|
@@ -550,27 +606,6 @@ var knownFlags = (argsDef) => {
|
|
|
550
606
|
}
|
|
551
607
|
return flags;
|
|
552
608
|
};
|
|
553
|
-
var distance = (from, to) => {
|
|
554
|
-
let previous = Array.from({ length: to.length + 1 }, (_, index) => index);
|
|
555
|
-
for (const [row, fromChar] of [...from].entries()) {
|
|
556
|
-
const current = [row + 1];
|
|
557
|
-
for (const [column, toChar] of [...to].entries()) {
|
|
558
|
-
current.push(Math.min((previous[column + 1] ?? 0) + 1, (current[column] ?? 0) + 1, (previous[column] ?? 0) + (fromChar === toChar ? 0 : 1)));
|
|
559
|
-
}
|
|
560
|
-
previous = current;
|
|
561
|
-
}
|
|
562
|
-
return previous[to.length] ?? 0;
|
|
563
|
-
};
|
|
564
|
-
var closestMatch = (name, candidates) => {
|
|
565
|
-
let best;
|
|
566
|
-
for (const candidate of candidates) {
|
|
567
|
-
const edits = distance(name, candidate);
|
|
568
|
-
if (edits <= 2 && edits * 2 < candidate.length && (best === undefined || edits < best.edits)) {
|
|
569
|
-
best = { candidate, edits };
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
return best?.candidate;
|
|
573
|
-
};
|
|
574
609
|
var parseToken = (arg) => {
|
|
575
610
|
const long = arg.startsWith("--");
|
|
576
611
|
const [name = ""] = arg.slice(long ? 2 : 1).split("=");
|
|
@@ -690,24 +725,24 @@ var main = defineCommand({
|
|
|
690
725
|
version: getBlumeVersion()
|
|
691
726
|
},
|
|
692
727
|
subCommands: {
|
|
693
|
-
add: lazyCommand(commandMeta.add, () => import("./chunk-
|
|
694
|
-
audit: lazyCommand(commandMeta.audit, () => import("./chunk-
|
|
695
|
-
build: lazyCommand(commandMeta.build, () => import("./chunk-
|
|
696
|
-
check: lazyCommand(commandMeta.check, () => import("./chunk-
|
|
697
|
-
dev: lazyCommand(commandMeta.dev, () => import("./chunk-
|
|
698
|
-
doctor: lazyCommand(commandMeta.doctor, () => import("./chunk-
|
|
699
|
-
eject: lazyCommand(commandMeta.eject, () => import("./chunk-
|
|
700
|
-
eval: lazyCommand(commandMeta.eval, () => import("./chunk-
|
|
701
|
-
init: lazyCommand(commandMeta.init, () => import("./chunk-
|
|
702
|
-
"mcp-stdio": lazyCommand(commandMeta["mcp-stdio"], () => import("./chunk-
|
|
703
|
-
migrate: lazyCommand(commandMeta.migrate, () => import("./chunk-
|
|
704
|
-
preview: lazyCommand(commandMeta.preview, () => import("./chunk-
|
|
705
|
-
skill: lazyCommand(commandMeta.skill, () => import("./chunk-
|
|
706
|
-
sync: lazyCommand(commandMeta.sync, () => import("./chunk-
|
|
707
|
-
translate: lazyCommand(commandMeta.translate, () => import("./chunk-
|
|
708
|
-
upgrade: lazyCommand(commandMeta.upgrade, () => import("./chunk-
|
|
709
|
-
validate: lazyCommand(commandMeta.validate, () => import("./chunk-
|
|
710
|
-
version: lazyCommand(commandMeta.version, () => import("./chunk-
|
|
728
|
+
add: lazyCommand(commandMeta.add, () => import("./chunk-th0pgaj5.js"), "addCommand"),
|
|
729
|
+
audit: lazyCommand(commandMeta.audit, () => import("./chunk-49r370mb.js"), "auditCommand"),
|
|
730
|
+
build: lazyCommand(commandMeta.build, () => import("./chunk-xt0qvz1t.js"), "buildCommand"),
|
|
731
|
+
check: lazyCommand(commandMeta.check, () => import("./chunk-rkqae7kh.js"), "checkCommand"),
|
|
732
|
+
dev: lazyCommand(commandMeta.dev, () => import("./chunk-vzy9rh6y.js"), "devCommand"),
|
|
733
|
+
doctor: lazyCommand(commandMeta.doctor, () => import("./chunk-enk76qd5.js"), "doctorCommand"),
|
|
734
|
+
eject: lazyCommand(commandMeta.eject, () => import("./chunk-br0n8n3e.js"), "ejectCommand"),
|
|
735
|
+
eval: lazyCommand(commandMeta.eval, () => import("./chunk-t5xx74rd.js"), "evalCommand"),
|
|
736
|
+
init: lazyCommand(commandMeta.init, () => import("./chunk-frk2wdq1.js"), "initCommand"),
|
|
737
|
+
"mcp-stdio": lazyCommand(commandMeta["mcp-stdio"], () => import("./chunk-m9bp2hc1.js"), "mcpStdioCommand"),
|
|
738
|
+
migrate: lazyCommand(commandMeta.migrate, () => import("./chunk-gprwej7h.js"), "migrateCommand"),
|
|
739
|
+
preview: lazyCommand(commandMeta.preview, () => import("./chunk-cn3dy3hz.js"), "previewCommand"),
|
|
740
|
+
skill: lazyCommand(commandMeta.skill, () => import("./chunk-dyk3r7jw.js"), "skillCommand"),
|
|
741
|
+
sync: lazyCommand(commandMeta.sync, () => import("./chunk-xgq4eytj.js"), "syncCommand"),
|
|
742
|
+
translate: lazyCommand(commandMeta.translate, () => import("./chunk-ahc5gc9h.js"), "translateCommand"),
|
|
743
|
+
upgrade: lazyCommand(commandMeta.upgrade, () => import("./chunk-7tekknev.js"), "upgradeCommand"),
|
|
744
|
+
validate: lazyCommand(commandMeta.validate, () => import("./chunk-dpcahcrb.js"), "validateCommand"),
|
|
745
|
+
version: lazyCommand(commandMeta.version, () => import("./chunk-mrvh4c88.js"), "versionCommand")
|
|
711
746
|
}
|
|
712
747
|
});
|
|
713
748
|
loadEnvFiles(process.cwd());
|
|
@@ -729,6 +764,7 @@ export {
|
|
|
729
764
|
reportInternalError,
|
|
730
765
|
BlumeError,
|
|
731
766
|
enrichDiagnostic,
|
|
767
|
+
locatePath,
|
|
732
768
|
locateFrontmatterKey,
|
|
733
769
|
diagnosticsFromIssues,
|
|
734
770
|
diagnosticsFromZod,
|
|
@@ -742,5 +778,5 @@ export {
|
|
|
742
778
|
closestMatch
|
|
743
779
|
};
|
|
744
780
|
|
|
745
|
-
//# debugId=
|
|
781
|
+
//# debugId=0853E5F28957397564756E2164756E21
|
|
746
782
|
//# sourceMappingURL=index.js.map
|