@astryxdesign/cli 0.6.3 → 0.6.4-canary.078fd25
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
|
@@ -4,8 +4,13 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* @file EnumDoc for the `type` discriminant carried on every --json success
|
|
6
6
|
* envelope. The vocabulary mirrors the RESPONSE_TYPES map (each command's
|
|
7
|
-
* `jsonOut(...)` call sites)
|
|
8
|
-
* switches on `type` to narrow the
|
|
7
|
+
* `jsonOut(...)` call sites) plus ROOT_RESPONSE_TYPES (help, version) in
|
|
8
|
+
* `clients/cli/lib/manifest.mjs`; a consumer switches on `type` to narrow the
|
|
9
|
+
* `data` payload. Descriptions follow the currently published response
|
|
10
|
+
* projection, not a future package-version boundary.
|
|
11
|
+
*
|
|
12
|
+
* @input Public response discriminants and their currently released payloads.
|
|
13
|
+
* @output Generated consumer reference for every typed JSON success response.
|
|
9
14
|
* @position packages/cli/foundation/response — enum documentation
|
|
10
15
|
*/
|
|
11
16
|
/** @type {import('@astryxdesign/cli/authoring').EnumDoc} */
|
|
@@ -3,8 +3,13 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* @file EnumDoc for the `type` discriminant carried on every --json success
|
|
5
5
|
* envelope. The vocabulary mirrors the RESPONSE_TYPES map (each command's
|
|
6
|
-
* `jsonOut(...)` call sites)
|
|
7
|
-
* switches on `type` to narrow the
|
|
6
|
+
* `jsonOut(...)` call sites) plus ROOT_RESPONSE_TYPES (help, version) in
|
|
7
|
+
* `clients/cli/lib/manifest.mjs`; a consumer switches on `type` to narrow the
|
|
8
|
+
* `data` payload. Descriptions follow the currently published response
|
|
9
|
+
* projection, not a future package-version boundary.
|
|
10
|
+
*
|
|
11
|
+
* @input Public response discriminants and their currently released payloads.
|
|
12
|
+
* @output Generated consumer reference for every typed JSON success response.
|
|
8
13
|
* @position packages/cli/foundation/response — enum documentation
|
|
9
14
|
*/
|
|
10
15
|
|
|
@@ -13,7 +18,7 @@ export const doc = {
|
|
|
13
18
|
type: 'enum',
|
|
14
19
|
name: 'response-types',
|
|
15
20
|
displayName: 'Response Types',
|
|
16
|
-
namespace: 'cli',
|
|
21
|
+
namespace: 'cli/api',
|
|
17
22
|
description:
|
|
18
23
|
'The `type` discriminant present on every --json success envelope. Consumers switch on it to narrow `data`.',
|
|
19
24
|
members: [
|
|
@@ -31,12 +36,17 @@ export const doc = {
|
|
|
31
36
|
{
|
|
32
37
|
value: 'component.list',
|
|
33
38
|
description:
|
|
34
|
-
|
|
39
|
+
"The component catalog grouped by component group (each component's group field): `detail` (the level: names | compact | full) and `components`, the grouped map of names entries ({name, package, and optional canonical import for integrations}), brief entries, or a full ComponentDoc per entry.",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
value: 'component.batch',
|
|
43
|
+
description:
|
|
44
|
+
'The component specialization of the shared `BatchResponse` and `BatchRow` types. An explicit programmatic selector array, or two or more CLI selectors, returns one ordered receipt: `count` plus `results`, one row per selector including duplicates. Every row carries `selector` and `status` (found | not_found | ambiguous | error). A found row carries `result`, the same {type, data} response as one selector. An ambiguous row carries `code`, `error`, and `candidates` ({package, component, kind, installed}). Other failed rows carry `code`, `error`, and optional `suggestions` ({name, reason}).',
|
|
35
45
|
},
|
|
36
46
|
{
|
|
37
47
|
value: 'component.detail',
|
|
38
48
|
description:
|
|
39
|
-
"One component's authored ComponentDoc plus ownership
|
|
49
|
+
"One component's authored ComponentDoc plus ownership fields (package, the owner; import, the specifier; sourceAvailable, whether source exists) and parentDoc (present when the component is documented inside another component's doc, naming that doc).",
|
|
40
50
|
},
|
|
41
51
|
{
|
|
42
52
|
value: 'component.detail.props',
|
|
@@ -61,17 +71,27 @@ export const doc = {
|
|
|
61
71
|
{
|
|
62
72
|
value: 'docs.list',
|
|
63
73
|
description:
|
|
64
|
-
|
|
74
|
+
"All reference-doc topics as DocsListEntry[] ({topic, description, package, replaces?}), in read order; meta.namespaces lists the docs tree's top-level namespaces, and meta.notLoaded each package whose docs did not load.",
|
|
65
75
|
},
|
|
66
76
|
{
|
|
67
77
|
value: 'docs.detail',
|
|
68
78
|
description:
|
|
69
|
-
"One topic's full ReferenceDoc, with token-ref blocks inlined.",
|
|
79
|
+
"One topic's full ReferenceDoc (the JSON read of a topic, --full, --dense, or a topic with one section), with token-ref blocks inlined, plus links ({up, previous, next}: the commands that open the level it sits in and its neighbors there).",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
value: 'docs.index',
|
|
83
|
+
description:
|
|
84
|
+
"One topic's section index, the text read of a topic with more than one section (and --index): the topic's name, title, and description, plus sections, each {id, title, summary} (pass the id as the section argument; summary is the section's one-line summary), and links ({up, previous, next}: the commands that open the level it sits in and its neighbors there).",
|
|
70
85
|
},
|
|
71
86
|
{
|
|
72
87
|
value: 'docs.detail.section',
|
|
73
88
|
description:
|
|
74
|
-
'
|
|
89
|
+
'One ReferenceSection of a topic, found by key or title, with token-ref blocks inlined, plus links ({up, previous, next}: the commands that open its topic index and the sections before and after it).',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
value: 'docs.node',
|
|
93
|
+
description:
|
|
94
|
+
"One node of the docs tree, read by its route: its id, kind, package, title, summary, and breadcrumb, plus a namespace's slots with their children (one level down) or a typed doc's content, and links ({up, previous, next, related}: the commands that open its parent, its neighbors, and the docs it names).",
|
|
75
95
|
},
|
|
76
96
|
|
|
77
97
|
// blog (read from the published RSS feed)
|
|
@@ -90,40 +110,46 @@ export const doc = {
|
|
|
90
110
|
{
|
|
91
111
|
value: 'discover.list',
|
|
92
112
|
description:
|
|
93
|
-
'The
|
|
113
|
+
'The integrations the project loads (name, category, components, version, a list per other kind they add, and latest when a source knows it); with a discover source, meta.available lists what the project could add and meta.sources reports each source; when empty it carries meta.configured to tell "nothing configured" from "nothing discovered".',
|
|
94
114
|
},
|
|
95
115
|
{
|
|
96
116
|
value: 'discover.detail',
|
|
97
|
-
description:
|
|
117
|
+
description:
|
|
118
|
+
'One package, for an @scope/name or @scope/name@version query: what the shown version adds, whether the project has it, and, when a source knows the package, its versions, latest release, and the command that adds it.',
|
|
98
119
|
},
|
|
99
120
|
{
|
|
100
121
|
value: 'discover.detail.doc',
|
|
101
122
|
description:
|
|
102
|
-
'The validated ComponentDoc for one
|
|
123
|
+
'The validated ComponentDoc for one installed component, for an @scope/name/Component query.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
value: 'discover.item',
|
|
127
|
+
description:
|
|
128
|
+
'One item that is not an installed component, for an @scope/name/<item> query: its kind, name, package, version, and whether the project has the package.',
|
|
103
129
|
},
|
|
104
130
|
{
|
|
105
131
|
value: 'discover.search',
|
|
106
132
|
description:
|
|
107
|
-
'The echoed query plus
|
|
133
|
+
'The echoed query plus every matching item and package across all packages, each with its kind and whether the project has it, even when only one matches; total is set when --limit cut the list.',
|
|
108
134
|
},
|
|
109
135
|
|
|
110
136
|
// search
|
|
111
137
|
{
|
|
112
138
|
value: 'search',
|
|
113
139
|
description:
|
|
114
|
-
'The echoed query, `matchCount` (
|
|
140
|
+
'The echoed query, `matchCount` (total matches, before `limit`), and results, a ranked SearchResultEntry[] bounded by `limit`: each {domain, name, score, reason, description, command}, plus import (components, hooks), title, parent (the command that opens the level above), package (for a docs-tree hit), and, for a hit on one section, section (docs), or displayName and kind (templates).',
|
|
115
141
|
},
|
|
116
142
|
|
|
117
143
|
// build
|
|
118
144
|
{
|
|
119
145
|
value: 'build.help',
|
|
120
146
|
description:
|
|
121
|
-
'
|
|
147
|
+
'The how-to-build-a-page playbook, emitted when no query is given: `playbook: true`, a title, the ordered steps (title, commands, optional returns), the on-system rules, and related lookups. Commands are bare subcommands for the caller to render with its own invocation.',
|
|
122
148
|
},
|
|
123
149
|
{
|
|
124
150
|
value: 'build.kit',
|
|
125
151
|
description:
|
|
126
|
-
|
|
152
|
+
"The template to start from and its kit: query, hasResults, matchCount (never a cap), directMatch, start {name, command, basis, reason, alternatives, ...}, pages (search's closest templates), blocks and domain as SearchResultEntry[], frame, foundation, and hint {reason, commands} when thin.",
|
|
127
153
|
},
|
|
128
154
|
|
|
129
155
|
// swizzle
|
|
@@ -135,7 +161,7 @@ export const doc = {
|
|
|
135
161
|
{
|
|
136
162
|
value: 'swizzle.copy',
|
|
137
163
|
description:
|
|
138
|
-
'An eject receipt: component name, owning package, output directory, files-copied count, the written file names, whether any file uses StyleX, and an
|
|
164
|
+
'An eject receipt: component name, owning package, output directory, files-copied count, the written file names, whether any file uses StyleX, and, when the owner has an issues URL, feedback ({issuesUrl, ghCommand?}): where to report the gap that led to swizzling.',
|
|
139
165
|
},
|
|
140
166
|
|
|
141
167
|
// gap reports
|
|
@@ -146,14 +172,14 @@ export const doc = {
|
|
|
146
172
|
{
|
|
147
173
|
value: 'gap-report.file',
|
|
148
174
|
description:
|
|
149
|
-
'An aggregate receipt
|
|
175
|
+
'An aggregate receipt: overall status, the selected package, issuesUrl (or null), deliveries in handler order, each {handlerType: project | integration | fallback, handler, audience, status, url, message}, and filedCount/routedOnlyCount totals.',
|
|
150
176
|
},
|
|
151
177
|
|
|
152
178
|
// template
|
|
153
179
|
{
|
|
154
180
|
value: 'template.list',
|
|
155
181
|
description:
|
|
156
|
-
'
|
|
182
|
+
'The effective discovered TemplateListEntry[] for pages and blocks. A winning replacement entry includes optional `replaces`, naming the Core id omitted from the default list.',
|
|
157
183
|
},
|
|
158
184
|
{
|
|
159
185
|
value: 'template.show',
|
|
@@ -193,7 +219,7 @@ export const doc = {
|
|
|
193
219
|
{
|
|
194
220
|
value: 'theme.build',
|
|
195
221
|
description:
|
|
196
|
-
'A theme build receipt: name,
|
|
222
|
+
'A theme build receipt: name, tokenCount and componentCount (override counts), sizeKB, the written outputs {css, js, dts, and variantsDts when applicable}, warnings (defects to fix), and notices (advisories about a correct theme, such as a named font it does not load).',
|
|
197
223
|
},
|
|
198
224
|
{
|
|
199
225
|
value: 'theme.build.check',
|
|
@@ -223,7 +249,7 @@ export const doc = {
|
|
|
223
249
|
{
|
|
224
250
|
value: 'theme.targets',
|
|
225
251
|
description:
|
|
226
|
-
'The whole themeable surface: the echoed filter,
|
|
252
|
+
'The whole themeable surface: the echoed filter, componentCount, and targets, one per theming target — {key, className, component, props, states, deprecatedFor?}, where props and states are its legal override keys and deprecatedFor names the canonical replacement key.',
|
|
227
253
|
},
|
|
228
254
|
{
|
|
229
255
|
value: 'theme.palette.generate',
|
|
@@ -237,6 +263,11 @@ export const doc = {
|
|
|
237
263
|
description:
|
|
238
264
|
'Every available codemod, oldest→newest, as {name, title, version, optional}; returned for --list without running anything.',
|
|
239
265
|
},
|
|
266
|
+
{
|
|
267
|
+
value: 'upgrade.registry',
|
|
268
|
+
description:
|
|
269
|
+
'The copied-composition receipt for --registry: applied, ok, the counts (found, current, wouldUpdate, updated, wouldMerge, merged, wouldRefreshReceipt, receiptsRefreshed, conflicts, missing, invalid, failed), and items.',
|
|
270
|
+
},
|
|
240
271
|
{
|
|
241
272
|
value: 'upgrade.status',
|
|
242
273
|
description:
|
|
@@ -252,14 +283,27 @@ export const doc = {
|
|
|
252
283
|
{
|
|
253
284
|
value: 'manifest',
|
|
254
285
|
description:
|
|
255
|
-
'The
|
|
286
|
+
'The CLI capability manifest: name, version, apiVersion, description, globalOptions, commands (each name, description, arguments, options, json, aliases?, responseTypes?, examples?, exitCodes? as [{code, when}], subcommands?), jsonSupported, and the flat responseTypes index.',
|
|
287
|
+
},
|
|
288
|
+
|
|
289
|
+
// help and version, which no single command owns
|
|
290
|
+
{
|
|
291
|
+
value: 'help',
|
|
292
|
+
description:
|
|
293
|
+
'Help, in one of two shapes. A bare `astryx --json` returns the root manifest: name, version, commands (the command names), jsonSupported, and manifest (the full payload `astryx manifest --json` returns). ' +
|
|
294
|
+
"`--help --json` on any command, or `astryx help [command] --json`, returns that command's help: command, description, usage, options (each flags, description, and defaultValue and choices when set), and subcommands (each name and description). " +
|
|
295
|
+
'data.manifest marks the first shape; data.usage marks the second.',
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
value: 'version',
|
|
299
|
+
description: 'The CLI version, for `astryx --version --json`: {version}.',
|
|
256
300
|
},
|
|
257
301
|
|
|
258
302
|
// doctor
|
|
259
303
|
{
|
|
260
304
|
value: 'doctor',
|
|
261
305
|
description:
|
|
262
|
-
'The health-check report: `checks` (each with id, label, status: pass | warn | fail | info, a message, and
|
|
306
|
+
'The health-check report: `checks` (each with id, label, status: pass | warn | fail | info, a message, and an optional fix, always present on warn and fail) plus a `summary` of counts per status.',
|
|
263
307
|
},
|
|
264
308
|
|
|
265
309
|
// integration authoring
|
|
@@ -271,7 +315,7 @@ export const doc = {
|
|
|
271
315
|
{
|
|
272
316
|
value: 'integration.pack-check',
|
|
273
317
|
description:
|
|
274
|
-
'The packed-package check:
|
|
318
|
+
'The packed-package check: name, version, packable, tarball {filename, fileCount, size, unpackedSize} or null, inventory {manifest, roots [{kind, path, expectedFiles, missingFiles, complete}], expectedFiles, packedFiles}, contributions {local, packed}, each null or {themes [{slug, exportName}], components, templates [{id, type, name}], codemods [{version, id}], docs, agentDocsAppend}, and issues [{code, severity, message}].',
|
|
275
319
|
},
|
|
276
320
|
{
|
|
277
321
|
value: 'integration.validate',
|
|
@@ -281,7 +325,7 @@ export const doc = {
|
|
|
281
325
|
{
|
|
282
326
|
value: 'integration.template-conflicts',
|
|
283
327
|
description:
|
|
284
|
-
'The integration identity, structural issues, and non-blocking
|
|
328
|
+
'The integration identity, structural issues, and non-blocking Core template-id conflicts as {id, severity: warning, integrationPackage, integrationType, integrationName, coreMatches, message, command}.',
|
|
285
329
|
},
|
|
286
330
|
{
|
|
287
331
|
value: 'integration.component-conflicts',
|
|
@@ -291,7 +335,7 @@ export const doc = {
|
|
|
291
335
|
{
|
|
292
336
|
value: 'integration.doc-conflicts',
|
|
293
337
|
description:
|
|
294
|
-
'The integration identity, structural issues, and Core doc overlaps
|
|
338
|
+
'The integration identity, structural issues, and Core doc overlaps. Each finding includes `severity` (`info` | `error`) and `relationship` (`replaces` | `extends` | `accidental`).',
|
|
295
339
|
},
|
|
296
340
|
|
|
297
341
|
// layout (XLE/XLO)
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file The response-types EnumDoc names every field of the responses below,
|
|
5
|
+
* nested entry fields included. Fields come from real responses where one is
|
|
6
|
+
* cheap to produce, else from the canonical typedef.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import * as fs from 'node:fs';
|
|
10
|
+
import * as os from 'node:os';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import {describe, it, expect} from 'vitest';
|
|
13
|
+
import {doc} from './response-types.doc.mjs';
|
|
14
|
+
import {runCli} from '../../test-utils/run-cli.mjs';
|
|
15
|
+
|
|
16
|
+
/** @param {string} type */
|
|
17
|
+
const describedAs = (type) => doc.members.find((m) => m.value === type)?.description ?? '';
|
|
18
|
+
|
|
19
|
+
/** @param {string} text @param {string} field */
|
|
20
|
+
const names = (text, field) => new RegExp(`(^|\\W)${field}(\\W|$)`).test(text);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Keys of an object, plus the keys of each nested object or array entry, `depth`
|
|
24
|
+
* levels down.
|
|
25
|
+
* @param {unknown} value @param {number} depth @returns {Set<string>}
|
|
26
|
+
*/
|
|
27
|
+
function fieldsOf(value, depth = 2) {
|
|
28
|
+
const out = new Set();
|
|
29
|
+
const visit = (/** @type {unknown} */ v, /** @type {number} */ d) => {
|
|
30
|
+
if (Array.isArray(v)) return v.forEach((item) => visit(item, d));
|
|
31
|
+
if (!v || typeof v !== 'object' || d < 0) return;
|
|
32
|
+
for (const [key, child] of Object.entries(v)) {
|
|
33
|
+
out.add(key);
|
|
34
|
+
visit(child, d - 1);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
visit(value, depth);
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** @param {string[]} args @param {string} [cwd] */
|
|
42
|
+
async function data(args, cwd) {
|
|
43
|
+
const {status, stdout} = await runCli(['--json', ...args], cwd ? {cwd} : undefined);
|
|
44
|
+
expect(status, stdout).toBe(0);
|
|
45
|
+
return JSON.parse(stdout);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** @param {string} type @param {Iterable<string>} fields */
|
|
49
|
+
function expectNamed(type, fields) {
|
|
50
|
+
const text = describedAs(type);
|
|
51
|
+
const missing = [...fields].filter((f) => !names(text, f));
|
|
52
|
+
expect(missing, `${type} omits`).toEqual([]);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
describe('response-types EnumDoc names every field', () => {
|
|
56
|
+
it('component.batch names every row field and state', async () => {
|
|
57
|
+
const res = await data(['component', 'Button', 'Badge']);
|
|
58
|
+
expect(res.type).toBe('component.batch');
|
|
59
|
+
expect(describedAs('component.batch')).toMatch(/BatchResponse.*BatchRow/);
|
|
60
|
+
expectNamed('component.batch', [
|
|
61
|
+
'count',
|
|
62
|
+
'results',
|
|
63
|
+
'selector',
|
|
64
|
+
'status',
|
|
65
|
+
'result',
|
|
66
|
+
'code',
|
|
67
|
+
'error',
|
|
68
|
+
'candidates',
|
|
69
|
+
'package',
|
|
70
|
+
'component',
|
|
71
|
+
'kind',
|
|
72
|
+
'installed',
|
|
73
|
+
'suggestions',
|
|
74
|
+
'name',
|
|
75
|
+
'reason',
|
|
76
|
+
]);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('component.detail: the ownership fields and parentDoc', async () => {
|
|
80
|
+
const res = await data(['component', 'HStack']);
|
|
81
|
+
expect(res.type).toBe('component.detail');
|
|
82
|
+
const ownership = ['package', 'import', 'sourceAvailable', 'parentDoc'];
|
|
83
|
+
for (const f of ownership) expect(Object.keys(res.data)).toContain(f);
|
|
84
|
+
expectNamed('component.detail', ownership);
|
|
85
|
+
// The canonical response type declares parentDoc too.
|
|
86
|
+
const types = fs.readFileSync(
|
|
87
|
+
new URL('../../api/component/component.type.mjs', import.meta.url),
|
|
88
|
+
'utf8',
|
|
89
|
+
);
|
|
90
|
+
expect(types).toMatch(/@property \{string\} \[parentDoc\]/);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('docs.index', async () => {
|
|
94
|
+
const res = await data(['docs', 'theme', '--index']);
|
|
95
|
+
expect(res.type).toBe('docs.index');
|
|
96
|
+
expectNamed('docs.index', fieldsOf(res.data));
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('search, across component, hook, template, and doc results', async () => {
|
|
100
|
+
const mixed = await data(['search', 'dashboard', '--limit', '50']);
|
|
101
|
+
const docsOnly = await data(['search', 'tokens', '--type', 'doc']);
|
|
102
|
+
expect(new Set(mixed.data.results.map((r) => r.domain))).toContain('template');
|
|
103
|
+
expectNamed('search', new Set([...fieldsOf(mixed.data), ...fieldsOf(docsOnly.data)]));
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it('build.kit, including the hint a thin kit carries', async () => {
|
|
107
|
+
const res = await data(['build', 'zzqx-nothing-matches']);
|
|
108
|
+
expect(res.type).toBe('build.kit');
|
|
109
|
+
expect(res.data.hint).toBeDefined();
|
|
110
|
+
const fields = fieldsOf(res.data, 0);
|
|
111
|
+
for (const f of Object.keys(res.data.hint)) fields.add(f);
|
|
112
|
+
expectNamed('build.kit', fields);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('theme.targets, including deprecatedFor', async () => {
|
|
116
|
+
const res = await data(['theme', 'targets']);
|
|
117
|
+
const fields = fieldsOf(res.data);
|
|
118
|
+
expect(fields).toContain('deprecatedFor');
|
|
119
|
+
expectNamed('theme.targets', fields);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('gap-report.file, including each delivery', async () => {
|
|
123
|
+
const res = await data(['gap-report', 'Button', '--category', 'docs_gap', '--reason', 'probe']);
|
|
124
|
+
expect(res.type).toBe('gap-report.file');
|
|
125
|
+
expect(res.data.deliveries.length).toBeGreaterThan(0);
|
|
126
|
+
expectNamed('gap-report.file', fieldsOf(res.data));
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('theme.build, including notices', async () => {
|
|
130
|
+
const cwd = fs.mkdtempSync(path.join(os.tmpdir(), 'astryx-response-types-'));
|
|
131
|
+
fs.writeFileSync(path.join(cwd, 'package.json'), '{"name":"app","version":"1.0.0"}');
|
|
132
|
+
await data(['theme', 'template', 'starter.ts'], cwd);
|
|
133
|
+
const res = await data(['theme', 'build', 'starter.ts', '--out', 'starter.css'], cwd);
|
|
134
|
+
expect(res.type).toBe('theme.build');
|
|
135
|
+
expectNamed('theme.build', fieldsOf(res.data));
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('integration.pack-check (fields from api/integration/pack-check.type.mjs)', () => {
|
|
139
|
+
expectNamed('integration.pack-check', [
|
|
140
|
+
// PackCheckData
|
|
141
|
+
'name',
|
|
142
|
+
'version',
|
|
143
|
+
'packable',
|
|
144
|
+
'tarball',
|
|
145
|
+
'inventory',
|
|
146
|
+
'contributions',
|
|
147
|
+
'issues',
|
|
148
|
+
// PackCheckTarball
|
|
149
|
+
'filename',
|
|
150
|
+
'fileCount',
|
|
151
|
+
'size',
|
|
152
|
+
'unpackedSize',
|
|
153
|
+
// PackCheckInventory and PackCheckInventoryRoot
|
|
154
|
+
'manifest',
|
|
155
|
+
'roots',
|
|
156
|
+
'kind',
|
|
157
|
+
'path',
|
|
158
|
+
'expectedFiles',
|
|
159
|
+
'missingFiles',
|
|
160
|
+
'complete',
|
|
161
|
+
'packedFiles',
|
|
162
|
+
// contributions, each ContributionIdentities
|
|
163
|
+
'local',
|
|
164
|
+
'packed',
|
|
165
|
+
'themes',
|
|
166
|
+
'slug',
|
|
167
|
+
'exportName',
|
|
168
|
+
'components',
|
|
169
|
+
'templates',
|
|
170
|
+
'id',
|
|
171
|
+
'type',
|
|
172
|
+
'codemods',
|
|
173
|
+
'docs',
|
|
174
|
+
'agentDocsAppend',
|
|
175
|
+
// issues, each AstryxIntegrationIssue
|
|
176
|
+
'code',
|
|
177
|
+
'severity',
|
|
178
|
+
'message',
|
|
179
|
+
]);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
@@ -12,7 +12,7 @@ export const doc = {
|
|
|
12
12
|
type: 'schema',
|
|
13
13
|
name: 'output',
|
|
14
14
|
displayName: 'Output Envelope',
|
|
15
|
-
namespace: 'cli',
|
|
15
|
+
namespace: 'cli/api',
|
|
16
16
|
description:
|
|
17
17
|
'The single JSON envelope every command emits under --json. Success is ' +
|
|
18
18
|
'{ apiVersion, type, data, meta? }; failure is { apiVersion, error, code, ' +
|
|
@@ -39,16 +39,13 @@ export const doc = {
|
|
|
39
39
|
name: 'type',
|
|
40
40
|
type: 'string',
|
|
41
41
|
description:
|
|
42
|
-
'
|
|
43
|
-
'its own `type` at its return; there is no central union.',
|
|
42
|
+
'Names the payload shape. Every value is listed in the response-types enum.',
|
|
44
43
|
required: true,
|
|
45
44
|
},
|
|
46
45
|
{
|
|
47
46
|
name: 'data',
|
|
48
47
|
type: 'unknown',
|
|
49
|
-
description:
|
|
50
|
-
"The command's payload. Structural by design, narrowed by the " +
|
|
51
|
-
'per-command return type, not by a map in the serializer.',
|
|
48
|
+
description: "The command's payload; its shape depends on `type`.",
|
|
52
49
|
required: true,
|
|
53
50
|
},
|
|
54
51
|
{
|
|
@@ -64,7 +61,7 @@ export const doc = {
|
|
|
64
61
|
type: '{ apiVersion: number; error: string; code: ErrorCode; suggestions?: Suggestion[] }',
|
|
65
62
|
description:
|
|
66
63
|
'Emitted for every failure in --json mode, including uncaught throws ' +
|
|
67
|
-
'and
|
|
64
|
+
'and command-line parse errors, which are converted to this shape.',
|
|
68
65
|
fields: [
|
|
69
66
|
{
|
|
70
67
|
name: 'apiVersion',
|
|
@@ -121,7 +118,7 @@ export const doc = {
|
|
|
121
118
|
label: 'Success',
|
|
122
119
|
code: `{
|
|
123
120
|
"apiVersion": 1,
|
|
124
|
-
"type": "component",
|
|
121
|
+
"type": "component.detail",
|
|
125
122
|
"data": { "name": "Button" }
|
|
126
123
|
}`,
|
|
127
124
|
},
|
|
@@ -153,9 +150,13 @@ export const doc = {
|
|
|
153
150
|
{
|
|
154
151
|
type: 'prose',
|
|
155
152
|
text:
|
|
156
|
-
'The process exit code is part of the contract too
|
|
157
|
-
'
|
|
158
|
-
'(
|
|
153
|
+
'The process exit code is part of the contract too. Exit 0 means success, ' +
|
|
154
|
+
'and every error envelope exits 1. Some commands also exit 1 with a success ' +
|
|
155
|
+
'envelope when what they report failed: a failed check (layout check, doctor ' +
|
|
156
|
+
'and its integration subcommands, integration verify, theme build ' +
|
|
157
|
+
'--check), a gap report that was not delivered, an upgrade left incomplete, ' +
|
|
158
|
+
'or init agent docs refused for a path outside the project. Read the ' +
|
|
159
|
+
'envelope, not the exit code, to tell them apart.',
|
|
159
160
|
},
|
|
160
161
|
],
|
|
161
162
|
};
|
|
@@ -40,4 +40,12 @@ export function searchComponents(needle: string, coreDir: string, components: Re
|
|
|
40
40
|
score: number;
|
|
41
41
|
reason: string;
|
|
42
42
|
}[]>;
|
|
43
|
+
/**
|
|
44
|
+
* The first sentence of a text, whitespace collapsed. A period after "e.g" or
|
|
45
|
+
* "i.e" does not end the sentence. Used where a description has to fit on one
|
|
46
|
+
* line: `build`'s alternatives and its text kit.
|
|
47
|
+
* @param {string} text
|
|
48
|
+
* @returns {string}
|
|
49
|
+
*/
|
|
50
|
+
export function firstSentence(text: string): string;
|
|
43
51
|
export { levenshteinDistance } from "./levenshtein.mjs";
|
|
@@ -56,7 +56,7 @@ export function findClosestComponents(name, components, maxDistance = 3) {
|
|
|
56
56
|
* @returns {Promise<{name: string, score: number, reason: string}[]>}
|
|
57
57
|
*/
|
|
58
58
|
export async function searchComponents(needle, coreDir, components) {
|
|
59
|
-
const {
|
|
59
|
+
const {readDocView} = await import('../doc-compiler/read.mjs');
|
|
60
60
|
const fs = await import('node:fs');
|
|
61
61
|
const path = await import('node:path');
|
|
62
62
|
|
|
@@ -100,8 +100,10 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
100
100
|
// Levenshtein on name
|
|
101
101
|
const dist = levenshteinDistance(term, compLower);
|
|
102
102
|
if (dist === 1) addMatch(comp, 80, 'similar name (distance ' + dist + ')');
|
|
103
|
-
else if (dist === 2)
|
|
104
|
-
|
|
103
|
+
else if (dist === 2)
|
|
104
|
+
addMatch(comp, 40, 'similar name (distance ' + dist + ')');
|
|
105
|
+
else if (dist === 3)
|
|
106
|
+
addMatch(comp, 20, 'similar name (distance ' + dist + ')');
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
// --- Pass 2: Keyword + description matching (async, reads doc files) ---
|
|
@@ -124,15 +126,22 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
124
126
|
for (const entry of entries) {
|
|
125
127
|
if (!entry.isDirectory()) continue;
|
|
126
128
|
const nested = path.join(srcDir, entry.name, comp, comp + '.doc.mjs');
|
|
127
|
-
if (fs.existsSync(nested)) {
|
|
129
|
+
if (fs.existsSync(nested)) {
|
|
130
|
+
docPath = nested;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
128
133
|
}
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
if (!docPath) continue;
|
|
132
137
|
|
|
133
138
|
try {
|
|
134
|
-
|
|
135
|
-
const docs =
|
|
139
|
+
// Only the legacy `docs` export has ever been indexed here.
|
|
140
|
+
const docs = await readDocView(docPath, {
|
|
141
|
+
root: 'components',
|
|
142
|
+
loader: 'native',
|
|
143
|
+
exports: ['docs'],
|
|
144
|
+
});
|
|
136
145
|
if (!docs) continue;
|
|
137
146
|
|
|
138
147
|
// Keyword matching
|
|
@@ -157,8 +166,10 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
const dist = levenshteinDistance(term, kwLower);
|
|
160
|
-
if (dist === 1)
|
|
161
|
-
|
|
169
|
+
if (dist === 1)
|
|
170
|
+
addMatch(comp, 70, 'keyword "' + kw + '" (distance ' + dist + ')');
|
|
171
|
+
else if (dist === 2)
|
|
172
|
+
addMatch(comp, 30, 'keyword "' + kw + '" (distance ' + dist + ')');
|
|
162
173
|
}
|
|
163
174
|
}
|
|
164
175
|
|
|
@@ -191,8 +202,27 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
191
202
|
}
|
|
192
203
|
}
|
|
193
204
|
|
|
194
|
-
const results = Array.from(scored.values())
|
|
195
|
-
|
|
205
|
+
const results = Array.from(scored.values()).sort(
|
|
206
|
+
(a, b) => b.score - a.score || a.name.localeCompare(b.name),
|
|
207
|
+
);
|
|
196
208
|
|
|
197
209
|
return results;
|
|
198
210
|
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* The first sentence of a text, whitespace collapsed. A period after "e.g" or
|
|
214
|
+
* "i.e" does not end the sentence. Used where a description has to fit on one
|
|
215
|
+
* line: `build`'s alternatives and its text kit.
|
|
216
|
+
* @param {string} text
|
|
217
|
+
* @returns {string}
|
|
218
|
+
*/
|
|
219
|
+
export function firstSentence(text) {
|
|
220
|
+
const flat = String(text ?? '').replace(/\s+/g, ' ').trim();
|
|
221
|
+
const ends = /[.!?](?=\s|$)/g;
|
|
222
|
+
for (let m = ends.exec(flat); m; m = ends.exec(flat)) {
|
|
223
|
+
if (!/\b(e\.g|i\.e)$/i.test(flat.slice(0, m.index))) {
|
|
224
|
+
return flat.slice(0, m.index + 1);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return flat;
|
|
228
|
+
}
|
|
@@ -20,7 +20,8 @@ import {PAYLOAD_PROPS} from './validate.mjs';
|
|
|
20
20
|
import {mergeImports, renderImport, prepareSpliceModule} from './splice.mjs';
|
|
21
21
|
|
|
22
22
|
const INDENT = ' ';
|
|
23
|
-
|
|
23
|
+
/** The most copies one `*N` repeat expands to. */
|
|
24
|
+
export const MAX_REPEAT = 10000;
|
|
24
25
|
|
|
25
26
|
/** @param {string | null | undefined} text */
|
|
26
27
|
function slugify(text) {
|
|
@@ -544,7 +545,7 @@ class Emitter {
|
|
|
544
545
|
const flags = hint.flags.length > 0 ? ` (+${hint.flags.join(' +')})` : '';
|
|
545
546
|
const arg = hint.arg ? `:${hint.arg}` : '';
|
|
546
547
|
return [
|
|
547
|
-
`${pad}{/* TODO(xle): content block '${hint.block.name}'${flags}${arg} — scaffold it with: astryx template ${hint.block.name} */}`,
|
|
548
|
+
`${pad}{/* TODO(xle): content block '${hint.block.name}'${flags}${arg} — scaffold it with: astryx template ${hint.block.name} --type block */}`,
|
|
548
549
|
];
|
|
549
550
|
}
|
|
550
551
|
this.todos.push(`unresolved hint {${hint.name}}`);
|
|
@@ -642,7 +643,7 @@ class Emitter {
|
|
|
642
643
|
/** @type {import('./xle-ast').XLENode[]} */
|
|
643
644
|
const out = [];
|
|
644
645
|
for (const item of items) {
|
|
645
|
-
const count = item.repeat || 1;
|
|
646
|
+
const count = Math.min(item.repeat || 1, MAX_REPEAT);
|
|
646
647
|
for (let i = 1; i <= count; i++) {
|
|
647
648
|
const clone = count > 1 ? cloneItem(item) : item;
|
|
648
649
|
if (count > 1) {
|