@astryxdesign/cli 0.6.3-canary.98a2e4e → 0.6.3-canary.9c4d44d
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/README.md +117 -79
- 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 +16 -9
- package/api/build/build.test.mjs +197 -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 +165 -49
- 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 +6 -12
- package/api/component/_adapter.mjs +20 -10
- package/api/component/component.doc.mjs +13 -3
- package/api/component/component.mjs +91 -14
- package/api/component/component.test.mjs +38 -0
- package/api/component/component.type.d.mts +22 -11
- package/api/component/component.type.mjs +32 -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 +268 -47
- package/api/docs/_adapter.mjs +970 -149
- package/api/docs/compiled-topics.test.mjs +78 -0
- package/api/docs/detail/detail.d.mts +0 -15
- package/api/docs/detail/detail.mjs +22 -78
- package/api/docs/detail/section/section.mjs +39 -24
- package/api/docs/detail/section/section.test.mjs +19 -9
- package/api/docs/docs.d.mts +5 -3
- package/api/docs/docs.doc.mjs +39 -17
- package/api/docs/docs.mjs +44 -8
- package/api/docs/docs.test.mjs +158 -4
- package/api/docs/docs.type.d.mts +185 -6
- package/api/docs/docs.type.mjs +127 -13
- package/api/docs/index/index.mjs +15 -6
- package/api/docs/index/index.test.mjs +1 -1
- package/api/docs/integration-tree.test.mjs +555 -0
- package/api/docs/integrationDocs.test.mjs +14 -14
- 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 +54 -4
- package/api/doctor/doctor.doc.mjs +1 -0
- package/api/doctor/doctor.mjs +332 -21
- package/api/doctor/doctor.test.mjs +420 -7
- package/api/gap-report/gap-report.doc.mjs +8 -4
- package/api/hook/_adapter.mjs +19 -5
- package/api/hook/hook.doc.mjs +1 -0
- package/api/hook/hook.type.d.mts +3 -3
- package/api/hook/hook.type.mjs +11 -11
- package/api/hook/list/list.d.mts +1 -1
- package/api/hook/list/list.mjs +69 -17
- package/api/index.d.mts +1 -1
- package/api/index.mjs +1 -0
- package/api/init/init.doc.mjs +6 -1
- 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 +34 -64
- package/api/integration/add-theme.test.mjs +105 -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 +2 -0
- 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 +2 -1
- package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
- package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
- package/api/integration/pack-check.mjs +83 -7
- package/api/integration/pack-check.test.mjs +387 -47
- package/api/integration/pack-check.type.d.mts +26 -2
- package/api/integration/pack-check.type.mjs +14 -1
- 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 +1 -0
- package/api/json/envelope-types.test.mjs +76 -0
- package/api/json/index.ts +2 -0
- package/api/json/isError.doc.mjs +1 -0
- 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 +61 -10
- package/api/search/search.doc.mjs +8 -2
- package/api/search/search.mjs +471 -83
- package/api/search/search.test.mjs +124 -1
- package/api/search/search.type.d.mts +14 -2
- package/api/search/search.type.mjs +5 -2
- package/api/swizzle/copy/copy.mjs +28 -11
- package/api/swizzle/swizzle.doc.mjs +2 -1
- package/api/swizzle/swizzle.type.d.mts +2 -2
- package/api/swizzle/swizzle.type.mjs +2 -2
- package/api/template/copy/copy.mjs +17 -23
- package/api/template/copy/copy.test.mjs +17 -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.doc.mjs +30 -8
- package/api/template/template.mjs +45 -8
- package/api/template/template.type.d.mts +11 -13
- 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 +1 -0
- 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 +4 -3
- package/api/theme/themeBuild.doc.mjs +8 -4
- package/api/theme/themeList.doc.mjs +6 -3
- package/api/theme/themeListAvailable.doc.mjs +5 -3
- package/api/theme/themePaletteGenerate.doc.mjs +1 -0
- package/api/theme/themeTargets.doc.mjs +1 -0
- package/api/theme/themeTemplate.doc.mjs +6 -2
- package/api/upgrade/_adapter.d.mts +32 -5
- package/api/upgrade/_adapter.mjs +124 -73
- package/api/upgrade/list/list.mjs +2 -1
- package/api/upgrade/list/list.test.mjs +73 -0
- package/api/upgrade/provider-agreement.test.mjs +152 -0
- package/api/upgrade/run/run.mjs +356 -59
- package/api/upgrade/status/status.mjs +2 -2
- package/api/upgrade/upgrade.doc.mjs +8 -2
- package/api/upgrade/upgrade.type.d.mts +42 -4
- package/api/upgrade/upgrade.type.mjs +26 -10
- package/assets/codemods/__tests__/runner.test.mjs +330 -8
- package/assets/codemods/integration-discovery.mjs +48 -4
- package/assets/codemods/integration-discovery.test.mjs +73 -0
- package/assets/codemods/integration-runner.mjs +56 -4
- package/assets/codemods/integration-runner.protection.test.mjs +153 -0
- package/assets/codemods/run-codemod.mjs +177 -34
- package/assets/codemods/runner.mjs +350 -102
- 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/next/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
- package/assets/codemods/transforms/next/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
- package/assets/codemods/transforms/next/index.mjs +19 -1
- package/assets/codemods/transforms/next/migrate-native-picker-to-presentation.mjs +148 -0
- package/assets/codemods/transforms/next/migrate-theme-catalog-to-descriptors.mjs +141 -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/docs/getting-started.doc.mjs +2 -2
- package/assets/docs/internationalization.doc.mjs +7 -5
- package/assets/docs/layout.doc.dense.mjs +2 -2
- package/assets/docs/layout.doc.mjs +1 -1
- package/assets/docs/principles.doc.mjs +6 -6
- package/assets/docs/styling-libraries.doc.mjs +4 -4
- package/assets/docs/styling.doc.mjs +4 -4
- package/assets/docs/theme.doc.mjs +5 -5
- package/assets/docs/tokens.doc.mjs +1 -1
- package/assets/docs/tree/api.doc.mjs +30 -0
- package/assets/docs/tree/cli.doc.mjs +23 -0
- package/assets/docs/tree/commands.doc.mjs +25 -0
- package/assets/docs/{cli-integrations.doc.mjs → tree/integrations.doc.mjs} +95 -39
- package/assets/docs/tree/integrations.test.mjs +62 -0
- package/assets/docs/tree/writing-docs.doc.mjs +286 -0
- package/assets/docs/working-with-ai.doc.mjs +4 -4
- 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/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 +10 -2
- 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 +7 -7
- 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 +240 -128
- package/authoring/doctypes/_schema.mjs +198 -16
- package/authoring/doctypes/base/graph-fields.doc.mjs +15 -6
- package/authoring/doctypes/base/type.ts +9 -4
- 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 +4 -4
- package/authoring/doctypes/component/component.doc.mjs +5 -2
- package/authoring/doctypes/component/parse.d.mts +2 -2
- package/authoring/doctypes/component/parse.mjs +1 -1
- package/authoring/doctypes/component/type.ts +3 -3
- 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 +2 -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 +4 -3
- 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 +3 -3
- package/authoring/doctypes/legacy.d.mts +6 -6
- package/authoring/doctypes/legacy.mjs +3 -3
- package/authoring/doctypes/load-contract.test.mjs +233 -0
- package/authoring/doctypes/namespace/namespace.doc.mjs +9 -9
- package/authoring/doctypes/namespace/parse.d.mts +2 -2
- package/authoring/doctypes/namespace/parse.mjs +1 -1
- package/authoring/doctypes/namespace/parse.test.mjs +23 -25
- package/authoring/doctypes/namespace/type.ts +6 -3
- package/authoring/doctypes/parse.d.mts +22 -20
- package/authoring/doctypes/parse.mjs +19 -14
- package/authoring/doctypes/reference/parse.d.mts +2 -2
- package/authoring/doctypes/reference/parse.mjs +1 -1
- package/authoring/doctypes/reference/reference.doc.mjs +39 -6
- package/authoring/doctypes/reference/type.ts +31 -14
- package/authoring/doctypes/schema/parse.d.mts +2 -2
- package/authoring/doctypes/schema/parse.mjs +1 -1
- package/authoring/doctypes/schema/schema.doc.mjs +1 -1
- package/authoring/doctypes/schema/type.ts +3 -4
- package/authoring/doctypes/template/parse.d.mts +94 -1
- package/authoring/doctypes/template/parse.mjs +37 -1
- package/authoring/doctypes/template/parse.test.mjs +18 -0
- package/authoring/doctypes/template/template.doc.mjs +13 -3
- package/authoring/doctypes/template/type.ts +12 -1
- 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 -11
- 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 +9 -9
- package/authoring/gap-report/parse.mjs +6 -6
- package/authoring/gap-report/type.ts +1 -1
- package/authoring/identity/identity.doc.mjs +3 -2
- package/authoring/identity/type.ts +10 -10
- package/authoring/index.d.mts +2 -0
- package/authoring/index.d.ts +32 -19
- package/authoring/index.mjs +3 -1
- package/authoring/integration/integration.doc.mjs +2 -2
- package/authoring/integration/parse.d.mts +2 -2
- package/authoring/integration/parse.mjs +1 -1
- package/authoring/integration/schema.d.mts +4 -4
- package/authoring/integration/schema.mjs +3 -3
- package/authoring/integration/type.ts +5 -11
- 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 +3 -8
- package/clients/cli/commands/component-ownership.test.mjs +3 -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 +1 -1
- 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 +21 -9
- package/clients/cli/commands/docs.mjs +184 -70
- package/clients/cli/commands/docs.test.mjs +120 -16
- package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +3 -3
- 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 +90 -8
- package/clients/cli/commands/doctor.doc.mjs +1 -1
- package/clients/cli/commands/doctor.mjs +59 -32
- package/clients/cli/commands/doctor.test.mjs +42 -0
- package/clients/cli/commands/gap-report.doc.mjs +17 -6
- 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 +20 -9
- 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 +32 -6
- package/clients/cli/commands/integration-authoring.test.mjs +13 -9
- package/clients/cli/commands/integration-pack.doc.mjs +1 -1
- package/clients/cli/commands/integration-real-world.test.mjs +3 -9
- package/clients/cli/commands/integration.doc.mjs +1 -1
- package/clients/cli/commands/integration.mjs +1 -0
- 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 +1 -1
- package/clients/cli/commands/no-prompt-wording.test.mjs +94 -0
- package/clients/cli/commands/search.doc.mjs +7 -4
- package/clients/cli/commands/search.mjs +28 -9
- package/clients/cli/commands/search.test.mjs +75 -0
- package/clients/cli/commands/setup-nudge.test.mjs +6 -0
- package/clients/cli/commands/swizzle.doc.mjs +3 -2
- package/clients/cli/commands/swizzle.path-safety.test.mjs +42 -0
- package/clients/cli/commands/template.doc.mjs +52 -13
- 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 +719 -0
- package/clients/cli/commands/theme-add.doc.mjs +4 -3
- 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 +3 -3
- package/clients/cli/commands/theme-palette-generate.test.mjs +19 -0
- package/clients/cli/commands/theme-palette.doc.mjs +1 -1
- package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
- package/clients/cli/commands/theme-targets.doc.mjs +1 -1
- 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 +1 -1
- package/clients/cli/commands/upgrade.ascii-output.test.mjs +87 -0
- package/clients/cli/commands/upgrade.doc.mjs +20 -8
- 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 +2 -0
- package/clients/cli/formatters/index.test.mjs +6 -0
- package/clients/cli/index.mjs +21 -30
- 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 +32 -6
- package/clients/cli/lib/doc-text-ascii.test.mjs +82 -0
- package/clients/cli/lib/exit-codes.test.mjs +97 -0
- package/clients/cli/lib/hook-format.mjs +19 -10
- package/clients/cli/lib/json-shim.mjs +38 -2
- 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 +32 -2
- package/clients/cli/lib/manifest.test.mjs +17 -0
- package/foundation/agent-docs/agent-docs.d.mts +7 -2
- package/foundation/agent-docs/agent-docs.mjs +82 -12
- package/foundation/agent-docs/agent-docs.path-safety.test.mjs +266 -4
- package/foundation/agent-docs/agent-docs.test.mjs +19 -1
- 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 +246 -89
- package/foundation/config/project.test.mjs +270 -21
- package/foundation/discovery/authoring-self-docs.d.mts +18 -0
- package/foundation/discovery/authoring-self-docs.mjs +38 -15
- package/foundation/discovery/authoring-self-docs.test.mjs +87 -12
- 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 +490 -0
- package/foundation/discovery/cli-self-docs.test.mjs +375 -0
- package/foundation/discovery/component-discovery.d.mts +38 -0
- package/foundation/discovery/component-discovery.mjs +48 -0
- package/foundation/discovery/component-loader.d.mts +35 -38
- package/foundation/discovery/component-loader.mjs +53 -222
- package/foundation/discovery/docs-discovery.d.mts +114 -9
- package/foundation/discovery/docs-discovery.mjs +239 -30
- package/foundation/discovery/docs-discovery.test.mjs +150 -35
- package/foundation/discovery/docs-output-budget.d.mts +2 -2
- package/foundation/discovery/docs-output-budget.mjs +1 -1
- package/foundation/discovery/docs-section-key.d.mts +28 -10
- package/foundation/discovery/docs-section-key.mjs +134 -33
- package/foundation/discovery/docs-section-key.test.mjs +41 -19
- 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 +772 -82
- 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 +1642 -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 +299 -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 +288 -0
- package/foundation/doc-compiler/tree.mjs +876 -0
- package/foundation/doc-compiler/tree.test.mjs +598 -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/integrations/autolink.d.mts +58 -1
- package/foundation/integrations/autolink.mjs +143 -52
- package/foundation/integrations/autolink.test.mjs +1 -1
- package/foundation/integrations/cli-requirement.d.mts +45 -0
- package/foundation/integrations/cli-requirement.mjs +154 -0
- package/foundation/integrations/cli-requirement.test.mjs +84 -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 +27 -24
- package/foundation/integrations/contribution-inventory.test.mjs +86 -27
- package/foundation/integrations/integration-warnings.d.mts +9 -2
- package/foundation/integrations/integration-warnings.mjs +51 -26
- package/foundation/integrations/integration-warnings.test.mjs +74 -1
- package/foundation/integrations/integrations.d.mts +17 -1
- package/foundation/integrations/integrations.mjs +52 -98
- package/foundation/integrations/integrations.test.mjs +31 -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.mjs +121 -29
- package/foundation/response/base.d.ts +8 -4
- 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 +13 -4
- package/foundation/response/error-codes.mjs +8 -2
- package/foundation/response/error-codes.test.mjs +137 -10
- package/foundation/response/json-contract.test.mjs +11 -0
- package/foundation/response/json.d.mts +4 -2
- package/foundation/response/json.mjs +8 -10
- package/foundation/response/response-types.doc.d.mts +5 -1
- package/foundation/response/response-types.doc.mjs +37 -22
- package/foundation/response/response-types.doc.test.mjs +158 -0
- package/foundation/response/response.doc.mjs +1 -1
- 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/assets/templates/themes/manifest.json +0 -95
- 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
|
@@ -11,10 +11,20 @@
|
|
|
11
11
|
|
|
12
12
|
import {z} from 'zod';
|
|
13
13
|
|
|
14
|
-
/** @typedef {import('./base/type').AuthoredDocGraphFields} AuthoredDocGraphFieldsType */
|
|
15
|
-
/** @typedef {import('./base/type').AuthoredDocKind} AuthoredDocKind */
|
|
16
|
-
/** @typedef {import('./namespace/type').NamespaceDoc} NamespaceDoc */
|
|
17
|
-
/** @typedef {import('./reference/type').ReferenceContentBlock} ReferenceContentBlock */
|
|
14
|
+
/** @typedef {import('./base/type.js').AuthoredDocGraphFields} AuthoredDocGraphFieldsType */
|
|
15
|
+
/** @typedef {import('./base/type.js').AuthoredDocKind} AuthoredDocKind */
|
|
16
|
+
/** @typedef {import('./namespace/type.js').NamespaceDoc} NamespaceDoc */
|
|
17
|
+
/** @typedef {import('./reference/type.js').ReferenceContentBlock} ReferenceContentBlock */
|
|
18
|
+
/** @typedef {import('./reference/type.js').GraphContentBlock} GraphContentBlock */
|
|
19
|
+
/** @typedef {import('./reference/type.js').ReferenceSection} ReferenceSection */
|
|
20
|
+
/** @typedef {import('./reference/type.js').ReferenceDoc} ReferenceDoc */
|
|
21
|
+
/** @typedef {import('./component/type.js').SingleComponentDoc} SingleComponentDoc */
|
|
22
|
+
/** @typedef {import('./base/type.js').ComponentPropDoc} ComponentPropDoc */
|
|
23
|
+
/** @typedef {import('./hook/type.js').HookDoc} HookDoc */
|
|
24
|
+
/** @typedef {import('./function/type.js').FunctionDoc} FunctionDoc */
|
|
25
|
+
/** @typedef {import('./schema/type.js').SchemaDoc} SchemaDoc */
|
|
26
|
+
/** @typedef {import('./command/type.js').CommandDoc} CommandDoc */
|
|
27
|
+
/** @typedef {import('./enum/type.js').EnumDoc} EnumDoc */
|
|
18
28
|
|
|
19
29
|
const nonEmptyString = z.string().min(1);
|
|
20
30
|
|
|
@@ -31,6 +41,12 @@ export const AuthoredDocKindSchema = z.enum([
|
|
|
31
41
|
'namespace',
|
|
32
42
|
]);
|
|
33
43
|
|
|
44
|
+
/**
|
|
45
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
46
|
+
* import('../_shared/contract.js').Equal<z.infer<typeof AuthoredDocKindSchema>, AuthoredDocKind>
|
|
47
|
+
* >} _AuthoredDocKindDriftLock
|
|
48
|
+
*/
|
|
49
|
+
|
|
34
50
|
/** Shared optional graph fields for every authored doc kind. */
|
|
35
51
|
export const AuthoredDocGraphFields = {
|
|
36
52
|
placement: z
|
|
@@ -48,8 +64,8 @@ export const AuthoredDocGraphFields = {
|
|
|
48
64
|
const _AuthoredDocGraphSchema = z.object(AuthoredDocGraphFields).strict();
|
|
49
65
|
|
|
50
66
|
/**
|
|
51
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
52
|
-
* import('../_shared/contract').MutuallyAssignable<
|
|
67
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
68
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
53
69
|
* z.infer<typeof _AuthoredDocGraphSchema>,
|
|
54
70
|
* AuthoredDocGraphFieldsType
|
|
55
71
|
* >
|
|
@@ -147,7 +163,7 @@ const ReferenceBlockSchema = z
|
|
|
147
163
|
})
|
|
148
164
|
.strict();
|
|
149
165
|
|
|
150
|
-
/** Runtime schema for
|
|
166
|
+
/** Runtime schema for the stable content-block union published in 0.6.x. */
|
|
151
167
|
export const ReferenceContentBlockSchema = z.discriminatedUnion('type', [
|
|
152
168
|
ProseBlockSchema,
|
|
153
169
|
HeadingBlockSchema,
|
|
@@ -155,26 +171,75 @@ export const ReferenceContentBlockSchema = z.discriminatedUnion('type', [
|
|
|
155
171
|
TableBlockSchema,
|
|
156
172
|
ListBlockSchema,
|
|
157
173
|
TokenReferenceBlockSchema,
|
|
174
|
+
]);
|
|
175
|
+
|
|
176
|
+
/** Runtime schema for graph-only blocks used by NamespaceDoc. */
|
|
177
|
+
export const GraphContentBlockSchema = z.discriminatedUnion('type', [
|
|
178
|
+
WorkflowBlockSchema,
|
|
179
|
+
CollectionBlockSchema,
|
|
180
|
+
ReferenceBlockSchema,
|
|
181
|
+
]);
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* A topic section's blocks: the stable union, plus a reference block, which a
|
|
185
|
+
* read inlines as the doc it includes.
|
|
186
|
+
*/
|
|
187
|
+
export const SectionContentBlockSchema = z.discriminatedUnion('type', [
|
|
188
|
+
ProseBlockSchema,
|
|
189
|
+
HeadingBlockSchema,
|
|
190
|
+
CodeBlockSchema,
|
|
191
|
+
TableBlockSchema,
|
|
192
|
+
ListBlockSchema,
|
|
193
|
+
TokenReferenceBlockSchema,
|
|
194
|
+
ReferenceBlockSchema,
|
|
195
|
+
]);
|
|
196
|
+
|
|
197
|
+
/** Namespace content accepts both stable reference blocks and graph-only blocks. */
|
|
198
|
+
export const NamespaceContentBlockSchema = z.discriminatedUnion('type', [
|
|
199
|
+
ProseBlockSchema,
|
|
200
|
+
HeadingBlockSchema,
|
|
201
|
+
CodeBlockSchema,
|
|
202
|
+
TableBlockSchema,
|
|
203
|
+
ListBlockSchema,
|
|
204
|
+
TokenReferenceBlockSchema,
|
|
158
205
|
WorkflowBlockSchema,
|
|
159
206
|
CollectionBlockSchema,
|
|
160
207
|
ReferenceBlockSchema,
|
|
161
208
|
]);
|
|
162
209
|
|
|
163
210
|
/**
|
|
164
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
165
|
-
* import('../_shared/contract').Equal<
|
|
211
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
212
|
+
* import('../_shared/contract.js').Equal<
|
|
166
213
|
* z.infer<typeof ReferenceContentBlockSchema>,
|
|
167
214
|
* ReferenceContentBlock
|
|
168
215
|
* >
|
|
169
216
|
* >} _ReferenceContentBlockDriftLock
|
|
170
217
|
*/
|
|
171
218
|
|
|
219
|
+
/**
|
|
220
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
221
|
+
* import('../_shared/contract.js').Equal<
|
|
222
|
+
* z.infer<typeof GraphContentBlockSchema>,
|
|
223
|
+
* GraphContentBlock
|
|
224
|
+
* >
|
|
225
|
+
* >} _GraphContentBlockDriftLock
|
|
226
|
+
*/
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
230
|
+
* import('../_shared/contract.js').Equal<
|
|
231
|
+
* z.infer<typeof SectionContentBlockSchema>,
|
|
232
|
+
* ReferenceSection['content'][number]
|
|
233
|
+
* >
|
|
234
|
+
* >} _SectionContentBlockDriftLock
|
|
235
|
+
*/
|
|
236
|
+
|
|
172
237
|
const ReferenceSectionSchema = z
|
|
173
238
|
.object({
|
|
174
239
|
id: nonEmptyString.optional(),
|
|
175
240
|
title: nonEmptyString,
|
|
176
241
|
category: z.string().optional(),
|
|
177
|
-
content: z.array(
|
|
242
|
+
content: z.array(SectionContentBlockSchema),
|
|
178
243
|
previewType: z
|
|
179
244
|
.enum([
|
|
180
245
|
'swatch',
|
|
@@ -245,11 +310,58 @@ const ComponentBaseSchema = z
|
|
|
245
310
|
})
|
|
246
311
|
.passthrough();
|
|
247
312
|
|
|
248
|
-
/**
|
|
313
|
+
/**
|
|
314
|
+
* One entry in a group doc's `components`: a full ComponentEntry or a
|
|
315
|
+
* name-only ComponentRef. Readers look every entry up by `name`, so that much
|
|
316
|
+
* is checked here; the rest passes through, as on an unstamped doc.
|
|
317
|
+
*/
|
|
318
|
+
const ComponentGroupEntrySchema = z
|
|
319
|
+
.object({name: z.string().min(1, 'component name is required')})
|
|
320
|
+
.passthrough();
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* New-format stamped component doc (`type: 'component'`): one component's
|
|
324
|
+
* `props`, or the `components` a group doc documents together. These are the
|
|
325
|
+
* shapes the published ComponentDoc type allows, and the ones an unstamped doc
|
|
326
|
+
* may already take.
|
|
327
|
+
*/
|
|
249
328
|
export const ComponentDocKindSchema = ComponentBaseSchema.extend({
|
|
250
|
-
props: z.array(PropSchema),
|
|
329
|
+
props: z.array(PropSchema).optional(),
|
|
330
|
+
components: z.array(ComponentGroupEntrySchema).optional(),
|
|
331
|
+
}).superRefine((doc, context) => {
|
|
332
|
+
if (doc.props == null && doc.components == null) {
|
|
333
|
+
context.addIssue({
|
|
334
|
+
code: 'custom',
|
|
335
|
+
path: ['props'],
|
|
336
|
+
message:
|
|
337
|
+
'expected the props array, or `components` for a doc that groups several components',
|
|
338
|
+
});
|
|
339
|
+
}
|
|
251
340
|
});
|
|
252
341
|
|
|
342
|
+
/**
|
|
343
|
+
* A stamped component doc as it loads. The loader accepts what the unstamped
|
|
344
|
+
* format always accepted, so stamping an existing doc never breaks it:
|
|
345
|
+
* `displayName` may be missing, `category` is any string, `usage`, `theming`,
|
|
346
|
+
* `playground` and `examples` pass through unchecked, and a doc has `props`,
|
|
347
|
+
* `components`, or both; each `components` entry needs only a `name`. Every
|
|
348
|
+
* other field matches the published type.
|
|
349
|
+
*
|
|
350
|
+
* @typedef {Omit<SingleComponentDoc,
|
|
351
|
+
* 'type' | 'displayName' | 'category' | 'usage' | 'theming' | 'examples' | 'playground' | 'props'>
|
|
352
|
+
* & {type: 'component', displayName?: string, category?: string, usage?: unknown,
|
|
353
|
+
* theming?: unknown, examples?: unknown[], playground?: unknown,
|
|
354
|
+
* props?: ComponentPropDoc[], components?: Array<{name: string}>}} LoadedComponentDoc
|
|
355
|
+
*/
|
|
356
|
+
/**
|
|
357
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
358
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
359
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof ComponentDocKindSchema>>,
|
|
360
|
+
* import('../_shared/contract.js').NamedFields<LoadedComponentDoc>
|
|
361
|
+
* >
|
|
362
|
+
* >} _ComponentDocDriftLock
|
|
363
|
+
*/
|
|
364
|
+
|
|
253
365
|
/** Return entry for generalized function docs. */
|
|
254
366
|
const FunctionReturnSchema = z
|
|
255
367
|
.object({
|
|
@@ -269,6 +381,28 @@ export const FunctionDocKindSchema = z
|
|
|
269
381
|
})
|
|
270
382
|
.passthrough();
|
|
271
383
|
|
|
384
|
+
/**
|
|
385
|
+
* A stamped function doc as it loads: as with components, `displayName` may be
|
|
386
|
+
* missing and `usage` passes through unchecked.
|
|
387
|
+
*
|
|
388
|
+
* @typedef {Omit<FunctionDoc, 'type' | 'displayName' | 'usage'>
|
|
389
|
+
* & {type: 'function', displayName?: string, usage?: unknown}} LoadedFunctionDoc
|
|
390
|
+
*/
|
|
391
|
+
/**
|
|
392
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
393
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
394
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof FunctionDocKindSchema>>,
|
|
395
|
+
* import('../_shared/contract.js').NamedFields<LoadedFunctionDoc>
|
|
396
|
+
* >
|
|
397
|
+
* >} _FunctionDocDriftLock
|
|
398
|
+
*/
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Every HookDoc is a FunctionDoc, so the one function schema covers both.
|
|
402
|
+
*
|
|
403
|
+
* @typedef {import('../_shared/contract.js').Expect<[HookDoc] extends [FunctionDoc] ? true : false>} _HookDocIsFunctionDocLock
|
|
404
|
+
*/
|
|
405
|
+
|
|
272
406
|
/**
|
|
273
407
|
* Stamped generic reference/topic doc (`type: 'generic'`). `title` and
|
|
274
408
|
* `sections` stay optional at this parser boundary for docs produced by the
|
|
@@ -308,9 +442,30 @@ export const GenericDocKindSchema = z
|
|
|
308
442
|
});
|
|
309
443
|
});
|
|
310
444
|
|
|
445
|
+
/**
|
|
446
|
+
* A stamped generic doc as the load check accepts it. `title`, `description`
|
|
447
|
+
* and `sections` may be missing, as in docs the v0.3.0 factory-removal codemod
|
|
448
|
+
* produced; `parseReference` then fills them (title from `displayName` or
|
|
449
|
+
* `name`, an empty description, no sections), so its result is a full
|
|
450
|
+
* ReferenceDoc. Only a doc with a description and sections is a usable topic
|
|
451
|
+
* (see `problemsInTopic`).
|
|
452
|
+
*
|
|
453
|
+
* @typedef {Omit<ReferenceDoc, 'type' | 'title' | 'description' | 'sections'>
|
|
454
|
+
* & {type: 'generic'}
|
|
455
|
+
* & Partial<Pick<ReferenceDoc, 'title' | 'description' | 'sections'>>} LoadedReferenceDoc
|
|
456
|
+
*/
|
|
457
|
+
/**
|
|
458
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
459
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
460
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof GenericDocKindSchema>>,
|
|
461
|
+
* import('../_shared/contract.js').NamedFields<LoadedReferenceDoc>
|
|
462
|
+
* >
|
|
463
|
+
* >} _ReferenceDocDriftLock
|
|
464
|
+
*/
|
|
465
|
+
|
|
311
466
|
/** Recursive field descriptor for a SchemaDoc. */
|
|
312
467
|
const SchemaFieldSchema =
|
|
313
|
-
/** @type {import('zod').ZodType<import('./schema/type').SchemaFieldDoc>} */ (
|
|
468
|
+
/** @type {import('zod').ZodType<import('./schema/type.js').SchemaFieldDoc>} */ (
|
|
314
469
|
z.lazy(() =>
|
|
315
470
|
z
|
|
316
471
|
.object({
|
|
@@ -351,6 +506,15 @@ export const SchemaDocKindSchema = z
|
|
|
351
506
|
})
|
|
352
507
|
.passthrough();
|
|
353
508
|
|
|
509
|
+
/**
|
|
510
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
511
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
512
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof SchemaDocKindSchema>>,
|
|
513
|
+
* import('../_shared/contract.js').NamedFields<SchemaDoc & {type: 'schema'}>
|
|
514
|
+
* >
|
|
515
|
+
* >} _SchemaDocDriftLock
|
|
516
|
+
*/
|
|
517
|
+
|
|
354
518
|
/** New stamped command doc (`type: 'command'`). */
|
|
355
519
|
export const CommandDocKindSchema = z
|
|
356
520
|
.object({
|
|
@@ -411,6 +575,15 @@ export const CommandDocKindSchema = z
|
|
|
411
575
|
})
|
|
412
576
|
.passthrough();
|
|
413
577
|
|
|
578
|
+
/**
|
|
579
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
580
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
581
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof CommandDocKindSchema>>,
|
|
582
|
+
* import('../_shared/contract.js').NamedFields<CommandDoc & {type: 'command'}>
|
|
583
|
+
* >
|
|
584
|
+
* >} _CommandDocDriftLock
|
|
585
|
+
*/
|
|
586
|
+
|
|
414
587
|
/** New stamped enum doc (`type: 'enum'`). */
|
|
415
588
|
export const EnumDocKindSchema = z
|
|
416
589
|
.object({
|
|
@@ -432,6 +605,15 @@ export const EnumDocKindSchema = z
|
|
|
432
605
|
})
|
|
433
606
|
.passthrough();
|
|
434
607
|
|
|
608
|
+
/**
|
|
609
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
610
|
+
* import('../_shared/contract.js').MutuallyAssignable<
|
|
611
|
+
* import('../_shared/contract.js').NamedFields<z.infer<typeof EnumDocKindSchema>>,
|
|
612
|
+
* import('../_shared/contract.js').NamedFields<EnumDoc & {type: 'enum'}>
|
|
613
|
+
* >
|
|
614
|
+
* >} _EnumDocDriftLock
|
|
615
|
+
*/
|
|
616
|
+
|
|
435
617
|
const NamespaceSlotSchema = z
|
|
436
618
|
.object({
|
|
437
619
|
title: nonEmptyString,
|
|
@@ -474,7 +656,7 @@ export const NamespaceDocKindSchema = z
|
|
|
474
656
|
.strict(),
|
|
475
657
|
)
|
|
476
658
|
.optional(),
|
|
477
|
-
blocks: z.array(
|
|
659
|
+
blocks: z.array(NamespaceContentBlockSchema).optional(),
|
|
478
660
|
})
|
|
479
661
|
.strict()
|
|
480
662
|
.superRefine((doc, context) => {
|
|
@@ -514,8 +696,8 @@ export const NamespaceDocKindSchema = z
|
|
|
514
696
|
});
|
|
515
697
|
|
|
516
698
|
/**
|
|
517
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
518
|
-
* import('../_shared/contract').Equal<
|
|
699
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
700
|
+
* import('../_shared/contract.js').Equal<
|
|
519
701
|
* z.infer<typeof NamespaceDocKindSchema>,
|
|
520
702
|
* NamespaceDoc
|
|
521
703
|
* >
|
|
@@ -12,25 +12,27 @@ export const doc = {
|
|
|
12
12
|
displayName: 'Authored doc graph fields',
|
|
13
13
|
namespace: 'authoring',
|
|
14
14
|
description:
|
|
15
|
-
|
|
15
|
+
"Placement, compatibility aliases, and audience: fields every authored doc kind declares for the docs tree. The docs tree reads `placement` for every guide, the CLI's and each integration's; aliases and audience are not built yet. A reference topic outside the docs tree that sets one fails to load, and other doc kinds accept them and ignore them.",
|
|
16
16
|
appliesTo: 'Every supported .doc.mjs object',
|
|
17
17
|
fields: [
|
|
18
18
|
{
|
|
19
19
|
name: 'placement',
|
|
20
20
|
type: 'DocPlacement',
|
|
21
21
|
description:
|
|
22
|
-
'
|
|
22
|
+
"Names the doc's one parent in the docs tree: a namespace of the same package, one of its slots, and an order. Read for every guide, the CLI's and each integration's: a guide with `placement` gets a route in the tree instead of a flat topic name, and cannot also `replaces` or `extends` a topic. In the CLI's own topic directory a topic that sets it fails to load: the CLI keeps its guides in its docs tree directory. Commands, API functions, schemas, and enums do not set it: the tree adopts each by its `namespace`.",
|
|
23
23
|
fields: [
|
|
24
24
|
{
|
|
25
25
|
name: 'placement.parent',
|
|
26
26
|
type: 'string',
|
|
27
|
-
description:
|
|
27
|
+
description:
|
|
28
|
+
'The parent namespace: `namespace:<name>` in the same package.',
|
|
28
29
|
required: true,
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
32
|
name: 'placement.slot',
|
|
32
33
|
type: 'string',
|
|
33
|
-
description:
|
|
34
|
+
description:
|
|
35
|
+
"A slot the parent namespace declares; it must accept this doc's kind. Optional when the parent has one slot.",
|
|
34
36
|
},
|
|
35
37
|
{
|
|
36
38
|
name: 'placement.order',
|
|
@@ -43,13 +45,20 @@ export const doc = {
|
|
|
43
45
|
name: 'aliases',
|
|
44
46
|
type: 'string[]',
|
|
45
47
|
description:
|
|
46
|
-
'Prior names or routes
|
|
48
|
+
'Prior names or routes the docs tree will keep resolving to this doc, without creating another identity. Not read yet: a topic that sets it fails to load.',
|
|
47
49
|
},
|
|
48
50
|
{
|
|
49
51
|
name: 'audience',
|
|
50
52
|
type: "'public' | 'internal'",
|
|
51
|
-
description:
|
|
53
|
+
description:
|
|
54
|
+
"Which docs bundle includes this doc ('public' when omitted). Not read yet: a topic that sets it fails to load.",
|
|
52
55
|
default: "'public'",
|
|
53
56
|
},
|
|
54
57
|
],
|
|
58
|
+
notes: [
|
|
59
|
+
{
|
|
60
|
+
type: 'prose',
|
|
61
|
+
text: 'Unknown fields: `component`, `function`, `generic`, `schema`, `command` and `enum` docs accept a field they do not know, and nothing reads it, so a doc written for a newer CLI still loads here. `page`, `block` and `namespace` docs refuse one, as do `theme` descriptors. Sections and content blocks refuse one in every doc.',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
55
64
|
};
|
|
@@ -30,13 +30,18 @@ export interface DocPlacement {
|
|
|
30
30
|
order?: number;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Tree metadata shared by every authored doc kind. The docs tree reads
|
|
35
|
+
* `placement` for every guide, the CLI's and each integration's
|
|
36
|
+
* (spec:AST-046); nothing reads `aliases` or `audience` yet. A reference topic
|
|
37
|
+
* outside the docs tree that sets one fails to load.
|
|
38
|
+
*/
|
|
34
39
|
export interface AuthoredDocGraphFields {
|
|
35
|
-
/**
|
|
40
|
+
/** The doc's one parent in the docs tree: a namespace of its own package. */
|
|
36
41
|
placement?: DocPlacement;
|
|
37
|
-
/** Prior routes or names
|
|
42
|
+
/** Prior routes or names the docs tree will keep resolving. Not read yet. */
|
|
38
43
|
aliases?: string[];
|
|
39
|
-
/**
|
|
44
|
+
/** Docs bundle audience; omit for public docs. Not read yet. */
|
|
40
45
|
audience?: DocAudience;
|
|
41
46
|
}
|
|
42
47
|
|
|
@@ -54,7 +54,7 @@ export const doc = {
|
|
|
54
54
|
name: 'namespace',
|
|
55
55
|
type: 'string',
|
|
56
56
|
description:
|
|
57
|
-
"
|
|
57
|
+
"Optional in the type, but every doc the CLI ships declares it. The group that reads this doc. The CLI's commands use 'cli/commands', which the docs tree adopts: each is the leaf `cli/commands/<name>`. Every command doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'aliases',
|
|
@@ -135,8 +135,9 @@ export const doc = {
|
|
|
135
135
|
},
|
|
136
136
|
{
|
|
137
137
|
name: 'options[].default',
|
|
138
|
-
type: 'string',
|
|
139
|
-
description:
|
|
138
|
+
type: 'string | boolean | string[]',
|
|
139
|
+
description:
|
|
140
|
+
'Default value: a string, a boolean, or a list of strings.',
|
|
140
141
|
},
|
|
141
142
|
{
|
|
142
143
|
name: 'options[].cliOnly',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
-
/** @typedef {import('../types').CommandDoc} CommandDoc */
|
|
4
|
+
/** @typedef {import('../types.js').CommandDoc} CommandDoc */
|
|
5
5
|
/**
|
|
6
6
|
* Validate an unknown value as a stamped command doc, or throw.
|
|
7
7
|
*
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
* @returns {CommandDoc}
|
|
11
11
|
*/
|
|
12
12
|
export function parseCommand(input: unknown, label?: string): CommandDoc;
|
|
13
|
-
export type CommandDoc = import("../types").CommandDoc;
|
|
13
|
+
export type CommandDoc = import("../types.js").CommandDoc;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import {CommandDocKindSchema} from '../_schema.mjs';
|
|
9
9
|
import {formatZodError} from '../../_shared/errors.mjs';
|
|
10
10
|
|
|
11
|
-
/** @typedef {import('../types').CommandDoc} CommandDoc */
|
|
11
|
+
/** @typedef {import('../types.js').CommandDoc} CommandDoc */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Validate an unknown value as a stamped command doc, or throw.
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* `--help`. Colocated at `clients/cli/commands/<name>.doc.mjs`.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type {AuthoredDocGraphFields} from '../base/type';
|
|
13
|
-
import type {ReferenceContentBlock} from '../reference/type';
|
|
12
|
+
import type {AuthoredDocGraphFields} from '../base/type.js';
|
|
13
|
+
import type {ReferenceContentBlock} from '../reference/type.js';
|
|
14
14
|
|
|
15
15
|
/** A positional argument. `param` links it to a FunctionDoc param for its description. */
|
|
16
16
|
export interface CommandArgDoc {
|
|
@@ -65,7 +65,7 @@ export interface CommandDoc extends AuthoredDocGraphFields {
|
|
|
65
65
|
summary: string;
|
|
66
66
|
/** Longer help body / when-to-use. */
|
|
67
67
|
description?: string;
|
|
68
|
-
/**
|
|
68
|
+
/** The group that reads this doc. The CLI's commands use 'cli/commands', which the docs tree adopts: each is the leaf `cli/commands/<name>`. Every command doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads. */
|
|
69
69
|
namespace?: string;
|
|
70
70
|
/** Alternate slugs that also resolve to this doc. */
|
|
71
71
|
aliases?: string[];
|
|
@@ -81,7 +81,7 @@ export interface CommandDoc extends AuthoredDocGraphFields {
|
|
|
81
81
|
examples?: CommandExampleDoc[];
|
|
82
82
|
/** Documented exit codes. */
|
|
83
83
|
exitCodes?: {code: number; when: string}[];
|
|
84
|
-
/** Related command names. */
|
|
84
|
+
/** Related command names; the CLI links each to its doc. */
|
|
85
85
|
related?: string[];
|
|
86
86
|
/** Freeform prose/notes. */
|
|
87
87
|
notes?: ReferenceContentBlock[];
|
|
@@ -124,8 +124,7 @@ export const doc = {
|
|
|
124
124
|
name: 'usage',
|
|
125
125
|
type: 'UsageDoc',
|
|
126
126
|
description:
|
|
127
|
-
'Component usage documentation: concise summary, best practices, component-specific accessibility requirements, and optional visual anatomy.
|
|
128
|
-
required: true,
|
|
127
|
+
'Component usage documentation: concise summary, best practices, component-specific accessibility requirements, and optional visual anatomy. Required on a component doc; optional on a sub-component doc (`subComponentOf`), which uses its description instead.',
|
|
129
128
|
fields: [
|
|
130
129
|
{
|
|
131
130
|
name: 'usage.description',
|
|
@@ -242,6 +241,10 @@ export const docs = {
|
|
|
242
241
|
},
|
|
243
242
|
],
|
|
244
243
|
notes: [
|
|
244
|
+
{
|
|
245
|
+
type: 'prose',
|
|
246
|
+
text: "When it loads, a stamped component doc is checked as loosely as an unstamped one, so adding `type: 'component'` to an existing doc never breaks it: `displayName` may be missing, `category` may be any string, and `usage`, `theming`, `playground` and `examples` are not checked. Each entry in a group doc's `components` must have a `name`. Write to the type anyway; it is the contract.",
|
|
247
|
+
},
|
|
245
248
|
{
|
|
246
249
|
type: 'prose',
|
|
247
250
|
text: 'ComponentDoc is a discriminated union of three shapes that all extend ComponentBaseDoc. Pick the variant by which key you set: `props` (single), `components` (multi), or `subComponentOf` (sub).',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
-
/** @typedef {import('../types').ComponentDoc} ComponentDoc */
|
|
4
|
+
/** @typedef {import('../types.js').ComponentDoc} ComponentDoc */
|
|
5
5
|
/**
|
|
6
6
|
* Validate an unknown value as a stamped component doc, or throw.
|
|
7
7
|
*
|
|
@@ -10,4 +10,4 @@
|
|
|
10
10
|
* @returns {ComponentDoc}
|
|
11
11
|
*/
|
|
12
12
|
export function parseComponent(input: unknown, label?: string): ComponentDoc;
|
|
13
|
-
export type ComponentDoc = import("../types").ComponentDoc;
|
|
13
|
+
export type ComponentDoc = import("../types.js").ComponentDoc;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import {ComponentDocKindSchema} from '../_schema.mjs';
|
|
9
9
|
import {formatZodError} from '../../_shared/errors.mjs';
|
|
10
10
|
|
|
11
|
-
/** @typedef {import('../types').ComponentDoc} ComponentDoc */
|
|
11
|
+
/** @typedef {import('../types.js').ComponentDoc} ComponentDoc */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Validate an unknown value as a stamped component doc, or throw.
|
|
@@ -19,7 +19,7 @@ import type {
|
|
|
19
19
|
HookReturnDoc,
|
|
20
20
|
RegistryDocIdentity,
|
|
21
21
|
UsageDoc,
|
|
22
|
-
} from '../base/type';
|
|
22
|
+
} from '../base/type.js';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Shared fields between single-component and multi-component docs.
|
|
@@ -146,10 +146,10 @@ export interface ComponentBaseDoc extends AuthoredDocGraphFields {
|
|
|
146
146
|
/**
|
|
147
147
|
* The documentation type for a component directory's {Name}.doc.mjs file.
|
|
148
148
|
*
|
|
149
|
-
* Every .doc.mjs
|
|
149
|
+
* Every new .doc.mjs default-exports a stamped object of this type:
|
|
150
150
|
*
|
|
151
151
|
* /\*\* \@type \{import('@astryxdesign/cli/authoring').ComponentDoc\} *\/
|
|
152
|
-
* export
|
|
152
|
+
* export default \{ type: 'component', ... \};
|
|
153
153
|
*
|
|
154
154
|
* Use SingleComponentDoc (with `props`) for single-component directories.
|
|
155
155
|
* Use MultiComponentDoc (with `components`) for multi-component directories.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file Tests for the new authoring doc-types (schema/command/enum) and the
|
|
4
|
+
* @file Tests for the new authoring doc-types (schema/command/enum/theme) and the
|
|
5
5
|
* generalized `function` doc (hooks + CLI/API functions sharing the schema).
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
parseCommand,
|
|
13
13
|
parseEnum,
|
|
14
14
|
parseFunction,
|
|
15
|
+
parseTheme,
|
|
15
16
|
} from '../index.mjs';
|
|
16
17
|
|
|
17
18
|
describe('SchemaDoc', () => {
|
|
@@ -22,13 +23,21 @@ describe('SchemaDoc', () => {
|
|
|
22
23
|
description: 'Project config.',
|
|
23
24
|
appliesTo: 'astryx.config.{ts,mjs,js}',
|
|
24
25
|
fields: [
|
|
25
|
-
{
|
|
26
|
+
{
|
|
27
|
+
name: 'integrations',
|
|
28
|
+
type: 'string[]',
|
|
29
|
+
description: 'Packages to load.',
|
|
30
|
+
},
|
|
26
31
|
{
|
|
27
32
|
name: 'hooks',
|
|
28
33
|
type: 'object',
|
|
29
34
|
description: 'Lifecycle hooks.',
|
|
30
35
|
fields: [
|
|
31
|
-
{
|
|
36
|
+
{
|
|
37
|
+
name: 'hooks.postCodemod',
|
|
38
|
+
type: 'PostCodemodHook[]',
|
|
39
|
+
description: 'Runs after codemods.',
|
|
40
|
+
},
|
|
32
41
|
],
|
|
33
42
|
},
|
|
34
43
|
],
|
|
@@ -63,8 +72,16 @@ describe('CommandDoc', () => {
|
|
|
63
72
|
fn: 'search',
|
|
64
73
|
args: [{name: 'query', param: 'query', required: true}],
|
|
65
74
|
options: [
|
|
66
|
-
{
|
|
67
|
-
|
|
75
|
+
{
|
|
76
|
+
flag: '--type <domain>',
|
|
77
|
+
param: 'options.type',
|
|
78
|
+
choices: ['component', 'hook'],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
flag: '--json',
|
|
82
|
+
cliOnly: true,
|
|
83
|
+
description: 'Emit the typed JSON envelope.',
|
|
84
|
+
},
|
|
68
85
|
],
|
|
69
86
|
examples: [{label: 'Terminal', cli: 'astryx search button --json'}],
|
|
70
87
|
exitCodes: [{code: 1, when: 'invalid --type'}],
|
|
@@ -90,6 +107,29 @@ describe('EnumDoc', () => {
|
|
|
90
107
|
});
|
|
91
108
|
});
|
|
92
109
|
|
|
110
|
+
describe('ThemeDoc', () => {
|
|
111
|
+
const doc = {
|
|
112
|
+
type: 'theme',
|
|
113
|
+
name: 'ocean',
|
|
114
|
+
displayName: 'Ocean',
|
|
115
|
+
description: 'Cool blue surfaces with crisp contrast.',
|
|
116
|
+
maintained: true,
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
it('accepts a complete theme descriptor and dispatches through parseDoc', () => {
|
|
120
|
+
expect(parseTheme(doc)).toEqual(doc);
|
|
121
|
+
expect(parseDoc(doc)).toEqual(doc);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('rejects non-kebab identity and missing required metadata', () => {
|
|
125
|
+
expect(() => parseTheme({...doc, name: 'OceanTheme'})).toThrow(
|
|
126
|
+
/lowercase kebab-case/,
|
|
127
|
+
);
|
|
128
|
+
const {maintained: _maintained, ...missingMaintained} = doc;
|
|
129
|
+
expect(() => parseTheme(missingMaintained)).toThrow(/maintained/);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
93
133
|
describe('generalized FunctionDoc', () => {
|
|
94
134
|
it('accepts an API function whose returns are envelope entries (no field name)', () => {
|
|
95
135
|
const apiFn = {
|
|
@@ -98,7 +138,9 @@ describe('generalized FunctionDoc', () => {
|
|
|
98
138
|
name: 'search',
|
|
99
139
|
displayName: 'search()',
|
|
100
140
|
importPath: '@astryxdesign/cli/api',
|
|
101
|
-
params: [
|
|
141
|
+
params: [
|
|
142
|
+
{name: 'query', type: 'string', description: 'Term.', required: true},
|
|
143
|
+
],
|
|
102
144
|
returns: [{type: 'search', description: 'query + ranked results[]'}],
|
|
103
145
|
throws: [{code: 'ERR_INVALID_ARGUMENT', when: 'empty query'}],
|
|
104
146
|
};
|
|
@@ -49,7 +49,7 @@ export const doc = {
|
|
|
49
49
|
name: 'namespace',
|
|
50
50
|
type: 'string',
|
|
51
51
|
description:
|
|
52
|
-
"
|
|
52
|
+
"Optional in the type, but every doc the CLI ships declares it. The group that reads this doc. The CLI's enums use 'cli/api', which the docs tree adopts by kind: each is the leaf `cli/api/enums/<name>`. Every enum doc the CLI ships declares one, and `astryx doctor` fails on one that is missing or that nothing reads.",
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
name: 'aliases',
|