@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'page',
|
|
6
|
+
name: 'Tree Table',
|
|
7
|
+
displayName: 'Tree Table',
|
|
8
|
+
description:
|
|
9
|
+
'Hierarchical table where every parent row rolls up from its children — a code repository whose folders show the newest commit beneath them, beside a detail sidebar and a rendered README. Columns resize, siblings sort within their own level, arrow keys walk the rows, and search prunes the tree to matching branches. Tree, hierarchy, nested rows, drilldown, expand, collapse, resizable, expandable, file browser, repository, rolled-up parents.',
|
|
10
|
+
isReady: true,
|
|
11
|
+
category: 'Table - Tree/Hierarchical List',
|
|
12
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'butter',
|
|
7
|
+
displayName: 'Butter',
|
|
8
|
+
description:
|
|
9
|
+
'Warm, creamy yellows with a friendly blue accent. Playful enough for consumer surfaces, soft enough to stay readable.',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'chocolate',
|
|
7
|
+
displayName: 'Chocolate',
|
|
8
|
+
description:
|
|
9
|
+
'Warm chocolate theme for Astryx — rich brown palette with Fraunces headings, Albert Sans body, and Lucide icons',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'gothic',
|
|
7
|
+
displayName: 'Gothic',
|
|
8
|
+
description:
|
|
9
|
+
'Deep blue-grays and a signature display serif. Dramatic and editorial, for surfaces that want to be remembered.',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'matcha',
|
|
7
|
+
displayName: 'Matcha',
|
|
8
|
+
description:
|
|
9
|
+
'Earthy greens with a calm, organic feel. Naturalistic and grounded, great for wellness or content-first apps.',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'neutral',
|
|
7
|
+
displayName: 'Neutral',
|
|
8
|
+
description:
|
|
9
|
+
'Restrained warm grays. Minimal and quiet, so the content stays the focus.',
|
|
10
|
+
maintained: true,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'stone',
|
|
7
|
+
displayName: 'Stone',
|
|
8
|
+
description:
|
|
9
|
+
'Warm stone and slate, earthy and understated, with just enough character to feel handcrafted.',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */
|
|
4
|
+
export default {
|
|
5
|
+
type: 'theme',
|
|
6
|
+
name: 'y2k',
|
|
7
|
+
displayName: 'Y2K',
|
|
8
|
+
description:
|
|
9
|
+
'Hot pinks, lime greens, and Poppins. Bubbly, playful, and unmistakably retro.',
|
|
10
|
+
maintained: false,
|
|
11
|
+
};
|
|
@@ -28,5 +28,27 @@ export type MutuallyAssignable<A, B> = [A] extends [B]
|
|
|
28
28
|
: false
|
|
29
29
|
: false;
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* `T` without string or number index signatures, at every depth. A
|
|
33
|
+
* `.passthrough()` schema infers one and a hand-written interface never has
|
|
34
|
+
* one, so a lock drops them before comparing named fields. Recursive fields
|
|
35
|
+
* that a schema casts to their public type compare equal by construction.
|
|
36
|
+
*/
|
|
37
|
+
export type NamedFields<T> = T extends readonly (infer U)[]
|
|
38
|
+
? NamedFields<U>[]
|
|
39
|
+
: T extends (...args: never[]) => unknown
|
|
40
|
+
? T
|
|
41
|
+
: T extends object
|
|
42
|
+
? {
|
|
43
|
+
[
|
|
44
|
+
K in keyof T as string extends K
|
|
45
|
+
? never
|
|
46
|
+
: number extends K
|
|
47
|
+
? never
|
|
48
|
+
: K
|
|
49
|
+
]: NamedFields<T[K]>;
|
|
50
|
+
}
|
|
51
|
+
: T;
|
|
52
|
+
|
|
31
53
|
/** Compiles only when `T` is exactly `true`; otherwise a type error. */
|
|
32
54
|
export type Expect<T extends true> = T;
|
|
@@ -12,7 +12,7 @@ export const doc = {
|
|
|
12
12
|
type: 'schema',
|
|
13
13
|
name: 'codemod',
|
|
14
14
|
displayName: 'Astryx Codemod',
|
|
15
|
-
namespace: '
|
|
15
|
+
namespace: 'authoring',
|
|
16
16
|
description:
|
|
17
17
|
'A codemod module the CLI runs during `astryx upgrade`. Default-export a ' +
|
|
18
18
|
"plain object with a `type` discriminant: 'code' rewrites source files, " +
|
|
@@ -63,11 +63,13 @@ export const doc = {
|
|
|
63
63
|
name: 'file.path',
|
|
64
64
|
type: 'string',
|
|
65
65
|
description: 'Absolute path to the file being transformed.',
|
|
66
|
+
required: true,
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
69
|
name: 'file.source',
|
|
69
70
|
type: 'string',
|
|
70
71
|
description: 'The current source contents of the file.',
|
|
72
|
+
required: true,
|
|
71
73
|
},
|
|
72
74
|
],
|
|
73
75
|
},
|
|
@@ -81,18 +83,21 @@ export const doc = {
|
|
|
81
83
|
type: 'unknown',
|
|
82
84
|
description:
|
|
83
85
|
'A jscodeshift instance configured with a parser for the file.',
|
|
86
|
+
required: true,
|
|
84
87
|
},
|
|
85
88
|
{
|
|
86
89
|
name: 'api.stats',
|
|
87
90
|
type: '(...args: unknown[]) => void',
|
|
88
91
|
description:
|
|
89
92
|
'Report a statistic (no-op-friendly; provided for jscodeshift parity).',
|
|
93
|
+
required: true,
|
|
90
94
|
},
|
|
91
95
|
{
|
|
92
96
|
name: 'api.report',
|
|
93
97
|
type: '(...args: unknown[]) => void',
|
|
94
98
|
description:
|
|
95
99
|
'Report progress (no-op-friendly; provided for jscodeshift parity).',
|
|
100
|
+
required: true,
|
|
96
101
|
},
|
|
97
102
|
],
|
|
98
103
|
},
|
|
@@ -100,7 +105,7 @@ export const doc = {
|
|
|
100
105
|
},
|
|
101
106
|
{
|
|
102
107
|
name: 'type',
|
|
103
|
-
type: "'code'",
|
|
108
|
+
type: "'code' | 'config'",
|
|
104
109
|
description:
|
|
105
110
|
"Discriminant for the file-transforming variant. Use 'config' for a " +
|
|
106
111
|
'codemod that rewrites astryx.config.* instead (see notes).',
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Compile-time drift-lock: sealed envelope must infer exactly the public
|
|
6
6
|
* stamped-codemod union.
|
|
7
7
|
*
|
|
8
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
9
|
-
* import('../_shared/contract').Equal<
|
|
8
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
9
|
+
* import('../_shared/contract.js').Equal<
|
|
10
10
|
* z.infer<typeof codemodEnvelopeSchema>,
|
|
11
11
|
* AstryxCodemod | AstryxConfigCodemod
|
|
12
12
|
* >
|
|
@@ -24,10 +24,10 @@ export function parseCodemod(input: unknown, label?: string): AstryxCodemod | As
|
|
|
24
24
|
* Compile-time drift-lock: sealed envelope must infer exactly the public
|
|
25
25
|
* stamped-codemod union.
|
|
26
26
|
*/
|
|
27
|
-
export type _CodemodDriftLock = import("../_shared/contract").Expect<import("../_shared/contract").Equal<z.infer<typeof codemodEnvelopeSchema>, AstryxCodemod | AstryxConfigCodemod>>;
|
|
28
|
-
export type AstryxCodemod = import("./type").AstryxCodemod;
|
|
29
|
-
export type AstryxConfigCodemod = import("./type").AstryxConfigCodemod;
|
|
30
|
-
export type AstryxCodemodTransform = import("./type").AstryxCodemodTransform;
|
|
27
|
+
export type _CodemodDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").Equal<z.infer<typeof codemodEnvelopeSchema>, AstryxCodemod | AstryxConfigCodemod>>;
|
|
28
|
+
export type AstryxCodemod = import("./type.js").AstryxCodemod;
|
|
29
|
+
export type AstryxConfigCodemod = import("./type.js").AstryxConfigCodemod;
|
|
30
|
+
export type AstryxCodemodTransform = import("./type.js").AstryxCodemodTransform;
|
|
31
31
|
import { z } from 'zod';
|
|
32
32
|
/**
|
|
33
33
|
* The load-boundary contract: a stamped codemod default export, discriminated
|
|
@@ -38,13 +38,13 @@ declare const codemodEnvelopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
38
38
|
description: z.ZodOptional<z.ZodString>;
|
|
39
39
|
isOptional: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
40
40
|
fileExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
|
-
transform: z.ZodType<import("./type").AstryxCodemodTransform, any, z.core.$ZodTypeInternals<import("./type").AstryxCodemodTransform, any>>;
|
|
41
|
+
transform: z.ZodType<import("./type.js").AstryxCodemodTransform, any, z.core.$ZodTypeInternals<import("./type.js").AstryxCodemodTransform, any>>;
|
|
42
42
|
type: z.ZodLiteral<"code">;
|
|
43
43
|
}, z.core.$strict>, z.ZodObject<{
|
|
44
44
|
title: z.ZodString;
|
|
45
45
|
description: z.ZodOptional<z.ZodString>;
|
|
46
46
|
isOptional: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
47
|
-
transform: z.ZodType<import("./type").AstryxCodemodTransform, any, z.core.$ZodTypeInternals<import("./type").AstryxCodemodTransform, any>>;
|
|
47
|
+
transform: z.ZodType<import("./type.js").AstryxCodemodTransform, any, z.core.$ZodTypeInternals<import("./type.js").AstryxCodemodTransform, any>>;
|
|
48
48
|
type: z.ZodLiteral<"config">;
|
|
49
49
|
}, z.core.$strict>], "type">;
|
|
50
50
|
export {};
|
|
@@ -10,12 +10,14 @@
|
|
|
10
10
|
import {z} from 'zod';
|
|
11
11
|
import {formatZodError} from '../_shared/errors.mjs';
|
|
12
12
|
|
|
13
|
-
/** @typedef {import('./type').AstryxCodemod} AstryxCodemod */
|
|
14
|
-
/** @typedef {import('./type').AstryxConfigCodemod} AstryxConfigCodemod */
|
|
15
|
-
/** @typedef {import('./type').AstryxCodemodTransform} AstryxCodemodTransform */
|
|
13
|
+
/** @typedef {import('./type.js').AstryxCodemod} AstryxCodemod */
|
|
14
|
+
/** @typedef {import('./type.js').AstryxConfigCodemod} AstryxConfigCodemod */
|
|
15
|
+
/** @typedef {import('./type.js').AstryxCodemodTransform} AstryxCodemodTransform */
|
|
16
16
|
|
|
17
17
|
const transform = /** @type {z.ZodType<AstryxCodemodTransform>} */ (
|
|
18
|
-
z.custom(value => typeof value === 'function', {
|
|
18
|
+
z.custom(value => typeof value === 'function', {
|
|
19
|
+
message: 'Expected a function',
|
|
20
|
+
})
|
|
19
21
|
);
|
|
20
22
|
|
|
21
23
|
const codeCodemodSchema = z
|
|
@@ -52,8 +54,8 @@ const codemodEnvelopeSchema = z.discriminatedUnion('type', [
|
|
|
52
54
|
* Compile-time drift-lock: sealed envelope must infer exactly the public
|
|
53
55
|
* stamped-codemod union.
|
|
54
56
|
*
|
|
55
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
56
|
-
* import('../_shared/contract').Equal<
|
|
57
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
58
|
+
* import('../_shared/contract.js').Equal<
|
|
57
59
|
* z.infer<typeof codemodEnvelopeSchema>,
|
|
58
60
|
* AstryxCodemod | AstryxConfigCodemod
|
|
59
61
|
* >
|
|
@@ -128,7 +128,19 @@ export interface CodemodEntry {
|
|
|
128
128
|
/** The result of running a single codemod over one or more files. */
|
|
129
129
|
export interface CodemodRunResult {
|
|
130
130
|
filesChanged: number;
|
|
131
|
+
/** Existing owned files changed or previewed by this codemod. */
|
|
132
|
+
changedFiles: string[];
|
|
133
|
+
/** Files actually written; empty during a dry run. */
|
|
131
134
|
writtenFiles: string[];
|
|
135
|
+
/** Existing files that require the change but are protected. */
|
|
136
|
+
protectedFiles: Array<{
|
|
137
|
+
file: string;
|
|
138
|
+
codemod: string;
|
|
139
|
+
reason: string;
|
|
140
|
+
declaration: string;
|
|
141
|
+
generated: boolean;
|
|
142
|
+
command?: string;
|
|
143
|
+
}>;
|
|
132
144
|
errors: Array<{file: string; codemod: string; error: string}>;
|
|
133
145
|
}
|
|
134
146
|
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
export const doc = {
|
|
11
11
|
type: 'schema',
|
|
12
12
|
name: 'config',
|
|
13
|
-
displayName: '
|
|
14
|
-
namespace: '
|
|
13
|
+
displayName: 'astryx.config',
|
|
14
|
+
namespace: 'authoring',
|
|
15
15
|
description:
|
|
16
16
|
'The optional astryx.config.* file at your project root. Declares which ' +
|
|
17
17
|
'integrations to load, where to route issue links, post-codemod hooks, local ' +
|
|
@@ -48,7 +48,7 @@ export const doc = {
|
|
|
48
48
|
name: 'debug',
|
|
49
49
|
type: '(event: DebugEvent) => void',
|
|
50
50
|
description:
|
|
51
|
-
'Record every command run. The handler is synchronous; promises are not awaited and output goes to stderr. Declare `debug` directly in this file so early commands can discover it. An integration can supply one too, as a `debug` named export from its manifest
|
|
51
|
+
'Record every command run. The handler is synchronous; promises are not awaited and output goes to stderr. Declare `debug` directly in this file so early commands can discover it. An integration can supply one too, as a `debug` named export from its manifest. Every handler runs: yours first, then each integration\'s in load order (the `integrations` list, then autolinked ones). A handler that throws is skipped; the others still run and the command\'s result does not change. Set `{"astryx": {"inheritDebug": false}}` in package.json to take only your own.',
|
|
52
52
|
example:
|
|
53
53
|
"event => appendFileSync('runs.ndjson', JSON.stringify(event) + '\\n')",
|
|
54
54
|
},
|
|
@@ -60,6 +60,14 @@ export const doc = {
|
|
|
60
60
|
example:
|
|
61
61
|
"{ audience: 'internal', async handle(report, {signal}) { return sendGap(report, {signal}); } }",
|
|
62
62
|
},
|
|
63
|
+
{
|
|
64
|
+
name: 'discover',
|
|
65
|
+
type: 'DiscoverSource',
|
|
66
|
+
description:
|
|
67
|
+
'Tell `astryx discover` which integrations this project could add: an async function that returns a catalog. An integration can provide one too, as a `discover` named export from its manifest. Discover calls every source, yours first, and one that fails never hides the others. Discover only reads; your package manager installs.',
|
|
68
|
+
example:
|
|
69
|
+
"async ({signal, package: name, version}) => fetchCatalog({signal, name, version})",
|
|
70
|
+
},
|
|
63
71
|
{
|
|
64
72
|
name: 'experimental',
|
|
65
73
|
type: '{ xle?: { components?: Record<string, XleComponent> } }',
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file `debug` accepts handlers from integrations, so both public entries for
|
|
5
|
+
* it — the exported `AstryxConfig` type and `astryx docs authoring config` —
|
|
6
|
+
* must state how those handlers combine with the app's own: the contribution
|
|
7
|
+
* form, the order, what a failing handler does, and the refusal control.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import {fileURLToPath} from 'node:url';
|
|
13
|
+
import ts from 'typescript';
|
|
14
|
+
import {describe, expect, it} from 'vitest';
|
|
15
|
+
import {doc} from './config.doc.mjs';
|
|
16
|
+
|
|
17
|
+
const TYPE_FILE = path.join(
|
|
18
|
+
path.dirname(fileURLToPath(import.meta.url)),
|
|
19
|
+
'type.ts',
|
|
20
|
+
);
|
|
21
|
+
const source = ts.createSourceFile(
|
|
22
|
+
TYPE_FILE,
|
|
23
|
+
fs.readFileSync(TYPE_FILE, 'utf8'),
|
|
24
|
+
ts.ScriptTarget.Latest,
|
|
25
|
+
true,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
/** @param {ts.Node} node @returns {string} */
|
|
29
|
+
function jsdocText(node) {
|
|
30
|
+
return ts
|
|
31
|
+
.getJSDocCommentsAndTags(node)
|
|
32
|
+
.map(jsdoc => ts.getTextOfJSDocComment(jsdoc.comment) ?? '')
|
|
33
|
+
.join('\n');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** @param {(node: ts.Node) => boolean} match @returns {ts.Node} */
|
|
37
|
+
function findTopLevel(match) {
|
|
38
|
+
const node = source.statements.find(match);
|
|
39
|
+
if (!node) throw new Error('declaration not found in config/type.ts');
|
|
40
|
+
return node;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const configInterface = /** @type {ts.InterfaceDeclaration} */ (
|
|
44
|
+
findTopLevel(
|
|
45
|
+
node => ts.isInterfaceDeclaration(node) && node.name.text === 'AstryxConfig',
|
|
46
|
+
)
|
|
47
|
+
);
|
|
48
|
+
const debugMember = configInterface.members.find(
|
|
49
|
+
member =>
|
|
50
|
+
ts.isPropertySignature(member) && member.name.getText(source) === 'debug',
|
|
51
|
+
);
|
|
52
|
+
if (!debugMember) throw new Error('AstryxConfig has no debug member');
|
|
53
|
+
|
|
54
|
+
const debugConfigAlias = findTopLevel(
|
|
55
|
+
node => ts.isTypeAliasDeclaration(node) && node.name.text === 'DebugConfig',
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const schemaField = doc.fields.find(field => field.name === 'debug');
|
|
59
|
+
|
|
60
|
+
const ENTRIES = {
|
|
61
|
+
'the AstryxConfig type': jsdocText(debugMember),
|
|
62
|
+
'astryx docs authoring config': schemaField?.description ?? '',
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
describe.each(Object.entries(ENTRIES))('debug entry in %s', (_, text) => {
|
|
66
|
+
it('says integrations contribute, and in what form', () => {
|
|
67
|
+
expect(text).toMatch(/integration/i);
|
|
68
|
+
expect(text).toMatch(/`debug` named export/);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('says every handler runs, the app first, then integrations in load order', () => {
|
|
72
|
+
expect(text).toMatch(/\bfirst\b/i);
|
|
73
|
+
expect(text).toMatch(/load order/i);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('says a handler that throws is skipped without affecting the others', () => {
|
|
77
|
+
expect(text).toMatch(/throws is skipped/i);
|
|
78
|
+
expect(text).toMatch(/others still run/i);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('names the one control that refuses inherited handlers', () => {
|
|
82
|
+
expect(text).toContain('{"astryx": {"inheritDebug": false}}');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
describe('DebugConfig', () => {
|
|
87
|
+
it('does not claim that leaving debug out records nothing', () => {
|
|
88
|
+
const text = jsdocText(debugConfigAlias);
|
|
89
|
+
expect(text).not.toMatch(/nothing is recorded/i);
|
|
90
|
+
expect(text).toMatch(/integration/i);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* {@link AstryxConfig} type. If they drift, `Equal` becomes `false` and
|
|
7
7
|
* `Expect<false>` fails the `tsconfig.authoring-contract.json` typecheck.
|
|
8
8
|
*
|
|
9
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
10
|
-
* import('../_shared/contract').MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>
|
|
9
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
10
|
+
* import('../_shared/contract.js').MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>
|
|
11
11
|
* >} _ConfigDriftLock
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
@@ -23,13 +23,14 @@ export function parseConfig(input: unknown, label?: string): AstryxConfig;
|
|
|
23
23
|
* {@link AstryxConfig} type. If they drift, `Equal` becomes `false` and
|
|
24
24
|
* `Expect<false>` fails the `tsconfig.authoring-contract.json` typecheck.
|
|
25
25
|
*/
|
|
26
|
-
export type _ConfigDriftLock = import("../_shared/contract").Expect<import("../_shared/contract").MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>>;
|
|
27
|
-
export type AstryxConfig = import("./type").AstryxConfig;
|
|
28
|
-
export type PostCodemodHook = import("./type").PostCodemodHook;
|
|
29
|
-
export type XleComponent = import("./type").XleComponent;
|
|
30
|
-
export type DebugConfig = import("./type").DebugConfig;
|
|
31
|
-
export type DebugEventHandler = import("../debug/type").DebugEventHandler;
|
|
32
|
-
export type GapReportHandler = import("../gap-report/type").GapReportHandler;
|
|
26
|
+
export type _ConfigDriftLock = import("../_shared/contract.js").Expect<import("../_shared/contract.js").MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>>;
|
|
27
|
+
export type AstryxConfig = import("./type.js").AstryxConfig;
|
|
28
|
+
export type PostCodemodHook = import("./type.js").PostCodemodHook;
|
|
29
|
+
export type XleComponent = import("./type.js").XleComponent;
|
|
30
|
+
export type DebugConfig = import("./type.js").DebugConfig;
|
|
31
|
+
export type DebugEventHandler = import("../debug/type.js").DebugEventHandler;
|
|
32
|
+
export type GapReportHandler = import("../gap-report/type.js").GapReportHandler;
|
|
33
|
+
export type DiscoverSource = import("../discover/type.js").DiscoverSource;
|
|
33
34
|
import { z } from 'zod';
|
|
34
35
|
declare const configSchema: z.ZodObject<{
|
|
35
36
|
integrations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -40,14 +41,15 @@ declare const configSchema: z.ZodObject<{
|
|
|
40
41
|
buildCommand: z.ZodType<(ctx: {
|
|
41
42
|
packageDir: string;
|
|
42
43
|
files: string[];
|
|
43
|
-
}) => import("./type").PostCodemodCommand | null | undefined | Promise<import("./type").PostCodemodCommand | null | undefined>, any, z.core.$ZodTypeInternals<(ctx: {
|
|
44
|
+
}) => import("./type.js").PostCodemodCommand | null | undefined | Promise<import("./type.js").PostCodemodCommand | null | undefined>, any, z.core.$ZodTypeInternals<(ctx: {
|
|
44
45
|
packageDir: string;
|
|
45
46
|
files: string[];
|
|
46
|
-
}) => import("./type").PostCodemodCommand | null | undefined | Promise<import("./type").PostCodemodCommand | null | undefined>, any>>;
|
|
47
|
+
}) => import("./type.js").PostCodemodCommand | null | undefined | Promise<import("./type.js").PostCodemodCommand | null | undefined>, any>>;
|
|
47
48
|
}, z.core.$strict>>>;
|
|
48
49
|
}, z.core.$strict>>;
|
|
49
|
-
debug: z.ZodOptional<z.ZodType<import("../debug/type").DebugEventHandler, any, z.core.$ZodTypeInternals<import("../debug/type").DebugEventHandler, any>>>;
|
|
50
|
-
gapReport: z.ZodOptional<z.ZodType<import("../gap-report/type").GapReportHandler, any, z.core.$ZodTypeInternals<import("../gap-report/type").GapReportHandler, any>>>;
|
|
50
|
+
debug: z.ZodOptional<z.ZodType<import("../debug/type.js").DebugEventHandler, any, z.core.$ZodTypeInternals<import("../debug/type.js").DebugEventHandler, any>>>;
|
|
51
|
+
gapReport: z.ZodOptional<z.ZodType<import("../gap-report/type.js").GapReportHandler, any, z.core.$ZodTypeInternals<import("../gap-report/type.js").GapReportHandler, any>>>;
|
|
52
|
+
discover: z.ZodOptional<z.ZodType<import("../discover/type.js").DiscoverSource, any, z.core.$ZodTypeInternals<import("../discover/type.js").DiscoverSource, any>>>;
|
|
51
53
|
experimental: z.ZodOptional<z.ZodObject<{
|
|
52
54
|
xle: z.ZodOptional<z.ZodObject<{
|
|
53
55
|
components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
@@ -12,13 +12,15 @@
|
|
|
12
12
|
import {z} from 'zod';
|
|
13
13
|
import {formatZodError} from '../_shared/errors.mjs';
|
|
14
14
|
import {parseGapReportHandler} from '../gap-report/parse.mjs';
|
|
15
|
+
import {parseDiscoverSource} from '../discover/parse.mjs';
|
|
15
16
|
|
|
16
|
-
/** @typedef {import('./type').AstryxConfig} AstryxConfig */
|
|
17
|
-
/** @typedef {import('./type').PostCodemodHook} PostCodemodHook */
|
|
18
|
-
/** @typedef {import('./type').XleComponent} XleComponent */
|
|
19
|
-
/** @typedef {import('./type').DebugConfig} DebugConfig */
|
|
20
|
-
/** @typedef {import('../debug/type').DebugEventHandler} DebugEventHandler */
|
|
21
|
-
/** @typedef {import('../gap-report/type').GapReportHandler} GapReportHandler */
|
|
17
|
+
/** @typedef {import('./type.js').AstryxConfig} AstryxConfig */
|
|
18
|
+
/** @typedef {import('./type.js').PostCodemodHook} PostCodemodHook */
|
|
19
|
+
/** @typedef {import('./type.js').XleComponent} XleComponent */
|
|
20
|
+
/** @typedef {import('./type.js').DebugConfig} DebugConfig */
|
|
21
|
+
/** @typedef {import('../debug/type.js').DebugEventHandler} DebugEventHandler */
|
|
22
|
+
/** @typedef {import('../gap-report/type.js').GapReportHandler} GapReportHandler */
|
|
23
|
+
/** @typedef {import('../discover/type.js').DiscoverSource} DiscoverSource */
|
|
22
24
|
|
|
23
25
|
// Typed `z.custom` so `z.infer` reproduces the real function type (not `unknown`).
|
|
24
26
|
const buildCommand = /** @type {z.ZodType<PostCodemodHook['buildCommand']>} */ (
|
|
@@ -66,6 +68,22 @@ const gapReportHandlerSchema = /** @type {z.ZodType<GapReportHandler>} */ (
|
|
|
66
68
|
)
|
|
67
69
|
);
|
|
68
70
|
|
|
71
|
+
// The same check an integration's `discover` named export passes. Typed
|
|
72
|
+
// z.custom preserves the public function type.
|
|
73
|
+
const discoverSourceSchema = /** @type {z.ZodType<DiscoverSource>} */ (
|
|
74
|
+
z.custom(
|
|
75
|
+
value => {
|
|
76
|
+
try {
|
|
77
|
+
parseDiscoverSource(value, 'discover');
|
|
78
|
+
return true;
|
|
79
|
+
} catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{message: 'Expected a discover source function'},
|
|
84
|
+
)
|
|
85
|
+
);
|
|
86
|
+
|
|
69
87
|
const configSchema = z
|
|
70
88
|
.object({
|
|
71
89
|
integrations: z.array(z.string()).optional(),
|
|
@@ -76,6 +94,7 @@ const configSchema = z
|
|
|
76
94
|
.optional(),
|
|
77
95
|
debug: debugSchema.optional(),
|
|
78
96
|
gapReport: gapReportHandlerSchema.optional(),
|
|
97
|
+
discover: discoverSourceSchema.optional(),
|
|
79
98
|
experimental: z
|
|
80
99
|
.object({
|
|
81
100
|
xle: z
|
|
@@ -95,8 +114,8 @@ const configSchema = z
|
|
|
95
114
|
* {@link AstryxConfig} type. If they drift, `Equal` becomes `false` and
|
|
96
115
|
* `Expect<false>` fails the `tsconfig.authoring-contract.json` typecheck.
|
|
97
116
|
*
|
|
98
|
-
* @typedef {import('../_shared/contract').Expect<
|
|
99
|
-
* import('../_shared/contract').MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>
|
|
117
|
+
* @typedef {import('../_shared/contract.js').Expect<
|
|
118
|
+
* import('../_shared/contract.js').MutuallyAssignable<z.infer<typeof configSchema>, AstryxConfig>
|
|
100
119
|
* >} _ConfigDriftLock
|
|
101
120
|
*/
|
|
102
121
|
|
|
@@ -63,6 +63,14 @@ describe('parseConfig (load boundary)', () => {
|
|
|
63
63
|
).toEqual({audience: 'internal', handle});
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
+
it('accepts a discover source function and refuses anything else', () => {
|
|
67
|
+
const discover = async () => ({});
|
|
68
|
+
expect(parseConfig({discover}).discover).toBe(discover);
|
|
69
|
+
expect(reason({discover: 'https://example.com/catalog.json'})).toContain(
|
|
70
|
+
'discover',
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
|
|
66
74
|
it('rejects obsolete or extended gap-report handler shapes', () => {
|
|
67
75
|
expect(reason({gapReport: {command: './report.mjs'}})).toContain(
|
|
68
76
|
'gapReport',
|
package/authoring/config/type.ts
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* boundary; there is no factory to call.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type {DebugEventHandler} from '../debug/type';
|
|
13
|
-
import type {GapReportHandler} from '../gap-report/type';
|
|
12
|
+
import type {DebugEventHandler} from '../debug/type.js';
|
|
13
|
+
import type {GapReportHandler} from '../gap-report/type.js';
|
|
14
|
+
import type {DiscoverSource} from '../discover/type.js';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* A command to run as part of a post-codemod hook. Returned by a hook's
|
|
@@ -21,7 +22,7 @@ export interface PostCodemodCommand {
|
|
|
21
22
|
args?: string[];
|
|
22
23
|
options?: {
|
|
23
24
|
cwd?: string;
|
|
24
|
-
env?:
|
|
25
|
+
env?: Record<string, string | undefined>;
|
|
25
26
|
timeout?: number;
|
|
26
27
|
};
|
|
27
28
|
}
|
|
@@ -56,8 +57,9 @@ export interface XleComponent {
|
|
|
56
57
|
/**
|
|
57
58
|
* Record every astryx command run in this project.
|
|
58
59
|
*
|
|
59
|
-
* A function that receives each run.
|
|
60
|
-
*
|
|
60
|
+
* A function that receives each run. Leaving it out does not stop a handler an
|
|
61
|
+
* integration contributes; see {@link AstryxConfig.debug} for how the two
|
|
62
|
+
* combine and how to refuse inherited handlers.
|
|
61
63
|
*
|
|
62
64
|
* ```
|
|
63
65
|
* export default {
|
|
@@ -80,10 +82,31 @@ export interface AstryxConfig {
|
|
|
80
82
|
hooks?: {
|
|
81
83
|
postCodemod?: PostCodemodHook[];
|
|
82
84
|
};
|
|
83
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Record every astryx command run in this project. See {@link DebugConfig}.
|
|
87
|
+
*
|
|
88
|
+
* An integration can contribute a handler too, as a `debug` named export
|
|
89
|
+
* from its `astryx.integration.*` module. Every handler receives the run:
|
|
90
|
+
* this one first, then each integration's in load order (the ones
|
|
91
|
+
* `integrations` lists, in that order, then autolinked ones). A handler that
|
|
92
|
+
* throws is skipped; the others still run and the command's result does not
|
|
93
|
+
* change. To refuse inherited handlers, set
|
|
94
|
+
* `{"astryx": {"inheritDebug": false}}` in the project's package.json; this
|
|
95
|
+
* handler still runs.
|
|
96
|
+
*/
|
|
84
97
|
debug?: DebugConfig;
|
|
85
98
|
/** Route gap reports through a project-owned handler. See {@link GapReportHandler}. */
|
|
86
99
|
gapReport?: GapReportHandler;
|
|
100
|
+
/**
|
|
101
|
+
* Tell `astryx discover` about integrations this project could add. See
|
|
102
|
+
* {@link DiscoverSource}.
|
|
103
|
+
*
|
|
104
|
+
* An integration can provide a source too, as a `discover` named export from
|
|
105
|
+
* its `astryx.integration.*` module. Discover calls every source: this one
|
|
106
|
+
* first, then each integration's in load order, and one that fails never
|
|
107
|
+
* hides the others.
|
|
108
|
+
*/
|
|
109
|
+
discover?: DiscoverSource;
|
|
87
110
|
/**
|
|
88
111
|
* EXPERIMENTAL — shape may change and is not part of the stable config
|
|
89
112
|
* contract. Provisional home for features still being proven out.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @generated by scripts/sync-api-types.mjs from the JSDoc in authoring/**/*.mjs.
|
|
2
|
+
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @file SchemaDoc for DebugEvent, the record of one CLI run.
|
|
6
|
+
* @input The DebugEvent type beside it (`type.ts`), which `parse.mjs` reads.
|
|
7
|
+
* @output The `debug-event` section of `astryx docs authoring`.
|
|
8
|
+
* @position packages/cli/authoring/debug — schema documentation
|
|
9
|
+
*/
|
|
10
|
+
/** @type {import('@astryxdesign/cli/authoring').SchemaDoc} */
|
|
11
|
+
export const doc: import("@astryxdesign/cli/authoring").SchemaDoc;
|