Repository navigation
Add typed JSON output to theme check - #8642
Conversation
095fe47 to
fd69066
Compare
60fc145 to
84774fa
Compare
84774fa to
143d3dc
Compare
fda3575 to
f82379b
Compare
1e151c5 to
0bd24e9
Compare
f82379b to
f8f160d
Compare
0bd24e9 to
b1a9aff
Compare
b1a9aff to
cd8b847
Compare
f8f160d to
781de0e
Compare
cd8b847 to
ec6f23d
Compare
781de0e to
a523b13
Compare
ec6f23d to
861825a
Compare
571cd4e to
814fcb9
Compare
6cae74e to
c218adb
Compare
ecb184c to
a6c90ed
Compare
fa74b25 to
d93ff1e
Compare
a6c90ed to
8cfc448
Compare
04343fc to
c6e17b3
Compare
86fe745 to
1f370d0
Compare
c6e17b3 to
9393b37
Compare
1f370d0 to
ff44bf7
Compare
9393b37 to
a010fb4
Compare
ff44bf7 to
154430a
Compare
a010fb4 to
05b9d68
Compare
154430a to
ed6c15c
Compare
05b9d68 to
d5b00ff
Compare
d5b00ff to
52ed921
Compare
ed6c15c to
20a2271
Compare
isaacroldan
left a comment
There was a problem hiding this comment.
Found one JSON diagnostic issue.
🤖 Generated by the review-pr skill
|
|
||
| export async function checkTheme(path: string, config?: string, environment?: string) { | ||
| const {offenses, theme} = await withThemeCheckConfigErrorHandling(config, () => | ||
| themeCheckRun(path, config, (message) => { |
There was a problem hiding this comment.
This callback does not cover the warnings Theme Check writes with console.error. With extends: [] and LiquidHTMLSyntaxError: {enabled: true, unexpectedOption: true} in .theme-check.yml, theme check --json --no-input writes a plain-text Unexpected setting... line to stderr, so callers cannot parse that stream as JSONL. I checked this with the real Theme Check library. Can we send those warnings through the command diagnostic writer too?
🤖 Generated by the review-pr skill
|
| Changeset | Package |
|---|---|
theme-check-json-contract.md |
'@shopify/cli': major |
theme-duplicate-json-contract.md |
'@shopify/cli': major |
theme-info-json-contract.md |
'@shopify/cli': major |
theme-list-json-contract.md |
'@shopify/cli': major |
theme-open-json-contract.md |
'@shopify/cli': major |
theme-preview-json-contract.md |
'@shopify/cli': major |
theme-push-json-contract.md |
"@shopify/cli": major |
Differences in type declarationsWe detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:
New type declarationsWe found no new type declarations in this PR Existing type declarationspackages/cli-kit/dist/public/node/base-command.d.ts@@ -20,6 +20,7 @@ declare abstract class BaseCommand extends Command {
static descriptionWithoutMarkdown(): string | undefined;
static analyticsNameOverride(): string | undefined;
static analyticsStopCommand(): string | undefined;
+ private jsonOutputFromEnvironment;
catch(error: Error & {
skipOclifErrorHandling: boolean;
}): Promise<void>;
@@ -35,6 +36,7 @@ declare abstract class BaseCommand extends Command {
argv: string[];
}>;
protected environmentsFilename(): string | undefined;
+ protected validateNonTTYFlags(flags: FlagOutput): void;
protected failMissingNonTTYFlags(flags: FlagOutput, requiredFlags: string[]): void;
private failMissingNonTTYFlagRequirements;
private applicableNonTTYFlagRequirements;
packages/cli-kit/dist/public/node/themes/theme-manager.d.ts@@ -11,5 +11,12 @@ export declare abstract class ThemeManager {
findOrCreate(name?: string, role?: Role): Promise<Theme>;
fetch(name?: string, role?: Role): Promise<Theme | undefined>;
generateThemeName(context: string): string;
- create(themeRole?: Role, themeName?: string): Promise<Theme>;
+ create(themeRole?: Role, themeName?: string): Promise<{
+ createdAtRuntime: boolean;
+ id: number;
+ name: string;
+ processing: boolean;
+ role: string;
+ src?: string;
+ }>;
}
\ No newline at end of file
|
WHY are these changes introduced?
Theme Check JSON needs consistent validation results and diagnostic fields.
WHAT is this pull request doing?
Return valid, flat issues and consistent severity counts with absolute file paths and zero-based camelCase positions. Retain completed validation in environment batches, honor the blocking policy, and wait for requested corrections before final JSON.
The public output follows
docs/cli/json-output.md; explicitly named environments use one{environments: [...]}object.How to manually test your changes?
Checklist
patchfor bug fixes ·minorfor new features ·majorfor breaking changes) and added a changeset withpnpm changeset add