jamdesk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +323 -0
- package/bin/jamdesk.js +76 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.d.ts +8 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.js +165 -0
- package/dist/__tests__/integration/deprecated-components.integration.test.js.map +1 -0
- package/dist/__tests__/integration/migrate.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/migrate.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/migrate.integration.test.js +64 -0
- package/dist/__tests__/integration/migrate.integration.test.js.map +1 -0
- package/dist/__tests__/integration/prepublish.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/prepublish.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/prepublish.integration.test.js +27 -0
- package/dist/__tests__/integration/prepublish.integration.test.js.map +1 -0
- package/dist/__tests__/integration/validate.integration.test.d.ts +2 -0
- package/dist/__tests__/integration/validate.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/validate.integration.test.js +56 -0
- package/dist/__tests__/integration/validate.integration.test.js.map +1 -0
- package/dist/__tests__/unit/deploy-templates.test.d.ts +2 -0
- package/dist/__tests__/unit/deploy-templates.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deploy-templates.test.js +124 -0
- package/dist/__tests__/unit/deploy-templates.test.js.map +1 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.d.ts +2 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.js +69 -0
- package/dist/__tests__/unit/deprecated-components-sync.test.js.map +1 -0
- package/dist/__tests__/unit/deps-sync.test.d.ts +14 -0
- package/dist/__tests__/unit/deps-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/deps-sync.test.js +166 -0
- package/dist/__tests__/unit/deps-sync.test.js.map +1 -0
- package/dist/__tests__/unit/docs-config.test.d.ts +2 -0
- package/dist/__tests__/unit/docs-config.test.d.ts.map +1 -0
- package/dist/__tests__/unit/docs-config.test.js +288 -0
- package/dist/__tests__/unit/docs-config.test.js.map +1 -0
- package/dist/__tests__/unit/errors.test.d.ts +2 -0
- package/dist/__tests__/unit/errors.test.d.ts.map +1 -0
- package/dist/__tests__/unit/errors.test.js +27 -0
- package/dist/__tests__/unit/errors.test.js.map +1 -0
- package/dist/__tests__/unit/extract-hooks.test.d.ts +5 -0
- package/dist/__tests__/unit/extract-hooks.test.d.ts.map +1 -0
- package/dist/__tests__/unit/extract-hooks.test.js +205 -0
- package/dist/__tests__/unit/extract-hooks.test.js.map +1 -0
- package/dist/__tests__/unit/frontmatter-sync.test.d.ts +8 -0
- package/dist/__tests__/unit/frontmatter-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/frontmatter-sync.test.js +26 -0
- package/dist/__tests__/unit/frontmatter-sync.test.js.map +1 -0
- package/dist/__tests__/unit/mdx-validator.test.d.ts +2 -0
- package/dist/__tests__/unit/mdx-validator.test.d.ts.map +1 -0
- package/dist/__tests__/unit/mdx-validator.test.js +264 -0
- package/dist/__tests__/unit/mdx-validator.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-convert.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-convert.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-convert.test.js +297 -0
- package/dist/__tests__/unit/migrate-convert.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-detect.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-detect.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-detect.test.js +35 -0
- package/dist/__tests__/unit/migrate-detect.test.js.map +1 -0
- package/dist/__tests__/unit/migrate-mdx.test.d.ts +2 -0
- package/dist/__tests__/unit/migrate-mdx.test.d.ts.map +1 -0
- package/dist/__tests__/unit/migrate-mdx.test.js +158 -0
- package/dist/__tests__/unit/migrate-mdx.test.js.map +1 -0
- package/dist/__tests__/unit/openapi.test.d.ts +2 -0
- package/dist/__tests__/unit/openapi.test.d.ts.map +1 -0
- package/dist/__tests__/unit/openapi.test.js +52 -0
- package/dist/__tests__/unit/openapi.test.js.map +1 -0
- package/dist/__tests__/unit/package-config.test.d.ts +2 -0
- package/dist/__tests__/unit/package-config.test.d.ts.map +1 -0
- package/dist/__tests__/unit/package-config.test.js +63 -0
- package/dist/__tests__/unit/package-config.test.js.map +1 -0
- package/dist/__tests__/unit/port.test.d.ts +2 -0
- package/dist/__tests__/unit/port.test.d.ts.map +1 -0
- package/dist/__tests__/unit/port.test.js +20 -0
- package/dist/__tests__/unit/port.test.js.map +1 -0
- package/dist/__tests__/unit/vendored-sync.test.d.ts +14 -0
- package/dist/__tests__/unit/vendored-sync.test.d.ts.map +1 -0
- package/dist/__tests__/unit/vendored-sync.test.js +90 -0
- package/dist/__tests__/unit/vendored-sync.test.js.map +1 -0
- package/dist/commands/broken-links.d.ts +11 -0
- package/dist/commands/broken-links.d.ts.map +1 -0
- package/dist/commands/broken-links.js +95 -0
- package/dist/commands/broken-links.js.map +1 -0
- package/dist/commands/clean.d.ts +7 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +59 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/deploy/cloudflare.d.ts +12 -0
- package/dist/commands/deploy/cloudflare.d.ts.map +1 -0
- package/dist/commands/deploy/cloudflare.js +409 -0
- package/dist/commands/deploy/cloudflare.js.map +1 -0
- package/dist/commands/deploy/templates.d.ts +23 -0
- package/dist/commands/deploy/templates.d.ts.map +1 -0
- package/dist/commands/deploy/templates.js +179 -0
- package/dist/commands/deploy/templates.js.map +1 -0
- package/dist/commands/deploy/types.d.ts +19 -0
- package/dist/commands/deploy/types.d.ts.map +1 -0
- package/dist/commands/deploy/types.js +5 -0
- package/dist/commands/deploy/types.js.map +1 -0
- package/dist/commands/dev.d.ts +14 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +817 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +159 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +96 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate/convert-mdx.d.ts +50 -0
- package/dist/commands/migrate/convert-mdx.d.ts.map +1 -0
- package/dist/commands/migrate/convert-mdx.js +108 -0
- package/dist/commands/migrate/convert-mdx.js.map +1 -0
- package/dist/commands/migrate/convert.d.ts +80 -0
- package/dist/commands/migrate/convert.d.ts.map +1 -0
- package/dist/commands/migrate/convert.js +158 -0
- package/dist/commands/migrate/convert.js.map +1 -0
- package/dist/commands/migrate/detect.d.ts +31 -0
- package/dist/commands/migrate/detect.d.ts.map +1 -0
- package/dist/commands/migrate/detect.js +62 -0
- package/dist/commands/migrate/detect.js.map +1 -0
- package/dist/commands/migrate/extract-hooks.d.ts +71 -0
- package/dist/commands/migrate/extract-hooks.d.ts.map +1 -0
- package/dist/commands/migrate/extract-hooks.js +473 -0
- package/dist/commands/migrate/extract-hooks.js.map +1 -0
- package/dist/commands/migrate/index.d.ts +17 -0
- package/dist/commands/migrate/index.d.ts.map +1 -0
- package/dist/commands/migrate/index.js +282 -0
- package/dist/commands/migrate/index.js.map +1 -0
- package/dist/commands/migrate/prompts.d.ts +22 -0
- package/dist/commands/migrate/prompts.d.ts.map +1 -0
- package/dist/commands/migrate/prompts.js +67 -0
- package/dist/commands/migrate/prompts.js.map +1 -0
- package/dist/commands/migrate/types.d.ts +22 -0
- package/dist/commands/migrate/types.d.ts.map +1 -0
- package/dist/commands/migrate/types.js +26 -0
- package/dist/commands/migrate/types.js.map +1 -0
- package/dist/commands/openapi-check.d.ts +11 -0
- package/dist/commands/openapi-check.d.ts.map +1 -0
- package/dist/commands/openapi-check.js +88 -0
- package/dist/commands/openapi-check.js.map +1 -0
- package/dist/commands/rename.d.ts +10 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +125 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +57 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +12 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +163 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +334 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +18 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/deprecated-components.d.ts +72 -0
- package/dist/lib/deprecated-components.d.ts.map +1 -0
- package/dist/lib/deprecated-components.js +138 -0
- package/dist/lib/deprecated-components.js.map +1 -0
- package/dist/lib/deps.d.ts +17 -0
- package/dist/lib/deps.d.ts.map +1 -0
- package/dist/lib/deps.js +186 -0
- package/dist/lib/deps.js.map +1 -0
- package/dist/lib/docs-config.d.ts +67 -0
- package/dist/lib/docs-config.d.ts.map +1 -0
- package/dist/lib/docs-config.js +294 -0
- package/dist/lib/docs-config.js.map +1 -0
- package/dist/lib/errors.d.ts +23 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +32 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/frontmatter-utils.d.ts +25 -0
- package/dist/lib/frontmatter-utils.d.ts.map +1 -0
- package/dist/lib/frontmatter-utils.js +64 -0
- package/dist/lib/frontmatter-utils.js.map +1 -0
- package/dist/lib/mdx-validator.d.ts +27 -0
- package/dist/lib/mdx-validator.d.ts.map +1 -0
- package/dist/lib/mdx-validator.js +148 -0
- package/dist/lib/mdx-validator.js.map +1 -0
- package/dist/lib/navigation-validator.d.ts +31 -0
- package/dist/lib/navigation-validator.d.ts.map +1 -0
- package/dist/lib/navigation-validator.js +75 -0
- package/dist/lib/navigation-validator.js.map +1 -0
- package/dist/lib/normalize-config.d.ts +57 -0
- package/dist/lib/normalize-config.d.ts.map +1 -0
- package/dist/lib/normalize-config.js +63 -0
- package/dist/lib/normalize-config.js.map +1 -0
- package/dist/lib/openapi/cache.d.ts +40 -0
- package/dist/lib/openapi/cache.d.ts.map +1 -0
- package/dist/lib/openapi/cache.js +76 -0
- package/dist/lib/openapi/cache.js.map +1 -0
- package/dist/lib/openapi/errors.d.ts +36 -0
- package/dist/lib/openapi/errors.d.ts.map +1 -0
- package/dist/lib/openapi/errors.js +162 -0
- package/dist/lib/openapi/errors.js.map +1 -0
- package/dist/lib/openapi/index.d.ts +10 -0
- package/dist/lib/openapi/index.d.ts.map +1 -0
- package/dist/lib/openapi/index.js +12 -0
- package/dist/lib/openapi/index.js.map +1 -0
- package/dist/lib/openapi/types.d.ts +198 -0
- package/dist/lib/openapi/types.d.ts.map +1 -0
- package/dist/lib/openapi/types.js +8 -0
- package/dist/lib/openapi/types.js.map +1 -0
- package/dist/lib/openapi/validator.d.ts +45 -0
- package/dist/lib/openapi/validator.d.ts.map +1 -0
- package/dist/lib/openapi/validator.js +128 -0
- package/dist/lib/openapi/validator.js.map +1 -0
- package/dist/lib/openapi.d.ts +7 -0
- package/dist/lib/openapi.d.ts.map +1 -0
- package/dist/lib/openapi.js +7 -0
- package/dist/lib/openapi.js.map +1 -0
- package/dist/lib/output.d.ts +14 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +19 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/path-security.d.ts +23 -0
- package/dist/lib/path-security.d.ts.map +1 -0
- package/dist/lib/path-security.js +35 -0
- package/dist/lib/path-security.js.map +1 -0
- package/dist/lib/port.d.ts +18 -0
- package/dist/lib/port.d.ts.map +1 -0
- package/dist/lib/port.js +65 -0
- package/dist/lib/port.js.map +1 -0
- package/dist/lib/spinner.d.ts +4 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +16 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +49 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/utils/update-checker.d.ts +34 -0
- package/dist/utils/update-checker.d.ts.map +1 -0
- package/dist/utils/update-checker.js +142 -0
- package/dist/utils/update-checker.js.map +1 -0
- package/package.json +125 -0
- package/templates/docs.json +11 -0
- package/templates/introduction.mdx +19 -0
- package/templates/quickstart.mdx +20 -0
- package/vendored/app/[[...slug]]/error.tsx +103 -0
- package/vendored/app/[[...slug]]/page.tsx +690 -0
- package/vendored/app/api/assets/[...path]/route.ts +78 -0
- package/vendored/app/api/ev/route.ts +61 -0
- package/vendored/app/api/isr-health/route.ts +66 -0
- package/vendored/app/api/mcp/[project]/route.ts +435 -0
- package/vendored/app/api/og/route.tsx +167 -0
- package/vendored/app/api/r2/[project]/[...path]/route.ts +214 -0
- package/vendored/app/api/revalidate/route.ts +76 -0
- package/vendored/app/globals.css +37 -0
- package/vendored/app/layout.tsx +571 -0
- package/vendored/app/not-found.tsx +47 -0
- package/vendored/components/CodeBlockCopyButton.tsx +146 -0
- package/vendored/components/HeaderLinkCopy.tsx +135 -0
- package/vendored/components/errors/NotFoundContent.tsx +147 -0
- package/vendored/components/layout/LayoutWrapper.tsx +128 -0
- package/vendored/components/mdx/Accordion.tsx +91 -0
- package/vendored/components/mdx/ApiCodePanel.tsx +51 -0
- package/vendored/components/mdx/ApiEndpoint.tsx +104 -0
- package/vendored/components/mdx/ApiPage.tsx +379 -0
- package/vendored/components/mdx/Badge.tsx +169 -0
- package/vendored/components/mdx/Callouts.tsx +140 -0
- package/vendored/components/mdx/Card.tsx +214 -0
- package/vendored/components/mdx/CodeGroup.tsx +136 -0
- package/vendored/components/mdx/Color.tsx +244 -0
- package/vendored/components/mdx/Columns.tsx +37 -0
- package/vendored/components/mdx/Expandable.tsx +37 -0
- package/vendored/components/mdx/Frame.tsx +51 -0
- package/vendored/components/mdx/Icon.tsx +132 -0
- package/vendored/components/mdx/Latex.tsx +75 -0
- package/vendored/components/mdx/MDXComponents.tsx +414 -0
- package/vendored/components/mdx/Mermaid.tsx +35 -0
- package/vendored/components/mdx/MermaidInner.tsx +342 -0
- package/vendored/components/mdx/OpenApiEndpoint.tsx +971 -0
- package/vendored/components/mdx/Panel.tsx +26 -0
- package/vendored/components/mdx/PanelWrapper.tsx +100 -0
- package/vendored/components/mdx/ParamField.tsx +75 -0
- package/vendored/components/mdx/RequestExample.tsx +91 -0
- package/vendored/components/mdx/ResponseExample.tsx +145 -0
- package/vendored/components/mdx/ResponseField.tsx +109 -0
- package/vendored/components/mdx/Steps.tsx +173 -0
- package/vendored/components/mdx/Table.tsx +352 -0
- package/vendored/components/mdx/Tabs.tsx +147 -0
- package/vendored/components/mdx/Tile.tsx +127 -0
- package/vendored/components/mdx/Tooltip.tsx +111 -0
- package/vendored/components/mdx/Tree.tsx +484 -0
- package/vendored/components/mdx/Update.tsx +90 -0
- package/vendored/components/mdx/View.tsx +354 -0
- package/vendored/components/mdx/YouTube.tsx +35 -0
- package/vendored/components/mdx/ZoomableImage.tsx +83 -0
- package/vendored/components/navigation/Breadcrumb.tsx +241 -0
- package/vendored/components/navigation/DefaultLogo.tsx +81 -0
- package/vendored/components/navigation/Header.tsx +512 -0
- package/vendored/components/navigation/LanguageSelector.tsx +249 -0
- package/vendored/components/navigation/PageNavigation.tsx +174 -0
- package/vendored/components/navigation/Sidebar.tsx +713 -0
- package/vendored/components/navigation/SocialFooter.tsx +186 -0
- package/vendored/components/navigation/TableOfContents.tsx +435 -0
- package/vendored/components/navigation/TabsNav.tsx +182 -0
- package/vendored/components/search/LazySearchModal.tsx +19 -0
- package/vendored/components/search/SearchModal.tsx +573 -0
- package/vendored/components/snippets/ProjectSnippets.tsx +4 -0
- package/vendored/components/theme/ThemeProvider.tsx +31 -0
- package/vendored/components/theme/ThemeToggle.tsx +134 -0
- package/vendored/components/ui/CodePanel.tsx +517 -0
- package/vendored/components/ui/CodePanelModal.tsx +342 -0
- package/vendored/contexts/TabSyncContext.tsx +30 -0
- package/vendored/hooks/useFocusTrap.ts +42 -0
- package/vendored/hooks/useHashNavigation.ts +39 -0
- package/vendored/hooks/useShikiHighlight.ts +101 -0
- package/vendored/lib/analytics-client.ts +77 -0
- package/vendored/lib/build/cache.ts +138 -0
- package/vendored/lib/build/error-parser.ts +690 -0
- package/vendored/lib/build/estimation.ts +113 -0
- package/vendored/lib/build/index.ts +17 -0
- package/vendored/lib/build/page-file-map.ts +48 -0
- package/vendored/lib/build/r2-upload.ts +179 -0
- package/vendored/lib/cache-keys.ts +117 -0
- package/vendored/lib/code-utils.ts +42 -0
- package/vendored/lib/content-loader.ts +176 -0
- package/vendored/lib/deprecated-components.ts +185 -0
- package/vendored/lib/docs-isr.ts +180 -0
- package/vendored/lib/docs-types.ts +874 -0
- package/vendored/lib/docs.ts +203 -0
- package/vendored/lib/domain-helpers.ts +107 -0
- package/vendored/lib/email-notifier.ts +102 -0
- package/vendored/lib/email-templates/build-failure.tsx +193 -0
- package/vendored/lib/email-templates/components/base-layout.tsx +150 -0
- package/vendored/lib/email-templates/components/error-box.tsx +88 -0
- package/vendored/lib/email-templates/components/info-row.tsx +63 -0
- package/vendored/lib/email-templates/index.ts +13 -0
- package/vendored/lib/empty-polyfill.js +3 -0
- package/vendored/lib/extract-highlights.ts +124 -0
- package/vendored/lib/fonts.ts +227 -0
- package/vendored/lib/frontmatter-utils.ts +77 -0
- package/vendored/lib/fs-utils.ts +20 -0
- package/vendored/lib/git-utils.ts +87 -0
- package/vendored/lib/health-checks.ts +224 -0
- package/vendored/lib/icon-utils.ts +492 -0
- package/vendored/lib/infer-page-type.ts +14 -0
- package/vendored/lib/isr-build-executor.ts +185 -0
- package/vendored/lib/language-icons.ts +152 -0
- package/vendored/lib/language-utils.ts +338 -0
- package/vendored/lib/latex-config.ts +64 -0
- package/vendored/lib/link-prefix-context.tsx +32 -0
- package/vendored/lib/logger.ts +63 -0
- package/vendored/lib/mcp-search.ts +255 -0
- package/vendored/lib/mdx-inline-components.ts +155 -0
- package/vendored/lib/mdx.ts +100 -0
- package/vendored/lib/middleware-helpers.ts +519 -0
- package/vendored/lib/navigation-resolver.ts +621 -0
- package/vendored/lib/navigation-utils.ts +103 -0
- package/vendored/lib/normalize-config.ts +94 -0
- package/vendored/lib/openapi/cache.ts +92 -0
- package/vendored/lib/openapi/code-examples.ts +389 -0
- package/vendored/lib/openapi/errors.ts +253 -0
- package/vendored/lib/openapi/generator.ts +230 -0
- package/vendored/lib/openapi/index.ts +84 -0
- package/vendored/lib/openapi/parser.ts +474 -0
- package/vendored/lib/openapi/types.ts +232 -0
- package/vendored/lib/openapi/validator.ts +156 -0
- package/vendored/lib/openapi-isr.ts +121 -0
- package/vendored/lib/page-isr-helpers.ts +137 -0
- package/vendored/lib/path-safety.ts +130 -0
- package/vendored/lib/paths.ts +35 -0
- package/vendored/lib/preprocess-mdx.ts +951 -0
- package/vendored/lib/process-mdx-with-exports.ts +75 -0
- package/vendored/lib/project-resolver.ts +165 -0
- package/vendored/lib/r2-content.ts +60 -0
- package/vendored/lib/r2-manifest.ts +84 -0
- package/vendored/lib/recent-searches.ts +41 -0
- package/vendored/lib/recma-compound-components.ts +84 -0
- package/vendored/lib/redirect-compiler.ts +160 -0
- package/vendored/lib/redirect-matcher.ts +296 -0
- package/vendored/lib/redis.ts +23 -0
- package/vendored/lib/rehype-class-to-classname.ts +31 -0
- package/vendored/lib/rehype-code-meta.ts +275 -0
- package/vendored/lib/rehype-nozoom-to-data.ts +45 -0
- package/vendored/lib/remark-extract-exports.ts +104 -0
- package/vendored/lib/resilience.ts +260 -0
- package/vendored/lib/revalidation-helpers.ts +200 -0
- package/vendored/lib/revalidation-trigger.ts +150 -0
- package/vendored/lib/screenshot-capture.ts +229 -0
- package/vendored/lib/search-client.ts +91 -0
- package/vendored/lib/search-suggestions.ts +38 -0
- package/vendored/lib/search.ts +158 -0
- package/vendored/lib/seo.ts +264 -0
- package/vendored/lib/shiki-client.ts +131 -0
- package/vendored/lib/shiki-config.ts +289 -0
- package/vendored/lib/shiki-css-theme.ts +46 -0
- package/vendored/lib/shiki-highlighter.ts +62 -0
- package/vendored/lib/shiki-transformers.ts +337 -0
- package/vendored/lib/slack-notifier.ts +248 -0
- package/vendored/lib/snippet-compiler-isr.ts +114 -0
- package/vendored/lib/snippet-loader-isr.ts +276 -0
- package/vendored/lib/static-artifacts.ts +375 -0
- package/vendored/lib/static-file-route.ts +72 -0
- package/vendored/lib/tracking-script.ts +19 -0
- package/vendored/lib/typography-config.ts +42 -0
- package/vendored/lib/validate-config.ts +268 -0
- package/vendored/next.config.js +45 -0
- package/vendored/postcss.config.js +6 -0
- package/vendored/schema/README.md +28 -0
- package/vendored/schema/docs-schema.json +4631 -0
- package/vendored/scripts/build-project.cjs +174 -0
- package/vendored/scripts/build-search-index.cjs +347 -0
- package/vendored/scripts/compile-snippets.cjs +488 -0
- package/vendored/scripts/copy-files.cjs +295 -0
- package/vendored/scripts/dev-project.cjs +534 -0
- package/vendored/scripts/enhance-navigation.cjs +354 -0
- package/vendored/scripts/validate-links.cjs +423 -0
- package/vendored/shared/constants.ts +6 -0
- package/vendored/shared/index.ts +19 -0
- package/vendored/shared/logger.ts +62 -0
- package/vendored/shared/memory-monitor.ts +190 -0
- package/vendored/shared/navigation-validator.ts +101 -0
- package/vendored/shared/path-security.ts +39 -0
- package/vendored/shared/status-reporter.ts +199 -0
- package/vendored/shared/timer.ts +51 -0
- package/vendored/shared/types.ts +102 -0
- package/vendored/tailwind.config.ts +39 -0
- package/vendored/themes/base.css +1311 -0
- package/vendored/themes/index.ts +119 -0
- package/vendored/themes/jam/variables.css +835 -0
- package/vendored/themes/nebula/variables.css +282 -0
- package/vendored/themes/pulsar/variables.css +1009 -0
- package/vendored/themes/types.ts +89 -0
- package/vendored/tsconfig.json +48 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Enhance Navigation Script
|
|
4
|
+
*
|
|
5
|
+
* Reads docs.json and enhances navigation pages with metadata extracted from MDX frontmatter.
|
|
6
|
+
* This allows the sidebar to display:
|
|
7
|
+
* - Page titles from frontmatter (instead of path-derived titles)
|
|
8
|
+
* - API method badges (POST, GET, etc.) for API pages
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* node scripts/enhance-navigation.cjs # Uses default content directory
|
|
12
|
+
* node scripts/enhance-navigation.cjs --project acme # Uses project's content
|
|
13
|
+
* PROJECT_NAME=acme node scripts/enhance-navigation.cjs # Same as above
|
|
14
|
+
*
|
|
15
|
+
* Input: projects/<name>/docs.json (or content/docs.json)
|
|
16
|
+
* Output: public/docs.json (enhanced with title/method from MDX frontmatter)
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const fs = require('fs');
|
|
20
|
+
const fsPromises = require('fs/promises');
|
|
21
|
+
const path = require('path');
|
|
22
|
+
const matter = require('gray-matter');
|
|
23
|
+
|
|
24
|
+
// Parse command line arguments
|
|
25
|
+
const args = process.argv.slice(2);
|
|
26
|
+
const projectArgIndex = args.indexOf('--project');
|
|
27
|
+
const projectFromArg = projectArgIndex !== -1 ? args[projectArgIndex + 1] : null;
|
|
28
|
+
const projectName = projectFromArg || process.env.PROJECT_NAME;
|
|
29
|
+
|
|
30
|
+
// Determine paths based on project
|
|
31
|
+
// Use JAMDESK_PROJECTS_DIR if set, otherwise fall back to local projects/
|
|
32
|
+
const projectsDir = process.env.JAMDESK_PROJECTS_DIR || path.join(__dirname, '../projects');
|
|
33
|
+
|
|
34
|
+
function getProjectDir() {
|
|
35
|
+
if (projectName) {
|
|
36
|
+
return path.join(projectsDir, projectName);
|
|
37
|
+
}
|
|
38
|
+
return path.join(__dirname, '../content');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function getDocsJsonPath() {
|
|
42
|
+
// Read from public/docs.json (already copied and has custom file flags)
|
|
43
|
+
return path.join(__dirname, '../public/docs.json');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function getOutputPath() {
|
|
47
|
+
return path.join(__dirname, '../public/docs.json');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Parse API method from frontmatter api field
|
|
52
|
+
* Examples:
|
|
53
|
+
* "POST /analytics/post" -> "POST"
|
|
54
|
+
* "GET" -> "GET"
|
|
55
|
+
* "DELETE /user/{id}" -> "DELETE"
|
|
56
|
+
*/
|
|
57
|
+
function parseApiMethod(apiField) {
|
|
58
|
+
if (!apiField || typeof apiField !== 'string') return null;
|
|
59
|
+
|
|
60
|
+
const trimmed = apiField.trim().toUpperCase();
|
|
61
|
+
const methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];
|
|
62
|
+
|
|
63
|
+
for (const method of methods) {
|
|
64
|
+
if (trimmed.startsWith(method)) {
|
|
65
|
+
return method;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Parse API method from frontmatter openapi field
|
|
74
|
+
* Examples:
|
|
75
|
+
* "openapi/analyst-insights.yaml GET /analyst/insights" -> "GET"
|
|
76
|
+
* "specs/users.yml POST /users" -> "POST"
|
|
77
|
+
* "GET /path" -> "GET" (fallback to api format)
|
|
78
|
+
*/
|
|
79
|
+
function parseOpenApiMethod(openapiField) {
|
|
80
|
+
if (!openapiField || typeof openapiField !== 'string') return null;
|
|
81
|
+
|
|
82
|
+
const trimmed = openapiField.trim();
|
|
83
|
+
const methods = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'];
|
|
84
|
+
|
|
85
|
+
// Split by whitespace and look for method
|
|
86
|
+
const parts = trimmed.split(/\s+/);
|
|
87
|
+
|
|
88
|
+
for (const part of parts) {
|
|
89
|
+
const upper = part.toUpperCase();
|
|
90
|
+
if (methods.includes(upper)) {
|
|
91
|
+
return upper;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Collect all page paths from navigation structure
|
|
100
|
+
*/
|
|
101
|
+
function collectPagePaths(navigation, paths = new Set()) {
|
|
102
|
+
if (!navigation) return paths;
|
|
103
|
+
|
|
104
|
+
// Handle pages array
|
|
105
|
+
if (navigation.pages && Array.isArray(navigation.pages)) {
|
|
106
|
+
for (const page of navigation.pages) {
|
|
107
|
+
const pagePath = typeof page === 'string' ? page : page?.page;
|
|
108
|
+
if (pagePath) paths.add(pagePath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Handle groups array
|
|
113
|
+
if (navigation.groups && Array.isArray(navigation.groups)) {
|
|
114
|
+
for (const group of navigation.groups) {
|
|
115
|
+
collectPagePaths(group, paths);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Handle tabs array
|
|
120
|
+
if (navigation.tabs && Array.isArray(navigation.tabs)) {
|
|
121
|
+
for (const tab of navigation.tabs) {
|
|
122
|
+
collectPagePaths(tab, paths);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Handle anchors array
|
|
127
|
+
if (navigation.anchors && Array.isArray(navigation.anchors)) {
|
|
128
|
+
for (const anchor of navigation.anchors) {
|
|
129
|
+
collectPagePaths(anchor, paths);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Handle languages array (multi-language docs)
|
|
134
|
+
if (navigation.languages && Array.isArray(navigation.languages)) {
|
|
135
|
+
for (const lang of navigation.languages) {
|
|
136
|
+
collectPagePaths(lang, paths);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Handle direct array (e.g., when passed a pages array directly)
|
|
141
|
+
if (Array.isArray(navigation)) {
|
|
142
|
+
for (const item of navigation) {
|
|
143
|
+
if (item && typeof item === 'object' && 'group' in item) {
|
|
144
|
+
collectPagePaths(item, paths);
|
|
145
|
+
} else {
|
|
146
|
+
const pagePath = typeof item === 'string' ? item : item?.page;
|
|
147
|
+
if (pagePath) paths.add(pagePath);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return paths;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Read all MDX frontmatter in parallel
|
|
157
|
+
*/
|
|
158
|
+
async function loadAllFrontmatter(pagePaths) {
|
|
159
|
+
const projectDir = getProjectDir();
|
|
160
|
+
const cache = new Map();
|
|
161
|
+
|
|
162
|
+
const promises = Array.from(pagePaths).map(async (pagePath) => {
|
|
163
|
+
const mdxPath = path.join(projectDir, pagePath + '.mdx');
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
const content = await fsPromises.readFile(mdxPath, 'utf8');
|
|
167
|
+
const { data } = matter(content);
|
|
168
|
+
cache.set(pagePath, data);
|
|
169
|
+
} catch {
|
|
170
|
+
// File doesn't exist or can't be read - cache null
|
|
171
|
+
cache.set(pagePath, null);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
await Promise.all(promises);
|
|
176
|
+
return cache;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Enhance a single page with cached frontmatter data
|
|
181
|
+
*/
|
|
182
|
+
function enhancePageWithCache(page, frontmatterCache) {
|
|
183
|
+
// If page is already an object with method/title, preserve it
|
|
184
|
+
const pagePath = typeof page === 'string' ? page : page.page;
|
|
185
|
+
const existingMethod = typeof page === 'object' ? page.method : undefined;
|
|
186
|
+
const existingTitle = typeof page === 'object' ? page.title : undefined;
|
|
187
|
+
|
|
188
|
+
// Get frontmatter from cache
|
|
189
|
+
const frontmatter = frontmatterCache.get(pagePath);
|
|
190
|
+
|
|
191
|
+
if (!frontmatter) {
|
|
192
|
+
// No frontmatter found, return original
|
|
193
|
+
return page;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Extract title, method, icon, and tag from frontmatter
|
|
197
|
+
// Check both 'api' field (legacy) and 'openapi' field (new OpenAPI support)
|
|
198
|
+
const title = existingTitle || frontmatter.title;
|
|
199
|
+
const method = existingMethod ||
|
|
200
|
+
parseApiMethod(frontmatter.api) ||
|
|
201
|
+
parseOpenApiMethod(frontmatter.openapi);
|
|
202
|
+
const icon = frontmatter.icon;
|
|
203
|
+
const tag = frontmatter.tag;
|
|
204
|
+
|
|
205
|
+
// If we have enhancements, return object format
|
|
206
|
+
if (title || method || icon || tag) {
|
|
207
|
+
return {
|
|
208
|
+
page: pagePath,
|
|
209
|
+
...(title && { title }),
|
|
210
|
+
...(method && { method }),
|
|
211
|
+
...(icon && { icon }),
|
|
212
|
+
...(tag && { tag }),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// No enhancements, return original
|
|
217
|
+
return page;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Recursively enhance pages in a navigation structure
|
|
222
|
+
*/
|
|
223
|
+
function enhancePages(pages, cache) {
|
|
224
|
+
if (!pages || !Array.isArray(pages)) return pages;
|
|
225
|
+
|
|
226
|
+
return pages.map(item => {
|
|
227
|
+
// If it's a group (has 'group' property), recurse into its pages
|
|
228
|
+
if (item && typeof item === 'object' && 'group' in item) {
|
|
229
|
+
return {
|
|
230
|
+
...item,
|
|
231
|
+
pages: enhancePages(item.pages, cache),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// It's a page, enhance it
|
|
236
|
+
return enhancePageWithCache(item, cache);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Enhance groups array
|
|
242
|
+
*/
|
|
243
|
+
function enhanceGroups(groups, cache) {
|
|
244
|
+
if (!groups || !Array.isArray(groups)) return groups;
|
|
245
|
+
|
|
246
|
+
return groups.map(group => ({
|
|
247
|
+
...group,
|
|
248
|
+
pages: enhancePages(group.pages, cache),
|
|
249
|
+
}));
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Enhance tabs array
|
|
254
|
+
*/
|
|
255
|
+
function enhanceTabs(tabs, cache) {
|
|
256
|
+
if (!tabs || !Array.isArray(tabs)) return tabs;
|
|
257
|
+
|
|
258
|
+
return tabs.map(tab => ({
|
|
259
|
+
...tab,
|
|
260
|
+
...(tab.groups && { groups: enhanceGroups(tab.groups, cache) }),
|
|
261
|
+
...(tab.pages && { pages: enhancePages(tab.pages, cache) }),
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Enhance anchors array
|
|
267
|
+
*/
|
|
268
|
+
function enhanceAnchors(anchors, cache) {
|
|
269
|
+
if (!anchors || !Array.isArray(anchors)) return anchors;
|
|
270
|
+
|
|
271
|
+
return anchors.map(anchor => ({
|
|
272
|
+
...anchor,
|
|
273
|
+
...(anchor.groups && { groups: enhanceGroups(anchor.groups, cache) }),
|
|
274
|
+
...(anchor.pages && { pages: enhancePages(anchor.pages, cache) }),
|
|
275
|
+
...(anchor.tabs && { tabs: enhanceTabs(anchor.tabs, cache) }),
|
|
276
|
+
}));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Main function to enhance navigation
|
|
281
|
+
*/
|
|
282
|
+
async function enhanceNavigation() {
|
|
283
|
+
const docsJsonPath = getDocsJsonPath();
|
|
284
|
+
const outputPath = getOutputPath();
|
|
285
|
+
|
|
286
|
+
if (projectName) {
|
|
287
|
+
console.log(`🔧 Enhancing navigation for project: ${projectName}`);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Check if docs.json exists
|
|
291
|
+
if (!fs.existsSync(docsJsonPath)) {
|
|
292
|
+
console.log(` No docs.json found at ${docsJsonPath}, skipping enhancement`);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Read docs.json
|
|
297
|
+
let config;
|
|
298
|
+
try {
|
|
299
|
+
const content = fs.readFileSync(docsJsonPath, 'utf8');
|
|
300
|
+
config = JSON.parse(content);
|
|
301
|
+
} catch (err) {
|
|
302
|
+
console.error(` Error reading docs.json: ${err.message}`);
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
console.log(' 📖 Reading MDX frontmatter to enhance navigation...');
|
|
307
|
+
|
|
308
|
+
// Step 1: Collect all page paths from navigation
|
|
309
|
+
const pagePaths = collectPagePaths(config.navigation);
|
|
310
|
+
|
|
311
|
+
// Step 2: Load all frontmatter in parallel
|
|
312
|
+
const frontmatterCache = await loadAllFrontmatter(pagePaths);
|
|
313
|
+
|
|
314
|
+
// Step 3: Enhance navigation structure using cached frontmatter
|
|
315
|
+
if (config.navigation) {
|
|
316
|
+
// Handle languages wrapper (multi-language docs)
|
|
317
|
+
if (config.navigation.languages) {
|
|
318
|
+
config.navigation.languages = config.navigation.languages.map(lang => ({
|
|
319
|
+
...lang,
|
|
320
|
+
...(lang.anchors && { anchors: enhanceAnchors(lang.anchors, frontmatterCache) }),
|
|
321
|
+
...(lang.tabs && { tabs: enhanceTabs(lang.tabs, frontmatterCache) }),
|
|
322
|
+
...(lang.groups && { groups: enhanceGroups(lang.groups, frontmatterCache) }),
|
|
323
|
+
...(lang.pages && { pages: enhancePages(lang.pages, frontmatterCache) }),
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
326
|
+
if (config.navigation.anchors) {
|
|
327
|
+
config.navigation.anchors = enhanceAnchors(config.navigation.anchors, frontmatterCache);
|
|
328
|
+
}
|
|
329
|
+
if (config.navigation.tabs) {
|
|
330
|
+
config.navigation.tabs = enhanceTabs(config.navigation.tabs, frontmatterCache);
|
|
331
|
+
}
|
|
332
|
+
if (config.navigation.groups) {
|
|
333
|
+
config.navigation.groups = enhanceGroups(config.navigation.groups, frontmatterCache);
|
|
334
|
+
}
|
|
335
|
+
if (config.navigation.pages) {
|
|
336
|
+
config.navigation.pages = enhancePages(config.navigation.pages, frontmatterCache);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// Write enhanced config to public/docs.json
|
|
341
|
+
try {
|
|
342
|
+
fs.writeFileSync(outputPath, JSON.stringify(config, null, 2));
|
|
343
|
+
console.log(` ✓ Enhanced navigation written to ${outputPath}`);
|
|
344
|
+
} catch (err) {
|
|
345
|
+
console.error(` Error writing enhanced docs.json: ${err.message}`);
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Run the script
|
|
351
|
+
enhanceNavigation().catch(err => {
|
|
352
|
+
console.error('Error enhancing navigation:', err);
|
|
353
|
+
process.exit(1);
|
|
354
|
+
});
|