@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.
Files changed (708) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +92 -0
  3. package/dist/AugmentedThemeDocset.d.ts +12 -0
  4. package/dist/AugmentedThemeDocset.js +126 -0
  5. package/dist/AugmentedThemeDocset.js.map +1 -0
  6. package/dist/JSONValidator.d.ts +20 -0
  7. package/dist/JSONValidator.js +76 -0
  8. package/dist/JSONValidator.js.map +1 -0
  9. package/dist/checks/app-block-missing-schema/index.d.ts +2 -0
  10. package/dist/checks/app-block-missing-schema/index.js +46 -0
  11. package/dist/checks/app-block-missing-schema/index.js.map +1 -0
  12. package/dist/checks/app-block-valid-tags/index.d.ts +10 -0
  13. package/dist/checks/app-block-valid-tags/index.js +49 -0
  14. package/dist/checks/app-block-valid-tags/index.js.map +1 -0
  15. package/dist/checks/asset-preload/index.d.ts +2 -0
  16. package/dist/checks/asset-preload/index.js +56 -0
  17. package/dist/checks/asset-preload/index.js.map +1 -0
  18. package/dist/checks/asset-size-app-block-css/index.d.ts +6 -0
  19. package/dist/checks/asset-size-app-block-css/index.js +64 -0
  20. package/dist/checks/asset-size-app-block-css/index.js.map +1 -0
  21. package/dist/checks/asset-size-app-block-javascript/index.d.ts +6 -0
  22. package/dist/checks/asset-size-app-block-javascript/index.js +64 -0
  23. package/dist/checks/asset-size-app-block-javascript/index.js.map +1 -0
  24. package/dist/checks/asset-size-css/index.d.ts +6 -0
  25. package/dist/checks/asset-size-css/index.js +125 -0
  26. package/dist/checks/asset-size-css/index.js.map +1 -0
  27. package/dist/checks/asset-size-javascript/index.d.ts +6 -0
  28. package/dist/checks/asset-size-javascript/index.js +110 -0
  29. package/dist/checks/asset-size-javascript/index.js.map +1 -0
  30. package/dist/checks/block-id-usage/index.d.ts +2 -0
  31. package/dist/checks/block-id-usage/index.js +60 -0
  32. package/dist/checks/block-id-usage/index.js.map +1 -0
  33. package/dist/checks/cdn-preconnect/index.d.ts +2 -0
  34. package/dist/checks/cdn-preconnect/index.js +44 -0
  35. package/dist/checks/cdn-preconnect/index.js.map +1 -0
  36. package/dist/checks/content-for-header-modification/index.d.ts +2 -0
  37. package/dist/checks/content-for-header-modification/index.js +66 -0
  38. package/dist/checks/content-for-header-modification/index.js.map +1 -0
  39. package/dist/checks/deprecate-bgsizes/index.d.ts +2 -0
  40. package/dist/checks/deprecate-bgsizes/index.js +46 -0
  41. package/dist/checks/deprecate-bgsizes/index.js.map +1 -0
  42. package/dist/checks/deprecate-lazysizes/index.d.ts +2 -0
  43. package/dist/checks/deprecate-lazysizes/index.js +52 -0
  44. package/dist/checks/deprecate-lazysizes/index.js.map +1 -0
  45. package/dist/checks/deprecated-filter/fixes.d.ts +8 -0
  46. package/dist/checks/deprecated-filter/fixes.js +205 -0
  47. package/dist/checks/deprecated-filter/fixes.js.map +1 -0
  48. package/dist/checks/deprecated-filter/index.d.ts +2 -0
  49. package/dist/checks/deprecated-filter/index.js +93 -0
  50. package/dist/checks/deprecated-filter/index.js.map +1 -0
  51. package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.d.ts +1 -0
  52. package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.js +1347 -0
  53. package/dist/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.js.map +1 -0
  54. package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.d.ts +2 -0
  55. package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.js +156 -0
  56. package/dist/checks/deprecated-fonts-on-sections-and-blocks/index.js.map +1 -0
  57. package/dist/checks/deprecated-fonts-on-settings-schema/index.d.ts +2 -0
  58. package/dist/checks/deprecated-fonts-on-settings-schema/index.js +56 -0
  59. package/dist/checks/deprecated-fonts-on-settings-schema/index.js.map +1 -0
  60. package/dist/checks/deprecated-tag/index.d.ts +2 -0
  61. package/dist/checks/deprecated-tag/index.js +48 -0
  62. package/dist/checks/deprecated-tag/index.js.map +1 -0
  63. package/dist/checks/duplicate-content-for-arguments/index.d.ts +2 -0
  64. package/dist/checks/duplicate-content-for-arguments/index.js +39 -0
  65. package/dist/checks/duplicate-content-for-arguments/index.js.map +1 -0
  66. package/dist/checks/duplicate-function-arguments/index.d.ts +2 -0
  67. package/dist/checks/duplicate-function-arguments/index.js +40 -0
  68. package/dist/checks/duplicate-function-arguments/index.js.map +1 -0
  69. package/dist/checks/duplicate-render-partial-arguments/index.d.ts +2 -0
  70. package/dist/checks/duplicate-render-partial-arguments/index.js +43 -0
  71. package/dist/checks/duplicate-render-partial-arguments/index.js.map +1 -0
  72. package/dist/checks/empty-block-content/index.d.ts +2 -0
  73. package/dist/checks/empty-block-content/index.js +60 -0
  74. package/dist/checks/empty-block-content/index.js.map +1 -0
  75. package/dist/checks/graphql/index.d.ts +2 -0
  76. package/dist/checks/graphql/index.js +58 -0
  77. package/dist/checks/graphql/index.js.map +1 -0
  78. package/dist/checks/graphql-variables/index.d.ts +8 -0
  79. package/dist/checks/graphql-variables/index.js +91 -0
  80. package/dist/checks/graphql-variables/index.js.map +1 -0
  81. package/dist/checks/hardcoded-routes/index.d.ts +2 -0
  82. package/dist/checks/hardcoded-routes/index.js +89 -0
  83. package/dist/checks/hardcoded-routes/index.js.map +1 -0
  84. package/dist/checks/img-width-and-height/index.d.ts +2 -0
  85. package/dist/checks/img-width-and-height/index.js +46 -0
  86. package/dist/checks/img-width-and-height/index.js.map +1 -0
  87. package/dist/checks/index.d.ts +8 -0
  88. package/dist/checks/index.js +154 -0
  89. package/dist/checks/index.js.map +1 -0
  90. package/dist/checks/invalid-hash-assign-target/index.d.ts +2 -0
  91. package/dist/checks/invalid-hash-assign-target/index.js +252 -0
  92. package/dist/checks/invalid-hash-assign-target/index.js.map +1 -0
  93. package/dist/checks/json-missing-block/index.d.ts +2 -0
  94. package/dist/checks/json-missing-block/index.js +48 -0
  95. package/dist/checks/json-missing-block/index.js.map +1 -0
  96. package/dist/checks/json-missing-block/missing-block-utils.d.ts +4 -0
  97. package/dist/checks/json-missing-block/missing-block-utils.js +87 -0
  98. package/dist/checks/json-missing-block/missing-block-utils.js.map +1 -0
  99. package/dist/checks/json-syntax-error/index.d.ts +2 -0
  100. package/dist/checks/json-syntax-error/index.js +92 -0
  101. package/dist/checks/json-syntax-error/index.js.map +1 -0
  102. package/dist/checks/liquid-free-settings/index.d.ts +2 -0
  103. package/dist/checks/liquid-free-settings/index.js +64 -0
  104. package/dist/checks/liquid-free-settings/index.js.map +1 -0
  105. package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.d.ts +3 -0
  106. package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.js +23 -0
  107. package/dist/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.js.map +1 -0
  108. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.d.ts +3 -0
  109. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.js +136 -0
  110. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.js.map +1 -0
  111. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.d.ts +3 -0
  112. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.js +26 -0
  113. package/dist/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.js.map +1 -0
  114. package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.d.ts +3 -0
  115. package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.js +59 -0
  116. package/dist/checks/liquid-html-syntax-error/checks/InvalidEchoValue.js.map +1 -0
  117. package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.d.ts +3 -0
  118. package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.js +66 -0
  119. package/dist/checks/liquid-html-syntax-error/checks/InvalidFilterName.js.map +1 -0
  120. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.d.ts +3 -0
  121. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js +73 -0
  122. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js.map +1 -0
  123. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.d.ts +4 -0
  124. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.js +54 -0
  125. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopRange.js.map +1 -0
  126. package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.d.ts +3 -0
  127. package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.js +71 -0
  128. package/dist/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.js.map +1 -0
  129. package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.d.ts +3 -0
  130. package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.js +69 -0
  131. package/dist/checks/liquid-html-syntax-error/checks/MultipleAssignValues.js.map +1 -0
  132. package/dist/checks/liquid-html-syntax-error/checks/utils.d.ts +15 -0
  133. package/dist/checks/liquid-html-syntax-error/checks/utils.js +58 -0
  134. package/dist/checks/liquid-html-syntax-error/checks/utils.js.map +1 -0
  135. package/dist/checks/liquid-html-syntax-error/index.d.ts +2 -0
  136. package/dist/checks/liquid-html-syntax-error/index.js +131 -0
  137. package/dist/checks/liquid-html-syntax-error/index.js.map +1 -0
  138. package/dist/checks/matching-translations/index.d.ts +2 -0
  139. package/dist/checks/matching-translations/index.js +146 -0
  140. package/dist/checks/matching-translations/index.js.map +1 -0
  141. package/dist/checks/metadata-params/index.d.ts +2 -0
  142. package/dist/checks/metadata-params/index.js +96 -0
  143. package/dist/checks/metadata-params/index.js.map +1 -0
  144. package/dist/checks/missing-asset/index.d.ts +2 -0
  145. package/dist/checks/missing-asset/index.js +44 -0
  146. package/dist/checks/missing-asset/index.js.map +1 -0
  147. package/dist/checks/missing-content-for-arguments/index.d.ts +2 -0
  148. package/dist/checks/missing-content-for-arguments/index.js +36 -0
  149. package/dist/checks/missing-content-for-arguments/index.js.map +1 -0
  150. package/dist/checks/missing-template/index.d.ts +6 -0
  151. package/dist/checks/missing-template/index.js +70 -0
  152. package/dist/checks/missing-template/index.js.map +1 -0
  153. package/dist/checks/orphaned-partial/index.d.ts +2 -0
  154. package/dist/checks/orphaned-partial/index.js +42 -0
  155. package/dist/checks/orphaned-partial/index.js.map +1 -0
  156. package/dist/checks/pagination-size/index.d.ts +7 -0
  157. package/dist/checks/pagination-size/index.js +89 -0
  158. package/dist/checks/pagination-size/index.js.map +1 -0
  159. package/dist/checks/parser-blocking-script/index.d.ts +2 -0
  160. package/dist/checks/parser-blocking-script/index.js +81 -0
  161. package/dist/checks/parser-blocking-script/index.js.map +1 -0
  162. package/dist/checks/parser-blocking-script/suggestions.d.ts +4 -0
  163. package/dist/checks/parser-blocking-script/suggestions.js +22 -0
  164. package/dist/checks/parser-blocking-script/suggestions.js.map +1 -0
  165. package/dist/checks/remote-asset/index.d.ts +6 -0
  166. package/dist/checks/remote-asset/index.js +189 -0
  167. package/dist/checks/remote-asset/index.js.map +1 -0
  168. package/dist/checks/reserved-doc-param-names/index.d.ts +2 -0
  169. package/dist/checks/reserved-doc-param-names/index.js +46 -0
  170. package/dist/checks/reserved-doc-param-names/index.js.map +1 -0
  171. package/dist/checks/schema-presets-block-order/index.d.ts +2 -0
  172. package/dist/checks/schema-presets-block-order/index.js +108 -0
  173. package/dist/checks/schema-presets-block-order/index.js.map +1 -0
  174. package/dist/checks/schema-presets-static-blocks/index.d.ts +2 -0
  175. package/dist/checks/schema-presets-static-blocks/index.js +109 -0
  176. package/dist/checks/schema-presets-static-blocks/index.js.map +1 -0
  177. package/dist/checks/static-stylesheet-and-javascript-tags/index.d.ts +2 -0
  178. package/dist/checks/static-stylesheet-and-javascript-tags/index.js +42 -0
  179. package/dist/checks/static-stylesheet-and-javascript-tags/index.js.map +1 -0
  180. package/dist/checks/translation-key-exists/index.d.ts +2 -0
  181. package/dist/checks/translation-key-exists/index.js +67 -0
  182. package/dist/checks/translation-key-exists/index.js.map +1 -0
  183. package/dist/checks/unclosed-html-element/index.d.ts +2 -0
  184. package/dist/checks/unclosed-html-element/index.js +252 -0
  185. package/dist/checks/unclosed-html-element/index.js.map +1 -0
  186. package/dist/checks/undefined-object/index.d.ts +2 -0
  187. package/dist/checks/undefined-object/index.js +255 -0
  188. package/dist/checks/undefined-object/index.js.map +1 -0
  189. package/dist/checks/unique-doc-param-names/index.d.ts +2 -0
  190. package/dist/checks/unique-doc-param-names/index.js +37 -0
  191. package/dist/checks/unique-doc-param-names/index.js.map +1 -0
  192. package/dist/checks/unique-settings-id/index.d.ts +2 -0
  193. package/dist/checks/unique-settings-id/index.js +69 -0
  194. package/dist/checks/unique-settings-id/index.js.map +1 -0
  195. package/dist/checks/unique-settings-id/test-data.d.ts +2 -0
  196. package/dist/checks/unique-settings-id/test-data.js +1194 -0
  197. package/dist/checks/unique-settings-id/test-data.js.map +1 -0
  198. package/dist/checks/unique-static-block-id/index.d.ts +2 -0
  199. package/dist/checks/unique-static-block-id/index.js +56 -0
  200. package/dist/checks/unique-static-block-id/index.js.map +1 -0
  201. package/dist/checks/unknown-filter/index.d.ts +2 -0
  202. package/dist/checks/unknown-filter/index.js +38 -0
  203. package/dist/checks/unknown-filter/index.js.map +1 -0
  204. package/dist/checks/unknown-property/index.d.ts +2 -0
  205. package/dist/checks/unknown-property/index.js +361 -0
  206. package/dist/checks/unknown-property/index.js.map +1 -0
  207. package/dist/checks/unknown-property/property-shape.d.ts +41 -0
  208. package/dist/checks/unknown-property/property-shape.js +267 -0
  209. package/dist/checks/unknown-property/property-shape.js.map +1 -0
  210. package/dist/checks/unrecognized-content-for-arguments/index.d.ts +2 -0
  211. package/dist/checks/unrecognized-content-for-arguments/index.js +43 -0
  212. package/dist/checks/unrecognized-content-for-arguments/index.js.map +1 -0
  213. package/dist/checks/unrecognized-render-partial-arguments/index.d.ts +2 -0
  214. package/dist/checks/unrecognized-render-partial-arguments/index.js +59 -0
  215. package/dist/checks/unrecognized-render-partial-arguments/index.js.map +1 -0
  216. package/dist/checks/unused-assign/index.d.ts +2 -0
  217. package/dist/checks/unused-assign/index.js +77 -0
  218. package/dist/checks/unused-assign/index.js.map +1 -0
  219. package/dist/checks/unused-doc-param/index.d.ts +2 -0
  220. package/dist/checks/unused-doc-param/index.js +55 -0
  221. package/dist/checks/unused-doc-param/index.js.map +1 -0
  222. package/dist/checks/utils.d.ts +22 -0
  223. package/dist/checks/utils.js +74 -0
  224. package/dist/checks/utils.js.map +1 -0
  225. package/dist/checks/valid-block-target/index.d.ts +2 -0
  226. package/dist/checks/valid-block-target/index.js +99 -0
  227. package/dist/checks/valid-block-target/index.js.map +1 -0
  228. package/dist/checks/valid-content-for-argument-types/index.d.ts +2 -0
  229. package/dist/checks/valid-content-for-argument-types/index.js +35 -0
  230. package/dist/checks/valid-content-for-argument-types/index.js.map +1 -0
  231. package/dist/checks/valid-content-for-arguments/index.d.ts +2 -0
  232. package/dist/checks/valid-content-for-arguments/index.js +82 -0
  233. package/dist/checks/valid-content-for-arguments/index.js.map +1 -0
  234. package/dist/checks/valid-doc-param-types/index.d.ts +2 -0
  235. package/dist/checks/valid-doc-param-types/index.js +61 -0
  236. package/dist/checks/valid-doc-param-types/index.js.map +1 -0
  237. package/dist/checks/valid-html-translation/index.d.ts +2 -0
  238. package/dist/checks/valid-html-translation/index.js +46 -0
  239. package/dist/checks/valid-html-translation/index.js.map +1 -0
  240. package/dist/checks/valid-json/index.d.ts +2 -0
  241. package/dist/checks/valid-json/index.js +36 -0
  242. package/dist/checks/valid-json/index.js.map +1 -0
  243. package/dist/checks/valid-local-blocks/index.d.ts +2 -0
  244. package/dist/checks/valid-local-blocks/index.js +66 -0
  245. package/dist/checks/valid-local-blocks/index.js.map +1 -0
  246. package/dist/checks/valid-local-blocks/valid-block-utils.d.ts +13 -0
  247. package/dist/checks/valid-local-blocks/valid-block-utils.js +74 -0
  248. package/dist/checks/valid-local-blocks/valid-block-utils.js.map +1 -0
  249. package/dist/checks/valid-render-partial-argument-types/index.d.ts +2 -0
  250. package/dist/checks/valid-render-partial-argument-types/index.js +66 -0
  251. package/dist/checks/valid-render-partial-argument-types/index.js.map +1 -0
  252. package/dist/checks/valid-schema/index.d.ts +2 -0
  253. package/dist/checks/valid-schema/index.js +40 -0
  254. package/dist/checks/valid-schema/index.js.map +1 -0
  255. package/dist/checks/valid-schema-name/index.d.ts +2 -0
  256. package/dist/checks/valid-schema-name/index.js +74 -0
  257. package/dist/checks/valid-schema-name/index.js.map +1 -0
  258. package/dist/checks/valid-settings-key/index.d.ts +2 -0
  259. package/dist/checks/valid-settings-key/index.js +90 -0
  260. package/dist/checks/valid-settings-key/index.js.map +1 -0
  261. package/dist/checks/valid-static-block-type/index.d.ts +2 -0
  262. package/dist/checks/valid-static-block-type/index.js +54 -0
  263. package/dist/checks/valid-static-block-type/index.js.map +1 -0
  264. package/dist/checks/valid-visible-if/index.d.ts +3 -0
  265. package/dist/checks/valid-visible-if/index.js +146 -0
  266. package/dist/checks/valid-visible-if/index.js.map +1 -0
  267. package/dist/checks/valid-visible-if/visible-if-utils.d.ts +14 -0
  268. package/dist/checks/valid-visible-if/visible-if-utils.js +125 -0
  269. package/dist/checks/valid-visible-if/visible-if-utils.js.map +1 -0
  270. package/dist/checks/variable-name/index.d.ts +6 -0
  271. package/dist/checks/variable-name/index.js +93 -0
  272. package/dist/checks/variable-name/index.js.map +1 -0
  273. package/dist/context-utils.d.ts +15 -0
  274. package/dist/context-utils.js +185 -0
  275. package/dist/context-utils.js.map +1 -0
  276. package/dist/create-safe-check.d.ts +2 -0
  277. package/dist/create-safe-check.js +15 -0
  278. package/dist/create-safe-check.js.map +1 -0
  279. package/dist/disabled-checks/index.d.ts +7 -0
  280. package/dist/disabled-checks/index.js +145 -0
  281. package/dist/disabled-checks/index.js.map +1 -0
  282. package/dist/disabled-checks/test-checks.d.ts +3 -0
  283. package/dist/disabled-checks/test-checks.js +59 -0
  284. package/dist/disabled-checks/test-checks.js.map +1 -0
  285. package/dist/doc-generator/DocBlockGenerator.d.ts +16 -0
  286. package/dist/doc-generator/DocBlockGenerator.js +464 -0
  287. package/dist/doc-generator/DocBlockGenerator.js.map +1 -0
  288. package/dist/doc-generator/index.d.ts +1 -0
  289. package/dist/doc-generator/index.js +6 -0
  290. package/dist/doc-generator/index.js.map +1 -0
  291. package/dist/find-root.d.ts +18 -0
  292. package/dist/find-root.js +81 -0
  293. package/dist/find-root.js.map +1 -0
  294. package/dist/fixes/apply-fix-to-string.d.ts +2 -0
  295. package/dist/fixes/apply-fix-to-string.js +50 -0
  296. package/dist/fixes/apply-fix-to-string.js.map +1 -0
  297. package/dist/fixes/autofix.d.ts +9 -0
  298. package/dist/fixes/autofix.js +30 -0
  299. package/dist/fixes/autofix.js.map +1 -0
  300. package/dist/fixes/corrector.d.ts +0 -0
  301. package/dist/fixes/corrector.js +2 -0
  302. package/dist/fixes/corrector.js.map +1 -0
  303. package/dist/fixes/correctors/base-corrector.d.ts +4 -0
  304. package/dist/fixes/correctors/base-corrector.js +3 -0
  305. package/dist/fixes/correctors/base-corrector.js.map +1 -0
  306. package/dist/fixes/correctors/graphql-corrector.d.ts +56 -0
  307. package/dist/fixes/correctors/graphql-corrector.js +78 -0
  308. package/dist/fixes/correctors/graphql-corrector.js.map +1 -0
  309. package/dist/fixes/correctors/index.d.ts +6 -0
  310. package/dist/fixes/correctors/index.js +30 -0
  311. package/dist/fixes/correctors/index.js.map +1 -0
  312. package/dist/fixes/correctors/json-corrector.d.ts +39 -0
  313. package/dist/fixes/correctors/json-corrector.js +86 -0
  314. package/dist/fixes/correctors/json-corrector.js.map +1 -0
  315. package/dist/fixes/correctors/string-corrector.d.ts +56 -0
  316. package/dist/fixes/correctors/string-corrector.js +78 -0
  317. package/dist/fixes/correctors/string-corrector.js.map +1 -0
  318. package/dist/fixes/index.d.ts +4 -0
  319. package/dist/fixes/index.js +14 -0
  320. package/dist/fixes/index.js.map +1 -0
  321. package/dist/fixes/utils.d.ts +2 -0
  322. package/dist/fixes/utils.js +9 -0
  323. package/dist/fixes/utils.js.map +1 -0
  324. package/dist/ignore.d.ts +2 -0
  325. package/dist/ignore.js +20 -0
  326. package/dist/ignore.js.map +1 -0
  327. package/dist/index.d.ts +23 -0
  328. package/dist/index.js +211 -0
  329. package/dist/index.js.map +1 -0
  330. package/dist/json.d.ts +17 -0
  331. package/dist/json.js +79 -0
  332. package/dist/json.js.map +1 -0
  333. package/dist/jsonc/parse.d.ts +25 -0
  334. package/dist/jsonc/parse.js +101 -0
  335. package/dist/jsonc/parse.js.map +1 -0
  336. package/dist/jsonc/types.d.ts +37 -0
  337. package/dist/jsonc/types.js +3 -0
  338. package/dist/jsonc/types.js.map +1 -0
  339. package/dist/liquid-doc/arguments.d.ts +36 -0
  340. package/dist/liquid-doc/arguments.js +239 -0
  341. package/dist/liquid-doc/arguments.js.map +1 -0
  342. package/dist/liquid-doc/liquidDoc.d.ts +33 -0
  343. package/dist/liquid-doc/liquidDoc.js +94 -0
  344. package/dist/liquid-doc/liquidDoc.js.map +1 -0
  345. package/dist/liquid-doc/utils.d.ts +49 -0
  346. package/dist/liquid-doc/utils.js +119 -0
  347. package/dist/liquid-doc/utils.js.map +1 -0
  348. package/dist/path.d.ts +10 -0
  349. package/dist/path.js +47 -0
  350. package/dist/path.js.map +1 -0
  351. package/dist/tags/content-for.d.ts +3 -0
  352. package/dist/tags/content-for.js +27 -0
  353. package/dist/tags/content-for.js.map +1 -0
  354. package/dist/test/MockFileSystem.d.ts +12 -0
  355. package/dist/test/MockFileSystem.js +109 -0
  356. package/dist/test/MockFileSystem.js.map +1 -0
  357. package/dist/test/MockTheme.d.ts +16 -0
  358. package/dist/test/MockTheme.js +16 -0
  359. package/dist/test/MockTheme.js.map +1 -0
  360. package/dist/test/chai-offer-fix-assertion.d.ts +22 -0
  361. package/dist/test/chai-offer-fix-assertion.js +20 -0
  362. package/dist/test/chai-offer-fix-assertion.js.map +1 -0
  363. package/dist/test/chai-suggest-assertion.d.ts +22 -0
  364. package/dist/test/chai-suggest-assertion.js +29 -0
  365. package/dist/test/chai-suggest-assertion.js.map +1 -0
  366. package/dist/test/contain-offense.d.ts +12 -0
  367. package/dist/test/contain-offense.js +36 -0
  368. package/dist/test/contain-offense.js.map +1 -0
  369. package/dist/test/index.d.ts +3 -0
  370. package/dist/test/index.js +20 -0
  371. package/dist/test/index.js.map +1 -0
  372. package/dist/test/test-helper.d.ts +14 -0
  373. package/dist/test/test-helper.js +289 -0
  374. package/dist/test/test-helper.js.map +1 -0
  375. package/dist/test/test-setup.d.ts +9 -0
  376. package/dist/test/test-setup.js +26 -0
  377. package/dist/test/test-setup.js.map +1 -0
  378. package/dist/to-schema.d.ts +16 -0
  379. package/dist/to-schema.js +218 -0
  380. package/dist/to-schema.js.map +1 -0
  381. package/dist/to-source-code.d.ts +5 -0
  382. package/dist/to-source-code.js +103 -0
  383. package/dist/to-source-code.js.map +1 -0
  384. package/dist/tsconfig.tsbuildinfo +1 -0
  385. package/dist/types/schema-prop-factory.d.ts +76 -0
  386. package/dist/types/schema-prop-factory.js +84 -0
  387. package/dist/types/schema-prop-factory.js.map +1 -0
  388. package/dist/types/schemas/index.d.ts +5 -0
  389. package/dist/types/schemas/index.js +6 -0
  390. package/dist/types/schemas/index.js.map +1 -0
  391. package/dist/types/schemas/preset.d.ts +38 -0
  392. package/dist/types/schemas/preset.js +3 -0
  393. package/dist/types/schemas/preset.js.map +1 -0
  394. package/dist/types/schemas/section.d.ts +49 -0
  395. package/dist/types/schemas/section.js +3 -0
  396. package/dist/types/schemas/section.js.map +1 -0
  397. package/dist/types/schemas/setting.d.ts +216 -0
  398. package/dist/types/schemas/setting.js +3 -0
  399. package/dist/types/schemas/setting.js.map +1 -0
  400. package/dist/types/schemas/template.d.ts +30 -0
  401. package/dist/types/schemas/template.js +3 -0
  402. package/dist/types/schemas/template.js.map +1 -0
  403. package/dist/types/schemas/theme-block.d.ts +24 -0
  404. package/dist/types/schemas/theme-block.js +3 -0
  405. package/dist/types/schemas/theme-block.js.map +1 -0
  406. package/dist/types/theme-liquid-docs.d.ts +131 -0
  407. package/dist/types/theme-liquid-docs.js +3 -0
  408. package/dist/types/theme-liquid-docs.js.map +1 -0
  409. package/dist/types/theme-schemas.d.ts +70 -0
  410. package/dist/types/theme-schemas.js +25 -0
  411. package/dist/types/theme-schemas.js.map +1 -0
  412. package/dist/types.d.ts +469 -0
  413. package/dist/types.js +55 -0
  414. package/dist/types.js.map +1 -0
  415. package/dist/utils/array.d.ts +5 -0
  416. package/dist/utils/array.js +28 -0
  417. package/dist/utils/array.js.map +1 -0
  418. package/dist/utils/block.d.ts +22 -0
  419. package/dist/utils/block.js +179 -0
  420. package/dist/utils/block.js.map +1 -0
  421. package/dist/utils/error.d.ts +2 -0
  422. package/dist/utils/error.js +44 -0
  423. package/dist/utils/error.js.map +1 -0
  424. package/dist/utils/file-utils.d.ts +6 -0
  425. package/dist/utils/file-utils.js +46 -0
  426. package/dist/utils/file-utils.js.map +1 -0
  427. package/dist/utils/index.d.ts +8 -0
  428. package/dist/utils/index.js +25 -0
  429. package/dist/utils/index.js.map +1 -0
  430. package/dist/utils/indexBy.d.ts +5 -0
  431. package/dist/utils/indexBy.js +15 -0
  432. package/dist/utils/indexBy.js.map +1 -0
  433. package/dist/utils/markup.d.ts +2 -0
  434. package/dist/utils/markup.js +10 -0
  435. package/dist/utils/markup.js.map +1 -0
  436. package/dist/utils/memo.d.ts +34 -0
  437. package/dist/utils/memo.js +61 -0
  438. package/dist/utils/memo.js.map +1 -0
  439. package/dist/utils/object.d.ts +1 -0
  440. package/dist/utils/object.js +7 -0
  441. package/dist/utils/object.js.map +1 -0
  442. package/dist/utils/position.d.ts +3 -0
  443. package/dist/utils/position.js +20 -0
  444. package/dist/utils/position.js.map +1 -0
  445. package/dist/utils/types.d.ts +52 -0
  446. package/dist/utils/types.js +23 -0
  447. package/dist/utils/types.js.map +1 -0
  448. package/dist/visitor.d.ts +24 -0
  449. package/dist/visitor.js +119 -0
  450. package/dist/visitor.js.map +1 -0
  451. package/dist/visitors/index.d.ts +2 -0
  452. package/dist/visitors/index.js +8 -0
  453. package/dist/visitors/index.js.map +1 -0
  454. package/dist/visitors/json.d.ts +2 -0
  455. package/dist/visitors/json.js +39 -0
  456. package/dist/visitors/json.js.map +1 -0
  457. package/dist/visitors/liquid.d.ts +2 -0
  458. package/dist/visitors/liquid.js +39 -0
  459. package/dist/visitors/liquid.js.map +1 -0
  460. package/package.json +45 -0
  461. package/src/AugmentedThemeDocset.spec.ts +148 -0
  462. package/src/AugmentedThemeDocset.ts +148 -0
  463. package/src/JSONValidator.ts +82 -0
  464. package/src/checks/app-block-missing-schema/index.spec.ts +121 -0
  465. package/src/checks/app-block-missing-schema/index.ts +46 -0
  466. package/src/checks/app-block-valid-tags/index.spec.ts +96 -0
  467. package/src/checks/app-block-valid-tags/index.ts +54 -0
  468. package/src/checks/asset-preload/index.spec.ts +78 -0
  469. package/src/checks/asset-preload/index.ts +65 -0
  470. package/src/checks/asset-size-app-block-css/index.spec.ts +88 -0
  471. package/src/checks/asset-size-app-block-css/index.ts +78 -0
  472. package/src/checks/asset-size-app-block-javascript/index.spec.ts +66 -0
  473. package/src/checks/asset-size-app-block-javascript/index.ts +78 -0
  474. package/src/checks/asset-size-css/index.spec.ts +166 -0
  475. package/src/checks/asset-size-css/index.ts +160 -0
  476. package/src/checks/asset-size-javascript/index.spec.ts +184 -0
  477. package/src/checks/asset-size-javascript/index.ts +144 -0
  478. package/src/checks/block-id-usage/index.spec.ts +76 -0
  479. package/src/checks/block-id-usage/index.ts +72 -0
  480. package/src/checks/cdn-preconnect/index.spec.ts +40 -0
  481. package/src/checks/cdn-preconnect/index.ts +43 -0
  482. package/src/checks/content-for-header-modification/index.spec.ts +65 -0
  483. package/src/checks/content-for-header-modification/index.ts +72 -0
  484. package/src/checks/deprecate-bgsizes/index.spec.ts +41 -0
  485. package/src/checks/deprecate-bgsizes/index.ts +49 -0
  486. package/src/checks/deprecate-lazysizes/index.spec.ts +26 -0
  487. package/src/checks/deprecate-lazysizes/index.ts +58 -0
  488. package/src/checks/deprecated-filter/fixes.ts +264 -0
  489. package/src/checks/deprecated-filter/index.spec.ts +274 -0
  490. package/src/checks/deprecated-filter/index.ts +113 -0
  491. package/src/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.ts +1343 -0
  492. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.spec.ts +613 -0
  493. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.ts +284 -0
  494. package/src/checks/deprecated-fonts-on-settings-schema/index.spec.ts +102 -0
  495. package/src/checks/deprecated-fonts-on-settings-schema/index.ts +66 -0
  496. package/src/checks/deprecated-tag/index.spec.ts +68 -0
  497. package/src/checks/deprecated-tag/index.ts +46 -0
  498. package/src/checks/duplicate-content-for-arguments/index.spec.ts +98 -0
  499. package/src/checks/duplicate-content-for-arguments/index.ts +43 -0
  500. package/src/checks/duplicate-function-arguments/index.spec.ts +98 -0
  501. package/src/checks/duplicate-function-arguments/index.ts +44 -0
  502. package/src/checks/duplicate-render-partial-arguments/index.spec.ts +120 -0
  503. package/src/checks/duplicate-render-partial-arguments/index.ts +48 -0
  504. package/src/checks/empty-block-content/index.spec.ts +117 -0
  505. package/src/checks/empty-block-content/index.ts +60 -0
  506. package/src/checks/graphql/index.ts +64 -0
  507. package/src/checks/graphql-variables/index.ts +113 -0
  508. package/src/checks/hardcoded-routes/index.spec.ts +58 -0
  509. package/src/checks/hardcoded-routes/index.ts +100 -0
  510. package/src/checks/img-width-and-height/index.spec.ts +79 -0
  511. package/src/checks/img-width-and-height/index.ts +52 -0
  512. package/src/checks/index.ts +160 -0
  513. package/src/checks/invalid-hash-assign-target/index.spec.ts +176 -0
  514. package/src/checks/invalid-hash-assign-target/index.ts +306 -0
  515. package/src/checks/json-missing-block/index.spec.ts +435 -0
  516. package/src/checks/json-missing-block/index.ts +56 -0
  517. package/src/checks/json-missing-block/missing-block-utils.ts +147 -0
  518. package/src/checks/json-syntax-error/index.spec.ts +64 -0
  519. package/src/checks/json-syntax-error/index.ts +92 -0
  520. package/src/checks/liquid-free-settings/index.spec.ts +180 -0
  521. package/src/checks/liquid-free-settings/index.ts +79 -0
  522. package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpression.spec.ts +43 -0
  523. package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpressions.ts +29 -0
  524. package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.spec.ts +385 -0
  525. package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNode.ts +165 -0
  526. package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.spec.ts +52 -0
  527. package/src/checks/liquid-html-syntax-error/checks/InvalidConditionalNodeParenthesis.ts +39 -0
  528. package/src/checks/liquid-html-syntax-error/checks/InvalidEchoValue.spec.ts +108 -0
  529. package/src/checks/liquid-html-syntax-error/checks/InvalidEchoValue.ts +74 -0
  530. package/src/checks/liquid-html-syntax-error/checks/InvalidFilterName.spec.ts +223 -0
  531. package/src/checks/liquid-html-syntax-error/checks/InvalidFilterName.ts +92 -0
  532. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.spec.ts +145 -0
  533. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.ts +116 -0
  534. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopRange.spec.ts +84 -0
  535. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopRange.ts +79 -0
  536. package/src/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.spec.ts +184 -0
  537. package/src/checks/liquid-html-syntax-error/checks/InvalidPipeSyntax.ts +91 -0
  538. package/src/checks/liquid-html-syntax-error/checks/MultipleAssignValues.spec.ts +82 -0
  539. package/src/checks/liquid-html-syntax-error/checks/MultipleAssignValues.ts +86 -0
  540. package/src/checks/liquid-html-syntax-error/checks/utils.spec.ts +82 -0
  541. package/src/checks/liquid-html-syntax-error/checks/utils.ts +66 -0
  542. package/src/checks/liquid-html-syntax-error/index.spec.ts +129 -0
  543. package/src/checks/liquid-html-syntax-error/index.ts +152 -0
  544. package/src/checks/matching-translations/index.spec.ts +400 -0
  545. package/src/checks/matching-translations/index.ts +175 -0
  546. package/src/checks/metadata-params/index.spec.ts +103 -0
  547. package/src/checks/metadata-params/index.ts +119 -0
  548. package/src/checks/missing-asset/index.spec.ts +59 -0
  549. package/src/checks/missing-asset/index.ts +48 -0
  550. package/src/checks/missing-content-for-arguments/index.spec.ts +144 -0
  551. package/src/checks/missing-content-for-arguments/index.ts +46 -0
  552. package/src/checks/missing-template/index.spec.ts +61 -0
  553. package/src/checks/missing-template/index.ts +101 -0
  554. package/src/checks/orphaned-partial/index.spec.ts +58 -0
  555. package/src/checks/orphaned-partial/index.ts +43 -0
  556. package/src/checks/pagination-size/index.spec.ts +158 -0
  557. package/src/checks/pagination-size/index.ts +104 -0
  558. package/src/checks/parser-blocking-script/index.spec.ts +225 -0
  559. package/src/checks/parser-blocking-script/index.ts +91 -0
  560. package/src/checks/parser-blocking-script/suggestions.ts +42 -0
  561. package/src/checks/remote-asset/index.spec.ts +280 -0
  562. package/src/checks/remote-asset/index.ts +238 -0
  563. package/src/checks/reserved-doc-param-names/index.spec.ts +62 -0
  564. package/src/checks/reserved-doc-param-names/index.ts +57 -0
  565. package/src/checks/schema-presets-block-order/index.spec.ts +344 -0
  566. package/src/checks/schema-presets-block-order/index.ts +154 -0
  567. package/src/checks/schema-presets-static-blocks/index.spec.ts +145 -0
  568. package/src/checks/schema-presets-static-blocks/index.ts +126 -0
  569. package/src/checks/static-stylesheet-and-javascript-tags/index.spec.ts +257 -0
  570. package/src/checks/static-stylesheet-and-javascript-tags/index.ts +48 -0
  571. package/src/checks/translation-key-exists/index.spec.ts +44 -0
  572. package/src/checks/translation-key-exists/index.ts +78 -0
  573. package/src/checks/unclosed-html-element/index.spec.ts +260 -0
  574. package/src/checks/unclosed-html-element/index.ts +296 -0
  575. package/src/checks/undefined-object/index.spec.ts +519 -0
  576. package/src/checks/undefined-object/index.ts +336 -0
  577. package/src/checks/unique-doc-param-names/index.spec.ts +35 -0
  578. package/src/checks/unique-doc-param-names/index.ts +39 -0
  579. package/src/checks/unique-settings-id/index.spec.ts +24 -0
  580. package/src/checks/unique-settings-id/index.ts +84 -0
  581. package/src/checks/unique-settings-id/test-data.ts +1191 -0
  582. package/src/checks/unique-static-block-id/index.spec.ts +55 -0
  583. package/src/checks/unique-static-block-id/index.ts +60 -0
  584. package/src/checks/unknown-filter/index.spec.ts +59 -0
  585. package/src/checks/unknown-filter/index.ts +38 -0
  586. package/src/checks/unknown-property/index.spec.ts +234 -0
  587. package/src/checks/unknown-property/index.ts +468 -0
  588. package/src/checks/unknown-property/property-shape.ts +315 -0
  589. package/src/checks/unrecognized-content-for-arguments/index.spec.ts +145 -0
  590. package/src/checks/unrecognized-content-for-arguments/index.ts +55 -0
  591. package/src/checks/unrecognized-render-partial-arguments/index.spec.ts +184 -0
  592. package/src/checks/unrecognized-render-partial-arguments/index.ts +76 -0
  593. package/src/checks/unused-assign/index.spec.ts +160 -0
  594. package/src/checks/unused-assign/index.ts +87 -0
  595. package/src/checks/unused-doc-param/index.spec.ts +89 -0
  596. package/src/checks/unused-doc-param/index.ts +59 -0
  597. package/src/checks/utils.ts +117 -0
  598. package/src/checks/valid-block-target/index.spec.ts +1396 -0
  599. package/src/checks/valid-block-target/index.ts +142 -0
  600. package/src/checks/valid-content-for-argument-types/index.spec.ts +382 -0
  601. package/src/checks/valid-content-for-argument-types/index.ts +42 -0
  602. package/src/checks/valid-content-for-arguments/index.spec.ts +107 -0
  603. package/src/checks/valid-content-for-arguments/index.ts +98 -0
  604. package/src/checks/valid-doc-param-types/index.spec.ts +75 -0
  605. package/src/checks/valid-doc-param-types/index.ts +71 -0
  606. package/src/checks/valid-html-translation/index.spec.ts +74 -0
  607. package/src/checks/valid-html-translation/index.ts +45 -0
  608. package/src/checks/valid-json/index.spec.ts +102 -0
  609. package/src/checks/valid-json/index.ts +34 -0
  610. package/src/checks/valid-local-blocks/index.spec.ts +286 -0
  611. package/src/checks/valid-local-blocks/index.ts +100 -0
  612. package/src/checks/valid-local-blocks/valid-block-utils.ts +97 -0
  613. package/src/checks/valid-render-partial-argument-types/index.spec.ts +468 -0
  614. package/src/checks/valid-render-partial-argument-types/index.ts +89 -0
  615. package/src/checks/valid-schema/index.spec.ts +174 -0
  616. package/src/checks/valid-schema/index.ts +41 -0
  617. package/src/checks/valid-schema-name/index.spec.ts +112 -0
  618. package/src/checks/valid-schema-name/index.ts +75 -0
  619. package/src/checks/valid-settings-key/index.spec.ts +321 -0
  620. package/src/checks/valid-settings-key/index.ts +144 -0
  621. package/src/checks/valid-static-block-type/index.spec.ts +38 -0
  622. package/src/checks/valid-static-block-type/index.ts +58 -0
  623. package/src/checks/valid-visible-if/index.spec.ts +619 -0
  624. package/src/checks/valid-visible-if/index.ts +184 -0
  625. package/src/checks/valid-visible-if/visible-if-utils.ts +158 -0
  626. package/src/checks/variable-name/index.spec.ts +62 -0
  627. package/src/checks/variable-name/index.ts +115 -0
  628. package/src/context-utils.spec.ts +103 -0
  629. package/src/context-utils.ts +220 -0
  630. package/src/create-safe-check.ts +13 -0
  631. package/src/disabled-checks/index.spec.ts +262 -0
  632. package/src/disabled-checks/index.ts +189 -0
  633. package/src/disabled-checks/test-checks.ts +60 -0
  634. package/src/find-root.ts +60 -0
  635. package/src/fixes/apply-fix-to-string.spec.ts +52 -0
  636. package/src/fixes/apply-fix-to-string.ts +59 -0
  637. package/src/fixes/autofix.spec.ts +85 -0
  638. package/src/fixes/autofix.ts +41 -0
  639. package/src/fixes/corrector.ts +0 -0
  640. package/src/fixes/correctors/base-corrector.ts +5 -0
  641. package/src/fixes/correctors/graphql-corrector.ts +78 -0
  642. package/src/fixes/correctors/index.ts +29 -0
  643. package/src/fixes/correctors/json-corrector.spec.ts +111 -0
  644. package/src/fixes/correctors/json-corrector.ts +106 -0
  645. package/src/fixes/correctors/string-corrector.ts +78 -0
  646. package/src/fixes/index.ts +4 -0
  647. package/src/fixes/utils.ts +6 -0
  648. package/src/ignore.spec.ts +202 -0
  649. package/src/ignore.ts +23 -0
  650. package/src/index.spec.ts +8 -0
  651. package/src/index.ts +234 -0
  652. package/src/json.spec.ts +140 -0
  653. package/src/json.ts +81 -0
  654. package/src/jsonc/parse.spec.ts +118 -0
  655. package/src/jsonc/parse.ts +121 -0
  656. package/src/jsonc/types.ts +47 -0
  657. package/src/liquid-doc/arguments.spec.ts +146 -0
  658. package/src/liquid-doc/arguments.ts +315 -0
  659. package/src/liquid-doc/liquidDoc.spec.ts +296 -0
  660. package/src/liquid-doc/liquidDoc.ts +147 -0
  661. package/src/liquid-doc/utils.spec.ts +23 -0
  662. package/src/liquid-doc/utils.ts +125 -0
  663. package/src/path.ts +45 -0
  664. package/src/tags/content-for.ts +25 -0
  665. package/src/test/MockFileSystem.spec.ts +71 -0
  666. package/src/test/MockFileSystem.ts +87 -0
  667. package/src/test/MockTheme.ts +17 -0
  668. package/src/test/chai-offer-fix-assertion.spec.ts +53 -0
  669. package/src/test/chai-offer-fix-assertion.ts +45 -0
  670. package/src/test/chai-suggest-assertion.spec.ts +53 -0
  671. package/src/test/chai-suggest-assertion.ts +62 -0
  672. package/src/test/contain-offense.spec.ts +74 -0
  673. package/src/test/contain-offense.ts +54 -0
  674. package/src/test/index.ts +3 -0
  675. package/src/test/test-helper.ts +327 -0
  676. package/src/test/test-setup.ts +36 -0
  677. package/src/to-schema.ts +231 -0
  678. package/src/to-source-code.ts +75 -0
  679. package/src/types/schema-prop-factory.ts +112 -0
  680. package/src/types/schemas/index.ts +5 -0
  681. package/src/types/schemas/preset.ts +52 -0
  682. package/src/types/schemas/section.ts +86 -0
  683. package/src/types/schemas/setting.ts +320 -0
  684. package/src/types/schemas/template.ts +34 -0
  685. package/src/types/schemas/theme-block.ts +34 -0
  686. package/src/types/theme-liquid-docs.ts +184 -0
  687. package/src/types/theme-schemas.ts +80 -0
  688. package/src/types.ts +617 -0
  689. package/src/utils/array.ts +31 -0
  690. package/src/utils/block.ts +300 -0
  691. package/src/utils/error.spec.ts +71 -0
  692. package/src/utils/error.ts +48 -0
  693. package/src/utils/file-utils.ts +58 -0
  694. package/src/utils/index.ts +8 -0
  695. package/src/utils/indexBy.ts +14 -0
  696. package/src/utils/markup.ts +10 -0
  697. package/src/utils/memo.spec.ts +83 -0
  698. package/src/utils/memo.ts +80 -0
  699. package/src/utils/object.ts +3 -0
  700. package/src/utils/position.ts +16 -0
  701. package/src/utils/types.ts +57 -0
  702. package/src/visitor.spec.ts +163 -0
  703. package/src/visitor.ts +161 -0
  704. package/src/visitors/index.ts +2 -0
  705. package/src/visitors/json.ts +41 -0
  706. package/src/visitors/liquid.ts +40 -0
  707. package/tsconfig.build.json +8 -0
  708. package/tsconfig.json +31 -0
@@ -0,0 +1,60 @@
1
+ import { LiquidCheckDefinition, Severity, SourceCodeType } from '..';
2
+ import { NodeTypes } from '@platformos/liquid-html-parser';
3
+
4
+ export const LiquidFilter: LiquidCheckDefinition = {
5
+ meta: {
6
+ code: 'LiquidFilter',
7
+ name: 'Complains about every LiquidFilter',
8
+ docs: {
9
+ description: 'Complains about every LiquidFilter',
10
+ recommended: true,
11
+ },
12
+ type: SourceCodeType.LiquidHtml,
13
+ severity: Severity.ERROR,
14
+ schema: {},
15
+ targets: [],
16
+ },
17
+
18
+ create(context) {
19
+ return {
20
+ LiquidFilter: async (node) => {
21
+ context.report({
22
+ message: 'Liquid filter can not be used',
23
+ startIndex: node.position.start,
24
+ endIndex: node.position.end,
25
+ });
26
+ },
27
+ };
28
+ },
29
+ };
30
+
31
+ export const RenderMarkup: LiquidCheckDefinition = {
32
+ meta: {
33
+ code: 'RenderMarkup',
34
+ name: 'Complains about every RenderMarkup',
35
+ docs: {
36
+ description: 'Complains about every RenderMarkup',
37
+ recommended: true,
38
+ },
39
+ type: SourceCodeType.LiquidHtml,
40
+ severity: Severity.ERROR,
41
+ schema: {},
42
+ targets: [],
43
+ },
44
+
45
+ create(context) {
46
+ return {
47
+ async RenderMarkup(node) {
48
+ if (node.snippet.type === NodeTypes.VariableLookup) {
49
+ return;
50
+ }
51
+
52
+ context.report({
53
+ message: `'${node.snippet.value}.liquid' can not be rendered`,
54
+ startIndex: node.snippet.position.start,
55
+ endIndex: node.snippet.position.end,
56
+ });
57
+ },
58
+ };
59
+ },
60
+ };
@@ -0,0 +1,60 @@
1
+ import { UriString } from '@platformos/platformos-common';
2
+ import * as path from './path';
3
+
4
+ type FileExists = (uri: string) => Promise<boolean>;
5
+
6
+ async function isRoot(dir: UriString, fileExists: FileExists) {
7
+ return or(
8
+ // .pos config file and app directory exists
9
+ and(
10
+ fileExists(path.join(dir, '.pos')),
11
+ fileExists(path.join(dir, 'app')),
12
+ fileExists(path.join(dir, 'modules')),
13
+ fileExists(path.join(dir, '.git')),
14
+ ),
15
+ );
16
+ }
17
+
18
+ async function and(...promises: Promise<boolean>[]) {
19
+ const bools = await Promise.all(promises);
20
+ return bools.reduce((a, b) => a && b, true);
21
+ }
22
+
23
+ async function or(...promises: Promise<boolean>[]) {
24
+ const bools = await Promise.all(promises);
25
+ return bools.reduce((a, b) => a || b, false);
26
+ }
27
+
28
+ async function not(ap: Promise<boolean>) {
29
+ const a = await ap;
30
+ return !a;
31
+ }
32
+
33
+ /**
34
+ * Returns the "root" of a theme or theme app extension. The root is the
35
+ * directory that contains a `.theme-check.yml` file, a `.git` directory, or a
36
+ * `shopify.extension.toml` file.
37
+ *
38
+ * There are cases where .theme-check.yml is not defined and we have to infer the root.
39
+ * We'll assume that the root is the directory that contains a `snippets` directory.
40
+ *
41
+ * So you can think of this function as the function that infers where a .theme-check.yml
42
+ * should be.
43
+ *
44
+ * Note: that this is not the theme root. The config file might have a `root` entry in it
45
+ * that points to somewhere else.
46
+ */
47
+ export async function findRoot(curr: UriString, fileExists: FileExists): Promise<UriString | null> {
48
+ const currIsRoot = await isRoot(curr, fileExists);
49
+ if (currIsRoot) {
50
+ return curr;
51
+ }
52
+
53
+ const dir = path.dirname(curr);
54
+ const currIsAbsoluteRoot = dir === curr;
55
+ if (currIsAbsoluteRoot) {
56
+ return null; // Root not found.
57
+ }
58
+
59
+ return findRoot(dir, fileExists);
60
+ }
@@ -0,0 +1,52 @@
1
+ import { expect, describe, it } from 'vitest';
2
+ import { applyFixToString } from './apply-fix-to-string';
3
+
4
+ // You'll be happy to note that ChatGPT kind of generated this as well.
5
+ describe('Module: applyFixToString', () => {
6
+ it('should apply 1 fix description correctly', () => {
7
+ const source = 'Hello, world!';
8
+ const fixDescriptions = [{ startIndex: 0, endIndex: 5, insert: 'Hi' }];
9
+ const result = applyFixToString(source, fixDescriptions);
10
+ expect(result).to.equal('Hi, world!');
11
+ });
12
+
13
+ it('should apply a couple of fix descriptions correctly', () => {
14
+ const source = 'Hello, world!';
15
+ const fixDescriptions = [
16
+ { startIndex: 7, endIndex: 7, insert: 'beautiful ' },
17
+ { startIndex: 12, endIndex: 13, insert: '' },
18
+ { startIndex: 0, endIndex: 5, insert: 'Hi' },
19
+ ];
20
+ const result = applyFixToString(source, fixDescriptions);
21
+ expect(result).to.equal('Hi, beautiful world');
22
+ });
23
+
24
+ it('should throw an error for overlapping fix descriptions', () => {
25
+ const source = 'Hello, world!';
26
+ const fixDescriptions = [
27
+ { startIndex: 5, endIndex: 7, insert: 'wonderful ' },
28
+ { startIndex: 6, endIndex: 8, insert: 'beautiful ' },
29
+ ];
30
+ expect(() => applyFixToString(source, fixDescriptions)).to.throw(
31
+ 'Overlapping ranges are not allowed',
32
+ );
33
+ });
34
+
35
+ it('should not throw an error for fixes ending and starting on the same index', () => {
36
+ const source = 'Hello, world!';
37
+ const fixDescriptions = [
38
+ { startIndex: 6, endIndex: 6, insert: ' wonderful' },
39
+ { startIndex: 6, endIndex: 7, insert: ' and beautiful ' },
40
+ ];
41
+ const result = applyFixToString(source, fixDescriptions);
42
+ expect(result).to.equal('Hello, wonderful and beautiful world!');
43
+ });
44
+
45
+ it('should throw an error for fix descriptions going over bounds', () => {
46
+ const source = 'Hello, world!';
47
+ const fixDescriptions = [{ startIndex: 0, endIndex: 20, insert: 'Hi' }];
48
+ expect(() => applyFixToString(source, fixDescriptions)).to.throw(
49
+ 'Fix description is going overboard',
50
+ );
51
+ });
52
+ });
@@ -0,0 +1,59 @@
1
+ import { Fix } from '../types';
2
+ import { flattenFixes } from './utils';
3
+
4
+ // First iteration imported @codemirror/state to do this but it's kind of
5
+ // a gross dependency. I asked chatGPT to make me something similar and,
6
+ // after a couple of prompts, was surprised to like the result.
7
+ //
8
+ // So here goes:
9
+ // A neat and mean (Source, Fix) => Source function :)
10
+ export function applyFixToString(source: string, fix: Fix): string {
11
+ // Create a copy of the original string to store the modified result
12
+ let newStr = source;
13
+
14
+ // Initialize an offset variable to keep track of the changes in index
15
+ // due to previous fixes. This is necessary because each modification
16
+ // is assumed to be to the original document, and we need to account for
17
+ // the index drift caused by previous fixes.
18
+ let offset = 0;
19
+
20
+ // Sort modifications by startIndex in ascending order to ensure that
21
+ // modifications with lower indices are applied first. This helps to
22
+ // maintain the correct index positions for subsequent modifications.
23
+ const sortedFixes = flattenFixes(fix).sort((a, b) => a.startIndex - b.startIndex);
24
+
25
+ // Verify that the fixes are valid and do not overlap
26
+ for (let i = 0; i < sortedFixes.length - 1; i++) {
27
+ const currentFix = sortedFixes[i];
28
+ const nextFix = sortedFixes[i + 1];
29
+
30
+ // Check if the current fix overlaps with the next fix
31
+ if (currentFix.endIndex > nextFix.startIndex) {
32
+ throw new Error('Overlapping ranges are not allowed');
33
+ }
34
+ }
35
+
36
+ for (const fix of sortedFixes) {
37
+ // Drift-adjust the fix location
38
+ const startIndex = fix.startIndex + offset;
39
+ const endIndex = fix.endIndex + offset;
40
+
41
+ // Throw an error if either startIndex or endIndex are out of bounds.
42
+ if (
43
+ startIndex < 0 ||
44
+ startIndex > newStr.length ||
45
+ endIndex < startIndex ||
46
+ endIndex > newStr.length
47
+ ) {
48
+ throw new Error('Fix description is going overboard');
49
+ }
50
+
51
+ // Perform the modification at the drift-adjusted location
52
+ newStr = newStr.slice(0, startIndex) + fix.insert + newStr.slice(endIndex);
53
+
54
+ // Account for "index drift" as the modifications are applied.
55
+ offset += fix.insert.length - (endIndex - startIndex);
56
+ }
57
+
58
+ return newStr;
59
+ }
@@ -0,0 +1,85 @@
1
+ import { expect, describe, it } from 'vitest';
2
+ import { autofix, prettyJSON } from '../test';
3
+ import { Offense, SourceCodeType } from '../types';
4
+
5
+ describe('Module: autofix', () => {
6
+ it('should apply a list of all safe changes', async () => {
7
+ const mockTheme = {
8
+ 'a.liquid': 'Banana world',
9
+ 'b.json': prettyJSON({ a: 'b' }),
10
+ };
11
+
12
+ const offenses: Offense[] = [
13
+ {
14
+ type: SourceCodeType.LiquidHtml,
15
+ fix: (corrector) => corrector.insert(2, 'nanana'),
16
+ uri: 'file:///a.liquid',
17
+ check: 'Mock Check',
18
+ message: 'Mock check message',
19
+ severity: 0,
20
+ start: { line: 0, character: 0, index: 0 },
21
+ end: { line: 0, character: 0, index: 0 },
22
+ },
23
+ {
24
+ type: SourceCodeType.LiquidHtml,
25
+ suggest: [
26
+ {
27
+ message: 'unsafe change',
28
+ fix: (corrector) => {
29
+ corrector.replace(0, 5, 'nooooo');
30
+ },
31
+ },
32
+ ],
33
+ uri: 'file:///a.liquid',
34
+ check: 'Mock Check',
35
+ message: 'Mock check message',
36
+ severity: 0,
37
+ start: { line: 0, character: 0, index: 0 },
38
+ end: { line: 0, character: 0, index: 0 },
39
+ },
40
+ {
41
+ type: SourceCodeType.JSON,
42
+ fix: (corrector) => {
43
+ corrector.add('a.b.c', 'c');
44
+ corrector.add('a.b.d', 'd');
45
+ },
46
+ uri: 'file:///b.json',
47
+ check: 'Mock Check',
48
+ message: 'Mock check message',
49
+ severity: 0,
50
+ start: { line: 0, character: 0, index: 0 },
51
+ end: { line: 0, character: 0, index: 0 },
52
+ },
53
+ {
54
+ type: SourceCodeType.JSON,
55
+ suggest: [
56
+ {
57
+ message: 'unsafe change',
58
+ fix: (corrector) => {
59
+ corrector.remove('a.b');
60
+ },
61
+ },
62
+ ],
63
+ uri: 'file:///b.json',
64
+ check: 'Mock Check',
65
+ message: 'Mock check message',
66
+ severity: 0,
67
+ start: { line: 0, character: 0, index: 0 },
68
+ end: { line: 0, character: 0, index: 0 },
69
+ },
70
+ ];
71
+
72
+ const fixed = await autofix(mockTheme, offenses);
73
+ expect(fixed['a.liquid']).to.eql('Bananananana world');
74
+ expect(fixed['b.json']).to.eql(
75
+ prettyJSON({
76
+ a: {
77
+ b: {
78
+ c: 'c',
79
+ d: 'd',
80
+ },
81
+ },
82
+ }),
83
+ );
84
+ });
85
+ });
@@ -0,0 +1,41 @@
1
+ import { FixApplicator, Offense, SourceCodeType, Theme } from '../types';
2
+ import { WithRequired } from '../utils/types';
3
+ import { createCorrector } from './correctors';
4
+ import { flattenFixes } from './utils';
5
+
6
+ type FixableOffense<S extends SourceCodeType> = S extends SourceCodeType
7
+ ? WithRequired<Offense<S>, 'fix'>
8
+ : never;
9
+
10
+ /**
11
+ * Takes a theme, list of offenses and a fixApplicator and runs all the
12
+ * safe ones on the theme.
13
+ *
14
+ * Note that offense.fix is assumed to be safe, unlike offense.suggest
15
+ * options.
16
+ */
17
+ export async function autofix(sourceCodes: Theme, offenses: Offense[], applyFixes: FixApplicator) {
18
+ const fixableOffenses = offenses.filter(
19
+ (offense): offense is FixableOffense<SourceCodeType> => 'fix' in offense && !!offense.fix,
20
+ );
21
+
22
+ const promises = [];
23
+
24
+ for (const sourceCode of sourceCodes) {
25
+ const sourceCodeOffenses = fixableOffenses.filter((offense) => offense.uri === sourceCode.uri);
26
+
27
+ if (sourceCodeOffenses.length === 0) {
28
+ continue;
29
+ }
30
+
31
+ const corrector = createCorrector(sourceCode.type, sourceCode.source);
32
+ for (const offense of sourceCodeOffenses) {
33
+ // I'm being slightly too clever for TypeScript here...
34
+ offense.fix(corrector as any);
35
+ }
36
+
37
+ promises.push(applyFixes(sourceCode, flattenFixes(corrector.fix)));
38
+ }
39
+
40
+ await Promise.all(promises);
41
+ }
File without changes
@@ -0,0 +1,5 @@
1
+ import { Fix } from '../../types';
2
+
3
+ export interface BaseCorrector {
4
+ get fix(): Fix;
5
+ }
@@ -0,0 +1,78 @@
1
+ import { Fix } from '../../types';
2
+ import { BaseCorrector } from './base-corrector';
3
+
4
+ /**
5
+ * The corrector is a helper that collects Fix objects. At the end we
6
+ * collect those fix objects and apply them on the source code to obtain a
7
+ * "fixed" file.
8
+ *
9
+ * We cannot fix on overlapping ranges.
10
+ *
11
+ * All fix are assumed to be on the file without modifications. The
12
+ * FixApplicator should take care of knowing where to apply fixes as the
13
+ * changes are applied.
14
+ */
15
+ export class GraphQLCorrector implements BaseCorrector {
16
+ public readonly fix: Fix[] = [] satisfies Fix;
17
+
18
+ constructor(public source: string) {}
19
+
20
+ /**
21
+ * insert text before the given index
22
+ *
23
+ * @example
24
+ * corrector.insert(
25
+ * node.position.start,
26
+ * node.position.start,
27
+ * 'prefix node with this content'
28
+ * )
29
+ *
30
+ * corrector.insert(
31
+ * node.position.end,
32
+ * node.position.end,
33
+ * 'suffix node with this content (since position.end is excluded)'
34
+ * )
35
+ */
36
+ insert(index: number, text: string) {
37
+ this.fix.push({
38
+ startIndex: index,
39
+ endIndex: index,
40
+ insert: text,
41
+ });
42
+ }
43
+
44
+ /**
45
+ * replace text between start (included) and end (excluded) with text.
46
+ *
47
+ * @example
48
+ * corrector.replace(
49
+ * node.position.start,
50
+ * node.position.end,
51
+ * 'ho ho ho',
52
+ * );
53
+ */
54
+ replace(start: number, end: number, text: string) {
55
+ this.fix.push({
56
+ startIndex: start,
57
+ endIndex: end,
58
+ insert: text,
59
+ });
60
+ }
61
+
62
+ /**
63
+ * remove text between start (included) and end (excluded)
64
+ *
65
+ * @example
66
+ * corrector.remove(
67
+ * node.position.start,
68
+ * node.position.end,
69
+ * )
70
+ */
71
+ remove(start: number, end: number) {
72
+ this.fix.push({
73
+ startIndex: start,
74
+ endIndex: end,
75
+ insert: '',
76
+ });
77
+ }
78
+ }
@@ -0,0 +1,29 @@
1
+ import { Corrector, SourceCodeType } from '../../types';
2
+ import { JSONCorrector } from './json-corrector';
3
+ import { StringCorrector } from './string-corrector';
4
+ import { GraphQLCorrector } from './graphql-corrector';
5
+
6
+ export { JSONCorrector, StringCorrector, GraphQLCorrector };
7
+
8
+ export function createCorrector<S extends SourceCodeType>(
9
+ sourceCodeType: S,
10
+ source: string,
11
+ ): Corrector<S> {
12
+ switch (sourceCodeType) {
13
+ case SourceCodeType.JSON: {
14
+ return new JSONCorrector(source) as Corrector<typeof sourceCodeType>;
15
+ }
16
+ case SourceCodeType.LiquidHtml: {
17
+ return new StringCorrector(source) as Corrector<typeof sourceCodeType>;
18
+ }
19
+ case SourceCodeType.GraphQL:
20
+ return new GraphQLCorrector(source) as Corrector<typeof sourceCodeType>;
21
+ default: {
22
+ return assertNever(sourceCodeType);
23
+ }
24
+ }
25
+ }
26
+
27
+ function assertNever(x: never): never {
28
+ throw new Error(`Case statement not exhausted: ${x}`);
29
+ }
@@ -0,0 +1,111 @@
1
+ import { expect, describe, it } from 'vitest';
2
+ import { JSONCorrector } from './json-corrector';
3
+ import { prettyJSON } from '../../test';
4
+
5
+ describe('Module: JSONCorrector', () => {
6
+ it('should collect add patches and apply them', () => {
7
+ const file = JSON.stringify({
8
+ a: {
9
+ b: 'b',
10
+ },
11
+ });
12
+
13
+ const corrector = new JSONCorrector(file);
14
+ corrector.add('a.c', 'c');
15
+ corrector.add('a.d', 'd');
16
+
17
+ expect(corrector.fix).to.eql({
18
+ startIndex: 0,
19
+ endIndex: file.length,
20
+ insert: prettyJSON({
21
+ a: {
22
+ b: 'b',
23
+ c: 'c',
24
+ d: 'd',
25
+ },
26
+ }),
27
+ });
28
+ });
29
+
30
+ it('should collect add patches that deeply add new properties and apply them', () => {
31
+ const file = JSON.stringify({
32
+ a: {
33
+ b: 'b',
34
+ },
35
+ });
36
+
37
+ const corrector = new JSONCorrector(file);
38
+ corrector.add('c.d.e', 'e');
39
+ corrector.add('c.d.f', 'f');
40
+
41
+ expect(corrector.fix).to.eql({
42
+ startIndex: 0,
43
+ endIndex: file.length,
44
+ insert: prettyJSON({
45
+ a: {
46
+ b: 'b',
47
+ },
48
+ c: {
49
+ d: {
50
+ e: 'e',
51
+ f: 'f',
52
+ },
53
+ },
54
+ }),
55
+ });
56
+ });
57
+
58
+ it('should forcefully replace the wrong type with a new one', () => {
59
+ const file = JSON.stringify({
60
+ a: {
61
+ b: 'b',
62
+ },
63
+ });
64
+
65
+ const corrector = new JSONCorrector(file);
66
+ corrector.add('a.b.c', 'c');
67
+ corrector.add('a.b.d', 'd');
68
+
69
+ expect(corrector.fix).to.eql({
70
+ startIndex: 0,
71
+ endIndex: file.length,
72
+ insert: prettyJSON({
73
+ a: {
74
+ b: {
75
+ c: 'c',
76
+ d: 'd',
77
+ },
78
+ },
79
+ }),
80
+ });
81
+ });
82
+
83
+ it('should remove keys', () => {
84
+ const file = JSON.stringify({
85
+ a: {
86
+ b: 'b',
87
+ },
88
+ c: {
89
+ d: 'd',
90
+ e: 'e',
91
+ },
92
+ f: {
93
+ g: 'g',
94
+ },
95
+ });
96
+
97
+ const corrector = new JSONCorrector(file);
98
+ corrector.remove('a.b');
99
+ corrector.remove('c.d');
100
+ corrector.remove('f');
101
+
102
+ expect(corrector.fix).to.eql({
103
+ startIndex: 0,
104
+ endIndex: file.length,
105
+ insert: prettyJSON({
106
+ a: {},
107
+ c: { e: 'e' },
108
+ }),
109
+ });
110
+ });
111
+ });
@@ -0,0 +1,106 @@
1
+ import { set as lodashSet, unset as lodashUnset } from 'lodash';
2
+ import { Fix } from '../../types';
3
+ import { BaseCorrector } from './base-corrector';
4
+
5
+ type Operation = AddOperation | RemoveOperation;
6
+
7
+ type AddOperation = {
8
+ type: 'add';
9
+ path: string;
10
+ value: any;
11
+ };
12
+
13
+ type RemoveOperation = {
14
+ type: 'remove';
15
+ path: string;
16
+ };
17
+
18
+ // This function mutates json. So use it in a reducer and consider it a
19
+ // fire and forget.
20
+ function applyPatch(json: any, operation: Operation) {
21
+ switch (operation.type) {
22
+ case 'add': {
23
+ return lodashSet(json, operation.path, operation.value);
24
+ }
25
+
26
+ case 'remove': {
27
+ lodashUnset(json, operation.path);
28
+ return json;
29
+ }
30
+ }
31
+ }
32
+
33
+ /**
34
+ * The JSONCorrector collects patches and then creates a Fix object
35
+ * that represents the application of all the collected patches on the
36
+ * source document.
37
+ *
38
+ * Fixes are assumed to not be overlapping.
39
+ */
40
+ export class JSONCorrector implements BaseCorrector {
41
+ private readonly patches: Operation[] = [];
42
+
43
+ constructor(public source: string) {}
44
+
45
+ /**
46
+ * corrector.fix is the data representation of all the changes to source.
47
+ */
48
+ public get fix(): Fix {
49
+ if (this.patches.length === 0) return [];
50
+
51
+ const json = this.patches.reduce(applyPatch, JSON.parse(this.source));
52
+
53
+ return {
54
+ startIndex: 0,
55
+ endIndex: this.source.length,
56
+ insert: JSON.stringify(json, null, 2),
57
+ };
58
+ }
59
+
60
+ /**
61
+ * Add value at dot delited JSON path
62
+ *
63
+ * @example
64
+ * corrector.add('missing.key', 'TO DO')
65
+ */
66
+ add(path: string, value: any): void {
67
+ this.patches.push({
68
+ type: 'add',
69
+ path,
70
+ value,
71
+ });
72
+ }
73
+
74
+ /**
75
+ * Replace a value at dot delited JSON path.
76
+ *
77
+ * @example
78
+ * corrector.replace('missing.key', 'TO DO')
79
+ */
80
+ replace(path: string, value: any): void {
81
+ this.patches.push(
82
+ {
83
+ type: 'remove',
84
+ path,
85
+ },
86
+ {
87
+ type: 'add',
88
+ path,
89
+ value,
90
+ },
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Remove key from JSON object
96
+ *
97
+ * @example
98
+ * corrector.remove('unneeded.key')
99
+ */
100
+ remove(path: string): void {
101
+ this.patches.push({
102
+ type: 'remove',
103
+ path,
104
+ });
105
+ }
106
+ }