@brainfish-ai/devdoc 0.1.42 → 0.1.44
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/dist/cli/commands/create.js +2 -2
- package/dist/cli/commands/dev.js +19 -10
- package/package.json +3 -2
- package/renderer/app/api/assets/[...path]/route.js +108 -0
- package/renderer/app/api/assets/route.js +114 -0
- package/renderer/app/api/assets/upload/route.js +163 -0
- package/renderer/app/api/auth-schemes/route.js +58 -0
- package/renderer/app/api/chat/route.js +759 -0
- package/renderer/app/api/codegen/route.js +52 -0
- package/renderer/app/api/collections/route.js +706 -0
- package/renderer/app/api/debug/route.js +47 -0
- package/renderer/app/api/deploy/route.js +199 -0
- package/renderer/app/api/device/route.js +36 -0
- package/renderer/app/api/docs/route.js +205 -0
- package/renderer/app/api/domains/add/route.js +121 -0
- package/renderer/app/api/domains/lookup/route.js +43 -0
- package/renderer/app/api/domains/remove/route.js +89 -0
- package/renderer/app/api/domains/status/route.js +140 -0
- package/renderer/app/api/domains/verify/route.js +168 -0
- package/renderer/app/api/keys/regenerate/route.js +71 -0
- package/renderer/app/api/local-assets/[...path]/route.js +108 -0
- package/renderer/app/api/openapi-spec/route.js +73 -0
- package/renderer/app/api/projects/[slug]/route.js +129 -0
- package/renderer/app/api/projects/[slug]/stats/route.js +80 -0
- package/renderer/app/api/projects/register/route.js +176 -0
- package/renderer/app/api/proxy/route.js +139 -0
- package/renderer/app/api/proxy-stream/route.js +156 -0
- package/renderer/app/api/redirects/route.js +35 -0
- package/renderer/app/api/schema/route.js +85 -0
- package/renderer/app/api/subdomains/check/route.js +158 -0
- package/renderer/app/api/suggestions/route.js +195 -0
- package/renderer/app/globals.css +69 -0
- package/renderer/app/layout.js +47 -0
- package/renderer/app/llms-full.txt/route.js +266 -0
- package/renderer/app/llms.txt/route.js +228 -0
- package/renderer/app/page.js +12 -0
- package/renderer/app/robots.txt/route.js +66 -0
- package/renderer/app/sitemap.xml/route.js +155 -0
- package/renderer/components/docs/index.js +8 -0
- package/renderer/components/docs/mdx/accordion.js +113 -0
- package/renderer/components/docs/mdx/badge.js +72 -0
- package/renderer/components/docs/mdx/callouts.js +137 -0
- package/renderer/components/docs/mdx/cards.js +175 -0
- package/renderer/components/docs/mdx/changelog.js +100 -0
- package/renderer/components/docs/mdx/code-block.js +147 -0
- package/renderer/components/docs/mdx/code-group.js +287 -0
- package/renderer/components/docs/mdx/file-embeds.js +82 -0
- package/renderer/components/docs/mdx/frame.js +59 -0
- package/renderer/components/docs/mdx/highlight.js +90 -0
- package/renderer/components/docs/mdx/iframe.js +69 -0
- package/renderer/components/docs/mdx/image.js +135 -0
- package/renderer/components/docs/mdx/index.js +134 -0
- package/renderer/components/docs/mdx/landing.js +317 -0
- package/renderer/components/docs/mdx/mermaid.js +212 -0
- package/renderer/components/docs/mdx/param-field.js +112 -0
- package/renderer/components/docs/mdx/steps.js +74 -0
- package/renderer/components/docs/mdx/tabs.js +50 -0
- package/renderer/components/docs/mdx-renderer.js +77 -0
- package/renderer/components/docs/navigation/breadcrumbs.js +64 -0
- package/renderer/components/docs/navigation/index.js +6 -0
- package/renderer/components/docs/navigation/page-nav.js +57 -0
- package/renderer/components/docs/navigation/sidebar.js +375 -0
- package/renderer/components/docs/navigation/toc.js +89 -0
- package/renderer/components/docs/notice.js +77 -0
- package/renderer/components/docs-header.js +202 -0
- package/renderer/components/docs-viewer/agent/agent-chat.js +1831 -0
- package/renderer/components/docs-viewer/agent/agent-popup-button.js +99 -0
- package/renderer/components/docs-viewer/agent/cards/debug-context-card.js +107 -0
- package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.js +57 -0
- package/renderer/components/docs-viewer/agent/cards/index.js +45 -0
- package/renderer/components/docs-viewer/agent/cards/response-options-card.js +154 -0
- package/renderer/components/docs-viewer/agent/cards/types.js +22 -0
- package/renderer/components/docs-viewer/agent/chat-message.js +2 -0
- package/renderer/components/docs-viewer/agent/index.js +7 -0
- package/renderer/components/docs-viewer/agent/messages/assistant-message.js +108 -0
- package/renderer/components/docs-viewer/agent/messages/chat-message.js +34 -0
- package/renderer/components/docs-viewer/agent/messages/index.js +6 -0
- package/renderer/components/docs-viewer/agent/messages/tool-call-display.js +1065 -0
- package/renderer/components/docs-viewer/agent/messages/types.js +2 -0
- package/renderer/components/docs-viewer/agent/messages/typing-indicator.js +26 -0
- package/renderer/components/docs-viewer/agent/messages/user-message.js +37 -0
- package/renderer/components/docs-viewer/code-editor/{index.tsx → index.js} +1 -1
- package/renderer/components/docs-viewer/code-editor/notes-mode.js +1338 -0
- package/renderer/components/docs-viewer/content/changelog-page.js +297 -0
- package/renderer/components/docs-viewer/content/content-router.js +182 -0
- package/renderer/components/docs-viewer/content/doc-page.js +290 -0
- package/renderer/components/docs-viewer/content/documentation-viewer.js +14 -0
- package/renderer/components/docs-viewer/content/index.js +31 -0
- package/renderer/components/docs-viewer/content/not-found-page.js +300 -0
- package/renderer/components/docs-viewer/content/request-details.js +528 -0
- package/renderer/components/docs-viewer/content/sections/auth.js +108 -0
- package/renderer/components/docs-viewer/content/sections/body.js +80 -0
- package/renderer/components/docs-viewer/content/sections/headers.js +64 -0
- package/renderer/components/docs-viewer/content/sections/overview.js +56 -0
- package/renderer/components/docs-viewer/content/sections/parameters.js +64 -0
- package/renderer/components/docs-viewer/content/sections/responses.js +91 -0
- package/renderer/components/docs-viewer/global-auth-modal.js +427 -0
- package/renderer/components/docs-viewer/index.js +1448 -0
- package/renderer/components/docs-viewer/playground/auth-editor.js +418 -0
- package/renderer/components/docs-viewer/playground/body-editor.js +240 -0
- package/renderer/components/docs-viewer/playground/code-editor.js +135 -0
- package/renderer/components/docs-viewer/playground/code-snippet.js +393 -0
- package/renderer/components/docs-viewer/playground/graphql-playground.js +936 -0
- package/renderer/components/docs-viewer/playground/index.js +682 -0
- package/renderer/components/docs-viewer/playground/key-value-editor.js +317 -0
- package/renderer/components/docs-viewer/playground/method-selector.js +65 -0
- package/renderer/components/docs-viewer/playground/request-builder.js +181 -0
- package/renderer/components/docs-viewer/playground/request-tabs.js +240 -0
- package/renderer/components/docs-viewer/playground/response-cards/idle-card.js +42 -0
- package/renderer/components/docs-viewer/playground/response-cards/index.js +72 -0
- package/renderer/components/docs-viewer/playground/response-cards/loading-card.js +24 -0
- package/renderer/components/docs-viewer/playground/response-cards/network-error-card.js +28 -0
- package/renderer/components/docs-viewer/playground/response-cards/response-body-card.js +308 -0
- package/renderer/components/docs-viewer/playground/response-cards/types.js +9 -0
- package/renderer/components/docs-viewer/playground/response-viewer.js +18 -0
- package/renderer/components/docs-viewer/search/index.js +2 -0
- package/renderer/components/docs-viewer/search/search-dialog.js +367 -0
- package/renderer/components/docs-viewer/search/use-search.js +89 -0
- package/renderer/components/docs-viewer/shared/markdown-renderer.js +423 -0
- package/renderer/components/docs-viewer/shared/method-badge.js +23 -0
- package/renderer/components/docs-viewer/shared/schema-viewer.js +321 -0
- package/renderer/components/docs-viewer/sidebar/collection-tree.js +222 -0
- package/renderer/components/docs-viewer/sidebar/endpoint-options.js +512 -0
- package/renderer/components/docs-viewer/sidebar/index.js +196 -0
- package/renderer/components/docs-viewer/sidebar/right-sidebar.js +159 -0
- package/renderer/components/docs-viewer/sidebar/sidebar-group.js +87 -0
- package/renderer/components/docs-viewer/sidebar/sidebar-item.js +172 -0
- package/renderer/components/docs-viewer/sidebar/sidebar-section.js +31 -0
- package/renderer/components/theme-provider.js +10 -0
- package/renderer/components/theme-toggle.js +86 -0
- package/renderer/components/ui/badge.js +29 -0
- package/renderer/components/ui/button.js +40 -0
- package/renderer/components/ui/dialog.js +50 -0
- package/renderer/components/ui/dropdown-menu.js +143 -0
- package/renderer/components/ui/input.js +12 -0
- package/renderer/components/ui/label.js +13 -0
- package/renderer/components/ui/navigation-menu.js +83 -0
- package/renderer/components/ui/select.js +116 -0
- package/renderer/components/ui/spinner.js +92 -0
- package/renderer/components/ui/tabs.js +34 -0
- package/renderer/components/ui/tooltip.js +43 -0
- package/renderer/hooks/use-code-copy.js +76 -0
- package/renderer/hooks/use-openapi-title.js +33 -0
- package/renderer/hooks/use-route-state.js +159 -0
- package/renderer/lib/api-docs/agent/index.js +4 -0
- package/renderer/lib/api-docs/agent/indexer.js +254 -0
- package/renderer/lib/api-docs/agent/spec-summary.js +227 -0
- package/renderer/lib/api-docs/agent/types.js +5 -0
- package/renderer/lib/api-docs/agent/use-suggestions.js +97 -0
- package/renderer/lib/api-docs/auth/auth-context.js +157 -0
- package/renderer/lib/api-docs/auth/auth-storage.js +66 -0
- package/renderer/lib/api-docs/auth/crypto.js +64 -0
- package/renderer/lib/api-docs/auth/index.js +3 -0
- package/renderer/lib/api-docs/code-editor/db.js +145 -0
- package/renderer/lib/api-docs/code-editor/hooks.js +254 -0
- package/renderer/lib/api-docs/code-editor/{index.ts → index.js} +3 -4
- package/renderer/lib/api-docs/code-editor/mode-context.js +126 -0
- package/renderer/lib/api-docs/code-editor/types.js +53 -0
- package/renderer/lib/api-docs/codegen/definitions.js +258 -0
- package/renderer/lib/api-docs/codegen/har.js +171 -0
- package/renderer/lib/api-docs/codegen/index.js +118 -0
- package/renderer/lib/api-docs/factories.js +136 -0
- package/renderer/lib/api-docs/{index.ts → index.js} +5 -10
- package/renderer/lib/api-docs/mobile-context.js +116 -0
- package/renderer/lib/api-docs/navigation-context.js +62 -0
- package/renderer/lib/api-docs/parsers/graphql/index.js +50 -0
- package/renderer/lib/api-docs/parsers/graphql/parser.js +350 -0
- package/renderer/lib/api-docs/parsers/graphql/transformer.js +215 -0
- package/renderer/lib/api-docs/parsers/graphql/types.js +46 -0
- package/renderer/lib/api-docs/parsers/openapi/dereferencer.js +43 -0
- package/renderer/lib/api-docs/parsers/openapi/extractors/auth.js +486 -0
- package/renderer/lib/api-docs/parsers/openapi/extractors/body.js +295 -0
- package/renderer/lib/api-docs/parsers/openapi/extractors/index.js +132 -0
- package/renderer/lib/api-docs/parsers/openapi/index.js +127 -0
- package/renderer/lib/api-docs/parsers/openapi/transformer.js +192 -0
- package/renderer/lib/api-docs/parsers/openapi/validator.js +24 -0
- package/renderer/lib/api-docs/playground/context.js +65 -0
- package/renderer/lib/api-docs/playground/navigation-context.js +74 -0
- package/renderer/lib/api-docs/playground/request-builder.js +163 -0
- package/renderer/lib/api-docs/playground/request-runner.js +224 -0
- package/renderer/lib/api-docs/playground/types.js +5 -0
- package/renderer/lib/api-docs/types.js +23 -0
- package/renderer/lib/api-docs/utils.js +212 -0
- package/renderer/lib/cache.js +157 -0
- package/renderer/lib/docs/config/domain-schema.js +161 -0
- package/renderer/lib/docs/config/environment.js +38 -0
- package/renderer/lib/docs/config/index.js +6 -0
- package/renderer/lib/docs/config/loader.js +113 -0
- package/renderer/lib/docs/config/schema.js +281 -0
- package/renderer/lib/docs/index.js +8 -0
- package/renderer/lib/docs/mdx/compiler.js +131 -0
- package/renderer/lib/docs/mdx/frontmatter.js +73 -0
- package/renderer/lib/docs/mdx/index.js +10 -0
- package/renderer/lib/docs/mdx/remark-mermaid.js +63 -0
- package/renderer/lib/docs/navigation/generator.js +269 -0
- package/renderer/lib/docs/navigation/index.js +3 -0
- package/renderer/lib/docs/navigation/types.js +11 -0
- package/renderer/lib/docs-navigation-context.js +40 -0
- package/renderer/lib/docs-navigation.js +140 -0
- package/renderer/lib/multi-tenant/context.js +80 -0
- package/renderer/lib/storage/blob.js +767 -0
- package/renderer/lib/utils/icons.js +30 -0
- package/renderer/lib/utils.js +5 -0
- package/renderer/next.config.js +62 -0
- package/renderer/package.json +1 -0
- package/renderer/tsconfig.json +23 -5
- package/renderer/app/api/assets/[...path]/route.ts +0 -123
- package/renderer/app/api/assets/route.ts +0 -124
- package/renderer/app/api/assets/upload/route.ts +0 -177
- package/renderer/app/api/auth-schemes/route.ts +0 -77
- package/renderer/app/api/chat/route.ts +0 -858
- package/renderer/app/api/codegen/route.ts +0 -72
- package/renderer/app/api/collections/route.ts +0 -1002
- package/renderer/app/api/debug/route.ts +0 -53
- package/renderer/app/api/deploy/route.ts +0 -234
- package/renderer/app/api/device/route.ts +0 -42
- package/renderer/app/api/docs/route.ts +0 -201
- package/renderer/app/api/domains/add/route.ts +0 -132
- package/renderer/app/api/domains/lookup/route.ts +0 -43
- package/renderer/app/api/domains/remove/route.ts +0 -100
- package/renderer/app/api/domains/status/route.ts +0 -158
- package/renderer/app/api/domains/verify/route.ts +0 -181
- package/renderer/app/api/keys/regenerate/route.ts +0 -80
- package/renderer/app/api/local-assets/[...path]/route.ts +0 -122
- package/renderer/app/api/openapi-spec/route.ts +0 -151
- package/renderer/app/api/projects/[slug]/route.ts +0 -153
- package/renderer/app/api/projects/[slug]/stats/route.ts +0 -96
- package/renderer/app/api/projects/register/route.ts +0 -152
- package/renderer/app/api/proxy/route.ts +0 -149
- package/renderer/app/api/proxy-stream/route.ts +0 -168
- package/renderer/app/api/redirects/route.ts +0 -47
- package/renderer/app/api/schema/route.ts +0 -73
- package/renderer/app/api/subdomains/check/route.ts +0 -172
- package/renderer/app/api/suggestions/route.ts +0 -144
- package/renderer/app/layout.tsx +0 -54
- package/renderer/app/llms-full.txt/route.ts +0 -346
- package/renderer/app/llms.txt/route.ts +0 -279
- package/renderer/app/page.tsx +0 -14
- package/renderer/app/robots.txt/route.ts +0 -84
- package/renderer/app/sitemap.xml/route.ts +0 -199
- package/renderer/components/docs/index.ts +0 -12
- package/renderer/components/docs/mdx/accordion.tsx +0 -169
- package/renderer/components/docs/mdx/badge.tsx +0 -132
- package/renderer/components/docs/mdx/callouts.tsx +0 -154
- package/renderer/components/docs/mdx/cards.tsx +0 -241
- package/renderer/components/docs/mdx/changelog.tsx +0 -120
- package/renderer/components/docs/mdx/code-block.tsx +0 -186
- package/renderer/components/docs/mdx/code-group.tsx +0 -421
- package/renderer/components/docs/mdx/file-embeds.tsx +0 -105
- package/renderer/components/docs/mdx/frame.tsx +0 -112
- package/renderer/components/docs/mdx/highlight.tsx +0 -151
- package/renderer/components/docs/mdx/iframe.tsx +0 -134
- package/renderer/components/docs/mdx/image.tsx +0 -235
- package/renderer/components/docs/mdx/index.ts +0 -237
- package/renderer/components/docs/mdx/landing.tsx +0 -684
- package/renderer/components/docs/mdx/mermaid.tsx +0 -240
- package/renderer/components/docs/mdx/param-field.tsx +0 -200
- package/renderer/components/docs/mdx/steps.tsx +0 -113
- package/renderer/components/docs/mdx/tabs.tsx +0 -86
- package/renderer/components/docs/mdx-renderer.tsx +0 -100
- package/renderer/components/docs/navigation/breadcrumbs.tsx +0 -76
- package/renderer/components/docs/navigation/index.ts +0 -8
- package/renderer/components/docs/navigation/page-nav.tsx +0 -64
- package/renderer/components/docs/navigation/sidebar.tsx +0 -515
- package/renderer/components/docs/navigation/toc.tsx +0 -113
- package/renderer/components/docs/notice.tsx +0 -105
- package/renderer/components/docs-header.tsx +0 -278
- package/renderer/components/docs-viewer/agent/agent-chat.tsx +0 -2076
- package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +0 -90
- package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +0 -49
- package/renderer/components/docs-viewer/agent/cards/index.tsx +0 -50
- package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +0 -212
- package/renderer/components/docs-viewer/agent/cards/types.ts +0 -84
- package/renderer/components/docs-viewer/agent/chat-message.tsx +0 -17
- package/renderer/components/docs-viewer/agent/index.tsx +0 -6
- package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +0 -119
- package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +0 -46
- package/renderer/components/docs-viewer/agent/messages/index.ts +0 -17
- package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +0 -721
- package/renderer/components/docs-viewer/agent/messages/types.ts +0 -61
- package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +0 -24
- package/renderer/components/docs-viewer/agent/messages/user-message.tsx +0 -51
- package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +0 -1283
- package/renderer/components/docs-viewer/content/changelog-page.tsx +0 -331
- package/renderer/components/docs-viewer/content/doc-page.tsx +0 -367
- package/renderer/components/docs-viewer/content/documentation-viewer.tsx +0 -17
- package/renderer/components/docs-viewer/content/index.tsx +0 -29
- package/renderer/components/docs-viewer/content/not-found-page.tsx +0 -330
- package/renderer/components/docs-viewer/content/request-details.tsx +0 -330
- package/renderer/components/docs-viewer/content/sections/auth.tsx +0 -69
- package/renderer/components/docs-viewer/content/sections/body.tsx +0 -66
- package/renderer/components/docs-viewer/content/sections/headers.tsx +0 -43
- package/renderer/components/docs-viewer/content/sections/overview.tsx +0 -40
- package/renderer/components/docs-viewer/content/sections/parameters.tsx +0 -43
- package/renderer/components/docs-viewer/content/sections/responses.tsx +0 -87
- package/renderer/components/docs-viewer/global-auth-modal.tsx +0 -352
- package/renderer/components/docs-viewer/index.tsx +0 -1670
- package/renderer/components/docs-viewer/playground/auth-editor.tsx +0 -280
- package/renderer/components/docs-viewer/playground/body-editor.tsx +0 -221
- package/renderer/components/docs-viewer/playground/code-editor.tsx +0 -224
- package/renderer/components/docs-viewer/playground/code-snippet.tsx +0 -387
- package/renderer/components/docs-viewer/playground/graphql-playground.tsx +0 -745
- package/renderer/components/docs-viewer/playground/index.tsx +0 -671
- package/renderer/components/docs-viewer/playground/key-value-editor.tsx +0 -261
- package/renderer/components/docs-viewer/playground/method-selector.tsx +0 -60
- package/renderer/components/docs-viewer/playground/request-builder.tsx +0 -179
- package/renderer/components/docs-viewer/playground/request-tabs.tsx +0 -237
- package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +0 -21
- package/renderer/components/docs-viewer/playground/response-cards/index.tsx +0 -93
- package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +0 -16
- package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +0 -23
- package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +0 -268
- package/renderer/components/docs-viewer/playground/response-cards/types.ts +0 -82
- package/renderer/components/docs-viewer/playground/response-viewer.tsx +0 -43
- package/renderer/components/docs-viewer/search/index.ts +0 -2
- package/renderer/components/docs-viewer/search/search-dialog.tsx +0 -331
- package/renderer/components/docs-viewer/search/use-search.ts +0 -117
- package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +0 -431
- package/renderer/components/docs-viewer/shared/method-badge.tsx +0 -41
- package/renderer/components/docs-viewer/shared/schema-viewer.tsx +0 -349
- package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +0 -259
- package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +0 -316
- package/renderer/components/docs-viewer/sidebar/index.tsx +0 -282
- package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +0 -202
- package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +0 -118
- package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +0 -212
- package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +0 -38
- package/renderer/components/theme-provider.tsx +0 -11
- package/renderer/components/theme-toggle.tsx +0 -76
- package/renderer/components/ui/badge.tsx +0 -46
- package/renderer/components/ui/button.tsx +0 -59
- package/renderer/components/ui/dialog.tsx +0 -118
- package/renderer/components/ui/dropdown-menu.tsx +0 -257
- package/renderer/components/ui/input.tsx +0 -21
- package/renderer/components/ui/label.tsx +0 -24
- package/renderer/components/ui/navigation-menu.tsx +0 -168
- package/renderer/components/ui/select.tsx +0 -190
- package/renderer/components/ui/spinner.tsx +0 -114
- package/renderer/components/ui/tabs.tsx +0 -66
- package/renderer/components/ui/tooltip.tsx +0 -61
- package/renderer/hooks/use-code-copy.ts +0 -88
- package/renderer/hooks/use-openapi-title.ts +0 -44
- package/renderer/lib/api-docs/agent/index.ts +0 -6
- package/renderer/lib/api-docs/agent/indexer.ts +0 -323
- package/renderer/lib/api-docs/agent/spec-summary.ts +0 -335
- package/renderer/lib/api-docs/agent/types.ts +0 -116
- package/renderer/lib/api-docs/auth/auth-context.tsx +0 -225
- package/renderer/lib/api-docs/auth/auth-storage.ts +0 -87
- package/renderer/lib/api-docs/auth/crypto.ts +0 -89
- package/renderer/lib/api-docs/auth/index.ts +0 -4
- package/renderer/lib/api-docs/code-editor/db.ts +0 -164
- package/renderer/lib/api-docs/code-editor/hooks.ts +0 -266
- package/renderer/lib/api-docs/code-editor/mode-context.tsx +0 -207
- package/renderer/lib/api-docs/code-editor/types.ts +0 -105
- package/renderer/lib/api-docs/codegen/definitions.ts +0 -297
- package/renderer/lib/api-docs/codegen/har.ts +0 -251
- package/renderer/lib/api-docs/codegen/index.ts +0 -159
- package/renderer/lib/api-docs/factories.ts +0 -170
- package/renderer/lib/api-docs/mobile-context.tsx +0 -112
- package/renderer/lib/api-docs/navigation-context.tsx +0 -88
- package/renderer/lib/api-docs/parsers/graphql/README.md +0 -129
- package/renderer/lib/api-docs/parsers/graphql/index.ts +0 -91
- package/renderer/lib/api-docs/parsers/graphql/parser.ts +0 -491
- package/renderer/lib/api-docs/parsers/graphql/transformer.ts +0 -246
- package/renderer/lib/api-docs/parsers/graphql/types.ts +0 -283
- package/renderer/lib/api-docs/parsers/openapi/README.md +0 -32
- package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +0 -60
- package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +0 -574
- package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +0 -403
- package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +0 -232
- package/renderer/lib/api-docs/parsers/openapi/index.ts +0 -171
- package/renderer/lib/api-docs/parsers/openapi/transformer.ts +0 -278
- package/renderer/lib/api-docs/parsers/openapi/validator.ts +0 -31
- package/renderer/lib/api-docs/playground/context.tsx +0 -107
- package/renderer/lib/api-docs/playground/navigation-context.tsx +0 -124
- package/renderer/lib/api-docs/playground/request-builder.ts +0 -223
- package/renderer/lib/api-docs/playground/request-runner.ts +0 -282
- package/renderer/lib/api-docs/playground/types.ts +0 -35
- package/renderer/lib/api-docs/types.ts +0 -269
- package/renderer/lib/api-docs/utils.ts +0 -311
- package/renderer/lib/cache.ts +0 -193
- package/renderer/lib/docs/config/domain-schema.ts +0 -260
- package/renderer/lib/docs/config/index.ts +0 -43
- package/renderer/lib/docs/config/loader.ts +0 -142
- package/renderer/lib/docs/config/schema.ts +0 -308
- package/renderer/lib/docs/index.ts +0 -12
- package/renderer/lib/docs/mdx/compiler.ts +0 -176
- package/renderer/lib/docs/mdx/frontmatter.ts +0 -91
- package/renderer/lib/docs/mdx/index.ts +0 -26
- package/renderer/lib/docs/navigation/generator.ts +0 -348
- package/renderer/lib/docs/navigation/index.ts +0 -12
- package/renderer/lib/docs/navigation/types.ts +0 -123
- package/renderer/lib/docs-navigation-context.tsx +0 -80
- package/renderer/lib/multi-tenant/context.ts +0 -105
- package/renderer/lib/storage/blob.ts +0 -1083
- package/renderer/lib/utils/icons.ts +0 -48
- package/renderer/lib/utils.ts +0 -6
- package/renderer/next.config.ts +0 -76
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Documentation Configuration Schema (docs.json)
|
|
5
|
-
*
|
|
6
|
-
* Mintlify-compatible configuration schema for documentation sites.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Navigation Schemas
|
|
11
|
-
// ============================================================================
|
|
12
|
-
|
|
13
|
-
const anchorSchema = z.object({
|
|
14
|
-
anchor: z.string(),
|
|
15
|
-
href: z.string(),
|
|
16
|
-
icon: z.string().optional(),
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
const navLinkSchema = z.object({
|
|
20
|
-
label: z.string(),
|
|
21
|
-
href: z.string(),
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
// Page can be a string or a nested group
|
|
25
|
-
const pageRefSchema: z.ZodType<string | { group: string; pages: (string | object)[] }> = z.lazy(() =>
|
|
26
|
-
z.union([
|
|
27
|
-
z.string(), // Page path like "quickstart" or "guides/intro"
|
|
28
|
-
z.object({ // Nested group
|
|
29
|
-
group: z.string(),
|
|
30
|
-
pages: z.array(z.union([z.string(), z.lazy(() => pageRefSchema)])),
|
|
31
|
-
}),
|
|
32
|
-
])
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
const groupSchema = z.object({
|
|
36
|
-
group: z.string(),
|
|
37
|
-
pages: z.array(pageRefSchema),
|
|
38
|
-
icon: z.string().optional(),
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
// OpenAPI version schema
|
|
42
|
-
const openapiVersionSchema = z.object({
|
|
43
|
-
version: z.string(),
|
|
44
|
-
spec: z.string(),
|
|
45
|
-
default: z.boolean().optional(),
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
// Different tab types
|
|
49
|
-
const docsTabSchema = z.object({
|
|
50
|
-
tab: z.string(),
|
|
51
|
-
type: z.literal('docs').optional(),
|
|
52
|
-
groups: z.array(groupSchema),
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
const openapiTabSchema = z.object({
|
|
56
|
-
tab: z.string(),
|
|
57
|
-
type: z.literal('openapi'),
|
|
58
|
-
path: z.string().optional(),
|
|
59
|
-
versions: z.array(openapiVersionSchema).optional(),
|
|
60
|
-
spec: z.string().optional(),
|
|
61
|
-
groups: z.array(groupSchema).optional(), // Doc groups alongside API reference
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
const graphqlTabSchema = z.object({
|
|
65
|
-
tab: z.string(),
|
|
66
|
-
type: z.literal('graphql'),
|
|
67
|
-
path: z.string().optional(),
|
|
68
|
-
schema: z.string(), // GraphQL schema file path
|
|
69
|
-
endpoint: z.string().optional(), // GraphQL endpoint URL
|
|
70
|
-
groups: z.array(groupSchema).optional(), // Doc groups alongside API reference
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
const changelogTabSchema = z.object({
|
|
74
|
-
tab: z.string(),
|
|
75
|
-
type: z.literal('changelog'),
|
|
76
|
-
path: z.string().optional(),
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
const tabSchema = z.union([docsTabSchema, openapiTabSchema, graphqlTabSchema, changelogTabSchema])
|
|
80
|
-
|
|
81
|
-
const navigationSchema = z.object({
|
|
82
|
-
tabs: z.array(tabSchema).optional(),
|
|
83
|
-
groups: z.array(groupSchema).optional(), // For single-tab sites
|
|
84
|
-
global: z.object({
|
|
85
|
-
anchors: z.array(anchorSchema).optional(),
|
|
86
|
-
}).optional(),
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
// ============================================================================
|
|
90
|
-
// Theme & Branding Schemas
|
|
91
|
-
// ============================================================================
|
|
92
|
-
|
|
93
|
-
const colorSchema = z.object({
|
|
94
|
-
primary: z.string(),
|
|
95
|
-
light: z.string().optional(),
|
|
96
|
-
dark: z.string().optional(),
|
|
97
|
-
background: z.object({
|
|
98
|
-
light: z.string().optional(),
|
|
99
|
-
dark: z.string().optional(),
|
|
100
|
-
}).optional(),
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
const logoSchema = z.object({
|
|
104
|
-
light: z.string(),
|
|
105
|
-
dark: z.string(),
|
|
106
|
-
href: z.string().optional(),
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
const faviconSchema = z.string()
|
|
110
|
-
|
|
111
|
-
// ============================================================================
|
|
112
|
-
// Navbar Schema
|
|
113
|
-
// ============================================================================
|
|
114
|
-
|
|
115
|
-
const navbarPrimarySchema = z.object({
|
|
116
|
-
type: z.enum(['button', 'github', 'link']),
|
|
117
|
-
label: z.string().optional(),
|
|
118
|
-
href: z.string(),
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
const navbarSchema = z.object({
|
|
122
|
-
links: z.array(navLinkSchema).optional(),
|
|
123
|
-
primary: navbarPrimarySchema.optional(),
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
// ============================================================================
|
|
127
|
-
// Footer Schema
|
|
128
|
-
// ============================================================================
|
|
129
|
-
|
|
130
|
-
const footerLinkSchema = z.object({
|
|
131
|
-
label: z.string(),
|
|
132
|
-
href: z.string(),
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
const footerGroupSchema = z.object({
|
|
136
|
-
title: z.string(),
|
|
137
|
-
links: z.array(footerLinkSchema),
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
const footerSchema = z.object({
|
|
141
|
-
socials: z.record(z.string(), z.string()).optional(),
|
|
142
|
-
links: z.array(footerGroupSchema).optional(),
|
|
143
|
-
})
|
|
144
|
-
|
|
145
|
-
// ============================================================================
|
|
146
|
-
// API Configuration Schema
|
|
147
|
-
// ============================================================================
|
|
148
|
-
|
|
149
|
-
const apiAuthSchema = z.object({
|
|
150
|
-
method: z.enum(['bearer', 'basic', 'api-key', 'none']),
|
|
151
|
-
name: z.string().optional(),
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
const apiPlaygroundSchema = z.object({
|
|
155
|
-
mode: z.enum(['show', 'simple', 'hide']).optional(),
|
|
156
|
-
})
|
|
157
|
-
|
|
158
|
-
const apiConfigSchema = z.object({
|
|
159
|
-
baseUrl: z.string().optional(),
|
|
160
|
-
auth: apiAuthSchema.optional(),
|
|
161
|
-
playground: apiPlaygroundSchema.optional(),
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
// ============================================================================
|
|
165
|
-
// SEO Schema
|
|
166
|
-
// ============================================================================
|
|
167
|
-
|
|
168
|
-
const seoSchema = z.object({
|
|
169
|
-
indexHiddenPages: z.boolean().optional(),
|
|
170
|
-
titleTemplate: z.string().optional(),
|
|
171
|
-
})
|
|
172
|
-
|
|
173
|
-
// ============================================================================
|
|
174
|
-
// Integrations Schema
|
|
175
|
-
// ============================================================================
|
|
176
|
-
|
|
177
|
-
const analyticsSchema = z.object({
|
|
178
|
-
posthog: z.object({ apiKey: z.string() }).optional(),
|
|
179
|
-
googleAnalytics: z.object({ measurementId: z.string() }).optional(),
|
|
180
|
-
plausible: z.object({ domain: z.string() }).optional(),
|
|
181
|
-
})
|
|
182
|
-
|
|
183
|
-
const integrationsSchema = z.object({
|
|
184
|
-
analytics: analyticsSchema.optional(),
|
|
185
|
-
})
|
|
186
|
-
|
|
187
|
-
// ============================================================================
|
|
188
|
-
// Contextual Menu Schema
|
|
189
|
-
// ============================================================================
|
|
190
|
-
|
|
191
|
-
const contextualOptionsEnum = z.enum([
|
|
192
|
-
'copy',
|
|
193
|
-
'view',
|
|
194
|
-
'chatgpt',
|
|
195
|
-
'claude',
|
|
196
|
-
'perplexity',
|
|
197
|
-
'mcp',
|
|
198
|
-
'cursor',
|
|
199
|
-
'vscode',
|
|
200
|
-
])
|
|
201
|
-
|
|
202
|
-
const contextualSchema = z.object({
|
|
203
|
-
options: z.array(contextualOptionsEnum).optional(),
|
|
204
|
-
})
|
|
205
|
-
|
|
206
|
-
// ============================================================================
|
|
207
|
-
// Main Configuration Schema
|
|
208
|
-
// ============================================================================
|
|
209
|
-
|
|
210
|
-
export const docsConfigSchema = z.object({
|
|
211
|
-
// Schema reference (optional)
|
|
212
|
-
$schema: z.string().optional(),
|
|
213
|
-
|
|
214
|
-
// Core identity
|
|
215
|
-
name: z.string(),
|
|
216
|
-
|
|
217
|
-
// Theme
|
|
218
|
-
theme: z.enum(['default', 'mint', 'quill', 'venus']).optional(),
|
|
219
|
-
colors: colorSchema.optional(),
|
|
220
|
-
|
|
221
|
-
// Branding
|
|
222
|
-
favicon: faviconSchema.optional(),
|
|
223
|
-
logo: logoSchema.optional(),
|
|
224
|
-
|
|
225
|
-
// Navigation
|
|
226
|
-
navigation: navigationSchema,
|
|
227
|
-
|
|
228
|
-
// Navbar
|
|
229
|
-
navbar: navbarSchema.optional(),
|
|
230
|
-
|
|
231
|
-
// Footer
|
|
232
|
-
footer: footerSchema.optional(),
|
|
233
|
-
|
|
234
|
-
// API Configuration
|
|
235
|
-
api: apiConfigSchema.optional(),
|
|
236
|
-
openapi: z.union([z.string(), z.array(z.string())]).optional(),
|
|
237
|
-
|
|
238
|
-
// SEO
|
|
239
|
-
seo: seoSchema.optional(),
|
|
240
|
-
|
|
241
|
-
// Integrations
|
|
242
|
-
integrations: integrationsSchema.optional(),
|
|
243
|
-
|
|
244
|
-
// Contextual menu
|
|
245
|
-
contextual: contextualSchema.optional(),
|
|
246
|
-
|
|
247
|
-
// Topbar style
|
|
248
|
-
topbar: z.object({
|
|
249
|
-
style: z.enum(['default', 'gradient']).optional(),
|
|
250
|
-
}).optional(),
|
|
251
|
-
|
|
252
|
-
// Versioning
|
|
253
|
-
versions: z.array(z.string()).optional(),
|
|
254
|
-
})
|
|
255
|
-
|
|
256
|
-
// ============================================================================
|
|
257
|
-
// Types
|
|
258
|
-
// ============================================================================
|
|
259
|
-
|
|
260
|
-
export type DocsConfig = z.infer<typeof docsConfigSchema>
|
|
261
|
-
export type NavigationTab = z.infer<typeof tabSchema>
|
|
262
|
-
export type NavigationGroup = z.infer<typeof groupSchema>
|
|
263
|
-
export type NavLink = z.infer<typeof navLinkSchema>
|
|
264
|
-
export type Anchor = z.infer<typeof anchorSchema>
|
|
265
|
-
export type ColorConfig = z.infer<typeof colorSchema>
|
|
266
|
-
export type LogoConfig = z.infer<typeof logoSchema>
|
|
267
|
-
export type ApiConfig = z.infer<typeof apiConfigSchema>
|
|
268
|
-
|
|
269
|
-
// ============================================================================
|
|
270
|
-
// Validation Functions
|
|
271
|
-
// ============================================================================
|
|
272
|
-
|
|
273
|
-
/**
|
|
274
|
-
* Parse and validate docs configuration
|
|
275
|
-
*/
|
|
276
|
-
export function parseDocsConfig(data: unknown): DocsConfig {
|
|
277
|
-
const result = docsConfigSchema.safeParse(data)
|
|
278
|
-
|
|
279
|
-
if (!result.success) {
|
|
280
|
-
const issues = result.error.issues || []
|
|
281
|
-
const errors = issues.map((e) =>
|
|
282
|
-
`${e.path.map(String).join('.')}: ${e.message}`
|
|
283
|
-
).join('\n')
|
|
284
|
-
throw new Error(`Invalid docs.json configuration:\n${errors}`)
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
return result.data
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Safe parse that returns null on failure
|
|
292
|
-
*/
|
|
293
|
-
export function safeParseDocsConfig(data: unknown): DocsConfig | null {
|
|
294
|
-
const result = docsConfigSchema.safeParse(data)
|
|
295
|
-
return result.success ? result.data : null
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Get default configuration
|
|
300
|
-
*/
|
|
301
|
-
export function getDefaultDocsConfig(): Partial<DocsConfig> {
|
|
302
|
-
return {
|
|
303
|
-
theme: 'default',
|
|
304
|
-
navigation: {
|
|
305
|
-
groups: [],
|
|
306
|
-
},
|
|
307
|
-
}
|
|
308
|
-
}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { compileMDX } from 'next-mdx-remote/rsc'
|
|
2
|
-
import matter from 'gray-matter'
|
|
3
|
-
import rehypeSlug from 'rehype-slug'
|
|
4
|
-
import rehypeAutolinkHeadings from 'rehype-autolink-headings'
|
|
5
|
-
import remarkGfm from 'remark-gfm'
|
|
6
|
-
import { parseFrontmatter, safeParseFrontmatter, type Frontmatter } from './frontmatter'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* MDX Compiler Utilities
|
|
10
|
-
*
|
|
11
|
-
* Provides functions for compiling MDX content with custom components
|
|
12
|
-
* and extracting frontmatter metadata
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
export interface MDXCompileResult<TFrontmatter = Frontmatter> {
|
|
16
|
-
content: React.ReactElement
|
|
17
|
-
frontmatter: TFrontmatter
|
|
18
|
-
headings: TableOfContentsItem[]
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface TableOfContentsItem {
|
|
22
|
-
id: string
|
|
23
|
-
title: string
|
|
24
|
-
level: number
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface CompileMDXOptions {
|
|
28
|
-
components?: Record<string, React.ComponentType<unknown>>
|
|
29
|
-
scope?: Record<string, unknown>
|
|
30
|
-
validateFrontmatter?: boolean
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Extract frontmatter from raw MDX content
|
|
35
|
-
*/
|
|
36
|
-
export function extractFrontmatter(source: string): {
|
|
37
|
-
content: string
|
|
38
|
-
data: Record<string, unknown>
|
|
39
|
-
} {
|
|
40
|
-
const { content, data } = matter(source)
|
|
41
|
-
return { content, data }
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Extract headings from MDX content for table of contents
|
|
46
|
-
*/
|
|
47
|
-
export function extractHeadings(content: string): TableOfContentsItem[] {
|
|
48
|
-
const headingRegex = /^(#{1,6})\s+(.+)$/gm
|
|
49
|
-
const headings: TableOfContentsItem[] = []
|
|
50
|
-
let match
|
|
51
|
-
|
|
52
|
-
while ((match = headingRegex.exec(content)) !== null) {
|
|
53
|
-
const level = match[1].length
|
|
54
|
-
const title = match[2].trim()
|
|
55
|
-
// Generate slug from title (same logic as rehype-slug)
|
|
56
|
-
const id = title
|
|
57
|
-
.toLowerCase()
|
|
58
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
59
|
-
.replace(/^-+|-+$/g, '')
|
|
60
|
-
|
|
61
|
-
headings.push({ id, title, level })
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return headings
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Compile MDX content with components and plugins
|
|
69
|
-
*/
|
|
70
|
-
export async function compileMDXContent<TFrontmatter = Frontmatter>(
|
|
71
|
-
source: string,
|
|
72
|
-
options: CompileMDXOptions = {}
|
|
73
|
-
): Promise<MDXCompileResult<TFrontmatter>> {
|
|
74
|
-
const { components = {}, scope = {}, validateFrontmatter = true } = options
|
|
75
|
-
|
|
76
|
-
// Extract frontmatter first
|
|
77
|
-
const { content: mdxContent, data: rawFrontmatter } = extractFrontmatter(source)
|
|
78
|
-
|
|
79
|
-
// Validate frontmatter if requested
|
|
80
|
-
const frontmatter = validateFrontmatter
|
|
81
|
-
? parseFrontmatter(rawFrontmatter) as TFrontmatter
|
|
82
|
-
: rawFrontmatter as TFrontmatter
|
|
83
|
-
|
|
84
|
-
// Extract headings for ToC
|
|
85
|
-
const headings = extractHeadings(mdxContent)
|
|
86
|
-
|
|
87
|
-
// Compile MDX
|
|
88
|
-
const { content } = await compileMDX({
|
|
89
|
-
source: mdxContent,
|
|
90
|
-
components,
|
|
91
|
-
options: {
|
|
92
|
-
parseFrontmatter: false, // Already extracted
|
|
93
|
-
mdxOptions: {
|
|
94
|
-
remarkPlugins: [remarkGfm],
|
|
95
|
-
rehypePlugins: [
|
|
96
|
-
rehypeSlug,
|
|
97
|
-
[rehypeAutolinkHeadings, { behavior: 'wrap' }],
|
|
98
|
-
],
|
|
99
|
-
},
|
|
100
|
-
scope: {
|
|
101
|
-
...scope,
|
|
102
|
-
frontmatter,
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
return {
|
|
108
|
-
content,
|
|
109
|
-
frontmatter,
|
|
110
|
-
headings,
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Quick compile for previews (less validation)
|
|
116
|
-
*/
|
|
117
|
-
export async function quickCompileMDX(
|
|
118
|
-
source: string,
|
|
119
|
-
components: Record<string, React.ComponentType<unknown>> = {}
|
|
120
|
-
): Promise<{ content: React.ReactElement; frontmatter: Record<string, unknown> }> {
|
|
121
|
-
const { content: mdxContent, data: frontmatter } = extractFrontmatter(source)
|
|
122
|
-
|
|
123
|
-
const { content } = await compileMDX({
|
|
124
|
-
source: mdxContent,
|
|
125
|
-
components,
|
|
126
|
-
options: {
|
|
127
|
-
parseFrontmatter: false,
|
|
128
|
-
mdxOptions: {
|
|
129
|
-
remarkPlugins: [remarkGfm],
|
|
130
|
-
rehypePlugins: [rehypeSlug],
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
return { content, frontmatter }
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Validate MDX content without compiling (for linting)
|
|
140
|
-
*/
|
|
141
|
-
export function validateMDXContent(source: string): {
|
|
142
|
-
valid: boolean
|
|
143
|
-
errors: string[]
|
|
144
|
-
warnings: string[]
|
|
145
|
-
} {
|
|
146
|
-
const errors: string[] = []
|
|
147
|
-
const warnings: string[] = []
|
|
148
|
-
|
|
149
|
-
try {
|
|
150
|
-
const { data } = extractFrontmatter(source)
|
|
151
|
-
|
|
152
|
-
// Check frontmatter
|
|
153
|
-
const frontmatterResult = safeParseFrontmatter(data)
|
|
154
|
-
if (!frontmatterResult) {
|
|
155
|
-
errors.push('Invalid frontmatter format')
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Check for common issues
|
|
159
|
-
if (!data.title) {
|
|
160
|
-
warnings.push('Missing title in frontmatter')
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (!data.description) {
|
|
164
|
-
warnings.push('Missing description in frontmatter (recommended for SEO)')
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
} catch (error) {
|
|
168
|
-
errors.push(`Parse error: ${error instanceof Error ? error.message : 'Unknown error'}`)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return {
|
|
172
|
-
valid: errors.length === 0,
|
|
173
|
-
errors,
|
|
174
|
-
warnings,
|
|
175
|
-
}
|
|
176
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Frontmatter Schema for MDX Documentation Pages
|
|
5
|
-
*
|
|
6
|
-
* Defines the structure and validation for page metadata
|
|
7
|
-
* Compatible with Mintlify-style frontmatter
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export const frontmatterSchema = z.object({
|
|
11
|
-
// Core metadata
|
|
12
|
-
title: z.string(),
|
|
13
|
-
description: z.string().optional(),
|
|
14
|
-
|
|
15
|
-
// Navigation
|
|
16
|
-
sidebarTitle: z.string().optional(),
|
|
17
|
-
icon: z.string().optional(),
|
|
18
|
-
|
|
19
|
-
// Page behavior
|
|
20
|
-
// - 'default': Standard documentation page with max-width container
|
|
21
|
-
// - 'wide': Wide container for content that needs more space
|
|
22
|
-
// - 'custom': Full-width custom layout (no container, no header) - for landing pages
|
|
23
|
-
mode: z.enum(['default', 'wide', 'custom']).optional(),
|
|
24
|
-
|
|
25
|
-
// Custom page options (only used when mode: 'custom')
|
|
26
|
-
// Hides the default page header (title & description)
|
|
27
|
-
hideHeader: z.boolean().optional(),
|
|
28
|
-
// Full-width layout without container constraints
|
|
29
|
-
fullWidth: z.boolean().optional(),
|
|
30
|
-
// Custom background color or gradient
|
|
31
|
-
background: z.string().optional(),
|
|
32
|
-
|
|
33
|
-
// OpenAPI integration
|
|
34
|
-
openapi: z.string().optional(),
|
|
35
|
-
api: z.string().optional(),
|
|
36
|
-
|
|
37
|
-
// SEO
|
|
38
|
-
'og:title': z.string().optional(),
|
|
39
|
-
'og:description': z.string().optional(),
|
|
40
|
-
'og:image': z.string().optional(),
|
|
41
|
-
'twitter:title': z.string().optional(),
|
|
42
|
-
'twitter:description': z.string().optional(),
|
|
43
|
-
|
|
44
|
-
// Visibility
|
|
45
|
-
hidden: z.boolean().optional(),
|
|
46
|
-
noindex: z.boolean().optional(),
|
|
47
|
-
|
|
48
|
-
// Version/Status
|
|
49
|
-
version: z.string().optional(),
|
|
50
|
-
deprecated: z.boolean().optional(),
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
export type Frontmatter = z.infer<typeof frontmatterSchema>
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Parse and validate frontmatter data
|
|
57
|
-
* Returns the validated data or throws an error with details
|
|
58
|
-
*/
|
|
59
|
-
export function parseFrontmatter(data: unknown): Frontmatter {
|
|
60
|
-
const result = frontmatterSchema.safeParse(data)
|
|
61
|
-
|
|
62
|
-
if (!result.success) {
|
|
63
|
-
const issues = result.error.issues || []
|
|
64
|
-
const errors = issues.map((e) =>
|
|
65
|
-
`${e.path.map(String).join('.')}: ${e.message}`
|
|
66
|
-
).join('\n')
|
|
67
|
-
throw new Error(`Invalid frontmatter:\n${errors}`)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return result.data
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Safe parse that returns null on failure instead of throwing
|
|
75
|
-
*/
|
|
76
|
-
export function safeParseFrontmatter(data: unknown): Frontmatter | null {
|
|
77
|
-
const result = frontmatterSchema.safeParse(data)
|
|
78
|
-
return result.success ? result.data : null
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Get default frontmatter values
|
|
83
|
-
*/
|
|
84
|
-
export function getDefaultFrontmatter(): Partial<Frontmatter> {
|
|
85
|
-
return {
|
|
86
|
-
mode: 'default',
|
|
87
|
-
hidden: false,
|
|
88
|
-
noindex: false,
|
|
89
|
-
deprecated: false,
|
|
90
|
-
}
|
|
91
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MDX Library Exports
|
|
3
|
-
*
|
|
4
|
-
* Core utilities for MDX compilation and processing
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// Compiler utilities
|
|
8
|
-
export {
|
|
9
|
-
compileMDXContent,
|
|
10
|
-
quickCompileMDX,
|
|
11
|
-
validateMDXContent,
|
|
12
|
-
extractFrontmatter,
|
|
13
|
-
extractHeadings,
|
|
14
|
-
type MDXCompileResult,
|
|
15
|
-
type TableOfContentsItem,
|
|
16
|
-
type CompileMDXOptions,
|
|
17
|
-
} from './compiler'
|
|
18
|
-
|
|
19
|
-
// Frontmatter
|
|
20
|
-
export {
|
|
21
|
-
frontmatterSchema,
|
|
22
|
-
parseFrontmatter,
|
|
23
|
-
safeParseFrontmatter,
|
|
24
|
-
getDefaultFrontmatter,
|
|
25
|
-
type Frontmatter,
|
|
26
|
-
} from './frontmatter'
|