@astryxdesign/cli 0.6.3-canary.db4e378 → 0.6.3-canary.db52d98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -15
- package/api/blog/blog.doc.mjs +1 -0
- package/api/build/_adapter.d.mts +50 -0
- package/api/build/_adapter.mjs +60 -0
- package/api/build/build.doc.mjs +14 -7
- package/api/build/build.test.mjs +184 -6
- package/api/build/build.type.d.mts +57 -2
- package/api/build/build.type.mjs +30 -7
- package/api/build/help/help.d.mts +4 -0
- package/api/build/help/help.mjs +24 -11
- package/api/build/kit/kit.d.mts +4 -1
- package/api/build/kit/kit.mjs +165 -49
- package/api/build/kit/rank.d.mts +44 -0
- package/api/build/kit/rank.mjs +432 -0
- package/api/build/kit/rank.test.mjs +196 -0
- package/api/component/_adapter.d.mts +6 -12
- package/api/component/_adapter.mjs +20 -10
- package/api/component/component.doc.mjs +1 -0
- package/api/component/component.mjs +60 -12
- package/api/component/list/list.mjs +3 -2
- package/api/discover/discover.doc.mjs +1 -0
- package/api/docs/_adapter.d.mts +252 -34
- package/api/docs/_adapter.mjs +923 -132
- package/api/docs/detail/detail.mjs +11 -3
- package/api/docs/detail/section/section.mjs +24 -13
- package/api/docs/detail/section/section.test.mjs +15 -6
- package/api/docs/docs.d.mts +5 -3
- package/api/docs/docs.doc.mjs +39 -17
- package/api/docs/docs.mjs +44 -8
- package/api/docs/docs.test.mjs +158 -4
- package/api/docs/docs.type.d.mts +181 -2
- package/api/docs/docs.type.mjs +117 -3
- package/api/docs/index/index.mjs +11 -3
- package/api/docs/index/index.test.mjs +1 -1
- package/api/docs/integration-tree.test.mjs +555 -0
- package/api/docs/integrationDocs.test.mjs +14 -14
- package/api/docs/list/list.mjs +28 -12
- package/api/docs/node/node.d.mts +43 -0
- package/api/docs/node/node.mjs +192 -0
- package/api/docs/reference-blocks.test.mjs +406 -0
- package/api/doctor/doctor.d.mts +54 -4
- package/api/doctor/doctor.doc.mjs +1 -0
- package/api/doctor/doctor.mjs +331 -16
- package/api/doctor/doctor.test.mjs +420 -7
- package/api/gap-report/gap-report.doc.mjs +1 -0
- package/api/hook/_adapter.mjs +19 -5
- package/api/hook/hook.doc.mjs +1 -0
- package/api/hook/list/list.d.mts +1 -1
- package/api/hook/list/list.mjs +69 -17
- package/api/index.d.mts +1 -1
- package/api/index.mjs +1 -0
- package/api/init/init.doc.mjs +2 -1
- package/api/integration/add-contribution.d.mts +2 -1
- package/api/integration/add-contribution.mjs +114 -12
- package/api/integration/add-contribution.test.mjs +174 -3
- package/api/integration/add-theme.mjs +34 -64
- package/api/integration/add-theme.test.mjs +105 -21
- package/api/integration/authoring-checks.mjs +138 -28
- package/api/integration/authoring-checks.test.mjs +179 -7
- package/api/integration/authoring-checks.type.mjs +6 -1
- package/api/integration/integration-authoring.type.d.mts +2 -0
- package/api/integration/integration-authoring.type.mjs +2 -0
- package/api/integration/integration-block-exports.test.mjs +10 -6
- package/api/integration/integrationAdd.doc.mjs +7 -0
- package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
- package/api/integration/integrationAddCodemod.doc.mjs +1 -0
- package/api/integration/integrationAddComponent.doc.mjs +1 -0
- package/api/integration/integrationAddDoc.doc.mjs +8 -1
- package/api/integration/integrationAddTemplate.doc.mjs +1 -0
- package/api/integration/integrationAddTheme.doc.mjs +6 -5
- package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
- package/api/integration/integrationDocConflicts.doc.mjs +2 -1
- package/api/integration/integrationPackCheck.doc.mjs +2 -1
- package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
- package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
- package/api/integration/pack-check.mjs +34 -0
- package/api/integration/pack-check.test.mjs +138 -47
- package/api/integration/pack-check.type.d.mts +26 -2
- package/api/integration/pack-check.type.mjs +14 -1
- package/api/integration/summarizeIssues.doc.mjs +1 -0
- package/api/integration/template-conflict-compatibility.test.mjs +73 -0
- package/api/integration/validate-integration-fixes.test.mjs +1389 -0
- package/api/integration/validate-integration.mjs +50 -102
- package/api/integration/validate-integration.test.mjs +88 -26
- package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
- package/api/integration/validateIntegration.doc.mjs +2 -1
- package/api/json/assertResponse.doc.mjs +1 -0
- package/api/json/index.ts +2 -0
- package/api/json/isError.doc.mjs +1 -0
- package/api/json/parseResponse.doc.mjs +1 -0
- package/api/layout/_adapter.mjs +20 -5
- package/api/layout/layoutCheck.doc.mjs +1 -0
- package/api/layout/layoutExpand.doc.mjs +1 -0
- package/api/layout/layoutGrammar.doc.mjs +1 -0
- package/api/search/search.d.mts +59 -1
- package/api/search/search.doc.mjs +5 -3
- package/api/search/search.mjs +458 -77
- package/api/search/search.test.mjs +91 -2
- package/api/search/search.type.d.mts +13 -1
- package/api/search/search.type.mjs +4 -1
- package/api/swizzle/swizzle.doc.mjs +1 -0
- package/api/template/list/list.mjs +1 -0
- package/api/template/table-floating-bulk-actions.test.mjs +66 -0
- package/api/template/template-integration.test.mjs +1072 -3
- package/api/template/template-suffix.test.mjs +41 -21
- package/api/template/template.doc.mjs +28 -7
- package/api/template/template.mjs +45 -8
- package/api/template/template.type.d.mts +6 -8
- package/api/template/template.type.mjs +3 -2
- package/api/theme/_adapter.d.mts +2 -3
- package/api/theme/_adapter.mjs +4 -5
- package/api/theme/add/add.binary.test.mjs +10 -17
- package/api/theme/add/add.test.mjs +14 -1
- package/api/theme/generateTonalPalette.doc.mjs +1 -0
- package/api/theme/integration-themes.test.mjs +39 -28
- package/api/theme/list/list.test.mjs +19 -20
- package/api/theme/listThemes.doc.mjs +6 -5
- package/api/theme/template/template.test.mjs +5 -0
- package/api/theme/themeAdd.doc.mjs +4 -3
- package/api/theme/themeBuild.doc.mjs +1 -0
- package/api/theme/themeList.doc.mjs +6 -3
- package/api/theme/themeListAvailable.doc.mjs +5 -3
- package/api/theme/themePaletteGenerate.doc.mjs +1 -0
- package/api/theme/themeTargets.doc.mjs +1 -0
- package/api/theme/themeTemplate.doc.mjs +2 -1
- package/api/upgrade/_adapter.d.mts +32 -5
- package/api/upgrade/_adapter.mjs +97 -69
- package/api/upgrade/provider-agreement.test.mjs +152 -0
- package/api/upgrade/run/run.mjs +356 -59
- package/api/upgrade/upgrade.doc.mjs +6 -1
- package/api/upgrade/upgrade.type.d.mts +34 -0
- package/api/upgrade/upgrade.type.mjs +15 -0
- package/assets/codemods/__tests__/runner.test.mjs +330 -8
- package/assets/codemods/integration-discovery.mjs +8 -2
- package/assets/codemods/integration-discovery.test.mjs +15 -0
- package/assets/codemods/integration-runner.mjs +56 -4
- package/assets/codemods/integration-runner.protection.test.mjs +153 -0
- package/assets/codemods/run-codemod.mjs +177 -34
- package/assets/codemods/runner.mjs +350 -102
- package/assets/codemods/transforms/next/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
- package/assets/codemods/transforms/next/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
- package/assets/codemods/transforms/next/index.mjs +19 -1
- package/assets/codemods/transforms/next/migrate-native-picker-to-presentation.mjs +148 -0
- package/assets/codemods/transforms/next/migrate-theme-catalog-to-descriptors.mjs +141 -0
- package/assets/docs/getting-started.doc.mjs +2 -2
- package/assets/docs/layout.doc.dense.mjs +2 -2
- package/assets/docs/layout.doc.mjs +1 -1
- package/assets/docs/principles.doc.mjs +6 -6
- package/assets/docs/styling-libraries.doc.mjs +3 -3
- package/assets/docs/styling.doc.mjs +4 -4
- package/assets/docs/theme.doc.mjs +5 -5
- package/assets/docs/tokens.doc.mjs +1 -1
- package/assets/docs/tree/api.doc.mjs +30 -0
- package/assets/docs/tree/cli.doc.mjs +23 -0
- package/assets/docs/tree/commands.doc.mjs +25 -0
- package/assets/docs/{cli-integrations.doc.mjs → tree/integrations.doc.mjs} +66 -38
- package/assets/docs/tree/integrations.test.mjs +62 -0
- package/assets/docs/tree/writing-docs.doc.mjs +286 -0
- package/assets/docs/working-with-ai.doc.mjs +3 -3
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs +1 -1
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.tsx +1 -3
- package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.doc.mjs +14 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.tsx +71 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.doc.mjs +19 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.tsx +139 -0
- package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
- package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
- package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
- package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
- package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
- package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
- package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
- package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
- package/authoring/codemod/codemod.doc.mjs +1 -1
- package/authoring/codemod/type.ts +12 -0
- package/authoring/config/config.doc.mjs +1 -1
- package/authoring/debug/debug.doc.d.mts +11 -0
- package/authoring/debug/debug.doc.mjs +182 -0
- package/authoring/debug/parse.d.mts +3 -3
- package/authoring/doctypes/_schema.d.mts +119 -117
- package/authoring/doctypes/_schema.mjs +54 -3
- package/authoring/doctypes/base/graph-fields.doc.mjs +8 -6
- package/authoring/doctypes/base/type.ts +6 -5
- package/authoring/doctypes/command/command.doc.mjs +1 -1
- package/authoring/doctypes/command/type.ts +2 -2
- package/authoring/doctypes/component/type.ts +2 -2
- package/authoring/doctypes/doctypes-new.test.mjs +48 -6
- package/authoring/doctypes/enum/enum.doc.mjs +1 -1
- package/authoring/doctypes/enum/type.ts +1 -1
- package/authoring/doctypes/function/function.doc.mjs +3 -2
- package/authoring/doctypes/function/type.ts +3 -2
- package/authoring/doctypes/hook/type.ts +2 -2
- package/authoring/doctypes/load-contract.test.mjs +28 -2
- package/authoring/doctypes/namespace/namespace.doc.mjs +6 -10
- package/authoring/doctypes/namespace/parse.test.mjs +23 -25
- package/authoring/doctypes/namespace/type.ts +5 -2
- package/authoring/doctypes/parse.d.mts +4 -2
- package/authoring/doctypes/parse.mjs +10 -5
- package/authoring/doctypes/reference/reference.doc.mjs +35 -6
- package/authoring/doctypes/reference/type.ts +30 -13
- package/authoring/doctypes/schema/schema.doc.mjs +1 -1
- package/authoring/doctypes/schema/type.ts +1 -2
- package/authoring/doctypes/template/parse.d.mts +2 -0
- package/authoring/doctypes/template/parse.mjs +4 -0
- package/authoring/doctypes/template/parse.test.mjs +18 -0
- package/authoring/doctypes/template/template.doc.mjs +9 -3
- package/authoring/doctypes/template/type.ts +8 -0
- package/authoring/doctypes/theme/parse.d.mts +35 -0
- package/authoring/doctypes/theme/parse.mjs +76 -0
- package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
- package/authoring/doctypes/theme/theme.doc.mjs +79 -0
- package/authoring/doctypes/theme/type.ts +42 -0
- package/authoring/doctypes/types.ts +2 -1
- package/authoring/gap-report/gap-report.doc.d.mts +12 -0
- package/authoring/gap-report/gap-report.doc.mjs +183 -0
- package/authoring/identity/identity.doc.mjs +2 -2
- package/authoring/index.d.mts +1 -0
- package/authoring/index.d.ts +7 -4
- package/authoring/index.mjs +2 -1
- package/authoring/integration/integration.doc.mjs +2 -2
- package/authoring/integration/type.ts +4 -10
- package/clients/cli/__tests__/cliManifest.test.ts +27 -29
- package/clients/cli/commands/blog.doc.mjs +1 -1
- package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
- package/clients/cli/commands/build-theme.mjs +11 -45
- package/clients/cli/commands/build.doc.mjs +12 -7
- package/clients/cli/commands/build.mjs +105 -67
- package/clients/cli/commands/build.text-fields.test.mjs +41 -0
- package/clients/cli/commands/component/index.mjs +1 -1
- package/clients/cli/commands/component-ownership.test.mjs +3 -3
- package/clients/cli/commands/component.doc.mjs +1 -1
- package/clients/cli/commands/discover.broken-integration.test.mjs +7 -8
- package/clients/cli/commands/discover.doc.mjs +1 -1
- package/clients/cli/commands/discover.mjs +1 -1
- package/clients/cli/commands/docs.doc.mjs +21 -9
- package/clients/cli/commands/docs.mjs +184 -70
- package/clients/cli/commands/docs.test.mjs +120 -16
- package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +3 -3
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.test.mjs +90 -8
- package/clients/cli/commands/doctor.doc.mjs +1 -1
- package/clients/cli/commands/doctor.mjs +53 -16
- package/clients/cli/commands/gap-report.doc.mjs +1 -1
- package/clients/cli/commands/hook.doc.mjs +1 -1
- package/clients/cli/commands/init.doc.mjs +1 -1
- package/clients/cli/commands/integration-add.controls.test.mjs +1 -1
- package/clients/cli/commands/integration-add.doc.mjs +11 -1
- package/clients/cli/commands/integration-pack.doc.mjs +1 -1
- package/clients/cli/commands/integration-real-world.test.mjs +3 -9
- package/clients/cli/commands/integration.doc.mjs +1 -1
- package/clients/cli/commands/integration.mjs +1 -0
- package/clients/cli/commands/layout-check.doc.mjs +1 -1
- package/clients/cli/commands/layout-expand.doc.mjs +1 -1
- package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
- package/clients/cli/commands/layout.doc.mjs +1 -1
- package/clients/cli/commands/manifest.doc.mjs +1 -1
- package/clients/cli/commands/search.doc.mjs +1 -1
- package/clients/cli/commands/search.mjs +11 -2
- package/clients/cli/commands/setup-nudge.test.mjs +6 -0
- package/clients/cli/commands/swizzle.doc.mjs +1 -1
- package/clients/cli/commands/template.doc.mjs +24 -7
- package/clients/cli/commands/template.mjs +4 -91
- package/clients/cli/commands/text-json-parity.test.mjs +719 -0
- package/clients/cli/commands/theme-add.doc.mjs +2 -2
- package/clients/cli/commands/theme-build.doc.mjs +1 -1
- package/clients/cli/commands/theme-list.doc.mjs +2 -2
- package/clients/cli/commands/theme-palette-generate.doc.mjs +3 -3
- package/clients/cli/commands/theme-palette.doc.mjs +1 -1
- package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
- package/clients/cli/commands/theme-targets.doc.mjs +1 -1
- package/clients/cli/commands/theme-template.doc.mjs +1 -1
- package/clients/cli/commands/theme.doc.mjs +1 -1
- package/clients/cli/commands/upgrade.doc.mjs +3 -2
- package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
- package/clients/cli/commands/upgrade.mjs +29 -7
- package/clients/cli/formatters/index.mjs +2 -0
- package/clients/cli/formatters/index.test.mjs +6 -0
- package/clients/cli/index.mjs +8 -0
- package/clients/cli/lib/hook-format.mjs +14 -5
- package/clients/cli/lib/manifest.mjs +9 -2
- package/foundation/agent-docs/agent-docs.d.mts +3 -2
- package/foundation/agent-docs/agent-docs.mjs +13 -9
- package/foundation/agent-docs/agent-docs.test.mjs +19 -1
- package/foundation/config/project-themes.test.mjs +11 -19
- package/foundation/config/project.d.mts +20 -11
- package/foundation/config/project.mjs +123 -80
- package/foundation/config/project.test.mjs +144 -21
- package/foundation/discovery/authoring-self-docs.d.mts +18 -0
- package/foundation/discovery/authoring-self-docs.mjs +37 -15
- package/foundation/discovery/authoring-self-docs.test.mjs +25 -9
- package/foundation/discovery/authoring-surface.d.mts +74 -0
- package/foundation/discovery/authoring-surface.mjs +525 -0
- package/foundation/discovery/authoring-surface.test.mjs +392 -0
- package/foundation/discovery/cli-self-docs.d.mts +119 -0
- package/foundation/discovery/cli-self-docs.mjs +490 -0
- package/foundation/discovery/cli-self-docs.test.mjs +375 -0
- package/foundation/discovery/component-discovery.d.mts +38 -0
- package/foundation/discovery/component-discovery.mjs +48 -0
- package/foundation/discovery/component-loader.d.mts +35 -38
- package/foundation/discovery/component-loader.mjs +53 -222
- package/foundation/discovery/docs-discovery.d.mts +112 -11
- package/foundation/discovery/docs-discovery.mjs +231 -36
- package/foundation/discovery/docs-discovery.test.mjs +111 -32
- package/foundation/discovery/docs-output-budget.d.mts +2 -2
- package/foundation/discovery/docs-output-budget.mjs +1 -1
- package/foundation/discovery/docs-section-key.d.mts +28 -10
- package/foundation/discovery/docs-section-key.mjs +134 -33
- package/foundation/discovery/docs-section-key.test.mjs +41 -19
- package/foundation/discovery/template-adapter.d.mts +99 -6
- package/foundation/discovery/template-adapter.mjs +480 -57
- package/foundation/discovery/template-adapter.test.mjs +57 -0
- package/foundation/discovery/template-conflict-release.d.mts +13 -0
- package/foundation/discovery/template-conflict-release.mjs +40 -0
- package/foundation/discovery/template-conflict-release.test.mjs +40 -0
- package/foundation/discovery/theme-discovery.d.mts +67 -7
- package/foundation/discovery/theme-discovery.mjs +916 -186
- package/foundation/discovery/theme-discovery.test.mjs +613 -219
- package/foundation/doc-compiler/bundle.d.mts +47 -0
- package/foundation/doc-compiler/bundle.mjs +278 -0
- package/foundation/doc-compiler/bundle.test.mjs +266 -0
- package/foundation/doc-compiler/compile.d.mts +220 -39
- package/foundation/doc-compiler/compile.mjs +311 -15
- package/foundation/doc-compiler/diagnostics.d.mts +126 -0
- package/foundation/doc-compiler/diagnostics.mjs +305 -0
- package/foundation/doc-compiler/doc-compiler.test.mjs +28 -1
- package/foundation/doc-compiler/doc-loads.test.mjs +1642 -0
- package/foundation/doc-compiler/import.d.mts +24 -0
- package/foundation/doc-compiler/import.mjs +59 -0
- package/foundation/doc-compiler/inputs.d.mts +102 -0
- package/foundation/doc-compiler/inputs.mjs +291 -0
- package/foundation/doc-compiler/inputs.test.mjs +299 -0
- package/foundation/doc-compiler/ir.d.mts +13 -0
- package/foundation/doc-compiler/ir.mjs +196 -12
- package/foundation/doc-compiler/lenses.d.mts +8 -5
- package/foundation/doc-compiler/lenses.mjs +50 -4
- package/foundation/doc-compiler/links.d.mts +162 -0
- package/foundation/doc-compiler/links.mjs +294 -0
- package/foundation/doc-compiler/links.test.mjs +192 -0
- package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
- package/foundation/doc-compiler/overlays.d.mts +37 -0
- package/foundation/doc-compiler/overlays.mjs +206 -0
- package/foundation/doc-compiler/parse-readable.d.mts +9 -0
- package/foundation/doc-compiler/parse-readable.mjs +29 -0
- package/foundation/doc-compiler/read.d.mts +127 -0
- package/foundation/doc-compiler/read.mjs +325 -0
- package/foundation/doc-compiler/read.test.mjs +313 -0
- package/foundation/doc-compiler/source.d.mts +33 -0
- package/foundation/doc-compiler/source.mjs +128 -0
- package/foundation/doc-compiler/tree.d.mts +288 -0
- package/foundation/doc-compiler/tree.mjs +876 -0
- package/foundation/doc-compiler/tree.test.mjs +598 -0
- package/foundation/fs/file-protection.d.mts +33 -0
- package/foundation/fs/file-protection.mjs +825 -0
- package/foundation/fs/file-protection.test.mjs +250 -0
- package/foundation/integrations/autolink.d.mts +58 -1
- package/foundation/integrations/autolink.mjs +143 -57
- package/foundation/integrations/autolink.test.mjs +1 -1
- package/foundation/integrations/cli-requirement.d.mts +45 -0
- package/foundation/integrations/cli-requirement.mjs +154 -0
- package/foundation/integrations/cli-requirement.test.mjs +84 -0
- package/foundation/integrations/contribution-fixes.d.mts +145 -0
- package/foundation/integrations/contribution-fixes.mjs +1284 -0
- package/foundation/integrations/contribution-inventory.d.mts +3 -2
- package/foundation/integrations/contribution-inventory.mjs +27 -24
- package/foundation/integrations/contribution-inventory.test.mjs +86 -27
- package/foundation/integrations/integration-warnings.d.mts +9 -2
- package/foundation/integrations/integration-warnings.mjs +51 -26
- package/foundation/integrations/integration-warnings.test.mjs +74 -1
- package/foundation/integrations/integrations.d.mts +3 -0
- package/foundation/integrations/integrations.mjs +11 -97
- package/foundation/integrations/provider-ledger.test.mjs +275 -0
- package/foundation/integrations/provider-resolution.d.mts +152 -0
- package/foundation/integrations/provider-resolution.mjs +576 -0
- package/foundation/integrations/provider-resolution.test.mjs +369 -0
- package/foundation/integrations/theme-descriptor.d.mts +8 -0
- package/foundation/integrations/theme-descriptor.mjs +44 -0
- package/foundation/integrations/validate-contributions.mjs +121 -29
- package/foundation/response/error-codes.d.mts +3 -1
- package/foundation/response/error-codes.d.ts +2 -0
- package/foundation/response/error-codes.doc.mjs +12 -2
- package/foundation/response/error-codes.mjs +7 -1
- package/foundation/response/error-codes.test.mjs +55 -11
- package/foundation/response/response-types.doc.d.mts +5 -1
- package/foundation/response/response-types.doc.mjs +20 -11
- package/foundation/response/response.doc.mjs +1 -1
- package/foundation/text/string-utils.d.mts +8 -0
- package/foundation/text/string-utils.mjs +40 -10
- package/foundation/xle/expand.mjs +1 -1
- package/foundation/xle/xle.test.mjs +13 -0
- package/package.json +10 -9
- package/assets/templates/themes/manifest.json +0 -95
|
@@ -6,6 +6,7 @@ import * as path from 'node:path';
|
|
|
6
6
|
import {Project, DEFAULT_ISSUES_URL, findConfigPath} from './project.mjs';
|
|
7
7
|
import {InMemoryConfigCache} from './config-cache.mjs';
|
|
8
8
|
import * as componentDiscovery from '../discovery/component-discovery.mjs';
|
|
9
|
+
import {discoverCoreTemplates} from '../discovery/template-adapter.mjs';
|
|
9
10
|
|
|
10
11
|
let tmpDir;
|
|
11
12
|
let originalCwd;
|
|
@@ -21,6 +22,9 @@ function scaffold({
|
|
|
21
22
|
issuesUrl,
|
|
22
23
|
withComponents = true,
|
|
23
24
|
withTemplates = true,
|
|
25
|
+
templateId = 'hero',
|
|
26
|
+
templateType = 'block',
|
|
27
|
+
templateReplaces = null,
|
|
24
28
|
withCodemods = true,
|
|
25
29
|
brokenComponent = false,
|
|
26
30
|
brokenCodemod = false,
|
|
@@ -65,7 +69,7 @@ function scaffold({
|
|
|
65
69
|
fs.mkdirSync(compDir, {recursive: true});
|
|
66
70
|
fs.writeFileSync(
|
|
67
71
|
path.join(compDir, 'Widget.doc.mjs'),
|
|
68
|
-
`export const docs = { name: 'Widget', usage: {description: 'A widget'} };\n`,
|
|
72
|
+
`export const docs = { name: 'Widget', usage: {description: 'A widget'}, props: [] };\n`,
|
|
69
73
|
);
|
|
70
74
|
if (!brokenComponent) {
|
|
71
75
|
fs.writeFileSync(
|
|
@@ -80,12 +84,12 @@ function scaffold({
|
|
|
80
84
|
const tDir = path.join(pkgDir, 'templates');
|
|
81
85
|
fs.mkdirSync(tDir, {recursive: true});
|
|
82
86
|
fs.writeFileSync(
|
|
83
|
-
path.join(tDir,
|
|
84
|
-
`export default { type: '
|
|
87
|
+
path.join(tDir, `${templateId}.doc.mjs`),
|
|
88
|
+
`export default { type: '${templateType}', name: 'Fixture template', description: 'A fixture template'${templateReplaces == null ? '' : `, replaces: ${JSON.stringify(templateReplaces)}`} };\n`,
|
|
85
89
|
);
|
|
86
90
|
fs.writeFileSync(
|
|
87
|
-
path.join(tDir,
|
|
88
|
-
`export default function
|
|
91
|
+
path.join(tDir, `${templateId}.tsx`),
|
|
92
|
+
`export default function FixtureTemplate() { return null; }\n`,
|
|
89
93
|
);
|
|
90
94
|
}
|
|
91
95
|
|
|
@@ -163,7 +167,7 @@ function scaffoldLocalPackage({name = '@acme/local'} = {}) {
|
|
|
163
167
|
|
|
164
168
|
fs.mkdirSync(path.join(tmpDir, 'templates'));
|
|
165
169
|
fs.writeFileSync(
|
|
166
|
-
path.join(tmpDir, 'templates', 'local-page.
|
|
170
|
+
path.join(tmpDir, 'templates', 'local-page.doc.mjs'),
|
|
167
171
|
`export default {type: 'page', name: 'Local page', description: 'Local page.'};\n`,
|
|
168
172
|
);
|
|
169
173
|
fs.writeFileSync(
|
|
@@ -181,21 +185,8 @@ function scaffoldLocalPackage({name = '@acme/local'} = {}) {
|
|
|
181
185
|
|
|
182
186
|
fs.mkdirSync(path.join(tmpDir, 'themes', 'ocean'), {recursive: true});
|
|
183
187
|
fs.writeFileSync(
|
|
184
|
-
path.join(tmpDir, 'themes', '
|
|
185
|
-
|
|
186
|
-
version: 1,
|
|
187
|
-
themes: [
|
|
188
|
-
{
|
|
189
|
-
slug: 'ocean',
|
|
190
|
-
displayName: 'Ocean',
|
|
191
|
-
description: 'Ocean theme.',
|
|
192
|
-
maintained: true,
|
|
193
|
-
entry: 'oceanTheme.ts',
|
|
194
|
-
exportName: 'oceanTheme',
|
|
195
|
-
files: ['oceanTheme.ts'],
|
|
196
|
-
},
|
|
197
|
-
],
|
|
198
|
-
}),
|
|
188
|
+
path.join(tmpDir, 'themes', 'ocean', 'oceanTheme.doc.mjs'),
|
|
189
|
+
`/** @type {import('@astryxdesign/cli/authoring').ThemeDoc} */\nexport default {type: 'theme', name: 'ocean', displayName: 'Ocean', description: 'Ocean theme.', maintained: true};\n`,
|
|
199
190
|
);
|
|
200
191
|
fs.writeFileSync(
|
|
201
192
|
path.join(tmpDir, 'themes', 'ocean', 'oceanTheme.ts'),
|
|
@@ -337,6 +328,91 @@ describe('Project discovery', () => {
|
|
|
337
328
|
expect(hero.type).toBe('block');
|
|
338
329
|
});
|
|
339
330
|
|
|
331
|
+
it('templates() projects a valid integration replacement instead of its Core target', async () => {
|
|
332
|
+
const corePage = (await discoverCoreTemplates()).find(
|
|
333
|
+
template => template.type === 'page',
|
|
334
|
+
);
|
|
335
|
+
expect(corePage).toBeDefined();
|
|
336
|
+
scaffold({
|
|
337
|
+
templateId: 'acme-app-shell',
|
|
338
|
+
templateType: 'page',
|
|
339
|
+
templateReplaces: corePage.dirName,
|
|
340
|
+
});
|
|
341
|
+
const project = await Project.load(tmpDir);
|
|
342
|
+
|
|
343
|
+
const templates = await project.templates();
|
|
344
|
+
|
|
345
|
+
expect(
|
|
346
|
+
templates.find(template => template.dirName === 'acme-app-shell'),
|
|
347
|
+
).toMatchObject({
|
|
348
|
+
package: '@acme/widgets',
|
|
349
|
+
replaces: corePage.dirName,
|
|
350
|
+
});
|
|
351
|
+
expect(
|
|
352
|
+
templates.find(
|
|
353
|
+
template =>
|
|
354
|
+
template.dirName === corePage.dirName &&
|
|
355
|
+
template.package !== '@acme/widgets',
|
|
356
|
+
),
|
|
357
|
+
).toBeUndefined();
|
|
358
|
+
expect(await project.issues()).toEqual([]);
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it('reports replacement issues regardless of discovery call order without hiding other contributions', async () => {
|
|
362
|
+
scaffold({
|
|
363
|
+
templateReplaces: 'missing-core-template',
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
const componentsFirst = await Project.load(tmpDir);
|
|
367
|
+
expect(
|
|
368
|
+
(await componentsFirst.components()).some(
|
|
369
|
+
component => component.package === '@acme/widgets',
|
|
370
|
+
),
|
|
371
|
+
).toBe(true);
|
|
372
|
+
expect(await componentsFirst.issues()).toEqual(
|
|
373
|
+
expect.arrayContaining([
|
|
374
|
+
expect.objectContaining({
|
|
375
|
+
code: 'missing_template_replacement_target',
|
|
376
|
+
package: '@acme/widgets',
|
|
377
|
+
}),
|
|
378
|
+
]),
|
|
379
|
+
);
|
|
380
|
+
|
|
381
|
+
const issuesFirst = await Project.load(tmpDir, {fresh: true});
|
|
382
|
+
expect(await issuesFirst.issues()).toEqual(
|
|
383
|
+
expect.arrayContaining([
|
|
384
|
+
expect.objectContaining({
|
|
385
|
+
code: 'missing_template_replacement_target',
|
|
386
|
+
package: '@acme/widgets',
|
|
387
|
+
}),
|
|
388
|
+
]),
|
|
389
|
+
);
|
|
390
|
+
expect(
|
|
391
|
+
(await issuesFirst.components()).some(
|
|
392
|
+
component => component.package === '@acme/widgets',
|
|
393
|
+
),
|
|
394
|
+
).toBe(true);
|
|
395
|
+
const ownTemplate = (await issuesFirst.templates()).find(
|
|
396
|
+
template =>
|
|
397
|
+
template.package === '@acme/widgets' && template.dirName === 'hero',
|
|
398
|
+
);
|
|
399
|
+
expect(ownTemplate).toBeDefined();
|
|
400
|
+
expect(ownTemplate).not.toHaveProperty('replaces');
|
|
401
|
+
|
|
402
|
+
const sharedCache = new InMemoryConfigCache();
|
|
403
|
+
const warm = await Project.load(tmpDir, {cache: sharedCache});
|
|
404
|
+
await warm.templates();
|
|
405
|
+
const cached = await Project.load(tmpDir, {cache: sharedCache});
|
|
406
|
+
expect(await cached.issues()).toEqual(
|
|
407
|
+
expect.arrayContaining([
|
|
408
|
+
expect.objectContaining({
|
|
409
|
+
code: 'missing_template_replacement_target',
|
|
410
|
+
package: '@acme/widgets',
|
|
411
|
+
}),
|
|
412
|
+
]),
|
|
413
|
+
);
|
|
414
|
+
});
|
|
415
|
+
|
|
340
416
|
it('codemods() returns core registry groups + integration groups', async () => {
|
|
341
417
|
scaffold();
|
|
342
418
|
const project = await Project.load(tmpDir);
|
|
@@ -481,6 +557,53 @@ describe('Project issues (skip + warn)', () => {
|
|
|
481
557
|
expect(issues.some(i => i.package === '@acme/widgets')).toBe(true);
|
|
482
558
|
});
|
|
483
559
|
|
|
560
|
+
it('keeps valid contribution kinds and siblings when others are broken', async () => {
|
|
561
|
+
const pkgDir = scaffold({brokenComponent: true});
|
|
562
|
+
fs.writeFileSync(
|
|
563
|
+
path.join(pkgDir, 'templates', 'broken.template.mjs'),
|
|
564
|
+
`export default {type: 'block', name: 'Broken', description: 'Missing source'};\n`,
|
|
565
|
+
);
|
|
566
|
+
fs.writeFileSync(
|
|
567
|
+
path.join(pkgDir, 'components', 'ValidWidget.doc.mjs'),
|
|
568
|
+
`export default {type: 'component', name: 'ValidWidget', props: []};\n`,
|
|
569
|
+
);
|
|
570
|
+
fs.writeFileSync(
|
|
571
|
+
path.join(pkgDir, 'components', 'ValidWidget.tsx'),
|
|
572
|
+
`export function ValidWidget() { return null; }\n`,
|
|
573
|
+
);
|
|
574
|
+
const project = await Project.load(tmpDir);
|
|
575
|
+
|
|
576
|
+
const templates = await project.templates();
|
|
577
|
+
const components = await project.components();
|
|
578
|
+
const issues = await project.issues();
|
|
579
|
+
|
|
580
|
+
expect(
|
|
581
|
+
templates.find(
|
|
582
|
+
template =>
|
|
583
|
+
template.dirName === 'hero' && template.package === '@acme/widgets',
|
|
584
|
+
),
|
|
585
|
+
).toBeDefined();
|
|
586
|
+
expect(
|
|
587
|
+
components.find(
|
|
588
|
+
component =>
|
|
589
|
+
component.name === 'ValidWidget' &&
|
|
590
|
+
component.package === '@acme/widgets',
|
|
591
|
+
),
|
|
592
|
+
).toBeDefined();
|
|
593
|
+
expect(
|
|
594
|
+
components.find(
|
|
595
|
+
component =>
|
|
596
|
+
component.name === 'Widget' && component.package === '@acme/widgets',
|
|
597
|
+
),
|
|
598
|
+
).toBeUndefined();
|
|
599
|
+
expect(issues).toEqual(
|
|
600
|
+
expect.arrayContaining([
|
|
601
|
+
expect.objectContaining({code: 'invalid_component'}),
|
|
602
|
+
expect.objectContaining({code: 'invalid_template'}),
|
|
603
|
+
]),
|
|
604
|
+
);
|
|
605
|
+
});
|
|
606
|
+
|
|
484
607
|
it('does not throw when an integration codemod is broken', async () => {
|
|
485
608
|
scaffold({brokenCodemod: true});
|
|
486
609
|
const project = await Project.load(tmpDir);
|
|
@@ -24,6 +24,24 @@ export function loadAuthoringSelfDocs(sources?: string[], root?: string): Promis
|
|
|
24
24
|
error: string;
|
|
25
25
|
}[];
|
|
26
26
|
}>;
|
|
27
|
+
/**
|
|
28
|
+
* A schema's fields as the table its section prints, each nested field on the
|
|
29
|
+
* row after its parent; null when there are none. A reference block that
|
|
30
|
+
* names some of a schema's fields includes this table of just those.
|
|
31
|
+
* @param {any[]} fields
|
|
32
|
+
* @returns {{type: 'table', headers: string[], rows: string[][]} | null}
|
|
33
|
+
*/
|
|
34
|
+
export function schemaFieldTable(fields: any[]): {
|
|
35
|
+
type: "table";
|
|
36
|
+
headers: string[];
|
|
37
|
+
rows: string[][];
|
|
38
|
+
} | null;
|
|
39
|
+
/**
|
|
40
|
+
* One self-doc as a topic section, keyed by the doc's own name.
|
|
41
|
+
* @param {any} doc
|
|
42
|
+
* @returns {import('../../authoring/doctypes/reference/type').ReferenceSection}
|
|
43
|
+
*/
|
|
44
|
+
export function selfDocSection(doc: any): import("../../authoring/doctypes/reference/type").ReferenceSection;
|
|
27
45
|
/**
|
|
28
46
|
* The `authoring` topic: one section per self-doc, in the order given.
|
|
29
47
|
* @param {any[]} docs
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
import * as fs from 'node:fs';
|
|
19
19
|
import * as path from 'node:path';
|
|
20
|
-
import {pathToFileURL} from 'node:url';
|
|
21
20
|
import {CLI_ROOT} from '../fs/paths.mjs';
|
|
21
|
+
import {readDocView} from '../doc-compiler/read.mjs';
|
|
22
22
|
import {
|
|
23
23
|
DOC_OUTPUT_BUDGET_BYTES,
|
|
24
24
|
oversizedDocSections,
|
|
@@ -31,6 +31,8 @@ export const AUTHORING_ROOT = path.join(CLI_ROOT, 'authoring');
|
|
|
31
31
|
export const AUTHORING_SELF_DOCS = [
|
|
32
32
|
'integration/integration.doc.mjs',
|
|
33
33
|
'config/config.doc.mjs',
|
|
34
|
+
'debug/debug.doc.mjs',
|
|
35
|
+
'gap-report/gap-report.doc.mjs',
|
|
34
36
|
'codemod/codemod.doc.mjs',
|
|
35
37
|
'identity/identity.doc.mjs',
|
|
36
38
|
'doctypes/base/graph-fields.doc.mjs',
|
|
@@ -43,6 +45,7 @@ export const AUTHORING_SELF_DOCS = [
|
|
|
43
45
|
'doctypes/reference/reference.doc.mjs',
|
|
44
46
|
'doctypes/schema/schema.doc.mjs',
|
|
45
47
|
'doctypes/template/template.doc.mjs',
|
|
48
|
+
'doctypes/theme/theme.doc.mjs',
|
|
46
49
|
];
|
|
47
50
|
|
|
48
51
|
/** Blocks a self-doc note may carry that a topic section can render. */
|
|
@@ -59,7 +62,8 @@ export function discoverAuthoringSelfDocSources(root = AUTHORING_ROOT) {
|
|
|
59
62
|
/** @param {string} dir */
|
|
60
63
|
const walk = dir => {
|
|
61
64
|
for (const entry of fs.readdirSync(dir, {withFileTypes: true})) {
|
|
62
|
-
if (entry.name === 'node_modules' || entry.name.startsWith('__'))
|
|
65
|
+
if (entry.name === 'node_modules' || entry.name.startsWith('__'))
|
|
66
|
+
continue;
|
|
63
67
|
const full = path.join(dir, entry.name);
|
|
64
68
|
if (entry.isDirectory()) walk(full);
|
|
65
69
|
else if (entry.name.endsWith('.doc.mjs')) {
|
|
@@ -86,9 +90,14 @@ export async function loadAuthoringSelfDocs(
|
|
|
86
90
|
const failed = [];
|
|
87
91
|
for (const source of sources) {
|
|
88
92
|
try {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
const doc = await readDocView(path.join(root, source), {
|
|
94
|
+
root: 'self-docs',
|
|
95
|
+
loader: 'native',
|
|
96
|
+
});
|
|
97
|
+
if (
|
|
98
|
+
typeof doc?.name !== 'string' ||
|
|
99
|
+
typeof doc?.description !== 'string'
|
|
100
|
+
) {
|
|
92
101
|
throw new Error('exports no doc with a name and a description');
|
|
93
102
|
}
|
|
94
103
|
loaded.push({source, doc});
|
|
@@ -124,27 +133,40 @@ function fieldRows(fields) {
|
|
|
124
133
|
]);
|
|
125
134
|
}
|
|
126
135
|
|
|
136
|
+
/**
|
|
137
|
+
* A schema's fields as the table its section prints, each nested field on the
|
|
138
|
+
* row after its parent; null when there are none. A reference block that
|
|
139
|
+
* names some of a schema's fields includes this table of just those.
|
|
140
|
+
* @param {any[]} fields
|
|
141
|
+
* @returns {{type: 'table', headers: string[], rows: string[][]} | null}
|
|
142
|
+
*/
|
|
143
|
+
export function schemaFieldTable(fields) {
|
|
144
|
+
const rows = fieldRows(fields);
|
|
145
|
+
return rows.length > 0
|
|
146
|
+
? {
|
|
147
|
+
type: 'table',
|
|
148
|
+
headers: ['Field', 'Type', 'Required', 'Description'],
|
|
149
|
+
rows,
|
|
150
|
+
}
|
|
151
|
+
: null;
|
|
152
|
+
}
|
|
153
|
+
|
|
127
154
|
/**
|
|
128
155
|
* One self-doc as a topic section, keyed by the doc's own name.
|
|
129
156
|
* @param {any} doc
|
|
130
157
|
* @returns {import('../../authoring/doctypes/reference/type').ReferenceSection}
|
|
131
158
|
*/
|
|
132
|
-
function selfDocSection(doc) {
|
|
159
|
+
export function selfDocSection(doc) {
|
|
133
160
|
/** @type {any[]} */
|
|
134
161
|
const content = [{type: 'prose', text: doc.description}];
|
|
135
162
|
if (doc.appliesTo) {
|
|
136
163
|
content.push({type: 'prose', text: `Applies to: ${doc.appliesTo}`});
|
|
137
164
|
}
|
|
138
|
-
const
|
|
139
|
-
if (
|
|
140
|
-
content.push({
|
|
141
|
-
type: 'table',
|
|
142
|
-
headers: ['Field', 'Type', 'Required', 'Description'],
|
|
143
|
-
rows,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
165
|
+
const table = schemaFieldTable(doc.fields ?? []);
|
|
166
|
+
if (table) content.push(table);
|
|
146
167
|
for (const example of doc.examples ?? []) {
|
|
147
|
-
if (typeof example?.code !== 'string' || example.code.trim() === '')
|
|
168
|
+
if (typeof example?.code !== 'string' || example.code.trim() === '')
|
|
169
|
+
continue;
|
|
148
170
|
content.push({
|
|
149
171
|
type: 'code',
|
|
150
172
|
lang: example.lang ?? 'js',
|
|
@@ -60,32 +60,48 @@ describe('authoring self-docs', () => {
|
|
|
60
60
|
);
|
|
61
61
|
});
|
|
62
62
|
|
|
63
|
-
describe('what the authoring docs say about the
|
|
64
|
-
it('marks exactly the fields
|
|
63
|
+
describe('what the authoring docs say about the docs tree', () => {
|
|
64
|
+
it('marks exactly the fields the docs tree does not read yet', () => {
|
|
65
65
|
const notReadYet = graphFieldsDoc.fields
|
|
66
66
|
.filter(field => /Not read yet/.test(field.description))
|
|
67
67
|
.map(field => field.name);
|
|
68
|
-
|
|
68
|
+
// The tree reads `placement` for every guide (spec:AST-046); the other
|
|
69
|
+
// graph fields are still refused by every topic reader.
|
|
70
|
+
expect(notReadYet.sort()).toEqual(
|
|
71
|
+
GRAPH_ONLY_FIELDS.filter(field => field !== 'placement').sort(),
|
|
72
|
+
);
|
|
69
73
|
for (const field of graphFieldsDoc.fields) {
|
|
70
|
-
if (
|
|
74
|
+
if (GRAPH_ONLY_FIELDS.includes(field.name)) {
|
|
71
75
|
expect(field.description).toMatch(/fails to load/);
|
|
72
76
|
}
|
|
73
77
|
}
|
|
78
|
+
const placement = graphFieldsDoc.fields.find(f => f.name === 'placement');
|
|
79
|
+
expect(placement.description).toMatch(
|
|
80
|
+
/Read for every guide, the CLI's and each integration's/,
|
|
81
|
+
);
|
|
74
82
|
expect(graphFieldsDoc.description).toMatch(/not built yet/);
|
|
75
83
|
});
|
|
76
84
|
|
|
77
|
-
it('
|
|
85
|
+
it('keeps graph blocks behind the separate GraphContentBlock type, and a section takes a reference block', () => {
|
|
78
86
|
const content = referenceDoc.fields
|
|
79
87
|
.flatMap(field => [field, ...(field.fields ?? [])])
|
|
80
88
|
.find(field => field.name === 'sections[].content');
|
|
89
|
+
expect(content.type).toBe('(ReferenceContentBlock | ReferenceDocBlock)[]');
|
|
90
|
+
expect(content.description).toContain('GraphContentBlock');
|
|
81
91
|
for (const type of GRAPH_BLOCK_TYPES) {
|
|
82
92
|
expect(content.description).toContain(type);
|
|
83
93
|
}
|
|
84
|
-
|
|
94
|
+
// A section's reference block reads as the doc it includes.
|
|
95
|
+
expect(GRAPH_BLOCK_TYPES.has('reference')).toBe(false);
|
|
96
|
+
expect(content.description).toMatch(
|
|
97
|
+
/A `reference` block .* includes another doc/,
|
|
98
|
+
);
|
|
85
99
|
});
|
|
86
100
|
|
|
87
|
-
it('says namespace docs
|
|
88
|
-
expect(namespaceDoc.description).toMatch(
|
|
101
|
+
it('says where namespace docs live: the CLI tree, and each integration', () => {
|
|
102
|
+
expect(namespaceDoc.description).toMatch(
|
|
103
|
+
/an integration ships its own in its docs directory/,
|
|
104
|
+
);
|
|
89
105
|
expect(
|
|
90
106
|
problemsInTopic({
|
|
91
107
|
...namespaceDoc.examples?.[0],
|
|
@@ -93,7 +109,7 @@ describe('what the authoring docs say about the unbuilt docs graph', () => {
|
|
|
93
109
|
name: 'x',
|
|
94
110
|
}),
|
|
95
111
|
).toEqual([
|
|
96
|
-
'"x" is a namespace doc
|
|
112
|
+
'"x" is a namespace doc, which the docs tree reads, not the topic list. The CLI keeps its own in assets/docs/tree; an integration ships its namespace docs in its docs directory.',
|
|
97
113
|
]);
|
|
98
114
|
});
|
|
99
115
|
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// @generated by scripts/sync-api-types.mjs from the JSDoc in foundation/**/*.mjs.
|
|
2
|
+
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Every type `@astryxdesign/cli/authoring` exports, in the order index.d.ts
|
|
6
|
+
* lists them, each traced to the module that declares it. A value export that
|
|
7
|
+
* traces to a JavaScript module (a parser) is not a type and is left out;
|
|
8
|
+
* anything else that cannot be traced is reported, never dropped.
|
|
9
|
+
* @param {string} [root]
|
|
10
|
+
* @returns {{
|
|
11
|
+
* types: {name: string, module: string}[],
|
|
12
|
+
* untraced: {name: string, reason: string}[],
|
|
13
|
+
* }} `module` is relative to `root`
|
|
14
|
+
*/
|
|
15
|
+
export function tracePublicAuthoringTypes(root?: string): {
|
|
16
|
+
types: {
|
|
17
|
+
name: string;
|
|
18
|
+
module: string;
|
|
19
|
+
}[];
|
|
20
|
+
untraced: {
|
|
21
|
+
name: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
}[];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* What stands between each type `@astryxdesign/cli/authoring` exports and a
|
|
27
|
+
* reader of `astryx docs authoring`. A type is readable when a self-doc beside
|
|
28
|
+
* the module that declares it is listed in AUTHORING_SELF_DOCS, loads, and
|
|
29
|
+
* renders a section the topic's index lists. A registered self-doc must
|
|
30
|
+
* document something public: a public type declared beside it, and, when its
|
|
31
|
+
* title is the name of a type declared beside it, that type.
|
|
32
|
+
* @param {{root?: string, sources?: string[], topicKeys?: Set<string> | null}} [options]
|
|
33
|
+
* `topicKeys` are the keys `astryx docs authoring --index` lists; null skips
|
|
34
|
+
* that comparison.
|
|
35
|
+
* @returns {Promise<{
|
|
36
|
+
* types: number,
|
|
37
|
+
* unreadable: {module: string, names: string[], reason: UnreadableReason, source?: string, key?: string}[],
|
|
38
|
+
* untraced: {name: string, reason: string}[],
|
|
39
|
+
* unmatched: {source: string, key?: string, subject?: string}[],
|
|
40
|
+
* }>}
|
|
41
|
+
*/
|
|
42
|
+
export function auditAuthoringSurface({ root, sources, topicKeys, }?: {
|
|
43
|
+
root?: string;
|
|
44
|
+
sources?: string[];
|
|
45
|
+
topicKeys?: Set<string> | null;
|
|
46
|
+
}): Promise<{
|
|
47
|
+
types: number;
|
|
48
|
+
unreadable: {
|
|
49
|
+
module: string;
|
|
50
|
+
names: string[];
|
|
51
|
+
reason: UnreadableReason;
|
|
52
|
+
source?: string;
|
|
53
|
+
key?: string;
|
|
54
|
+
}[];
|
|
55
|
+
untraced: {
|
|
56
|
+
name: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
}[];
|
|
59
|
+
unmatched: {
|
|
60
|
+
source: string;
|
|
61
|
+
key?: string;
|
|
62
|
+
subject?: string;
|
|
63
|
+
}[];
|
|
64
|
+
}>;
|
|
65
|
+
/** The barrel the `types` condition of `@astryxdesign/cli/authoring` names. */
|
|
66
|
+
export const AUTHORING_SURFACE: "index.d.ts";
|
|
67
|
+
export type Tracer = {
|
|
68
|
+
root: string;
|
|
69
|
+
/**
|
|
70
|
+
* top-level statements by absolute path
|
|
71
|
+
*/
|
|
72
|
+
parsed: Map<string, any[]>;
|
|
73
|
+
};
|
|
74
|
+
export type UnreadableReason = "no-self-doc" | "unregistered" | "failed" | "missing-section";
|