@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
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import * as fs from 'node:fs';
|
|
17
17
|
import * as path from 'node:path';
|
|
18
18
|
import {assertWithin, PathSafetyError} from '../fs/path-safety.mjs';
|
|
19
|
+
import {formatCliCommand} from '../env/package-manager.mjs';
|
|
19
20
|
|
|
20
21
|
export const LOCAL_THEME_ROOT = './src/themes';
|
|
21
22
|
export const THEME_MODULE_BASENAME = 'astryx-themes';
|
|
@@ -106,7 +107,7 @@ export function themeModuleCandidates(projectDir) {
|
|
|
106
107
|
function validThemeRecord(value, label) {
|
|
107
108
|
if (!isRecord(value) || !isRecord(value.themes)) {
|
|
108
109
|
throw new ThemeStateError(
|
|
109
|
-
`${label} must carry a static ${THEME_RECORD_MARKER} header. Regenerate it with
|
|
110
|
+
`${label} must carry a static ${THEME_RECORD_MARKER} header. Regenerate it with \`${formatCliCommand('theme add <slug>')}\`.`,
|
|
110
111
|
);
|
|
111
112
|
}
|
|
112
113
|
const keys = Object.keys(value);
|
|
@@ -139,7 +140,7 @@ function validThemeRecord(value, label) {
|
|
|
139
140
|
!THEME_SLUG_RE.test(value.defaultThemeSlug)
|
|
140
141
|
) {
|
|
141
142
|
throw new ThemeStateError(
|
|
142
|
-
`${label} defaultThemeSlug must be a lowercase kebab-case slug. Regenerate it with
|
|
143
|
+
`${label} defaultThemeSlug must be a lowercase kebab-case slug. Regenerate it with \`${formatCliCommand('theme use <slug>')}\`.`,
|
|
143
144
|
);
|
|
144
145
|
}
|
|
145
146
|
return {themes, defaultSlug: value.defaultThemeSlug};
|
|
@@ -159,7 +160,7 @@ export function parseThemeModuleRecord(source, label = 'theme module') {
|
|
|
159
160
|
.filter(line => /^\s*\*\s*@astryx-theme-record\s+/u.test(line));
|
|
160
161
|
if (recordLines.length !== 1) {
|
|
161
162
|
throw new ThemeStateError(
|
|
162
|
-
`${label} must carry exactly one static ${THEME_RECORD_MARKER} header. Regenerate it with
|
|
163
|
+
`${label} must carry exactly one static ${THEME_RECORD_MARKER} header. Regenerate it with \`${formatCliCommand('theme add <slug>')}\`.`,
|
|
163
164
|
);
|
|
164
165
|
}
|
|
165
166
|
const payload = recordLines[0].replace(
|
|
@@ -318,7 +319,7 @@ export function readThemeState(cwd = process.cwd()) {
|
|
|
318
319
|
export function renderThemeModule(themes, defaultSlug, typescript) {
|
|
319
320
|
if (!themes.some(theme => theme.slug === defaultSlug)) {
|
|
320
321
|
throw new ThemeStateError(
|
|
321
|
-
`Default theme "${defaultSlug}" is not added. Run
|
|
322
|
+
`Default theme "${defaultSlug}" is not added. Run \`${formatCliCommand(`theme add ${defaultSlug}`)}\` first.`,
|
|
322
323
|
);
|
|
323
324
|
}
|
|
324
325
|
/** @type {string[]} */
|
|
@@ -83,5 +83,12 @@ export function auditAuthoringSelfDocs({ root, sources, budget, }?: {
|
|
|
83
83
|
}>;
|
|
84
84
|
/** The directory the self-docs live under. */
|
|
85
85
|
export const AUTHORING_ROOT: string;
|
|
86
|
+
/** The guide that holds every authoring schema, one section each. */
|
|
87
|
+
export const AUTHORING_REFERENCE_NAME: "field-reference";
|
|
88
|
+
/**
|
|
89
|
+
* Its route. `astryx docs authoring <name>` reads one of its sections through
|
|
90
|
+
* the authoring namespace (spec:AST-046 FR6).
|
|
91
|
+
*/
|
|
92
|
+
export const AUTHORING_REFERENCE_ROUTE: "authoring/field-reference";
|
|
86
93
|
/** Every authoring self-doc, relative to {@link AUTHORING_ROOT}, in reading order. */
|
|
87
94
|
export const AUTHORING_SELF_DOCS: string[];
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* `authoring` reference topic with one section per self-doc, and an audit
|
|
10
10
|
* naming any self-doc the topic cannot reach, any that fails to load, and any
|
|
11
11
|
* section over the docs output budget.
|
|
12
|
-
* @position Read by assets/docs/
|
|
12
|
+
* @position Read by assets/docs/tree/field-reference.doc.mjs (the guide) and by Doctor
|
|
13
13
|
* (the audit). Lives in foundation because authoring/ holds only contracts.
|
|
14
14
|
* A new `*.doc.mjs` under authoring/ must be added to the list, or Doctor and
|
|
15
15
|
* the self-doc tests fail.
|
|
@@ -27,6 +27,15 @@ import {
|
|
|
27
27
|
/** The directory the self-docs live under. */
|
|
28
28
|
export const AUTHORING_ROOT = path.join(CLI_ROOT, 'authoring');
|
|
29
29
|
|
|
30
|
+
/** The guide that holds every authoring schema, one section each. */
|
|
31
|
+
export const AUTHORING_REFERENCE_NAME = 'field-reference';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Its route. `astryx docs authoring <name>` reads one of its sections through
|
|
35
|
+
* the authoring namespace (spec:AST-046 FR6).
|
|
36
|
+
*/
|
|
37
|
+
export const AUTHORING_REFERENCE_ROUTE = `authoring/${AUTHORING_REFERENCE_NAME}`;
|
|
38
|
+
|
|
30
39
|
/** Every authoring self-doc, relative to {@link AUTHORING_ROOT}, in reading order. */
|
|
31
40
|
export const AUTHORING_SELF_DOCS = [
|
|
32
41
|
'integration/integration.doc.mjs',
|
|
@@ -46,6 +55,7 @@ export const AUTHORING_SELF_DOCS = [
|
|
|
46
55
|
'doctypes/reference/reference.doc.mjs',
|
|
47
56
|
'doctypes/schema/schema.doc.mjs',
|
|
48
57
|
'doctypes/template/template.doc.mjs',
|
|
58
|
+
'doctypes/template/integration-template.doc.mjs',
|
|
49
59
|
'doctypes/theme/theme.doc.mjs',
|
|
50
60
|
];
|
|
51
61
|
|
|
@@ -188,11 +198,14 @@ export function selfDocSection(doc) {
|
|
|
188
198
|
*/
|
|
189
199
|
export function buildAuthoringReferenceDoc(docs) {
|
|
190
200
|
return /** @type {any} */ ({
|
|
191
|
-
|
|
192
|
-
|
|
201
|
+
type: 'generic',
|
|
202
|
+
name: AUTHORING_REFERENCE_NAME,
|
|
203
|
+
placement: {parent: 'namespace:authoring', slot: 'reference', order: 10},
|
|
204
|
+
title: 'Field reference',
|
|
193
205
|
category: 'guide',
|
|
206
|
+
keywords: ['authoring reference', 'field reference', 'every field'],
|
|
194
207
|
description:
|
|
195
|
-
'Every file an integration author writes, field by field: the integration manifest, astryx.config, codemods, identity, and each doc type.',
|
|
208
|
+
'Every file an integration author writes, field by field: the integration manifest, astryx.config, codemods, identity, and each doc type. The guides that use them are the rest of {@link namespace:authoring}.',
|
|
196
209
|
sections: docs.map(selfDocSection),
|
|
197
210
|
});
|
|
198
211
|
}
|
|
@@ -38,20 +38,32 @@ describe('authoring self-docs', () => {
|
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
it('builds a valid
|
|
42
|
-
const topic = await buildAuthoringTopic();
|
|
41
|
+
it('builds a valid guide with one section per self-doc, placed under authoring', async () => {
|
|
42
|
+
const {placement, ...topic} = await buildAuthoringTopic();
|
|
43
43
|
expect(problemsInTopic(topic)).toEqual([]);
|
|
44
44
|
expect(topic.sections).toHaveLength(AUTHORING_SELF_DOCS.length);
|
|
45
|
+
expect(placement).toEqual({
|
|
46
|
+
parent: 'namespace:authoring',
|
|
47
|
+
slot: 'reference',
|
|
48
|
+
order: 10,
|
|
49
|
+
});
|
|
45
50
|
});
|
|
46
51
|
|
|
47
52
|
it(
|
|
48
53
|
'is readable progressively through the docs API',
|
|
49
54
|
async () => {
|
|
50
|
-
const index = await docs('authoring', undefined, {
|
|
55
|
+
const index = await docs('authoring/field-reference', undefined, {
|
|
56
|
+
index: true,
|
|
57
|
+
});
|
|
51
58
|
expect(index.type).toBe('docs.index');
|
|
52
59
|
expect(index.data.sections.map(s => s.id)).toContain('integration');
|
|
60
|
+
// The namespace answers a section read from the field reference, as
|
|
61
|
+
// `astryx docs authoring <name>` always has.
|
|
53
62
|
const section = await docs('authoring', 'integration');
|
|
54
63
|
expect(section.data.title).toBe('Astryx Integration');
|
|
64
|
+
expect(
|
|
65
|
+
(await docs('authoring/field-reference', 'integration')).data,
|
|
66
|
+
).toEqual(section.data);
|
|
55
67
|
expect(section.data.content.some(block => block.type === 'table')).toBe(
|
|
56
68
|
true,
|
|
57
69
|
);
|
|
@@ -30,7 +30,7 @@ export function tracePublicAuthoringTypes(root?: string): {
|
|
|
30
30
|
* document something public: a public type declared beside it, and, when its
|
|
31
31
|
* title is the name of a type declared beside it, that type.
|
|
32
32
|
* @param {{root?: string, sources?: string[], topicKeys?: Set<string> | null}} [options]
|
|
33
|
-
* `topicKeys` are the keys `astryx docs authoring --index` lists; null skips
|
|
33
|
+
* `topicKeys` are the keys `astryx docs authoring/field-reference --index` lists; null skips
|
|
34
34
|
* that comparison.
|
|
35
35
|
* @returns {Promise<{
|
|
36
36
|
* types: number,
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @input authoring/index.d.ts and the type modules it re-exports, parsed with
|
|
8
8
|
* jscodeshift and never imported or type-checked (consumer installs have no
|
|
9
9
|
* TypeScript); the self-docs on disk and in AUTHORING_SELF_DOCS; and the
|
|
10
|
-
* section keys `astryx docs authoring --index` lists.
|
|
10
|
+
* section keys `astryx docs authoring/field-reference --index` lists.
|
|
11
11
|
* @output {@link tracePublicAuthoringTypes}: each exported type and the module
|
|
12
12
|
* that declares it. {@link auditAuthoringSurface}: each module whose exported
|
|
13
13
|
* types a reader cannot reach and why, each export that cannot be traced,
|
|
@@ -424,7 +424,7 @@ function declaredIn(t, folder, name) {
|
|
|
424
424
|
* document something public: a public type declared beside it, and, when its
|
|
425
425
|
* title is the name of a type declared beside it, that type.
|
|
426
426
|
* @param {{root?: string, sources?: string[], topicKeys?: Set<string> | null}} [options]
|
|
427
|
-
* `topicKeys` are the keys `astryx docs authoring --index` lists; null skips
|
|
427
|
+
* `topicKeys` are the keys `astryx docs authoring/field-reference --index` lists; null skips
|
|
428
428
|
* that comparison.
|
|
429
429
|
* @returns {Promise<{
|
|
430
430
|
* types: number,
|
|
@@ -86,7 +86,7 @@ describe('the public authoring surface of this repo', () => {
|
|
|
86
86
|
it(
|
|
87
87
|
'audits clean: every exported type has a readable doc and every self-doc documents one',
|
|
88
88
|
async () => {
|
|
89
|
-
const index = await docs('authoring', undefined, {index: true});
|
|
89
|
+
const index = await docs('authoring/field-reference', undefined, {index: true});
|
|
90
90
|
const topicKeys = new Set(
|
|
91
91
|
index.data.sections.map((/** @type {any} */ s) => s.id),
|
|
92
92
|
);
|
|
@@ -102,7 +102,8 @@ export const CLI_SELF_DOC_DIRS: string[];
|
|
|
102
102
|
/**
|
|
103
103
|
* Every namespace a CLI doc may declare, and what reads it. The docs tree
|
|
104
104
|
* adopts `cli/commands` (under `cli/commands`) and `cli/api` (under
|
|
105
|
-
* `cli/api/<kind>s`); `astryx docs authoring`
|
|
105
|
+
* `cli/api/<kind>s`); the field reference (`astryx docs authoring/field-reference`)
|
|
106
|
+
* reads `authoring` from its list.
|
|
106
107
|
* @type {Record<string, {reader: 'tree' | 'authoring'}>}
|
|
107
108
|
*/
|
|
108
109
|
export const CLI_DOC_NAMESPACES: Record<string, {
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
oversizedDocSections,
|
|
26
26
|
} from './docs-output-budget.mjs';
|
|
27
27
|
import {routeSegment} from './docs-section-key.mjs';
|
|
28
|
+
import {formatCliCommand} from '../env/package-manager.mjs';
|
|
28
29
|
|
|
29
30
|
/** The directories, relative to the CLI root, that hold the CLI's own docs. */
|
|
30
31
|
export const CLI_SELF_DOC_DIRS = [
|
|
@@ -40,7 +41,8 @@ const NAMESPACED_KINDS = new Set(['command', 'function', 'schema', 'enum']);
|
|
|
40
41
|
/**
|
|
41
42
|
* Every namespace a CLI doc may declare, and what reads it. The docs tree
|
|
42
43
|
* adopts `cli/commands` (under `cli/commands`) and `cli/api` (under
|
|
43
|
-
* `cli/api/<kind>s`); `astryx docs authoring`
|
|
44
|
+
* `cli/api/<kind>s`); the field reference (`astryx docs authoring/field-reference`)
|
|
45
|
+
* reads `authoring` from its list.
|
|
44
46
|
* @type {Record<string, {reader: 'tree' | 'authoring'}>}
|
|
45
47
|
*/
|
|
46
48
|
export const CLI_DOC_NAMESPACES = {
|
|
@@ -187,6 +189,19 @@ function sentence(text, more) {
|
|
|
187
189
|
return more && text !== '' && !/[.!?:]$/.test(text) ? `${text}.` : text;
|
|
188
190
|
}
|
|
189
191
|
|
|
192
|
+
/**
|
|
193
|
+
* The line a command doc prints for what it does outside a project (spec
|
|
194
|
+
* AST-081 FR4). A group that only holds subcommands declares nothing and
|
|
195
|
+
* prints nothing.
|
|
196
|
+
* @type {Record<string, string>}
|
|
197
|
+
*/
|
|
198
|
+
const OUTSIDE_PROJECT_TEXT = {
|
|
199
|
+
same: "Outside a project (`same`): it answers as it would in a new project on this release, reading this release's Core, as it does in a project with nothing installed: the one installed beside the CLI, else one in the per-user cache, which a global install downloads in the background after a command run online (in CI, the first command that needs it downloads it).",
|
|
200
|
+
refuse:
|
|
201
|
+
'Outside a project (`refuse`): it writes nothing and fails, naming the app project or integration package it needs.',
|
|
202
|
+
own: 'Outside a project (`own`): it does what the description above says it does outside a project.',
|
|
203
|
+
};
|
|
204
|
+
|
|
190
205
|
/** @param {any[]} notes */
|
|
191
206
|
function noteBlocks(notes) {
|
|
192
207
|
return (notes ?? []).filter(note => TOPIC_BLOCKS.has(note?.type));
|
|
@@ -251,6 +266,8 @@ function commandSection(cmd, index) {
|
|
|
251
266
|
rows: exitCodes.map((/** @type {any} */ e) => [String(e.code), e.when]),
|
|
252
267
|
});
|
|
253
268
|
}
|
|
269
|
+
const outside = OUTSIDE_PROJECT_TEXT[cmd.outsideProject];
|
|
270
|
+
if (outside) content.push({type: 'prose', text: outside});
|
|
254
271
|
// Links name docs by identity; the route in each command is derived when
|
|
255
272
|
// the doc is read (spec:AST-047 FR9).
|
|
256
273
|
const subcommands = (cmd.subcommands ?? []).filter(
|
|
@@ -318,7 +335,8 @@ function functionSection(fn, index) {
|
|
|
318
335
|
// A Default column only when some parameter declares a default, so a
|
|
319
336
|
// function with none keeps a three-column table.
|
|
320
337
|
const defaults = params.some(
|
|
321
|
-
(/** @type {any} */ p) =>
|
|
338
|
+
(/** @type {any} */ p) =>
|
|
339
|
+
typeof p.default === 'string' && p.default !== '',
|
|
322
340
|
);
|
|
323
341
|
content.push({
|
|
324
342
|
type: 'table',
|
|
@@ -475,13 +493,13 @@ export async function auditCliSelfDocs({
|
|
|
475
493
|
else {
|
|
476
494
|
misfiled.push({
|
|
477
495
|
source,
|
|
478
|
-
message: `${source} has namespace "authoring", but
|
|
496
|
+
message: `${source} has namespace "authoring", but \`${formatCliCommand('docs authoring/field-reference')}\` does not list it`,
|
|
479
497
|
});
|
|
480
498
|
}
|
|
481
499
|
} else if (inAuthoring) {
|
|
482
500
|
misfiled.push({
|
|
483
501
|
source,
|
|
484
|
-
message: `${source} is read in
|
|
502
|
+
message: `${source} is read in \`${formatCliCommand('docs authoring/field-reference')}\`, but its namespace is "${namespace}"`,
|
|
485
503
|
});
|
|
486
504
|
} else {
|
|
487
505
|
treeDocs.push(doc);
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
discoverCliSelfDocSources,
|
|
26
26
|
} from './cli-self-docs.mjs';
|
|
27
27
|
import {routeSegment} from './docs-section-key.mjs';
|
|
28
|
+
import {formatCliCommand} from '../env/package-manager.mjs';
|
|
28
29
|
|
|
29
30
|
const SLOW = 60_000;
|
|
30
31
|
|
|
@@ -145,8 +146,8 @@ describe('auditCliSelfDocs', () => {
|
|
|
145
146
|
});
|
|
146
147
|
const result = await audit(root, ['y/y.doc.mjs', 'z/z.doc.mjs']);
|
|
147
148
|
expect(result.misfiled.map(entry => entry.message)).toEqual([
|
|
148
|
-
|
|
149
|
-
|
|
149
|
+
`authoring/x/x.doc.mjs has namespace "authoring", but \`${formatCliCommand('docs authoring/field-reference')}\` does not list it`,
|
|
150
|
+
`authoring/y/y.doc.mjs is read in \`${formatCliCommand('docs authoring/field-reference')}\`, but its namespace is "cli/api"`,
|
|
150
151
|
]);
|
|
151
152
|
expect(result.authoring).toBe(1);
|
|
152
153
|
expect(result.tree).toBe(0);
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
// @generated by scripts/sync-api-types.mjs from the JSDoc in foundation/**/*.mjs.
|
|
2
2
|
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Whether a component doc is hidden (`hidden: true`), read as discovery
|
|
6
|
+
* reads it: discovery skips a hidden doc.
|
|
7
|
+
* @param {string} docPath
|
|
8
|
+
* @returns {boolean}
|
|
9
|
+
*/
|
|
10
|
+
export function isHiddenComponentDoc(docPath: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* The entry a family doc gives `name` in its `components`, when the doc is not
|
|
13
|
+
* the component's own (Stack's doc for VStack); null otherwise.
|
|
14
|
+
* @param {any} docs - a loaded component doc
|
|
15
|
+
* @param {string} name - bare component name
|
|
16
|
+
* @returns {any}
|
|
17
|
+
*/
|
|
18
|
+
export function familyMember(docs: any, name: string): any;
|
|
4
19
|
/**
|
|
5
20
|
* Auto-discover components by scanning for Astryx*.tsx files in core/src/.
|
|
21
|
+
* A component is listed when a doc documents it: a doc in its folder, or, for a
|
|
22
|
+
* component folder with no doc of its own, the doc `findComponentReadme` finds
|
|
23
|
+
* elsewhere (Heading's doc in the Text folder; HStack and VStack as members of
|
|
24
|
+
* Stack's doc).
|
|
6
25
|
*
|
|
7
26
|
* Returns an ordered Record where:
|
|
8
27
|
* - Grouped components use the group name as key: `'Buttons': ['Button', 'IconButton']`
|
|
@@ -103,19 +122,129 @@ export function discoverExternalComponentsGrouped(docsDir: string): Record<strin
|
|
|
103
122
|
* @returns {string | null}
|
|
104
123
|
*/
|
|
105
124
|
export function findExternalComponentDoc(docsDir: string, name: string): string | null;
|
|
125
|
+
/** @param {string} docPath */
|
|
126
|
+
export function docStem(docPath: string): string;
|
|
127
|
+
/**
|
|
128
|
+
* The local module a doc's import names: the doc's own `import`, else the
|
|
129
|
+
* subpath its directory publishes, read through the package's `exports` (its
|
|
130
|
+
* `main` when it has none). Undefined when the package directory is unknown;
|
|
131
|
+
* null when the import names another package or resolves to no file.
|
|
132
|
+
*
|
|
133
|
+
* @param {{name?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
134
|
+
* @param {string} docPath
|
|
135
|
+
* @param {Record<string, any> | null} doc
|
|
136
|
+
* @returns {string | null | undefined}
|
|
137
|
+
*/
|
|
138
|
+
export function importedModule(integration: {
|
|
139
|
+
name?: string;
|
|
140
|
+
__packageDir?: string;
|
|
141
|
+
__packageExports?: Record<string, unknown> | null;
|
|
142
|
+
}, docPath: string, doc: Record<string, any> | null): string | null | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* The file an import of the package's own name resolves to, through its
|
|
145
|
+
* package.json `exports` (or `main` when it has none): `@acme/kit` or
|
|
146
|
+
* `@acme/kit/widget`. Null when the specifier names another package, or the
|
|
147
|
+
* package publishes nothing at it.
|
|
148
|
+
* @param {{name?: string, __packageDir?: string, __packageExports?: Record<string, unknown> | null}} integration
|
|
149
|
+
* @param {string} specifier
|
|
150
|
+
* @returns {string | null}
|
|
151
|
+
*/
|
|
152
|
+
export function ownPackageModule(integration: {
|
|
153
|
+
name?: string;
|
|
154
|
+
__packageDir?: string;
|
|
155
|
+
__packageExports?: Record<string, unknown> | null;
|
|
156
|
+
}, specifier: string): string | null;
|
|
157
|
+
/**
|
|
158
|
+
* The `.tsx` file in `folder`, or below it, that declares `name`, taking files
|
|
159
|
+
* in path order: the source of a member whose import never reaches a `.tsx`
|
|
160
|
+
* file, as when the import names built output.
|
|
161
|
+
*
|
|
162
|
+
* @param {string} folder
|
|
163
|
+
* @param {string} name
|
|
164
|
+
* @returns {string | null}
|
|
165
|
+
*/
|
|
166
|
+
export function folderSourceFor(folder: string, name: string): string | null;
|
|
167
|
+
/**
|
|
168
|
+
* Each family doc under an integration's components root that names an
|
|
169
|
+
* import, with the file the import resolves to: null when it resolves to none,
|
|
170
|
+
* such as build output that does not exist yet.
|
|
171
|
+
*
|
|
172
|
+
* @param {{name: string, components?: string, issuesUrl?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
173
|
+
* @returns {Array<{docPath: string, module: string | null}>}
|
|
174
|
+
*/
|
|
175
|
+
export function familyImports(integration: {
|
|
176
|
+
name: string;
|
|
177
|
+
components?: string;
|
|
178
|
+
issuesUrl?: string;
|
|
179
|
+
__packageDir?: string;
|
|
180
|
+
__packageExports?: Record<string, unknown> | null;
|
|
181
|
+
}): Array<{
|
|
182
|
+
docPath: string;
|
|
183
|
+
module: string | null;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* Whether a discovered integration record is a member its family doc lists,
|
|
187
|
+
* decided from the files, not from whether the doc loads.
|
|
188
|
+
*
|
|
189
|
+
* @param {{name: string, docPath: string|null}} record
|
|
190
|
+
* @returns {boolean}
|
|
191
|
+
*/
|
|
192
|
+
export function isIntegrationMember(record: {
|
|
193
|
+
name: string;
|
|
194
|
+
docPath: string | null;
|
|
195
|
+
}): boolean;
|
|
196
|
+
/**
|
|
197
|
+
* The entry a family doc gives a member that discovery lists under its own
|
|
198
|
+
* name, or null when the record is the doc's own component or the loaded doc
|
|
199
|
+
* has no entry for it.
|
|
200
|
+
*
|
|
201
|
+
* @param {any} doc the doc loaded from `record.docPath`
|
|
202
|
+
* @param {{name: string, docPath: string|null}} record
|
|
203
|
+
* @returns {any}
|
|
204
|
+
*/
|
|
205
|
+
export function integrationMemberEntry(doc: any, record: {
|
|
206
|
+
name: string;
|
|
207
|
+
docPath: string | null;
|
|
208
|
+
}): any;
|
|
209
|
+
/**
|
|
210
|
+
* Visit every component doc under an integration's components root, hidden
|
|
211
|
+
* ones included, in discovery order, with its stem.
|
|
212
|
+
* @param {string | undefined} componentsDir
|
|
213
|
+
* @param {(docPath: string, stem: string) => void} visit
|
|
214
|
+
*/
|
|
215
|
+
export function forEachIntegrationDoc(componentsDir: string | undefined, visit: (docPath: string, stem: string) => void): void;
|
|
216
|
+
/**
|
|
217
|
+
* Given an integration component doc path, return the sibling component source
|
|
218
|
+
* (`{Name}.tsx`) if one exists, else null.
|
|
219
|
+
*
|
|
220
|
+
* @param {string} docPath absolute path to a `{Name}.doc.{ts,mjs,js}` file
|
|
221
|
+
* @returns {string|null}
|
|
222
|
+
*/
|
|
223
|
+
export function integrationSourceForDoc(docPath: string): string | null;
|
|
106
224
|
/**
|
|
107
225
|
* Discover ownership records for the components contributed by a single loaded
|
|
108
226
|
* integration. Scans the integration's resolved `components` dir for same-stem
|
|
109
|
-
* doc files and records each with owner package + issuesUrl + sourcePath.
|
|
227
|
+
* doc files and records each with owner package + issuesUrl + sourcePath. A doc
|
|
228
|
+
* that names a differently named export of its file is recorded under that
|
|
229
|
+
* export, and each family member it lists, under the member's name, unless the
|
|
230
|
+
* name is taken: every doc's file name (a hidden doc's too), a Core name a doc
|
|
231
|
+
* in the package replaces, and a name an earlier doc records.
|
|
110
232
|
*
|
|
111
|
-
* @param {{name: string, components?: string, issuesUrl?: string}} integration
|
|
233
|
+
* @param {{name: string, components?: string, issuesUrl?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
112
234
|
* a single entry from `loadedIntegrations` (lib/integrations.mjs)
|
|
235
|
+
* @param {{documentedNames?: boolean}} [options] `documentedNames: false`
|
|
236
|
+
* records each doc under its file name alone, without reading the names
|
|
237
|
+
* docs document: for a caller that needs only what each doc says
|
|
113
238
|
* @returns {Array<{name: string, package: string, docPath: string, sourcePath: string|null, issuesUrl: string|undefined, group: string|null}>}
|
|
114
239
|
*/
|
|
115
240
|
export function discoverIntegrationComponents(integration: {
|
|
116
241
|
name: string;
|
|
117
242
|
components?: string;
|
|
118
243
|
issuesUrl?: string;
|
|
244
|
+
__packageDir?: string;
|
|
245
|
+
__packageExports?: Record<string, unknown> | null;
|
|
246
|
+
}, { documentedNames }?: {
|
|
247
|
+
documentedNames?: boolean;
|
|
119
248
|
}): Array<{
|
|
120
249
|
name: string;
|
|
121
250
|
package: string;
|
|
@@ -129,11 +258,16 @@ export function discoverIntegrationComponents(integration: {
|
|
|
129
258
|
* Invalid metadata or a missing same-stem source removes only that component;
|
|
130
259
|
* callers can report the returned errors while retaining valid siblings. A
|
|
131
260
|
* component whose doc sets `replaces` carries the value as written; the
|
|
132
|
-
* component replacement resolver decides what it means.
|
|
261
|
+
* component replacement resolver decides what it means. A family member is
|
|
262
|
+
* read through its family's doc: it never carries the family's `replaces`, and
|
|
263
|
+
* a family doc that fails to load is reported once. A doc that fails to load
|
|
264
|
+
* is reported under its file name: what it says cannot be trusted.
|
|
133
265
|
*
|
|
134
266
|
* @param {{name: string, components?: string, issuesUrl?: string}} integration
|
|
267
|
+
* @param {{documentedNames?: boolean}} [options] as for
|
|
268
|
+
* {@link discoverIntegrationComponents}
|
|
135
269
|
* @returns {Promise<{
|
|
136
|
-
* components: Array<{name: string, package: string, docPath: string, sourcePath: string, issuesUrl: string|undefined, group: string|null, replaces?: unknown}>,
|
|
270
|
+
* components: Array<{name: string, package: string, docPath: string, sourcePath: string|null, issuesUrl: string|undefined, group: string|null, replaces?: unknown}>,
|
|
137
271
|
* discovered: Array<{name: string, package: string, docPath: string, sourcePath: string|null, issuesUrl: string|undefined, group: string|null}>,
|
|
138
272
|
* errors: Array<{name: string, message: string}>,
|
|
139
273
|
* }>}
|
|
@@ -142,12 +276,14 @@ export function discoverValidIntegrationComponents(integration: {
|
|
|
142
276
|
name: string;
|
|
143
277
|
components?: string;
|
|
144
278
|
issuesUrl?: string;
|
|
279
|
+
}, options?: {
|
|
280
|
+
documentedNames?: boolean;
|
|
145
281
|
}): Promise<{
|
|
146
282
|
components: Array<{
|
|
147
283
|
name: string;
|
|
148
284
|
package: string;
|
|
149
285
|
docPath: string;
|
|
150
|
-
sourcePath: string;
|
|
286
|
+
sourcePath: string | null;
|
|
151
287
|
issuesUrl: string | undefined;
|
|
152
288
|
group: string | null;
|
|
153
289
|
replaces?: unknown;
|
|
@@ -165,30 +301,103 @@ export function discoverValidIntegrationComponents(integration: {
|
|
|
165
301
|
message: string;
|
|
166
302
|
}>;
|
|
167
303
|
}>;
|
|
304
|
+
/**
|
|
305
|
+
* How an owner holds a component name, which the owner rule
|
|
306
|
+
* ({@link unscopedComponentOwners}) reads: `core` when Core documents it;
|
|
307
|
+
* `file` when an integration doc named after its file is recorded under it;
|
|
308
|
+
* `doc` when only a doc records it: an export name, a member, or the file name
|
|
309
|
+
* of a doc recorded under another export.
|
|
310
|
+
* @typedef {'core' | 'file' | 'doc'} NameHold
|
|
311
|
+
*/
|
|
312
|
+
/**
|
|
313
|
+
* How a discovered integration record holds its name.
|
|
314
|
+
* @param {{name: string, docPath: string|null}} record
|
|
315
|
+
* @returns {'file' | 'doc'}
|
|
316
|
+
*/
|
|
317
|
+
export function integrationRecordHold(record: {
|
|
318
|
+
name: string;
|
|
319
|
+
docPath: string | null;
|
|
320
|
+
}): "file" | "doc";
|
|
321
|
+
/**
|
|
322
|
+
* The integration component a name finds, as discovery records it, and its
|
|
323
|
+
* hold: the same-stem doc first, then a doc that records the name as an export
|
|
324
|
+
* or a member.
|
|
325
|
+
*
|
|
326
|
+
* @param {{name?: string, components?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
327
|
+
* @param {string} name
|
|
328
|
+
* @returns {{docPath: string, sourcePath: string|null, hold: 'file' | 'doc'} | null}
|
|
329
|
+
*/
|
|
330
|
+
export function findIntegrationComponent(integration: {
|
|
331
|
+
name?: string;
|
|
332
|
+
components?: string;
|
|
333
|
+
__packageDir?: string;
|
|
334
|
+
__packageExports?: Record<string, unknown> | null;
|
|
335
|
+
}, name: string): {
|
|
336
|
+
docPath: string;
|
|
337
|
+
sourcePath: string | null;
|
|
338
|
+
hold: "file" | "doc";
|
|
339
|
+
} | null;
|
|
340
|
+
/**
|
|
341
|
+
* The name discovery records a component doc under: the export its `name`
|
|
342
|
+
* documents when the doc is recorded under it, else the doc's file name.
|
|
343
|
+
*
|
|
344
|
+
* @param {{name?: string, components?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
345
|
+
* @param {string} docPath
|
|
346
|
+
* @returns {string}
|
|
347
|
+
*/
|
|
348
|
+
export function recordedDocName(integration: {
|
|
349
|
+
name?: string;
|
|
350
|
+
components?: string;
|
|
351
|
+
__packageDir?: string;
|
|
352
|
+
__packageExports?: Record<string, unknown> | null;
|
|
353
|
+
}, docPath: string): string;
|
|
168
354
|
/**
|
|
169
355
|
* Find an integration component's doc file by name within a loaded
|
|
170
356
|
* integration's resolved `components` dir. Honors the same-stem convention
|
|
171
|
-
* (`{Name}.doc.{ts,mjs,js}`), preferring `.ts` → `.mjs` → `.js
|
|
357
|
+
* (`{Name}.doc.{ts,mjs,js}`), preferring `.ts` → `.mjs` → `.js`, and finds a
|
|
358
|
+
* doc that records the component under another name: a differently named
|
|
359
|
+
* export of its file, or a member its family doc lists.
|
|
172
360
|
*
|
|
173
|
-
* @param {{components?: string}} integration
|
|
361
|
+
* @param {{name?: string, components?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
174
362
|
* @param {string} name bare component name (no `XDS`/`Astryx` prefix)
|
|
175
363
|
* @returns {string|null}
|
|
176
364
|
*/
|
|
177
365
|
export function findIntegrationComponentDoc(integration: {
|
|
366
|
+
name?: string;
|
|
178
367
|
components?: string;
|
|
368
|
+
__packageDir?: string;
|
|
369
|
+
__packageExports?: Record<string, unknown> | null;
|
|
179
370
|
}, name: string): string | null;
|
|
180
371
|
/**
|
|
181
|
-
* Find an integration component's swizzleable source file
|
|
182
|
-
*
|
|
372
|
+
* Find an integration component's swizzleable source file by name within a
|
|
373
|
+
* loaded integration's resolved `components` dir: the same-stem `{Name}.tsx`
|
|
374
|
+
* of its doc, or, for a family member, the file that declares it. Returns null
|
|
183
375
|
* when the integration ships docs without source.
|
|
184
376
|
*
|
|
185
|
-
* @param {{components?: string}} integration
|
|
377
|
+
* @param {{name?: string, components?: string, __packageDir?: string, __packageExports?: Record<string, unknown>|null}} integration
|
|
186
378
|
* @param {string} name bare component name
|
|
187
379
|
* @returns {string|null}
|
|
188
380
|
*/
|
|
189
381
|
export function findIntegrationComponentSource(integration: {
|
|
382
|
+
name?: string;
|
|
190
383
|
components?: string;
|
|
384
|
+
__packageDir?: string;
|
|
385
|
+
__packageExports?: Record<string, unknown> | null;
|
|
191
386
|
}, name: string): string | null;
|
|
387
|
+
/**
|
|
388
|
+
* The owner rule: an owner that holds a name only because a doc records it
|
|
389
|
+
* (`hold: 'doc'`) yields to Core and to every file-named owner; `--package`
|
|
390
|
+
* still reaches it. Surfaces resolve a replacement first, then this rule, then
|
|
391
|
+
* which docs load.
|
|
392
|
+
*
|
|
393
|
+
* @template {{hold?: string}} T
|
|
394
|
+
* @param {T[]} owners each with its {@link NameHold}; an owner without one
|
|
395
|
+
* counts as Core's or file-named
|
|
396
|
+
* @returns {T[]}
|
|
397
|
+
*/
|
|
398
|
+
export function unscopedComponentOwners<T extends {
|
|
399
|
+
hold?: string;
|
|
400
|
+
}>(owners: T[]): T[];
|
|
192
401
|
/**
|
|
193
402
|
* Build a flat list of ownership records for ALL discoverable components —
|
|
194
403
|
* core (built-in) plus every loaded integration. This is the authoritative
|
|
@@ -217,3 +426,11 @@ export function discoverOwnedComponents(coreDir: string, loadedIntegrations?: Ar
|
|
|
217
426
|
}>;
|
|
218
427
|
/** The owner package name for built-in (core) components. */
|
|
219
428
|
export const CORE_PACKAGE: import("../../authoring/index.js").ProviderId;
|
|
429
|
+
/**
|
|
430
|
+
* How an owner holds a component name, which the owner rule
|
|
431
|
+
* ({@link unscopedComponentOwners}) reads: `core` when Core documents it;
|
|
432
|
+
* `file` when an integration doc named after its file is recorded under it;
|
|
433
|
+
* `doc` when only a doc records it: an export name, a member, or the file name
|
|
434
|
+
* of a doc recorded under another export.
|
|
435
|
+
*/
|
|
436
|
+
export type NameHold = "core" | "file" | "doc";
|