@platformos/platformos-check-common 0.0.2
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 +9 -0
- package/README.md +92 -0
- package/dist/AugmentedThemeDocset.d.ts +12 -0
- package/dist/AugmentedThemeDocset.js +126 -0
- package/dist/AugmentedThemeDocset.js.map +1 -0
- package/dist/JSONValidator.d.ts +20 -0
- package/dist/JSONValidator.js +76 -0
- package/dist/JSONValidator.js.map +1 -0
- package/dist/checks/app-block-missing-schema/index.d.ts +2 -0
- package/dist/checks/app-block-missing-schema/index.js +46 -0
- package/dist/checks/app-block-missing-schema/index.js.map +1 -0
- package/dist/checks/app-block-valid-tags/index.d.ts +10 -0
- package/dist/checks/app-block-valid-tags/index.js +49 -0
- package/dist/checks/app-block-valid-tags/index.js.map +1 -0
- package/dist/checks/asset-preload/index.d.ts +2 -0
- package/dist/checks/asset-preload/index.js +56 -0
- package/dist/checks/asset-preload/index.js.map +1 -0
- package/dist/checks/asset-size-app-block-css/index.d.ts +6 -0
- package/dist/checks/asset-size-app-block-css/index.js +64 -0
- package/dist/checks/asset-size-app-block-css/index.js.map +1 -0
- package/dist/checks/asset-size-app-block-javascript/index.d.ts +6 -0
- package/dist/checks/asset-size-app-block-javascript/index.js +64 -0
- package/dist/checks/asset-size-app-block-javascript/index.js.map +1 -0
- package/dist/checks/asset-size-css/index.d.ts +6 -0
- package/dist/checks/asset-size-css/index.js +125 -0
- package/dist/checks/asset-size-css/index.js.map +1 -0
- package/dist/checks/asset-size-javascript/index.d.ts +6 -0
- package/dist/checks/asset-size-javascript/index.js +110 -0
- package/dist/checks/asset-size-javascript/index.js.map +1 -0
- package/dist/checks/block-id-usage/index.d.ts +2 -0
- package/dist/checks/block-id-usage/index.js +60 -0
- package/dist/checks/block-id-usage/index.js.map +1 -0
- package/dist/checks/cdn-preconnect/index.d.ts +2 -0
- package/dist/checks/cdn-preconnect/index.js +44 -0
- package/dist/checks/cdn-preconnect/index.js.map +1 -0
- package/dist/checks/content-for-header-modification/index.d.ts +2 -0
- package/dist/checks/content-for-header-modification/index.js +66 -0
- package/dist/checks/content-for-header-modification/index.js.map +1 -0
- package/dist/checks/deprecate-bgsizes/index.d.ts +2 -0
- package/dist/checks/deprecate-bgsizes/index.js +46 -0
- package/dist/checks/deprecate-bgsizes/index.js.map +1 -0
- package/dist/checks/deprecate-lazysizes/index.d.ts +2 -0
- package/dist/checks/deprecate-lazysizes/index.js +52 -0
- package/dist/checks/deprecate-lazysizes/index.js.map +1 -0
- package/dist/checks/deprecated-filter/fixes.d.ts +8 -0
- package/dist/checks/deprecated-filter/fixes.js +205 -0
- package/dist/checks/deprecated-filter/fixes.js.map +1 -0
- package/dist/checks/deprecated-filter/index.d.ts +2 -0
- package/dist/checks/deprecated-filter/index.js +93 -0
- package/dist/checks/deprecated-filter/index.js.map +1 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.d.ts +1 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.js +1347 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.js.map +1 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.d.ts +2 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.js +156 -0
- package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.js.map +1 -0
- package/dist/checks/deprecated-fonts-on-settings-schema/index.d.ts +2 -0
- package/dist/checks/deprecated-fonts-on-settings-schema/index.js +56 -0
- package/dist/checks/deprecated-fonts-on-settings-schema/index.js.map +1 -0
- package/dist/checks/deprecated-tag/index.d.ts +2 -0
- package/dist/checks/deprecated-tag/index.js +48 -0
- package/dist/checks/deprecated-tag/index.js.map +1 -0
- package/dist/checks/duplicate-content-for-arguments/index.d.ts +2 -0
- package/dist/checks/duplicate-content-for-arguments/index.js +39 -0
- package/dist/checks/duplicate-content-for-arguments/index.js.map +1 -0
- package/dist/checks/duplicate-function-arguments/index.d.ts +2 -0
- package/dist/checks/duplicate-function-arguments/index.js +40 -0
- package/dist/checks/duplicate-function-arguments/index.js.map +1 -0
- package/dist/checks/duplicate-render-partial-arguments/index.d.ts +2 -0
- package/dist/checks/duplicate-render-partial-arguments/index.js +43 -0
- package/dist/checks/duplicate-render-partial-arguments/index.js.map +1 -0
- package/dist/checks/empty-block-content/index.d.ts +2 -0
- package/dist/checks/empty-block-content/index.js +60 -0
- package/dist/checks/empty-block-content/index.js.map +1 -0
- package/dist/checks/graphql/index.d.ts +2 -0
- package/dist/checks/graphql/index.js +58 -0
- package/dist/checks/graphql/index.js.map +1 -0
- package/dist/checks/graphql-variables/index.d.ts +8 -0
- package/dist/checks/graphql-variables/index.js +91 -0
- package/dist/checks/graphql-variables/index.js.map +1 -0
- package/dist/checks/hardcoded-routes/index.d.ts +2 -0
- package/dist/checks/hardcoded-routes/index.js +89 -0
- package/dist/checks/hardcoded-routes/index.js.map +1 -0
- package/dist/checks/img-width-and-height/index.d.ts +2 -0
- package/dist/checks/img-width-and-height/index.js +46 -0
- package/dist/checks/img-width-and-height/index.js.map +1 -0
- package/dist/checks/index.d.ts +8 -0
- package/dist/checks/index.js +154 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/checks/invalid-hash-assign-target/index.d.ts +2 -0
- package/dist/checks/invalid-hash-assign-target/index.js +252 -0
- package/dist/checks/invalid-hash-assign-target/index.js.map +1 -0
- package/dist/checks/json-missing-block/index.d.ts +2 -0
- package/dist/checks/json-missing-block/index.js +48 -0
- package/dist/checks/json-missing-block/index.js.map +1 -0
- package/dist/checks/json-missing-block/missing-block-utils.d.ts +4 -0
- package/dist/checks/json-missing-block/missing-block-utils.js +87 -0
- package/dist/checks/json-missing-block/missing-block-utils.js.map +1 -0
- package/dist/checks/json-syntax-error/index.d.ts +2 -0
- package/dist/checks/json-syntax-error/index.js +92 -0
- package/dist/checks/json-syntax-error/index.js.map +1 -0
- package/dist/checks/liquid-free-settings/index.d.ts +2 -0
- package/dist/checks/liquid-free-settings/index.js +64 -0
- package/dist/checks/liquid-free-settings/index.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.js +23 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.js +136 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.js +26 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.js +59 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.js +66 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js +73 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.d.ts +4 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.js +54 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.js +71 -0
- package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.d.ts +3 -0
- package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.js +69 -0
- package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/checks/utils.d.ts +15 -0
- package/dist/checks/liquid-html-syntax-error/checks/utils.js +58 -0
- package/dist/checks/liquid-html-syntax-error/checks/utils.js.map +1 -0
- package/dist/checks/liquid-html-syntax-error/index.d.ts +2 -0
- package/dist/checks/liquid-html-syntax-error/index.js +131 -0
- package/dist/checks/liquid-html-syntax-error/index.js.map +1 -0
- package/dist/checks/matching-translations/index.d.ts +2 -0
- package/dist/checks/matching-translations/index.js +146 -0
- package/dist/checks/matching-translations/index.js.map +1 -0
- package/dist/checks/metadata-params/index.d.ts +2 -0
- package/dist/checks/metadata-params/index.js +96 -0
- package/dist/checks/metadata-params/index.js.map +1 -0
- package/dist/checks/missing-asset/index.d.ts +2 -0
- package/dist/checks/missing-asset/index.js +44 -0
- package/dist/checks/missing-asset/index.js.map +1 -0
- package/dist/checks/missing-content-for-arguments/index.d.ts +2 -0
- package/dist/checks/missing-content-for-arguments/index.js +36 -0
- package/dist/checks/missing-content-for-arguments/index.js.map +1 -0
- package/dist/checks/missing-template/index.d.ts +6 -0
- package/dist/checks/missing-template/index.js +70 -0
- package/dist/checks/missing-template/index.js.map +1 -0
- package/dist/checks/orphaned-partial/index.d.ts +2 -0
- package/dist/checks/orphaned-partial/index.js +42 -0
- package/dist/checks/orphaned-partial/index.js.map +1 -0
- package/dist/checks/pagination-size/index.d.ts +7 -0
- package/dist/checks/pagination-size/index.js +89 -0
- package/dist/checks/pagination-size/index.js.map +1 -0
- package/dist/checks/parser-blocking-script/index.d.ts +2 -0
- package/dist/checks/parser-blocking-script/index.js +81 -0
- package/dist/checks/parser-blocking-script/index.js.map +1 -0
- package/dist/checks/parser-blocking-script/suggestions.d.ts +4 -0
- package/dist/checks/parser-blocking-script/suggestions.js +22 -0
- package/dist/checks/parser-blocking-script/suggestions.js.map +1 -0
- package/dist/checks/remote-asset/index.d.ts +6 -0
- package/dist/checks/remote-asset/index.js +189 -0
- package/dist/checks/remote-asset/index.js.map +1 -0
- package/dist/checks/reserved-doc-param-names/index.d.ts +2 -0
- package/dist/checks/reserved-doc-param-names/index.js +46 -0
- package/dist/checks/reserved-doc-param-names/index.js.map +1 -0
- package/dist/checks/schema-presets-block-order/index.d.ts +2 -0
- package/dist/checks/schema-presets-block-order/index.js +108 -0
- package/dist/checks/schema-presets-block-order/index.js.map +1 -0
- package/dist/checks/schema-presets-static-blocks/index.d.ts +2 -0
- package/dist/checks/schema-presets-static-blocks/index.js +109 -0
- package/dist/checks/schema-presets-static-blocks/index.js.map +1 -0
- package/dist/checks/static-stylesheet-and-javascript-tags/index.d.ts +2 -0
- package/dist/checks/static-stylesheet-and-javascript-tags/index.js +42 -0
- package/dist/checks/static-stylesheet-and-javascript-tags/index.js.map +1 -0
- package/dist/checks/translation-key-exists/index.d.ts +2 -0
- package/dist/checks/translation-key-exists/index.js +67 -0
- package/dist/checks/translation-key-exists/index.js.map +1 -0
- package/dist/checks/unclosed-html-element/index.d.ts +2 -0
- package/dist/checks/unclosed-html-element/index.js +252 -0
- package/dist/checks/unclosed-html-element/index.js.map +1 -0
- package/dist/checks/undefined-object/index.d.ts +2 -0
- package/dist/checks/undefined-object/index.js +255 -0
- package/dist/checks/undefined-object/index.js.map +1 -0
- package/dist/checks/unique-doc-param-names/index.d.ts +2 -0
- package/dist/checks/unique-doc-param-names/index.js +37 -0
- package/dist/checks/unique-doc-param-names/index.js.map +1 -0
- package/dist/checks/unique-settings-id/index.d.ts +2 -0
- package/dist/checks/unique-settings-id/index.js +69 -0
- package/dist/checks/unique-settings-id/index.js.map +1 -0
- package/dist/checks/unique-settings-id/test-data.d.ts +2 -0
- package/dist/checks/unique-settings-id/test-data.js +1194 -0
- package/dist/checks/unique-settings-id/test-data.js.map +1 -0
- package/dist/checks/unique-static-block-id/index.d.ts +2 -0
- package/dist/checks/unique-static-block-id/index.js +56 -0
- package/dist/checks/unique-static-block-id/index.js.map +1 -0
- package/dist/checks/unknown-filter/index.d.ts +2 -0
- package/dist/checks/unknown-filter/index.js +38 -0
- package/dist/checks/unknown-filter/index.js.map +1 -0
- package/dist/checks/unknown-property/index.d.ts +2 -0
- package/dist/checks/unknown-property/index.js +361 -0
- package/dist/checks/unknown-property/index.js.map +1 -0
- package/dist/checks/unknown-property/property-shape.d.ts +41 -0
- package/dist/checks/unknown-property/property-shape.js +267 -0
- package/dist/checks/unknown-property/property-shape.js.map +1 -0
- package/dist/checks/unrecognized-content-for-arguments/index.d.ts +2 -0
- package/dist/checks/unrecognized-content-for-arguments/index.js +43 -0
- package/dist/checks/unrecognized-content-for-arguments/index.js.map +1 -0
- package/dist/checks/unrecognized-render-partial-arguments/index.d.ts +2 -0
- package/dist/checks/unrecognized-render-partial-arguments/index.js +59 -0
- package/dist/checks/unrecognized-render-partial-arguments/index.js.map +1 -0
- package/dist/checks/unused-assign/index.d.ts +2 -0
- package/dist/checks/unused-assign/index.js +77 -0
- package/dist/checks/unused-assign/index.js.map +1 -0
- package/dist/checks/unused-doc-param/index.d.ts +2 -0
- package/dist/checks/unused-doc-param/index.js +55 -0
- package/dist/checks/unused-doc-param/index.js.map +1 -0
- package/dist/checks/utils.d.ts +22 -0
- package/dist/checks/utils.js +74 -0
- package/dist/checks/utils.js.map +1 -0
- package/dist/checks/valid-block-target/index.d.ts +2 -0
- package/dist/checks/valid-block-target/index.js +99 -0
- package/dist/checks/valid-block-target/index.js.map +1 -0
- package/dist/checks/valid-content-for-argument-types/index.d.ts +2 -0
- package/dist/checks/valid-content-for-argument-types/index.js +35 -0
- package/dist/checks/valid-content-for-argument-types/index.js.map +1 -0
- package/dist/checks/valid-content-for-arguments/index.d.ts +2 -0
- package/dist/checks/valid-content-for-arguments/index.js +82 -0
- package/dist/checks/valid-content-for-arguments/index.js.map +1 -0
- package/dist/checks/valid-doc-param-types/index.d.ts +2 -0
- package/dist/checks/valid-doc-param-types/index.js +61 -0
- package/dist/checks/valid-doc-param-types/index.js.map +1 -0
- package/dist/checks/valid-html-translation/index.d.ts +2 -0
- package/dist/checks/valid-html-translation/index.js +46 -0
- package/dist/checks/valid-html-translation/index.js.map +1 -0
- package/dist/checks/valid-json/index.d.ts +2 -0
- package/dist/checks/valid-json/index.js +36 -0
- package/dist/checks/valid-json/index.js.map +1 -0
- package/dist/checks/valid-local-blocks/index.d.ts +2 -0
- package/dist/checks/valid-local-blocks/index.js +66 -0
- package/dist/checks/valid-local-blocks/index.js.map +1 -0
- package/dist/checks/valid-local-blocks/valid-block-utils.d.ts +13 -0
- package/dist/checks/valid-local-blocks/valid-block-utils.js +74 -0
- package/dist/checks/valid-local-blocks/valid-block-utils.js.map +1 -0
- package/dist/checks/valid-render-partial-argument-types/index.d.ts +2 -0
- package/dist/checks/valid-render-partial-argument-types/index.js +66 -0
- package/dist/checks/valid-render-partial-argument-types/index.js.map +1 -0
- package/dist/checks/valid-schema/index.d.ts +2 -0
- package/dist/checks/valid-schema/index.js +40 -0
- package/dist/checks/valid-schema/index.js.map +1 -0
- package/dist/checks/valid-schema-name/index.d.ts +2 -0
- package/dist/checks/valid-schema-name/index.js +74 -0
- package/dist/checks/valid-schema-name/index.js.map +1 -0
- package/dist/checks/valid-settings-key/index.d.ts +2 -0
- package/dist/checks/valid-settings-key/index.js +90 -0
- package/dist/checks/valid-settings-key/index.js.map +1 -0
- package/dist/checks/valid-static-block-type/index.d.ts +2 -0
- package/dist/checks/valid-static-block-type/index.js +54 -0
- package/dist/checks/valid-static-block-type/index.js.map +1 -0
- package/dist/checks/valid-visible-if/index.d.ts +3 -0
- package/dist/checks/valid-visible-if/index.js +146 -0
- package/dist/checks/valid-visible-if/index.js.map +1 -0
- package/dist/checks/valid-visible-if/visible-if-utils.d.ts +14 -0
- package/dist/checks/valid-visible-if/visible-if-utils.js +125 -0
- package/dist/checks/valid-visible-if/visible-if-utils.js.map +1 -0
- package/dist/checks/variable-name/index.d.ts +6 -0
- package/dist/checks/variable-name/index.js +93 -0
- package/dist/checks/variable-name/index.js.map +1 -0
- package/dist/context-utils.d.ts +15 -0
- package/dist/context-utils.js +185 -0
- package/dist/context-utils.js.map +1 -0
- package/dist/create-safe-check.d.ts +2 -0
- package/dist/create-safe-check.js +15 -0
- package/dist/create-safe-check.js.map +1 -0
- package/dist/disabled-checks/index.d.ts +7 -0
- package/dist/disabled-checks/index.js +145 -0
- package/dist/disabled-checks/index.js.map +1 -0
- package/dist/disabled-checks/test-checks.d.ts +3 -0
- package/dist/disabled-checks/test-checks.js +59 -0
- package/dist/disabled-checks/test-checks.js.map +1 -0
- package/dist/doc-generator/DocBlockGenerator.d.ts +16 -0
- package/dist/doc-generator/DocBlockGenerator.js +464 -0
- package/dist/doc-generator/DocBlockGenerator.js.map +1 -0
- package/dist/doc-generator/index.d.ts +1 -0
- package/dist/doc-generator/index.js +6 -0
- package/dist/doc-generator/index.js.map +1 -0
- package/dist/find-root.d.ts +18 -0
- package/dist/find-root.js +81 -0
- package/dist/find-root.js.map +1 -0
- package/dist/fixes/apply-fix-to-string.d.ts +2 -0
- package/dist/fixes/apply-fix-to-string.js +50 -0
- package/dist/fixes/apply-fix-to-string.js.map +1 -0
- package/dist/fixes/autofix.d.ts +9 -0
- package/dist/fixes/autofix.js +30 -0
- package/dist/fixes/autofix.js.map +1 -0
- package/dist/fixes/corrector.d.ts +0 -0
- package/dist/fixes/corrector.js +2 -0
- package/dist/fixes/corrector.js.map +1 -0
- package/dist/fixes/correctors/base-corrector.d.ts +4 -0
- package/dist/fixes/correctors/base-corrector.js +3 -0
- package/dist/fixes/correctors/base-corrector.js.map +1 -0
- package/dist/fixes/correctors/graphql-corrector.d.ts +56 -0
- package/dist/fixes/correctors/graphql-corrector.js +78 -0
- package/dist/fixes/correctors/graphql-corrector.js.map +1 -0
- package/dist/fixes/correctors/index.d.ts +6 -0
- package/dist/fixes/correctors/index.js +30 -0
- package/dist/fixes/correctors/index.js.map +1 -0
- package/dist/fixes/correctors/json-corrector.d.ts +39 -0
- package/dist/fixes/correctors/json-corrector.js +86 -0
- package/dist/fixes/correctors/json-corrector.js.map +1 -0
- package/dist/fixes/correctors/string-corrector.d.ts +56 -0
- package/dist/fixes/correctors/string-corrector.js +78 -0
- package/dist/fixes/correctors/string-corrector.js.map +1 -0
- package/dist/fixes/index.d.ts +4 -0
- package/dist/fixes/index.js +14 -0
- package/dist/fixes/index.js.map +1 -0
- package/dist/fixes/utils.d.ts +2 -0
- package/dist/fixes/utils.js +9 -0
- package/dist/fixes/utils.js.map +1 -0
- package/dist/ignore.d.ts +2 -0
- package/dist/ignore.js +20 -0
- package/dist/ignore.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +211 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +17 -0
- package/dist/json.js +79 -0
- package/dist/json.js.map +1 -0
- package/dist/jsonc/parse.d.ts +25 -0
- package/dist/jsonc/parse.js +101 -0
- package/dist/jsonc/parse.js.map +1 -0
- package/dist/jsonc/types.d.ts +37 -0
- package/dist/jsonc/types.js +3 -0
- package/dist/jsonc/types.js.map +1 -0
- package/dist/liquid-doc/arguments.d.ts +36 -0
- package/dist/liquid-doc/arguments.js +239 -0
- package/dist/liquid-doc/arguments.js.map +1 -0
- package/dist/liquid-doc/liquidDoc.d.ts +33 -0
- package/dist/liquid-doc/liquidDoc.js +94 -0
- package/dist/liquid-doc/liquidDoc.js.map +1 -0
- package/dist/liquid-doc/utils.d.ts +49 -0
- package/dist/liquid-doc/utils.js +119 -0
- package/dist/liquid-doc/utils.js.map +1 -0
- package/dist/path.d.ts +10 -0
- package/dist/path.js +47 -0
- package/dist/path.js.map +1 -0
- package/dist/tags/content-for.d.ts +3 -0
- package/dist/tags/content-for.js +27 -0
- package/dist/tags/content-for.js.map +1 -0
- package/dist/test/MockFileSystem.d.ts +12 -0
- package/dist/test/MockFileSystem.js +109 -0
- package/dist/test/MockFileSystem.js.map +1 -0
- package/dist/test/MockTheme.d.ts +16 -0
- package/dist/test/MockTheme.js +16 -0
- package/dist/test/MockTheme.js.map +1 -0
- package/dist/test/chai-offer-fix-assertion.d.ts +22 -0
- package/dist/test/chai-offer-fix-assertion.js +20 -0
- package/dist/test/chai-offer-fix-assertion.js.map +1 -0
- package/dist/test/chai-suggest-assertion.d.ts +22 -0
- package/dist/test/chai-suggest-assertion.js +29 -0
- package/dist/test/chai-suggest-assertion.js.map +1 -0
- package/dist/test/contain-offense.d.ts +12 -0
- package/dist/test/contain-offense.js +36 -0
- package/dist/test/contain-offense.js.map +1 -0
- package/dist/test/index.d.ts +3 -0
- package/dist/test/index.js +20 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/test-helper.d.ts +14 -0
- package/dist/test/test-helper.js +289 -0
- package/dist/test/test-helper.js.map +1 -0
- package/dist/test/test-setup.d.ts +9 -0
- package/dist/test/test-setup.js +26 -0
- package/dist/test/test-setup.js.map +1 -0
- package/dist/to-schema.d.ts +16 -0
- package/dist/to-schema.js +218 -0
- package/dist/to-schema.js.map +1 -0
- package/dist/to-source-code.d.ts +5 -0
- package/dist/to-source-code.js +103 -0
- package/dist/to-source-code.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/schema-prop-factory.d.ts +76 -0
- package/dist/types/schema-prop-factory.js +84 -0
- package/dist/types/schema-prop-factory.js.map +1 -0
- package/dist/types/schemas/index.d.ts +5 -0
- package/dist/types/schemas/index.js +6 -0
- package/dist/types/schemas/index.js.map +1 -0
- package/dist/types/schemas/preset.d.ts +38 -0
- package/dist/types/schemas/preset.js +3 -0
- package/dist/types/schemas/preset.js.map +1 -0
- package/dist/types/schemas/section.d.ts +49 -0
- package/dist/types/schemas/section.js +3 -0
- package/dist/types/schemas/section.js.map +1 -0
- package/dist/types/schemas/setting.d.ts +216 -0
- package/dist/types/schemas/setting.js +3 -0
- package/dist/types/schemas/setting.js.map +1 -0
- package/dist/types/schemas/template.d.ts +30 -0
- package/dist/types/schemas/template.js +3 -0
- package/dist/types/schemas/template.js.map +1 -0
- package/dist/types/schemas/theme-block.d.ts +24 -0
- package/dist/types/schemas/theme-block.js +3 -0
- package/dist/types/schemas/theme-block.js.map +1 -0
- package/dist/types/theme-liquid-docs.d.ts +131 -0
- package/dist/types/theme-liquid-docs.js +3 -0
- package/dist/types/theme-liquid-docs.js.map +1 -0
- package/dist/types/theme-schemas.d.ts +70 -0
- package/dist/types/theme-schemas.js +25 -0
- package/dist/types/theme-schemas.js.map +1 -0
- package/dist/types.d.ts +469 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/array.d.ts +5 -0
- package/dist/utils/array.js +28 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/block.d.ts +22 -0
- package/dist/utils/block.js +179 -0
- package/dist/utils/block.js.map +1 -0
- package/dist/utils/error.d.ts +2 -0
- package/dist/utils/error.js +44 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/file-utils.d.ts +6 -0
- package/dist/utils/file-utils.js +46 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.js +25 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/indexBy.d.ts +5 -0
- package/dist/utils/indexBy.js +15 -0
- package/dist/utils/indexBy.js.map +1 -0
- package/dist/utils/markup.d.ts +2 -0
- package/dist/utils/markup.js +10 -0
- package/dist/utils/markup.js.map +1 -0
- package/dist/utils/memo.d.ts +34 -0
- package/dist/utils/memo.js +61 -0
- package/dist/utils/memo.js.map +1 -0
- package/dist/utils/object.d.ts +1 -0
- package/dist/utils/object.js +7 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils/position.d.ts +3 -0
- package/dist/utils/position.js +20 -0
- package/dist/utils/position.js.map +1 -0
- package/dist/utils/types.d.ts +52 -0
- package/dist/utils/types.js +23 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/visitor.d.ts +24 -0
- package/dist/visitor.js +119 -0
- package/dist/visitor.js.map +1 -0
- package/dist/visitors/index.d.ts +2 -0
- package/dist/visitors/index.js +8 -0
- package/dist/visitors/index.js.map +1 -0
- package/dist/visitors/json.d.ts +2 -0
- package/dist/visitors/json.js +39 -0
- package/dist/visitors/json.js.map +1 -0
- package/dist/visitors/liquid.d.ts +2 -0
- package/dist/visitors/liquid.js +39 -0
- package/dist/visitors/liquid.js.map +1 -0
- package/package.json +45 -0
- package/src/AugmentedThemeDocset.spec.ts +148 -0
- package/src/AugmentedThemeDocset.ts +148 -0
- package/src/JSONValidator.ts +82 -0
- package/src/checks/app-block-missing-schema/index.spec.ts +121 -0
- package/src/checks/app-block-missing-schema/index.ts +46 -0
- package/src/checks/app-block-valid-tags/index.spec.ts +96 -0
- package/src/checks/app-block-valid-tags/index.ts +54 -0
- package/src/checks/asset-preload/index.spec.ts +78 -0
- package/src/checks/asset-preload/index.ts +65 -0
- package/src/checks/asset-size-app-block-css/index.spec.ts +88 -0
- package/src/checks/asset-size-app-block-css/index.ts +78 -0
- package/src/checks/asset-size-app-block-javascript/index.spec.ts +66 -0
- package/src/checks/asset-size-app-block-javascript/index.ts +78 -0
- package/src/checks/asset-size-css/index.spec.ts +166 -0
- package/src/checks/asset-size-css/index.ts +160 -0
- package/src/checks/asset-size-javascript/index.spec.ts +184 -0
- package/src/checks/asset-size-javascript/index.ts +144 -0
- package/src/checks/block-id-usage/index.spec.ts +76 -0
- package/src/checks/block-id-usage/index.ts +72 -0
- package/src/checks/cdn-preconnect/index.spec.ts +40 -0
- package/src/checks/cdn-preconnect/index.ts +43 -0
- package/src/checks/content-for-header-modification/index.spec.ts +65 -0
- package/src/checks/content-for-header-modification/index.ts +72 -0
- package/src/checks/deprecate-bgsizes/index.spec.ts +41 -0
- package/src/checks/deprecate-bgsizes/index.ts +49 -0
- package/src/checks/deprecate-lazysizes/index.spec.ts +26 -0
- package/src/checks/deprecate-lazysizes/index.ts +58 -0
- package/src/checks/deprecated-filter/fixes.ts +264 -0
- package/src/checks/deprecated-filter/index.spec.ts +274 -0
- package/src/checks/deprecated-filter/index.ts +113 -0
- package/src/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.ts +1343 -0
- package/src/checks/deprecated-fonts-on-sections-and-blocks/index.spec.ts +613 -0
- package/src/checks/deprecated-fonts-on-sections-and-blocks/index.ts +284 -0
- package/src/checks/deprecated-fonts-on-settings-schema/index.spec.ts +102 -0
- package/src/checks/deprecated-fonts-on-settings-schema/index.ts +66 -0
- package/src/checks/deprecated-tag/index.spec.ts +68 -0
- package/src/checks/deprecated-tag/index.ts +46 -0
- package/src/checks/duplicate-content-for-arguments/index.spec.ts +98 -0
- package/src/checks/duplicate-content-for-arguments/index.ts +43 -0
- package/src/checks/duplicate-function-arguments/index.spec.ts +98 -0
- package/src/checks/duplicate-function-arguments/index.ts +44 -0
- package/src/checks/duplicate-render-partial-arguments/index.spec.ts +120 -0
- package/src/checks/duplicate-render-partial-arguments/index.ts +48 -0
- package/src/checks/empty-block-content/index.spec.ts +117 -0
- package/src/checks/empty-block-content/index.ts +60 -0
- package/src/checks/graphql/index.ts +64 -0
- package/src/checks/graphql-variables/index.ts +113 -0
- package/src/checks/hardcoded-routes/index.spec.ts +58 -0
- package/src/checks/hardcoded-routes/index.ts +100 -0
- package/src/checks/img-width-and-height/index.spec.ts +79 -0
- package/src/checks/img-width-and-height/index.ts +52 -0
- package/src/checks/index.ts +160 -0
- package/src/checks/invalid-hash-assign-target/index.spec.ts +176 -0
- package/src/checks/invalid-hash-assign-target/index.ts +306 -0
- package/src/checks/json-missing-block/index.spec.ts +435 -0
- package/src/checks/json-missing-block/index.ts +56 -0
- package/src/checks/json-missing-block/missing-block-utils.ts +147 -0
- package/src/checks/json-syntax-error/index.spec.ts +64 -0
- package/src/checks/json-syntax-error/index.ts +92 -0
- package/src/checks/liquid-free-settings/index.spec.ts +180 -0
- package/src/checks/liquid-free-settings/index.ts +79 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpression.spec.ts +43 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.ts +29 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.spec.ts +385 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.ts +165 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.spec.ts +52 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.ts +39 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidEchoValue.spec.ts +108 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidEchoValue.ts +74 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidFilterName.spec.ts +223 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidFilterName.ts +92 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.spec.ts +145 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.ts +116 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidLoopRange.spec.ts +84 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidLoopRange.ts +79 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.spec.ts +184 -0
- package/src/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.ts +91 -0
- package/src/checks/liquid-html-syntax-error/checks/MultipleAssignValues.spec.ts +82 -0
- package/src/checks/liquid-html-syntax-error/checks/MultipleAssignValues.ts +86 -0
- package/src/checks/liquid-html-syntax-error/checks/utils.spec.ts +82 -0
- package/src/checks/liquid-html-syntax-error/checks/utils.ts +66 -0
- package/src/checks/liquid-html-syntax-error/index.spec.ts +129 -0
- package/src/checks/liquid-html-syntax-error/index.ts +152 -0
- package/src/checks/matching-translations/index.spec.ts +400 -0
- package/src/checks/matching-translations/index.ts +175 -0
- package/src/checks/metadata-params/index.spec.ts +103 -0
- package/src/checks/metadata-params/index.ts +119 -0
- package/src/checks/missing-asset/index.spec.ts +59 -0
- package/src/checks/missing-asset/index.ts +48 -0
- package/src/checks/missing-content-for-arguments/index.spec.ts +144 -0
- package/src/checks/missing-content-for-arguments/index.ts +46 -0
- package/src/checks/missing-template/index.spec.ts +61 -0
- package/src/checks/missing-template/index.ts +101 -0
- package/src/checks/orphaned-partial/index.spec.ts +58 -0
- package/src/checks/orphaned-partial/index.ts +43 -0
- package/src/checks/pagination-size/index.spec.ts +158 -0
- package/src/checks/pagination-size/index.ts +104 -0
- package/src/checks/parser-blocking-script/index.spec.ts +225 -0
- package/src/checks/parser-blocking-script/index.ts +91 -0
- package/src/checks/parser-blocking-script/suggestions.ts +42 -0
- package/src/checks/remote-asset/index.spec.ts +280 -0
- package/src/checks/remote-asset/index.ts +238 -0
- package/src/checks/reserved-doc-param-names/index.spec.ts +62 -0
- package/src/checks/reserved-doc-param-names/index.ts +57 -0
- package/src/checks/schema-presets-block-order/index.spec.ts +344 -0
- package/src/checks/schema-presets-block-order/index.ts +154 -0
- package/src/checks/schema-presets-static-blocks/index.spec.ts +145 -0
- package/src/checks/schema-presets-static-blocks/index.ts +126 -0
- package/src/checks/static-stylesheet-and-javascript-tags/index.spec.ts +257 -0
- package/src/checks/static-stylesheet-and-javascript-tags/index.ts +48 -0
- package/src/checks/translation-key-exists/index.spec.ts +44 -0
- package/src/checks/translation-key-exists/index.ts +78 -0
- package/src/checks/unclosed-html-element/index.spec.ts +260 -0
- package/src/checks/unclosed-html-element/index.ts +296 -0
- package/src/checks/undefined-object/index.spec.ts +519 -0
- package/src/checks/undefined-object/index.ts +336 -0
- package/src/checks/unique-doc-param-names/index.spec.ts +35 -0
- package/src/checks/unique-doc-param-names/index.ts +39 -0
- package/src/checks/unique-settings-id/index.spec.ts +24 -0
- package/src/checks/unique-settings-id/index.ts +84 -0
- package/src/checks/unique-settings-id/test-data.ts +1191 -0
- package/src/checks/unique-static-block-id/index.spec.ts +55 -0
- package/src/checks/unique-static-block-id/index.ts +60 -0
- package/src/checks/unknown-filter/index.spec.ts +59 -0
- package/src/checks/unknown-filter/index.ts +38 -0
- package/src/checks/unknown-property/index.spec.ts +234 -0
- package/src/checks/unknown-property/index.ts +468 -0
- package/src/checks/unknown-property/property-shape.ts +315 -0
- package/src/checks/unrecognized-content-for-arguments/index.spec.ts +145 -0
- package/src/checks/unrecognized-content-for-arguments/index.ts +55 -0
- package/src/checks/unrecognized-render-partial-arguments/index.spec.ts +184 -0
- package/src/checks/unrecognized-render-partial-arguments/index.ts +76 -0
- package/src/checks/unused-assign/index.spec.ts +160 -0
- package/src/checks/unused-assign/index.ts +87 -0
- package/src/checks/unused-doc-param/index.spec.ts +89 -0
- package/src/checks/unused-doc-param/index.ts +59 -0
- package/src/checks/utils.ts +117 -0
- package/src/checks/valid-block-target/index.spec.ts +1396 -0
- package/src/checks/valid-block-target/index.ts +142 -0
- package/src/checks/valid-content-for-argument-types/index.spec.ts +382 -0
- package/src/checks/valid-content-for-argument-types/index.ts +42 -0
- package/src/checks/valid-content-for-arguments/index.spec.ts +107 -0
- package/src/checks/valid-content-for-arguments/index.ts +98 -0
- package/src/checks/valid-doc-param-types/index.spec.ts +75 -0
- package/src/checks/valid-doc-param-types/index.ts +71 -0
- package/src/checks/valid-html-translation/index.spec.ts +74 -0
- package/src/checks/valid-html-translation/index.ts +45 -0
- package/src/checks/valid-json/index.spec.ts +102 -0
- package/src/checks/valid-json/index.ts +34 -0
- package/src/checks/valid-local-blocks/index.spec.ts +286 -0
- package/src/checks/valid-local-blocks/index.ts +100 -0
- package/src/checks/valid-local-blocks/valid-block-utils.ts +97 -0
- package/src/checks/valid-render-partial-argument-types/index.spec.ts +468 -0
- package/src/checks/valid-render-partial-argument-types/index.ts +89 -0
- package/src/checks/valid-schema/index.spec.ts +174 -0
- package/src/checks/valid-schema/index.ts +41 -0
- package/src/checks/valid-schema-name/index.spec.ts +112 -0
- package/src/checks/valid-schema-name/index.ts +75 -0
- package/src/checks/valid-settings-key/index.spec.ts +321 -0
- package/src/checks/valid-settings-key/index.ts +144 -0
- package/src/checks/valid-static-block-type/index.spec.ts +38 -0
- package/src/checks/valid-static-block-type/index.ts +58 -0
- package/src/checks/valid-visible-if/index.spec.ts +619 -0
- package/src/checks/valid-visible-if/index.ts +184 -0
- package/src/checks/valid-visible-if/visible-if-utils.ts +158 -0
- package/src/checks/variable-name/index.spec.ts +62 -0
- package/src/checks/variable-name/index.ts +115 -0
- package/src/context-utils.spec.ts +103 -0
- package/src/context-utils.ts +220 -0
- package/src/create-safe-check.ts +13 -0
- package/src/disabled-checks/index.spec.ts +262 -0
- package/src/disabled-checks/index.ts +189 -0
- package/src/disabled-checks/test-checks.ts +60 -0
- package/src/find-root.ts +60 -0
- package/src/fixes/apply-fix-to-string.spec.ts +52 -0
- package/src/fixes/apply-fix-to-string.ts +59 -0
- package/src/fixes/autofix.spec.ts +85 -0
- package/src/fixes/autofix.ts +41 -0
- package/src/fixes/corrector.ts +0 -0
- package/src/fixes/correctors/base-corrector.ts +5 -0
- package/src/fixes/correctors/graphql-corrector.ts +78 -0
- package/src/fixes/correctors/index.ts +29 -0
- package/src/fixes/correctors/json-corrector.spec.ts +111 -0
- package/src/fixes/correctors/json-corrector.ts +106 -0
- package/src/fixes/correctors/string-corrector.ts +78 -0
- package/src/fixes/index.ts +4 -0
- package/src/fixes/utils.ts +6 -0
- package/src/ignore.spec.ts +202 -0
- package/src/ignore.ts +23 -0
- package/src/index.spec.ts +8 -0
- package/src/index.ts +234 -0
- package/src/json.spec.ts +140 -0
- package/src/json.ts +81 -0
- package/src/jsonc/parse.spec.ts +118 -0
- package/src/jsonc/parse.ts +121 -0
- package/src/jsonc/types.ts +47 -0
- package/src/liquid-doc/arguments.spec.ts +146 -0
- package/src/liquid-doc/arguments.ts +315 -0
- package/src/liquid-doc/liquidDoc.spec.ts +296 -0
- package/src/liquid-doc/liquidDoc.ts +147 -0
- package/src/liquid-doc/utils.spec.ts +23 -0
- package/src/liquid-doc/utils.ts +125 -0
- package/src/path.ts +45 -0
- package/src/tags/content-for.ts +25 -0
- package/src/test/MockFileSystem.spec.ts +71 -0
- package/src/test/MockFileSystem.ts +87 -0
- package/src/test/MockTheme.ts +17 -0
- package/src/test/chai-offer-fix-assertion.spec.ts +53 -0
- package/src/test/chai-offer-fix-assertion.ts +45 -0
- package/src/test/chai-suggest-assertion.spec.ts +53 -0
- package/src/test/chai-suggest-assertion.ts +62 -0
- package/src/test/contain-offense.spec.ts +74 -0
- package/src/test/contain-offense.ts +54 -0
- package/src/test/index.ts +3 -0
- package/src/test/test-helper.ts +327 -0
- package/src/test/test-setup.ts +36 -0
- package/src/to-schema.ts +231 -0
- package/src/to-source-code.ts +75 -0
- package/src/types/schema-prop-factory.ts +112 -0
- package/src/types/schemas/index.ts +5 -0
- package/src/types/schemas/preset.ts +52 -0
- package/src/types/schemas/section.ts +86 -0
- package/src/types/schemas/setting.ts +320 -0
- package/src/types/schemas/template.ts +34 -0
- package/src/types/schemas/theme-block.ts +34 -0
- package/src/types/theme-liquid-docs.ts +184 -0
- package/src/types/theme-schemas.ts +80 -0
- package/src/types.ts +617 -0
- package/src/utils/array.ts +31 -0
- package/src/utils/block.ts +300 -0
- package/src/utils/error.spec.ts +71 -0
- package/src/utils/error.ts +48 -0
- package/src/utils/file-utils.ts +58 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/indexBy.ts +14 -0
- package/src/utils/markup.ts +10 -0
- package/src/utils/memo.spec.ts +83 -0
- package/src/utils/memo.ts +80 -0
- package/src/utils/object.ts +3 -0
- package/src/utils/position.ts +16 -0
- package/src/utils/types.ts +57 -0
- package/src/visitor.spec.ts +163 -0
- package/src/visitor.ts +161 -0
- package/src/visitors/index.ts +2 -0
- package/src/visitors/json.ts +41 -0
- package/src/visitors/liquid.ts +40 -0
- package/tsconfig.build.json +8 -0
- package/tsconfig.json +31 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
import { LiquidHtmlNode, NodeTypes as LiquidHtmlNodeTypes } from '@platformos/liquid-html-parser';
|
|
2
|
+
|
|
3
|
+
import { Schema, Settings } from './types/schema-prop-factory';
|
|
4
|
+
|
|
5
|
+
import { AbstractFileSystem, UriString } from '@platformos/platformos-common';
|
|
6
|
+
import { JSONCorrector, StringCorrector } from './fixes';
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
ArrayNode,
|
|
10
|
+
ASTNode,
|
|
11
|
+
JSONNode,
|
|
12
|
+
JSONNodeTypes,
|
|
13
|
+
LiteralNode,
|
|
14
|
+
ObjectNode,
|
|
15
|
+
PropertyNode,
|
|
16
|
+
ValueNode,
|
|
17
|
+
} from './jsonc/types';
|
|
18
|
+
import { JsonValidationSet, ThemeDocset } from './types/theme-liquid-docs';
|
|
19
|
+
import { AppBlockSchema, SectionSchema, ThemeBlockSchema } from './types/theme-schemas';
|
|
20
|
+
import { DocDefinition } from './liquid-doc/liquidDoc';
|
|
21
|
+
import { GraphQLCorrector } from './fixes/correctors/graphql-corrector';
|
|
22
|
+
|
|
23
|
+
export * from './jsonc/types';
|
|
24
|
+
export * from './types/schema-prop-factory';
|
|
25
|
+
export * from './types/theme-liquid-docs';
|
|
26
|
+
export * from './types/theme-schemas';
|
|
27
|
+
|
|
28
|
+
export const isObjectNode = (node?: ASTNode): node is ObjectNode => node?.type === 'Object';
|
|
29
|
+
export const isArrayNode = (node?: ASTNode): node is ArrayNode => node?.type === 'Array';
|
|
30
|
+
export const isPropertyNode = (node?: ASTNode): node is PropertyNode => node?.type === 'Property';
|
|
31
|
+
export const isValueNode = (node?: ASTNode): node is ValueNode => node?.type === 'Value';
|
|
32
|
+
export const isLiteralNode = (node?: ASTNode): node is LiteralNode => node?.type === 'Literal';
|
|
33
|
+
|
|
34
|
+
export const Modes = ['theme', 'app'] as const;
|
|
35
|
+
export type Mode = (typeof Modes)[number];
|
|
36
|
+
export type Theme = SourceCode<SourceCodeType>[];
|
|
37
|
+
|
|
38
|
+
export type SourceCode<T = SourceCodeType> = T extends SourceCodeType
|
|
39
|
+
? {
|
|
40
|
+
/** A normalized uri the file. */
|
|
41
|
+
uri: string;
|
|
42
|
+
/** The type is used as a discriminant for type narrowing */
|
|
43
|
+
type: T;
|
|
44
|
+
/** The version is used by the Language Server to make sure the Client and Server are in sync */
|
|
45
|
+
version?: number;
|
|
46
|
+
/** The contents of the file */
|
|
47
|
+
source: string;
|
|
48
|
+
/** The AST representation of the file, or an Error instance when the file is unparseable */
|
|
49
|
+
ast: AST[T] | Error;
|
|
50
|
+
}
|
|
51
|
+
: never;
|
|
52
|
+
export enum SourceCodeType {
|
|
53
|
+
JSON = 'JSON',
|
|
54
|
+
LiquidHtml = 'LiquidHtml',
|
|
55
|
+
GraphQL = 'GraphQL',
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type LiquidSourceCode = SourceCode<SourceCodeType.LiquidHtml>;
|
|
59
|
+
export type PartialSourceCode = SourceCode<SourceCodeType.LiquidHtml> &
|
|
60
|
+
PlatformOSFile & {
|
|
61
|
+
kind: 'Partial';
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export type PageLiquidSourceCode = SourceCode<SourceCodeType.LiquidHtml> &
|
|
65
|
+
PlatformOSFile & {
|
|
66
|
+
kind: 'Page';
|
|
67
|
+
route: string;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export type LiquidCheckDefinition<S extends Schema = Schema> = CheckDefinition<
|
|
71
|
+
SourceCodeType.LiquidHtml,
|
|
72
|
+
S
|
|
73
|
+
>;
|
|
74
|
+
export type LiquidCheck = Check<SourceCodeType.LiquidHtml>;
|
|
75
|
+
|
|
76
|
+
export { LiquidHtmlNode, LiquidHtmlNodeTypes };
|
|
77
|
+
|
|
78
|
+
export type JSONSourceCode = SourceCode<SourceCodeType.JSON>;
|
|
79
|
+
export type JSONCheckDefinition<S extends Schema = Schema> = CheckDefinition<
|
|
80
|
+
SourceCodeType.JSON,
|
|
81
|
+
S
|
|
82
|
+
>;
|
|
83
|
+
export type JSONCheck = Check<SourceCodeType.JSON>;
|
|
84
|
+
|
|
85
|
+
export interface PlatformOSFile {
|
|
86
|
+
name: string;
|
|
87
|
+
module_name: string;
|
|
88
|
+
path: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface GraphQLDocumentNode {
|
|
92
|
+
type: 'Document';
|
|
93
|
+
content: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// AST[SourceCodeType.LiquidHtml] maps to LiquidHtmlNode
|
|
97
|
+
export type AST = {
|
|
98
|
+
[T in SourceCodeType]: {
|
|
99
|
+
[SourceCodeType.JSON]: JSONNode;
|
|
100
|
+
[SourceCodeType.LiquidHtml]: LiquidHtmlNode;
|
|
101
|
+
[SourceCodeType.GraphQL]: GraphQLDocumentNode;
|
|
102
|
+
}[T];
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export type NodeTypes = {
|
|
106
|
+
[T in SourceCodeType]: {
|
|
107
|
+
[SourceCodeType.JSON]: JSONNodeTypes;
|
|
108
|
+
[SourceCodeType.LiquidHtml]: LiquidHtmlNodeTypes;
|
|
109
|
+
[SourceCodeType.GraphQL]: 'Document';
|
|
110
|
+
}[T];
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/** A vscode-uri string. */
|
|
114
|
+
export type { UriString };
|
|
115
|
+
|
|
116
|
+
/** Assumes forward slashes for simplicity internally */
|
|
117
|
+
export type RelativePath = string;
|
|
118
|
+
|
|
119
|
+
export type ChecksSettings = {
|
|
120
|
+
[code in string]?: CheckSettings;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export type CheckSettings = {
|
|
124
|
+
enabled: boolean;
|
|
125
|
+
severity?: Severity;
|
|
126
|
+
ignore?: string[];
|
|
127
|
+
} & {
|
|
128
|
+
[key in string]: any;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
export type GraphQLSourceCode = SourceCode<SourceCodeType.GraphQL>;
|
|
132
|
+
export type GraphQLCheck = Check<SourceCodeType.GraphQL>;
|
|
133
|
+
export type GraphQLCheckDefinition<S extends Schema = Schema> = CheckDefinition<
|
|
134
|
+
SourceCodeType.GraphQL,
|
|
135
|
+
S
|
|
136
|
+
>;
|
|
137
|
+
|
|
138
|
+
export interface Config {
|
|
139
|
+
// I know, it's `context` in the config and `Mode` in the code...
|
|
140
|
+
// We already have something named "Context" internally when you're writing a check.
|
|
141
|
+
// I don't like "Mode" as a public API in the configs. Context sounds more Shopify-y.
|
|
142
|
+
// So we have `context: theme` and `context: app` as valid .theme-check.yml configs.
|
|
143
|
+
// I think it's rather obvious what they mean.
|
|
144
|
+
context: Mode;
|
|
145
|
+
settings: ChecksSettings;
|
|
146
|
+
checks: CheckDefinition<SourceCodeType, Schema>[];
|
|
147
|
+
rootUri: string; // e.g. file:///path-to-root
|
|
148
|
+
ignore?: string[];
|
|
149
|
+
onError?: (error: Error) => void;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export type NodeOfType<T extends SourceCodeType, NT> = Extract<AST[T], { type: NT }>;
|
|
153
|
+
export type LiquidHtmlNodeOfType<T> = NodeOfType<SourceCodeType.LiquidHtml, T>;
|
|
154
|
+
export type JSONNodeOfType<T> = NodeOfType<SourceCodeType.LiquidHtml, T>;
|
|
155
|
+
|
|
156
|
+
// Very intentionally eslint-like. Not reinventing the wheel + makes the
|
|
157
|
+
// eslint plugin writing skills transferable.
|
|
158
|
+
//
|
|
159
|
+
// The conditional type here is used to distribute the union if
|
|
160
|
+
// CheckDefinition is used with the enum instead of a specific enum value.
|
|
161
|
+
//
|
|
162
|
+
// That is, we want (CheckDefinition<JSON> | CheckDefinition<LiquidHTML>)[]
|
|
163
|
+
// we don't want (CheckDefinition<JSON | LiquidHtml>)[]
|
|
164
|
+
export type CheckDefinition<
|
|
165
|
+
T = SourceCodeType,
|
|
166
|
+
S extends Schema = Schema,
|
|
167
|
+
> = T extends SourceCodeType
|
|
168
|
+
? {
|
|
169
|
+
/**
|
|
170
|
+
* The meta object holds information about the check.
|
|
171
|
+
* Its name, documentation, severity, etc.
|
|
172
|
+
*/
|
|
173
|
+
meta: {
|
|
174
|
+
/** A human readable name for the check */
|
|
175
|
+
name: string;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* A code for the check (shortname without spaces).
|
|
179
|
+
*
|
|
180
|
+
* Used in configurations and IDEs.
|
|
181
|
+
*
|
|
182
|
+
* Should be unique.
|
|
183
|
+
*/
|
|
184
|
+
code: string;
|
|
185
|
+
|
|
186
|
+
/** For backwards compatibility, alternative code names for the check */
|
|
187
|
+
aliases?: string[];
|
|
188
|
+
|
|
189
|
+
/** The severity determines the icon and color of diagnostics */
|
|
190
|
+
severity: Severity.ERROR | Severity.WARNING | Severity.INFO;
|
|
191
|
+
|
|
192
|
+
/** Which AST type the check targets, must be one of SourceCodeType. */
|
|
193
|
+
type: T;
|
|
194
|
+
|
|
195
|
+
/** Human readable short description of the check as well as link to documentation. */
|
|
196
|
+
docs: {
|
|
197
|
+
description: string;
|
|
198
|
+
recommended?: boolean;
|
|
199
|
+
url?: string;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Schema of settings passed to your check.
|
|
204
|
+
*
|
|
205
|
+
* Used to support validations of your setting values, documentation,
|
|
206
|
+
* and IDE support.
|
|
207
|
+
*/
|
|
208
|
+
schema: Schema;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* An optional array that determines which yaml configs will have this check enabled.
|
|
212
|
+
*
|
|
213
|
+
* When no values are given, this check will be `enabled: true` in the `all.yml` configuration
|
|
214
|
+
*
|
|
215
|
+
* When values are given, this check will be `enabled: false` in the `all.yml` configuration
|
|
216
|
+
* and `enabled: true` within all yaml configurations with a matching filename.
|
|
217
|
+
*
|
|
218
|
+
* Note: theme-app-extension target is deprecated (Shopify-specific)
|
|
219
|
+
*/
|
|
220
|
+
targets?: ConfigTarget[];
|
|
221
|
+
|
|
222
|
+
deprecated?: boolean;
|
|
223
|
+
replacedBy?: boolean;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* A function that returns a Check, the function scope is a good place to
|
|
228
|
+
* initialize state for a run.
|
|
229
|
+
*
|
|
230
|
+
* - One check is created per file
|
|
231
|
+
* - The state is not shared while traversing all files
|
|
232
|
+
* - To report problems, use the context.report method.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
*
|
|
236
|
+
* create(context) {
|
|
237
|
+
* const tags = []
|
|
238
|
+
*
|
|
239
|
+
* return {
|
|
240
|
+
* async LiquidTag(node) {
|
|
241
|
+
* tags.push(node);
|
|
242
|
+
* },
|
|
243
|
+
*
|
|
244
|
+
* async onCodePathEnd() {
|
|
245
|
+
* tags.forEach(tag => {
|
|
246
|
+
* ...
|
|
247
|
+
* });
|
|
248
|
+
* },
|
|
249
|
+
* }
|
|
250
|
+
* }
|
|
251
|
+
*/
|
|
252
|
+
create(context: Context<T, S>): Partial<Check<T>>;
|
|
253
|
+
}
|
|
254
|
+
: never;
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* A Check is an object that defines visitor methods by node type.
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* {
|
|
261
|
+
* async onCodePathStart(file) {
|
|
262
|
+
* // Happens at the very beginning
|
|
263
|
+
* },
|
|
264
|
+
*
|
|
265
|
+
* AssignMarkup: async (node, file) => {
|
|
266
|
+
* // Happens once per node, while going down the tree
|
|
267
|
+
* },
|
|
268
|
+
*
|
|
269
|
+
* "AssignMarkup:exit": async (node, file) => {
|
|
270
|
+
* // Happens once per node, in reverse order
|
|
271
|
+
* },
|
|
272
|
+
*
|
|
273
|
+
* async onCodePathEnd(file) {
|
|
274
|
+
* // Happens at the very end
|
|
275
|
+
* }
|
|
276
|
+
* }
|
|
277
|
+
*/
|
|
278
|
+
export type Check<T> = T extends SourceCodeType
|
|
279
|
+
? Partial<CheckNodeMethods<T> & CheckExitMethods<T> & CheckLifecycleMethods<T>>
|
|
280
|
+
: never;
|
|
281
|
+
|
|
282
|
+
export type CheckNodeMethod<T extends SourceCodeType, NT> = (
|
|
283
|
+
node: NodeOfType<T, NT>,
|
|
284
|
+
ancestors: AST[T][],
|
|
285
|
+
) => Promise<void>;
|
|
286
|
+
|
|
287
|
+
type CheckNodeMethods<T extends SourceCodeType> = {
|
|
288
|
+
/** Happens once per node, while going down the tree */
|
|
289
|
+
[NT in NodeTypes[T]]: CheckNodeMethod<T, NT>;
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
type CheckExitMethods<T extends SourceCodeType> = {
|
|
293
|
+
/** Happens once per node, in reverse order */
|
|
294
|
+
[NT in NodeTypes[T] as `${NT}:exit`]: CheckNodeMethod<T, NT>;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
type CheckLifecycleMethods<T extends SourceCodeType> = {
|
|
298
|
+
/** Happens before traversing a file, file might be unparseable */
|
|
299
|
+
onCodePathStart(file: SourceCode<T>): Promise<void>;
|
|
300
|
+
|
|
301
|
+
/** Happens after traversing a file, file is guaranteed to exist */
|
|
302
|
+
onCodePathEnd(file: SourceCode<T> & { ast: AST[T] }): Promise<void>;
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
export type MetafieldCategory =
|
|
306
|
+
| 'article'
|
|
307
|
+
| 'blog'
|
|
308
|
+
| 'collection'
|
|
309
|
+
| 'company'
|
|
310
|
+
| 'company_location'
|
|
311
|
+
| 'location'
|
|
312
|
+
| 'market'
|
|
313
|
+
| 'order'
|
|
314
|
+
| 'page'
|
|
315
|
+
| 'product'
|
|
316
|
+
| 'variant'
|
|
317
|
+
| 'shop';
|
|
318
|
+
|
|
319
|
+
export type MetafieldDefinitionMap = {
|
|
320
|
+
[key in MetafieldCategory]: MetafieldDefinition[];
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
export type MetafieldDefinition = {
|
|
324
|
+
key: string;
|
|
325
|
+
name: string;
|
|
326
|
+
namespace: string;
|
|
327
|
+
description: string;
|
|
328
|
+
type: MetafieldDefinitionType;
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
type MetafieldDefinitionType = {
|
|
332
|
+
category: string;
|
|
333
|
+
name: string;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
export type Translations = {
|
|
337
|
+
[k in string]: string | Translations;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* A reference is a link between two modules.
|
|
342
|
+
*
|
|
343
|
+
* @example
|
|
344
|
+
*
|
|
345
|
+
* It could be a specific range that points to a whole file
|
|
346
|
+
* {
|
|
347
|
+
* source: { uri: 'file:///templates/index.json', range: [167, 190] },
|
|
348
|
+
* target: 'file:///sections/custom-section.liquid'
|
|
349
|
+
* }
|
|
350
|
+
*
|
|
351
|
+
* It could be a specific range that points to a specific range
|
|
352
|
+
* {
|
|
353
|
+
* // e.g. `<parent-component></parent-component>`
|
|
354
|
+
* source: { uri: 'file:///app/views/partials/parent.liquid', range: [167, 190] },
|
|
355
|
+
*
|
|
356
|
+
* // e.g. window.customElements.define('parent-component', ParentComponent);
|
|
357
|
+
* target: { uri: 'file:///assets/theme.js', range: [0, undefined] }
|
|
358
|
+
* }
|
|
359
|
+
*/
|
|
360
|
+
export type Reference = {
|
|
361
|
+
source: Location;
|
|
362
|
+
target: Location;
|
|
363
|
+
|
|
364
|
+
type:
|
|
365
|
+
| 'direct' // explicit dependency, e.g. {% render 'child' %}
|
|
366
|
+
| 'indirect' // indirect dependency, e.g. "blocks": [{ "type": "@theme" }]
|
|
367
|
+
| 'preset'; // preset dependency
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
export type Range = [start: number, end: number]; // represents a range in the source code
|
|
371
|
+
export type Location = {
|
|
372
|
+
/** The URI of the module */
|
|
373
|
+
uri: UriString;
|
|
374
|
+
/** Optional range inside that module */
|
|
375
|
+
range?: Range;
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
export interface Dependencies {
|
|
379
|
+
/** The file system abstraction used to read files. */
|
|
380
|
+
fs: AbstractFileSystem;
|
|
381
|
+
|
|
382
|
+
/** The typing information */
|
|
383
|
+
themeDocset?: ThemeDocset;
|
|
384
|
+
|
|
385
|
+
/** The blocks/sections JSON schemas */
|
|
386
|
+
jsonValidationSet?: JsonValidationSet;
|
|
387
|
+
|
|
388
|
+
/** Returns the typing information for the theme's metafields */
|
|
389
|
+
getMetafieldDefinitions?: (rootUri: UriString) => Promise<MetafieldDefinitionMap>;
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Asynchronously get the block schema for 'blocks/${name}.liquid'
|
|
393
|
+
* May return undefined when the theme isn't preloaded.
|
|
394
|
+
* See {@link ThemeBlockSchema} for more information
|
|
395
|
+
*/
|
|
396
|
+
getBlockSchema?: (name: string) => Promise<ThemeBlockSchema | undefined>;
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Asynchronously get the section schema for 'section/${name}.liquid'
|
|
400
|
+
* May return undefined when the theme isn't preloaded or if there are none.
|
|
401
|
+
* See {@link SectionSchema} for more information
|
|
402
|
+
*/
|
|
403
|
+
getSectionSchema?: (name: string) => Promise<SectionSchema | undefined>;
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* (In theme app extension mode)
|
|
407
|
+
* Asynchronously get the block schema for 'blocks/${name}.liquid'
|
|
408
|
+
* May return undefined when the theme isn't preloaded.
|
|
409
|
+
* See {@link AppBlockSchema} for more information
|
|
410
|
+
*/
|
|
411
|
+
getAppBlockSchema?: (name: string) => Promise<AppBlockSchema | undefined>;
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Asynchronously get the Liquid HTML AST for a file.
|
|
415
|
+
* May return undefined when the theme isn't preloaded.
|
|
416
|
+
*
|
|
417
|
+
* Used in theme-checks for cross-file checks rather that going through fs.
|
|
418
|
+
*/
|
|
419
|
+
getDocDefinition?: (relativePath: string) => Promise<DocDefinition | undefined>;
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Get references to a file (which files reference this file)
|
|
423
|
+
* Returns an empty array if no files reference this file
|
|
424
|
+
*/
|
|
425
|
+
getReferences?: (uri: string) => Promise<Reference[]>;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
export type ValidateJSON = (
|
|
429
|
+
uri: string,
|
|
430
|
+
jsonString: string,
|
|
431
|
+
) => Promise<{ message: string; startIndex: number; endIndex: number }[]>;
|
|
432
|
+
|
|
433
|
+
export type IsValidSchema = (uri: string, jsonString: string) => Promise<boolean>;
|
|
434
|
+
|
|
435
|
+
export interface AugmentedDependencies extends Dependencies {
|
|
436
|
+
fileExists: (uri: UriString) => Promise<boolean>;
|
|
437
|
+
fileSize: (uri: UriString) => Promise<number>;
|
|
438
|
+
getDefaultLocale: () => Promise<string>;
|
|
439
|
+
getDefaultSchemaLocale: () => Promise<string>;
|
|
440
|
+
getDefaultTranslations(): Promise<Translations>;
|
|
441
|
+
getDefaultSchemaTranslations(): Promise<Translations>;
|
|
442
|
+
mode: Mode;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
type StaticContextProperties<T extends SourceCodeType> = T extends SourceCodeType
|
|
446
|
+
? {
|
|
447
|
+
report(problem: Problem<T>): void;
|
|
448
|
+
toRelativePath(uri: UriString): RelativePath;
|
|
449
|
+
toUri(relativePath: RelativePath): UriString;
|
|
450
|
+
file: SourceCode<T>;
|
|
451
|
+
validateJSON?: ValidateJSON;
|
|
452
|
+
}
|
|
453
|
+
: never;
|
|
454
|
+
|
|
455
|
+
export type Context<T extends SourceCodeType, S extends Schema = Schema> = T extends SourceCodeType
|
|
456
|
+
? StaticContextProperties<T> & AugmentedDependencies & { settings: Settings<S>; config: Config }
|
|
457
|
+
: never;
|
|
458
|
+
|
|
459
|
+
export type Corrector<T extends SourceCodeType> = T extends SourceCodeType
|
|
460
|
+
? {
|
|
461
|
+
[SourceCodeType.JSON]: JSONCorrector;
|
|
462
|
+
[SourceCodeType.LiquidHtml]: StringCorrector;
|
|
463
|
+
[SourceCodeType.GraphQL]: GraphQLCorrector;
|
|
464
|
+
}[T]
|
|
465
|
+
: never;
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* A Fixer is a function that returns a Fix (a data representation of the change).
|
|
469
|
+
*
|
|
470
|
+
* The Corrector module is helpful for creating Fix objects.
|
|
471
|
+
*/
|
|
472
|
+
export type Fixer<T extends SourceCodeType> = T extends SourceCodeType
|
|
473
|
+
? (corrector: Corrector<T>) => void
|
|
474
|
+
: never;
|
|
475
|
+
export type LiquidHtmlFixer = Fixer<SourceCodeType.LiquidHtml>;
|
|
476
|
+
export type JSONFixer = Fixer<SourceCodeType.JSON>;
|
|
477
|
+
export type GraphQLFixer = Fixer<SourceCodeType.GraphQL>;
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* A data representation of a collection of changes to a document. They all
|
|
481
|
+
* assume that they operate on the initial string independently.
|
|
482
|
+
*
|
|
483
|
+
* It is recursive so that fixes can be grouped together.
|
|
484
|
+
*/
|
|
485
|
+
export type Fix = FixDescription | Fix[];
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* A data representation of a change to a document.
|
|
489
|
+
*
|
|
490
|
+
* To insert:
|
|
491
|
+
* - startIndex: x, endIndex: x, insert: insertion
|
|
492
|
+
*
|
|
493
|
+
* To replace:
|
|
494
|
+
* - startIndex: x, endIndex: y, insert: replacement
|
|
495
|
+
*
|
|
496
|
+
* To delete:
|
|
497
|
+
* - startIndex: x, endIndex: y, insert: ''
|
|
498
|
+
*/
|
|
499
|
+
export interface FixDescription {
|
|
500
|
+
/** 0-based index, included */
|
|
501
|
+
startIndex: number;
|
|
502
|
+
/** 0-based index, excluded */
|
|
503
|
+
endIndex: number;
|
|
504
|
+
/** What to replace the contents of the range with. To delete, put entry string. */
|
|
505
|
+
insert: string;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* The FixApplicator is a function that takes a list of FixDescription and
|
|
510
|
+
* applies them on the source to produce a result.
|
|
511
|
+
*
|
|
512
|
+
* - In a CLI context, this might be changeString().then(saveFile)
|
|
513
|
+
* - In the Language Server, this function will collect the TextEdit[]
|
|
514
|
+
* before sending them as a WorkspaceEdit
|
|
515
|
+
*
|
|
516
|
+
* It is assumed that all FixDescription are all applied to the initial
|
|
517
|
+
* document, and not the one produced by previous FixDescription.
|
|
518
|
+
*
|
|
519
|
+
* It is the FixApplicator's job to throw an error if the FixDescription
|
|
520
|
+
* array contains overlapping ranges.
|
|
521
|
+
*
|
|
522
|
+
* It is the FixApplicator's job to change the location of fixes as indexes
|
|
523
|
+
* drift. See [1] and [2] for inspiration, we're following the same
|
|
524
|
+
* pattern.
|
|
525
|
+
*
|
|
526
|
+
* [1]: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEditArray
|
|
527
|
+
* [2]: https://codemirror.net/docs/ref/#state.EditorState.update
|
|
528
|
+
*/
|
|
529
|
+
export interface FixApplicator {
|
|
530
|
+
(source: SourceCode<SourceCodeType>, fixes: Fix): Promise<void>;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* A suggestion is a Fix that we cannot apply automatically. Perhaps
|
|
535
|
+
* because there are multiple options or because the fix is dangerous and
|
|
536
|
+
* requires care.
|
|
537
|
+
*
|
|
538
|
+
* To be used by code editors.
|
|
539
|
+
*/
|
|
540
|
+
export type Suggestion<T extends SourceCodeType> = T extends SourceCodeType
|
|
541
|
+
? {
|
|
542
|
+
message: string;
|
|
543
|
+
fix: Fixer<T>;
|
|
544
|
+
}
|
|
545
|
+
: never;
|
|
546
|
+
|
|
547
|
+
export type LiquidHtmlSuggestion = Suggestion<SourceCodeType.LiquidHtml>;
|
|
548
|
+
export type JSONSuggestion = Suggestion<SourceCodeType.JSON>;
|
|
549
|
+
|
|
550
|
+
export type Problem<T extends SourceCodeType> = T extends SourceCodeType
|
|
551
|
+
? {
|
|
552
|
+
/** The description of the problem shown to the user */
|
|
553
|
+
message: string;
|
|
554
|
+
|
|
555
|
+
/** 0-indexed, included */
|
|
556
|
+
startIndex: number;
|
|
557
|
+
|
|
558
|
+
/** 0-indexed, excluded */
|
|
559
|
+
endIndex: number;
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* The fix attribute is used to provide a "autofix" rule
|
|
563
|
+
* to the offense. It is reserved for safe changes.
|
|
564
|
+
* Unsafe changes should go in `suggest`.
|
|
565
|
+
*/
|
|
566
|
+
fix?: Fixer<T>;
|
|
567
|
+
|
|
568
|
+
/**
|
|
569
|
+
* Sometimes, it's not appropriate to automatically apply a fix either
|
|
570
|
+
* because it is not safe, or because there are multiple ways to fix it.
|
|
571
|
+
*
|
|
572
|
+
* For instance, we can't know if you'd want to fix a parser blocking
|
|
573
|
+
* script with `defer` or with `async`. The suggest array allows us to
|
|
574
|
+
* provide fixes for either and the user can choose which one they want.
|
|
575
|
+
*/
|
|
576
|
+
suggest?: Suggestion<T>[];
|
|
577
|
+
}
|
|
578
|
+
: never;
|
|
579
|
+
|
|
580
|
+
export type Offense<T extends SourceCodeType = SourceCodeType> = T extends SourceCodeType
|
|
581
|
+
? {
|
|
582
|
+
type: T;
|
|
583
|
+
check: string;
|
|
584
|
+
message: string;
|
|
585
|
+
uri: string;
|
|
586
|
+
severity: Severity;
|
|
587
|
+
start: Position;
|
|
588
|
+
end: Position;
|
|
589
|
+
fix?: Fixer<T>;
|
|
590
|
+
suggest?: Suggestion<T>[];
|
|
591
|
+
}
|
|
592
|
+
: never;
|
|
593
|
+
|
|
594
|
+
export interface Position {
|
|
595
|
+
/** 0-indexed */
|
|
596
|
+
index: number;
|
|
597
|
+
|
|
598
|
+
/** 1-indexed */
|
|
599
|
+
get line(): number;
|
|
600
|
+
|
|
601
|
+
/** 0-indexed */
|
|
602
|
+
get character(): number;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/** The severity determines the icon and color of diagnostics */
|
|
606
|
+
export enum Severity {
|
|
607
|
+
ERROR = 0,
|
|
608
|
+
WARNING = 1,
|
|
609
|
+
INFO = 2,
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
/** The yaml configurations to target checks */
|
|
613
|
+
export enum ConfigTarget {
|
|
614
|
+
All = 'all',
|
|
615
|
+
Recommended = 'recommended',
|
|
616
|
+
ThemeAppExtension = 'theme-app-extension',
|
|
617
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function first<T>(arr: T[]): T | undefined {
|
|
2
|
+
return arr[0];
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function last<T>(arr: T[], offset: number = 0): T | undefined {
|
|
6
|
+
return arr[arr.length - 1 + offset];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function findLast<T, NT extends T>(array: T[], pred: (n: T) => n is NT): NT | undefined;
|
|
10
|
+
export function findLast<T>(array: T[], pred: (n: T) => boolean): T | undefined {
|
|
11
|
+
return array[findLastIndex(array, pred)];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function findLastIndex<T>(array: T[], pred: (n: T) => boolean): number {
|
|
15
|
+
for (let i = array.length - 1; i >= 0; i--) {
|
|
16
|
+
if (pred(array[i])) return i;
|
|
17
|
+
}
|
|
18
|
+
return -1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function findLastAndIndex<T, NT extends T>(
|
|
22
|
+
array: T[],
|
|
23
|
+
pred: (n: T) => n is NT,
|
|
24
|
+
): [NT, number] | [undefined, -1];
|
|
25
|
+
export function findLastAndIndex<T>(
|
|
26
|
+
array: T[],
|
|
27
|
+
pred: (n: T) => boolean,
|
|
28
|
+
): [T, number] | [undefined, -1] {
|
|
29
|
+
const index = findLastIndex(array, pred);
|
|
30
|
+
return [array[index], index];
|
|
31
|
+
}
|