@platformos/platformos-check-common 0.0.7 → 0.0.9

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 (337) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +4 -4
  3. package/dist/AugmentedPlatformOSDocset.d.ts +11 -0
  4. package/dist/AugmentedPlatformOSDocset.js +81 -0
  5. package/dist/AugmentedPlatformOSDocset.js.map +1 -0
  6. package/dist/JSONValidator.js +1 -1
  7. package/dist/JSONValidator.js.map +1 -1
  8. package/dist/checks/deprecated-filter/index.js +4 -41
  9. package/dist/checks/deprecated-filter/index.js.map +1 -1
  10. package/dist/checks/deprecated-tag/index.js +21 -22
  11. package/dist/checks/deprecated-tag/index.js.map +1 -1
  12. package/dist/checks/duplicate-function-arguments/index.js +1 -1
  13. package/dist/checks/duplicate-function-arguments/index.js.map +1 -1
  14. package/dist/checks/duplicate-render-partial-arguments/index.js +1 -1
  15. package/dist/checks/duplicate-render-partial-arguments/index.js.map +1 -1
  16. package/dist/checks/graphql/index.js +1 -1
  17. package/dist/checks/graphql/index.js.map +1 -1
  18. package/dist/checks/graphql-variables/index.js +4 -0
  19. package/dist/checks/graphql-variables/index.js.map +1 -1
  20. package/dist/checks/img-width-and-height/index.js +1 -1
  21. package/dist/checks/img-width-and-height/index.js.map +1 -1
  22. package/dist/checks/index.d.ts +3 -3
  23. package/dist/checks/index.js +4 -79
  24. package/dist/checks/index.js.map +1 -1
  25. package/dist/checks/json-syntax-error/index.js +1 -1
  26. package/dist/checks/json-syntax-error/index.js.map +1 -1
  27. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js +1 -1
  28. package/dist/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.js.map +1 -1
  29. package/dist/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.d.ts +19 -0
  30. package/dist/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.js +79 -0
  31. package/dist/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.js.map +1 -0
  32. package/dist/checks/liquid-html-syntax-error/checks/UnknownTag.d.ts +3 -0
  33. package/dist/checks/liquid-html-syntax-error/checks/UnknownTag.js +32 -0
  34. package/dist/checks/liquid-html-syntax-error/checks/UnknownTag.js.map +1 -0
  35. package/dist/checks/liquid-html-syntax-error/index.js +23 -5
  36. package/dist/checks/liquid-html-syntax-error/index.js.map +1 -1
  37. package/dist/checks/matching-translations/index.d.ts +2 -2
  38. package/dist/checks/matching-translations/index.js +114 -90
  39. package/dist/checks/matching-translations/index.js.map +1 -1
  40. package/dist/checks/metadata-params/index.js +6 -3
  41. package/dist/checks/metadata-params/index.js.map +1 -1
  42. package/dist/checks/missing-asset/index.js +1 -1
  43. package/dist/checks/missing-asset/index.js.map +1 -1
  44. package/dist/checks/missing-partial/index.d.ts +6 -0
  45. package/dist/checks/missing-partial/index.js +70 -0
  46. package/dist/checks/missing-partial/index.js.map +1 -0
  47. package/dist/checks/orphaned-partial/index.js +4 -4
  48. package/dist/checks/orphaned-partial/index.js.map +1 -1
  49. package/dist/checks/parser-blocking-script/index.js +10 -36
  50. package/dist/checks/parser-blocking-script/index.js.map +1 -1
  51. package/dist/checks/parser-blocking-script/suggestions.d.ts +1 -2
  52. package/dist/checks/parser-blocking-script/suggestions.js +1 -11
  53. package/dist/checks/parser-blocking-script/suggestions.js.map +1 -1
  54. package/dist/checks/reserved-doc-param-names/index.js +6 -5
  55. package/dist/checks/reserved-doc-param-names/index.js.map +1 -1
  56. package/dist/checks/translation-key-exists/index.js +1 -1
  57. package/dist/checks/translation-key-exists/index.js.map +1 -1
  58. package/dist/checks/unclosed-html-element/index.js +5 -1
  59. package/dist/checks/unclosed-html-element/index.js.map +1 -1
  60. package/dist/checks/undefined-object/index.js +13 -31
  61. package/dist/checks/undefined-object/index.js.map +1 -1
  62. package/dist/checks/unique-doc-param-names/index.js +1 -1
  63. package/dist/checks/unique-doc-param-names/index.js.map +1 -1
  64. package/dist/checks/unknown-filter/index.js +3 -3
  65. package/dist/checks/unknown-filter/index.js.map +1 -1
  66. package/dist/checks/unknown-property/index.js +1 -1
  67. package/dist/checks/unknown-property/index.js.map +1 -1
  68. package/dist/checks/unrecognized-render-partial-arguments/index.js +2 -2
  69. package/dist/checks/unrecognized-render-partial-arguments/index.js.map +1 -1
  70. package/dist/checks/unused-assign/index.js +1 -1
  71. package/dist/checks/unused-assign/index.js.map +1 -1
  72. package/dist/checks/unused-doc-param/index.js +1 -1
  73. package/dist/checks/unused-doc-param/index.js.map +1 -1
  74. package/dist/checks/utils.js +1 -1
  75. package/dist/checks/utils.js.map +1 -1
  76. package/dist/checks/valid-content-for-arguments/index.js +1 -1
  77. package/dist/checks/valid-content-for-arguments/index.js.map +1 -1
  78. package/dist/checks/valid-doc-param-types/index.js +4 -4
  79. package/dist/checks/valid-doc-param-types/index.js.map +1 -1
  80. package/dist/checks/valid-html-translation/index.d.ts +2 -2
  81. package/dist/checks/valid-html-translation/index.js +4 -4
  82. package/dist/checks/valid-html-translation/index.js.map +1 -1
  83. package/dist/checks/valid-json/index.js +1 -1
  84. package/dist/checks/valid-json/index.js.map +1 -1
  85. package/dist/checks/valid-render-partial-argument-types/index.js +2 -2
  86. package/dist/checks/valid-render-partial-argument-types/index.js.map +1 -1
  87. package/dist/checks/variable-name/index.js +1 -1
  88. package/dist/checks/variable-name/index.js.map +1 -1
  89. package/dist/context-utils.d.ts +18 -7
  90. package/dist/context-utils.js +68 -109
  91. package/dist/context-utils.js.map +1 -1
  92. package/dist/disabled-checks/index.js +4 -2
  93. package/dist/disabled-checks/index.js.map +1 -1
  94. package/dist/doc-generator/DocBlockGenerator.d.ts +16 -0
  95. package/dist/doc-generator/DocBlockGenerator.js +464 -0
  96. package/dist/doc-generator/DocBlockGenerator.js.map +1 -0
  97. package/dist/doc-generator/index.d.ts +1 -0
  98. package/dist/doc-generator/index.js +6 -0
  99. package/dist/doc-generator/index.js.map +1 -0
  100. package/dist/find-root.d.ts +7 -10
  101. package/dist/find-root.js +10 -17
  102. package/dist/find-root.js.map +1 -1
  103. package/dist/fixes/autofix.d.ts +4 -4
  104. package/dist/fixes/autofix.js +2 -2
  105. package/dist/fixes/autofix.js.map +1 -1
  106. package/dist/fixes/correctors/index.js +4 -0
  107. package/dist/fixes/correctors/index.js.map +1 -1
  108. package/dist/index.d.ts +5 -5
  109. package/dist/index.js +50 -17
  110. package/dist/index.js.map +1 -1
  111. package/dist/jsonc/parse.d.ts +1 -1
  112. package/dist/jsonc/parse.js +1 -1
  113. package/dist/liquid-doc/arguments.d.ts +7 -8
  114. package/dist/liquid-doc/arguments.js +28 -29
  115. package/dist/liquid-doc/arguments.js.map +1 -1
  116. package/dist/liquid-doc/liquidDoc.d.ts +1 -1
  117. package/dist/liquid-doc/liquidDoc.js.map +1 -1
  118. package/dist/liquid-doc/utils.d.ts +3 -3
  119. package/dist/liquid-doc/utils.js +14 -3
  120. package/dist/liquid-doc/utils.js.map +1 -1
  121. package/dist/path.d.ts +1 -0
  122. package/dist/path.js +16 -1
  123. package/dist/path.js.map +1 -1
  124. package/{src/test/MockTheme.ts → dist/test/MockApp.d.ts} +2 -3
  125. package/dist/test/MockApp.js +16 -0
  126. package/dist/test/MockApp.js.map +1 -0
  127. package/dist/test/MockFileSystem.d.ts +3 -3
  128. package/dist/test/MockFileSystem.js +6 -6
  129. package/dist/test/MockFileSystem.js.map +1 -1
  130. package/dist/test/index.d.ts +1 -1
  131. package/dist/test/index.js +1 -1
  132. package/dist/test/index.js.map +1 -1
  133. package/dist/test/test-helper.d.ts +10 -9
  134. package/dist/test/test-helper.js +15 -106
  135. package/dist/test/test-helper.js.map +1 -1
  136. package/dist/to-schema.d.ts +1 -1
  137. package/dist/to-source-code.d.ts +3 -2
  138. package/dist/to-source-code.js +20 -0
  139. package/dist/to-source-code.js.map +1 -1
  140. package/dist/tsconfig.tsbuildinfo +1 -1
  141. package/dist/types/platformos-liquid-docs.d.ts +128 -0
  142. package/dist/types/platformos-liquid-docs.js +3 -0
  143. package/dist/types/platformos-liquid-docs.js.map +1 -0
  144. package/dist/types/schemas/index.d.ts +0 -2
  145. package/dist/types/schemas/index.js.map +1 -1
  146. package/dist/types.d.ts +26 -67
  147. package/dist/types.js +3 -5
  148. package/dist/types.js.map +1 -1
  149. package/dist/utils/block.js.map +1 -1
  150. package/dist/utils/index.d.ts +0 -1
  151. package/dist/utils/index.js +0 -1
  152. package/dist/utils/index.js.map +1 -1
  153. package/dist/yaml/parse.d.ts +5 -0
  154. package/dist/yaml/parse.js +94 -0
  155. package/dist/yaml/parse.js.map +1 -0
  156. package/package.json +4 -3
  157. package/src/{AugmentedThemeDocset.spec.ts → AugmentedPlatformOSDocset.spec.ts} +47 -34
  158. package/src/AugmentedPlatformOSDocset.ts +89 -0
  159. package/src/JSONValidator.ts +1 -1
  160. package/src/checks/deprecated-filter/index.spec.ts +76 -248
  161. package/src/checks/deprecated-filter/index.ts +5 -53
  162. package/src/checks/deprecated-tag/index.spec.ts +85 -34
  163. package/src/checks/deprecated-tag/index.ts +27 -22
  164. package/src/checks/duplicate-function-arguments/index.ts +1 -1
  165. package/src/checks/duplicate-render-partial-arguments/index.spec.ts +12 -12
  166. package/src/checks/duplicate-render-partial-arguments/index.ts +1 -1
  167. package/src/checks/graphql/index.ts +1 -1
  168. package/src/checks/graphql-variables/index.spec.ts +95 -0
  169. package/src/checks/graphql-variables/index.ts +4 -0
  170. package/src/checks/img-width-and-height/index.ts +2 -2
  171. package/src/checks/index.ts +11 -80
  172. package/src/checks/invalid-hash-assign-target/index.spec.ts +27 -27
  173. package/src/checks/json-syntax-error/index.ts +2 -2
  174. package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpression.spec.ts +0 -11
  175. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.spec.ts +1 -2
  176. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.ts +2 -2
  177. package/src/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.spec.ts +259 -0
  178. package/src/checks/liquid-html-syntax-error/checks/InvalidTagSyntax.ts +89 -0
  179. package/src/checks/liquid-html-syntax-error/checks/UnknownTag.spec.ts +293 -0
  180. package/src/checks/liquid-html-syntax-error/checks/UnknownTag.ts +43 -0
  181. package/src/checks/liquid-html-syntax-error/index.spec.ts +1 -6
  182. package/src/checks/liquid-html-syntax-error/index.ts +26 -5
  183. package/src/checks/matching-translations/index.spec.ts +187 -354
  184. package/src/checks/matching-translations/index.ts +117 -107
  185. package/src/checks/metadata-params/index.ts +6 -8
  186. package/src/checks/missing-asset/index.ts +1 -1
  187. package/src/checks/{missing-template → missing-partial}/index.spec.ts +6 -6
  188. package/src/checks/{missing-template → missing-partial}/index.ts +12 -26
  189. package/src/checks/orphaned-partial/index.ts +3 -3
  190. package/src/checks/parser-blocking-script/index.spec.ts +0 -118
  191. package/src/checks/parser-blocking-script/index.ts +3 -33
  192. package/src/checks/parser-blocking-script/suggestions.ts +1 -28
  193. package/src/checks/translation-key-exists/index.ts +1 -1
  194. package/src/checks/unclosed-html-element/index.ts +5 -1
  195. package/src/checks/undefined-object/index.spec.ts +32 -111
  196. package/src/checks/undefined-object/index.ts +15 -34
  197. package/src/checks/unique-doc-param-names/index.ts +1 -1
  198. package/src/checks/unknown-filter/index.spec.ts +2 -2
  199. package/src/checks/unknown-filter/index.ts +3 -3
  200. package/src/checks/unknown-property/index.ts +1 -1
  201. package/src/checks/unrecognized-render-partial-arguments/index.spec.ts +5 -5
  202. package/src/checks/unrecognized-render-partial-arguments/index.ts +2 -5
  203. package/src/checks/unused-assign/index.spec.ts +0 -30
  204. package/src/checks/unused-assign/index.ts +2 -2
  205. package/src/checks/unused-doc-param/index.ts +1 -1
  206. package/src/checks/utils.ts +1 -1
  207. package/src/checks/valid-doc-param-types/index.ts +4 -4
  208. package/src/checks/valid-html-translation/index.spec.ts +42 -32
  209. package/src/checks/valid-html-translation/index.ts +7 -7
  210. package/src/checks/valid-json/index.ts +2 -2
  211. package/src/checks/valid-render-partial-argument-types/index.spec.ts +13 -13
  212. package/src/checks/valid-render-partial-argument-types/index.ts +2 -5
  213. package/src/checks/variable-name/index.ts +1 -1
  214. package/src/context-utils.spec.ts +49 -77
  215. package/src/context-utils.ts +81 -129
  216. package/src/disabled-checks/index.spec.ts +26 -26
  217. package/src/disabled-checks/index.ts +2 -2
  218. package/src/disabled-checks/test-checks.ts +4 -4
  219. package/src/find-root.ts +12 -22
  220. package/src/fixes/autofix.spec.ts +2 -2
  221. package/src/fixes/autofix.ts +4 -4
  222. package/src/fixes/correctors/index.ts +4 -0
  223. package/src/ignore.spec.ts +4 -5
  224. package/src/index.ts +51 -21
  225. package/src/jsonc/parse.ts +1 -1
  226. package/src/liquid-doc/arguments.spec.ts +19 -45
  227. package/src/liquid-doc/arguments.ts +35 -42
  228. package/src/liquid-doc/liquidDoc.spec.ts +1 -1
  229. package/src/liquid-doc/liquidDoc.ts +1 -2
  230. package/src/liquid-doc/utils.ts +17 -8
  231. package/src/path.ts +16 -0
  232. package/src/test/MockApp.ts +17 -0
  233. package/src/test/MockFileSystem.spec.ts +10 -11
  234. package/src/test/MockFileSystem.ts +6 -6
  235. package/src/test/contain-offense.spec.ts +11 -3
  236. package/src/test/index.ts +1 -1
  237. package/src/test/test-helper.ts +43 -145
  238. package/src/to-source-code.ts +20 -1
  239. package/src/types/{theme-liquid-docs.ts → platformos-liquid-docs.ts} +8 -13
  240. package/src/types.ts +29 -92
  241. package/src/utils/index.ts +0 -1
  242. package/src/visitor.spec.ts +2 -2
  243. package/src/yaml/parse.ts +111 -0
  244. package/src/AugmentedThemeDocset.ts +0 -137
  245. package/src/checks/app-block-missing-schema/index.spec.ts +0 -121
  246. package/src/checks/app-block-missing-schema/index.ts +0 -46
  247. package/src/checks/app-block-valid-tags/index.spec.ts +0 -96
  248. package/src/checks/app-block-valid-tags/index.ts +0 -54
  249. package/src/checks/asset-preload/index.spec.ts +0 -78
  250. package/src/checks/asset-preload/index.ts +0 -65
  251. package/src/checks/asset-size-app-block-css/index.spec.ts +0 -88
  252. package/src/checks/asset-size-app-block-css/index.ts +0 -78
  253. package/src/checks/asset-size-app-block-javascript/index.spec.ts +0 -66
  254. package/src/checks/asset-size-app-block-javascript/index.ts +0 -78
  255. package/src/checks/asset-size-css/index.spec.ts +0 -166
  256. package/src/checks/asset-size-css/index.ts +0 -160
  257. package/src/checks/asset-size-javascript/index.spec.ts +0 -184
  258. package/src/checks/asset-size-javascript/index.ts +0 -144
  259. package/src/checks/block-id-usage/index.spec.ts +0 -76
  260. package/src/checks/block-id-usage/index.ts +0 -72
  261. package/src/checks/cdn-preconnect/index.spec.ts +0 -40
  262. package/src/checks/cdn-preconnect/index.ts +0 -43
  263. package/src/checks/content-for-header-modification/index.spec.ts +0 -65
  264. package/src/checks/content-for-header-modification/index.ts +0 -72
  265. package/src/checks/deprecate-bgsizes/index.spec.ts +0 -41
  266. package/src/checks/deprecate-bgsizes/index.ts +0 -49
  267. package/src/checks/deprecate-lazysizes/index.spec.ts +0 -26
  268. package/src/checks/deprecate-lazysizes/index.ts +0 -58
  269. package/src/checks/deprecated-filter/fixes.ts +0 -264
  270. package/src/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.ts +0 -1343
  271. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.spec.ts +0 -613
  272. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.ts +0 -284
  273. package/src/checks/deprecated-fonts-on-settings-schema/index.spec.ts +0 -102
  274. package/src/checks/deprecated-fonts-on-settings-schema/index.ts +0 -66
  275. package/src/checks/duplicate-content-for-arguments/index.spec.ts +0 -98
  276. package/src/checks/duplicate-content-for-arguments/index.ts +0 -43
  277. package/src/checks/empty-block-content/index.spec.ts +0 -117
  278. package/src/checks/empty-block-content/index.ts +0 -60
  279. package/src/checks/hardcoded-routes/index.spec.ts +0 -58
  280. package/src/checks/hardcoded-routes/index.ts +0 -100
  281. package/src/checks/json-missing-block/index.spec.ts +0 -435
  282. package/src/checks/json-missing-block/index.ts +0 -56
  283. package/src/checks/json-missing-block/missing-block-utils.ts +0 -147
  284. package/src/checks/liquid-free-settings/index.spec.ts +0 -180
  285. package/src/checks/liquid-free-settings/index.ts +0 -79
  286. package/src/checks/missing-content-for-arguments/index.spec.ts +0 -144
  287. package/src/checks/missing-content-for-arguments/index.ts +0 -46
  288. package/src/checks/pagination-size/index.spec.ts +0 -158
  289. package/src/checks/pagination-size/index.ts +0 -104
  290. package/src/checks/remote-asset/index.spec.ts +0 -280
  291. package/src/checks/remote-asset/index.ts +0 -238
  292. package/src/checks/reserved-doc-param-names/index.spec.ts +0 -62
  293. package/src/checks/reserved-doc-param-names/index.ts +0 -57
  294. package/src/checks/schema-presets-block-order/index.spec.ts +0 -344
  295. package/src/checks/schema-presets-block-order/index.ts +0 -154
  296. package/src/checks/schema-presets-static-blocks/index.spec.ts +0 -145
  297. package/src/checks/schema-presets-static-blocks/index.ts +0 -126
  298. package/src/checks/static-stylesheet-and-javascript-tags/index.spec.ts +0 -257
  299. package/src/checks/static-stylesheet-and-javascript-tags/index.ts +0 -48
  300. package/src/checks/unique-settings-id/index.spec.ts +0 -24
  301. package/src/checks/unique-settings-id/index.ts +0 -84
  302. package/src/checks/unique-settings-id/test-data.ts +0 -1191
  303. package/src/checks/unique-static-block-id/index.spec.ts +0 -55
  304. package/src/checks/unique-static-block-id/index.ts +0 -60
  305. package/src/checks/unrecognized-content-for-arguments/index.spec.ts +0 -145
  306. package/src/checks/unrecognized-content-for-arguments/index.ts +0 -55
  307. package/src/checks/valid-block-target/index.spec.ts +0 -1396
  308. package/src/checks/valid-block-target/index.ts +0 -142
  309. package/src/checks/valid-content-for-argument-types/index.spec.ts +0 -382
  310. package/src/checks/valid-content-for-argument-types/index.ts +0 -42
  311. package/src/checks/valid-content-for-arguments/index.spec.ts +0 -107
  312. package/src/checks/valid-content-for-arguments/index.ts +0 -98
  313. package/src/checks/valid-local-blocks/index.spec.ts +0 -286
  314. package/src/checks/valid-local-blocks/index.ts +0 -100
  315. package/src/checks/valid-local-blocks/valid-block-utils.ts +0 -97
  316. package/src/checks/valid-schema/index.spec.ts +0 -174
  317. package/src/checks/valid-schema/index.ts +0 -41
  318. package/src/checks/valid-schema-name/index.spec.ts +0 -112
  319. package/src/checks/valid-schema-name/index.ts +0 -75
  320. package/src/checks/valid-settings-key/index.spec.ts +0 -321
  321. package/src/checks/valid-settings-key/index.ts +0 -144
  322. package/src/checks/valid-static-block-type/index.spec.ts +0 -38
  323. package/src/checks/valid-static-block-type/index.ts +0 -58
  324. package/src/checks/valid-visible-if/index.spec.ts +0 -619
  325. package/src/checks/valid-visible-if/index.ts +0 -184
  326. package/src/checks/valid-visible-if/visible-if-utils.ts +0 -158
  327. package/src/tags/content-for.ts +0 -25
  328. package/src/to-schema.ts +0 -231
  329. package/src/types/schemas/index.ts +0 -5
  330. package/src/types/schemas/preset.ts +0 -52
  331. package/src/types/schemas/section.ts +0 -86
  332. package/src/types/schemas/setting.ts +0 -320
  333. package/src/types/schemas/template.ts +0 -34
  334. package/src/types/schemas/theme-block.ts +0 -34
  335. package/src/types/theme-schemas.ts +0 -80
  336. package/src/utils/block.ts +0 -300
  337. package/src/utils/markup.ts +0 -10
@@ -3,140 +3,71 @@ import {
3
3
  GraphQLCheckDefinition,
4
4
  JSONCheckDefinition,
5
5
  LiquidCheckDefinition,
6
+ YAMLCheckDefinition,
6
7
  } from '../types';
7
8
 
8
- import { AppBlockValidTags } from './app-block-valid-tags';
9
- import { AssetPreload } from './asset-preload';
10
- import { AssetSizeAppBlockCSS } from './asset-size-app-block-css';
11
- import { AssetSizeAppBlockJavaScript } from './asset-size-app-block-javascript';
12
- import { AssetSizeCSS } from './asset-size-css';
13
- import { AssetSizeJavaScript } from './asset-size-javascript';
14
- import { BlockIdUsage } from './block-id-usage';
15
- import { CdnPreconnect } from './cdn-preconnect';
16
- import { ContentForHeaderModification } from './content-for-header-modification';
17
- import { DeprecateBgsizes } from './deprecate-bgsizes';
18
- import { DeprecateLazysizes } from './deprecate-lazysizes';
19
9
  import { DeprecatedFilter } from './deprecated-filter';
20
- import { DeprecatedFontsOnSectionsAndBlocks } from './deprecated-fonts-on-sections-and-blocks';
21
- import { DeprecatedFontsOnSettingsSchema } from './deprecated-fonts-on-settings-schema';
22
10
  import { DeprecatedTag } from './deprecated-tag';
23
11
  import { DuplicateRenderPartialArguments } from './duplicate-render-partial-arguments';
24
- import { DuplicateContentForArguments } from './duplicate-content-for-arguments';
25
- import { EmptyBlockContent } from './empty-block-content';
26
- import { HardcodedRoutes } from './hardcoded-routes';
27
12
  import { ImgWidthAndHeight } from './img-width-and-height';
28
- import { JSONMissingBlock } from './json-missing-block';
29
13
  import { JSONSyntaxError } from './json-syntax-error';
30
- import { LiquidFreeSettings } from './liquid-free-settings';
31
14
  import { LiquidHTMLSyntaxError } from './liquid-html-syntax-error';
32
15
  import { MatchingTranslations } from './matching-translations';
33
16
  import { MissingAsset } from './missing-asset';
34
- import { MissingContentForArguments } from './missing-content-for-arguments';
35
- import { MissingTemplate } from './missing-template';
17
+ import { MissingPartial } from './missing-partial';
36
18
  import { OrphanedPartial } from './orphaned-partial';
37
- import { PaginationSize } from './pagination-size';
38
19
  import { ParserBlockingScript } from './parser-blocking-script';
39
- import { SchemaPresetsBlockOrder } from './schema-presets-block-order';
40
- import { SchemaPresetsStaticBlocks } from './schema-presets-static-blocks';
41
- import { RemoteAsset } from './remote-asset';
42
- import { ReservedDocParamNames } from './reserved-doc-param-names';
43
- import { StaticStylesheetAndJavascriptTags } from './static-stylesheet-and-javascript-tags';
44
20
  import { TranslationKeyExists } from './translation-key-exists';
45
21
  import { UnclosedHTMLElement } from './unclosed-html-element';
46
22
  import { UndefinedObject } from './undefined-object';
47
23
  import { UniqueDocParamNames } from './unique-doc-param-names';
48
- import { UniqueStaticBlockId } from './unique-static-block-id';
49
24
  import { UnknownFilter } from './unknown-filter';
50
- import { UnrecognizedContentForArguments } from './unrecognized-content-for-arguments';
51
25
  import { UnrecognizedRenderPartialArguments } from './unrecognized-render-partial-arguments';
52
26
  import { UnusedAssign } from './unused-assign';
53
27
  import { UnusedDocParam } from './unused-doc-param';
54
- import { ValidContentForArguments } from './valid-content-for-arguments';
55
- import { ValidContentForArgumentTypes } from './valid-content-for-argument-types';
56
- import { ValidBlockTarget } from './valid-block-target';
57
28
  import { ValidHTMLTranslation } from './valid-html-translation';
58
29
  import { ValidJSON } from './valid-json';
59
30
  import { ValidDocParamTypes } from './valid-doc-param-types';
60
- import { ValidLocalBlocks } from './valid-local-blocks';
61
31
  import { ValidRenderPartialArgumentTypes } from './valid-render-partial-argument-types';
62
- import { ValidSchema } from './valid-schema';
63
- import { ValidSchemaName } from './valid-schema-name';
64
- import { ValidSettingsKey } from './valid-settings-key';
65
- import { ValidStaticBlockType } from './valid-static-block-type';
66
- import { ValidVisibleIf, ValidVisibleIfSettingsSchema } from './valid-visible-if';
67
32
  import { VariableName } from './variable-name';
68
- import { AppBlockMissingSchema } from './app-block-missing-schema';
69
- import { UniqueSettingIds } from './unique-settings-id';
70
33
  import { MetadataParamsCheck } from './metadata-params';
71
34
  import { GraphQLVariablesCheck } from './graphql-variables';
72
35
  import { GraphQLCheck } from './graphql';
73
36
  import { UnknownProperty } from './unknown-property';
74
37
  import { InvalidHashAssignTarget } from './invalid-hash-assign-target';
38
+ import { DuplicateFunctionArguments } from './duplicate-function-arguments';
75
39
 
76
- export const allChecks: (LiquidCheckDefinition | JSONCheckDefinition | GraphQLCheckDefinition)[] = [
77
- AppBlockValidTags,
78
- AssetPreload,
79
- AssetSizeAppBlockCSS,
80
- AssetSizeAppBlockJavaScript,
81
- AssetSizeCSS,
82
- AssetSizeJavaScript,
83
- BlockIdUsage,
84
- CdnPreconnect,
85
- ContentForHeaderModification,
86
- DeprecateBgsizes,
87
- DeprecateLazysizes,
40
+ export const allChecks: (
41
+ | LiquidCheckDefinition
42
+ | JSONCheckDefinition
43
+ | GraphQLCheckDefinition
44
+ | YAMLCheckDefinition
45
+ )[] = [
88
46
  DeprecatedFilter,
89
- DeprecatedFontsOnSectionsAndBlocks,
90
- DeprecatedFontsOnSettingsSchema,
91
47
  DeprecatedTag,
92
- DuplicateContentForArguments,
48
+ DuplicateFunctionArguments,
93
49
  DuplicateRenderPartialArguments,
94
- EmptyBlockContent,
95
- HardcodedRoutes,
96
50
  ImgWidthAndHeight,
97
- JSONMissingBlock,
98
51
  JSONSyntaxError,
99
- LiquidFreeSettings,
100
52
  LiquidHTMLSyntaxError,
101
53
  MatchingTranslations,
102
54
  MissingAsset,
103
- MissingContentForArguments,
104
- MissingTemplate,
105
- AppBlockMissingSchema,
55
+ MissingPartial,
106
56
  OrphanedPartial,
107
- PaginationSize,
108
57
  ParserBlockingScript,
109
- SchemaPresetsBlockOrder,
110
- SchemaPresetsStaticBlocks,
111
- RemoteAsset,
112
- ReservedDocParamNames,
113
- StaticStylesheetAndJavascriptTags,
114
58
  TranslationKeyExists,
115
59
  UnclosedHTMLElement,
116
60
  UndefinedObject,
117
61
  UniqueDocParamNames,
118
- UniqueSettingIds,
119
- UniqueStaticBlockId,
120
62
  UnknownFilter,
121
- UnrecognizedContentForArguments,
122
63
  UnrecognizedRenderPartialArguments,
123
64
  UnusedAssign,
124
65
  UnusedDocParam,
125
- ValidBlockTarget,
126
66
  ValidHTMLTranslation,
127
- ValidContentForArguments,
128
- ValidContentForArgumentTypes,
129
67
  ValidJSON,
130
68
  ValidDocParamTypes,
131
- ValidLocalBlocks,
132
69
  ValidRenderPartialArgumentTypes,
133
- ValidSchema,
134
- ValidSettingsKey,
135
- ValidStaticBlockType,
136
- ValidVisibleIf,
137
- ValidVisibleIfSettingsSchema,
138
70
  VariableName,
139
- ValidSchemaName,
140
71
  MetadataParamsCheck,
141
72
  GraphQLVariablesCheck,
142
73
  GraphQLCheck,
@@ -1,75 +1,75 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { InvalidHashAssignTarget } from './index';
3
- import { check, MockTheme } from '../../test';
3
+ import { check, MockApp } from '../../test';
4
4
 
5
5
  describe('Module: InvalidHashAssignTarget', () => {
6
6
  it('should report an error when hash_assign is used on a number', async () => {
7
- const theme: MockTheme = {
7
+ const app: MockApp = {
8
8
  'file.liquid': `
9
9
  {% assign x = 10 %}
10
10
  {% hash_assign x['key'] = 'value' %}
11
11
  `,
12
12
  };
13
13
 
14
- const offenses = await check(theme, [InvalidHashAssignTarget]);
14
+ const offenses = await check(app, [InvalidHashAssignTarget]);
15
15
  expect(offenses).toHaveLength(1);
16
16
  expect(offenses[0].message).toContain('number');
17
17
  expect(offenses[0].message).toContain('hash_assign');
18
18
  });
19
19
 
20
20
  it('should report an error when hash_assign is used on a string', async () => {
21
- const theme: MockTheme = {
21
+ const app: MockApp = {
22
22
  'file.liquid': `
23
23
  {% assign x = 'hello' %}
24
24
  {% hash_assign x['key'] = 'value' %}
25
25
  `,
26
26
  };
27
27
 
28
- const offenses = await check(theme, [InvalidHashAssignTarget]);
28
+ const offenses = await check(app, [InvalidHashAssignTarget]);
29
29
  expect(offenses).toHaveLength(1);
30
30
  expect(offenses[0].message).toContain('string');
31
31
  });
32
32
 
33
33
  it('should report an error when hash_assign is used on a boolean', async () => {
34
- const theme: MockTheme = {
34
+ const app: MockApp = {
35
35
  'file.liquid': `
36
36
  {% assign x = true %}
37
37
  {% hash_assign x['key'] = 'value' %}
38
38
  `,
39
39
  };
40
40
 
41
- const offenses = await check(theme, [InvalidHashAssignTarget]);
41
+ const offenses = await check(app, [InvalidHashAssignTarget]);
42
42
  expect(offenses).toHaveLength(1);
43
43
  expect(offenses[0].message).toContain('boolean');
44
44
  });
45
45
 
46
46
  it('should report an error when hash_assign is used on an array (range)', async () => {
47
- const theme: MockTheme = {
47
+ const app: MockApp = {
48
48
  'file.liquid': `
49
49
  {% assign x = (1..5) %}
50
50
  {% hash_assign x['key'] = 'value' %}
51
51
  `,
52
52
  };
53
53
 
54
- const offenses = await check(theme, [InvalidHashAssignTarget]);
54
+ const offenses = await check(app, [InvalidHashAssignTarget]);
55
55
  expect(offenses).toHaveLength(1);
56
56
  expect(offenses[0].message).toContain('array');
57
57
  });
58
58
 
59
59
  it('should not report an error when hash_assign is used on an object from parse_json', async () => {
60
- const theme: MockTheme = {
60
+ const app: MockApp = {
61
61
  'file.liquid': `
62
62
  {% assign x = '{}' | parse_json %}
63
63
  {% hash_assign x['key'] = 'value' %}
64
64
  `,
65
65
  };
66
66
 
67
- const offenses = await check(theme, [InvalidHashAssignTarget]);
67
+ const offenses = await check(app, [InvalidHashAssignTarget]);
68
68
  expect(offenses).toHaveLength(0);
69
69
  });
70
70
 
71
71
  it('should not report an error when hash_assign is used on an object from parse_json tag', async () => {
72
- const theme: MockTheme = {
72
+ const app: MockApp = {
73
73
  'file.liquid': `
74
74
  {% parse_json x %}
75
75
  {}
@@ -78,12 +78,12 @@ describe('Module: InvalidHashAssignTarget', () => {
78
78
  `,
79
79
  };
80
80
 
81
- const offenses = await check(theme, [InvalidHashAssignTarget]);
81
+ const offenses = await check(app, [InvalidHashAssignTarget]);
82
82
  expect(offenses).toHaveLength(0);
83
83
  });
84
84
 
85
85
  it('should not report an error when hash_assign is used on an object from graphql', async () => {
86
- const theme: MockTheme = {
86
+ const app: MockApp = {
87
87
  'file.liquid': `
88
88
  {% graphql result %}
89
89
  query { user { id } }
@@ -92,35 +92,35 @@ describe('Module: InvalidHashAssignTarget', () => {
92
92
  `,
93
93
  };
94
94
 
95
- const offenses = await check(theme, [InvalidHashAssignTarget]);
95
+ const offenses = await check(app, [InvalidHashAssignTarget]);
96
96
  expect(offenses).toHaveLength(0);
97
97
  });
98
98
 
99
99
  it('should not report an error when hash_assign is used on an untyped variable', async () => {
100
- const theme: MockTheme = {
100
+ const app: MockApp = {
101
101
  'file.liquid': `
102
102
  {% hash_assign unknown_var['key'] = 'value' %}
103
103
  `,
104
104
  };
105
105
 
106
- const offenses = await check(theme, [InvalidHashAssignTarget]);
106
+ const offenses = await check(app, [InvalidHashAssignTarget]);
107
107
  expect(offenses).toHaveLength(0);
108
108
  });
109
109
 
110
110
  it('should not report an error when hash_assign is used on a function return', async () => {
111
- const theme: MockTheme = {
111
+ const app: MockApp = {
112
112
  'file.liquid': `
113
113
  {% function data = 'lib/get_data' %}
114
114
  {% hash_assign data['extra'] = 'value' %}
115
115
  `,
116
116
  };
117
117
 
118
- const offenses = await check(theme, [InvalidHashAssignTarget]);
118
+ const offenses = await check(app, [InvalidHashAssignTarget]);
119
119
  expect(offenses).toHaveLength(0);
120
120
  });
121
121
 
122
122
  it('should track reassignment and report error on new type', async () => {
123
- const theme: MockTheme = {
123
+ const app: MockApp = {
124
124
  'file.liquid': `
125
125
  {% assign x = '{}' | parse_json %}
126
126
  {% hash_assign x['key1'] = 'value1' %}
@@ -129,39 +129,39 @@ describe('Module: InvalidHashAssignTarget', () => {
129
129
  `,
130
130
  };
131
131
 
132
- const offenses = await check(theme, [InvalidHashAssignTarget]);
132
+ const offenses = await check(app, [InvalidHashAssignTarget]);
133
133
  expect(offenses).toHaveLength(1);
134
134
  expect(offenses[0].message).toContain('number');
135
135
  });
136
136
 
137
137
  it('should handle increment/decrement as numbers', async () => {
138
- const theme: MockTheme = {
138
+ const app: MockApp = {
139
139
  'file.liquid': `
140
140
  {% increment counter %}
141
141
  {% hash_assign counter['key'] = 'value' %}
142
142
  `,
143
143
  };
144
144
 
145
- const offenses = await check(theme, [InvalidHashAssignTarget]);
145
+ const offenses = await check(app, [InvalidHashAssignTarget]);
146
146
  expect(offenses).toHaveLength(1);
147
147
  expect(offenses[0].message).toContain('number');
148
148
  });
149
149
 
150
150
  it('should handle capture as string', async () => {
151
- const theme: MockTheme = {
151
+ const app: MockApp = {
152
152
  'file.liquid': `
153
153
  {% capture x %}hello{% endcapture %}
154
154
  {% hash_assign x['key'] = 'value' %}
155
155
  `,
156
156
  };
157
157
 
158
- const offenses = await check(theme, [InvalidHashAssignTarget]);
158
+ const offenses = await check(app, [InvalidHashAssignTarget]);
159
159
  expect(offenses).toHaveLength(1);
160
160
  expect(offenses[0].message).toContain('string');
161
161
  });
162
162
 
163
163
  it('should allow multiple hash_assign on same object', async () => {
164
- const theme: MockTheme = {
164
+ const app: MockApp = {
165
165
  'file.liquid': `
166
166
  {% assign x = '{}' | parse_json %}
167
167
  {% hash_assign x['key1'] = 'value1' %}
@@ -170,7 +170,7 @@ describe('Module: InvalidHashAssignTarget', () => {
170
170
  `,
171
171
  };
172
172
 
173
- const offenses = await check(theme, [InvalidHashAssignTarget]);
173
+ const offenses = await check(app, [InvalidHashAssignTarget]);
174
174
  expect(offenses).toHaveLength(0);
175
175
  });
176
176
  });
@@ -13,9 +13,9 @@ export const JSONSyntaxError: JSONCheckDefinition = {
13
13
  code: 'JSONSyntaxError',
14
14
  name: 'Enforce valid JSON',
15
15
  docs: {
16
- description: 'This check exists to prevent invalid JSON files in themes.',
16
+ description: 'This check exists to prevent invalid JSON files in apps.',
17
17
  recommended: true,
18
- url: 'https://shopify.dev/docs/storefronts/themes/tools/theme-check/checks/json-syntax-error',
18
+ url: 'https://documentation.platformos.com/developer-guide/platformos-check/checks/json-syntax-error',
19
19
  },
20
20
  type: SourceCodeType.JSON,
21
21
  severity: Severity.ERROR,
@@ -12,17 +12,6 @@ describe('detectTrailingAssignValue', async () => {
12
12
  }
13
13
  });
14
14
 
15
- it('should not report when the boolean expression is in a schema tag', async () => {
16
- const sourceCode = `{% schema %}
17
- {
18
- "visible_if": "{{ this > that }}"
19
- }
20
- {% endschema %}`;
21
-
22
- const offenses = await runLiquidCheck(LiquidHTMLSyntaxError, sourceCode);
23
- expect(offenses).to.have.length(0);
24
- });
25
-
26
15
  it('should report all use of boolean expressions', async () => {
27
16
  const testCases = [
28
17
  [`{% assign foo = something == else %}`, '{% assign foo = something %}'],
@@ -109,7 +109,7 @@ describe('detectInvalidLoopArguments', async () => {
109
109
 
110
110
  function testCheck(sourceCode: string) {
111
111
  return runLiquidCheck(LiquidHTMLSyntaxError, sourceCode, undefined, {
112
- themeDocset: {
112
+ platformosDocset: {
113
113
  graphQL: async () => null,
114
114
  tags: () =>
115
115
  Promise.resolve([
@@ -139,7 +139,6 @@ function testCheck(sourceCode: string) {
139
139
  filters: () => Promise.resolve([]),
140
140
  objects: () => Promise.resolve([]),
141
141
  liquidDrops: () => Promise.resolve([]),
142
- systemTranslations: () => Promise.resolve({}),
143
142
  },
144
143
  });
145
144
  }
@@ -101,13 +101,13 @@ export function detectInvalidLoopArguments(
101
101
  }
102
102
 
103
103
  function isSupportedTagArgument(
104
- tags: TagEntry[],
104
+ tags: TagEntry[] | undefined,
105
105
  tagName: string,
106
106
  key: string,
107
107
  positional: boolean,
108
108
  ) {
109
109
  return (
110
- tags
110
+ (tags ?? [])
111
111
  .find((tag) => tag.name === tagName)
112
112
  ?.parameters?.some(
113
113
  (parameter) => parameter.name === key && parameter.positional === positional,