@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
package/api/docs/docs.mjs
CHANGED
|
@@ -3,24 +3,35 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* @file Programmatic API for the docs command.
|
|
5
5
|
*
|
|
6
|
-
* Dispatcher + barrel. `docs()` routes by argument shape into one of
|
|
6
|
+
* Dispatcher + barrel. `docs()` routes by argument shape into one of five
|
|
7
7
|
* leaves, each projecting into a single { type, data } envelope:
|
|
8
8
|
*
|
|
9
|
-
* docs()
|
|
10
|
-
* docs(topic)
|
|
11
|
-
* docs(topic,
|
|
9
|
+
* docs() -> list -> docs.list
|
|
10
|
+
* docs(topic) -> detail -> docs.detail
|
|
11
|
+
* docs(topic, undefined, {index: true}) -> index -> docs.index
|
|
12
|
+
* docs(topic, section) -> section -> docs.detail.section
|
|
13
|
+
* docs(route) -> node -> docs.node
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* A topic read returns the whole doc, as it always has; `index` returns its
|
|
16
|
+
* sections, so a reader can open one by its key (spec:AST-047). The CLI's text
|
|
17
|
+
* view lists the sections by default. A route names a node
|
|
18
|
+
* of the docs tree (spec:AST-046): a namespace lists its children, a guide the
|
|
19
|
+
* tree places reads like any topic, and a typed doc prints its content. The
|
|
20
|
+
* leaves
|
|
21
|
+
* live in list/, index/, detail/, detail/section/, and node/; the discovery,
|
|
22
|
+
* overlay loading, and resolution they share sit in _adapter.mjs.
|
|
17
23
|
*/
|
|
18
24
|
|
|
19
25
|
import {list} from './list/list.mjs';
|
|
26
|
+
import {index} from './index/index.mjs';
|
|
20
27
|
import {detail} from './detail/detail.mjs';
|
|
21
28
|
import {section as sectionLeaf} from './detail/section/section.mjs';
|
|
29
|
+
import {node as nodeLeaf, nodeView} from './node/node.mjs';
|
|
30
|
+
import {resolveDocsArgument} from './_adapter.mjs';
|
|
31
|
+
import {AstryxError} from '../error.mjs';
|
|
32
|
+
import {ERROR_CODES} from '../../foundation/response/error-codes.mjs';
|
|
22
33
|
|
|
23
|
-
export {list, detail, sectionLeaf as section};
|
|
34
|
+
export {list, index, detail, sectionLeaf as section, nodeLeaf as node};
|
|
24
35
|
|
|
25
36
|
/**
|
|
26
37
|
* @param {string} [topic]
|
|
@@ -29,15 +40,47 @@ export {list, detail, sectionLeaf as section};
|
|
|
29
40
|
* @param {string} [options.lang]
|
|
30
41
|
* @param {boolean} [options.zh]
|
|
31
42
|
* @param {boolean} [options.dense]
|
|
43
|
+
* @param {boolean} [options.index] return the topic's section index instead of
|
|
44
|
+
* the whole doc
|
|
32
45
|
* @param {string} [options.cwd]
|
|
33
46
|
* @returns {Promise<
|
|
34
47
|
* import('./docs.type.mjs').DocsListResponse |
|
|
48
|
+
* import('./docs.type.mjs').DocsIndexResponse |
|
|
35
49
|
* import('./docs.type.mjs').DocsDetailResponse |
|
|
36
|
-
* import('./docs.type.mjs').DocsDetailSectionResponse
|
|
50
|
+
* import('./docs.type.mjs').DocsDetailSectionResponse |
|
|
51
|
+
* import('./docs.type.mjs').DocsNodeResponse
|
|
37
52
|
* >}
|
|
38
53
|
*/
|
|
39
54
|
export async function docs(topic, section, options = {}) {
|
|
40
55
|
if (!topic) return list(options);
|
|
56
|
+
const found = await resolveDocsArgument(topic, options);
|
|
57
|
+
if (found.kind === 'node') {
|
|
58
|
+
// A namespace or a typed doc has no sections: it is one read. `--index`
|
|
59
|
+
// asks for what the node read already is.
|
|
60
|
+
if (section) {
|
|
61
|
+
throw new AstryxError(
|
|
62
|
+
`"${found.node.route}" has no sections. ${
|
|
63
|
+
found.node.kind === 'namespace'
|
|
64
|
+
? 'Open one of its children instead.'
|
|
65
|
+
: `Read it whole: astryx docs ${found.node.route}.`
|
|
66
|
+
}`,
|
|
67
|
+
found.node.kind === 'namespace'
|
|
68
|
+
? found.node.slots.flatMap(slot =>
|
|
69
|
+
slot.children.map(route => ({
|
|
70
|
+
name: route,
|
|
71
|
+
reason: found.tree.get(route)?.summary ?? '',
|
|
72
|
+
})),
|
|
73
|
+
)
|
|
74
|
+
: [{name: found.node.route, reason: found.node.summary}],
|
|
75
|
+
ERROR_CODES.ERR_UNKNOWN_SECTION,
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
type: 'docs.node',
|
|
80
|
+
data: await nodeView(found.catalog, found.tree, found.node),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
41
83
|
if (section) return sectionLeaf(topic, section, options);
|
|
84
|
+
if (options.index) return index(topic, options);
|
|
42
85
|
return detail(topic, options);
|
|
43
86
|
}
|
package/api/docs/docs.type.d.mts
CHANGED
|
@@ -2,11 +2,26 @@
|
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* astryx --json docs
|
|
6
6
|
*/
|
|
7
7
|
export type DocsListResponse = {
|
|
8
8
|
type: "docs.list";
|
|
9
|
+
/**
|
|
10
|
+
* every topic, each readable as a topic
|
|
11
|
+
*/
|
|
9
12
|
data: DocsListEntry[];
|
|
13
|
+
/**
|
|
14
|
+
* `namespaces`: the docs tree's top-level namespaces, each opened by its
|
|
15
|
+
* `topic` as a docs.node; `notLoaded`: each package whose doc files did not
|
|
16
|
+
* load, and why (its docs are withdrawn)
|
|
17
|
+
*/
|
|
18
|
+
meta?: {
|
|
19
|
+
namespaces?: DocsListNamespace[];
|
|
20
|
+
notLoaded?: Array<{
|
|
21
|
+
package: string;
|
|
22
|
+
message: string;
|
|
23
|
+
}>;
|
|
24
|
+
} | undefined;
|
|
10
25
|
};
|
|
11
26
|
export type DocsListEntry = {
|
|
12
27
|
topic: string;
|
|
@@ -23,18 +38,214 @@ export type DocsListEntry = {
|
|
|
23
38
|
replaces?: string | undefined;
|
|
24
39
|
};
|
|
25
40
|
/**
|
|
26
|
-
*
|
|
41
|
+
* A top-level namespace of the docs tree, as `astryx docs --json` lists it in
|
|
42
|
+
* `meta.namespaces`.
|
|
43
|
+
*/
|
|
44
|
+
export type DocsListNamespace = {
|
|
45
|
+
/**
|
|
46
|
+
* its route, the argument that opens it
|
|
47
|
+
*/
|
|
48
|
+
topic: string;
|
|
49
|
+
description: string;
|
|
50
|
+
/**
|
|
51
|
+
* the package that owns it
|
|
52
|
+
*/
|
|
53
|
+
package: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* astryx --json docs <topic> --index
|
|
57
|
+
*/
|
|
58
|
+
export type DocsIndexResponse = {
|
|
59
|
+
type: "docs.index";
|
|
60
|
+
data: DocsIndex;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* astryx --json docs <topic>
|
|
27
64
|
*/
|
|
28
65
|
export type DocsDetailResponse = {
|
|
29
66
|
type: "docs.detail";
|
|
30
|
-
|
|
67
|
+
/**
|
|
68
|
+
* the whole doc, and the moves from it
|
|
69
|
+
*/
|
|
70
|
+
data: DocsReadDoc & {
|
|
71
|
+
links: DocsLinks;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* A topic section as a read returns it. A read inlines each token reference
|
|
76
|
+
* and each `reference` block the author wrote, so its content holds only the
|
|
77
|
+
* stable ReferenceContentBlock kinds.
|
|
78
|
+
*/
|
|
79
|
+
export type DocsReadSection = Omit<import("@astryxdesign/cli/authoring").ReferenceSection, "content"> & {
|
|
80
|
+
content: import("@astryxdesign/cli/authoring").ReferenceContentBlock[];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* A topic as a read returns it: every section a {@link DocsReadSection}.
|
|
84
|
+
*/
|
|
85
|
+
export type DocsReadDoc = Omit<import("@astryxdesign/cli/authoring").ReferenceDoc, "sections"> & {
|
|
86
|
+
sections: DocsReadSection[];
|
|
31
87
|
};
|
|
32
88
|
/**
|
|
33
|
-
*
|
|
89
|
+
* The doc a link opens (spec:AST-047 FR9). A docs read resolves every link:
|
|
90
|
+
* an inline `{@link <target>}` reads as `link.command`, a `reference` block in
|
|
91
|
+
* a namespace doc carries `link` (null when the target names no doc), and each
|
|
92
|
+
* `workflow` step carries `links`, one per reference. A topic read inlines a
|
|
93
|
+
* section's `reference` block as the doc it includes, then a line naming where
|
|
94
|
+
* that comes from and the command that opens it.
|
|
95
|
+
*/
|
|
96
|
+
export type DocLink = import("../../foundation/doc-compiler/links.mjs").DocLink;
|
|
97
|
+
/**
|
|
98
|
+
* One move: a whole `astryx docs` command a reader can run as is.
|
|
99
|
+
*/
|
|
100
|
+
export type DocsCommand = "astryx docs" | `astryx docs ${string}`;
|
|
101
|
+
/**
|
|
102
|
+
* The moves a docs read offers (spec:AST-047). Every read but the topic list
|
|
103
|
+
* carries them.
|
|
104
|
+
*/
|
|
105
|
+
export type DocsLinks = {
|
|
106
|
+
/**
|
|
107
|
+
* opens the level the read sits in: a section's
|
|
108
|
+
* topic index, a node's parent namespace, or the topic list
|
|
109
|
+
*/
|
|
110
|
+
up: DocsCommand;
|
|
111
|
+
/**
|
|
112
|
+
* opens the item before it at its level: the
|
|
113
|
+
* previous section of its topic, or the previous node in its parent's slot
|
|
114
|
+
*/
|
|
115
|
+
previous?: DocsCommand | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* opens the item after it at its level
|
|
118
|
+
*/
|
|
119
|
+
next?: DocsCommand | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* opens each doc a typed doc names: a
|
|
122
|
+
* function's command, a command's function, and the docs it lists as
|
|
123
|
+
* related
|
|
124
|
+
*/
|
|
125
|
+
related?: DocsCommand[] | undefined;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* The section index of one topic: what the topic is, and the key each section
|
|
129
|
+
* is read by.
|
|
130
|
+
*/
|
|
131
|
+
export type DocsIndex = {
|
|
132
|
+
/**
|
|
133
|
+
* the topic
|
|
134
|
+
*/
|
|
135
|
+
name: string;
|
|
136
|
+
title: string;
|
|
137
|
+
description: string;
|
|
138
|
+
sections: DocsIndexSection[];
|
|
139
|
+
/**
|
|
140
|
+
* the moves from the index
|
|
141
|
+
*/
|
|
142
|
+
links: DocsLinks;
|
|
143
|
+
};
|
|
144
|
+
export type DocsIndexSection = {
|
|
145
|
+
/**
|
|
146
|
+
* stable key; pass it as the section argument
|
|
147
|
+
*/
|
|
148
|
+
id: string;
|
|
149
|
+
title: string;
|
|
150
|
+
/**
|
|
151
|
+
* the section's first line of text, at most 240
|
|
152
|
+
* characters
|
|
153
|
+
*/
|
|
154
|
+
summary: string;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* astryx --json docs <topic> <section>
|
|
34
158
|
*/
|
|
35
159
|
export type DocsDetailSectionResponse = {
|
|
36
160
|
type: "docs.detail.section";
|
|
37
|
-
|
|
161
|
+
/**
|
|
162
|
+
* the section, and the moves from it: up to its topic's index, and across to
|
|
163
|
+
* the sections before and after it
|
|
164
|
+
*/
|
|
165
|
+
data: DocsReadSection & {
|
|
166
|
+
links: DocsLinks;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* astryx --json docs <route>, for a namespace or a typed doc in the docs tree
|
|
171
|
+
*/
|
|
172
|
+
export type DocsNodeResponse = {
|
|
173
|
+
type: "docs.node";
|
|
174
|
+
data: DocsNode;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* One node of the docs tree.
|
|
178
|
+
*/
|
|
179
|
+
export type DocsNode = {
|
|
180
|
+
/**
|
|
181
|
+
* the doc's DocId, built from its provider's
|
|
182
|
+
* ProviderId, kind, and name (see the provider-identity authoring doc);
|
|
183
|
+
* unchanged when the node moves. Always present; null on a generated level,
|
|
184
|
+
* such as `cli/api/functions`, which has no authored doc
|
|
185
|
+
*/
|
|
186
|
+
id: string | null;
|
|
187
|
+
/**
|
|
188
|
+
* pass it to `astryx docs`
|
|
189
|
+
*/
|
|
190
|
+
route: string;
|
|
191
|
+
/**
|
|
192
|
+
* `namespace`, or the typed doc's kind: `command`,
|
|
193
|
+
* `function`, `schema`, or `enum`
|
|
194
|
+
*/
|
|
195
|
+
kind: string;
|
|
196
|
+
/**
|
|
197
|
+
* the package that owns the node
|
|
198
|
+
*/
|
|
199
|
+
package: string;
|
|
200
|
+
title: string;
|
|
201
|
+
summary: string;
|
|
202
|
+
/**
|
|
203
|
+
* the namespaces above it, top first
|
|
204
|
+
*/
|
|
205
|
+
breadcrumb: DocsNodeLink[];
|
|
206
|
+
/**
|
|
207
|
+
* a namespace's slots that hold children, in
|
|
208
|
+
* order; empty for a typed doc
|
|
209
|
+
*/
|
|
210
|
+
slots: DocsNodeSlot[];
|
|
211
|
+
/**
|
|
212
|
+
* a typed doc's content; empty for a namespace
|
|
213
|
+
*/
|
|
214
|
+
content: import("@astryxdesign/cli/authoring").ReferenceContentBlock[];
|
|
215
|
+
/**
|
|
216
|
+
* the moves from the node: up to its parent (the
|
|
217
|
+
* topic list, for a top-level namespace), and across to its neighbors in its
|
|
218
|
+
* parent's slot
|
|
219
|
+
*/
|
|
220
|
+
links: DocsLinks;
|
|
221
|
+
};
|
|
222
|
+
export type DocsNodeLink = {
|
|
223
|
+
route: string;
|
|
224
|
+
title: string;
|
|
225
|
+
};
|
|
226
|
+
export type DocsNodeSlot = {
|
|
227
|
+
/**
|
|
228
|
+
* the slot's key in its namespace
|
|
229
|
+
*/
|
|
230
|
+
name: string;
|
|
231
|
+
title: string;
|
|
232
|
+
/**
|
|
233
|
+
* in reading order
|
|
234
|
+
*/
|
|
235
|
+
children: DocsNodeChild[];
|
|
236
|
+
};
|
|
237
|
+
export type DocsNodeChild = {
|
|
238
|
+
/**
|
|
239
|
+
* pass it to `astryx docs` to go one level down
|
|
240
|
+
*/
|
|
241
|
+
route: string;
|
|
242
|
+
/**
|
|
243
|
+
* the last segment of its route
|
|
244
|
+
*/
|
|
245
|
+
name: string;
|
|
246
|
+
kind: string;
|
|
247
|
+
title: string;
|
|
248
|
+
summary: string;
|
|
38
249
|
};
|
|
39
250
|
/**
|
|
40
251
|
* Options for `docs()`.
|
|
@@ -43,6 +254,11 @@ export type DocsOptions = {
|
|
|
43
254
|
lang?: string | undefined;
|
|
44
255
|
zh?: boolean | undefined;
|
|
45
256
|
dense?: boolean | undefined;
|
|
257
|
+
/**
|
|
258
|
+
* return a topic's section index instead of its
|
|
259
|
+
* whole doc
|
|
260
|
+
*/
|
|
261
|
+
index?: boolean | undefined;
|
|
46
262
|
/**
|
|
47
263
|
* project directory whose configured integrations
|
|
48
264
|
* contribute topics; defaults to process.cwd()
|
package/api/docs/docs.type.mjs
CHANGED
|
@@ -4,19 +4,26 @@
|
|
|
4
4
|
* @file Colocated types for the `docs` command — source of truth for the docs
|
|
5
5
|
* command JSON responses. `types/docs.d.ts` re-exports these.
|
|
6
6
|
*
|
|
7
|
-
* Invocation
|
|
7
|
+
* Invocation -> type discriminator
|
|
8
8
|
* ------------------------------------------------------------
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* astryx --json docs -> docs.list
|
|
10
|
+
* astryx --json docs <topic> -> docs.detail
|
|
11
|
+
* astryx --json docs <topic> --index -> docs.index
|
|
12
|
+
* astryx --json docs <topic> <section> -> docs.detail.section
|
|
13
|
+
* astryx --json docs <route> -> docs.node (a namespace or a
|
|
14
|
+
* typed doc in the docs tree)
|
|
15
|
+
* (unknown topic/section) -> CLIError
|
|
13
16
|
*/
|
|
14
17
|
|
|
15
18
|
/**
|
|
16
|
-
*
|
|
19
|
+
* astryx --json docs
|
|
17
20
|
* @typedef {object} DocsListResponse
|
|
18
21
|
* @property {'docs.list'} type
|
|
19
|
-
* @property {DocsListEntry[]} data
|
|
22
|
+
* @property {DocsListEntry[]} data every topic, each readable as a topic
|
|
23
|
+
* @property {{namespaces?: DocsListNamespace[], notLoaded?: Array<{package: string, message: string}>}} [meta]
|
|
24
|
+
* `namespaces`: the docs tree's top-level namespaces, each opened by its
|
|
25
|
+
* `topic` as a docs.node; `notLoaded`: each package whose doc files did not
|
|
26
|
+
* load, and why (its docs are withdrawn)
|
|
20
27
|
*/
|
|
21
28
|
|
|
22
29
|
/**
|
|
@@ -30,17 +37,150 @@
|
|
|
30
37
|
*/
|
|
31
38
|
|
|
32
39
|
/**
|
|
33
|
-
*
|
|
40
|
+
* A top-level namespace of the docs tree, as `astryx docs --json` lists it in
|
|
41
|
+
* `meta.namespaces`.
|
|
42
|
+
* @typedef {object} DocsListNamespace
|
|
43
|
+
* @property {string} topic its route, the argument that opens it
|
|
44
|
+
* @property {string} description
|
|
45
|
+
* @property {string} package the package that owns it
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* astryx --json docs <topic> --index
|
|
50
|
+
* @typedef {object} DocsIndexResponse
|
|
51
|
+
* @property {'docs.index'} type
|
|
52
|
+
* @property {DocsIndex} data
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* astryx --json docs <topic>
|
|
34
57
|
* @typedef {object} DocsDetailResponse
|
|
35
58
|
* @property {'docs.detail'} type
|
|
36
|
-
* @property {
|
|
59
|
+
* @property {DocsReadDoc & {links: DocsLinks}} data
|
|
60
|
+
* the whole doc, and the moves from it
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A topic section as a read returns it. A read inlines each token reference
|
|
65
|
+
* and each `reference` block the author wrote, so its content holds only the
|
|
66
|
+
* stable ReferenceContentBlock kinds.
|
|
67
|
+
* @typedef {Omit<import('@astryxdesign/cli/authoring').ReferenceSection, 'content'>
|
|
68
|
+
* & {content: import('@astryxdesign/cli/authoring').ReferenceContentBlock[]}} DocsReadSection
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A topic as a read returns it: every section a {@link DocsReadSection}.
|
|
73
|
+
* @typedef {Omit<import('@astryxdesign/cli/authoring').ReferenceDoc, 'sections'>
|
|
74
|
+
* & {sections: DocsReadSection[]}} DocsReadDoc
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The doc a link opens (spec:AST-047 FR9). A docs read resolves every link:
|
|
79
|
+
* an inline `{@link <target>}` reads as `link.command`, a `reference` block in
|
|
80
|
+
* a namespace doc carries `link` (null when the target names no doc), and each
|
|
81
|
+
* `workflow` step carries `links`, one per reference. A topic read inlines a
|
|
82
|
+
* section's `reference` block as the doc it includes, then a line naming where
|
|
83
|
+
* that comes from and the command that opens it.
|
|
84
|
+
* @typedef {import('../../foundation/doc-compiler/links.mjs').DocLink} DocLink
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* One move: a whole `astryx docs` command a reader can run as is.
|
|
89
|
+
* @typedef {'astryx docs' | `astryx docs ${string}`} DocsCommand
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The moves a docs read offers (spec:AST-047). Every read but the topic list
|
|
94
|
+
* carries them.
|
|
95
|
+
* @typedef {object} DocsLinks
|
|
96
|
+
* @property {DocsCommand} up opens the level the read sits in: a section's
|
|
97
|
+
* topic index, a node's parent namespace, or the topic list
|
|
98
|
+
* @property {DocsCommand} [previous] opens the item before it at its level: the
|
|
99
|
+
* previous section of its topic, or the previous node in its parent's slot
|
|
100
|
+
* @property {DocsCommand} [next] opens the item after it at its level
|
|
101
|
+
* @property {DocsCommand[]} [related] opens each doc a typed doc names: a
|
|
102
|
+
* function's command, a command's function, and the docs it lists as
|
|
103
|
+
* related
|
|
37
104
|
*/
|
|
38
105
|
|
|
39
106
|
/**
|
|
40
|
-
*
|
|
107
|
+
* The section index of one topic: what the topic is, and the key each section
|
|
108
|
+
* is read by.
|
|
109
|
+
* @typedef {object} DocsIndex
|
|
110
|
+
* @property {string} name the topic
|
|
111
|
+
* @property {string} title
|
|
112
|
+
* @property {string} description
|
|
113
|
+
* @property {DocsIndexSection[]} sections
|
|
114
|
+
* @property {DocsLinks} links the moves from the index
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @typedef {object} DocsIndexSection
|
|
119
|
+
* @property {string} id stable key; pass it as the section argument
|
|
120
|
+
* @property {string} title
|
|
121
|
+
* @property {string} summary the section's first line of text, at most 240
|
|
122
|
+
* characters
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* astryx --json docs <topic> <section>
|
|
41
127
|
* @typedef {object} DocsDetailSectionResponse
|
|
42
128
|
* @property {'docs.detail.section'} type
|
|
43
|
-
* @property {
|
|
129
|
+
* @property {DocsReadSection & {links: DocsLinks}} data
|
|
130
|
+
* the section, and the moves from it: up to its topic's index, and across to
|
|
131
|
+
* the sections before and after it
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* astryx --json docs <route>, for a namespace or a typed doc in the docs tree
|
|
136
|
+
* @typedef {object} DocsNodeResponse
|
|
137
|
+
* @property {'docs.node'} type
|
|
138
|
+
* @property {DocsNode} data
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* One node of the docs tree.
|
|
143
|
+
* @typedef {object} DocsNode
|
|
144
|
+
* @property {string | null} id the doc's DocId, built from its provider's
|
|
145
|
+
* ProviderId, kind, and name (see the provider-identity authoring doc);
|
|
146
|
+
* unchanged when the node moves. Always present; null on a generated level,
|
|
147
|
+
* such as `cli/api/functions`, which has no authored doc
|
|
148
|
+
* @property {string} route pass it to `astryx docs`
|
|
149
|
+
* @property {string} kind `namespace`, or the typed doc's kind: `command`,
|
|
150
|
+
* `function`, `schema`, or `enum`
|
|
151
|
+
* @property {string} package the package that owns the node
|
|
152
|
+
* @property {string} title
|
|
153
|
+
* @property {string} summary
|
|
154
|
+
* @property {DocsNodeLink[]} breadcrumb the namespaces above it, top first
|
|
155
|
+
* @property {DocsNodeSlot[]} slots a namespace's slots that hold children, in
|
|
156
|
+
* order; empty for a typed doc
|
|
157
|
+
* @property {import('@astryxdesign/cli/authoring').ReferenceContentBlock[]} content
|
|
158
|
+
* a typed doc's content; empty for a namespace
|
|
159
|
+
* @property {DocsLinks} links the moves from the node: up to its parent (the
|
|
160
|
+
* topic list, for a top-level namespace), and across to its neighbors in its
|
|
161
|
+
* parent's slot
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @typedef {object} DocsNodeLink
|
|
166
|
+
* @property {string} route
|
|
167
|
+
* @property {string} title
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @typedef {object} DocsNodeSlot
|
|
172
|
+
* @property {string} name the slot's key in its namespace
|
|
173
|
+
* @property {string} title
|
|
174
|
+
* @property {DocsNodeChild[]} children in reading order
|
|
175
|
+
*/
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @typedef {object} DocsNodeChild
|
|
179
|
+
* @property {string} route pass it to `astryx docs` to go one level down
|
|
180
|
+
* @property {string} name the last segment of its route
|
|
181
|
+
* @property {string} kind
|
|
182
|
+
* @property {string} title
|
|
183
|
+
* @property {string} summary
|
|
44
184
|
*/
|
|
45
185
|
|
|
46
186
|
/**
|
|
@@ -49,6 +189,8 @@
|
|
|
49
189
|
* @property {string} [lang]
|
|
50
190
|
* @property {boolean} [zh]
|
|
51
191
|
* @property {boolean} [dense]
|
|
192
|
+
* @property {boolean} [index] return a topic's section index instead of its
|
|
193
|
+
* whole doc
|
|
52
194
|
* @property {string} [cwd] project directory whose configured integrations
|
|
53
195
|
* contribute topics; defaults to process.cwd()
|
|
54
196
|
*/
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// @generated by scripts/sync-api-types.mjs from the JSDoc in api/**/*.mjs.
|
|
2
|
+
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param {string} topic
|
|
6
|
+
* @param {object} [options]
|
|
7
|
+
* @param {string} [options.lang]
|
|
8
|
+
* @param {boolean} [options.zh]
|
|
9
|
+
* @param {boolean} [options.dense]
|
|
10
|
+
* @param {string} [options.cwd]
|
|
11
|
+
* @returns {Promise<import('../docs.type.mjs').DocsIndexResponse>}
|
|
12
|
+
*/
|
|
13
|
+
export function index(topic: string, options?: {
|
|
14
|
+
lang?: string | undefined;
|
|
15
|
+
zh?: boolean | undefined;
|
|
16
|
+
dense?: boolean | undefined;
|
|
17
|
+
cwd?: string | undefined;
|
|
18
|
+
}): Promise<import("../docs.type.mjs").DocsIndexResponse>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file docs.index leaf — the section index of one topic.
|
|
5
|
+
*
|
|
6
|
+
* @input A topic name plus optional {lang, zh, dense, cwd}. Resolves the topic
|
|
7
|
+
* via the shared adapter and reads its lowered compiled node; nothing is
|
|
8
|
+
* linked, since the index never inlines a token reference.
|
|
9
|
+
* @output { type: 'docs.index', data: DocsIndex } — the topic's name, title and
|
|
10
|
+
* description and, for each section, the key it is read by, its title, and a
|
|
11
|
+
* one-line summary. Matches `astryx --json docs <topic> --index`.
|
|
12
|
+
* @position Leaf under api/docs: a topic's opt-in progressive read. One section
|
|
13
|
+
* is the section leaf (`docs <topic> <key>`); the whole topic, a plain topic
|
|
14
|
+
* read, is the detail leaf.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {indexView} from '../../../foundation/doc-compiler/lenses.mjs';
|
|
18
|
+
import {resolveTopicDocs, topicLinks} from '../_adapter.mjs';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} topic
|
|
22
|
+
* @param {object} [options]
|
|
23
|
+
* @param {string} [options.lang]
|
|
24
|
+
* @param {boolean} [options.zh]
|
|
25
|
+
* @param {boolean} [options.dense]
|
|
26
|
+
* @param {string} [options.cwd]
|
|
27
|
+
* @returns {Promise<import('../docs.type.mjs').DocsIndexResponse>}
|
|
28
|
+
*/
|
|
29
|
+
export async function index(topic, options = {}) {
|
|
30
|
+
const {node, entry, catalog} = await resolveTopicDocs(topic, options);
|
|
31
|
+
const view = indexView(node);
|
|
32
|
+
/** @type {import('../docs.type.mjs').DocsIndex} */
|
|
33
|
+
const data = {
|
|
34
|
+
...view,
|
|
35
|
+
// A guide the docs tree places is read by its route, not its doc name.
|
|
36
|
+
name: entry.tree ? entry.name : view.name,
|
|
37
|
+
links: await topicLinks(catalog, entry),
|
|
38
|
+
};
|
|
39
|
+
return {type: 'docs.index', data};
|
|
40
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import {describe, expect, it} from 'vitest';
|
|
4
|
+
import {docs} from '../docs.mjs';
|
|
5
|
+
import {index} from './index.mjs';
|
|
6
|
+
import {loadDocsCatalog} from '../_adapter.mjs';
|
|
7
|
+
|
|
8
|
+
const SLOW = 60_000;
|
|
9
|
+
|
|
10
|
+
describe('docs.index leaf', () => {
|
|
11
|
+
it('lists each section by key, title, and summary', async () => {
|
|
12
|
+
const res = await index('theme');
|
|
13
|
+
expect(res.type).toBe('docs.index');
|
|
14
|
+
expect(res.data).toMatchObject({name: 'theme', title: expect.any(String)});
|
|
15
|
+
const keys = res.data.sections.map(s => s.id);
|
|
16
|
+
expect(new Set(keys).size).toBe(keys.length);
|
|
17
|
+
for (const entry of res.data.sections) {
|
|
18
|
+
expect(Object.keys(entry)).toEqual(['id', 'title', 'summary']);
|
|
19
|
+
expect(entry.summary.length).toBeLessThanOrEqual(240);
|
|
20
|
+
}
|
|
21
|
+
}, SLOW);
|
|
22
|
+
|
|
23
|
+
it('names the sections the full topic has, with the same keys', async () => {
|
|
24
|
+
const full = await docs('theme');
|
|
25
|
+
const {data} = await index('theme');
|
|
26
|
+
expect(data.sections.map(s => [s.id, s.title])).toEqual(
|
|
27
|
+
full.data.sections.map(s => [s.id, s.title]),
|
|
28
|
+
);
|
|
29
|
+
}, SLOW);
|
|
30
|
+
|
|
31
|
+
it('keeps every key the same in every language', async () => {
|
|
32
|
+
const english = (await index('theme')).data.sections.map(s => s.id);
|
|
33
|
+
for (const lang of ['zh', 'dense']) {
|
|
34
|
+
const localized = await index('theme', {lang});
|
|
35
|
+
expect(localized.data.sections.map(s => s.id)).toEqual(english);
|
|
36
|
+
}
|
|
37
|
+
}, SLOW);
|
|
38
|
+
|
|
39
|
+
it('lists keys every section can be read by', async () => {
|
|
40
|
+
const catalog = await loadDocsCatalog();
|
|
41
|
+
for (const entry of catalog.entries()) {
|
|
42
|
+
const {data} = await index(entry.name);
|
|
43
|
+
for (const {id, title} of data.sections) {
|
|
44
|
+
const read = await docs(entry.name, id);
|
|
45
|
+
expect(read.data.title).toBe(title);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}, SLOW);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('docs() topic reads', () => {
|
|
52
|
+
it('returns the whole topic by default', async () => {
|
|
53
|
+
const res = await docs('theme');
|
|
54
|
+
expect(res.type).toBe('docs.detail');
|
|
55
|
+
expect(res.data.sections[0].content.length).toBeGreaterThan(0);
|
|
56
|
+
}, SLOW);
|
|
57
|
+
|
|
58
|
+
it('returns the section index on request', async () => {
|
|
59
|
+
const res = await docs('theme', undefined, {index: true});
|
|
60
|
+
expect(res.type).toBe('docs.index');
|
|
61
|
+
}, SLOW);
|
|
62
|
+
});
|