@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,78 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file Every shipped topic compiles to a plain-JSON node that answers every
|
|
5
|
+
* docs read exactly as the live one does, and no read can change another read
|
|
6
|
+
* of the same catalog.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {describe, expect, it} from 'vitest';
|
|
10
|
+
import {parseCompiledReferenceNode} from '../../foundation/doc-compiler/ir.mjs';
|
|
11
|
+
import {detailView, indexView} from '../../foundation/doc-compiler/lenses.mjs';
|
|
12
|
+
import {
|
|
13
|
+
compileTopic,
|
|
14
|
+
loadDocsCatalog,
|
|
15
|
+
lowerTopic,
|
|
16
|
+
overlayLanguages,
|
|
17
|
+
} from './_adapter.mjs';
|
|
18
|
+
|
|
19
|
+
const SLOW = 60_000;
|
|
20
|
+
|
|
21
|
+
describe('every shipped topic compiles to plain JSON', () => {
|
|
22
|
+
it(
|
|
23
|
+
'survives a JSON round trip with identical responses in every language',
|
|
24
|
+
async () => {
|
|
25
|
+
const catalog = await loadDocsCatalog();
|
|
26
|
+
let compiled = 0;
|
|
27
|
+
for (const entry of catalog.entries()) {
|
|
28
|
+
for (const lang of [null, ...overlayLanguages(entry)]) {
|
|
29
|
+
const lowered = await lowerTopic(catalog, entry, lang);
|
|
30
|
+
expect(parseCompiledReferenceNode(lowered)).toBe(lowered);
|
|
31
|
+
const node = await compileTopic(catalog, entry, lang);
|
|
32
|
+
expect(parseCompiledReferenceNode(node)).toBe(node);
|
|
33
|
+
const copy = parseCompiledReferenceNode(
|
|
34
|
+
JSON.parse(JSON.stringify(node)),
|
|
35
|
+
);
|
|
36
|
+
expect(JSON.stringify(detailView(copy))).toBe(
|
|
37
|
+
JSON.stringify(detailView(node)),
|
|
38
|
+
);
|
|
39
|
+
expect(JSON.stringify(indexView(copy))).toBe(
|
|
40
|
+
JSON.stringify(indexView(node)),
|
|
41
|
+
);
|
|
42
|
+
compiled += 1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
expect(compiled).toBeGreaterThan(catalog.entries().length);
|
|
46
|
+
},
|
|
47
|
+
SLOW,
|
|
48
|
+
);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe('reads that share a catalog', () => {
|
|
52
|
+
it(
|
|
53
|
+
'never let one read change another',
|
|
54
|
+
async () => {
|
|
55
|
+
const catalog = await loadDocsCatalog();
|
|
56
|
+
const tokens = catalog.resolve('tokens');
|
|
57
|
+
const first = detailView(await compileTopic(catalog, tokens));
|
|
58
|
+
for (const section of first.sections) {
|
|
59
|
+
section.title = 'EDITED';
|
|
60
|
+
for (const block of section.content) {
|
|
61
|
+
if (typeof block.text === 'string') block.text = 'EDITED';
|
|
62
|
+
if (Array.isArray(block.rows)) block.rows.push(['EDITED']);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const again = detailView(await compileTopic(catalog, tokens));
|
|
66
|
+
const index = indexView(await lowerTopic(catalog, tokens));
|
|
67
|
+
const spacing = detailView(
|
|
68
|
+
await compileTopic(catalog, catalog.resolve('spacing')),
|
|
69
|
+
);
|
|
70
|
+
for (const read of [again, index, spacing]) {
|
|
71
|
+
expect(JSON.stringify(read)).not.toContain('EDITED');
|
|
72
|
+
}
|
|
73
|
+
const lowered = await lowerTopic(catalog, tokens);
|
|
74
|
+
expect(Object.isFrozen(lowered.doc.sections[0].content)).toBe(true);
|
|
75
|
+
},
|
|
76
|
+
SLOW,
|
|
77
|
+
);
|
|
78
|
+
});
|
|
@@ -3,69 +3,17 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* @file docs.detail leaf — load one topic's full reference doc.
|
|
5
5
|
*
|
|
6
|
-
* @input A topic name plus optional {lang, zh, dense}. Resolves
|
|
7
|
-
*
|
|
6
|
+
* @input A topic name plus optional {lang, zh, dense, cwd}. Resolves the topic
|
|
7
|
+
* via the shared adapter and compiles it with its token references linked.
|
|
8
8
|
* @output { type: 'docs.detail', data: ReferenceDoc } — the full doc with
|
|
9
|
-
* token-refs
|
|
10
|
-
* @position Leaf under api/docs.
|
|
11
|
-
*
|
|
9
|
+
* token-refs inlined, matching `astryx --json docs <topic>`.
|
|
10
|
+
* @position Leaf under api/docs. Reads the compiled node through the detail
|
|
11
|
+
* lens; resolution, overlays and extensions happen in the compiler.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* Resolve token-ref blocks by inlining the referenced section's table.
|
|
18
|
-
* This allows section docs to reference token tables without duplicating data.
|
|
19
|
-
*
|
|
20
|
-
* The reference is resolved through the catalog, so a topic may point at one
|
|
21
|
-
* an integration contributed (or replaced) rather than only at a built-in.
|
|
22
|
-
* @param {import('../docs.type.mjs').DocsDetailResponse['data']} docsData
|
|
23
|
-
* @param {import('../../../foundation/discovery/docs-discovery.mjs').DocsCatalog} catalog
|
|
24
|
-
* @returns {Promise<import('../docs.type.mjs').DocsDetailResponse['data']>}
|
|
25
|
-
*/
|
|
26
|
-
async function resolveTokenRefs(docsData, catalog) {
|
|
27
|
-
const resolved = {...docsData, sections: [...docsData.sections]};
|
|
28
|
-
for (let si = 0; si < resolved.sections.length; si++) {
|
|
29
|
-
const section = resolved.sections[si];
|
|
30
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceContentBlock[]} */
|
|
31
|
-
const newContent = [];
|
|
32
|
-
for (const block of section.content) {
|
|
33
|
-
if (block.type === 'token-ref') {
|
|
34
|
-
const refEntry = catalog.resolve(block.topic);
|
|
35
|
-
if (!refEntry) {
|
|
36
|
-
newContent.push({type: 'prose', text: `[token-ref: unknown topic "${block.topic}"]`});
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
const refDocs = await loadTopicDoc(refEntry);
|
|
40
|
-
const refSection = refDocs.sections.find(
|
|
41
|
-
(/** @type {import('@astryxdesign/cli/authoring').ReferenceSection} */ s) =>
|
|
42
|
-
s.title.toLowerCase() === block.section.toLowerCase(),
|
|
43
|
-
);
|
|
44
|
-
if (!refSection) {
|
|
45
|
-
newContent.push({type: 'prose', text: `[token-ref: section "${block.section}" not found in "${block.topic}"]`});
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
// Inline the referenced section's content blocks (tables, prose, etc.)
|
|
49
|
-
// and carry over the previewType
|
|
50
|
-
for (const refBlock of refSection.content) {
|
|
51
|
-
newContent.push(refBlock);
|
|
52
|
-
}
|
|
53
|
-
// If the referenced section has a previewType, attach it to our section
|
|
54
|
-
if (refSection.previewType && !section.previewType) {
|
|
55
|
-
resolved.sections[si] = {...section, previewType: refSection.previewType, content: newContent};
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
newContent.push(block);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (resolved.sections[si] === section) {
|
|
62
|
-
resolved.sections[si] = {...section, content: newContent};
|
|
63
|
-
} else {
|
|
64
|
-
resolved.sections[si].content = newContent;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return resolved;
|
|
68
|
-
}
|
|
14
|
+
import {linkReferenceTopic} from '../../../foundation/doc-compiler/compile.mjs';
|
|
15
|
+
import {detailView} from '../../../foundation/doc-compiler/lenses.mjs';
|
|
16
|
+
import {referenceTargets, resolveTopicDocs, topicLinks} from '../_adapter.mjs';
|
|
69
17
|
|
|
70
18
|
/**
|
|
71
19
|
* @param {string} topic
|
|
@@ -77,7 +25,18 @@ async function resolveTokenRefs(docsData, catalog) {
|
|
|
77
25
|
* @returns {Promise<import('../docs.type.mjs').DocsDetailResponse>}
|
|
78
26
|
*/
|
|
79
27
|
export async function detail(topic, options = {}) {
|
|
80
|
-
const {catalog,
|
|
81
|
-
const
|
|
82
|
-
|
|
28
|
+
const {catalog, node, lang, entry} = await resolveTopicDocs(topic, options);
|
|
29
|
+
const linked = await linkReferenceTopic(
|
|
30
|
+
node,
|
|
31
|
+
referenceTargets(catalog, lang),
|
|
32
|
+
);
|
|
33
|
+
return {
|
|
34
|
+
type: 'docs.detail',
|
|
35
|
+
data: {
|
|
36
|
+
...detailView(linked),
|
|
37
|
+
// A guide the docs tree places is read by its route, not its doc name.
|
|
38
|
+
...(entry.tree ? {name: entry.name} : {}),
|
|
39
|
+
links: await topicLinks(catalog, entry),
|
|
40
|
+
},
|
|
41
|
+
};
|
|
83
42
|
}
|
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file docs.detail.section leaf — load a single
|
|
4
|
+
* @file docs.detail.section leaf — load a single section of a topic.
|
|
5
5
|
*
|
|
6
6
|
* @input A topic name, a section query, and optional {lang, zh, dense}. Resolves
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
7
|
+
* the topic via the shared adapter, keeps the 0.6.x first title-substring
|
|
8
|
+
* match, then falls back to a stable key or normalized title key, and links
|
|
9
|
+
* only that section.
|
|
10
|
+
* @output { type: 'docs.detail.section', data: ReferenceSection } with any
|
|
11
|
+
* token-ref blocks inlined — matching `astryx --json docs <topic> <section>`.
|
|
12
|
+
* Throws ERR_UNKNOWN_SECTION when nothing matches, or when the query matches
|
|
13
|
+
* more than one section (the candidates come back as suggestions).
|
|
14
|
+
* @position Leaf nested under api/docs/detail. Shares topic resolution with the
|
|
15
|
+
* detail leaf via _adapter.mjs and reads through the compiler's lenses.
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
import {AstryxError} from '../../../error.mjs';
|
|
17
19
|
import {ERROR_CODES} from '../../../../foundation/response/error-codes.mjs';
|
|
18
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
findDocSection,
|
|
22
|
+
sectionKey,
|
|
23
|
+
} from '../../../../foundation/discovery/docs-section-key.mjs';
|
|
24
|
+
import {linkReferenceSection} from '../../../../foundation/doc-compiler/compile.mjs';
|
|
25
|
+
import {
|
|
26
|
+
readerSections,
|
|
27
|
+
sectionView,
|
|
28
|
+
} from '../../../../foundation/doc-compiler/lenses.mjs';
|
|
29
|
+
import {referenceTargets, resolveTopicDocs} from '../../_adapter.mjs';
|
|
19
30
|
|
|
20
31
|
/**
|
|
21
32
|
* @param {string} topic
|
|
22
|
-
* @param {string} sectionName
|
|
33
|
+
* @param {string} sectionName a section key, or a title (or part of one)
|
|
23
34
|
* @param {object} [options]
|
|
24
35
|
* @param {string} [options.lang]
|
|
25
36
|
* @param {boolean} [options.zh]
|
|
@@ -28,10 +39,9 @@ import {resolveTopicDocs} from '../../_adapter.mjs';
|
|
|
28
39
|
* @returns {Promise<import('../../docs.type.mjs').DocsDetailSectionResponse>}
|
|
29
40
|
*/
|
|
30
41
|
export async function section(topic, sectionName, options = {}) {
|
|
31
|
-
// An empty section name must error, not resolve to the first section
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// TypeError below (`.toLowerCase()`) → downgrades to ERR_UNKNOWN.
|
|
42
|
+
// An empty section name must error, not resolve to the first section. The
|
|
43
|
+
// docs() dispatcher routes a falsy section to the topic, but the leaf must be
|
|
44
|
+
// safe on its own; a non-string would otherwise throw a raw TypeError.
|
|
35
45
|
if (typeof sectionName !== 'string' || !sectionName.trim()) {
|
|
36
46
|
throw new AstryxError(
|
|
37
47
|
'A section name is required',
|
|
@@ -39,16 +49,41 @@ export async function section(topic, sectionName, options = {}) {
|
|
|
39
49
|
ERROR_CODES.ERR_UNKNOWN_SECTION,
|
|
40
50
|
);
|
|
41
51
|
}
|
|
42
|
-
const {docsData} = await resolveTopicDocs(topic, options);
|
|
43
52
|
|
|
44
|
-
const
|
|
45
|
-
const
|
|
53
|
+
const {catalog, node, lang, entry} = await resolveTopicDocs(topic, options);
|
|
54
|
+
const sections = readerSections(node);
|
|
55
|
+
const {section: match} = findDocSection(sections, sectionName);
|
|
46
56
|
if (!match) {
|
|
47
57
|
throw new AstryxError(
|
|
48
58
|
`Section "${sectionName}" not found in "${topic}"`,
|
|
49
|
-
|
|
59
|
+
sections.map(s => ({
|
|
60
|
+
name: s.title,
|
|
61
|
+
reason: 'available section',
|
|
62
|
+
})),
|
|
50
63
|
ERROR_CODES.ERR_UNKNOWN_SECTION,
|
|
51
64
|
);
|
|
52
65
|
}
|
|
53
|
-
|
|
66
|
+
|
|
67
|
+
// A section read on its own inlines its token refs, as the whole topic does;
|
|
68
|
+
// otherwise a section that is only a token-ref prints blank. Only this
|
|
69
|
+
// section is linked, so a broken reference elsewhere cannot fail the read.
|
|
70
|
+
const linked = await linkReferenceSection(
|
|
71
|
+
match,
|
|
72
|
+
referenceTargets(catalog, lang),
|
|
73
|
+
);
|
|
74
|
+
// The moves from one section (spec:AST-047): up to its topic's index, and
|
|
75
|
+
// across to the sections before and after it.
|
|
76
|
+
const at = sections.indexOf(match);
|
|
77
|
+
/** @type {import('../../docs.type.mjs').DocsLinks} */
|
|
78
|
+
const links = {up: `astryx docs ${entry.name} --index`};
|
|
79
|
+
if (at > 0) {
|
|
80
|
+
links.previous = `astryx docs ${entry.name} ${sectionKey(sections[at - 1])}`;
|
|
81
|
+
}
|
|
82
|
+
if (at !== -1 && at < sections.length - 1) {
|
|
83
|
+
links.next = `astryx docs ${entry.name} ${sectionKey(sections[at + 1])}`;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
type: 'docs.detail.section',
|
|
87
|
+
data: {...sectionView(node, linked), links},
|
|
88
|
+
};
|
|
54
89
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import {describe, it, expect} from 'vitest';
|
|
11
11
|
import {section} from './section.mjs';
|
|
12
12
|
import {AstryxError} from '../../../error.mjs';
|
|
13
|
+
import {loadDocsCatalog, lowerTopic} from '../../_adapter.mjs';
|
|
13
14
|
|
|
14
15
|
const SLOW = 30_000;
|
|
15
16
|
|
|
@@ -29,6 +30,17 @@ describe('docs.detail.section leaf', () => {
|
|
|
29
30
|
}
|
|
30
31
|
expect(err).toBeInstanceOf(AstryxError);
|
|
31
32
|
expect(err.code).toBe('ERR_UNKNOWN_SECTION');
|
|
33
|
+
expect(err.suggestions).toEqual(
|
|
34
|
+
expect.arrayContaining([
|
|
35
|
+
expect.objectContaining({
|
|
36
|
+
name: expect.any(String),
|
|
37
|
+
reason: 'available section',
|
|
38
|
+
}),
|
|
39
|
+
]),
|
|
40
|
+
);
|
|
41
|
+
expect(err.suggestions.some(suggestion => /\s/u.test(suggestion.name))).toBe(
|
|
42
|
+
true,
|
|
43
|
+
);
|
|
32
44
|
}, SLOW);
|
|
33
45
|
|
|
34
46
|
it('does not return the first section for an empty section name', async () => {
|
|
@@ -39,4 +51,42 @@ describe('docs.detail.section leaf', () => {
|
|
|
39
51
|
code: 'ERR_UNKNOWN_SECTION',
|
|
40
52
|
});
|
|
41
53
|
}, SLOW);
|
|
54
|
+
|
|
55
|
+
it('reads a section by its stable key', async () => {
|
|
56
|
+
const catalog = await loadDocsCatalog();
|
|
57
|
+
const {doc} = await lowerTopic(catalog, catalog.resolve('theme'));
|
|
58
|
+
const target = doc.sections[doc.sections.length - 1];
|
|
59
|
+
const res = await section('theme', target.id);
|
|
60
|
+
expect(res.data.title).toBe(target.title);
|
|
61
|
+
expect(res.data.id).toBe(target.id);
|
|
62
|
+
}, SLOW);
|
|
63
|
+
|
|
64
|
+
it('keeps a previously accepted ambiguous query on its first match', async () => {
|
|
65
|
+
const res = await section('theme', 'e');
|
|
66
|
+
expect(res.type).toBe('docs.detail.section');
|
|
67
|
+
expect(res.data).toBeDefined();
|
|
68
|
+
}, SLOW);
|
|
69
|
+
|
|
70
|
+
it.each([null, 'zh', 'dense'])(
|
|
71
|
+
'inlines token refs when a section is read on its own (lang %s)',
|
|
72
|
+
async lang => {
|
|
73
|
+
const catalog = await loadDocsCatalog();
|
|
74
|
+
let checked = 0;
|
|
75
|
+
for (const entry of catalog.entries()) {
|
|
76
|
+
const {doc} = await lowerTopic(catalog, entry);
|
|
77
|
+
for (const own of doc.sections) {
|
|
78
|
+
if (!own.content.some(block => block.type === 'token-ref')) continue;
|
|
79
|
+
const res = await section(entry.name, own.id, lang ? {lang} : {});
|
|
80
|
+
expect(res.data.content.length).toBeGreaterThan(0);
|
|
81
|
+
expect(res.data.content.some(block => block.type === 'token-ref')).toBe(
|
|
82
|
+
false,
|
|
83
|
+
);
|
|
84
|
+
expect(JSON.stringify(res.data.content)).not.toContain('[token-ref:');
|
|
85
|
+
checked += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
expect(checked).toBeGreaterThan(0);
|
|
89
|
+
},
|
|
90
|
+
SLOW,
|
|
91
|
+
);
|
|
42
92
|
});
|
|
@@ -76,6 +76,32 @@ describe('reference doc overlays (#2182)', () => {
|
|
|
76
76
|
).toEqual([]);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
+
it(`${topic} --${variant}: every content override lands on a block of its own type`, async () => {
|
|
80
|
+
// Blocks are matched by index and type, and a mismatch is dropped with
|
|
81
|
+
// no warning: a prose override aimed at a code block leaves the base
|
|
82
|
+
// text in place, so the reader gets a translated title over an English
|
|
83
|
+
// body. Pad with null to reach the block you mean.
|
|
84
|
+
const base = await load(basePath);
|
|
85
|
+
const overlayMod = await load(overlayPath);
|
|
86
|
+
const overlay = overlayMod.docsDense || overlayMod.docsZh;
|
|
87
|
+
const byTitle = new Map(base.docs.sections.map(s => [s.title, s]));
|
|
88
|
+
const dropped = [];
|
|
89
|
+
for (const entry of overlay.sections || []) {
|
|
90
|
+
const section = byTitle.get(entry.section);
|
|
91
|
+
if (!section) continue;
|
|
92
|
+
(entry.content || []).forEach((block, i) => {
|
|
93
|
+
if (block == null) return;
|
|
94
|
+
const target = section.content[i];
|
|
95
|
+
if (target?.type !== block.type) {
|
|
96
|
+
dropped.push(
|
|
97
|
+
`${entry.section} block ${i}: ${block.type} over ${target?.type ?? 'nothing'}`,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
expect(dropped, `${topic}.doc.${variant}.mjs overrides that never apply`).toEqual([]);
|
|
103
|
+
});
|
|
104
|
+
|
|
79
105
|
it(`${topic} --${variant}: no base section is overridden twice`, async () => {
|
|
80
106
|
const overlayMod = await load(overlayPath);
|
|
81
107
|
const overlay = overlayMod.docsDense || overlayMod.docsZh;
|
|
@@ -127,7 +153,7 @@ describe('the reported defect: docs tokens --dense (#2182)', () => {
|
|
|
127
153
|
const zh = await docs('theme', null, {zh: true});
|
|
128
154
|
const titles = zh.data.sections.map(s => s.title);
|
|
129
155
|
// Every section the overlay translates must appear once, in Chinese only.
|
|
130
|
-
expect(titles).not.toContain('
|
|
156
|
+
expect(titles).not.toContain('Dark mode');
|
|
131
157
|
expect(titles).toContain('亮/暗模式');
|
|
132
158
|
});
|
|
133
159
|
});
|
package/api/docs/docs.d.mts
CHANGED
|
@@ -8,20 +8,27 @@
|
|
|
8
8
|
* @param {string} [options.lang]
|
|
9
9
|
* @param {boolean} [options.zh]
|
|
10
10
|
* @param {boolean} [options.dense]
|
|
11
|
+
* @param {boolean} [options.index] return the topic's section index instead of
|
|
12
|
+
* the whole doc
|
|
11
13
|
* @param {string} [options.cwd]
|
|
12
14
|
* @returns {Promise<
|
|
13
15
|
* import('./docs.type.mjs').DocsListResponse |
|
|
16
|
+
* import('./docs.type.mjs').DocsIndexResponse |
|
|
14
17
|
* import('./docs.type.mjs').DocsDetailResponse |
|
|
15
|
-
* import('./docs.type.mjs').DocsDetailSectionResponse
|
|
18
|
+
* import('./docs.type.mjs').DocsDetailSectionResponse |
|
|
19
|
+
* import('./docs.type.mjs').DocsNodeResponse
|
|
16
20
|
* >}
|
|
17
21
|
*/
|
|
18
22
|
export function docs(topic?: string, section?: string, options?: {
|
|
19
23
|
lang?: string | undefined;
|
|
20
24
|
zh?: boolean | undefined;
|
|
21
25
|
dense?: boolean | undefined;
|
|
26
|
+
index?: boolean | undefined;
|
|
22
27
|
cwd?: string | undefined;
|
|
23
|
-
}): Promise<import("./docs.type.mjs").DocsListResponse | import("./docs.type.mjs").DocsDetailResponse | import("./docs.type.mjs").DocsDetailSectionResponse>;
|
|
28
|
+
}): Promise<import("./docs.type.mjs").DocsListResponse | import("./docs.type.mjs").DocsIndexResponse | import("./docs.type.mjs").DocsDetailResponse | import("./docs.type.mjs").DocsDetailSectionResponse | import("./docs.type.mjs").DocsNodeResponse>;
|
|
24
29
|
import { list } from './list/list.mjs';
|
|
30
|
+
import { index } from './index/index.mjs';
|
|
25
31
|
import { detail } from './detail/detail.mjs';
|
|
26
32
|
import { section as sectionLeaf } from './detail/section/section.mjs';
|
|
27
|
-
|
|
33
|
+
import { node as nodeLeaf } from './node/node.mjs';
|
|
34
|
+
export { list, index, detail, sectionLeaf as section, nodeLeaf as node };
|
package/api/docs/docs.doc.mjs
CHANGED
|
@@ -11,20 +11,32 @@ export const doc = {
|
|
|
11
11
|
type: 'function',
|
|
12
12
|
kind: 'api',
|
|
13
13
|
name: 'docs',
|
|
14
|
+
namespace: 'cli/api',
|
|
14
15
|
displayName: 'docs()',
|
|
15
16
|
summary:
|
|
16
|
-
'Read the reference docs: list every topic, one topic,
|
|
17
|
+
'Read the reference docs: list every topic, one topic\'s sections, one section, or a whole topic.',
|
|
17
18
|
description:
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
'
|
|
19
|
+
'No topic lists every reference-doc topic; a topic returns its whole ' +
|
|
20
|
+
'ReferenceDoc, and `index: true` returns its section index (each ' +
|
|
21
|
+
'section\'s key, title, and summary); a topic plus a section returns ' +
|
|
22
|
+
'that one section. Token-ref blocks are ' +
|
|
23
|
+
'inlined in every read, and so is a section\'s reference block: the doc it ' +
|
|
24
|
+
'includes, then the command that opens that doc. The topic set is the CLI\'s own docs plus the ' +
|
|
22
25
|
'ones the project\'s configured integrations contribute, including any ' +
|
|
23
26
|
'topic an integration replaces or extends, so it depends on the cwd. ' +
|
|
27
|
+
'A route opens a node of the docs tree instead: a namespace such as ' +
|
|
28
|
+
"`cli/api` returns its children one level down, a typed doc such as " +
|
|
29
|
+
"`cli/api/functions/search` returns its content, and a guide the tree " +
|
|
30
|
+
'places (`cli/integrations/quick-start`) reads like any topic. ' +
|
|
31
|
+
'Every read but the list carries `links`, the commands that move from it: ' +
|
|
32
|
+
'`up` to the level it sits in, `previous` and `next` to its neighbors, and, ' +
|
|
33
|
+
'for a typed doc, `related` to the docs it names (its command or function, ' +
|
|
34
|
+
'and its related docs); `previous` and `next` ' +
|
|
35
|
+
'to the section or node before and after it. ' +
|
|
24
36
|
'Overlay options select localized or dense variants.',
|
|
25
37
|
importPath: '@astryxdesign/cli/api',
|
|
26
38
|
signature:
|
|
27
|
-
'docs(topic?: string, section?: string, options?: DocsOptions): Promise<DocsListResponse | DocsDetailResponse | DocsDetailSectionResponse>',
|
|
39
|
+
'docs(topic?: string, section?: string, options?: DocsOptions): Promise<DocsListResponse | DocsIndexResponse | DocsDetailResponse | DocsDetailSectionResponse | DocsNodeResponse>',
|
|
28
40
|
keywords: [
|
|
29
41
|
'docs',
|
|
30
42
|
'documentation',
|
|
@@ -40,13 +52,13 @@ export const doc = {
|
|
|
40
52
|
name: 'topic',
|
|
41
53
|
type: 'string',
|
|
42
54
|
description:
|
|
43
|
-
"Doc topic to load (e.g. 'principles'). Omit to list all topics.",
|
|
55
|
+
"Doc topic to load (e.g. 'principles'), or a docs-tree route (e.g. 'cli/api/functions/search'). Omit to list all topics.",
|
|
44
56
|
},
|
|
45
57
|
{
|
|
46
58
|
name: 'section',
|
|
47
59
|
type: 'string',
|
|
48
60
|
description:
|
|
49
|
-
|
|
61
|
+
"Section to return: its key (from the topic's index), its title, or a unique part of its title (case-insensitive).",
|
|
50
62
|
},
|
|
51
63
|
{
|
|
52
64
|
name: 'options.lang',
|
|
@@ -61,7 +73,14 @@ export const doc = {
|
|
|
61
73
|
{
|
|
62
74
|
name: 'options.dense',
|
|
63
75
|
type: 'boolean',
|
|
64
|
-
description:
|
|
76
|
+
description:
|
|
77
|
+
'Return the token-efficient dense doc variant. It is written to be read whole, so it returns the whole doc.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'options.index',
|
|
81
|
+
type: 'boolean',
|
|
82
|
+
description:
|
|
83
|
+
"Return the topic's section index (each section's key, title, and summary), even for a topic with one section.",
|
|
65
84
|
},
|
|
66
85
|
{
|
|
67
86
|
name: 'options.cwd',
|
|
@@ -74,33 +93,53 @@ export const doc = {
|
|
|
74
93
|
{
|
|
75
94
|
type: 'docs.list',
|
|
76
95
|
description:
|
|
77
|
-
|
|
96
|
+
"Every reference-doc topic in read order, as DocsListEntry[] ({topic, description, package, replaces?}), each readable with docs(topic). meta.namespaces lists the docs tree's top-level namespaces ({topic, description, package}), and meta.notLoaded each package whose docs did not load ({package, message}).",
|
|
78
97
|
},
|
|
79
98
|
{
|
|
80
99
|
type: 'docs.detail',
|
|
81
100
|
description:
|
|
82
|
-
"One topic's full ReferenceDoc, with token-ref blocks inlined.",
|
|
101
|
+
"One topic's full ReferenceDoc, with token-ref and reference blocks inlined, plus links.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'docs.index',
|
|
105
|
+
description:
|
|
106
|
+
"One topic's section index (index: true): {name, title, description, sections: [{id, title, summary}], links}.",
|
|
83
107
|
},
|
|
84
108
|
{
|
|
85
109
|
type: 'docs.detail.section',
|
|
86
110
|
description:
|
|
87
|
-
'
|
|
111
|
+
'One ReferenceSection of the topic, found by key or title, with token-ref and reference blocks inlined.',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'docs.node',
|
|
115
|
+
description:
|
|
116
|
+
"A namespace or typed doc in the docs tree, read by its route: {id, route, kind, package, title, summary, breadcrumb, slots, content}. A namespace lists each slot's children one level down; a typed doc carries its content.",
|
|
88
117
|
},
|
|
89
118
|
],
|
|
90
119
|
throws: [
|
|
91
120
|
{
|
|
92
121
|
code: 'ERR_UNKNOWN_TOPIC',
|
|
93
|
-
when: 'the topic is not a string or matches no
|
|
122
|
+
when: 'the topic is not a string, or matches no topic and no docs-tree route',
|
|
94
123
|
},
|
|
95
124
|
{
|
|
96
125
|
code: 'ERR_UNKNOWN_SECTION',
|
|
97
|
-
when: 'a section is requested but is empty
|
|
126
|
+
when: 'a section is requested but is empty, matches no section, matches more than one, or is asked of a docs-tree namespace or typed doc, which have no sections',
|
|
98
127
|
},
|
|
99
128
|
],
|
|
100
129
|
examples: [
|
|
101
130
|
{label: 'List topics', code: 'const r = await docs();'},
|
|
102
|
-
{label: '
|
|
103
|
-
{
|
|
131
|
+
{label: 'A whole topic', code: "await docs('principles');"},
|
|
132
|
+
{
|
|
133
|
+
label: "A topic's sections",
|
|
134
|
+
code: "await docs('principles', undefined, {index: true});",
|
|
135
|
+
},
|
|
136
|
+
{label: 'A docs-tree namespace', code: "await docs('cli/api');"},
|
|
137
|
+
{label: 'One API function', code: "await docs('cli/api/functions/search');"},
|
|
138
|
+
{
|
|
139
|
+
label: 'A whole guide from the docs tree',
|
|
140
|
+
code: "await docs('cli/integrations/quick-start');",
|
|
141
|
+
},
|
|
142
|
+
{label: 'One section by key', code: "await docs('tokens', 'spacing');"},
|
|
104
143
|
],
|
|
105
144
|
command: 'docs',
|
|
106
145
|
related: ['search', 'component', 'hook', 'template'],
|