@astryxdesign/cli 0.6.3-canary.db4e378 → 0.6.3-canary.db7b338
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 +22 -1
- package/api/blog/blog.doc.mjs +1 -0
- package/api/build/build.doc.mjs +1 -0
- package/api/component/component.doc.mjs +1 -0
- package/api/discover/discover.doc.mjs +1 -0
- package/api/docs/_adapter.d.mts +3 -8
- package/api/docs/_adapter.mjs +13 -105
- package/api/docs/detail/section/section.mjs +9 -15
- package/api/docs/detail/section/section.test.mjs +15 -6
- package/api/docs/docs.doc.mjs +1 -0
- package/api/docs/list/list.mjs +3 -7
- package/api/doctor/doctor.d.mts +25 -3
- package/api/doctor/doctor.doc.mjs +1 -0
- package/api/doctor/doctor.mjs +186 -14
- package/api/doctor/doctor.test.mjs +332 -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/init/init.doc.mjs +1 -0
- package/api/integration/add-contribution.mjs +7 -7
- package/api/integration/add-contribution.test.mjs +37 -3
- package/api/integration/add-theme.mjs +34 -64
- package/api/integration/add-theme.test.mjs +105 -21
- package/api/integration/authoring-checks.test.mjs +8 -4
- package/api/integration/integration-block-exports.test.mjs +10 -6
- package/api/integration/integrationAdd.doc.mjs +1 -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 +1 -0
- 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 +1 -0
- package/api/integration/integrationPackCheck.doc.mjs +1 -0
- package/api/integration/integrationTemplateConflicts.doc.mjs +1 -0
- package/api/integration/pack-check.test.mjs +17 -47
- package/api/integration/summarizeIssues.doc.mjs +1 -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 +85 -23
- package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
- package/api/integration/validateIntegration.doc.mjs +1 -0
- package/api/json/assertResponse.doc.mjs +1 -0
- package/api/json/isError.doc.mjs +1 -0
- package/api/json/parseResponse.doc.mjs +1 -0
- 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.doc.mjs +1 -0
- package/api/search/search.mjs +16 -6
- package/api/swizzle/swizzle.doc.mjs +1 -0
- package/api/template/template-suffix.test.mjs +41 -21
- package/api/template/template.doc.mjs +1 -0
- 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/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 +1 -0
- 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/cli-integrations.doc.mjs +30 -30
- package/assets/docs/cli.doc.mjs +15 -0
- package/assets/docs/theme.doc.mjs +1 -1
- 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/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/doctypes/_schema.d.mts +71 -141
- package/authoring/doctypes/_schema.mjs +29 -2
- package/authoring/doctypes/base/graph-fields.doc.mjs +1 -1
- package/authoring/doctypes/command/command.doc.mjs +1 -1
- package/authoring/doctypes/command/type.ts +1 -1
- 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 +1 -1
- package/authoring/doctypes/function/type.ts +1 -1
- package/authoring/doctypes/hook/type.ts +2 -2
- package/authoring/doctypes/load-contract.test.mjs +3 -2
- package/authoring/doctypes/namespace/namespace.doc.mjs +2 -2
- 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 +6 -4
- package/authoring/doctypes/reference/type.ts +9 -10
- package/authoring/doctypes/schema/schema.doc.mjs +1 -1
- package/authoring/doctypes/schema/type.ts +1 -2
- package/authoring/doctypes/template/template.doc.mjs +3 -3
- 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/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 +3 -9
- 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 +10 -44
- package/clients/cli/commands/build.doc.mjs +1 -1
- package/clients/cli/commands/component.doc.mjs +1 -1
- package/clients/cli/commands/discover.doc.mjs +1 -1
- package/clients/cli/commands/docs.doc.mjs +1 -1
- package/clients/cli/commands/docs.mjs +15 -58
- package/clients/cli/commands/docs.test.mjs +11 -14
- package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +1 -1
- 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 +15 -7
- package/clients/cli/commands/doctor.doc.mjs +1 -1
- 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 +1 -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/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/swizzle.doc.mjs +1 -1
- package/clients/cli/commands/template.doc.mjs +1 -1
- package/clients/cli/commands/text-json-parity.test.mjs +718 -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/lib/hook-format.mjs +14 -5
- package/foundation/config/project-themes.test.mjs +11 -19
- package/foundation/config/project.d.mts +8 -0
- package/foundation/config/project.mjs +50 -21
- package/foundation/config/project.test.mjs +3 -16
- package/foundation/discovery/authoring-self-docs.d.mts +6 -0
- package/foundation/discovery/authoring-self-docs.mjs +17 -7
- package/foundation/discovery/authoring-self-docs.test.mjs +3 -2
- 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 +113 -0
- package/foundation/discovery/cli-self-docs.mjs +514 -0
- package/foundation/discovery/cli-self-docs.test.mjs +437 -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 +3 -2
- package/foundation/discovery/docs-discovery.mjs +14 -17
- package/foundation/discovery/docs-discovery.test.mjs +15 -15
- package/foundation/discovery/docs-section-key.d.mts +19 -8
- package/foundation/discovery/docs-section-key.mjs +119 -32
- package/foundation/discovery/docs-section-key.test.mjs +41 -19
- package/foundation/discovery/template-adapter.d.mts +7 -0
- package/foundation/discovery/template-adapter.mjs +27 -40
- package/foundation/discovery/template-adapter.test.mjs +15 -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 +218 -0
- package/foundation/doc-compiler/bundle.test.mjs +255 -0
- package/foundation/doc-compiler/compile.d.mts +200 -0
- package/foundation/doc-compiler/compile.mjs +259 -9
- package/foundation/doc-compiler/diagnostics.d.mts +126 -0
- package/foundation/doc-compiler/diagnostics.mjs +277 -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 +286 -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 +189 -12
- package/foundation/doc-compiler/lower-doc.test.mjs +492 -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 +126 -0
- package/foundation/doc-compiler/read.mjs +320 -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/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/contribution-fixes.d.mts +145 -0
- package/foundation/integrations/contribution-fixes.mjs +1284 -0
- package/foundation/integrations/contribution-inventory.d.mts +1 -1
- package/foundation/integrations/contribution-inventory.mjs +17 -20
- package/foundation/integrations/contribution-inventory.test.mjs +67 -27
- 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 +104 -10
- 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.mjs +1 -1
- package/foundation/response/response.doc.mjs +1 -1
- package/foundation/text/string-utils.mjs +22 -10
- package/package.json +10 -9
- package/assets/templates/themes/manifest.json +0 -95
|
@@ -64,6 +64,8 @@
|
|
|
64
64
|
* | 'ERR_UNKNOWN_FEATURE'
|
|
65
65
|
* | 'ERR_UNKNOWN_CODEMOD'
|
|
66
66
|
* | 'ERR_CODEMOD_FAILED'
|
|
67
|
+
* | 'ERR_CODEMOD_PROTECTED'
|
|
68
|
+
* | 'ERR_CODEMOD_PROTECTION_SOURCE'
|
|
67
69
|
* | 'ERR_NOT_FOUND'
|
|
68
70
|
* | 'ERR_NO_DOC'
|
|
69
71
|
* | 'ERR_NO_SHOWCASE'
|
|
@@ -161,6 +163,10 @@ export const ERROR_CODES = Object.freeze({
|
|
|
161
163
|
ERR_UNKNOWN_CODEMOD: 'ERR_UNKNOWN_CODEMOD',
|
|
162
164
|
/** One or more codemods failed during an upgrade run. */
|
|
163
165
|
ERR_CODEMOD_FAILED: 'ERR_CODEMOD_FAILED',
|
|
166
|
+
/** A required codemod change remains blocked by a protected consumer file. */
|
|
167
|
+
ERR_CODEMOD_PROTECTED: 'ERR_CODEMOD_PROTECTED',
|
|
168
|
+
/** A working-tree protection declaration could not be read or parsed. */
|
|
169
|
+
ERR_CODEMOD_PROTECTION_SOURCE: 'ERR_CODEMOD_PROTECTION_SOURCE',
|
|
164
170
|
/** A generic discover/lookup query matched nothing in any package. */
|
|
165
171
|
ERR_NOT_FOUND: 'ERR_NOT_FOUND',
|
|
166
172
|
|
|
@@ -185,7 +191,7 @@ export const ERROR_CODES = Object.freeze({
|
|
|
185
191
|
ERR_WRITE_FAILED: 'ERR_WRITE_FAILED',
|
|
186
192
|
|
|
187
193
|
// ── Theme build ──────────────────────────────────────────────────
|
|
188
|
-
/** A theme definition or contributed theme
|
|
194
|
+
/** A theme definition or contributed theme descriptor is invalid. */
|
|
189
195
|
ERR_THEME_INVALID: 'ERR_THEME_INVALID',
|
|
190
196
|
/** A theme file could not be loaded / parsed into a defineTheme result. */
|
|
191
197
|
ERR_THEME_LOAD: 'ERR_THEME_LOAD',
|
|
@@ -86,6 +86,8 @@ describe('error codes: shipped set', () => {
|
|
|
86
86
|
'ERR_AMBIGUOUS_TEMPLATE',
|
|
87
87
|
'ERR_AMBIGUOUS_THEME',
|
|
88
88
|
'ERR_CODEMOD_FAILED',
|
|
89
|
+
'ERR_CODEMOD_PROTECTED',
|
|
90
|
+
'ERR_CODEMOD_PROTECTION_SOURCE',
|
|
89
91
|
'ERR_CORE_INCOMPATIBLE',
|
|
90
92
|
'ERR_CORE_NOT_FOUND',
|
|
91
93
|
'ERR_DEP_MISSING',
|
|
@@ -135,25 +137,67 @@ describe('error codes: shipped set', () => {
|
|
|
135
137
|
];
|
|
136
138
|
|
|
137
139
|
it('still carries every shipped code, spelled the same', () => {
|
|
138
|
-
const missing = SHIPPED.filter(
|
|
140
|
+
const missing = SHIPPED.filter(
|
|
141
|
+
code => !isErrorCode(code) || ERROR_CODES[code] !== code,
|
|
142
|
+
);
|
|
139
143
|
expect(missing, 'shipped codes removed or respelled').toEqual([]);
|
|
140
144
|
});
|
|
141
145
|
});
|
|
142
146
|
|
|
143
147
|
describe('error codes: end-to-end JSON envelopes', () => {
|
|
144
148
|
const cases = [
|
|
145
|
-
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
{
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
{
|
|
150
|
+
name: 'unknown component',
|
|
151
|
+
args: ['component', 'Bogus', '--json'],
|
|
152
|
+
code: 'ERR_UNKNOWN_COMPONENT',
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
name: 'unknown hook',
|
|
156
|
+
args: ['hook', 'bogusHook', '--json'],
|
|
157
|
+
code: 'ERR_UNKNOWN_HOOK',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'unknown topic',
|
|
161
|
+
args: ['docs', 'bogusTopic', '--json'],
|
|
162
|
+
code: 'ERR_UNKNOWN_TOPIC',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'unknown template',
|
|
166
|
+
args: ['template', 'bogusTemplate', '--json'],
|
|
167
|
+
code: 'ERR_UNKNOWN_TEMPLATE',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
name: 'unknown command',
|
|
171
|
+
args: ['bogus-cmd', '--json'],
|
|
172
|
+
code: 'ERR_UNKNOWN_COMMAND',
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'invalid --lang',
|
|
176
|
+
args: ['docs', 'color', '--lang', 'fr', '--json'],
|
|
177
|
+
code: 'ERR_INVALID_LANG',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'invalid --detail',
|
|
181
|
+
args: ['docs', 'color', '--detail', 'bogus', '--json'],
|
|
182
|
+
code: 'ERR_INVALID_DETAIL',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: 'unknown option',
|
|
186
|
+
args: ['component', 'Button', '--bogus-flag', '--json'],
|
|
187
|
+
code: 'ERR_INVALID_OPTION',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'missing argument',
|
|
191
|
+
args: ['theme', 'build', '--json'],
|
|
192
|
+
code: 'ERR_MISSING_ARGUMENT',
|
|
193
|
+
},
|
|
154
194
|
// `theme` is not on the --json allowlist, so --json on any theme subcommand
|
|
155
195
|
// is rejected at the preAction gate with a stable invalid-option code.
|
|
156
|
-
{
|
|
196
|
+
{
|
|
197
|
+
name: 'json not supported',
|
|
198
|
+
args: ['theme', 'bogus-sub', '--json'],
|
|
199
|
+
code: 'ERR_INVALID_OPTION',
|
|
200
|
+
},
|
|
157
201
|
];
|
|
158
202
|
|
|
159
203
|
for (const {name, args, code} of cases) {
|
|
@@ -13,7 +13,7 @@ export const doc = {
|
|
|
13
13
|
type: 'enum',
|
|
14
14
|
name: 'response-types',
|
|
15
15
|
displayName: 'Response Types',
|
|
16
|
-
namespace: 'cli',
|
|
16
|
+
namespace: 'cli/api',
|
|
17
17
|
description:
|
|
18
18
|
'The `type` discriminant present on every --json success envelope. Consumers switch on it to narrow `data`.',
|
|
19
19
|
members: [
|
|
@@ -12,7 +12,7 @@ export const doc = {
|
|
|
12
12
|
type: 'schema',
|
|
13
13
|
name: 'output',
|
|
14
14
|
displayName: 'Output Envelope',
|
|
15
|
-
namespace: 'cli',
|
|
15
|
+
namespace: 'cli/api',
|
|
16
16
|
description:
|
|
17
17
|
'The single JSON envelope every command emits under --json. Success is ' +
|
|
18
18
|
'{ apiVersion, type, data, meta? }; failure is { apiVersion, error, code, ' +
|
|
@@ -56,7 +56,7 @@ export function findClosestComponents(name, components, maxDistance = 3) {
|
|
|
56
56
|
* @returns {Promise<{name: string, score: number, reason: string}[]>}
|
|
57
57
|
*/
|
|
58
58
|
export async function searchComponents(needle, coreDir, components) {
|
|
59
|
-
const {
|
|
59
|
+
const {readDocView} = await import('../doc-compiler/read.mjs');
|
|
60
60
|
const fs = await import('node:fs');
|
|
61
61
|
const path = await import('node:path');
|
|
62
62
|
|
|
@@ -100,8 +100,10 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
100
100
|
// Levenshtein on name
|
|
101
101
|
const dist = levenshteinDistance(term, compLower);
|
|
102
102
|
if (dist === 1) addMatch(comp, 80, 'similar name (distance ' + dist + ')');
|
|
103
|
-
else if (dist === 2)
|
|
104
|
-
|
|
103
|
+
else if (dist === 2)
|
|
104
|
+
addMatch(comp, 40, 'similar name (distance ' + dist + ')');
|
|
105
|
+
else if (dist === 3)
|
|
106
|
+
addMatch(comp, 20, 'similar name (distance ' + dist + ')');
|
|
105
107
|
}
|
|
106
108
|
|
|
107
109
|
// --- Pass 2: Keyword + description matching (async, reads doc files) ---
|
|
@@ -124,15 +126,22 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
124
126
|
for (const entry of entries) {
|
|
125
127
|
if (!entry.isDirectory()) continue;
|
|
126
128
|
const nested = path.join(srcDir, entry.name, comp, comp + '.doc.mjs');
|
|
127
|
-
if (fs.existsSync(nested)) {
|
|
129
|
+
if (fs.existsSync(nested)) {
|
|
130
|
+
docPath = nested;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
128
133
|
}
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
if (!docPath) continue;
|
|
132
137
|
|
|
133
138
|
try {
|
|
134
|
-
|
|
135
|
-
const docs =
|
|
139
|
+
// Only the legacy `docs` export has ever been indexed here.
|
|
140
|
+
const docs = await readDocView(docPath, {
|
|
141
|
+
root: 'components',
|
|
142
|
+
loader: 'native',
|
|
143
|
+
exports: ['docs'],
|
|
144
|
+
});
|
|
136
145
|
if (!docs) continue;
|
|
137
146
|
|
|
138
147
|
// Keyword matching
|
|
@@ -157,8 +166,10 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
const dist = levenshteinDistance(term, kwLower);
|
|
160
|
-
if (dist === 1)
|
|
161
|
-
|
|
169
|
+
if (dist === 1)
|
|
170
|
+
addMatch(comp, 70, 'keyword "' + kw + '" (distance ' + dist + ')');
|
|
171
|
+
else if (dist === 2)
|
|
172
|
+
addMatch(comp, 30, 'keyword "' + kw + '" (distance ' + dist + ')');
|
|
162
173
|
}
|
|
163
174
|
}
|
|
164
175
|
|
|
@@ -191,8 +202,9 @@ export async function searchComponents(needle, coreDir, components) {
|
|
|
191
202
|
}
|
|
192
203
|
}
|
|
193
204
|
|
|
194
|
-
const results = Array.from(scored.values())
|
|
195
|
-
|
|
205
|
+
const results = Array.from(scored.values()).sort(
|
|
206
|
+
(a, b) => b.score - a.score || a.name.localeCompare(b.name),
|
|
207
|
+
);
|
|
196
208
|
|
|
197
209
|
return results;
|
|
198
210
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/cli",
|
|
3
|
-
"version": "0.6.3-canary.
|
|
3
|
+
"version": "0.6.3-canary.db7b338",
|
|
4
4
|
"displayName": "CLI",
|
|
5
5
|
"description": "Scaffold projects, browse templates, generate themes, and get agent-ready docs from the command line.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
"@babel/types": "7.29.8",
|
|
92
92
|
"ast-types": "0.16.3",
|
|
93
93
|
"commander": "^12.1.0",
|
|
94
|
+
"ignore": "^7.0.5",
|
|
94
95
|
"jiti": "^2.7.0",
|
|
95
96
|
"jscodeshift": "^17.3.0",
|
|
96
97
|
"node-diff3": "3.2.1",
|
|
@@ -100,10 +101,10 @@
|
|
|
100
101
|
"zod": "^4.4.3"
|
|
101
102
|
},
|
|
102
103
|
"peerDependencies": {
|
|
103
|
-
"@astryxdesign/charts": "0.6.3-canary.
|
|
104
|
-
"@astryxdesign/core": "0.6.3-canary.
|
|
105
|
-
"@astryxdesign/lab": "0.6.3-canary.
|
|
106
|
-
"@astryxdesign/theme-neutral": "0.6.3-canary.
|
|
104
|
+
"@astryxdesign/charts": "0.6.3-canary.db7b338",
|
|
105
|
+
"@astryxdesign/core": "0.6.3-canary.db7b338",
|
|
106
|
+
"@astryxdesign/lab": "0.6.3-canary.db7b338",
|
|
107
|
+
"@astryxdesign/theme-neutral": "0.6.3-canary.db7b338"
|
|
107
108
|
},
|
|
108
109
|
"peerDependenciesMeta": {
|
|
109
110
|
"@astryxdesign/charts": {
|
|
@@ -120,10 +121,10 @@
|
|
|
120
121
|
}
|
|
121
122
|
},
|
|
122
123
|
"devDependencies": {
|
|
123
|
-
"@astryxdesign/charts": "0.6.3-canary.
|
|
124
|
-
"@astryxdesign/core": "0.6.3-canary.
|
|
125
|
-
"@astryxdesign/lab": "0.6.3-canary.
|
|
126
|
-
"@astryxdesign/theme-neutral": "0.6.3-canary.
|
|
124
|
+
"@astryxdesign/charts": "0.6.3-canary.db7b338",
|
|
125
|
+
"@astryxdesign/core": "0.6.3-canary.db7b338",
|
|
126
|
+
"@astryxdesign/lab": "0.6.3-canary.db7b338",
|
|
127
|
+
"@astryxdesign/theme-neutral": "0.6.3-canary.db7b338",
|
|
127
128
|
"@heroicons/react": "^2.2.0",
|
|
128
129
|
"@stylexjs/stylex": "^0.19.0",
|
|
129
130
|
"@types/babel__core": "^7.20.5",
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"generatedBy": "scripts/generate-cli-themes.mjs",
|
|
4
|
-
"themes": [
|
|
5
|
-
{
|
|
6
|
-
"slug": "butter",
|
|
7
|
-
"displayName": "Butter",
|
|
8
|
-
"description": "Warm, creamy yellows with a friendly blue accent. Playful enough for consumer surfaces, soft enough to stay readable.",
|
|
9
|
-
"maintained": false,
|
|
10
|
-
"entry": "butterTheme.ts",
|
|
11
|
-
"exportName": "butterTheme",
|
|
12
|
-
"files": [
|
|
13
|
-
"butterTheme.ts",
|
|
14
|
-
"icons.tsx"
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"slug": "chocolate",
|
|
19
|
-
"displayName": "Chocolate",
|
|
20
|
-
"description": "Warm chocolate theme for Astryx — rich brown palette with Fraunces headings, Albert Sans body, and Lucide icons",
|
|
21
|
-
"maintained": false,
|
|
22
|
-
"entry": "chocolateTheme.ts",
|
|
23
|
-
"exportName": "chocolateTheme",
|
|
24
|
-
"files": [
|
|
25
|
-
"chocolateTheme.ts",
|
|
26
|
-
"icons.tsx"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"slug": "gothic",
|
|
31
|
-
"displayName": "Gothic",
|
|
32
|
-
"description": "Deep blue-grays and a signature display serif. Dramatic and editorial, for surfaces that want to be remembered.",
|
|
33
|
-
"maintained": false,
|
|
34
|
-
"entry": "gothicTheme.ts",
|
|
35
|
-
"exportName": "gothicTheme",
|
|
36
|
-
"files": [
|
|
37
|
-
"gothicTheme.ts",
|
|
38
|
-
"icons.tsx"
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"slug": "matcha",
|
|
43
|
-
"displayName": "Matcha",
|
|
44
|
-
"description": "Earthy greens with a calm, organic feel. Naturalistic and grounded, great for wellness or content-first apps.",
|
|
45
|
-
"maintained": false,
|
|
46
|
-
"entry": "matchaTheme.ts",
|
|
47
|
-
"exportName": "matchaTheme",
|
|
48
|
-
"files": [
|
|
49
|
-
"matchaTheme.ts",
|
|
50
|
-
"icons.tsx"
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"slug": "neutral",
|
|
55
|
-
"displayName": "Neutral",
|
|
56
|
-
"description": "Restrained warm grays. Minimal and quiet, so the content stays the focus.",
|
|
57
|
-
"maintained": true,
|
|
58
|
-
"entry": "neutralTheme.ts",
|
|
59
|
-
"exportName": "neutralTheme",
|
|
60
|
-
"files": [
|
|
61
|
-
"neutralTheme.ts",
|
|
62
|
-
"icons.tsx",
|
|
63
|
-
"neutralPalettes.ts",
|
|
64
|
-
"neutralPalettes.generated.ts",
|
|
65
|
-
"neutralPaletteRefs.generated.ts",
|
|
66
|
-
"neutralPalettes.generated.receipt.json",
|
|
67
|
-
"palette.config.json"
|
|
68
|
-
]
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"slug": "stone",
|
|
72
|
-
"displayName": "Stone",
|
|
73
|
-
"description": "Warm stone and slate, earthy and understated, with just enough character to feel handcrafted.",
|
|
74
|
-
"maintained": false,
|
|
75
|
-
"entry": "stoneTheme.ts",
|
|
76
|
-
"exportName": "stoneTheme",
|
|
77
|
-
"files": [
|
|
78
|
-
"stoneTheme.ts",
|
|
79
|
-
"icons.tsx"
|
|
80
|
-
]
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"slug": "y2k",
|
|
84
|
-
"displayName": "Y2K",
|
|
85
|
-
"description": "Hot pinks, lime greens, and Poppins. Bubbly, playful, and unmistakably retro.",
|
|
86
|
-
"maintained": false,
|
|
87
|
-
"entry": "y2kTheme.ts",
|
|
88
|
-
"exportName": "y2kTheme",
|
|
89
|
-
"files": [
|
|
90
|
-
"y2kTheme.ts",
|
|
91
|
-
"icons.tsx"
|
|
92
|
-
]
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
}
|