blume 2.0.3 → 2.1.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 -0
- package/CHANGELOG.md +142 -0
- package/README.md +1 -1
- package/dist/cli/{chunk-5f86nr5m.js → chunk-073rdvgb.js} +21 -48
- package/dist/cli/{chunk-5f86nr5m.js.map → chunk-073rdvgb.js.map} +4 -5
- package/dist/cli/{chunk-ga0pf4aj.js → chunk-0n9xkp3d.js} +12 -3
- package/dist/cli/{chunk-ga0pf4aj.js.map → chunk-0n9xkp3d.js.map} +3 -3
- package/dist/cli/chunk-150jk7km.js +52 -0
- package/dist/cli/chunk-150jk7km.js.map +10 -0
- package/dist/cli/{chunk-9t7a85s3.js → chunk-313vnn40.js} +30 -19
- package/dist/cli/chunk-313vnn40.js.map +10 -0
- package/dist/cli/{chunk-tkacnehg.js → chunk-3v3ffbrj.js} +2 -2
- package/dist/cli/{chunk-q58y5e6a.js → chunk-3x6x3pph.js} +46 -24
- package/dist/cli/chunk-3x6x3pph.js.map +10 -0
- package/dist/cli/{chunk-1d7ve1dm.js → chunk-42t4jxdx.js} +37 -5
- package/dist/cli/chunk-42t4jxdx.js.map +12 -0
- package/dist/cli/{chunk-8ktnccpt.js → chunk-54ztw1nj.js} +21 -2
- package/dist/cli/chunk-54ztw1nj.js.map +10 -0
- package/dist/cli/{chunk-hm3vjy5s.js → chunk-5vjtgs6e.js} +28 -10
- package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-5vjtgs6e.js.map} +4 -4
- package/dist/cli/chunk-66w9j7p6.js +322 -0
- package/dist/cli/chunk-66w9j7p6.js.map +14 -0
- package/dist/cli/{chunk-2hsdwb9n.js → chunk-7ppf1rva.js} +34 -18
- package/dist/cli/chunk-7ppf1rva.js.map +10 -0
- package/dist/cli/{chunk-r9rcc4w7.js → chunk-8y2kmjv8.js} +7 -7
- package/dist/cli/{chunk-r20tn01b.js → chunk-c1y538kd.js} +8 -2
- package/dist/cli/{chunk-r20tn01b.js.map → chunk-c1y538kd.js.map} +3 -3
- package/dist/cli/{chunk-2eytanqx.js → chunk-c887fj0s.js} +2 -2
- package/dist/cli/{chunk-p3v96n38.js → chunk-cfyg47zg.js} +16 -6
- package/dist/cli/chunk-cfyg47zg.js.map +10 -0
- package/dist/cli/chunk-cm89scdv.js +443 -0
- package/dist/cli/chunk-cm89scdv.js.map +11 -0
- package/dist/cli/{chunk-akbpwfxc.js → chunk-dzwehpy7.js} +2 -2
- package/dist/cli/{chunk-wrr3j9w9.js → chunk-e6atmn4h.js} +299 -72
- package/dist/cli/chunk-e6atmn4h.js.map +36 -0
- package/dist/cli/{chunk-tzmab476.js → chunk-e8xw9qkh.js} +8 -6
- package/dist/cli/{chunk-tzmab476.js.map → chunk-e8xw9qkh.js.map} +3 -3
- package/dist/cli/{chunk-6dsbexzp.js → chunk-e9q7a2ak.js} +17 -15
- package/dist/cli/{chunk-6dsbexzp.js.map → chunk-e9q7a2ak.js.map} +2 -2
- package/dist/cli/{chunk-pv29h0wf.js → chunk-ehweg4fr.js} +5155 -1249
- package/dist/cli/chunk-ehweg4fr.js.map +218 -0
- package/dist/cli/{chunk-c8chx29p.js → chunk-ep6nd0rn.js} +390 -318
- package/dist/cli/chunk-ep6nd0rn.js.map +36 -0
- package/dist/cli/{chunk-p73c0m7w.js → chunk-fdrkhpjy.js} +18 -15
- package/dist/cli/{chunk-p73c0m7w.js.map → chunk-fdrkhpjy.js.map} +3 -3
- package/dist/cli/{chunk-2z928egk.js → chunk-ft9vfys6.js} +5 -5
- package/dist/cli/{chunk-5m5nmvyq.js → chunk-gb420vvz.js} +316 -79
- package/dist/cli/chunk-gb420vvz.js.map +17 -0
- package/dist/cli/{chunk-vg9r4eb9.js → chunk-hebn0tpx.js} +86 -13
- package/dist/cli/chunk-hebn0tpx.js.map +14 -0
- package/dist/cli/{chunk-35d4wj9f.js → chunk-htrwgabr.js} +41 -23
- package/dist/cli/chunk-htrwgabr.js.map +15 -0
- package/dist/cli/{chunk-g4hq16wv.js → chunk-hx3xqnk9.js} +16 -14
- package/dist/cli/{chunk-g4hq16wv.js.map → chunk-hx3xqnk9.js.map} +2 -2
- package/dist/cli/chunk-j134vrp2.js +65 -0
- package/dist/cli/chunk-j134vrp2.js.map +10 -0
- package/dist/cli/{chunk-a58773jm.js → chunk-kma9f6sf.js} +2 -2
- package/dist/cli/chunk-kwrg63tm.js +31 -0
- package/dist/cli/chunk-kwrg63tm.js.map +10 -0
- package/dist/cli/{chunk-ey84smr6.js → chunk-mrcccgnh.js} +6 -6
- package/dist/cli/{chunk-ey84smr6.js.map → chunk-mrcccgnh.js.map} +1 -1
- package/dist/cli/{chunk-yfyb25rh.js → chunk-n0v7m8ry.js} +24 -8
- package/dist/cli/chunk-n0v7m8ry.js.map +14 -0
- package/dist/cli/{chunk-j85vccga.js → chunk-ncj7w596.js} +576 -367
- package/dist/cli/chunk-ncj7w596.js.map +35 -0
- package/dist/cli/{chunk-5xvm6tfj.js → chunk-nq1d20w2.js} +17 -15
- package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-nq1d20w2.js.map} +2 -2
- package/dist/cli/{chunk-pehfxfta.js → chunk-nrns10mj.js} +6 -98
- package/dist/cli/chunk-nrns10mj.js.map +10 -0
- package/dist/cli/{chunk-crgn1q09.js → chunk-sds923fa.js} +4 -4
- package/dist/cli/chunk-t2m5j4pr.js +104 -0
- package/dist/cli/chunk-t2m5j4pr.js.map +11 -0
- package/dist/cli/{chunk-acanzt5p.js → chunk-tdqhyxfz.js} +6 -6
- package/dist/cli/chunk-tphac74f.js +126 -0
- package/dist/cli/chunk-tphac74f.js.map +11 -0
- package/dist/cli/chunk-w1r4vase.js +18 -0
- package/dist/cli/chunk-w1r4vase.js.map +10 -0
- package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
- package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
- package/dist/cli/index.js +31 -20
- package/dist/cli/index.js.map +5 -5
- package/dist/types/ai/agent-surface.d.ts +8 -7
- package/dist/types/ai/ai-catalog.d.ts +7 -0
- package/dist/types/ai/ask-context.d.ts +26 -0
- package/dist/types/ai/ask.d.ts +271 -58
- package/dist/types/ai/component-markdown.d.ts +2 -0
- package/dist/types/ai/index.d.ts +2 -2
- package/dist/types/ai/openapi-components.d.ts +4 -1
- package/dist/types/ai/site-skill.d.ts +26 -0
- package/dist/types/ai/skills.d.ts +16 -0
- package/dist/types/astro/integration.d.ts +9 -0
- package/dist/types/astro/markdown-negotiation.d.ts +3 -0
- package/dist/types/astro/pages.d.ts +10 -0
- package/dist/types/captcha/hcaptcha.d.ts +27 -0
- package/dist/types/captcha/index.d.ts +28 -0
- package/dist/types/captcha/schema.d.ts +29 -0
- package/dist/types/captcha/turnstile.d.ts +28 -0
- package/dist/types/cli/init/scaffold.d.ts +1 -1
- package/dist/types/components/content/api-field.d.ts +62 -0
- package/dist/types/components/content/api-page.d.ts +100 -0
- package/dist/types/components/layout/nav-utils.d.ts +26 -0
- package/dist/types/components/openapi/code-samples.d.ts +29 -0
- package/dist/types/components/openapi/helpers.d.ts +158 -0
- package/dist/types/components/openapi/security.d.ts +95 -0
- package/dist/types/components/openapi/snippets.d.ts +60 -0
- package/dist/types/consent/ethyca.d.ts +48 -0
- package/dist/types/consent/index.d.ts +37 -0
- package/dist/types/consent/native.d.ts +28 -0
- package/dist/types/consent/osano.d.ts +42 -0
- package/dist/types/consent/schema.d.ts +110 -0
- package/dist/types/core/changelog-index.d.ts +8 -0
- package/dist/types/core/config-input.d.ts +217 -23
- package/dist/types/core/data.d.ts +53 -4
- package/dist/types/core/footer.d.ts +8 -0
- package/dist/types/core/i18n-ui.d.ts +88 -0
- package/dist/types/core/includes.d.ts +8 -2
- package/dist/types/core/links.d.ts +8 -0
- package/dist/types/core/localizable.d.ts +7 -0
- package/dist/types/core/page-modes.d.ts +29 -0
- package/dist/types/core/probe.d.ts +2 -0
- package/dist/types/core/project-graph.d.ts +6 -0
- package/dist/types/core/redirect-patterns.d.ts +152 -0
- package/dist/types/core/related.d.ts +40 -0
- package/dist/types/core/schema.d.ts +670 -56
- package/dist/types/core/sources/cache.d.ts +3 -0
- package/dist/types/core/sources/contentful-rich-text.d.ts +11 -2
- package/dist/types/core/sources/contentful.d.ts +17 -1
- package/dist/types/core/sources/lexical.d.ts +5 -0
- package/dist/types/core/sources/normalize.d.ts +20 -1
- package/dist/types/core/sources/read.d.ts +5 -0
- package/dist/types/core/sources/remote.d.ts +37 -10
- package/dist/types/core/sources/sanity.d.ts +1 -1
- package/dist/types/core/types.d.ts +18 -1
- package/dist/types/core/variables.d.ts +42 -0
- package/dist/types/deploy/adapter-output.d.ts +2 -1
- package/dist/types/deploy/adapters/cloudflare.d.ts +7 -5
- package/dist/types/deploy/adapters/node.d.ts +58 -23
- package/dist/types/deploy/adapters/registry.d.ts +10 -0
- package/dist/types/deploy/adapters/types.d.ts +3 -2
- package/dist/types/deploy/node-headers.d.ts +13 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +15 -7
- package/dist/types/deploy/platforms/netlify.d.ts +7 -0
- package/dist/types/deploy/platforms/node.d.ts +3 -1
- package/dist/types/deploy/platforms/types.d.ts +18 -7
- package/dist/types/deploy/platforms/vercel.d.ts +26 -1
- package/dist/types/deploy/redirects.d.ts +55 -11
- package/dist/types/deploy/sitemap.d.ts +2 -1
- package/dist/types/deploy/vercel-negotiation.d.ts +51 -21
- package/dist/types/markdown/code-title.d.ts +17 -0
- package/dist/types/markdown/features.d.ts +3 -2
- package/dist/types/narration/build.d.ts +70 -0
- package/dist/types/narration/provider.d.ts +26 -0
- package/dist/types/narration/script.d.ts +154 -0
- package/dist/types/openapi/checks.d.ts +27 -0
- package/dist/types/openapi/graphql.d.ts +6 -0
- package/dist/types/openapi/model.d.ts +27 -10
- package/dist/types/openapi/overlay.d.ts +54 -0
- package/dist/types/openapi/parse.d.ts +16 -0
- package/dist/types/openapi/references.d.ts +30 -4
- package/dist/types/ratelimit/cloudflare.d.ts +39 -0
- package/dist/types/ratelimit/index.d.ts +27 -0
- package/dist/types/ratelimit/memory.d.ts +36 -0
- package/dist/types/ratelimit/schema.d.ts +119 -0
- package/dist/types/ratelimit/upstash.d.ts +46 -0
- package/dist/types/ratelimit/wrangler.d.ts +23 -0
- package/dist/types/reference/asyncapi.d.ts +10 -10
- package/dist/types/reference/graphql.d.ts +89 -11
- package/dist/types/reference/index.d.ts +1 -1
- package/dist/types/reference/openapi.d.ts +33 -12
- package/dist/types/reference/options.d.ts +82 -6
- package/dist/types/reference/scalar.d.ts +13 -0
- package/dist/types/reference/schema.d.ts +144 -36
- package/dist/types/search/adapters/registry.d.ts +3 -0
- package/dist/types/search/adapters/typesense.d.ts +14 -4
- package/dist/types/search/build.d.ts +3 -1
- package/dist/types/search/documents.d.ts +12 -1
- package/dist/types/search/orama-index.d.ts +13 -9
- package/dist/types/search/sync/algolia.d.ts +5 -2
- package/dist/types/search/sync/index.d.ts +3 -1
- package/dist/types/search/sync/typesense.d.ts +11 -7
- package/dist/types/seo/metatags.d.ts +20 -0
- package/dist/types/sources/contentful.d.ts +16 -0
- package/dist/types/sources/github-releases.d.ts +8 -1
- package/dist/types/sources/payload.d.ts +2 -0
- package/dist/types/sources/registry.d.ts +54 -0
- package/dist/types/sources/shared.d.ts +3 -0
- package/dist/types/sources/strapi.d.ts +2 -0
- package/docs/01-quickstart.mdx +4 -2
- package/docs/02-deployment.mdx +71 -17
- package/docs/03-upgrading.mdx +4 -4
- package/docs/04-migrating.mdx +1 -1
- package/docs/advanced/changelog.mdx +13 -2
- package/docs/advanced/skills.mdx +15 -1
- package/docs/cli/audit.mdx +51 -8
- package/docs/cli/doctor.mdx +5 -1
- package/docs/cli/evals.mdx +4 -4
- package/docs/cli/index.mdx +1 -0
- package/docs/cli/translate.mdx +1 -0
- package/docs/cli/validate.mdx +4 -3
- package/docs/configuration/analytics.mdx +3 -1
- package/docs/configuration/assistant.mdx +194 -38
- package/docs/configuration/consent.mdx +100 -0
- package/docs/configuration/customization.mdx +8 -6
- package/docs/configuration/export.mdx +5 -3
- package/docs/configuration/index.mdx +64 -5
- package/docs/configuration/meta.ts +3 -0
- package/docs/configuration/narration.mdx +119 -0
- package/docs/configuration/rate-limiting.mdx +90 -0
- package/docs/configuration/search.mdx +63 -12
- package/docs/configuration/theming.mdx +3 -1
- package/docs/content/components.mdx +108 -2
- package/docs/content/frontmatter.mdx +80 -2
- package/docs/content/i18n.mdx +39 -4
- package/docs/content/includes.mdx +16 -0
- package/docs/content/meta.mdx +1 -0
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +32 -10
- package/docs/content/sources/contentful.mdx +35 -0
- package/docs/content/sources/custom.mdx +43 -0
- package/docs/content/sources/github-releases.mdx +39 -0
- package/docs/content/sources/index.mdx +91 -0
- package/docs/content/sources/meta.ts +16 -0
- package/docs/content/sources/notion.mdx +32 -0
- package/docs/content/sources/obsidian.mdx +37 -0
- package/docs/content/sources/payload.mdx +31 -0
- package/docs/content/sources/remote-mdx.mdx +44 -0
- package/docs/content/sources/sanity.mdx +29 -0
- package/docs/content/sources/strapi.mdx +32 -0
- package/docs/content/syntax.mdx +69 -4
- package/docs/content/variables.mdx +41 -0
- package/docs/discoverability/agent-discovery.mdx +29 -2
- package/docs/discoverability/index.mdx +2 -2
- package/docs/discoverability/json-api.mdx +2 -0
- package/docs/discoverability/llms-txt.mdx +2 -2
- package/docs/discoverability/markdown.mdx +3 -1
- package/docs/discoverability/mcp.mdx +4 -0
- package/docs/discoverability/metadata.mdx +17 -0
- package/docs/discoverability/sitemap-and-robots.mdx +1 -1
- package/docs/references/api-pages.mdx +74 -0
- package/docs/references/asyncapi.mdx +4 -2
- package/docs/references/graphql.mdx +14 -2
- package/docs/references/meta.ts +1 -1
- package/docs/references/openapi.mdx +148 -7
- package/docs/references/scalar.mdx +3 -1
- package/package.json +43 -8
- package/skills/blume/SKILL.md +3 -0
- package/skills/blume-migrate/SKILL.md +6 -6
- package/skills/blume-migrate/references/docusaurus.md +7 -7
- package/skills/blume-migrate/references/fumadocs.md +17 -13
- package/skills/blume-migrate/references/mintlify.md +37 -19
- package/skills/blume-migrate/references/nextra.md +10 -7
- package/skills/blume-migrate/references/starlight.md +11 -8
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
- package/skills/blume-write-skill/SKILL.md +82 -0
- package/src/ai/agent-readability.ts +2 -1
- package/src/ai/agent-surface.ts +9 -7
- package/src/ai/ai-catalog.ts +6 -3
- package/src/ai/ask-context.ts +103 -20
- package/src/ai/ask-data.ts +6 -0
- package/src/ai/ask-limits.ts +13 -0
- package/src/ai/ask-tools.ts +142 -0
- package/src/ai/ask.ts +354 -76
- package/src/ai/changelog-markdown.ts +11 -6
- package/src/ai/component-markdown.ts +76 -1
- package/src/ai/cors.ts +14 -3
- package/src/ai/index.ts +12 -0
- package/src/ai/llms.ts +6 -2
- package/src/ai/markdown.ts +2 -1
- package/src/ai/mcp/data.ts +6 -0
- package/src/ai/mcp/query.ts +14 -6
- package/src/ai/openapi-components.ts +36 -6
- package/src/ai/relative-links.ts +4 -38
- package/src/ai/site-skill.ts +274 -0
- package/src/ai/skills.ts +35 -2
- package/src/ai/write-skill.ts +97 -0
- package/src/astro/generate.ts +210 -66
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +42 -4
- package/src/astro/markdown-negotiation.ts +3 -0
- package/src/astro/module-types.ts +9 -1
- package/src/astro/pages.ts +23 -0
- package/src/astro/templates.ts +406 -108
- package/src/astro/variables.ts +31 -0
- package/src/audit/catalog.ts +38 -3
- package/src/audit/checks/contrast.ts +183 -0
- package/src/audit/checks/i18n.ts +2 -3
- package/src/audit/checks/indexability.ts +2 -3
- package/src/audit/checks/links.ts +19 -13
- package/src/audit/checks/network.ts +110 -6
- package/src/audit/checks/redirects.ts +6 -4
- package/src/audit/checks/robots.ts +58 -2
- package/src/audit/checks/sitemap.ts +2 -3
- package/src/audit/redirects.ts +46 -15
- package/src/audit/run.ts +5 -0
- package/src/audit/types.ts +4 -1
- package/src/audit/url.ts +14 -5
- package/src/blume-modules.d.ts +12 -1
- package/src/captcha/client.ts +152 -0
- package/src/captcha/hcaptcha.ts +36 -0
- package/src/captcha/index.ts +28 -0
- package/src/captcha/schema.ts +32 -0
- package/src/captcha/turnstile.ts +38 -0
- package/src/captcha/verify.ts +71 -0
- package/src/cli/args.ts +51 -0
- package/src/cli/build-failure.ts +23 -0
- package/src/cli/command-meta.ts +5 -0
- package/src/cli/commands/audit.ts +10 -1
- package/src/cli/commands/dev.ts +18 -2
- package/src/cli/commands/doctor.ts +67 -28
- package/src/cli/commands/eval.ts +36 -4
- package/src/cli/commands/init.ts +6 -4
- package/src/cli/commands/skill.ts +96 -0
- package/src/cli/commands/validate.ts +10 -1
- package/src/cli/index.ts +5 -0
- package/src/cli/init/scaffold.ts +3 -3
- package/src/cli/prepare.ts +6 -3
- package/src/cli/required-secrets.ts +72 -30
- package/src/components/BlumePage.astro +2 -0
- package/src/components/content/ApiEndpoint.astro +18 -0
- package/src/components/content/ApiField.astro +79 -0
- package/src/components/content/ApiPlayground.astro +66 -0
- package/src/components/content/ApiRail.astro +19 -0
- package/src/components/content/Color.astro +1 -0
- package/src/components/content/FileTree.astro +1 -0
- package/src/components/content/GithubInfo.astro +1 -0
- package/src/components/content/Panel.astro +1 -0
- package/src/components/content/ParamField.astro +25 -0
- package/src/components/content/RequestExample.astro +17 -0
- package/src/components/content/ResponseExample.astro +17 -0
- package/src/components/content/ResponseField.astro +32 -0
- package/src/components/content/Step.astro +1 -0
- package/src/components/content/Tile.astro +1 -0
- package/src/components/content/Tooltip.astro +1 -0
- package/src/components/content/Tree.astro +1 -0
- package/src/components/content/TypeTable.astro +4 -1
- package/src/components/content/View.astro +21 -0
- package/src/components/content/ViewSwitcher.astro +168 -0
- package/src/components/content/api-field.ts +103 -0
- package/src/components/content/api-page.ts +248 -0
- package/src/components/content/mermaid-element.ts +15 -1
- package/src/components/content/view-switcher.ts +71 -0
- package/src/components/index.ts +2 -0
- package/src/components/islands/Assistant.astro +10 -1
- package/src/components/islands/assistant.tsx +104 -14
- package/src/components/islands/code-question.ts +62 -0
- package/src/components/islands/hooks.ts +136 -21
- package/src/components/islands/support-link.ts +68 -0
- package/src/components/layout/Analytics.astro +11 -2
- package/src/components/layout/Banner.astro +14 -10
- package/src/components/layout/Breadcrumbs.astro +6 -2
- package/src/components/layout/ConsentBanner.astro +62 -0
- package/src/components/layout/ConsentHead.astro +38 -0
- package/src/components/layout/Directory.astro +94 -0
- package/src/components/layout/DrawerSwitchers.astro +51 -0
- package/src/components/layout/Empty.astro +2 -2
- package/src/components/layout/Header.astro +122 -80
- package/src/components/layout/LanguageSwitcher.astro +48 -15
- package/src/components/layout/NarrationPlayer.astro +1085 -0
- package/src/components/layout/NavSelector.astro +33 -7
- package/src/components/layout/PageActions.astro +139 -24
- package/src/components/layout/PageFeedback.astro +54 -49
- package/src/components/layout/PageLayout.astro +71 -3
- package/src/components/layout/ReferenceLayout.astro +17 -6
- package/src/components/layout/RelatedPages.astro +42 -0
- package/src/components/layout/RootLayout.astro +318 -47
- package/src/components/layout/Search.astro +47 -19
- package/src/components/layout/SiteFooter.astro +124 -0
- package/src/components/layout/SiteMetatags.astro +16 -0
- package/src/components/layout/TableOfContents.astro +24 -17
- package/src/components/layout/consent/native.ts +79 -0
- package/src/components/layout/consent/types.ts +37 -0
- package/src/components/layout/footer-links.ts +53 -0
- package/src/components/layout/footer-socials.ts +87 -0
- package/src/components/layout/head-scripts.ts +6 -1
- package/src/components/layout/locale-redirect.ts +107 -0
- package/src/components/layout/nav-utils.ts +83 -0
- package/src/components/layout/page-feedback.ts +96 -0
- package/src/components/layout/search/algolia.ts +10 -1
- package/src/components/layout/search/analytics.ts +126 -0
- package/src/components/layout/search/endpoint.ts +48 -5
- package/src/components/layout/search/flexsearch.ts +17 -5
- package/src/components/layout/search/orama-cloud.ts +26 -14
- package/src/components/layout/search/pagefind.ts +114 -5
- package/src/components/layout/search/types.ts +32 -0
- package/src/components/layout/search/typesense.ts +19 -3
- package/src/components/openapi/AsyncApiOperation.astro +14 -7
- package/src/components/openapi/Authorization.astro +10 -0
- package/src/components/openapi/GraphqlOperation.astro +5 -0
- package/src/components/openapi/Operation.astro +184 -13
- package/src/components/openapi/ParametersTable.astro +8 -4
- package/src/components/openapi/Playground.astro +7 -1
- package/src/components/openapi/RequestBody.astro +24 -5
- package/src/components/openapi/RequestPanel.astro +59 -7
- package/src/components/openapi/Responses.astro +7 -4
- package/src/components/openapi/SchemaTable.astro +15 -3
- package/src/components/openapi/async-snippets.ts +65 -9
- package/src/components/openapi/async.ts +123 -29
- package/src/components/openapi/code-samples.ts +97 -0
- package/src/components/openapi/graphql-helpers.ts +35 -12
- package/src/components/openapi/helpers.ts +36 -2
- package/src/components/openapi/message-model.ts +54 -11
- package/src/components/openapi/message.ts +14 -4
- package/src/components/openapi/operation-model.ts +16 -7
- package/src/components/openapi/playground-client.ts +24 -5
- package/src/components/openapi/playground-schema.ts +1 -1
- package/src/components/openapi/schema-tree.ts +44 -14
- package/src/components/openapi/security.ts +16 -3
- package/src/components/openapi/snippets.ts +873 -10
- package/src/components/openapi/validate-json.ts +4 -3
- package/src/components/props.ts +6 -0
- package/src/consent/client.ts +95 -0
- package/src/consent/clients.ts +19 -0
- package/src/consent/ethyca.ts +71 -0
- package/src/consent/head.ts +24 -0
- package/src/consent/index.ts +37 -0
- package/src/consent/init.ts +29 -0
- package/src/consent/native.ts +36 -0
- package/src/consent/osano.ts +59 -0
- package/src/consent/schema.ts +30 -0
- package/src/core/builtin-tags.ts +5 -0
- package/src/core/changelog-index.ts +31 -1
- package/src/core/client-address.ts +19 -0
- package/src/core/component-diagnostics.ts +53 -0
- package/src/core/component-overrides.ts +32 -0
- package/src/core/config-input.ts +225 -23
- package/src/core/data.ts +46 -4
- package/src/core/diagnostics.ts +8 -2
- package/src/core/footer.ts +26 -0
- package/src/core/graph.ts +39 -36
- package/src/core/i18n-ui.ts +84 -2
- package/src/core/includes.ts +21 -4
- package/src/core/links.ts +63 -19
- package/src/core/localizable.ts +26 -0
- package/src/core/navigation.ts +43 -12
- package/src/core/page-modes.ts +56 -0
- package/src/core/probe.ts +26 -6
- package/src/core/project-graph.ts +163 -16
- package/src/core/redirect-patterns.ts +520 -0
- package/src/core/related.ts +131 -0
- package/src/core/schema.ts +339 -66
- package/src/core/sources/cache.ts +6 -0
- package/src/core/sources/contentful-rich-text.ts +29 -6
- package/src/core/sources/contentful.ts +135 -25
- package/src/core/sources/filesystem.ts +26 -4
- package/src/core/sources/github-releases.ts +12 -1
- package/src/core/sources/lexical.ts +15 -10
- package/src/core/sources/mdx-remote.ts +62 -10
- package/src/core/sources/normalize.ts +228 -41
- package/src/core/sources/notion.ts +7 -1
- package/src/core/sources/obsidian.ts +16 -3
- package/src/core/sources/payload.ts +38 -15
- package/src/core/sources/read.ts +8 -3
- package/src/core/sources/remote.ts +72 -15
- package/src/core/sources/resolve.ts +11 -1
- package/src/core/sources/sanity.ts +43 -25
- package/src/core/sources/strapi.ts +2 -2
- package/src/core/types.ts +19 -1
- package/src/core/ui-packs/ar.ts +44 -0
- package/src/core/ui-packs/bg.ts +46 -0
- package/src/core/ui-packs/bn.ts +44 -0
- package/src/core/ui-packs/ca.ts +47 -0
- package/src/core/ui-packs/cs.ts +45 -0
- package/src/core/ui-packs/da.ts +46 -0
- package/src/core/ui-packs/de.ts +47 -0
- package/src/core/ui-packs/el.ts +46 -0
- package/src/core/ui-packs/es.ts +47 -0
- package/src/core/ui-packs/fa.ts +46 -0
- package/src/core/ui-packs/fi.ts +46 -0
- package/src/core/ui-packs/fr.ts +47 -0
- package/src/core/ui-packs/he.ts +44 -0
- package/src/core/ui-packs/hi.ts +45 -0
- package/src/core/ui-packs/hr.ts +46 -0
- package/src/core/ui-packs/hu.ts +45 -0
- package/src/core/ui-packs/id.ts +46 -0
- package/src/core/ui-packs/it.ts +46 -0
- package/src/core/ui-packs/ja.ts +46 -0
- package/src/core/ui-packs/ko.ts +45 -0
- package/src/core/ui-packs/nl.ts +47 -0
- package/src/core/ui-packs/no.ts +45 -0
- package/src/core/ui-packs/pl.ts +46 -0
- package/src/core/ui-packs/pt-br.ts +47 -0
- package/src/core/ui-packs/pt.ts +46 -0
- package/src/core/ui-packs/ro.ts +46 -0
- package/src/core/ui-packs/ru.ts +46 -0
- package/src/core/ui-packs/sk.ts +45 -0
- package/src/core/ui-packs/sr.ts +46 -0
- package/src/core/ui-packs/sv.ts +45 -0
- package/src/core/ui-packs/th.ts +44 -0
- package/src/core/ui-packs/tr.ts +46 -0
- package/src/core/ui-packs/uk.ts +46 -0
- package/src/core/ui-packs/vi.ts +46 -0
- package/src/core/ui-packs/zh-tw.ts +44 -0
- package/src/core/ui-packs/zh.ts +44 -0
- package/src/core/variables.ts +103 -0
- package/src/deploy/adapter-output.ts +7 -2
- package/src/deploy/adapters/cloudflare.ts +7 -5
- package/src/deploy/adapters/node.ts +47 -9
- package/src/deploy/adapters/types.ts +7 -3
- package/src/deploy/artifacts.ts +79 -9
- package/src/deploy/cloudflare-negotiation.ts +35 -5
- package/src/deploy/headers.ts +2 -1
- package/src/deploy/node-headers.ts +63 -9
- package/src/deploy/platforms/cloudflare.ts +45 -9
- package/src/deploy/platforms/netlify.ts +35 -2
- package/src/deploy/platforms/node.ts +12 -2
- package/src/deploy/platforms/types.ts +21 -7
- package/src/deploy/platforms/vercel.ts +149 -17
- package/src/deploy/redirects.ts +151 -24
- package/src/deploy/rss.ts +3 -1
- package/src/deploy/sitemap.ts +39 -5
- package/src/deploy/vercel-negotiation.ts +326 -102
- package/src/eval/agents.ts +18 -1
- package/src/eval/prompts.ts +6 -3
- package/src/eval/report.ts +34 -13
- package/src/eval/run.ts +5 -0
- package/src/markdown/api-rail.ts +259 -0
- package/src/markdown/code-title.ts +35 -9
- package/src/markdown/features.ts +3 -2
- package/src/markdown/fence-meta.ts +2 -0
- package/src/markdown/include.ts +11 -1
- package/src/markdown/index.ts +28 -5
- package/src/markdown/math.ts +4 -4
- package/src/markdown/relative-links.ts +3 -2
- package/src/markdown/variables.ts +56 -0
- package/src/markdown/views.ts +82 -0
- package/src/narration/build.ts +412 -0
- package/src/narration/player.ts +249 -0
- package/src/narration/provider.ts +29 -0
- package/src/narration/script.ts +592 -0
- package/src/og/card.ts +7 -6
- package/src/openapi/checks.ts +273 -0
- package/src/openapi/graphql-build.ts +21 -0
- package/src/openapi/graphql.ts +11 -0
- package/src/openapi/model.ts +72 -27
- package/src/openapi/overlay.ts +256 -0
- package/src/openapi/parse.ts +182 -4
- package/src/openapi/references.ts +64 -8
- package/src/openapi/render-mdx.ts +5 -1
- package/src/openapi/scalar.ts +40 -6
- package/src/openapi/source.ts +40 -15
- package/src/ratelimit/cloudflare.ts +54 -0
- package/src/ratelimit/index.ts +30 -0
- package/src/ratelimit/memory.ts +45 -0
- package/src/ratelimit/runtime.ts +247 -0
- package/src/ratelimit/schema.ts +28 -0
- package/src/ratelimit/upstash.ts +60 -0
- package/src/ratelimit/wrangler.ts +70 -0
- package/src/reference/asyncapi.ts +2 -2
- package/src/reference/graphql.ts +20 -3
- package/src/reference/index.ts +1 -0
- package/src/reference/openapi.ts +21 -7
- package/src/reference/options.ts +80 -8
- package/src/reference/scalar.ts +33 -8
- package/src/registry/eject.ts +23 -5
- package/src/registry/registry.ts +7 -0
- package/src/search/adapters/locale-scope.ts +30 -0
- package/src/search/adapters/typesense.ts +14 -4
- package/src/search/build.ts +21 -3
- package/src/search/documents.ts +26 -2
- package/src/search/orama-index.ts +191 -34
- package/src/search/pagefind-ranking.ts +39 -0
- package/src/search/source-pages.ts +29 -0
- package/src/search/sync/algolia.ts +111 -10
- package/src/search/sync/index.ts +52 -13
- package/src/search/sync/orama-cloud.ts +3 -0
- package/src/search/sync/typesense.ts +76 -26
- package/src/seo/metatags.ts +67 -0
- package/src/sources/contentful.ts +12 -0
- package/src/sources/github-releases.ts +7 -1
- package/src/sources/shared.ts +3 -0
- package/src/theme/chrome-icons.ts +1 -0
- package/src/theme/color.ts +500 -0
- package/src/theme/entry.ts +85 -6
- package/src/theme/palette.ts +121 -45
- package/src/translate/prompts.ts +1 -0
- package/src/translate/validate.ts +31 -3
- package/src/upgrade/upgrade.ts +4 -171
- package/dist/cli/chunk-1d7ve1dm.js.map +0 -12
- package/dist/cli/chunk-2hsdwb9n.js.map +0 -10
- package/dist/cli/chunk-35d4wj9f.js.map +0 -15
- package/dist/cli/chunk-364znk6q.js +0 -75
- package/dist/cli/chunk-364znk6q.js.map +0 -11
- package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
- package/dist/cli/chunk-8ktnccpt.js.map +0 -10
- package/dist/cli/chunk-9t7a85s3.js.map +0 -10
- package/dist/cli/chunk-b07cmahc.js +0 -145
- package/dist/cli/chunk-b07cmahc.js.map +0 -11
- package/dist/cli/chunk-c8chx29p.js.map +0 -36
- package/dist/cli/chunk-e04dxsz1.js +0 -39
- package/dist/cli/chunk-e04dxsz1.js.map +0 -10
- package/dist/cli/chunk-j85vccga.js.map +0 -36
- package/dist/cli/chunk-p3v96n38.js.map +0 -10
- package/dist/cli/chunk-pehfxfta.js.map +0 -10
- package/dist/cli/chunk-pv29h0wf.js.map +0 -190
- package/dist/cli/chunk-q58y5e6a.js.map +0 -10
- package/dist/cli/chunk-vg9r4eb9.js.map +0 -14
- package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
- package/dist/cli/chunk-yfyb25rh.js.map +0 -14
- package/docs/content/sources.mdx +0 -334
- /package/dist/cli/{chunk-tkacnehg.js.map → chunk-3v3ffbrj.js.map} +0 -0
- /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-8y2kmjv8.js.map} +0 -0
- /package/dist/cli/{chunk-2eytanqx.js.map → chunk-c887fj0s.js.map} +0 -0
- /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-dzwehpy7.js.map} +0 -0
- /package/dist/cli/{chunk-2z928egk.js.map → chunk-ft9vfys6.js.map} +0 -0
- /package/dist/cli/{chunk-a58773jm.js.map → chunk-kma9f6sf.js.map} +0 -0
- /package/dist/cli/{chunk-crgn1q09.js.map → chunk-sds923fa.js.map} +0 -0
- /package/dist/cli/{chunk-acanzt5p.js.map → chunk-tdqhyxfz.js.map} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
3
|
+
/** Options for {@link turnstile}. */
|
|
4
|
+
export interface TurnstileOptions {
|
|
5
|
+
/** The widget's site key, from the Cloudflare dashboard. */
|
|
6
|
+
siteKey: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const turnstileOptionsSchema: z.ZodObject<{
|
|
9
|
+
siteKey: z.ZodString;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
export type TurnstileAdapter = AdapterDescriptor<"turnstile", TurnstileOptions>;
|
|
12
|
+
export declare const turnstileAdapterSchema: z.ZodObject<{
|
|
13
|
+
kind: z.ZodLiteral<"turnstile">;
|
|
14
|
+
options: z.ZodObject<{
|
|
15
|
+
siteKey: z.ZodString;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
18
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
/** Where the assistant's route checks a Turnstile token. */
|
|
21
|
+
export declare const TURNSTILE_VERIFY_URL = "https://challenges.cloudflare.com/turnstile/v0/siteverify";
|
|
22
|
+
/**
|
|
23
|
+
* Cloudflare Turnstile. The site key is public and goes to the browser; the
|
|
24
|
+
* secret key the route checks tokens with comes from `TURNSTILE_SECRET_KEY`.
|
|
25
|
+
* Set the widget to Invisible or Managed in the Cloudflare dashboard: most
|
|
26
|
+
* readers never see a challenge.
|
|
27
|
+
*/
|
|
28
|
+
export declare const turnstile: (options: TurnstileOptions) => TurnstileAdapter;
|
|
@@ -126,7 +126,7 @@ export interface PlanEnvironment {
|
|
|
126
126
|
* What the project still needs from a workspace it sits in, when `init` left
|
|
127
127
|
* that workspace's config alone: a place in a pnpm workspace's `packages`
|
|
128
128
|
* (pnpm skips a folder it doesn't list), pnpm's approval for esbuild's build
|
|
129
|
-
* script (pnpm
|
|
129
|
+
* script (pnpm 11 and later fail the install without it), or Yarn Berry's
|
|
130
130
|
* `node_modules` linker. Undefined when the workspace already has it, or the
|
|
131
131
|
* project doesn't sit in one.
|
|
132
132
|
*/
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The props `<ParamField>` and `<ResponseField>` take, in Mintlify's shape: a
|
|
3
|
+
* parameter names its location with the attribute that carries its name
|
|
4
|
+
* (`<ParamField query="limit">`), and both take `type`, `required`,
|
|
5
|
+
* `deprecated`, and `default`; a response field adds `pre` and `post` labels
|
|
6
|
+
* around its name. Pure, so the Markdown downlevel and the playground can
|
|
7
|
+
* read fields the way the components render them.
|
|
8
|
+
*/
|
|
9
|
+
/** Where a `<ParamField>` parameter goes, in the order the attributes are checked. */
|
|
10
|
+
export declare const PARAM_LOCATIONS: readonly ["path", "query", "header", "body"];
|
|
11
|
+
/** A parameter's location. */
|
|
12
|
+
export type ParamLocation = (typeof PARAM_LOCATIONS)[number];
|
|
13
|
+
/** A literal value as MDX passes it: a string attribute, or an expression's data. */
|
|
14
|
+
export type FieldValue = string | number | boolean | null | undefined | FieldValue[] | {
|
|
15
|
+
[key: string]: FieldValue;
|
|
16
|
+
};
|
|
17
|
+
/** A boolean prop: MDX shorthand (`required`) is `true`, `required="true"` a string. */
|
|
18
|
+
export type FlagProp = boolean | string;
|
|
19
|
+
/** What both field components take. */
|
|
20
|
+
export interface FieldProps {
|
|
21
|
+
/** The value used when none is given. */
|
|
22
|
+
default?: FieldValue;
|
|
23
|
+
deprecated?: FlagProp;
|
|
24
|
+
required?: FlagProp;
|
|
25
|
+
/** Free text: `string`, `integer`, `string[]`, `object`. */
|
|
26
|
+
type?: string;
|
|
27
|
+
}
|
|
28
|
+
/** `<ParamField>`: a request parameter, named by its location attribute. */
|
|
29
|
+
export interface ParamFieldProps extends FieldProps {
|
|
30
|
+
body?: string;
|
|
31
|
+
header?: string;
|
|
32
|
+
/** The name, for a field with no location attribute. */
|
|
33
|
+
name?: string;
|
|
34
|
+
path?: string;
|
|
35
|
+
/**
|
|
36
|
+
* An example value: the one the playground and request samples start
|
|
37
|
+
* with, not an input's placeholder hint (see `fieldSchema`).
|
|
38
|
+
*/
|
|
39
|
+
placeholder?: string;
|
|
40
|
+
query?: string;
|
|
41
|
+
}
|
|
42
|
+
/** `<ResponseField>`: a field of the response. */
|
|
43
|
+
export interface ResponseFieldProps extends FieldProps {
|
|
44
|
+
name: string;
|
|
45
|
+
/** Labels after the name. */
|
|
46
|
+
post?: string | string[];
|
|
47
|
+
/** Labels before the name. */
|
|
48
|
+
pre?: string | string[];
|
|
49
|
+
}
|
|
50
|
+
/** Whether a flag prop is on. */
|
|
51
|
+
export declare const isOn: (value?: FlagProp) => boolean;
|
|
52
|
+
/** Where a parameter goes, and what it's called. */
|
|
53
|
+
export interface ParamFieldName {
|
|
54
|
+
location?: ParamLocation;
|
|
55
|
+
name?: string;
|
|
56
|
+
}
|
|
57
|
+
/** A parameter's location and name: the first location attribute set, else `name`. */
|
|
58
|
+
export declare const paramField: (props: ParamFieldProps) => ParamFieldName;
|
|
59
|
+
/** A default value as shown: text as written, anything else as JSON; `null` when there is none. */
|
|
60
|
+
export declare const defaultLabel: (value?: FieldValue) => string | null;
|
|
61
|
+
/** `pre`/`post` labels as a list, whether one was written or several. */
|
|
62
|
+
export declare const fieldLabels: (value?: string | string[]) => string[];
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { ParameterLike, SchemaLike } from "../openapi/helpers.ts";
|
|
2
|
+
import type { OperationSecurity } from "../openapi/security.ts";
|
|
3
|
+
import type { FieldValue, ParamLocation } from "./api-field.ts";
|
|
4
|
+
/**
|
|
5
|
+
* A hand-written API page's endpoint, as its `api` frontmatter and its
|
|
6
|
+
* `<ParamField>`s describe it, turned into the OpenAPI-shaped pieces the
|
|
7
|
+
* operation playground and code samples are built from: a page with
|
|
8
|
+
* `api: "POST /v1/users"` gets the same Try it panel and request samples as
|
|
9
|
+
* a spec'd operation, with no spec. Mintlify's frontmatter, so migrated pages
|
|
10
|
+
* keep it as written.
|
|
11
|
+
*/
|
|
12
|
+
/** How a hand-written endpoint authenticates (`authMethod`, `api.auth.method`). */
|
|
13
|
+
export declare const AUTH_METHODS: readonly ["bearer", "basic", "key", "none"];
|
|
14
|
+
export type AuthMethod = (typeof AUTH_METHODS)[number];
|
|
15
|
+
/** What a page's playground shows: all of it, the samples only, or none. */
|
|
16
|
+
export declare const PLAYGROUND_MODES: readonly ["interactive", "simple", "none"];
|
|
17
|
+
export type PlaygroundMode = (typeof PLAYGROUND_MODES)[number];
|
|
18
|
+
/** `api` frontmatter: an HTTP method, then a path or a full URL. */
|
|
19
|
+
export declare const API_ENDPOINT: RegExp;
|
|
20
|
+
/** The site's default auth for hand-written endpoints (`api.auth`). */
|
|
21
|
+
export interface EndpointAuth {
|
|
22
|
+
method: AuthMethod;
|
|
23
|
+
/** The header an API key goes in. */
|
|
24
|
+
name?: string;
|
|
25
|
+
}
|
|
26
|
+
/** One `<ParamField>`, as the page's plugin collected it. */
|
|
27
|
+
export interface EndpointField {
|
|
28
|
+
default?: FieldValue;
|
|
29
|
+
deprecated?: boolean;
|
|
30
|
+
/** Body fields nested in this one's `<Expandable>`. */
|
|
31
|
+
fields?: EndpointField[];
|
|
32
|
+
location: ParamLocation;
|
|
33
|
+
name: string;
|
|
34
|
+
placeholder?: string;
|
|
35
|
+
required?: boolean;
|
|
36
|
+
type?: string;
|
|
37
|
+
}
|
|
38
|
+
/** What the page's plugin hands the endpoint components. */
|
|
39
|
+
export interface EndpointSpec {
|
|
40
|
+
authMethod?: AuthMethod;
|
|
41
|
+
fields: EndpointField[];
|
|
42
|
+
method: string;
|
|
43
|
+
playground?: PlaygroundMode;
|
|
44
|
+
/** The page has a `<RequestExample>`, which stands in for generated samples. */
|
|
45
|
+
requestExample: boolean;
|
|
46
|
+
/** The `api` target as written: a path, or a full URL. */
|
|
47
|
+
target: string;
|
|
48
|
+
}
|
|
49
|
+
/** The method and target of an `api` value, or `null` when it isn't one. */
|
|
50
|
+
export declare const parseApiEndpoint: (value: string) => {
|
|
51
|
+
method: string;
|
|
52
|
+
target: string;
|
|
53
|
+
} | null;
|
|
54
|
+
/** An endpoint's target, split the way the operation model takes it. */
|
|
55
|
+
export interface EndpointTarget {
|
|
56
|
+
path: string;
|
|
57
|
+
servers: {
|
|
58
|
+
url: string;
|
|
59
|
+
}[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The target split into a server and a path: a full URL is its own server,
|
|
63
|
+
* and a path joins the site's `api.server`, or stays relative to the docs
|
|
64
|
+
* when there is none.
|
|
65
|
+
*/
|
|
66
|
+
export declare const endpointTarget: (target: string, server?: string) => EndpointTarget;
|
|
67
|
+
/**
|
|
68
|
+
* A field's JSON schema from its `type`: `string[]` an array of strings, a
|
|
69
|
+
* field with nested fields an object with those properties, and anything
|
|
70
|
+
* that isn't a JSON type (`enum<string>`, `Date`) a string, which is what it
|
|
71
|
+
* goes over the wire as. A default and placeholder carry over, the
|
|
72
|
+
* placeholder as the example the samples show.
|
|
73
|
+
*/
|
|
74
|
+
export declare const fieldSchema: (field: EndpointField) => SchemaLike;
|
|
75
|
+
/** The path, query, and header fields as OpenAPI parameters. */
|
|
76
|
+
export declare const endpointParameters: (fields: EndpointField[]) => ParameterLike[];
|
|
77
|
+
/**
|
|
78
|
+
* The body fields as a JSON request body, or `undefined` when there are none.
|
|
79
|
+
* Its example, which the playground and samples start from, holds only the
|
|
80
|
+
* {@link sentFields}.
|
|
81
|
+
*/
|
|
82
|
+
export declare const endpointBody: (fields: EndpointField[]) => {
|
|
83
|
+
content: {
|
|
84
|
+
"application/json": {
|
|
85
|
+
example: import("../openapi/helpers.ts").SpecValue;
|
|
86
|
+
schema: SchemaLike;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
} | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* The security an endpoint enforces: its page's `authMethod`, else the
|
|
92
|
+
* site's `api.auth`, else none. An API key goes in the configured header,
|
|
93
|
+
* `x-api-key` when none is named.
|
|
94
|
+
*/
|
|
95
|
+
export declare const endpointSecurity: (authMethod?: AuthMethod, siteAuth?: EndpointAuth) => OperationSecurity;
|
|
96
|
+
/**
|
|
97
|
+
* The endpoint spec the page's plugin wrote into the `spec` attribute of
|
|
98
|
+
* `<ApiEndpoint>` and `<ApiPlayground>`.
|
|
99
|
+
*/
|
|
100
|
+
export declare const readEndpointSpec: (json: string) => EndpointSpec;
|
|
@@ -69,6 +69,32 @@ export declare const getPagination: (flat: FlatPage[], route: string) => {
|
|
|
69
69
|
next: FlatPage | null;
|
|
70
70
|
prev: FlatPage | null;
|
|
71
71
|
};
|
|
72
|
+
/** A group node in the sidebar tree. */
|
|
73
|
+
export type NavGroup = Extract<NavNode, {
|
|
74
|
+
kind: "group";
|
|
75
|
+
}>;
|
|
76
|
+
/**
|
|
77
|
+
* The group whose own page `route` is, when that page lists the group's
|
|
78
|
+
* pages: its `directory` (inherited when the group sets none) is `card` or
|
|
79
|
+
* `accordion`. `null` on every other page.
|
|
80
|
+
*/
|
|
81
|
+
export declare const directoryGroupForRoute: (nodes: NavNode[], route: string) => NavGroup | null;
|
|
82
|
+
/** One entry in a group page's directory: a page, or a subgroup and its pages. */
|
|
83
|
+
export interface DirectoryEntry {
|
|
84
|
+
description?: string;
|
|
85
|
+
/** The page, or the subgroup's own page (its first page when it has none). */
|
|
86
|
+
href: string;
|
|
87
|
+
icon?: string;
|
|
88
|
+
label: string;
|
|
89
|
+
/** A subgroup's pages in sidebar order, its own page first; absent for a page. */
|
|
90
|
+
pages?: FlatPage[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* What a group's page lists: the group's pages and subgroups, in sidebar
|
|
94
|
+
* order, without the page itself or external links. A subgroup is described
|
|
95
|
+
* by its own page, and one with no page to link to is left out.
|
|
96
|
+
*/
|
|
97
|
+
export declare const directoryEntries: (group: NavGroup) => DirectoryEntry[];
|
|
72
98
|
/**
|
|
73
99
|
* A stable id for every group in a sidebar — `g<n>` by pre-order position in
|
|
74
100
|
* the full tree. The layout hands `NavTree` a scoped view of that tree (a
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hand-written code samples from a spec: the `x-codeSamples` extension on an
|
|
3
|
+
* operation (Redocly's, which Mintlify, Speakeasy, and Stainless write too),
|
|
4
|
+
* or its older spelling `x-code-samples`. Each entry names a `lang`, holds
|
|
5
|
+
* the `source`, and may carry a `label`. They render as their own tabs ahead
|
|
6
|
+
* of the generated samples and, being fixed text, the playground leaves them
|
|
7
|
+
* as written.
|
|
8
|
+
*/
|
|
9
|
+
/** One hand-written sample, ready to render as a tab. */
|
|
10
|
+
export interface CustomCodeSample {
|
|
11
|
+
/** A stable, unique tab key. */
|
|
12
|
+
key: string;
|
|
13
|
+
/** The tab label: the entry's own, else the language's name. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** The Shiki language to highlight `source` with. */
|
|
16
|
+
lang: string;
|
|
17
|
+
source: string;
|
|
18
|
+
}
|
|
19
|
+
/** The two places an operation keeps them. */
|
|
20
|
+
export interface CodeSamplesCarrier {
|
|
21
|
+
"x-code-samples"?: unknown;
|
|
22
|
+
"x-codeSamples"?: unknown;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The operation's hand-written samples, with a unique tab label each. A label
|
|
26
|
+
* two samples share gains its language (`List plants · JavaScript`), and one
|
|
27
|
+
* that still repeats gains a number. Malformed entries are skipped.
|
|
28
|
+
*/
|
|
29
|
+
export declare const customCodeSamples: (operation: CodeSamplesCarrier) => CustomCodeSample[];
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime helpers for the OpenAPI components. These operate on the parsed spec
|
|
3
|
+
* behind the `blume:openapi` alias — resolving `$ref`s (kept intact at parse
|
|
4
|
+
* time to avoid circular graphs), labelling types, and generating request
|
|
5
|
+
* examples and code samples. Browser-safe (no server-only imports); example
|
|
6
|
+
* values come from openapi-sampler, which is likewise browser-safe.
|
|
7
|
+
*/
|
|
8
|
+
/** Any value a parsed OpenAPI document can hold: JSON, nested schemas included. */
|
|
9
|
+
export type SpecValue = string | number | boolean | null | undefined | SpecValue[] | {
|
|
10
|
+
[key: string]: SpecValue;
|
|
11
|
+
};
|
|
12
|
+
/** A permissive view of an OpenAPI 3.1 schema — only the fields we render. */
|
|
13
|
+
export interface SchemaLike {
|
|
14
|
+
$ref?: string;
|
|
15
|
+
type?: string | string[];
|
|
16
|
+
format?: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
properties?: Record<string, SchemaLike>;
|
|
20
|
+
required?: string[];
|
|
21
|
+
items?: SchemaLike;
|
|
22
|
+
enum?: SpecValue[];
|
|
23
|
+
const?: SpecValue;
|
|
24
|
+
default?: SpecValue;
|
|
25
|
+
example?: SpecValue;
|
|
26
|
+
examples?: SpecValue[];
|
|
27
|
+
allOf?: SchemaLike[];
|
|
28
|
+
oneOf?: SchemaLike[];
|
|
29
|
+
anyOf?: SchemaLike[];
|
|
30
|
+
additionalProperties?: boolean | SchemaLike;
|
|
31
|
+
nullable?: boolean;
|
|
32
|
+
deprecated?: boolean;
|
|
33
|
+
readOnly?: boolean;
|
|
34
|
+
writeOnly?: boolean;
|
|
35
|
+
minimum?: number;
|
|
36
|
+
maximum?: number;
|
|
37
|
+
minLength?: number;
|
|
38
|
+
maxLength?: number;
|
|
39
|
+
minItems?: number;
|
|
40
|
+
maxItems?: number;
|
|
41
|
+
pattern?: string;
|
|
42
|
+
[key: string]: SpecValue;
|
|
43
|
+
}
|
|
44
|
+
/** A permissive view of an operation parameter — only the fields we render. */
|
|
45
|
+
export interface ParameterLike {
|
|
46
|
+
$ref?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
in?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
required?: boolean;
|
|
51
|
+
deprecated?: boolean;
|
|
52
|
+
schema?: SchemaLike;
|
|
53
|
+
example?: SpecValue;
|
|
54
|
+
[key: string]: SpecValue;
|
|
55
|
+
}
|
|
56
|
+
/** The `components` object of a parsed spec: section name → named-node table. */
|
|
57
|
+
export type ComponentsLike = Record<string, Record<string, SpecValue> | undefined>;
|
|
58
|
+
/**
|
|
59
|
+
* Resolve one level of `$ref` against a named `components` section
|
|
60
|
+
* (`parameters`, `requestBodies`, `responses`). Mirrors {@link resolveSchema}:
|
|
61
|
+
* an unknown ref — or one pointing into a different section — is returned
|
|
62
|
+
* as-is.
|
|
63
|
+
*/
|
|
64
|
+
export declare const resolveComponentRef: <T extends {
|
|
65
|
+
$ref?: string;
|
|
66
|
+
}>(node: T, components: ComponentsLike | undefined, section: string) => T;
|
|
67
|
+
/**
|
|
68
|
+
* Path-level and operation-level parameters merged into one render list.
|
|
69
|
+
* `$ref`s resolve against `components.parameters` first; then an operation
|
|
70
|
+
* parameter overrides a path-level one with the same `name` + `in` (the
|
|
71
|
+
* OpenAPI override rule), so a re-declared parameter appears once.
|
|
72
|
+
*/
|
|
73
|
+
export declare const mergeParameters: (pathParameters: ParameterLike[] | undefined, operationParameters: ParameterLike[] | undefined, components?: ComponentsLike) => ParameterLike[];
|
|
74
|
+
/** The display name of a `$ref`, e.g. `#/components/schemas/Pet` -> `Pet`. */
|
|
75
|
+
export declare const refName: (ref: string) => string;
|
|
76
|
+
/**
|
|
77
|
+
* The one member of an `allOf` that only wraps it: `allOf: [{ $ref }]` beside
|
|
78
|
+
* a `description`, `readOnly`, or `default`, which is how drf-spectacular and
|
|
79
|
+
* other generators attach keywords a 3.0 `$ref` can't carry. `undefined` for
|
|
80
|
+
* a real composition: several members, or properties or branches of its own.
|
|
81
|
+
*/
|
|
82
|
+
export declare const soleAllOfMember: (schema: SchemaLike) => SchemaLike | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Resolve one level of `$ref` against the document's component schemas. A
|
|
85
|
+
* single-member `allOf` wrapper resolves like its member, with the wrapper's
|
|
86
|
+
* own keywords on top: its `description` is about this field.
|
|
87
|
+
*/
|
|
88
|
+
export declare const resolveSchema: (schemas: Record<string, SchemaLike>, schema?: SchemaLike) => SchemaLike;
|
|
89
|
+
/**
|
|
90
|
+
* A parameter's description: its own, else its schema's (resolved one `$ref`
|
|
91
|
+
* level), which is where generators like Elysia and oRPC write it.
|
|
92
|
+
*/
|
|
93
|
+
export declare const parameterDescription: (param: {
|
|
94
|
+
description?: string;
|
|
95
|
+
schema?: SchemaLike;
|
|
96
|
+
}, schemas: Record<string, SchemaLike>) => string | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* A short, human-readable type label for a schema row. `$ref`s label by name
|
|
99
|
+
* (`Pet`, `Pet[]`) without resolving — which also means circular refs through
|
|
100
|
+
* array items can't recurse forever. A `null` member stays out of a union's
|
|
101
|
+
* label: rows mark it with {@link isNullable}, as they do `type: [T, "null"]`.
|
|
102
|
+
* A single-member `allOf` wrapper labels as its member; a real composition is
|
|
103
|
+
* an `object`.
|
|
104
|
+
*/
|
|
105
|
+
export declare const typeLabel: (schema: SchemaLike) => string;
|
|
106
|
+
/**
|
|
107
|
+
* Whether this schema is nullable: 3.0 `nullable`, a 3.1 `"null"` in `type`,
|
|
108
|
+
* or a `{ type: "null" }` member of a `oneOf`/`anyOf` union.
|
|
109
|
+
*/
|
|
110
|
+
export declare const isNullable: (schema: SchemaLike) => boolean;
|
|
111
|
+
/** Human-readable validation constraints for a schema, in display order. */
|
|
112
|
+
export declare const constraints: (schema: SchemaLike) => string[];
|
|
113
|
+
/** The merged property list and required set a schema exposes. */
|
|
114
|
+
export interface ObjectPropertySet {
|
|
115
|
+
properties: [string, SchemaLike][];
|
|
116
|
+
required: Set<string>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The object properties a schema exposes, merging `allOf` branches so an
|
|
120
|
+
* `allOf`-composed model still lists every field. Returns the properties plus
|
|
121
|
+
* the merged required set.
|
|
122
|
+
*/
|
|
123
|
+
export declare const objectProperties: (schema: SchemaLike, schemas: Record<string, SchemaLike>) => ObjectPropertySet;
|
|
124
|
+
/**
|
|
125
|
+
* Build a representative example value for a schema via openapi-sampler
|
|
126
|
+
* (Redoc's generator): declared `example`/`const`/`default`/`enum` values
|
|
127
|
+
* win, formats produce realistic placeholders (`email`, `uuid`, `date-time`),
|
|
128
|
+
* and circular `$ref` chains — which keeping refs intact allows — terminate
|
|
129
|
+
* safely. A request sample skips `readOnly` fields (a server-generated field
|
|
130
|
+
* has no place in one); a response sample skips `writeOnly` fields (a
|
|
131
|
+
* password the client sends never comes back) and keeps the `readOnly` ones.
|
|
132
|
+
*/
|
|
133
|
+
export declare const exampleValue: (schema: SchemaLike | undefined, schemas: Record<string, SchemaLike>, direction?: "request" | "response") => SpecValue;
|
|
134
|
+
/** Where an author can declare an example: a parameter or a media type. */
|
|
135
|
+
export interface ExampleCarrier {
|
|
136
|
+
example?: SpecValue;
|
|
137
|
+
examples?: SpecValue;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The example a parameter or media type declares: its `example`, else the
|
|
141
|
+
* first `value` in its `examples` map — inline, or behind a `$ref` to
|
|
142
|
+
* `#/components/examples`, resolved against `components`. Scalar's upgrade
|
|
143
|
+
* moves every OpenAPI 3.0 and Swagger 2.0 `example` into
|
|
144
|
+
* `examples.default.value`, and 3.1 authors write that map directly, so
|
|
145
|
+
* reading `example` alone would drop them all. `undefined` when nothing is
|
|
146
|
+
* declared.
|
|
147
|
+
*/
|
|
148
|
+
export declare const declaredExample: (carrier: ExampleCarrier, components?: ComponentsLike) => SpecValue;
|
|
149
|
+
/**
|
|
150
|
+
* A response media type's example for the Response panel: the declared one,
|
|
151
|
+
* else a sample built for the response direction (`readOnly` kept,
|
|
152
|
+
* `writeOnly` skipped).
|
|
153
|
+
*/
|
|
154
|
+
export declare const responseExample: (media: ExampleCarrier & {
|
|
155
|
+
schema?: SchemaLike;
|
|
156
|
+
}, schemas: Record<string, SchemaLike>, components?: ComponentsLike) => SpecValue;
|
|
157
|
+
/** Pretty-print a JSON value for an example/code block. */
|
|
158
|
+
export declare const toJson: <T>(value: T) => string;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security (authorization) resolution for the OpenAPI components. An operation
|
|
3
|
+
* enforces its own `security` when declared — an empty array explicitly makes
|
|
4
|
+
* it public — and inherits the document's root `security` otherwise. Within the
|
|
5
|
+
* resolved list, each requirement object is one way to authorize (OR between
|
|
6
|
+
* entries), and every scheme named inside a single requirement is needed
|
|
7
|
+
* together (AND). Pure and dependency-free like `helpers.ts`, so it runs in the
|
|
8
|
+
* browser build with no server-only imports.
|
|
9
|
+
*/
|
|
10
|
+
/** A permissive view of an OpenAPI security scheme — only the fields we render. */
|
|
11
|
+
export interface SecuritySchemeLike {
|
|
12
|
+
type?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
/** `apiKey`: the parameter name the key is sent as. */
|
|
15
|
+
name?: string;
|
|
16
|
+
/** `apiKey`: where the key goes — `header`, `query`, or `cookie`. */
|
|
17
|
+
in?: string;
|
|
18
|
+
/** `http`: the HTTP auth scheme, e.g. `bearer` or `basic`. */
|
|
19
|
+
scheme?: string;
|
|
20
|
+
/** `http` bearer: a hint at the token format, e.g. `JWT`. */
|
|
21
|
+
bearerFormat?: string;
|
|
22
|
+
}
|
|
23
|
+
/** One security requirement: scheme name -> required scopes (empty outside OAuth). */
|
|
24
|
+
export type SecurityRequirementLike = Record<string, string[]>;
|
|
25
|
+
/** A scheme resolved out of `components.securitySchemes`, with its scopes. */
|
|
26
|
+
export interface ResolvedScheme {
|
|
27
|
+
/** The scheme's component name, e.g. `bearerAuth`. */
|
|
28
|
+
key: string;
|
|
29
|
+
/** The scheme object; undefined when the requirement names an unknown one. */
|
|
30
|
+
scheme?: SecuritySchemeLike;
|
|
31
|
+
scopes: string[];
|
|
32
|
+
/**
|
|
33
|
+
* AsyncAPI: the servers that declare this scheme, set only when the
|
|
34
|
+
* channel's servers don't all declare the same ones.
|
|
35
|
+
*/
|
|
36
|
+
servers?: string[];
|
|
37
|
+
}
|
|
38
|
+
/** The security state one operation renders. */
|
|
39
|
+
export interface OperationSecurity {
|
|
40
|
+
/** Ways to authorize (OR); every scheme within one entry is required (AND). */
|
|
41
|
+
alternatives: ResolvedScheme[][];
|
|
42
|
+
/** True when an empty requirement also allows unauthenticated calls. */
|
|
43
|
+
optional: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* AsyncAPI: the servers that declare no security while others do, so the
|
|
46
|
+
* schemes apply on the other servers only.
|
|
47
|
+
*/
|
|
48
|
+
unauthenticatedServers?: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The requirement list an operation actually enforces: its own `security` when
|
|
52
|
+
* declared — the OpenAPI override rule, where `[]` removes the default and
|
|
53
|
+
* makes the operation public — else the document's root `security`. A webhook
|
|
54
|
+
* takes only its own: the API sends it, so the root requirements, which guard
|
|
55
|
+
* calls to the API, say nothing about what the receiving endpoint checks.
|
|
56
|
+
*/
|
|
57
|
+
export declare const effectiveSecurity: (operation?: SecurityRequirementLike[], document?: SecurityRequirementLike[], webhook?: boolean) => SecurityRequirementLike[];
|
|
58
|
+
/**
|
|
59
|
+
* Resolve requirement names against `components.securitySchemes`. A name with
|
|
60
|
+
* no matching component is kept (with `scheme` undefined) so an inconsistent
|
|
61
|
+
* spec still renders the requirement instead of silently dropping it. An empty
|
|
62
|
+
* requirement object — the spec idiom for "auth optional" — contributes no
|
|
63
|
+
* alternative and flips `optional` instead.
|
|
64
|
+
*/
|
|
65
|
+
export declare const resolveSecurity: (requirements: SecurityRequirementLike[], schemes: Record<string, SecuritySchemeLike> | undefined) => OperationSecurity;
|
|
66
|
+
/**
|
|
67
|
+
* One AsyncAPI 3.x security entry: a `$ref` into
|
|
68
|
+
* `components.securitySchemes`, or an inline scheme object (the shape the
|
|
69
|
+
* official 2.x converter emits for scoped requirements, `scopes` on the
|
|
70
|
+
* scheme itself).
|
|
71
|
+
*/
|
|
72
|
+
export interface AsyncApiSecurityEntryLike {
|
|
73
|
+
$ref?: string;
|
|
74
|
+
type?: string;
|
|
75
|
+
scopes?: unknown;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve an AsyncAPI 3.x security list. Unlike OpenAPI's requirement maps,
|
|
79
|
+
* each entry names a single scheme and any one entry satisfies the operation
|
|
80
|
+
* — so every entry becomes its own one-scheme "or" alternative. A `$ref`
|
|
81
|
+
* pointing at an undeclared scheme is kept (with `scheme` undefined),
|
|
82
|
+
* matching {@link resolveSecurity}'s render-don't-drop rule.
|
|
83
|
+
*/
|
|
84
|
+
export declare const resolveAsyncApiSecurity: (entries: AsyncApiSecurityEntryLike[], schemes: Record<string, SecuritySchemeLike> | undefined) => OperationSecurity;
|
|
85
|
+
/** A short human label for a scheme row, e.g. `Bearer token` or `API key`. */
|
|
86
|
+
export declare const schemeLabel: (resolved: ResolvedScheme) => string;
|
|
87
|
+
/**
|
|
88
|
+
* Where the credential travels: the header/query/cookie parameter it occupies.
|
|
89
|
+
* Undefined for schemes with no request parameter (mutual TLS) and for unknown
|
|
90
|
+
* refs, where guessing a location would be misleading.
|
|
91
|
+
*/
|
|
92
|
+
export declare const schemeCarrier: (resolved: ResolvedScheme) => {
|
|
93
|
+
name: string;
|
|
94
|
+
in: string;
|
|
95
|
+
} | undefined;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code-sample generation for an operation. Deliberately dependency-free: the
|
|
3
|
+
* playground client renders samples live in the browser, so this module must
|
|
4
|
+
* stay out of the server-only dependency graph (no helpers.ts, no
|
|
5
|
+
* openapi-sampler). Requests are assembled once by `buildRequest` in
|
|
6
|
+
* `request.ts`; the builders here only render a finished `RequestSample` as
|
|
7
|
+
* simple, copy-pasteable starter code — not an exhaustive SDK.
|
|
8
|
+
*/
|
|
9
|
+
export interface RequestSample {
|
|
10
|
+
method: string;
|
|
11
|
+
url: string;
|
|
12
|
+
headers: Record<string, string>;
|
|
13
|
+
/**
|
|
14
|
+
* The request body as sent, when the operation takes one: JSON text,
|
|
15
|
+
* form-urlencoded pairs, or a raw media type's text.
|
|
16
|
+
*/
|
|
17
|
+
body?: string;
|
|
18
|
+
bodyValue?: unknown;
|
|
19
|
+
/**
|
|
20
|
+
* A `multipart/form-data` body's parts as `[name, value]` pairs, set
|
|
21
|
+
* instead of `body`. The request carries no Content-Type of its own for
|
|
22
|
+
* them: the client writes one with the parts' boundary.
|
|
23
|
+
*/
|
|
24
|
+
formData?: [string, string][];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether fetch refuses to send `method` (an upper-case HTTP method). TRACE is
|
|
28
|
+
* one of the Fetch standard's forbidden methods, and the only one an OpenAPI
|
|
29
|
+
* spec can declare: browsers and Node's fetch alike throw a TypeError before
|
|
30
|
+
* any request goes out.
|
|
31
|
+
*/
|
|
32
|
+
export declare const fetchRefusesMethod: (method: string) => boolean;
|
|
33
|
+
/** A code-sample language: config id -> label, Shiki lang, and builder. */
|
|
34
|
+
export interface SampleLanguage {
|
|
35
|
+
id: string;
|
|
36
|
+
label: string;
|
|
37
|
+
lang: string;
|
|
38
|
+
build: (sample: RequestSample) => string;
|
|
39
|
+
}
|
|
40
|
+
/** Every id `codeSamples` accepts for a generated sample. */
|
|
41
|
+
export declare const SAMPLE_LANGUAGE_IDS: string[];
|
|
42
|
+
/** A configured id or alias, as the id it names (lowercased). */
|
|
43
|
+
export declare const sampleLanguageId: (raw: string) => string;
|
|
44
|
+
/** A language's display name and the Shiki language that highlights it. */
|
|
45
|
+
export interface SampleLanguageInfo {
|
|
46
|
+
label: string;
|
|
47
|
+
lang: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The display name and Shiki language of a language id or alias, or `null`
|
|
51
|
+
* when Blume doesn't generate that language.
|
|
52
|
+
*/
|
|
53
|
+
export declare const sampleLanguageInfo: (raw: string) => SampleLanguageInfo | null;
|
|
54
|
+
/** `openapi()`'s default `codeSamples`, which hand-written endpoint pages always use. */
|
|
55
|
+
export declare const DEFAULT_SAMPLE_LANGUAGES: string[];
|
|
56
|
+
/**
|
|
57
|
+
* The sample languages to render, resolved from config ids (unknown ids
|
|
58
|
+
* dropped), in order. `false` and an empty list both render none.
|
|
59
|
+
*/
|
|
60
|
+
export declare const sampleLanguages: (ids: string[] | false) => SampleLanguage[];
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { HeadScript } from "../analytics/head.ts";
|
|
3
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
4
|
+
/** Options for {@link ethyca}. */
|
|
5
|
+
export interface EthycaOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The key of the privacy notice that covers analytics, as you named it in
|
|
8
|
+
* Fides. Defaults to `analytics`.
|
|
9
|
+
*/
|
|
10
|
+
notice?: string;
|
|
11
|
+
/** Your Fides privacy center's origin, which serves `fides.js`. */
|
|
12
|
+
privacyCenter: string;
|
|
13
|
+
/** The Fides property to load, when you have more than one. */
|
|
14
|
+
propertyId?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const ethycaOptionsSchema: z.ZodObject<{
|
|
17
|
+
notice: z.ZodOptional<z.ZodString>;
|
|
18
|
+
privacyCenter: z.ZodURL;
|
|
19
|
+
propertyId: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
export type EthycaAdapter = AdapterDescriptor<"ethyca", EthycaOptions>;
|
|
22
|
+
export declare const ethycaAdapterSchema: z.ZodObject<{
|
|
23
|
+
kind: z.ZodLiteral<"ethyca">;
|
|
24
|
+
options: z.ZodObject<{
|
|
25
|
+
notice: z.ZodOptional<z.ZodString>;
|
|
26
|
+
privacyCenter: z.ZodURL;
|
|
27
|
+
propertyId: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, z.core.$strict>;
|
|
29
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
30
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
/**
|
|
33
|
+
* Ethyca's Fides consent manager, loaded from your privacy center. Fides
|
|
34
|
+
* shows its own banner and modal, set up in Fides, and Blume runs the
|
|
35
|
+
* analytics once the reader's analytics notice is on. Nothing here is
|
|
36
|
+
* secret.
|
|
37
|
+
*/
|
|
38
|
+
export declare const ethyca: (options: EthycaOptions) => EthycaAdapter;
|
|
39
|
+
/**
|
|
40
|
+
* Reports the analytics notice to `window.blumeConsent` when Fides is ready
|
|
41
|
+
* and whenever the reader saves a change, and reopens Fides' modal from the
|
|
42
|
+
* Cookie settings link. The notice key rides in as `data-notice`. It counts
|
|
43
|
+
* as allowed when on (`true`), opted in, or a notice that only asks for
|
|
44
|
+
* acknowledgment.
|
|
45
|
+
*/
|
|
46
|
+
export declare const ETHYCA_BRIDGE = "(()=>{const c=window.blumeConsent;if(!c){return;}const k=document.currentScript?.dataset.notice??\"analytics\";const sync=(e)=>{const v=(e?.detail?.consent??window.Fides?.consent??{})[k];c.set({analytics:v===true||v===\"opt_in\"||v===\"acknowledge\"});};c.open=()=>window.Fides?.showModal();addEventListener(\"FidesReady\",sync);addEventListener(\"FidesUpdated\",sync);if(window.Fides?.initialized){sync();}})();";
|
|
47
|
+
/** Fides' script from the privacy center, then the bridge. */
|
|
48
|
+
export declare const ethycaHead: (options: EthycaOptions) => HeadScript[];
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consent adapters for `blume.config.ts`:
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* import { defineConfig } from "blume";
|
|
6
|
+
* import { googleAnalytics } from "blume/analytics";
|
|
7
|
+
* import { native } from "blume/consent";
|
|
8
|
+
*
|
|
9
|
+
* export default defineConfig({
|
|
10
|
+
* analytics: [googleAnalytics({ id: "G-XXXXXXXXXX" })],
|
|
11
|
+
* consent: native({ policy: "/privacy" }),
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* With `consent` set, analytics waits for the reader: every adapter's tags are
|
|
16
|
+
* held until the consent adapter reports that analytics is allowed. Each
|
|
17
|
+
* factory returns a plain descriptor (see `core/adapter.ts`).
|
|
18
|
+
*
|
|
19
|
+
* Adding a consent manager: a factory and option schema in its own module,
|
|
20
|
+
* and a member of `consentAdapterSchema` (`schema.ts`). Then connect it to
|
|
21
|
+
* `window.blumeConsent` (see `init.ts` for the contract): report the reader's
|
|
22
|
+
* choice with `set({ analytics })` on load and on every change, and set
|
|
23
|
+
* `open` to reopen the manager's preferences. A hosted manager does that
|
|
24
|
+
* with tags in `consentHead` (`head.ts`): its loader, then a constant bridge
|
|
25
|
+
* script (`osano.ts` is an example). A manager that ships as an npm package
|
|
26
|
+
* does it in a browser module instead, registered in `clients.ts`, with its
|
|
27
|
+
* packages in the factory's `runtimeDeps` (`native()`'s banner is the
|
|
28
|
+
* example).
|
|
29
|
+
*/
|
|
30
|
+
export type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
|
|
31
|
+
export { ethyca } from "./ethyca.ts";
|
|
32
|
+
export type { EthycaAdapter, EthycaOptions } from "./ethyca.ts";
|
|
33
|
+
export { native } from "./native.ts";
|
|
34
|
+
export type { NativeAdapter, NativeOptions } from "./native.ts";
|
|
35
|
+
export { osano } from "./osano.ts";
|
|
36
|
+
export type { OsanoAdapter, OsanoOptions } from "./osano.ts";
|
|
37
|
+
export type { ConsentAdapter } from "./schema.ts";
|