@astryxdesign/cli 0.7.2-canary.fe2c655 → 0.7.3-canary.02f5fe4
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 +119 -0
- package/README.md +216 -162
- package/api/build/_adapter.d.mts +66 -0
- package/api/build/_adapter.mjs +139 -4
- package/api/build/blocks/blocks.d.mts +92 -0
- package/api/build/blocks/blocks.mjs +528 -0
- package/api/build/blocks/blocks.test.mjs +238 -0
- package/api/build/blocks/blocks.weights.json +1 -0
- package/api/build/build.doc.mjs +4 -0
- package/api/build/build.mjs +25 -6
- package/api/build/build.type.mjs +1 -1
- package/api/build/help/help.mjs +1 -1
- package/api/build/kit/answer.d.mts +18 -0
- package/api/build/kit/answer.mjs +195 -0
- package/api/build/kit/answer.test.mjs +108 -0
- package/api/build/kit/kind.d.mts +25 -0
- package/api/build/kit/kind.mjs +170 -0
- package/api/build/kit/kit.d.mts +2 -4
- package/api/build/kit/kit.mjs +8 -406
- package/api/build/kit/rank.d.mts +3 -32
- package/api/build/kit/rank.mjs +25 -342
- package/api/build/kit/rank.test.mjs +2 -1
- package/api/build/kit/signals.d.mts +79 -0
- package/api/build/kit/signals.mjs +295 -0
- package/api/build/kit/start.d.mts +32 -0
- package/api/build/kit/start.mjs +163 -0
- package/api/build/kit/words.d.mts +72 -0
- package/api/build/kit/words.mjs +202 -0
- package/api/build/tree.d.mts +20 -0
- package/api/build/tree.mjs +53 -0
- package/api/build/tree.test.mjs +185 -0
- package/api/build/tree.weights.json +1 -0
- package/api/component/_adapter.d.mts +72 -1
- package/api/component/_adapter.mjs +251 -23
- package/api/component/component-replacement.test.mjs +1 -0
- package/api/component/component.doc.mjs +6 -1
- package/api/component/component.mjs +97 -16
- package/api/component/component.test.mjs +95 -0
- package/api/component/doc-links.test.mjs +386 -0
- package/api/component/integration-export-name.test.mjs +644 -0
- package/api/component/list/list.mjs +42 -4
- package/api/discover/_adapter.d.mts +131 -12
- package/api/discover/_adapter.mjs +520 -34
- package/api/discover/_adapter.test.mjs +641 -17
- package/api/discover/_catalog-view.d.mts +16 -5
- package/api/discover/_catalog-view.mjs +32 -8
- package/api/discover/detail/doc/doc.mjs +9 -1
- package/api/discover/discover.d.mts +11 -0
- package/api/discover/discover.doc.mjs +9 -7
- package/api/discover/discover.mjs +120 -19
- package/api/discover/discover.type.d.mts +20 -7
- package/api/discover/discover.type.mjs +17 -7
- package/api/discover/list/list.d.mts +4 -3
- package/api/discover/list/list.mjs +17 -10
- package/api/docs/_adapter.d.mts +76 -2
- package/api/docs/_adapter.mjs +630 -34
- package/api/docs/docs-homes.test.mjs +127 -0
- package/api/docs/docs.doc.mjs +5 -4
- package/api/docs/docs.mjs +2 -1
- package/api/docs/docs.test.mjs +39 -20
- package/api/docs/integration-tree.test.mjs +42 -20
- package/api/docs/integrationDocs.test.mjs +125 -1
- package/api/docs/list/list.mjs +12 -2
- package/api/docs/namespace-section.test.mjs +6 -6
- package/api/docs/reference-blocks.test.mjs +3 -5
- package/api/doctor/_adapter.d.mts +128 -0
- package/api/doctor/_adapter.mjs +253 -4
- package/api/doctor/doctor.d.mts +217 -0
- package/api/doctor/doctor.doc.mjs +3 -2
- package/api/doctor/doctor.mjs +691 -52
- package/api/doctor/doctor.test.mjs +267 -18
- package/api/doctor/release-checks.test.mjs +156 -0
- package/api/doctor/theme-checks.mjs +17 -4
- package/api/doctor/theme-checks.test.mjs +223 -7
- package/api/error.d.mts +10 -0
- package/api/error.mjs +25 -0
- package/api/gap-report/gap-report.d.mts +3 -0
- package/api/gap-report/gap-report.doc.mjs +11 -3
- package/api/gap-report/gap-report.mjs +219 -52
- package/api/gap-report/gap-report.test.mjs +233 -0
- package/api/gap-report/gap-report.type.d.mts +41 -0
- package/api/gap-report/gap-report.type.mjs +18 -0
- package/api/hook/_adapter.mjs +3 -11
- package/api/hook/hook.doc.mjs +4 -0
- package/api/hook/hook.mjs +1 -1
- package/api/hook/list/list.d.mts +1 -1
- package/api/index.d.mts +2 -0
- package/api/index.mjs +2 -0
- package/api/init/_adapter.d.mts +22 -0
- package/api/init/_adapter.mjs +59 -0
- package/api/init/init.d.mts +7 -5
- package/api/init/init.doc.mjs +45 -10
- package/api/init/init.mjs +28 -4
- package/api/init/init.test.mjs +18 -2
- package/api/init/init.type.d.mts +50 -5
- package/api/init/init.type.mjs +39 -5
- package/api/init/remove/remove.mjs +17 -4
- package/api/init/remove/remove.test.mjs +114 -2
- package/api/init/run/run.d.mts +1 -1
- package/api/init/run/run.mjs +86 -12
- package/api/init/user/user.d.mts +14 -0
- package/api/init/user/user.mjs +87 -0
- package/api/init/user/user.test.mjs +232 -0
- package/api/integration/_adapter.d.mts +53 -0
- package/api/integration/_adapter.mjs +132 -0
- package/api/integration/add-contribution.component-names.test.mjs +66 -0
- package/api/integration/add-contribution.mjs +8 -4
- package/api/integration/add-contribution.test.mjs +4 -2
- package/api/integration/authoring-checks.mjs +192 -14
- package/api/integration/authoring-checks.test.mjs +1028 -0
- package/api/integration/authoring-checks.type.d.mts +143 -0
- package/api/integration/authoring-checks.type.mjs +74 -2
- package/api/integration/check/check.d.mts +96 -0
- package/api/integration/check/check.mjs +357 -0
- package/api/integration/check/check.test.mjs +489 -0
- package/api/integration/integration-check.type.d.mts +118 -0
- package/api/integration/integration-check.type.mjs +84 -0
- package/api/integration/integrationCheck.doc.d.mts +10 -0
- package/api/integration/integrationCheck.doc.mjs +73 -0
- package/api/integration/integrationComponentConflicts.doc.mjs +45 -6
- package/api/integration/integrationDocConflicts.doc.mjs +22 -5
- package/api/integration/pack-check.mjs +486 -123
- package/api/integration/pack-check.test.mjs +817 -10
- package/api/integration/validate-integration-case-disk.test.mjs +111 -0
- package/api/integration/validate-integration-fixes.test.mjs +73 -5
- package/api/integration/validate-integration-gaps.test.mjs +1975 -0
- package/api/integration/validate-integration.d.mts +23 -2
- package/api/integration/validate-integration.mjs +358 -45
- package/api/integration/validate-integration.test.mjs +88 -8
- package/api/integration/validate-integration.type.d.mts +105 -0
- package/api/integration/validate-integration.type.mjs +79 -1
- package/api/integration/validate-unread-theme-folders.test.mjs +3 -2
- package/api/integration/validateIntegration.doc.mjs +19 -3
- package/api/search/ORDERING.md +28 -0
- package/api/search/_adapter.d.mts +91 -0
- package/api/search/_adapter.mjs +172 -0
- package/api/search/_adapter.test.mjs +173 -0
- package/api/search/_candidate-score.d.mts +40 -0
- package/api/search/_candidate-score.mjs +238 -0
- package/api/search/_cards.json +6098 -0
- package/api/search/_compound.d.mts +50 -0
- package/api/search/_compound.mjs +170 -0
- package/api/search/_doc-searcher.d.mts +4 -0
- package/api/search/_doc-searcher.mjs +23 -0
- package/api/search/_doc-searcher.test.mjs +36 -0
- package/api/search/_doc-searcher.weights.json +1 -0
- package/api/search/_doc-text.d.mts +30 -0
- package/api/search/_doc-text.mjs +87 -0
- package/api/search/_entries.d.mts +63 -0
- package/api/search/_entries.mjs +232 -0
- package/api/search/_entries.test.mjs +48 -0
- package/api/search/_features.d.mts +35 -0
- package/api/search/_features.mjs +155 -0
- package/api/search/_gather-components.d.mts +26 -0
- package/api/search/_gather-components.mjs +284 -0
- package/api/search/_gather-docs.d.mts +20 -0
- package/api/search/_gather-docs.mjs +254 -0
- package/api/search/_gather-hooks.d.mts +12 -0
- package/api/search/_gather-hooks.mjs +52 -0
- package/api/search/_gather-templates.d.mts +25 -0
- package/api/search/_gather-templates.mjs +107 -0
- package/api/search/_lexical.d.mts +135 -0
- package/api/search/_lexical.mjs +351 -0
- package/api/search/_main-searcher.d.mts +19 -0
- package/api/search/_main-searcher.mjs +115 -0
- package/api/search/_main-searcher.test.mjs +106 -0
- package/api/search/_main-searcher.weights.json +1 -0
- package/api/search/_module-doc.d.mts +32 -0
- package/api/search/_module-doc.mjs +78 -0
- package/api/search/_order.d.mts +32 -0
- package/api/search/_order.mjs +162 -0
- package/api/search/_order.test.mjs +72 -0
- package/api/search/_priority.d.mts +50 -0
- package/api/search/_priority.mjs +139 -0
- package/api/search/_query-words.d.mts +25 -0
- package/api/search/_query-words.mjs +92 -0
- package/api/search/_query.d.mts +65 -0
- package/api/search/_query.mjs +176 -0
- package/api/search/_result.d.mts +97 -0
- package/api/search/_result.mjs +150 -0
- package/api/search/_score.d.mts +60 -0
- package/api/search/_score.mjs +283 -0
- package/api/search/_synonyms.d.mts +21 -0
- package/api/search/_synonyms.mjs +67 -0
- package/api/search/_template-searcher.d.mts +4 -0
- package/api/search/_template-searcher.mjs +23 -0
- package/api/search/_template-searcher.test.mjs +40 -0
- package/api/search/_template-searcher.weights.json +1 -0
- package/api/search/_titles.d.mts +33 -0
- package/api/search/_titles.mjs +65 -0
- package/api/search/_words.d.mts +64 -0
- package/api/search/_words.mjs +157 -0
- package/api/search/search.d.mts +22 -236
- package/api/search/search.doc.mjs +14 -7
- package/api/search/search.domain-priority.test.mjs +108 -18
- package/api/search/search.integration-check.test.mjs +24 -0
- package/api/search/search.mjs +59 -1904
- package/api/search/search.test.mjs +193 -15
- package/api/search/search.type.d.mts +20 -2
- package/api/search/search.type.mjs +12 -2
- package/api/search/tree.d.mts +15 -0
- package/api/search/tree.mjs +40 -0
- package/api/search/tree.test.mjs +66 -0
- package/api/search/tree.weights.json +1 -0
- package/api/swizzle/_adapter.mjs +2 -2
- package/api/swizzle/copy/copy.mjs +29 -15
- package/api/template/template-integration.test.mjs +1 -1
- package/api/template/template.mjs +5 -1
- package/api/template/template.test.mjs +120 -3
- package/api/theme/_adapter.d.mts +16 -0
- package/api/theme/_adapter.mjs +32 -5
- package/api/theme/build/build.d.mts +2 -1
- package/api/theme/build/build.family.test.mjs +64 -0
- package/api/theme/build/build.mjs +250 -38
- package/api/theme/build/build.packed-old-core.test.mjs +21 -3
- package/api/theme/build/font-warning.mjs +5 -3
- package/api/theme/build/font-warning.test.mjs +2 -1
- package/api/theme/remove/remove.test.mjs +2 -2
- package/api/theme/targets/targets.mjs +3 -10
- package/api/theme/themeBuild.doc.mjs +4 -4
- package/api/theme/themeTargets.doc.mjs +4 -0
- package/api/theme/use/use.test.mjs +1 -1
- package/api/upgrade/_adapter.d.mts +97 -11
- package/api/upgrade/_adapter.mjs +315 -32
- package/api/upgrade/registry/registry.d.mts +10 -4
- package/api/upgrade/registry/registry.mjs +33 -16
- package/api/upgrade/registry/registry.test.mjs +85 -0
- package/api/upgrade/run/cli-behind-core.test.mjs +438 -0
- package/api/upgrade/run/run.d.mts +4 -2
- package/api/upgrade/run/run.mjs +48 -4
- package/api/upgrade/run/run.test.mjs +417 -3
- package/api/upgrade/status/status.d.mts +21 -5
- package/api/upgrade/status/status.mjs +45 -8
- package/api/upgrade/upgrade.doc.mjs +16 -8
- package/api/upgrade/upgrade.mjs +18 -3
- package/api/upgrade/upgrade.test.mjs +194 -0
- package/api/upgrade/upgrade.type.d.mts +28 -3
- package/api/upgrade/upgrade.type.mjs +24 -7
- package/assets/codemods/__tests__/registry.test.mjs +1 -0
- package/assets/codemods/registry.mjs +1 -0
- package/assets/codemods/runner.mjs +7 -1
- package/assets/codemods/transforms/v0.7.0/__tests__/validate-data-token-ownership.test.mjs +11 -0
- package/assets/codemods/transforms/v0.7.0/validate-data-token-ownership.mjs +3 -3
- package/assets/codemods/transforms/v0.7.2/__tests__/migrate-list-edge-compensation-to-edge.test.mjs +120 -0
- package/assets/codemods/transforms/v0.7.2/index.mjs +20 -0
- package/assets/codemods/transforms/v0.7.2/migrate-list-edge-compensation-to-edge.mjs +198 -0
- package/assets/discover/official-packages.json +367 -0
- package/assets/docs/README.md +10 -0
- package/assets/docs/author-a-theme.doc.mjs +5 -5
- package/assets/docs/browser-support.doc.mjs +1 -1
- package/assets/docs/getting-started.doc.mjs +26 -6
- package/assets/docs/is-my-code-good.doc.mjs +287 -0
- package/assets/docs/styling-overview.doc.mjs +1 -1
- package/assets/docs/theme.doc.dense.mjs +1 -1
- package/assets/docs/theme.doc.mjs +2 -2
- package/assets/docs/theme.doc.zh.mjs +1 -1
- package/assets/docs/tree/add-a-component.doc.mjs +22 -2
- package/assets/docs/tree/add-a-theme.doc.mjs +14 -4
- package/assets/docs/tree/add-a-topic.doc.mjs +54 -9
- package/assets/docs/tree/agent-guidance.doc.mjs +19 -5
- package/assets/docs/tree/api.doc.mjs +6 -0
- package/assets/docs/tree/authoring.doc.mjs +61 -0
- package/assets/docs/tree/block-template.doc.mjs +8 -20
- package/assets/docs/tree/build-the-template.doc.mjs +1 -1
- package/assets/docs/tree/building-blocks.doc.mjs +6 -2
- package/assets/docs/tree/check-the-props.doc.mjs +201 -0
- package/assets/docs/tree/check-your-docs.doc.mjs +69 -11
- package/assets/docs/tree/checks.doc.mjs +32 -24
- package/assets/docs/tree/ci-and-containers.doc.mjs +101 -0
- package/assets/docs/tree/cli-command.doc.mjs +142 -0
- package/assets/docs/tree/cli.doc.mjs +7 -1
- package/assets/docs/tree/codemods.doc.mjs +17 -7
- package/assets/docs/tree/commands.doc.mjs +7 -1
- package/assets/docs/tree/component-family.doc.mjs +8 -6
- package/assets/docs/tree/component-imports.doc.mjs +21 -3
- package/assets/docs/tree/components.doc.mjs +7 -1
- package/assets/docs/tree/computer-agent-guide.doc.mjs +160 -0
- package/assets/docs/tree/computer-integrations.doc.mjs +93 -0
- package/assets/docs/tree/configuration.doc.mjs +8 -4
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +41 -22
- package/assets/docs/tree/define-the-theme.doc.mjs +7 -6
- package/assets/docs/tree/describe-the-component.doc.mjs +3 -3
- package/assets/docs/tree/docs.doc.mjs +9 -3
- package/assets/docs/tree/document-the-template.doc.mjs +1 -1
- package/assets/docs/tree/document-the-theme.doc.mjs +4 -4
- package/assets/docs/tree/export-template-assets.doc.mjs +1 -1
- package/assets/docs/tree/extend-or-replace.doc.mjs +19 -9
- package/assets/docs/{authoring.doc.mjs → tree/field-reference.doc.mjs} +4 -3
- package/assets/docs/tree/fonts-and-assets.doc.mjs +3 -3
- package/assets/docs/tree/generate-a-palette.doc.mjs +8 -6
- package/assets/docs/tree/global-integrations.doc.mjs +124 -0
- package/assets/docs/tree/global.doc.mjs +131 -0
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +5 -5
- package/assets/docs/tree/help.doc.mjs +2 -2
- package/assets/docs/tree/host-entry.doc.mjs +128 -0
- package/assets/docs/tree/install-once.doc.mjs +105 -0
- package/assets/docs/tree/layout-spacing.doc.mjs +2 -3
- package/assets/docs/tree/layout.doc.mjs +6 -6
- package/assets/docs/tree/links.doc.mjs +7 -6
- package/assets/docs/tree/migration-setup.doc.mjs +3 -2
- package/assets/docs/tree/migration-verification.doc.mjs +0 -1
- package/assets/docs/tree/migration.doc.mjs +0 -1
- package/assets/docs/tree/monorepos.doc.mjs +84 -0
- package/assets/docs/tree/package-and-test.doc.mjs +1 -1
- package/assets/docs/tree/page-template.doc.mjs +4 -8
- package/assets/docs/tree/problems.doc.mjs +205 -0
- package/assets/docs/tree/project-global-or-both.doc.mjs +131 -0
- package/assets/docs/tree/publishing.doc.mjs +6 -6
- package/assets/docs/tree/quick-start.doc.mjs +54 -28
- package/assets/docs/tree/reference.doc.mjs +192 -0
- package/assets/docs/tree/replace-a-core-component.doc.mjs +15 -7
- package/assets/docs/tree/replace-a-core-template.doc.mjs +10 -12
- package/assets/docs/tree/scaffold.doc.mjs +1 -1
- package/assets/docs/tree/sections-and-placement.doc.mjs +9 -11
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +17 -5
- package/assets/docs/tree/ship.doc.mjs +2 -2
- package/assets/docs/tree/short-and-findable.doc.mjs +9 -8
- package/assets/docs/tree/single-component.doc.mjs +15 -6
- package/assets/docs/tree/start-a-template.doc.mjs +18 -8
- package/assets/docs/tree/subcomponent.doc.mjs +6 -6
- package/assets/docs/tree/template-assets.doc.mjs +2 -2
- package/assets/docs/tree/template-doc-overview.doc.mjs +6 -17
- package/assets/docs/tree/template-fonts.doc.mjs +1 -1
- package/assets/docs/tree/template-grading-rubric.doc.mjs +17 -38
- package/assets/docs/tree/template-icons.doc.mjs +1 -1
- package/assets/docs/tree/template-images-media.doc.mjs +1 -1
- package/assets/docs/tree/template-styles.doc.mjs +2 -2
- package/assets/docs/tree/templates.doc.mjs +7 -1
- package/assets/docs/tree/test-in-an-app.doc.mjs +7 -7
- package/assets/docs/tree/test-template-in-app.doc.mjs +5 -5
- package/assets/docs/tree/themes.doc.mjs +5 -1
- package/assets/docs/tree/tokens-and-setup.doc.mjs +19 -15
- package/assets/docs/tree/tokens-data.doc.mjs +2 -2
- package/assets/docs/tree/troubleshooting.doc.mjs +29 -13
- package/assets/docs/tree/type-scale.doc.mjs +3 -3
- package/assets/docs/tree/uninstall.doc.mjs +109 -0
- package/assets/docs/tree/updates.doc.mjs +92 -0
- package/assets/docs/tree/upgrading.doc.mjs +6 -6
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +15 -3
- package/assets/docs/tree/verify-packed-template.doc.mjs +3 -3
- package/assets/docs/tree/versioning.doc.mjs +14 -9
- package/assets/docs/tree/who-answers.doc.mjs +119 -0
- package/assets/docs/tree/write-good-templates.doc.mjs +1 -1
- package/assets/docs/tree/write-the-template-file.doc.mjs +7 -6
- package/assets/docs/use-a-theme.doc.mjs +2 -2
- package/assets/docs/use-integrations.doc.mjs +120 -0
- package/assets/docs/working-with-ai.doc.mjs +70 -13
- package/assets/templates/themes/butter/butterTheme.ts +4 -2
- package/assets/templates/themes/stone/stoneTheme.ts +4 -2
- package/assets/templates/themes/y2k/y2kTheme.ts +4 -2
- package/assets/theme.template.ts +1 -1
- package/authoring/codemod/codemod.doc.mjs +7 -3
- package/authoring/config/config.doc.mjs +9 -6
- package/authoring/config/type.ts +4 -2
- package/authoring/debug/parse.d.mts +5 -5
- package/authoring/discover/discover.doc.mjs +7 -1
- package/authoring/doctypes/_schema.d.mts +8 -3
- package/authoring/doctypes/_schema.mjs +1 -0
- package/authoring/doctypes/base/graph-fields.doc.mjs +6 -4
- package/authoring/doctypes/command/command.doc.mjs +20 -12
- package/authoring/doctypes/command/type.ts +14 -0
- package/authoring/doctypes/component/component.doc.mjs +30 -27
- package/authoring/doctypes/component/type.ts +21 -8
- package/authoring/doctypes/enum/enum.doc.mjs +7 -4
- package/authoring/doctypes/function/function.doc.mjs +9 -8
- package/authoring/doctypes/hook/hook.doc.mjs +5 -4
- package/authoring/doctypes/hook/type.ts +4 -0
- package/authoring/doctypes/namespace/namespace.doc.mjs +7 -6
- package/authoring/doctypes/reference/reference.doc.mjs +12 -11
- package/authoring/doctypes/schema/schema.doc.mjs +10 -10
- package/authoring/doctypes/template/integration-template.doc.d.mts +11 -0
- package/authoring/doctypes/template/integration-template.doc.mjs +49 -0
- package/authoring/doctypes/template/parse.d.mts +6 -2
- package/authoring/doctypes/template/parse.mjs +3 -1
- package/authoring/doctypes/template/template.doc.mjs +3 -3
- package/authoring/doctypes/template/type.ts +22 -0
- package/authoring/doctypes/theme/theme.doc.mjs +2 -2
- package/authoring/gap-report/gap-report.doc.mjs +2 -2
- package/authoring/identity/identity.doc.mjs +3 -3
- package/authoring/index.d.ts +2 -0
- package/authoring/integration/integration.doc.mjs +30 -6
- package/authoring/integration/parse.test.mjs +21 -0
- package/authoring/integration/schema.d.mts +16 -3
- package/authoring/integration/schema.mjs +34 -2
- package/authoring/integration/type.ts +13 -1
- package/clients/cli/bin/astryx.mjs +11 -65
- package/clients/cli/cli-command.test.mjs +166 -0
- package/clients/cli/command-result-coverage.test.mjs +6 -5
- package/clients/cli/commands/blog.doc.mjs +1 -0
- package/clients/cli/commands/build-theme.batch-report.test.mjs +17 -3
- package/clients/cli/commands/build-theme.color-scheme.test.mjs +1 -1
- package/clients/cli/commands/build-theme.font-warning.test.mjs +3 -3
- package/clients/cli/commands/build-theme.path-safety.test.mjs +224 -6
- package/clients/cli/commands/build-theme.registry.test.mjs +5 -2
- package/clients/cli/commands/build.doc.mjs +1 -0
- package/clients/cli/commands/build.exit-codes-doc.test.mjs +4 -0
- package/clients/cli/commands/cli-postinstall.test.mjs +49 -1
- package/clients/cli/commands/component.doc.mjs +1 -0
- package/clients/cli/commands/{component/index.mjs → component.mjs} +37 -37
- package/clients/cli/commands/component.test.mjs +6 -6
- package/clients/cli/commands/discover.broken-integration.test.mjs +11 -7
- package/clients/cli/commands/discover.doc.mjs +9 -1
- package/clients/cli/commands/discover.mjs +144 -93
- package/clients/cli/commands/discover.no-source.test.mjs +448 -33
- package/clients/cli/commands/discover.sources.test.mjs +20 -1
- package/clients/cli/commands/docs.doc.mjs +3 -2
- package/clients/cli/commands/docs.mjs +50 -20
- package/clients/cli/commands/docs.test.mjs +16 -16
- package/clients/cli/commands/doctor-integration-components.doc.mjs +19 -4
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +20 -5
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +1 -0
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +22 -2
- package/clients/cli/commands/doctor-integration.test.mjs +936 -3
- package/clients/cli/commands/doctor.doc.mjs +12 -2
- package/clients/cli/commands/doctor.mjs +332 -7
- package/clients/cli/commands/doctor.test.mjs +75 -4
- package/clients/cli/commands/gap-report.doc.mjs +15 -2
- package/clients/cli/commands/gap-report.mjs +24 -2
- package/clients/cli/commands/gap-report.test.mjs +79 -0
- package/clients/cli/commands/hook.doc.mjs +1 -0
- package/clients/cli/commands/{hook/index.mjs → hook.mjs} +22 -22
- package/clients/cli/commands/import-hint-correctness.test.mjs +1 -1
- package/clients/cli/commands/init.behavior.test.mjs +235 -1
- package/clients/cli/commands/init.doc.mjs +55 -10
- package/clients/cli/commands/init.flag-help.test.mjs +1 -0
- package/clients/cli/commands/init.mjs +2 -2
- package/clients/cli/commands/integration-add.doc.mjs +7 -0
- package/clients/cli/commands/integration-authoring.test.mjs +49 -3
- package/clients/cli/commands/integration-check.doc.mjs +93 -0
- package/clients/cli/commands/integration-check.test.mjs +489 -0
- package/clients/cli/commands/integration-pack.doc.mjs +8 -1
- package/clients/cli/commands/integration-verify.doc.mjs +8 -1
- package/clients/cli/commands/integration.doc.mjs +6 -2
- package/clients/cli/commands/integration.mjs +119 -7
- package/clients/cli/commands/json-contract.test.mjs +11 -2
- package/clients/cli/commands/manifest.doc.mjs +2 -1
- package/clients/cli/commands/manifest.mjs +67 -0
- package/clients/cli/commands/outside-project.test.mjs +874 -0
- package/clients/cli/commands/postinstall.doc.mjs +23 -0
- package/clients/cli/commands/postinstall.mjs +31 -0
- package/clients/cli/commands/search.doc.mjs +1 -0
- package/clients/cli/commands/search.mjs +16 -11
- package/clients/cli/commands/search.test.mjs +429 -296
- package/clients/cli/commands/setup-nudge.test.mjs +180 -2
- package/clients/cli/commands/swizzle.doc.mjs +7 -0
- package/clients/cli/commands/swizzle.mjs +5 -3
- package/clients/cli/commands/swizzle.routing.test.mjs +19 -2
- package/clients/cli/commands/template.doc.mjs +1 -0
- package/clients/cli/commands/text-json-parity.test.mjs +5 -0
- package/clients/cli/commands/theme-add-lifecycle.test.mjs +3 -3
- package/clients/cli/commands/theme-add.doc.mjs +8 -1
- package/clients/cli/commands/theme-build.doc.mjs +3 -2
- package/clients/cli/commands/theme-eject.doc.mjs +1 -0
- package/clients/cli/commands/theme-list.behavior.test.mjs +6 -0
- package/clients/cli/commands/theme-list.doc.mjs +1 -0
- package/clients/cli/commands/theme-palette-generate.doc.mjs +1 -0
- package/clients/cli/commands/theme-remove.doc.mjs +7 -0
- package/clients/cli/commands/theme-targets.doc.mjs +1 -0
- package/clients/cli/commands/theme-template.doc.mjs +1 -0
- package/clients/cli/commands/theme-use.doc.mjs +7 -0
- package/clients/cli/commands/{build-theme.mjs → theme.mjs} +27 -14
- package/clients/cli/commands/upgrade.config-ordering.test.mjs +2 -1
- package/clients/cli/commands/upgrade.doc.mjs +26 -3
- package/clients/cli/commands/upgrade.file-protection.test.mjs +3 -2
- package/clients/cli/commands/upgrade.hook-output.test.mjs +2 -1
- package/clients/cli/commands/upgrade.mjs +9 -2
- package/clients/cli/commands/upgrade.older-cli.test.mjs +160 -0
- package/clients/cli/commands/upgrade.subfolder-path.test.mjs +97 -0
- package/clients/cli/index.mjs +156 -100
- package/clients/cli/lib/cli-error.mjs +4 -1
- package/clients/cli/lib/component-format.mjs +1 -1
- package/clients/cli/lib/component-format.test.mjs +1 -1
- package/clients/cli/lib/define-command.mjs +14 -9
- package/clients/cli/lib/exit-codes.test.mjs +5 -0
- package/clients/cli/lib/json-shim.mjs +3 -1
- package/clients/cli/lib/manifest.d.ts +9 -0
- package/clients/cli/lib/manifest.mjs +17 -1
- package/clients/cli/lib/manifest.test.mjs +37 -0
- package/clients/cli/lib/welcome-box.mjs +50 -0
- package/clients/cli/run.mjs +108 -0
- package/foundation/agent-docs/agent-doc-state.d.mts +67 -13
- package/foundation/agent-docs/agent-doc-state.mjs +123 -14
- package/foundation/agent-docs/agent-docs.d.mts +104 -15
- package/foundation/agent-docs/agent-docs.mjs +1028 -114
- package/foundation/agent-docs/agent-docs.path-safety.test.mjs +1239 -17
- package/foundation/agent-docs/agent-docs.test.mjs +683 -39
- package/foundation/agent-docs/computer-agent-text.d.mts +170 -0
- package/foundation/agent-docs/computer-agent-text.mjs +750 -0
- package/foundation/agent-docs/computer-agent-text.test.mjs +699 -0
- package/foundation/config/project.d.mts +35 -3
- package/foundation/config/project.mjs +243 -26
- package/foundation/config/project.test.mjs +122 -0
- package/foundation/config/theme-state.mjs +5 -4
- package/foundation/discovery/authoring-self-docs.d.mts +7 -0
- package/foundation/discovery/authoring-self-docs.mjs +17 -4
- package/foundation/discovery/authoring-self-docs.test.mjs +15 -3
- package/foundation/discovery/authoring-surface.d.mts +1 -1
- package/foundation/discovery/authoring-surface.mjs +2 -2
- package/foundation/discovery/authoring-surface.test.mjs +1 -1
- package/foundation/discovery/cli-self-docs.d.mts +2 -1
- package/foundation/discovery/cli-self-docs.mjs +22 -4
- package/foundation/discovery/cli-self-docs.test.mjs +3 -2
- package/foundation/discovery/component-discovery.d.mts +227 -10
- package/foundation/discovery/component-discovery.export-names.test.mjs +760 -0
- package/foundation/discovery/component-discovery.mjs +940 -57
- package/foundation/discovery/component-discovery.test.mjs +96 -0
- package/foundation/discovery/component-loader.d.mts +1 -1
- package/foundation/discovery/component-replacement.mjs +20 -1
- package/foundation/discovery/component-replacement.test.mjs +40 -0
- package/foundation/discovery/copied-passages.d.mts +216 -0
- package/foundation/discovery/copied-passages.mjs +720 -0
- package/foundation/discovery/copied-passages.test.mjs +124 -0
- package/foundation/discovery/doc-consistency.d.mts +34 -0
- package/foundation/discovery/doc-consistency.mjs +513 -0
- package/foundation/discovery/doc-consistency.test.mjs +347 -0
- package/foundation/discovery/doc-fluff.d.mts +112 -0
- package/foundation/discovery/doc-fluff.mjs +328 -0
- package/foundation/discovery/doc-fluff.test.mjs +142 -0
- package/foundation/discovery/doc-types.d.mts +157 -0
- package/foundation/discovery/doc-types.mjs +1231 -0
- package/foundation/discovery/doc-types.test.mjs +744 -0
- package/foundation/discovery/docs-discovery.d.mts +88 -0
- package/foundation/discovery/docs-discovery.mjs +97 -3
- package/foundation/discovery/integration-doc-files.d.mts +22 -0
- package/foundation/discovery/integration-doc-files.mjs +231 -0
- package/foundation/discovery/integration-doc-files.test.mjs +246 -0
- package/foundation/discovery/module-exports.d.mts +68 -0
- package/foundation/discovery/module-exports.mjs +609 -31
- package/foundation/discovery/module-exports.test.mjs +172 -0
- package/foundation/discovery/package-tsconfig.d.mts +14 -0
- package/foundation/discovery/package-tsconfig.mjs +228 -0
- package/foundation/discovery/package-tsconfig.test.mjs +210 -0
- package/foundation/discovery/project-typescript.d.mts +32 -0
- package/foundation/discovery/project-typescript.mjs +89 -0
- package/foundation/discovery/prop-drift.d.mts +297 -0
- package/foundation/discovery/prop-drift.mjs +2428 -0
- package/foundation/discovery/prop-drift.test.mjs +2337 -0
- package/foundation/discovery/runner-allowlist.d.mts +38 -0
- package/foundation/discovery/runner-allowlist.mjs +51 -0
- package/foundation/discovery/runner-commands.d.mts +77 -0
- package/foundation/discovery/runner-commands.mjs +294 -0
- package/foundation/discovery/runner-commands.test.mjs +128 -0
- package/foundation/discovery/stray-pointers.d.mts +52 -0
- package/foundation/discovery/stray-pointers.mjs +293 -0
- package/foundation/discovery/stray-pointers.test.mjs +86 -0
- package/foundation/discovery/template-adapter.mjs +92 -6
- package/foundation/discovery/template-needs.mjs +6 -46
- package/foundation/discovery/theme-discovery.mjs +147 -3
- package/foundation/discovery/theme-imports.mjs +8 -4
- package/foundation/discovery/theme-imports.test.mjs +1 -1
- package/foundation/discovery/type-match.d.mts +53 -0
- package/foundation/discovery/type-match.mjs +660 -0
- package/foundation/discovery/type-match.test.mjs +169 -0
- package/foundation/discovery/type-text.d.mts +68 -0
- package/foundation/discovery/type-text.mjs +658 -0
- package/foundation/discovery/type-text.test.mjs +196 -0
- package/foundation/discovery/unresolved-references.d.mts +62 -0
- package/foundation/discovery/unresolved-references.mjs +790 -0
- package/foundation/discovery/unresolved-references.test.mjs +567 -0
- package/foundation/doc-compiler/doc-loads.test.mjs +84 -10
- package/foundation/doc-compiler/inputs.mjs +27 -1
- package/foundation/doc-compiler/inputs.test.mjs +0 -1
- package/foundation/doc-compiler/links.d.mts +41 -5
- package/foundation/doc-compiler/links.mjs +167 -28
- package/foundation/doc-compiler/links.test.mjs +97 -4
- package/foundation/doc-compiler/read.d.mts +1 -1
- package/foundation/doc-compiler/read.mjs +59 -1
- package/foundation/doc-compiler/read.test.mjs +11 -2
- package/foundation/doc-compiler/split-topic-keywords.test.mjs +3 -2
- package/foundation/doc-compiler/tree.d.mts +32 -6
- package/foundation/doc-compiler/tree.mjs +107 -44
- package/foundation/doc-compiler/tree.test.mjs +14 -7
- package/foundation/env/cli-command.d.mts +83 -0
- package/foundation/env/cli-command.mjs +152 -0
- package/foundation/env/cli-command.test.mjs +129 -0
- package/foundation/env/node-version.test.mjs +15 -3
- package/foundation/env/package-manager.d.mts +93 -9
- package/foundation/env/package-manager.global.test.mjs +66 -0
- package/foundation/env/package-manager.mjs +184 -13
- package/foundation/env/package-manager.test.mjs +341 -15
- package/foundation/env/project-scope.d.mts +9 -0
- package/foundation/env/project-scope.mjs +33 -0
- package/foundation/env/search-path.d.mts +42 -0
- package/foundation/env/search-path.mjs +205 -0
- package/foundation/env/search-path.test.mjs +122 -0
- package/foundation/env/user-dirs.d.mts +39 -0
- package/foundation/env/user-dirs.mjs +93 -0
- package/foundation/env/user-dirs.test.mjs +72 -0
- package/foundation/env/user-settings.d.mts +46 -0
- package/foundation/env/user-settings.mjs +106 -0
- package/foundation/env/user-settings.test.mjs +64 -0
- package/foundation/fs/file-protection.mjs +15 -1
- package/foundation/fs/module-loader.d.mts +2 -1
- package/foundation/fs/module-loader.mjs +60 -4
- package/foundation/fs/module-loader.stdout.test.mjs +3 -2
- package/foundation/fs/module-loader.test.mjs +194 -0
- package/foundation/fs/path-compare.d.mts +33 -0
- package/foundation/fs/path-compare.mjs +73 -0
- package/foundation/fs/paths.d.mts +122 -4
- package/foundation/fs/paths.mjs +675 -29
- package/foundation/fs/paths.test.mjs +439 -54
- package/foundation/fs/read-record.d.mts +18 -0
- package/foundation/fs/read-record.mjs +131 -0
- package/foundation/fs/read-record.test.mjs +77 -0
- package/foundation/integrations/autolink.d.mts +2 -1
- package/foundation/integrations/autolink.mjs +4 -13
- package/foundation/integrations/cli-peer-version.d.mts +36 -0
- package/foundation/integrations/cli-peer-version.mjs +132 -0
- package/foundation/integrations/cli-peer-version.test.mjs +354 -0
- package/foundation/integrations/computer-integrations.d.mts +81 -0
- package/foundation/integrations/computer-integrations.mjs +345 -0
- package/foundation/integrations/computer-integrations.test.mjs +292 -0
- package/foundation/integrations/contribution-inventory.d.mts +26 -20
- package/foundation/integrations/contribution-inventory.mjs +97 -8
- package/foundation/integrations/exports-subpaths.d.mts +57 -0
- package/foundation/integrations/exports-subpaths.mjs +113 -0
- package/foundation/integrations/integration-warnings.mjs +3 -2
- package/foundation/integrations/integration-warnings.test.mjs +8 -9
- package/foundation/integrations/integrations.d.mts +51 -1
- package/foundation/integrations/integrations.mjs +106 -4
- package/foundation/integrations/issue.ts +6 -0
- package/foundation/integrations/public-imports.d.mts +118 -0
- package/foundation/integrations/public-imports.mjs +1769 -0
- package/foundation/integrations/public-imports.test.mjs +1793 -0
- package/foundation/integrations/validate-contributions.d.mts +117 -0
- package/foundation/integrations/validate-contributions.mjs +1209 -14
- package/foundation/release/agent-text-worker.d.mts +4 -0
- package/foundation/release/agent-text-worker.mjs +52 -0
- package/foundation/release/cache.d.mts +310 -0
- package/foundation/release/cache.mjs +1216 -0
- package/foundation/release/cache.test.mjs +923 -0
- package/foundation/release/choose.d.mts +207 -0
- package/foundation/release/choose.mjs +677 -0
- package/foundation/release/choose.test.mjs +427 -0
- package/foundation/release/core-worker.d.mts +4 -0
- package/foundation/release/core-worker.mjs +38 -0
- package/foundation/release/global-state.d.mts +263 -0
- package/foundation/release/global-state.mjs +474 -0
- package/foundation/release/global-state.test.mjs +381 -0
- package/foundation/release/handoff.d.mts +79 -0
- package/foundation/release/handoff.e2e.test.mjs +278 -0
- package/foundation/release/handoff.mjs +524 -0
- package/foundation/release/lock-lease.d.mts +23 -0
- package/foundation/release/lock-lease.mjs +80 -0
- package/foundation/release/notices.d.mts +307 -0
- package/foundation/release/notices.mjs +707 -0
- package/foundation/release/notices.test.mjs +586 -0
- package/foundation/release/npm-guard.d.mts +4 -0
- package/foundation/release/npm-guard.mjs +126 -0
- package/foundation/release/project.d.mts +141 -0
- package/foundation/release/project.mjs +466 -0
- package/foundation/release/project.test.mjs +288 -0
- package/foundation/release/refresh-worker.d.mts +4 -0
- package/foundation/release/refresh-worker.mjs +27 -0
- package/foundation/release/run-context.d.mts +47 -0
- package/foundation/release/run-context.mjs +163 -0
- package/foundation/release/update-notice-env.d.mts +28 -0
- package/foundation/release/update-notice-env.mjs +39 -0
- package/foundation/response/base.d.ts +26 -3
- package/foundation/response/error-codes.d.mts +3 -1
- package/foundation/response/error-codes.doc.mjs +12 -0
- package/foundation/response/error-codes.mjs +17 -0
- package/foundation/response/error-codes.test.mjs +2 -0
- package/foundation/response/json-contract.test.mjs +7 -2
- package/foundation/response/json.mjs +4 -1
- package/foundation/response/response-types.doc.mjs +22 -11
- package/foundation/response/response-types.doc.test.mjs +46 -0
- package/foundation/response/response.doc.mjs +3 -3
- package/foundation/route/route.d.mts +285 -0
- package/foundation/route/route.mjs +324 -0
- package/foundation/route/route.test.mjs +153 -0
- package/foundation/runtime/hosted-runtime.test.mjs +403 -0
- package/foundation/runtime/locked-versions.d.mts +32 -0
- package/foundation/runtime/locked-versions.mjs +65 -0
- package/foundation/runtime/package-root.d.mts +91 -0
- package/foundation/runtime/package-root.mjs +174 -0
- package/foundation/runtime/package-set.d.mts +62 -0
- package/foundation/runtime/package-set.mjs +130 -0
- package/foundation/runtime/package-set.test.mjs +432 -0
- package/foundation/text/string-utils.d.mts +2 -1
- package/foundation/text/string-utils.mjs +16 -5
- package/foundation/text/suggest-order.d.mts +72 -0
- package/foundation/text/suggest-order.mjs +363 -0
- package/foundation/text/suggest-order.test.mjs +259 -0
- package/foundation/xle/browser-imports.test.mjs +74 -0
- package/foundation/xle/registry.mjs +4 -0
- package/foundation/xle/registry.test.mjs +28 -0
- package/host/door-conformance.test.mjs +274 -0
- package/host/index.d.ts +116 -0
- package/host/index.mjs +295 -0
- package/host/index.test.mjs +302 -0
- package/package.json +16 -11
- package/scripts/postinstall.mjs +24 -5
- package/assets/docs/tree/integrations.doc.mjs +0 -40
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
* contract: a topic returns its whole doc, and `--index` its sections.
|
|
11
11
|
* Supports --detail (full|compact|brief) and --lang (en|zh|dense). A code
|
|
12
12
|
* block's label prints above its fence, and table cells escape their pipes.
|
|
13
|
+
* Docs write commands as bare `astryx ...`; text output prefixes them with the
|
|
14
|
+
* project's invocation (prefixCliCommands, in formatBlock and the summaries),
|
|
15
|
+
* and JSON keeps them bare.
|
|
13
16
|
*
|
|
14
17
|
* Usage:
|
|
15
18
|
* astryx docs List available topics
|
|
@@ -25,6 +28,7 @@
|
|
|
25
28
|
import {
|
|
26
29
|
formatCliCommand,
|
|
27
30
|
getCliInvocation,
|
|
31
|
+
prefixCliCommands,
|
|
28
32
|
} from '../../../foundation/env/package-manager.mjs';
|
|
29
33
|
import {jsonOut} from '../../../foundation/response/json.mjs';
|
|
30
34
|
import {
|
|
@@ -96,12 +100,17 @@ function formatTableCompact(headers, rows) {
|
|
|
96
100
|
* @returns {string | null}
|
|
97
101
|
*/
|
|
98
102
|
export function formatBlock(block, detail) {
|
|
103
|
+
// Docs write commands as bare `astryx ...`; show them the way this project
|
|
104
|
+
// runs the CLI.
|
|
105
|
+
const stem = getCliInvocation();
|
|
106
|
+
/** @param {string} value */
|
|
107
|
+
const shown = value => prefixCliCommands(value, stem);
|
|
99
108
|
switch (block.type) {
|
|
100
109
|
case 'prose':
|
|
101
|
-
return block.text;
|
|
110
|
+
return shown(block.text);
|
|
102
111
|
|
|
103
112
|
case 'heading':
|
|
104
|
-
return `${'#'.repeat(block.level || 3)} ${block.text}`;
|
|
113
|
+
return `${'#'.repeat(block.level || 3)} ${shown(block.text)}`;
|
|
105
114
|
|
|
106
115
|
case 'code':
|
|
107
116
|
if (detail === 'compact' || detail === 'brief') return null;
|
|
@@ -112,19 +121,29 @@ export function formatBlock(block, detail) {
|
|
|
112
121
|
const label = block.label
|
|
113
122
|
? `${block.label.replace(/:\s*$/, '')}:\n`
|
|
114
123
|
: '';
|
|
115
|
-
|
|
124
|
+
const body = prefixCliCommands(block.code, stem, block.lang);
|
|
125
|
+
return `${label}\`\`\`${block.lang}\n${body}\n\`\`\``;
|
|
116
126
|
}
|
|
117
127
|
|
|
118
|
-
case 'table':
|
|
128
|
+
case 'table': {
|
|
129
|
+
// A cell that is a whole command, such as `astryx theme add neutral`
|
|
130
|
+
// written without backticks, is prefixed too.
|
|
131
|
+
/** @param {string} cell */
|
|
132
|
+
const shownCell = cell =>
|
|
133
|
+
/^astryx(\s|$)/.test(cell ?? '')
|
|
134
|
+
? `${stem}${cell.slice('astryx'.length)}`
|
|
135
|
+
: shown(cell ?? '');
|
|
136
|
+
const rows = block.rows.map(row => row.map(shownCell));
|
|
119
137
|
if (detail === 'brief') {
|
|
120
|
-
return
|
|
138
|
+
return rows
|
|
121
139
|
.map(r => r.slice(0, 2).map(tableCell).join('='))
|
|
122
140
|
.join(' | ');
|
|
123
141
|
}
|
|
124
142
|
if (detail === 'compact') {
|
|
125
|
-
return formatTableCompact(block.headers,
|
|
143
|
+
return formatTableCompact(block.headers, rows);
|
|
126
144
|
}
|
|
127
|
-
return formatTable(block.headers,
|
|
145
|
+
return formatTable(block.headers, rows);
|
|
146
|
+
}
|
|
128
147
|
|
|
129
148
|
case 'list': {
|
|
130
149
|
const prefix =
|
|
@@ -135,7 +154,9 @@ export function formatBlock(block, detail) {
|
|
|
135
154
|
: block.style === 'do'
|
|
136
155
|
? () => '+ '
|
|
137
156
|
: () => '- ';
|
|
138
|
-
return block.items
|
|
157
|
+
return block.items
|
|
158
|
+
.map((item, i) => `${prefix(i)}${shown(item)}`)
|
|
159
|
+
.join('\n');
|
|
139
160
|
}
|
|
140
161
|
|
|
141
162
|
default:
|
|
@@ -289,7 +310,7 @@ function formatTreeChild(child, detail, level, root, run, owner) {
|
|
|
289
310
|
child.summary &&
|
|
290
311
|
(child.kind === 'namespace' || child.kind === 'generic')
|
|
291
312
|
) {
|
|
292
|
-
parts.push(child.summary);
|
|
313
|
+
parts.push(prefixCliCommands(child.summary, run));
|
|
293
314
|
}
|
|
294
315
|
const content = formatTreeBlocks(child.content ?? [], detail, level - 2);
|
|
295
316
|
if (content.length > 0) parts.push(content.join('\n\n'));
|
|
@@ -341,7 +362,7 @@ function emitTree(node, detail, childDetail, run) {
|
|
|
341
362
|
.every(route => route.startsWith(`${node.route}/`));
|
|
342
363
|
const root = allBelow ? node.route : '';
|
|
343
364
|
emit(
|
|
344
|
-
section(node.title, wrapText(node.summary)),
|
|
365
|
+
section(node.title, wrapText(prefixCliCommands(node.summary, run))),
|
|
345
366
|
record({package: node.package}),
|
|
346
367
|
...(node.content?.length
|
|
347
368
|
? [
|
|
@@ -427,9 +448,12 @@ function emitIndex(index, owner, run) {
|
|
|
427
448
|
// Summaries wrap rather than being cut: the summary is how a reader picks
|
|
428
449
|
// the one section to open. A section another package wrote says which one.
|
|
429
450
|
records(
|
|
430
|
-
index.sections.map(s =>
|
|
431
|
-
|
|
432
|
-
|
|
451
|
+
index.sections.map(s => {
|
|
452
|
+
const shown = {...s, summary: prefixCliCommands(s.summary ?? '', run)};
|
|
453
|
+
return s.package === owner
|
|
454
|
+
? shown
|
|
455
|
+
: {...shown, title: `${s.title} (${s.package})`};
|
|
456
|
+
}),
|
|
433
457
|
{
|
|
434
458
|
fields: ['id', 'title', 'summary'],
|
|
435
459
|
layout: 'inline',
|
|
@@ -462,9 +486,10 @@ function childRow(child, owner) {
|
|
|
462
486
|
return {
|
|
463
487
|
// A child another package owns says which one.
|
|
464
488
|
name: child.package === owner ? child.name : `${child.name} (${child.package})`,
|
|
465
|
-
summary:
|
|
466
|
-
? `${child.title}: ${child.summary}`
|
|
467
|
-
|
|
489
|
+
summary: prefixCliCommands(
|
|
490
|
+
titleAddsIdentity ? `${child.title}: ${child.summary}` : child.summary,
|
|
491
|
+
getCliInvocation(),
|
|
492
|
+
),
|
|
468
493
|
};
|
|
469
494
|
}
|
|
470
495
|
|
|
@@ -479,14 +504,19 @@ function childRow(child, owner) {
|
|
|
479
504
|
function emitNode(node, detail, run) {
|
|
480
505
|
if (node.kind === 'namespace') {
|
|
481
506
|
emit(
|
|
482
|
-
section(node.title, wrapText(node.summary)),
|
|
507
|
+
section(node.title, wrapText(prefixCliCommands(node.summary, run))),
|
|
483
508
|
record({package: node.package}),
|
|
484
|
-
// A namespace may author intro `blocks`; they render above its children
|
|
509
|
+
// A namespace may author intro `blocks`; they render above its children,
|
|
510
|
+
// prose wrapped like the summary.
|
|
485
511
|
...(node.content?.length
|
|
486
512
|
? [
|
|
487
513
|
text(
|
|
488
514
|
node.content
|
|
489
|
-
.map(b =>
|
|
515
|
+
.map(b =>
|
|
516
|
+
b.type === 'prose'
|
|
517
|
+
? wrapText(formatBlock(b, detail) ?? '')
|
|
518
|
+
: formatBlock(b, detail),
|
|
519
|
+
)
|
|
490
520
|
.filter(Boolean)
|
|
491
521
|
.join('\n\n'),
|
|
492
522
|
),
|
|
@@ -505,7 +535,7 @@ function emitNode(node, detail, run) {
|
|
|
505
535
|
text(
|
|
506
536
|
[
|
|
507
537
|
// A child's route is its parent's route and its name, except a flat
|
|
508
|
-
// topic in
|
|
538
|
+
// topic in a topic level, which keeps its own name.
|
|
509
539
|
node.slots.every(slot =>
|
|
510
540
|
slot.children.every(child => child.route.startsWith(`${node.route}/`)),
|
|
511
541
|
)
|
|
@@ -113,7 +113,7 @@ describe('progressive reads', () => {
|
|
|
113
113
|
expect(stdout).toMatch(/^principles +\S/m);
|
|
114
114
|
expect(widest(stdout)).toBeLessThanOrEqual(120);
|
|
115
115
|
// The repo root has no `astryx` bin, so the CLI names the scoped package.
|
|
116
|
-
expect(stdout).toMatch(/Usage: \S+(?: dlx)? (?:astryx|@astryxdesign\/cli) docs <topic>/);
|
|
116
|
+
expect(stdout).toMatch(/Usage: \S+(?: dlx)? (?:astryx|@astryxdesign\/cli(?:@\S+)?) docs <topic>/);
|
|
117
117
|
}, SLOW);
|
|
118
118
|
|
|
119
119
|
it("prints a topic's section index with the keys to read by", async () => {
|
|
@@ -227,7 +227,7 @@ describe('the docs tree, one level at a time', () => {
|
|
|
227
227
|
it('wraps namespace summaries without discarding searchable words', async () => {
|
|
228
228
|
const {status, stdout} = await runCli([
|
|
229
229
|
'docs',
|
|
230
|
-
'
|
|
230
|
+
'authoring/building-blocks/templates',
|
|
231
231
|
]);
|
|
232
232
|
expect(status).toBe(0);
|
|
233
233
|
expect(stdout).toMatch(/^start-a-template +Help others build apps faster/m);
|
|
@@ -255,7 +255,7 @@ describe('the docs tree, one level at a time', () => {
|
|
|
255
255
|
const {status, stdout} = await runCli(['docs', 'cli/api/functions/search']);
|
|
256
256
|
expect(status).toBe(0);
|
|
257
257
|
expect(stdout).toMatch(/^## search\(\)/m);
|
|
258
|
-
expect(stdout).
|
|
258
|
+
expect(stdout).toMatch(/Read it with `.+ docs cli\/commands\/search`\./);
|
|
259
259
|
expect(stdout).toMatch(/Up: .*docs cli\/api\/functions$/m);
|
|
260
260
|
}, SLOW);
|
|
261
261
|
|
|
@@ -274,8 +274,8 @@ describe('the docs tree, one level at a time', () => {
|
|
|
274
274
|
}, SLOW);
|
|
275
275
|
|
|
276
276
|
it('reads the integration guides by their routes, and not by the old name', async () => {
|
|
277
|
-
//
|
|
278
|
-
const level = await runCli(['docs', '
|
|
277
|
+
// authoring is a namespace: one level, its guides by slot.
|
|
278
|
+
const level = await runCli(['docs', 'authoring']);
|
|
279
279
|
expect(level.status).toBe(0);
|
|
280
280
|
expect(level.stdout).toMatch(
|
|
281
281
|
/^quick-start +Create a new integration package/m,
|
|
@@ -283,42 +283,42 @@ describe('the docs tree, one level at a time', () => {
|
|
|
283
283
|
expect(level.stdout).toMatch(/^building-blocks +/m);
|
|
284
284
|
const guide = await runCli([
|
|
285
285
|
'docs',
|
|
286
|
-
'
|
|
286
|
+
'authoring/building-blocks/codemods',
|
|
287
287
|
'--index',
|
|
288
288
|
]);
|
|
289
289
|
expect(guide.status).toBe(0);
|
|
290
290
|
expect(guide.stdout).toMatch(
|
|
291
|
-
/Read one section: .*docs
|
|
291
|
+
/Read one section: .*docs authoring\/building-blocks\/codemods <section>/,
|
|
292
292
|
);
|
|
293
293
|
// A bare read is one level too: the sections, and how to read it all.
|
|
294
294
|
const bare = await runCli([
|
|
295
295
|
'docs',
|
|
296
|
-
'
|
|
296
|
+
'authoring/building-blocks/codemods',
|
|
297
297
|
]);
|
|
298
298
|
expect(bare.status).toBe(0);
|
|
299
299
|
expect(bare.stdout).toBe(guide.stdout);
|
|
300
300
|
expect(bare.stdout).toMatch(
|
|
301
|
-
/Read everything: +.*docs
|
|
301
|
+
/Read everything: +.*docs authoring\/building-blocks\/codemods --full$/m,
|
|
302
302
|
);
|
|
303
303
|
const one = await runCli([
|
|
304
304
|
'docs',
|
|
305
|
-
'
|
|
305
|
+
'authoring/building-blocks/codemods',
|
|
306
306
|
'which-codemods-run',
|
|
307
307
|
]);
|
|
308
308
|
expect(one.status).toBe(0);
|
|
309
309
|
expect(one.stdout).toMatch(/^## Choose when a codemod runs$/m);
|
|
310
310
|
expect(one.stdout).toMatch(
|
|
311
|
-
/^Up: .*docs
|
|
311
|
+
/^Up: .*docs authoring\/building-blocks\/codemods --index$/m,
|
|
312
312
|
);
|
|
313
313
|
expect(one.stdout).toMatch(
|
|
314
|
-
/^Previous: .*docs
|
|
314
|
+
/^Previous: .*docs authoring\/building-blocks\/codemods write-the-transform$/m,
|
|
315
315
|
);
|
|
316
316
|
expect(one.stdout).toMatch(
|
|
317
|
-
/^Next: .*docs
|
|
317
|
+
/^Next: .*docs authoring\/building-blocks\/codemods run-codemods-in-an-app$/m,
|
|
318
318
|
);
|
|
319
319
|
const full = await runCli([
|
|
320
320
|
'docs',
|
|
321
|
-
'
|
|
321
|
+
'authoring/building-blocks/codemods',
|
|
322
322
|
'--full',
|
|
323
323
|
]);
|
|
324
324
|
expect(full.status).toBe(0);
|
|
@@ -343,11 +343,11 @@ describe('the docs tree, one level at a time', () => {
|
|
|
343
343
|
type: 'docs.detail.section',
|
|
344
344
|
data: {id: 'side-panels', title: 'Side panels'},
|
|
345
345
|
});
|
|
346
|
-
const missing = await runCli(['docs', '
|
|
346
|
+
const missing = await runCli(['docs', 'authoring', 'zzzz-nope', '--json']);
|
|
347
347
|
expect(missing.status).toBe(1);
|
|
348
348
|
const error = JSON.parse(missing.stdout);
|
|
349
349
|
expect(error).toMatchObject({code: 'ERR_UNKNOWN_SECTION'});
|
|
350
|
-
expect(error.suggestions.map(s => s.name)).toContain('
|
|
350
|
+
expect(error.suggestions.map(s => s.name)).toContain('authoring/quick-start');
|
|
351
351
|
}, SLOW);
|
|
352
352
|
});
|
|
353
353
|
|
|
@@ -8,7 +8,8 @@ export const doc = {
|
|
|
8
8
|
name: 'doctor integration components',
|
|
9
9
|
displayName: 'astryx doctor integration components',
|
|
10
10
|
namespace: 'cli/commands',
|
|
11
|
-
summary:
|
|
11
|
+
summary:
|
|
12
|
+
'Check integration component names, replacements, and documented props',
|
|
12
13
|
description:
|
|
13
14
|
'Compares one local or installed integration with Core component names. A ' +
|
|
14
15
|
'conflict is allowed and exits successfully, but the report recommends ' +
|
|
@@ -17,7 +18,17 @@ export const doc = {
|
|
|
17
18
|
'range that turns replacement on, a missing Core target, an invalid value, a ' +
|
|
18
19
|
'component named after a different Core component, or two replacements for one ' +
|
|
19
20
|
'Core component is an error. In a package without that range they are warnings, ' +
|
|
20
|
-
'with a warning for each such component, naming the range to declare.'
|
|
21
|
+
'with a warning for each such component, naming the range to declare. ' +
|
|
22
|
+
"Then it compares each component doc's props with the component's TypeScript " +
|
|
23
|
+
"props, using the project's own `typescript` (or, where `typescript` is missing or " +
|
|
24
|
+
'has no JavaScript compiler API, as TypeScript 7 does, the `@typescript/typescript6` ' +
|
|
25
|
+
'it installs), and warns about a documented prop ' +
|
|
26
|
+
'the code lacks, a prop the package declares that the doc omits, a wrong ' +
|
|
27
|
+
'`required`, and a type that does not match where both sides read exactly ' +
|
|
28
|
+
'(it lists every other documented type as not compared, with the reason). ' +
|
|
29
|
+
'Without TypeScript it prints one ' +
|
|
30
|
+
'line saying the comparison was skipped. It also warns on each `{@link}` in ' +
|
|
31
|
+
"a component doc's text that names no doc.",
|
|
21
32
|
fn: 'integrationComponentConflicts',
|
|
22
33
|
args: [
|
|
23
34
|
{
|
|
@@ -29,16 +40,20 @@ export const doc = {
|
|
|
29
40
|
},
|
|
30
41
|
],
|
|
31
42
|
examples: [
|
|
32
|
-
{
|
|
43
|
+
{
|
|
44
|
+
label: 'Check the local integration',
|
|
45
|
+
cli: 'astryx doctor integration components',
|
|
46
|
+
},
|
|
33
47
|
{
|
|
34
48
|
label: 'Check an installed integration',
|
|
35
49
|
cli: 'astryx doctor integration components @acme/widgets --json',
|
|
36
50
|
},
|
|
37
51
|
],
|
|
52
|
+
outsideProject: 'same',
|
|
38
53
|
exitCodes: [
|
|
39
54
|
{
|
|
40
55
|
code: 0,
|
|
41
|
-
when: 'the check completed; component name conflicts,
|
|
56
|
+
when: 'the check completed; component name conflicts, replaces findings for a package without the CLI range, props that differ from the code, and links that name no doc are warnings',
|
|
42
57
|
},
|
|
43
58
|
{
|
|
44
59
|
code: 1,
|
|
@@ -8,12 +8,17 @@ export const doc = {
|
|
|
8
8
|
name: 'doctor integration docs',
|
|
9
9
|
displayName: 'astryx doctor integration docs',
|
|
10
10
|
namespace: 'cli/commands',
|
|
11
|
-
summary:
|
|
11
|
+
summary:
|
|
12
|
+
"Check an integration's docs: the docs tree they add, every link, and overlaps with Core topics",
|
|
12
13
|
description:
|
|
13
14
|
'Checks the docs tree the package adds, every link in its docs, and overlaps with Core topics. ' +
|
|
14
15
|
'Intentional replacements and extensions are information. ' +
|
|
15
16
|
'A same-name topic without `replaces` or `extends` is an accidental conflict ' +
|
|
16
|
-
'and fails until the author declares the relationship or renames it.
|
|
17
|
+
'and fails until the author declares the relationship or renames it. ' +
|
|
18
|
+
'It also lists each pair of topics (two of the package, or one of them and a Core topic other than the one it replaces) ' +
|
|
19
|
+
'that repeat 10 or more words of prose word for word, each padding phrase and low-density topic, ' +
|
|
20
|
+
'and each written `astryx docs <name>` that should be a link, ' +
|
|
21
|
+
'each as a warning (`copied_passage`, `doc_fluff`, `stray_doc_pointer`; exit 0, and `integration check --strict` fails on it). See {@link generic:check-your-docs}.',
|
|
17
22
|
fn: 'integrationDocConflicts',
|
|
18
23
|
args: [
|
|
19
24
|
{
|
|
@@ -25,15 +30,25 @@ export const doc = {
|
|
|
25
30
|
},
|
|
26
31
|
],
|
|
27
32
|
examples: [
|
|
28
|
-
{
|
|
33
|
+
{
|
|
34
|
+
label: 'Check the local integration',
|
|
35
|
+
cli: 'astryx doctor integration docs',
|
|
36
|
+
},
|
|
29
37
|
{
|
|
30
38
|
label: 'Check an installed integration',
|
|
31
39
|
cli: 'astryx doctor integration docs @acme/widgets --json',
|
|
32
40
|
},
|
|
33
41
|
],
|
|
42
|
+
outsideProject: 'same',
|
|
34
43
|
exitCodes: [
|
|
35
|
-
{
|
|
36
|
-
|
|
44
|
+
{
|
|
45
|
+
code: 0,
|
|
46
|
+
when: 'all Core overlaps are explicitly declared or no overlap exists',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
code: 1,
|
|
50
|
+
when: 'an overlap is accidental, a doc is invalid, a namespace or placement fails, or a reference block cannot include what it names. A link that names no doc is a warning, and does not change the exit code',
|
|
51
|
+
},
|
|
37
52
|
],
|
|
38
53
|
related: ['doctor integration validate', 'docs'],
|
|
39
54
|
};
|
|
@@ -14,7 +14,17 @@ export const doc = {
|
|
|
14
14
|
description:
|
|
15
15
|
'Validates one integration at a time: the local package rooted at cwd, or an ' +
|
|
16
16
|
'installed package resolved by name. It schema-checks the manifest, verifies ' +
|
|
17
|
-
'every declared contribution root, and reports every finding. Safe as a CI gate.'
|
|
17
|
+
'every declared contribution root, and reports every finding. Safe as a CI gate. ' +
|
|
18
|
+
'It then checks every doc the package ships under its roots against the ' +
|
|
19
|
+
"published authoring type for its kind, with the project's own `typescript` (or, " +
|
|
20
|
+
'where `typescript` is missing or has no JavaScript compiler API, as TypeScript 7 ' +
|
|
21
|
+
'does, the `@typescript/typescript6` it installs), and ' +
|
|
22
|
+
'warns about each field that does not match, naming the field and a fix. A doc ' +
|
|
23
|
+
'it cannot fully check is listed with the reason, and test fixtures under ' +
|
|
24
|
+
'`__tests__` in the components or docs root are counted, not checked. Without ' +
|
|
25
|
+
'TypeScript it prints one line saying the docs were not type-checked. ' +
|
|
26
|
+
'Outside a package, with no package name it writes nothing and reports one no_package issue (exit 1); ' +
|
|
27
|
+
'a package name is looked up as it is in a project.',
|
|
18
28
|
fn: 'validateIntegration',
|
|
19
29
|
args: [
|
|
20
30
|
{
|
|
@@ -35,9 +45,19 @@ export const doc = {
|
|
|
35
45
|
cli: 'astryx doctor integration validate @acme/widgets --json',
|
|
36
46
|
},
|
|
37
47
|
],
|
|
48
|
+
outsideProject: 'own',
|
|
38
49
|
exitCodes: [
|
|
39
|
-
{
|
|
50
|
+
{
|
|
51
|
+
code: 0,
|
|
52
|
+
when: 'no error-severity issues (warnings, including doc type findings, are allowed)',
|
|
53
|
+
},
|
|
40
54
|
{code: 1, when: 'one or more error-severity issues'},
|
|
41
55
|
],
|
|
42
56
|
related: ['doctor integration templates', 'template'],
|
|
57
|
+
notes: [
|
|
58
|
+
{
|
|
59
|
+
type: 'prose',
|
|
60
|
+
text: "In global mode: outside a package, with no package named, it writes nothing, reports one `no_package` issue, and exits 1; a package name is looked up as it is in a project. In a project, the project's version of Astryx runs it, whichever astryx command you start. See {@link namespace:global} and {@link generic:global-integrations}.",
|
|
61
|
+
},
|
|
62
|
+
],
|
|
43
63
|
};
|