@astryxdesign/cli 0.6.3 → 0.6.4-canary.0e1fbdb
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/CHANGELOG.md +194 -0
- package/README.md +152 -107
- package/api/blog/blog.doc.mjs +1 -0
- package/api/build/_adapter.d.mts +50 -0
- package/api/build/_adapter.mjs +60 -0
- package/api/build/build.doc.mjs +22 -10
- package/api/build/build.test.mjs +219 -8
- package/api/build/build.type.d.mts +91 -2
- package/api/build/build.type.mjs +52 -8
- package/api/build/help/help.d.mts +12 -5
- package/api/build/help/help.mjs +69 -6
- package/api/build/kit/kit.d.mts +4 -1
- package/api/build/kit/kit.mjs +208 -53
- package/api/build/kit/rank.d.mts +44 -0
- package/api/build/kit/rank.mjs +432 -0
- package/api/build/kit/rank.test.mjs +196 -0
- package/api/component/_adapter.d.mts +31 -12
- package/api/component/_adapter.mjs +79 -15
- package/api/component/component.d.mts +6 -3
- package/api/component/component.doc.mjs +49 -19
- package/api/component/component.mjs +339 -22
- package/api/component/component.test.mjs +38 -0
- package/api/component/component.type.d.mts +47 -11
- package/api/component/component.type.mjs +76 -24
- package/api/component/detail/blocks/blocks.d.mts +2 -1
- package/api/component/detail/blocks/blocks.mjs +4 -3
- package/api/component/list/list.d.mts +0 -5
- package/api/component/list/list.mjs +40 -11
- package/api/discover/_adapter.d.mts +114 -6
- package/api/discover/_adapter.mjs +372 -17
- package/api/discover/_adapter.test.mjs +215 -0
- package/api/discover/_catalog-view.d.mts +115 -0
- package/api/discover/_catalog-view.mjs +203 -0
- package/api/discover/_catalog-view.test.mjs +128 -0
- package/api/discover/detail/detail.d.mts +18 -6
- package/api/discover/detail/detail.mjs +67 -13
- package/api/discover/detail/detail.test.mjs +85 -0
- package/api/discover/detail/item/item.d.mts +26 -0
- package/api/discover/detail/item/item.mjs +78 -0
- package/api/discover/detail/item/item.test.mjs +73 -0
- package/api/discover/discover.d.mts +3 -9
- package/api/discover/discover.doc.mjs +62 -18
- package/api/discover/discover.mjs +220 -36
- package/api/discover/discover.test.mjs +11 -2
- package/api/discover/discover.type.d.mts +150 -11
- package/api/discover/discover.type.mjs +107 -17
- package/api/discover/list/list.d.mts +20 -6
- package/api/discover/list/list.mjs +45 -12
- package/api/discover/list/list.test.mjs +46 -0
- package/api/discover/search/search.d.mts +18 -16
- package/api/discover/search/search.mjs +102 -56
- package/api/discover/search/search.test.mjs +144 -10
- package/api/docs/_adapter.d.mts +277 -41
- package/api/docs/_adapter.mjs +993 -108
- package/api/docs/compiled-topics.test.mjs +78 -0
- package/api/docs/detail/detail.mjs +22 -63
- package/api/docs/detail/section/section.d.mts +1 -1
- package/api/docs/detail/section/section.mjs +54 -19
- package/api/docs/detail/section/section.test.mjs +50 -0
- package/api/docs/docOverlays.test.mjs +27 -1
- package/api/docs/docs.d.mts +10 -3
- package/api/docs/docs.doc.mjs +55 -16
- package/api/docs/docs.mjs +53 -10
- package/api/docs/docs.type.d.mts +221 -5
- package/api/docs/docs.type.mjs +153 -11
- package/api/docs/index/index.d.mts +18 -0
- package/api/docs/index/index.mjs +40 -0
- package/api/docs/index/index.test.mjs +62 -0
- package/api/docs/list/list.mjs +28 -12
- package/api/docs/node/node.d.mts +43 -0
- package/api/docs/node/node.mjs +192 -0
- package/api/docs/reference-blocks.test.mjs +406 -0
- package/api/doctor/doctor.d.mts +104 -1
- package/api/doctor/doctor.doc.mjs +18 -8
- package/api/doctor/doctor.mjs +635 -7
- package/api/doctor/doctor.test.mjs +732 -11
- package/api/doctor/doctor.type.d.mts +1 -1
- package/api/doctor/doctor.type.mjs +1 -1
- package/api/gap-report/gap-report.doc.mjs +27 -14
- package/api/hook/_adapter.mjs +19 -5
- package/api/hook/hook.doc.mjs +7 -3
- package/api/hook/hook.type.d.mts +3 -3
- package/api/hook/hook.type.mjs +11 -11
- package/api/hook/list/list.d.mts +2 -2
- package/api/hook/list/list.mjs +69 -17
- package/api/index.d.mts +2 -1
- package/api/index.mjs +6 -3
- package/api/init/init.doc.mjs +22 -12
- package/api/init/init.test.mjs +41 -1
- package/api/init/remove/remove.mjs +1 -1
- package/api/init/run/run.mjs +20 -10
- package/api/integration/add-contribution.component-names.test.mjs +120 -0
- package/api/integration/add-contribution.d.mts +2 -1
- package/api/integration/add-contribution.mjs +130 -15
- package/api/integration/add-contribution.test.mjs +258 -7
- package/api/integration/add-helpers.d.mts +5 -2
- package/api/integration/add-helpers.mjs +36 -9
- package/api/integration/add-theme.mjs +56 -65
- package/api/integration/add-theme.test.mjs +139 -21
- package/api/integration/authoring-checks.mjs +138 -28
- package/api/integration/authoring-checks.test.mjs +179 -7
- package/api/integration/authoring-checks.type.mjs +6 -1
- package/api/integration/integration-authoring.type.d.mts +3 -1
- package/api/integration/integration-authoring.type.mjs +2 -0
- package/api/integration/integration-block-exports.test.mjs +10 -6
- package/api/integration/integrationAdd.doc.mjs +14 -4
- package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
- package/api/integration/integrationAddCodemod.doc.mjs +1 -0
- package/api/integration/integrationAddComponent.doc.mjs +2 -1
- package/api/integration/integrationAddDoc.doc.mjs +8 -1
- package/api/integration/integrationAddTemplate.doc.mjs +1 -0
- package/api/integration/integrationAddTheme.doc.mjs +6 -5
- package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
- package/api/integration/integrationDocConflicts.doc.mjs +2 -1
- package/api/integration/integrationPackCheck.doc.mjs +5 -4
- package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
- package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
- package/api/integration/pack-check.lifecycle-output.test.mjs +107 -0
- package/api/integration/pack-check.mjs +160 -11
- package/api/integration/pack-check.test.mjs +477 -47
- package/api/integration/pack-check.type.d.mts +26 -2
- package/api/integration/pack-check.type.mjs +15 -2
- package/api/integration/summarizeIssues.doc.mjs +1 -0
- package/api/integration/template-conflict-compatibility.test.mjs +73 -0
- package/api/integration/validate-integration-fixes.test.mjs +1389 -0
- package/api/integration/validate-integration.mjs +52 -102
- package/api/integration/validate-integration.test.mjs +179 -26
- package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
- package/api/integration/validateIntegration.doc.mjs +3 -2
- package/api/json/assertResponse.doc.mjs +2 -1
- package/api/json/envelope-types.test.mjs +76 -0
- package/api/json/index.ts +2 -0
- package/api/json/isError.doc.mjs +2 -1
- package/api/json/parseResponse.doc.mjs +3 -2
- package/api/layout/_adapter.mjs +20 -5
- package/api/layout/expand/expand.mjs +7 -5
- package/api/layout/expand/expand.path-safety.test.mjs +53 -0
- package/api/layout/grammar/grammar.mjs +2 -1
- package/api/layout/layoutCheck.doc.mjs +1 -0
- package/api/layout/layoutExpand.doc.mjs +2 -1
- package/api/layout/layoutGrammar.doc.mjs +1 -0
- package/api/search/search-return-type.test.mjs +54 -0
- package/api/search/search.d.mts +89 -12
- package/api/search/search.doc.mjs +8 -2
- package/api/search/search.mjs +697 -97
- package/api/search/search.type.d.mts +15 -3
- package/api/search/search.type.mjs +5 -2
- package/api/swizzle/copy/copy.mjs +28 -11
- package/api/swizzle/swizzle.doc.mjs +8 -5
- package/api/swizzle/swizzle.type.d.mts +2 -2
- package/api/swizzle/swizzle.type.mjs +2 -2
- package/api/template/copy/copy.mjs +18 -24
- package/api/template/copy/copy.test.mjs +26 -0
- package/api/template/list/list.mjs +1 -0
- package/api/template/table-floating-bulk-actions.test.mjs +66 -0
- package/api/template/template-integration.test.mjs +1072 -3
- package/api/template/template-suffix.test.mjs +41 -21
- package/api/template/template.d.mts +1 -1
- package/api/template/template.doc.mjs +32 -9
- package/api/template/template.mjs +45 -8
- package/api/template/template.type.d.mts +12 -14
- package/api/template/template.type.mjs +15 -14
- package/api/theme/_adapter.d.mts +2 -3
- package/api/theme/_adapter.mjs +4 -5
- package/api/theme/add/add.binary.test.mjs +84 -0
- package/api/theme/add/add.mjs +31 -22
- package/api/theme/add/add.rollback.test.mjs +158 -0
- package/api/theme/add/add.staging.test.mjs +83 -0
- package/api/theme/add/add.test.mjs +14 -1
- package/api/theme/build/build.family.test.mjs +7 -12
- package/api/theme/build/build.mjs +140 -59
- package/api/theme/build/build.public-component-vars.test.mjs +1 -1
- package/api/theme/build/build.receipt-doc.test.mjs +111 -0
- package/api/theme/build/build.rollback.test.mjs +148 -0
- package/api/theme/build/build.test.mjs +127 -0
- package/api/theme/build/font-warning.mjs +3 -3
- package/api/theme/build/font-warning.test.mjs +5 -2
- package/api/theme/generateTonalPalette.doc.mjs +2 -2
- package/api/theme/integration-themes.test.mjs +39 -28
- package/api/theme/list/list.test.mjs +19 -20
- package/api/theme/listThemes.doc.mjs +6 -5
- package/api/theme/palette/generate/generate.mjs +8 -3
- package/api/theme/palette/generate/generate.test.mjs +96 -0
- package/api/theme/palette/generate/generator.d.mts +10 -13
- package/api/theme/palette/generate/generator.mjs +15 -4
- package/api/theme/palette/generate/generator.test.mjs +10 -0
- package/api/theme/template/template.mjs +11 -2
- package/api/theme/template/template.test.mjs +20 -0
- package/api/theme/theme.type.d.mts +170 -11
- package/api/theme/theme.type.mjs +94 -27
- package/api/theme/themeAdd.doc.mjs +12 -12
- package/api/theme/themeBuild.doc.mjs +21 -17
- package/api/theme/themeList.doc.mjs +6 -3
- package/api/theme/themeListAvailable.doc.mjs +6 -3
- package/api/theme/themePaletteGenerate.doc.mjs +16 -8
- package/api/theme/themeTargets.doc.mjs +4 -2
- package/api/theme/themeTemplate.doc.mjs +8 -3
- package/api/upgrade/_adapter.d.mts +32 -5
- package/api/upgrade/_adapter.mjs +139 -22
- package/api/upgrade/list/list.mjs +2 -1
- package/api/upgrade/list/list.test.mjs +73 -0
- package/api/upgrade/project-context.test.mjs +272 -0
- package/api/upgrade/provider-agreement.test.mjs +152 -0
- package/api/upgrade/run/files-changed.test.mjs +111 -0
- package/api/upgrade/run/run.mjs +358 -59
- package/api/upgrade/status/status.mjs +2 -2
- package/api/upgrade/upgrade.doc.mjs +32 -23
- package/api/upgrade/upgrade.type.d.mts +43 -5
- package/api/upgrade/upgrade.type.mjs +29 -13
- package/assets/codemods/__tests__/registry.test.mjs +1 -0
- package/assets/codemods/__tests__/runner.test.mjs +332 -8
- package/assets/codemods/file-count.test.mjs +163 -0
- package/assets/codemods/integration-discovery.mjs +48 -4
- package/assets/codemods/integration-discovery.test.mjs +73 -0
- package/assets/codemods/integration-runner.mjs +59 -7
- package/assets/codemods/integration-runner.protection.test.mjs +153 -0
- package/assets/codemods/registry.mjs +1 -0
- package/assets/codemods/run-codemod.mjs +177 -34
- package/assets/codemods/runner.mjs +353 -104
- package/assets/codemods/term-log.mjs +32 -8
- package/assets/codemods/term-log.test.mjs +19 -1
- package/assets/codemods/transform-prop.mjs +109 -0
- package/assets/codemods/transform-prop.test.mjs +95 -0
- package/assets/codemods/transforms/v0.0.14/__tests__/rename-status-variants.test.mjs +86 -165
- package/assets/codemods/transforms/v0.0.14/rename-status-variants.mjs +72 -210
- package/assets/codemods/transforms/v0.1.8/__tests__/rename-avatar-size-scale.test.mjs +83 -115
- package/assets/codemods/transforms/v0.1.8/rename-avatar-size-scale.mjs +57 -186
- package/assets/codemods/transforms/v0.3.0/__tests__/unwrap-authoring-factories.test.mjs +27 -5
- package/assets/codemods/transforms/v0.3.0/unwrap-authoring-factories.mjs +20 -5
- package/assets/codemods/transforms/v0.6.0/__tests__/next-codemods.test.mjs +47 -0
- package/assets/codemods/transforms/v0.6.0/rename-resizable-pixel-bounds.mjs +57 -10
- package/assets/codemods/transforms/v0.6.4/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
- package/assets/codemods/transforms/v0.6.4/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
- package/assets/codemods/transforms/v0.6.4/index.mjs +31 -0
- package/assets/codemods/transforms/v0.6.4/migrate-native-picker-to-presentation.mjs +148 -0
- package/assets/codemods/transforms/v0.6.4/migrate-theme-catalog-to-descriptors.mjs +141 -0
- package/assets/docs/README.md +12 -1
- package/assets/docs/authoring.doc.mjs +14 -0
- package/assets/docs/browser-support.doc.mjs +11 -11
- package/assets/docs/color.doc.mjs +8 -2
- package/assets/docs/elevation.doc.mjs +6 -4
- package/assets/docs/getting-started.doc.mjs +6 -17
- package/assets/docs/icons.doc.mjs +2 -21
- package/assets/docs/illustrations.doc.mjs +7 -15
- package/assets/docs/internationalization.doc.mjs +7 -5
- package/assets/docs/layout.doc.dense.mjs +132 -84
- package/assets/docs/layout.doc.mjs +134 -78
- package/assets/docs/migration.doc.mjs +19 -21
- package/assets/docs/motion.doc.mjs +16 -3
- package/assets/docs/principles.doc.dense.mjs +5 -5
- package/assets/docs/principles.doc.mjs +14 -6
- package/assets/docs/principles.doc.zh.mjs +6 -6
- package/assets/docs/shape.doc.mjs +8 -3
- package/assets/docs/spacing.doc.mjs +7 -2
- package/assets/docs/styling-libraries.doc.mjs +10 -6
- package/assets/docs/styling.doc.mjs +22 -26
- package/assets/docs/theme.doc.dense.mjs +58 -18
- package/assets/docs/theme.doc.mjs +60 -50
- package/assets/docs/theme.doc.zh.mjs +9 -8
- package/assets/docs/tokens.doc.dense.mjs +2 -2
- package/assets/docs/tokens.doc.mjs +390 -9
- package/assets/docs/tokens.doc.zh.mjs +2 -2
- package/assets/docs/tree/add-a-component.doc.mjs +75 -0
- package/assets/docs/tree/add-a-theme.doc.mjs +85 -0
- package/assets/docs/tree/add-a-topic.doc.mjs +144 -0
- package/assets/docs/tree/agent-guidance.doc.mjs +138 -0
- package/assets/docs/tree/api.doc.mjs +30 -0
- package/assets/docs/tree/block-template.doc.mjs +130 -0
- package/assets/docs/tree/build-the-template.doc.mjs +28 -0
- package/assets/docs/tree/building-blocks.doc.mjs +46 -0
- package/assets/docs/tree/check-your-docs.doc.mjs +137 -0
- package/assets/docs/tree/checks.doc.mjs +119 -0
- package/assets/docs/tree/cli.doc.mjs +23 -0
- package/assets/docs/tree/codemods.doc.mjs +147 -0
- package/assets/docs/tree/commands.doc.mjs +25 -0
- package/assets/docs/tree/component-family.doc.mjs +113 -0
- package/assets/docs/tree/component-imports.doc.mjs +69 -0
- package/assets/docs/tree/component-lookups.doc.mjs +149 -0
- package/assets/docs/tree/components.doc.mjs +23 -0
- package/assets/docs/tree/configuration.doc.mjs +23 -0
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +182 -0
- package/assets/docs/tree/define-the-theme.doc.mjs +118 -0
- package/assets/docs/tree/describe-the-component.doc.mjs +57 -0
- package/assets/docs/tree/docs.doc.mjs +21 -0
- package/assets/docs/tree/document-the-template.doc.mjs +28 -0
- package/assets/docs/tree/document-the-theme.doc.mjs +68 -0
- package/assets/docs/tree/export-template-assets.doc.mjs +147 -0
- package/assets/docs/tree/extend-or-replace.doc.mjs +103 -0
- package/assets/docs/tree/fonts-and-assets.doc.mjs +106 -0
- package/assets/docs/tree/generate-a-palette.doc.mjs +66 -0
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +105 -0
- package/assets/docs/tree/help.doc.mjs +16 -0
- package/assets/docs/tree/integrations.doc.mjs +40 -0
- package/assets/docs/tree/links.doc.mjs +98 -0
- package/assets/docs/tree/package-and-test.doc.mjs +32 -0
- package/assets/docs/tree/page-template.doc.mjs +71 -0
- package/assets/docs/tree/publishing.doc.mjs +111 -0
- package/assets/docs/tree/quick-start.doc.mjs +272 -0
- package/assets/docs/tree/replace-a-core-component.doc.mjs +104 -0
- package/assets/docs/tree/replace-a-core-template.doc.mjs +172 -0
- package/assets/docs/tree/sections-and-placement.doc.mjs +108 -0
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +59 -0
- package/assets/docs/tree/ship.doc.mjs +16 -0
- package/assets/docs/tree/short-and-findable.doc.mjs +108 -0
- package/assets/docs/tree/single-component.doc.mjs +165 -0
- package/assets/docs/tree/start-a-template.doc.mjs +143 -0
- package/assets/docs/tree/subcomponent.doc.mjs +115 -0
- package/assets/docs/tree/template-assets.doc.mjs +64 -0
- package/assets/docs/tree/template-doc-overview.doc.mjs +109 -0
- package/assets/docs/tree/template-fonts.doc.mjs +102 -0
- package/assets/docs/tree/template-grading-rubric.doc.mjs +452 -0
- package/assets/docs/tree/template-icons.doc.mjs +97 -0
- package/assets/docs/tree/template-images-media.doc.mjs +127 -0
- package/assets/docs/tree/template-styles.doc.mjs +93 -0
- package/assets/docs/tree/templates.doc.mjs +34 -0
- package/assets/docs/tree/test-in-an-app.doc.mjs +115 -0
- package/assets/docs/tree/test-template-in-app.doc.mjs +128 -0
- package/assets/docs/tree/themes.doc.mjs +39 -0
- package/assets/docs/tree/troubleshooting.doc.mjs +149 -0
- package/assets/docs/tree/upgrading.doc.mjs +103 -0
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +51 -0
- package/assets/docs/tree/verify-packed-template.doc.mjs +77 -0
- package/assets/docs/tree/versioning.doc.mjs +161 -0
- package/assets/docs/tree/write-good-templates.doc.mjs +64 -0
- package/assets/docs/tree/write-the-template-file.doc.mjs +154 -0
- package/assets/docs/typography.doc.mjs +24 -4
- package/assets/docs/working-with-ai.doc.mjs +34 -26
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs +1 -1
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.tsx +1 -3
- package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
- package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.tsx +61 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.tsx +126 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.doc.mjs +15 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.tsx +86 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.tsx +99 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.tsx +122 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.tsx +95 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.doc.mjs +14 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.tsx +71 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.doc.mjs +19 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.tsx +139 -0
- package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
- package/assets/templates/blocks/components/Timer/TimerFormats.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerFormats.tsx +34 -0
- package/assets/templates/blocks/components/Timer/TimerInline.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerInline.tsx +14 -0
- package/assets/templates/blocks/components/Timer/TimerShowcase.doc.mjs +13 -0
- package/assets/templates/blocks/components/Timer/TimerShowcase.tsx +47 -0
- package/assets/templates/blocks/components/Timer/TimerTypography.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerTypography.tsx +31 -0
- package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.doc.mjs +19 -3
- package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.tsx +383 -65
- package/assets/templates/pages/table-tree/page.tsx +1704 -0
- package/assets/templates/pages/table-tree/template.doc.mjs +12 -0
- package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
- package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
- package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
- package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
- package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
- package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
- package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
- package/authoring/_shared/contract.ts +22 -0
- package/authoring/codemod/codemod.doc.mjs +7 -2
- package/authoring/codemod/parse.d.mts +8 -8
- package/authoring/codemod/parse.mjs +8 -6
- package/authoring/codemod/type.ts +12 -0
- package/authoring/config/config.doc.mjs +11 -3
- package/authoring/config/debug-composition.test.mjs +92 -0
- package/authoring/config/parse.d.mts +15 -13
- package/authoring/config/parse.mjs +27 -8
- package/authoring/config/parse.test.mjs +8 -0
- package/authoring/config/type.ts +29 -6
- package/authoring/debug/debug.doc.d.mts +11 -0
- package/authoring/debug/debug.doc.mjs +182 -0
- package/authoring/debug/parse.d.mts +8 -8
- package/authoring/debug/parse.mjs +3 -3
- package/authoring/discover/discover.doc.d.mts +13 -0
- package/authoring/discover/discover.doc.mjs +138 -0
- package/authoring/discover/parse.d.mts +24 -0
- package/authoring/discover/parse.mjs +128 -0
- package/authoring/discover/parse.test.mjs +124 -0
- package/authoring/discover/type.ts +87 -0
- package/authoring/doctypes/_schema.d.mts +792 -24
- package/authoring/doctypes/_schema.mjs +549 -39
- package/authoring/doctypes/base/graph-fields.doc.d.mts +9 -0
- package/authoring/doctypes/base/graph-fields.doc.mjs +64 -0
- package/authoring/doctypes/base/type.ts +43 -0
- package/authoring/doctypes/command/command.doc.mjs +4 -3
- package/authoring/doctypes/command/parse.d.mts +2 -2
- package/authoring/doctypes/command/parse.mjs +1 -1
- package/authoring/doctypes/command/type.ts +5 -4
- package/authoring/doctypes/component/component.doc.mjs +12 -3
- package/authoring/doctypes/component/parse.d.mts +2 -2
- package/authoring/doctypes/component/parse.mjs +1 -1
- package/authoring/doctypes/component/type.ts +14 -5
- package/authoring/doctypes/doctypes-new.test.mjs +48 -6
- package/authoring/doctypes/enum/enum.doc.mjs +1 -1
- package/authoring/doctypes/enum/parse.d.mts +2 -2
- package/authoring/doctypes/enum/parse.mjs +1 -1
- package/authoring/doctypes/enum/type.ts +4 -2
- package/authoring/doctypes/function/function.doc.mjs +7 -2
- package/authoring/doctypes/function/parse.d.mts +2 -2
- package/authoring/doctypes/function/parse.mjs +1 -1
- package/authoring/doctypes/function/type.ts +9 -4
- package/authoring/doctypes/hook/hook.doc.mjs +4 -0
- package/authoring/doctypes/hook/parse.d.mts +2 -2
- package/authoring/doctypes/hook/parse.mjs +1 -1
- package/authoring/doctypes/hook/type.ts +5 -4
- package/authoring/doctypes/legacy.d.mts +8 -6
- package/authoring/doctypes/legacy.mjs +5 -4
- package/authoring/doctypes/load-contract.test.mjs +233 -0
- package/authoring/doctypes/namespace/namespace.doc.d.mts +9 -0
- package/authoring/doctypes/namespace/namespace.doc.mjs +128 -0
- package/authoring/doctypes/namespace/parse.d.mts +12 -0
- package/authoring/doctypes/namespace/parse.mjs +25 -0
- package/authoring/doctypes/namespace/parse.test.mjs +163 -0
- package/authoring/doctypes/namespace/type.ts +74 -0
- package/authoring/doctypes/parse.d.mts +22 -18
- package/authoring/doctypes/parse.mjs +22 -11
- package/authoring/doctypes/parse.test.mjs +77 -3
- package/authoring/doctypes/reference/parse.d.mts +2 -2
- package/authoring/doctypes/reference/parse.mjs +8 -5
- package/authoring/doctypes/reference/reference.doc.mjs +55 -6
- package/authoring/doctypes/reference/type.ts +75 -7
- package/authoring/doctypes/schema/parse.d.mts +2 -2
- package/authoring/doctypes/schema/parse.mjs +1 -1
- package/authoring/doctypes/schema/schema.doc.mjs +2 -2
- package/authoring/doctypes/schema/type.ts +4 -4
- package/authoring/doctypes/template/parse.d.mts +94 -1
- package/authoring/doctypes/template/parse.mjs +40 -2
- package/authoring/doctypes/template/parse.test.mjs +26 -2
- package/authoring/doctypes/template/template.doc.mjs +13 -3
- package/authoring/doctypes/template/type.ts +13 -2
- package/authoring/doctypes/theme/parse.d.mts +35 -0
- package/authoring/doctypes/theme/parse.mjs +76 -0
- package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
- package/authoring/doctypes/theme/theme.doc.mjs +79 -0
- package/authoring/doctypes/theme/type.ts +42 -0
- package/authoring/doctypes/types.ts +12 -10
- package/authoring/gap-report/gap-report.doc.d.mts +12 -0
- package/authoring/gap-report/gap-report.doc.mjs +183 -0
- package/authoring/gap-report/parse.d.mts +10 -10
- package/authoring/gap-report/parse.mjs +6 -6
- package/authoring/gap-report/type.ts +1 -1
- package/authoring/identity/identity.doc.d.mts +9 -0
- package/authoring/identity/identity.doc.mjs +61 -0
- package/authoring/identity/type.ts +132 -0
- package/authoring/index.d.mts +3 -0
- package/authoring/index.d.ts +62 -17
- package/authoring/index.mjs +4 -1
- package/authoring/integration/integration.doc.mjs +22 -13
- package/authoring/integration/parse.d.mts +2 -2
- package/authoring/integration/parse.mjs +1 -1
- package/authoring/integration/parse.test.mjs +10 -1
- package/authoring/integration/schema.d.mts +6 -4
- package/authoring/integration/schema.mjs +9 -3
- package/authoring/integration/type.ts +19 -8
- package/authoring/shadcn/receipt.d.mts +6 -6
- package/clients/cli/__tests__/cliManifest.test.ts +27 -29
- package/clients/cli/command-load-failure.test.mjs +83 -0
- package/clients/cli/commands/blog.doc.mjs +1 -1
- package/clients/cli/commands/blog.mjs +23 -8
- package/clients/cli/commands/blog.test.mjs +42 -1
- package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
- package/clients/cli/commands/build-theme.ascii-output.test.mjs +161 -0
- package/clients/cli/commands/build-theme.flag-docs.test.mjs +110 -0
- package/clients/cli/commands/build-theme.mjs +16 -50
- package/clients/cli/commands/build-theme.path-safety.test.mjs +86 -1
- package/clients/cli/commands/build-theme.variants.test.mjs +76 -0
- package/clients/cli/commands/build.doc.mjs +16 -8
- package/clients/cli/commands/build.exit-codes-doc.test.mjs +50 -0
- package/clients/cli/commands/build.mjs +137 -114
- package/clients/cli/commands/build.playbook.test.mjs +75 -0
- package/clients/cli/commands/build.text-fields.test.mjs +81 -0
- package/clients/cli/commands/component/index.mjs +153 -61
- package/clients/cli/commands/component-batch.test.mjs +341 -0
- package/clients/cli/commands/component-ownership.test.mjs +92 -3
- package/clients/cli/commands/component-package.test.mjs +46 -0
- package/clients/cli/commands/component-resolution.test.mjs +21 -0
- package/clients/cli/commands/component.doc.mjs +28 -10
- package/clients/cli/commands/component.test.mjs +19 -0
- package/clients/cli/commands/detail-levels.test.mjs +2 -2
- package/clients/cli/commands/discover.broken-integration.test.mjs +52 -5
- package/clients/cli/commands/discover.components-flag.test.mjs +97 -0
- package/clients/cli/commands/discover.doc.mjs +55 -9
- package/clients/cli/commands/discover.mjs +393 -118
- package/clients/cli/commands/discover.sources.test.mjs +267 -0
- package/clients/cli/commands/discover.text-projection.test.mjs +103 -0
- package/clients/cli/commands/docs.doc.mjs +28 -6
- package/clients/cli/commands/docs.mjs +295 -38
- package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +6 -5
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.package-json.test.mjs +53 -0
- package/clients/cli/commands/doctor-integration.test.mjs +143 -8
- package/clients/cli/commands/doctor.doc.mjs +4 -2
- package/clients/cli/commands/doctor.mjs +108 -37
- package/clients/cli/commands/doctor.test.mjs +42 -0
- package/clients/cli/commands/gap-report.doc.mjs +27 -15
- package/clients/cli/commands/gap-report.test.mjs +72 -0
- package/clients/cli/commands/hook/index.mjs +7 -17
- package/clients/cli/commands/hook.doc.mjs +1 -1
- package/clients/cli/commands/hook.text-projection.test.mjs +45 -0
- package/clients/cli/commands/init.doc.mjs +24 -10
- package/clients/cli/commands/init.flag-help.test.mjs +153 -0
- package/clients/cli/commands/integration-add.controls.test.mjs +132 -0
- package/clients/cli/commands/integration-add.doc.mjs +39 -13
- package/clients/cli/commands/integration-authoring.test.mjs +74 -19
- package/clients/cli/commands/integration-pack.doc.mjs +6 -10
- package/clients/cli/commands/integration-real-world.test.mjs +4 -10
- package/clients/cli/commands/integration-verify.doc.mjs +22 -0
- package/clients/cli/commands/integration.doc.mjs +5 -5
- package/clients/cli/commands/integration.mjs +75 -43
- package/clients/cli/commands/interactive-guard.test.mjs +101 -24
- package/clients/cli/commands/json-contract.test.mjs +33 -0
- package/clients/cli/commands/layout-check.doc.mjs +15 -4
- package/clients/cli/commands/layout-expand.doc.mjs +22 -5
- package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
- package/clients/cli/commands/layout.doc.mjs +3 -3
- package/clients/cli/commands/layout.mjs +21 -9
- package/clients/cli/commands/layout.path-help.test.mjs +33 -0
- package/clients/cli/commands/layout.stdin-cap.test.mjs +47 -0
- package/clients/cli/commands/layout.text-fields.test.mjs +39 -0
- package/clients/cli/commands/manifest.doc.mjs +2 -2
- package/clients/cli/commands/no-prompt-wording.test.mjs +94 -0
- package/clients/cli/commands/search.doc.mjs +16 -6
- package/clients/cli/commands/search.mjs +49 -11
- package/clients/cli/commands/search.test.mjs +92 -0
- package/clients/cli/commands/setup-nudge.test.mjs +6 -0
- package/clients/cli/commands/swizzle.doc.mjs +4 -3
- package/clients/cli/commands/swizzle.path-safety.test.mjs +42 -0
- package/clients/cli/commands/template.doc.mjs +53 -14
- package/clients/cli/commands/template.flag-help.test.mjs +117 -0
- package/clients/cli/commands/template.mjs +4 -91
- package/clients/cli/commands/template.path-help.test.mjs +40 -0
- package/clients/cli/commands/text-json-parity.test.mjs +725 -0
- package/clients/cli/commands/theme-add.doc.mjs +5 -4
- package/clients/cli/commands/theme-build.doc.mjs +8 -7
- package/clients/cli/commands/theme-list.doc.mjs +2 -2
- package/clients/cli/commands/theme-palette-generate.doc.mjs +12 -7
- package/clients/cli/commands/theme-palette-generate.test.mjs +19 -0
- package/clients/cli/commands/theme-palette.doc.mjs +2 -3
- package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
- package/clients/cli/commands/theme-targets.doc.mjs +3 -3
- package/clients/cli/commands/theme-template.behavior.test.mjs +12 -0
- package/clients/cli/commands/theme-template.doc.mjs +2 -2
- package/clients/cli/commands/theme.doc.mjs +3 -2
- package/clients/cli/commands/upgrade.ascii-output.test.mjs +87 -0
- package/clients/cli/commands/upgrade.doc.mjs +83 -12
- package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
- package/clients/cli/commands/upgrade.flag-help.test.mjs +188 -0
- package/clients/cli/commands/upgrade.hook-output.test.mjs +88 -0
- package/clients/cli/commands/upgrade.mjs +29 -7
- package/clients/cli/formatters/index.mjs +164 -1
- package/clients/cli/formatters/index.test.mjs +97 -0
- package/clients/cli/index.mjs +47 -34
- package/clients/cli/latest-version-env.test.mjs +50 -0
- package/clients/cli/lib/cli-error.test.mjs +7 -0
- package/clients/cli/lib/component-format.mjs +9 -9
- package/clients/cli/lib/component-format.test.mjs +1 -1
- package/clients/cli/lib/define-command.mjs +56 -6
- package/clients/cli/lib/define-command.test.mjs +54 -0
- package/clients/cli/lib/doc-text-ascii.test.mjs +82 -0
- package/clients/cli/lib/exit-codes.test.mjs +113 -0
- package/clients/cli/lib/hook-format.mjs +19 -10
- package/clients/cli/lib/json-shim.mjs +62 -16
- package/clients/cli/lib/json-shim.test.mjs +83 -0
- package/clients/cli/lib/manifest.d.ts +2 -0
- package/clients/cli/lib/manifest.mjs +53 -6
- package/clients/cli/lib/manifest.test.mjs +22 -2
- package/clients/cli/lib/parse-error-format.test.mjs +81 -0
- package/foundation/agent-docs/agent-docs.d.mts +7 -2
- package/foundation/agent-docs/agent-docs.mjs +83 -13
- package/foundation/agent-docs/agent-docs.path-safety.test.mjs +266 -4
- package/foundation/config/integration-debug.test.mjs +28 -3
- package/foundation/config/project-themes.test.mjs +11 -19
- package/foundation/config/project.d.mts +20 -11
- package/foundation/config/project.mjs +263 -91
- package/foundation/config/project.test.mjs +270 -21
- package/foundation/discovery/authoring-self-docs.d.mts +87 -0
- package/foundation/discovery/authoring-self-docs.mjs +237 -0
- package/foundation/discovery/authoring-self-docs.test.mjs +174 -0
- package/foundation/discovery/authoring-surface.d.mts +74 -0
- package/foundation/discovery/authoring-surface.mjs +525 -0
- package/foundation/discovery/authoring-surface.test.mjs +392 -0
- package/foundation/discovery/cli-self-docs.d.mts +119 -0
- package/foundation/discovery/cli-self-docs.mjs +504 -0
- package/foundation/discovery/cli-self-docs.test.mjs +395 -0
- package/foundation/discovery/component-discovery.d.mts +39 -1
- package/foundation/discovery/component-discovery.mjs +50 -1
- package/foundation/discovery/component-loader.d.mts +35 -38
- package/foundation/discovery/component-loader.mjs +53 -222
- package/foundation/discovery/docs-discovery.d.mts +119 -11
- package/foundation/discovery/docs-discovery.mjs +427 -108
- package/foundation/discovery/docs-discovery.test.mjs +386 -20
- package/foundation/discovery/docs-output-budget.d.mts +28 -0
- package/foundation/discovery/docs-output-budget.mjs +50 -0
- package/foundation/discovery/docs-section-key.d.mts +116 -0
- package/foundation/discovery/docs-section-key.mjs +322 -0
- package/foundation/discovery/docs-section-key.test.mjs +246 -0
- package/foundation/discovery/template-adapter.d.mts +113 -11
- package/foundation/discovery/template-adapter.fixture-refs.test.mjs +248 -0
- package/foundation/discovery/template-adapter.integration-isolation.test.mjs +94 -0
- package/foundation/discovery/template-adapter.mjs +774 -83
- package/foundation/discovery/template-adapter.test.mjs +57 -0
- package/foundation/discovery/template-conflict-release.d.mts +13 -0
- package/foundation/discovery/template-conflict-release.mjs +40 -0
- package/foundation/discovery/template-conflict-release.test.mjs +40 -0
- package/foundation/discovery/theme-discovery.d.mts +67 -7
- package/foundation/discovery/theme-discovery.mjs +916 -186
- package/foundation/discovery/theme-discovery.test.mjs +613 -219
- package/foundation/discovery/theming-targets.test.mjs +4 -0
- package/foundation/doc-compiler/bundle.d.mts +47 -0
- package/foundation/doc-compiler/bundle.mjs +278 -0
- package/foundation/doc-compiler/bundle.test.mjs +266 -0
- package/foundation/doc-compiler/compile.d.mts +343 -0
- package/foundation/doc-compiler/compile.mjs +558 -0
- package/foundation/doc-compiler/diagnostics.d.mts +126 -0
- package/foundation/doc-compiler/diagnostics.mjs +305 -0
- package/foundation/doc-compiler/doc-compiler.test.mjs +714 -0
- package/foundation/doc-compiler/doc-loads.test.mjs +1643 -0
- package/foundation/doc-compiler/import.d.mts +24 -0
- package/foundation/doc-compiler/import.mjs +59 -0
- package/foundation/doc-compiler/inputs.d.mts +102 -0
- package/foundation/doc-compiler/inputs.mjs +291 -0
- package/foundation/doc-compiler/inputs.test.mjs +298 -0
- package/foundation/doc-compiler/ir.d.mts +22 -0
- package/foundation/doc-compiler/ir.mjs +471 -0
- package/foundation/doc-compiler/lenses.d.mts +36 -0
- package/foundation/doc-compiler/lenses.mjs +173 -0
- package/foundation/doc-compiler/links.d.mts +162 -0
- package/foundation/doc-compiler/links.mjs +294 -0
- package/foundation/doc-compiler/links.test.mjs +192 -0
- package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
- package/foundation/doc-compiler/overlays.d.mts +37 -0
- package/foundation/doc-compiler/overlays.mjs +206 -0
- package/foundation/doc-compiler/parse-readable.d.mts +9 -0
- package/foundation/doc-compiler/parse-readable.mjs +29 -0
- package/foundation/doc-compiler/read.d.mts +127 -0
- package/foundation/doc-compiler/read.mjs +325 -0
- package/foundation/doc-compiler/read.test.mjs +313 -0
- package/foundation/doc-compiler/source.d.mts +33 -0
- package/foundation/doc-compiler/source.mjs +128 -0
- package/foundation/doc-compiler/tree.d.mts +292 -0
- package/foundation/doc-compiler/tree.mjs +881 -0
- package/foundation/fs/file-protection.d.mts +33 -0
- package/foundation/fs/file-protection.mjs +825 -0
- package/foundation/fs/file-protection.test.mjs +250 -0
- package/foundation/fs/module-loader.d.mts +1 -0
- package/foundation/fs/module-loader.mjs +50 -1
- package/foundation/fs/module-loader.stdout.test.mjs +332 -0
- package/foundation/fs/path-safety.d.mts +3 -2
- package/foundation/fs/path-safety.mjs +49 -19
- package/foundation/fs/path-safety.test.mjs +50 -0
- package/foundation/fs/publish-file-hardlink-unavailable.test.mjs +129 -94
- package/foundation/identity/provider-identity.d.mts +90 -0
- package/foundation/identity/provider-identity.mjs +320 -0
- package/foundation/identity/provider-identity.test.mjs +254 -0
- package/foundation/identity/providers.d.mts +7 -0
- package/foundation/identity/providers.mjs +16 -0
- package/foundation/integrations/autolink.d.mts +58 -1
- package/foundation/integrations/autolink.mjs +143 -45
- package/foundation/integrations/autolink.test.mjs +1 -1
- package/foundation/integrations/cli-requirement.d.mts +65 -0
- package/foundation/integrations/cli-requirement.mjs +189 -0
- package/foundation/integrations/cli-requirement.test.mjs +89 -0
- package/foundation/integrations/contribution-fixes.d.mts +145 -0
- package/foundation/integrations/contribution-fixes.mjs +1284 -0
- package/foundation/integrations/contribution-inventory.d.mts +3 -2
- package/foundation/integrations/contribution-inventory.mjs +28 -25
- package/foundation/integrations/contribution-inventory.test.mjs +86 -27
- package/foundation/integrations/integration-warnings.d.mts +9 -2
- package/foundation/integrations/integration-warnings.mjs +52 -21
- package/foundation/integrations/integration-warnings.test.mjs +74 -1
- package/foundation/integrations/integrations.d.mts +63 -3
- package/foundation/integrations/integrations.mjs +122 -9
- package/foundation/integrations/integrations.test.mjs +415 -1
- package/foundation/integrations/provider-conflicts.test.mjs +125 -0
- package/foundation/integrations/provider-ledger.test.mjs +275 -0
- package/foundation/integrations/provider-resolution.d.mts +152 -0
- package/foundation/integrations/provider-resolution.mjs +576 -0
- package/foundation/integrations/provider-resolution.test.mjs +369 -0
- package/foundation/integrations/theme-descriptor.d.mts +8 -0
- package/foundation/integrations/theme-descriptor.mjs +44 -0
- package/foundation/integrations/validate-contributions.d.mts +2 -0
- package/foundation/integrations/validate-contributions.mjs +131 -29
- package/foundation/response/base.d.ts +8 -4
- package/foundation/response/batch.type.d.mts +33 -0
- package/foundation/response/batch.type.mjs +34 -0
- package/foundation/response/error-codes.d.mts +3 -1
- package/foundation/response/error-codes.d.ts +2 -0
- package/foundation/response/error-codes.doc.mjs +19 -12
- package/foundation/response/error-codes.mjs +8 -2
- package/foundation/response/error-codes.test.mjs +166 -14
- package/foundation/response/json-contract.test.mjs +57 -17
- package/foundation/response/json.d.mts +4 -2
- package/foundation/response/json.mjs +8 -10
- package/foundation/response/response-types.doc.d.mts +7 -2
- package/foundation/response/response-types.doc.mjs +69 -25
- package/foundation/response/response-types.doc.test.mjs +181 -0
- package/foundation/response/response.doc.mjs +12 -11
- package/foundation/text/string-utils.d.mts +8 -0
- package/foundation/text/string-utils.mjs +40 -10
- package/foundation/xle/expand.d.mts +2 -0
- package/foundation/xle/expand.mjs +4 -3
- package/foundation/xle/expand.test.mjs +54 -0
- package/foundation/xle/xle.test.mjs +13 -0
- package/package.json +10 -11
- package/api/docs/docs.test.mjs +0 -83
- package/api/docs/integrationDocs.test.mjs +0 -208
- package/api/search/search.test.mjs +0 -389
- package/assets/docs/cli-integrations.doc.mjs +0 -367
- package/assets/templates/themes/manifest.json +0 -95
- package/clients/cli/commands/docs.test.mjs +0 -102
- package/clients/cli/lib/update-check.mjs +0 -83
- package/clients/cli/lib/update-check.test.mjs +0 -137
- package/clients/cli/update-hint-commands.test.mjs +0 -54
- package/foundation/agent-docs/agent-docs.test.mjs +0 -1141
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file Namespace doc types. A namespace owns navigation slots and a
|
|
5
|
+
* renderer-neutral layout over already-discovered docs. It never scans files
|
|
6
|
+
* or copies child documents.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type {AuthoredDocGraphFields, AuthoredDocKind} from '../base/type.js';
|
|
10
|
+
import type {
|
|
11
|
+
GraphContentBlock,
|
|
12
|
+
ReferenceContentBlock,
|
|
13
|
+
} from '../reference/type.js';
|
|
14
|
+
|
|
15
|
+
/** Which providers may contribute appearances to a namespace slot. */
|
|
16
|
+
export type NamespaceProviderScope = 'same' | 'configured';
|
|
17
|
+
|
|
18
|
+
/** Constraints declared by the namespace that owns a slot. */
|
|
19
|
+
export interface NamespaceSlotAcceptance {
|
|
20
|
+
/** Authored doc kinds accepted by this slot. */
|
|
21
|
+
kinds: AuthoredDocKind[];
|
|
22
|
+
/** Omit for the namespace provider; `configured` admits provider appearances. */
|
|
23
|
+
providers?: NamespaceProviderScope;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** One named placement and collection target owned by a NamespaceDoc. */
|
|
27
|
+
export interface NamespaceSlot {
|
|
28
|
+
/** Human-readable heading for children in this slot. */
|
|
29
|
+
title: string;
|
|
30
|
+
/** Which docs may be placed or shown in this slot. */
|
|
31
|
+
accepts: NamespaceSlotAcceptance;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** One logical source group that a namespace may adopt. */
|
|
35
|
+
export interface NamespaceAdoptionSource {
|
|
36
|
+
/** Provider-local discovery group, such as `cli-commands`. */
|
|
37
|
+
group: string;
|
|
38
|
+
/** Optional subset of authored kinds from the group. */
|
|
39
|
+
kinds?: AuthoredDocKind[];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Assigns otherwise-unplaced docs from one provider-local source group to a
|
|
44
|
+
* child namespace. Discovery defines groups; this rule never scans a folder.
|
|
45
|
+
*/
|
|
46
|
+
export interface NamespaceAdoptionRule {
|
|
47
|
+
source: NamespaceAdoptionSource;
|
|
48
|
+
/** Slot owned by this namespace that becomes the canonical destination. */
|
|
49
|
+
into: string;
|
|
50
|
+
/** Generate one child namespace per authored kind. */
|
|
51
|
+
groupBy?: 'kind';
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* An authored documentation namespace. Its ordered blocks control layout while
|
|
56
|
+
* slots and adoption rules describe where already-discovered docs may appear.
|
|
57
|
+
*/
|
|
58
|
+
export interface NamespaceDoc extends AuthoredDocGraphFields {
|
|
59
|
+
type: 'namespace';
|
|
60
|
+
/** Stable provider-local name. Navigation changes do not change this value. */
|
|
61
|
+
name: string;
|
|
62
|
+
/** Human-readable page title. */
|
|
63
|
+
title: string;
|
|
64
|
+
/** One-line summary shown in listings and search results. */
|
|
65
|
+
summary: string;
|
|
66
|
+
/** Search terms that are not already present in the title or summary. */
|
|
67
|
+
keywords?: string[];
|
|
68
|
+
/** Named child-placement and collection targets. */
|
|
69
|
+
slots: Record<string, NamespaceSlot>;
|
|
70
|
+
/** Optional source-adoption rules for otherwise-unplaced docs. */
|
|
71
|
+
adopts?: NamespaceAdoptionRule[];
|
|
72
|
+
/** Ordered renderer-neutral content and collection blocks. */
|
|
73
|
+
blocks?: (ReferenceContentBlock | GraphContentBlock)[];
|
|
74
|
+
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
-
/** @typedef {import('./types').ComponentDoc} ComponentDoc */
|
|
5
|
-
/** @typedef {import('./types').HookDoc} HookDoc */
|
|
6
|
-
/** @typedef {import('./types').FunctionDoc} FunctionDoc */
|
|
7
|
-
/** @typedef {import('./types').ReferenceDoc} ReferenceDoc */
|
|
8
|
-
/** @typedef {import('./types').TemplateDoc} TemplateDoc */
|
|
9
|
-
/** @typedef {import('./types').SchemaDoc} SchemaDoc */
|
|
10
|
-
/** @typedef {import('./types').CommandDoc} CommandDoc */
|
|
11
|
-
/** @typedef {import('./types').EnumDoc} EnumDoc */
|
|
4
|
+
/** @typedef {import('./types.js').ComponentDoc} ComponentDoc */
|
|
5
|
+
/** @typedef {import('./types.js').HookDoc} HookDoc */
|
|
6
|
+
/** @typedef {import('./types.js').FunctionDoc} FunctionDoc */
|
|
7
|
+
/** @typedef {import('./types.js').ReferenceDoc} ReferenceDoc */
|
|
8
|
+
/** @typedef {import('./types.js').TemplateDoc} TemplateDoc */
|
|
9
|
+
/** @typedef {import('./types.js').SchemaDoc} SchemaDoc */
|
|
10
|
+
/** @typedef {import('./types.js').CommandDoc} CommandDoc */
|
|
11
|
+
/** @typedef {import('./types.js').EnumDoc} EnumDoc */
|
|
12
|
+
/** @typedef {import('./types.js').NamespaceDoc} NamespaceDoc */
|
|
13
|
+
/** @typedef {import('./types.js').ThemeDoc} ThemeDoc */
|
|
12
14
|
/**
|
|
13
15
|
* Validate an unknown loaded doc value into its typed shape, or throw.
|
|
14
16
|
* Dispatches on the stamped `type`; unstamped docs fall back to
|
|
@@ -17,14 +19,16 @@
|
|
|
17
19
|
*
|
|
18
20
|
* @param {unknown} input
|
|
19
21
|
* @param {string} [label]
|
|
20
|
-
* @returns {ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc}
|
|
22
|
+
* @returns {ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc | NamespaceDoc | ThemeDoc}
|
|
21
23
|
*/
|
|
22
|
-
export function parseDoc(input: unknown, label?: string): ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc;
|
|
23
|
-
export type ComponentDoc = import("./types").ComponentDoc;
|
|
24
|
-
export type HookDoc = import("./types").HookDoc;
|
|
25
|
-
export type FunctionDoc = import("./types").FunctionDoc;
|
|
26
|
-
export type ReferenceDoc = import("./types").ReferenceDoc;
|
|
27
|
-
export type TemplateDoc = import("./types").TemplateDoc;
|
|
28
|
-
export type SchemaDoc = import("./types").SchemaDoc;
|
|
29
|
-
export type CommandDoc = import("./types").CommandDoc;
|
|
30
|
-
export type EnumDoc = import("./types").EnumDoc;
|
|
24
|
+
export function parseDoc(input: unknown, label?: string): ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc | NamespaceDoc | ThemeDoc;
|
|
25
|
+
export type ComponentDoc = import("./types.js").ComponentDoc;
|
|
26
|
+
export type HookDoc = import("./types.js").HookDoc;
|
|
27
|
+
export type FunctionDoc = import("./types.js").FunctionDoc;
|
|
28
|
+
export type ReferenceDoc = import("./types.js").ReferenceDoc;
|
|
29
|
+
export type TemplateDoc = import("./types.js").TemplateDoc;
|
|
30
|
+
export type SchemaDoc = import("./types.js").SchemaDoc;
|
|
31
|
+
export type CommandDoc = import("./types.js").CommandDoc;
|
|
32
|
+
export type EnumDoc = import("./types.js").EnumDoc;
|
|
33
|
+
export type NamespaceDoc = import("./types.js").NamespaceDoc;
|
|
34
|
+
export type ThemeDoc = import("./types.js").ThemeDoc;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* @file The doc load boundary. `parseDoc` validates an unknown loaded doc value
|
|
5
5
|
* into its typed shape (or throws a readable error), dispatching on the stamped
|
|
6
6
|
* `type` and falling back to legacy shape-sniffing for unstamped docs. Its
|
|
7
|
-
* acceptance set
|
|
8
|
-
*
|
|
7
|
+
* acceptance set preserves the old permissive `ComponentDocSchema` while new
|
|
8
|
+
* stamped kinds, including `theme`, use their sealed parser.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import {parseComponent} from './component/parse.mjs';
|
|
@@ -15,16 +15,20 @@ import {parseTemplate} from './template/parse.mjs';
|
|
|
15
15
|
import {parseSchema} from './schema/parse.mjs';
|
|
16
16
|
import {parseCommand} from './command/parse.mjs';
|
|
17
17
|
import {parseEnum} from './enum/parse.mjs';
|
|
18
|
+
import {parseNamespace} from './namespace/parse.mjs';
|
|
19
|
+
import {parseTheme} from './theme/parse.mjs';
|
|
18
20
|
import {parseLegacyDoc} from './legacy.mjs';
|
|
19
21
|
|
|
20
|
-
/** @typedef {import('./types').ComponentDoc} ComponentDoc */
|
|
21
|
-
/** @typedef {import('./types').HookDoc} HookDoc */
|
|
22
|
-
/** @typedef {import('./types').FunctionDoc} FunctionDoc */
|
|
23
|
-
/** @typedef {import('./types').ReferenceDoc} ReferenceDoc */
|
|
24
|
-
/** @typedef {import('./types').TemplateDoc} TemplateDoc */
|
|
25
|
-
/** @typedef {import('./types').SchemaDoc} SchemaDoc */
|
|
26
|
-
/** @typedef {import('./types').CommandDoc} CommandDoc */
|
|
27
|
-
/** @typedef {import('./types').EnumDoc} EnumDoc */
|
|
22
|
+
/** @typedef {import('./types.js').ComponentDoc} ComponentDoc */
|
|
23
|
+
/** @typedef {import('./types.js').HookDoc} HookDoc */
|
|
24
|
+
/** @typedef {import('./types.js').FunctionDoc} FunctionDoc */
|
|
25
|
+
/** @typedef {import('./types.js').ReferenceDoc} ReferenceDoc */
|
|
26
|
+
/** @typedef {import('./types.js').TemplateDoc} TemplateDoc */
|
|
27
|
+
/** @typedef {import('./types.js').SchemaDoc} SchemaDoc */
|
|
28
|
+
/** @typedef {import('./types.js').CommandDoc} CommandDoc */
|
|
29
|
+
/** @typedef {import('./types.js').EnumDoc} EnumDoc */
|
|
30
|
+
/** @typedef {import('./types.js').NamespaceDoc} NamespaceDoc */
|
|
31
|
+
/** @typedef {import('./types.js').ThemeDoc} ThemeDoc */
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
34
|
* Validate an unknown loaded doc value into its typed shape, or throw.
|
|
@@ -34,7 +38,7 @@ import {parseLegacyDoc} from './legacy.mjs';
|
|
|
34
38
|
*
|
|
35
39
|
* @param {unknown} input
|
|
36
40
|
* @param {string} [label]
|
|
37
|
-
* @returns {ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc}
|
|
41
|
+
* @returns {ComponentDoc | HookDoc | FunctionDoc | ReferenceDoc | TemplateDoc | SchemaDoc | CommandDoc | EnumDoc | NamespaceDoc | ThemeDoc}
|
|
38
42
|
*/
|
|
39
43
|
export function parseDoc(input, label = 'doc') {
|
|
40
44
|
const type =
|
|
@@ -58,7 +62,14 @@ export function parseDoc(input, label = 'doc') {
|
|
|
58
62
|
return parseCommand(input, label);
|
|
59
63
|
case 'enum':
|
|
60
64
|
return parseEnum(input, label);
|
|
65
|
+
case 'namespace':
|
|
66
|
+
return parseNamespace(input, label);
|
|
67
|
+
case 'theme':
|
|
68
|
+
return parseTheme(input, label);
|
|
69
|
+
case undefined:
|
|
61
70
|
default:
|
|
71
|
+
// 0.6.x shape-sniffed unknown stamps. Keep accepting them through the
|
|
72
|
+
// patch compatibility window; canonical writers emit a known stamp.
|
|
62
73
|
return parseLegacyDoc(input, label);
|
|
63
74
|
}
|
|
64
75
|
}
|
|
@@ -25,8 +25,18 @@ const goodComponent = {
|
|
|
25
25
|
displayName: 'Widget',
|
|
26
26
|
description: 'A small widget.',
|
|
27
27
|
props: [
|
|
28
|
-
{
|
|
29
|
-
|
|
28
|
+
{
|
|
29
|
+
name: 'label',
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Visible label.',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'size',
|
|
36
|
+
type: "'sm' | 'md'",
|
|
37
|
+
description: 'Control size.',
|
|
38
|
+
default: "'md'",
|
|
39
|
+
},
|
|
30
40
|
],
|
|
31
41
|
};
|
|
32
42
|
|
|
@@ -35,7 +45,9 @@ const goodFunction = {
|
|
|
35
45
|
name: 'useThing',
|
|
36
46
|
displayName: 'useThing',
|
|
37
47
|
description: 'A thing hook.',
|
|
38
|
-
params: [
|
|
48
|
+
params: [
|
|
49
|
+
{name: 'input', type: 'string', description: 'The input.', required: true},
|
|
50
|
+
],
|
|
39
51
|
returns: [{name: 'value', type: 'string', description: 'The result.'}],
|
|
40
52
|
};
|
|
41
53
|
|
|
@@ -43,7 +55,11 @@ const goodGeneric = {
|
|
|
43
55
|
type: 'generic',
|
|
44
56
|
name: 'Theming',
|
|
45
57
|
displayName: 'Theming',
|
|
58
|
+
title: 'Theming',
|
|
46
59
|
description: 'How theming works.',
|
|
60
|
+
sections: [
|
|
61
|
+
{title: 'Overview', content: [{type: 'prose', text: 'Use a theme.'}]},
|
|
62
|
+
],
|
|
47
63
|
};
|
|
48
64
|
|
|
49
65
|
/** Run parseDoc and return the thrown message (asserting it throws). */
|
|
@@ -101,6 +117,34 @@ describe('per-kind parsers (stamped format)', () => {
|
|
|
101
117
|
expect(() => parseReference(goodGeneric)).not.toThrow();
|
|
102
118
|
});
|
|
103
119
|
|
|
120
|
+
it('normalizes a migrated minimal generic doc to the public shape', () => {
|
|
121
|
+
expect(
|
|
122
|
+
parseReference({
|
|
123
|
+
type: 'generic',
|
|
124
|
+
name: 'Theming',
|
|
125
|
+
description: 'How theming works.',
|
|
126
|
+
}),
|
|
127
|
+
).toMatchObject({
|
|
128
|
+
type: 'generic',
|
|
129
|
+
name: 'Theming',
|
|
130
|
+
title: 'Theming',
|
|
131
|
+
description: 'How theming works.',
|
|
132
|
+
sections: [],
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('rejects duplicate stable section IDs', () => {
|
|
137
|
+
expect(() =>
|
|
138
|
+
parseReference({
|
|
139
|
+
...goodGeneric,
|
|
140
|
+
sections: [
|
|
141
|
+
{id: 'start', title: 'Start', content: []},
|
|
142
|
+
{id: 'start', title: 'Renamed start', content: []},
|
|
143
|
+
],
|
|
144
|
+
}),
|
|
145
|
+
).toThrow(/sections\.1\.id.*duplicate section id/u);
|
|
146
|
+
});
|
|
147
|
+
|
|
104
148
|
it('keeps nested rich blobs loose (usage/theming/playground passthrough)', () => {
|
|
105
149
|
expect(() =>
|
|
106
150
|
parseComponent({
|
|
@@ -123,6 +167,16 @@ describe('per-kind parsers (stamped format)', () => {
|
|
|
123
167
|
expect(parsed.parent).toBe('WidgetGroup');
|
|
124
168
|
expect(parsed.relatedDocs).toEqual(['Gauge', 'useThing']);
|
|
125
169
|
});
|
|
170
|
+
|
|
171
|
+
it('validates graph metadata on unstamped legacy docs', () => {
|
|
172
|
+
expect(() =>
|
|
173
|
+
parseDoc({name: 'Widget', props: [], placement: {parent: ''}}),
|
|
174
|
+
).toThrow(/placement\.parent/u);
|
|
175
|
+
expect(() => parseDoc({name: 'Widget', props: [], aliases: [1]})).toThrow();
|
|
176
|
+
expect(() =>
|
|
177
|
+
parseDoc({name: 'Widget', props: [], audience: 'secret'}),
|
|
178
|
+
).toThrow();
|
|
179
|
+
});
|
|
126
180
|
});
|
|
127
181
|
|
|
128
182
|
describe('parseDoc (load boundary, both formats)', () => {
|
|
@@ -175,6 +229,24 @@ describe('parseDoc (load boundary, both formats)', () => {
|
|
|
175
229
|
expect(() => parseDoc(hook)).not.toThrow();
|
|
176
230
|
});
|
|
177
231
|
|
|
232
|
+
it('accepts and validates the OLD loose reference-topic shape', () => {
|
|
233
|
+
const reference = {
|
|
234
|
+
name: 'theming',
|
|
235
|
+
title: 'Theming',
|
|
236
|
+
description: 'How theming works.',
|
|
237
|
+
sections: [
|
|
238
|
+
{id: 'start', title: 'Start', content: [{type: 'prose', text: 'Go.'}]},
|
|
239
|
+
],
|
|
240
|
+
};
|
|
241
|
+
expect(parseDoc(reference)).toEqual(reference);
|
|
242
|
+
expect(() =>
|
|
243
|
+
parseDoc({
|
|
244
|
+
...reference,
|
|
245
|
+
sections: [{title: 'Start', content: [{type: 'prose'}]}],
|
|
246
|
+
}),
|
|
247
|
+
).toThrow();
|
|
248
|
+
});
|
|
249
|
+
|
|
178
250
|
it('accepts BOTH parent and legacy subComponentOf', () => {
|
|
179
251
|
const withParent = {name: 'A', parent: 'B', props: []};
|
|
180
252
|
const withSubComponentOf = {
|
|
@@ -289,7 +361,9 @@ describe('loadComponentDoc (end-to-end load boundary)', () => {
|
|
|
289
361
|
" type: 'generic',",
|
|
290
362
|
" name: 'Theming',",
|
|
291
363
|
" displayName: 'Theming',",
|
|
364
|
+
" title: 'Theming',",
|
|
292
365
|
" description: 'How theming works.',",
|
|
366
|
+
" sections: [{title: 'Overview', content: [{type: 'prose', text: 'Use a theme.'}]}],",
|
|
293
367
|
'};',
|
|
294
368
|
].join('\n'),
|
|
295
369
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
-
/** @typedef {import('../types').ReferenceDoc} ReferenceDoc */
|
|
4
|
+
/** @typedef {import('../types.js').ReferenceDoc} ReferenceDoc */
|
|
5
5
|
/**
|
|
6
6
|
* Validate an unknown value as a stamped reference/topic doc, or throw.
|
|
7
7
|
*
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
* @returns {ReferenceDoc}
|
|
11
11
|
*/
|
|
12
12
|
export function parseReference(input: unknown, label?: string): ReferenceDoc;
|
|
13
|
-
export type ReferenceDoc = import("../types").ReferenceDoc;
|
|
13
|
+
export type ReferenceDoc = import("../types.js").ReferenceDoc;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import {GenericDocKindSchema} from '../_schema.mjs';
|
|
10
10
|
import {formatZodError} from '../../_shared/errors.mjs';
|
|
11
11
|
|
|
12
|
-
/** @typedef {import('../types').ReferenceDoc} ReferenceDoc */
|
|
12
|
+
/** @typedef {import('../types.js').ReferenceDoc} ReferenceDoc */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Validate an unknown value as a stamped reference/topic doc, or throw.
|
|
@@ -23,8 +23,11 @@ export function parseReference(input, label = 'reference doc') {
|
|
|
23
23
|
if (!result.success) {
|
|
24
24
|
throw new Error(formatZodError(label, result.error));
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const doc = result.data;
|
|
27
|
+
return /** @type {ReferenceDoc} */ ({
|
|
28
|
+
...doc,
|
|
29
|
+
title: doc.title ?? doc.displayName ?? doc.name,
|
|
30
|
+
description: doc.description ?? '',
|
|
31
|
+
sections: doc.sections ?? [],
|
|
32
|
+
});
|
|
30
33
|
}
|
|
@@ -51,18 +51,25 @@ export const doc = {
|
|
|
51
51
|
type: 'string',
|
|
52
52
|
description: "Navigation category: 'guide' or 'foundations'.",
|
|
53
53
|
},
|
|
54
|
+
{
|
|
55
|
+
name: 'keywords',
|
|
56
|
+
type: 'string[]',
|
|
57
|
+
description:
|
|
58
|
+
"Words a reader may search for that the title and sections do not use: a synonym, a task, or another library's name for the same thing. `astryx search` matches each as a keyword of the whole topic, so an exact one ranks the topic like its own title does.",
|
|
59
|
+
example: "['dark mode', 'color scheme']",
|
|
60
|
+
},
|
|
54
61
|
{
|
|
55
62
|
name: 'replaces',
|
|
56
63
|
type: 'string',
|
|
57
64
|
description:
|
|
58
|
-
|
|
65
|
+
'Name of an existing topic this doc takes the place of. Authored by an integration that serves its own guide instead of the built-in one: on a doc of the same name it swaps the content, and on a doc of another name it also leaves the old name as an alias so `astryx docs <old>` still resolves. Exclusive with `extends`.',
|
|
59
66
|
example: "'getting-started'",
|
|
60
67
|
},
|
|
61
68
|
{
|
|
62
69
|
name: 'extends',
|
|
63
70
|
type: 'string',
|
|
64
71
|
description:
|
|
65
|
-
|
|
72
|
+
"Name of an existing topic this doc merges onto, section by section: a section whose title matches one in the base replaces it, a section the base does not have is appended. The topic keeps the base's title and description. For correcting or adding to a topic rather than owning it. Exclusive with `replaces`.",
|
|
66
73
|
example: "'theme'",
|
|
67
74
|
},
|
|
68
75
|
{
|
|
@@ -72,6 +79,12 @@ export const doc = {
|
|
|
72
79
|
'Ordered sections that make up the doc. Each becomes an h2 in full output and can be retrieved via `astryx docs <topic> <section>`.',
|
|
73
80
|
required: true,
|
|
74
81
|
fields: [
|
|
82
|
+
{
|
|
83
|
+
name: 'sections[].id',
|
|
84
|
+
type: 'string',
|
|
85
|
+
description:
|
|
86
|
+
'Stable section anchor. New docs should set this instead of relying on a mutable title.',
|
|
87
|
+
},
|
|
75
88
|
{
|
|
76
89
|
name: 'sections[].title',
|
|
77
90
|
type: 'string',
|
|
@@ -87,9 +100,9 @@ export const doc = {
|
|
|
87
100
|
},
|
|
88
101
|
{
|
|
89
102
|
name: 'sections[].content',
|
|
90
|
-
type: 'ReferenceContentBlock[]',
|
|
103
|
+
type: '(ReferenceContentBlock | ReferenceDocBlock)[]',
|
|
91
104
|
description:
|
|
92
|
-
|
|
105
|
+
"Ordered content blocks: prose, heading, code, table, list, token-ref, and reference. A `reference` block (`{type: 'reference', target, projection?, presentation?}`) includes another doc from its canonical source instead of a copy: a schema, command, function, or enum doc as `astryx docs` prints it, then the command that opens it. `projection.fields` keeps only those fields of a schema; `presentation` is `full` (the default), `compact` (no code blocks), or `summary` (only the doc's title, summary, and command). Any other doc shows as a summary. Graph-only workflow and collection blocks are available through GraphContentBlock on NamespaceDoc, without widening the stable ReferenceContentBlock union. Inside text, `{@link <target>}` links another doc by identity (`[<provider>:]<kind>:<name>`): the CLI prints the command that opens it, and `astryx doctor` warns on one that names no doc.",
|
|
93
106
|
required: true,
|
|
94
107
|
},
|
|
95
108
|
{
|
|
@@ -134,7 +147,31 @@ export const docs = {
|
|
|
134
147
|
notes: [
|
|
135
148
|
{
|
|
136
149
|
type: 'prose',
|
|
137
|
-
text: '
|
|
150
|
+
text: 'A stamped generic doc without `title`, `description` or `sections` still loads, as older codemod output does; its title falls back to `displayName` or `name`. Without a description and sections it is not a usable topic, and `astryx doctor` reports it.',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'prose',
|
|
154
|
+
text: 'Each `sections[].content` is an ordered array of ReferenceContentBlock, the stable discriminated union of prose, heading, code, table, list, and token-ref, plus the reference block (ReferenceDocBlock). A read inlines a reference block the way it inlines a token-ref, so `astryx docs`, in text and in `--json`, returns only the stable block kinds. Docs-graph-only workflow and collection blocks are exported separately as GraphContentBlock and accepted by NamespaceDoc. choice, callout, and checklist remain invalid. ReferenceContentBlock is also reused by the `notes` field on SchemaDoc and CommandDoc. Inside text, `{@link <target>}` links another doc by identity (`[<provider>:]<kind>:<name>`): the CLI prints the command that opens it, and `astryx doctor` warns on one that names no doc.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'prose',
|
|
158
|
+
text: "A reference block includes content, where a link only points at it: `astryx doctor integration docs` fails when its target names no doc, when `projection.fields` names a field the schema does not have, or when the doc cannot take the projection or presentation it sets, and a read marks the missing content. A target without a provider names a doc of the package that wrote it, so an integration names the CLI's docs with the CLI's provider, as in `@astryxdesign/cli:schema:integration`.",
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'code',
|
|
162
|
+
lang: 'js',
|
|
163
|
+
label: 'A section that includes two fields of the integration manifest',
|
|
164
|
+
code: `{
|
|
165
|
+
title: 'Point the manifest at your folders',
|
|
166
|
+
content: [
|
|
167
|
+
{type: 'prose', text: 'Add these fields to astryx.integration.mjs.'},
|
|
168
|
+
{
|
|
169
|
+
type: 'reference',
|
|
170
|
+
target: '@astryxdesign/cli:schema:integration',
|
|
171
|
+
projection: {fields: ['components', 'docs']},
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
}`,
|
|
138
175
|
},
|
|
139
176
|
{
|
|
140
177
|
type: 'code',
|
|
@@ -146,7 +183,19 @@ export const docs = {
|
|
|
146
183
|
| { type: 'code'; lang: string; code: string; label?: string }
|
|
147
184
|
| { type: 'table'; headers: string[]; rows: string[][] }
|
|
148
185
|
| { type: 'list'; style: 'ordered' | 'unordered' | 'do' | 'dont'; items: string[] }
|
|
149
|
-
| { type: 'token-ref'; topic: string; section: string }
|
|
186
|
+
| { type: 'token-ref'; topic: string; section: string };
|
|
187
|
+
|
|
188
|
+
type ReferenceDocBlock = {
|
|
189
|
+
type: 'reference';
|
|
190
|
+
target: string;
|
|
191
|
+
projection?: { fields?: string[]; sections?: string[] };
|
|
192
|
+
presentation?: 'summary' | 'compact' | 'full';
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
type GraphContentBlock =
|
|
196
|
+
| { type: 'workflow'; title?: string; steps: WorkflowStep[] }
|
|
197
|
+
| { type: 'collection'; source: {slot: string}; presentation?: 'list' | 'cards' | 'compact'; whenEmpty?: 'show' | 'omit' }
|
|
198
|
+
| ReferenceDocBlock;`,
|
|
150
199
|
},
|
|
151
200
|
{
|
|
152
201
|
type: 'prose',
|
|
@@ -4,10 +4,66 @@
|
|
|
4
4
|
* @file Reference/topic doc types.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import type {AuthoredDocGraphFields} from '../base/type.js';
|
|
8
|
+
|
|
9
|
+
/** One step in a renderer-neutral workflow. */
|
|
10
|
+
export interface WorkflowStep {
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
/** Stable doc references that supply detail for this step. */
|
|
14
|
+
references?: string[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Ordered procedural guidance. */
|
|
18
|
+
export interface WorkflowDocBlock {
|
|
19
|
+
type: 'workflow';
|
|
20
|
+
title?: string;
|
|
21
|
+
steps: WorkflowStep[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** A generated view over docs placed in one namespace slot. */
|
|
25
|
+
export interface CollectionDocBlock {
|
|
26
|
+
type: 'collection';
|
|
27
|
+
title?: string;
|
|
28
|
+
source: {slot: string};
|
|
29
|
+
presentation?: 'list' | 'cards' | 'compact';
|
|
30
|
+
whenEmpty?: 'show' | 'omit';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A bounded projection of one canonical doc. In a namespace doc's `blocks` it
|
|
35
|
+
* is layout the docs tree renders later. In a topic section, a read includes
|
|
36
|
+
* the doc it names in place of the block: a schema, command, function, or
|
|
37
|
+
* enum doc as `astryx docs` prints it (`projection.fields` keeps only those
|
|
38
|
+
* fields of a schema), then the command that opens that doc. Any other doc
|
|
39
|
+
* shows its title and summary.
|
|
40
|
+
*/
|
|
41
|
+
export interface ReferenceDocBlock {
|
|
42
|
+
type: 'reference';
|
|
43
|
+
/** The doc it names, by identity: `[<provider>:]<kind>:<name>`. */
|
|
44
|
+
target: string;
|
|
45
|
+
projection?: {
|
|
46
|
+
fields?: string[];
|
|
47
|
+
sections?: string[];
|
|
48
|
+
};
|
|
49
|
+
/** `summary`: only the doc's title, summary, and the command that opens it.
|
|
50
|
+
* `compact`: the included doc without its code blocks. `full`, the default:
|
|
51
|
+
* the included doc. */
|
|
52
|
+
presentation?: 'summary' | 'compact' | 'full';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Graph-only content blocks, for a namespace doc's `blocks`. These are
|
|
56
|
+
* additive and do not widen the stable {@link ReferenceContentBlock} union
|
|
57
|
+
* consumed by existing exhaustive renderers. A topic section accepts the
|
|
58
|
+
* `reference` block too, and a read inlines it as stable blocks. */
|
|
59
|
+
export type GraphContentBlock =
|
|
60
|
+
WorkflowDocBlock | CollectionDocBlock | ReferenceDocBlock;
|
|
61
|
+
|
|
7
62
|
/**
|
|
8
63
|
* A content block within a reference doc section.
|
|
9
|
-
* Ordered
|
|
10
|
-
*
|
|
64
|
+
* Ordered arrays of these blocks form renderer-neutral documentation content.
|
|
65
|
+
* A new semantic kind must ship with every renderer or fail visibly at a legacy
|
|
66
|
+
* reader boundary until that renderer is available.
|
|
11
67
|
*
|
|
12
68
|
* @example
|
|
13
69
|
* ```
|
|
@@ -17,9 +73,12 @@
|
|
|
17
73
|
* { type: 'table', headers: ['Token', 'Value'], rows: [['--spacing-4', '16px']] }
|
|
18
74
|
* { type: 'list', style: 'do', items: ['Use semantic tokens'] }
|
|
19
75
|
* { type: 'token-ref', topic: 'tokens', section: 'Color Tokens' }
|
|
76
|
+
* { type: 'prose', text: 'Check it with {@link command:doctor}.' }
|
|
20
77
|
* ```
|
|
21
78
|
*/
|
|
22
79
|
export type ReferenceContentBlock =
|
|
80
|
+
/** Text. `{@link [<provider>:]<kind>:<name>}` inside it links another doc
|
|
81
|
+
* by identity; `astryx docs` prints the command that opens that doc. */
|
|
23
82
|
| {type: 'prose'; text: string}
|
|
24
83
|
| {type: 'heading'; level: 3 | 4 | 5 | 6; text: string}
|
|
25
84
|
| {type: 'code'; lang: string; code: string; label?: string}
|
|
@@ -49,12 +108,12 @@ export type ReferenceContentBlock =
|
|
|
49
108
|
* they aren't tied to a specific component — just drop a .doc.mjs file
|
|
50
109
|
* in the docs/ directory and it shows up in `astryx docs`.
|
|
51
110
|
*
|
|
52
|
-
* Every reference .doc.mjs
|
|
111
|
+
* Every new reference .doc.mjs default-exports a stamped object:
|
|
53
112
|
*
|
|
54
113
|
* /** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} *\/
|
|
55
|
-
* export
|
|
114
|
+
* export default { type: 'generic', ... };
|
|
56
115
|
*/
|
|
57
|
-
export interface ReferenceDoc {
|
|
116
|
+
export interface ReferenceDoc extends AuthoredDocGraphFields {
|
|
58
117
|
/** Doc-kind discriminant for the stamped default-export format
|
|
59
118
|
* (`export default { type: 'generic', ... }`). Optional: legacy
|
|
60
119
|
* `export const docs = {...}` docs omit it. The value stays `'generic'`
|
|
@@ -68,6 +127,11 @@ export interface ReferenceDoc {
|
|
|
68
127
|
description: string;
|
|
69
128
|
/** Navigation category: 'guide' or 'foundations'. */
|
|
70
129
|
category?: string;
|
|
130
|
+
/** Words a reader may search for that the title and sections do not use:
|
|
131
|
+
* a synonym, a task ("dark mode"), or another library's name for the same
|
|
132
|
+
* thing. `astryx search` matches each as a keyword of the whole topic, so
|
|
133
|
+
* an exact one ranks the topic like its own title does. */
|
|
134
|
+
keywords?: string[];
|
|
71
135
|
/** Name of an existing topic this doc takes the place of. Authored by an
|
|
72
136
|
* integration whose guide should be served instead of the built-in one —
|
|
73
137
|
* `replaces: 'getting-started'` on a doc named `getting-started` swaps the
|
|
@@ -95,13 +159,17 @@ export interface ReferenceDoc {
|
|
|
95
159
|
* and can be individually retrieved via `astryx docs <topic> <section>`.
|
|
96
160
|
*/
|
|
97
161
|
export interface ReferenceSection {
|
|
162
|
+
/** Stable section anchor. New docs should set this instead of relying on title. */
|
|
163
|
+
id?: string;
|
|
98
164
|
/** Section title, e.g. "Spacing Tokens", "Light/Dark Mode" */
|
|
99
165
|
title: string;
|
|
100
166
|
/** Navigation category ('guide' | 'foundations'). Mirrors the parent doc's
|
|
101
167
|
* category so sections can be grouped independently in the docsite nav. */
|
|
102
168
|
category?: string;
|
|
103
|
-
/** Ordered content blocks. Mix prose, code, tables, and lists freely.
|
|
104
|
-
|
|
169
|
+
/** Ordered content blocks. Mix prose, code, tables, and lists freely. A
|
|
170
|
+
* `reference` block includes another doc from its canonical source, so a
|
|
171
|
+
* guide never copies a schema's fields or a command's options. */
|
|
172
|
+
content: (ReferenceContentBlock | ReferenceDocBlock)[];
|
|
105
173
|
/** Preview type for token tables in this section. When set, the docsite
|
|
106
174
|
* renders a visual preview column using the token's computed CSS value
|
|
107
175
|
* from the current theme. Omit for non-token sections. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
-
/** @typedef {import('../types').SchemaDoc} SchemaDoc */
|
|
4
|
+
/** @typedef {import('../types.js').SchemaDoc} SchemaDoc */
|
|
5
5
|
/**
|
|
6
6
|
* Validate an unknown value as a stamped schema doc, or throw.
|
|
7
7
|
*
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
* @returns {SchemaDoc}
|
|
11
11
|
*/
|
|
12
12
|
export function parseSchema(input: unknown, label?: string): SchemaDoc;
|
|
13
|
-
export type SchemaDoc = import("../types").SchemaDoc;
|
|
13
|
+
export type SchemaDoc = import("../types.js").SchemaDoc;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import {SchemaDocKindSchema} from '../_schema.mjs';
|
|
9
9
|
import {formatZodError} from '../../_shared/errors.mjs';
|
|
10
10
|
|
|
11
|
-
/** @typedef {import('../types').SchemaDoc} SchemaDoc */
|
|
11
|
+
/** @typedef {import('../types.js').SchemaDoc} SchemaDoc */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Validate an unknown value as a stamped schema doc, or throw.
|
|
@@ -49,7 +49,7 @@ export const doc = {
|
|
|
49
49
|
name: 'namespace',
|
|
50
50
|
type: 'string',
|
|
51
51
|
description:
|
|
52
|
-
"
|
|
52
|
+
"The group that reads this doc: 'authoring' for a file an author writes (a section of {@link generic:authoring}), or 'cli/api' for a shape the CLI returns (the docs tree adopts it by kind, as the leaf `cli/api/schemas/<name>`). Every schema doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
name: 'aliases',
|
|
@@ -162,7 +162,7 @@ export const doc = {
|
|
|
162
162
|
type: '{ dir: string }',
|
|
163
163
|
description: 'Where component sources live.',
|
|
164
164
|
fields: [
|
|
165
|
-
{name: 'components.dir', type: 'string', description: 'Glob root for
|
|
165
|
+
{name: 'components.dir', type: 'string', description: 'Glob root for Acme*.tsx files.', required: true},
|
|
166
166
|
],
|
|
167
167
|
},
|
|
168
168
|
],
|