@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,184 @@
1
+ import { type LiquidVariableLookup } from '@platformos/liquid-html-parser';
2
+ import {
3
+ Severity,
4
+ SourceCodeType,
5
+ type LiquidCheckDefinition,
6
+ type JSONCheckDefinition,
7
+ } from '../../types';
8
+ import { getLocStart, nodeAtPath } from '../../json';
9
+ import { getSchema, isBlockSchema, isSectionSchema } from '../../to-schema';
10
+ import { reportWarning } from '../../utils';
11
+ import {
12
+ getGlobalSettings,
13
+ getVariableLookupsInExpression,
14
+ validateLookup,
15
+ offsetAdjust,
16
+ type Vars,
17
+ } from './visible-if-utils';
18
+
19
+ // Note that unlike most other files in the `checks` directory, this exports two
20
+ // checks: one for Liquid files and one for 'config/settings_schema.json'. They
21
+ // perform the same check using the same logic (modulo differences extracting
22
+ // the schema and determining warning start and end indices).
23
+
24
+ const meta = {
25
+ code: 'ValidVisibleIf',
26
+ name: 'Validate visible_if expressions',
27
+ docs: {
28
+ description:
29
+ 'Ensures visible_if expressions are well-formed and only reference settings keys that are defined',
30
+ recommended: true,
31
+ url: 'https://shopify.dev/docs/storefronts/themes/tools/theme-check/checks/valid-visible-if',
32
+ },
33
+ severity: Severity.ERROR,
34
+ schema: {},
35
+ targets: [],
36
+ };
37
+
38
+ export const ValidVisibleIf: LiquidCheckDefinition = {
39
+ meta: { ...meta, type: SourceCodeType.LiquidHtml },
40
+
41
+ create(context) {
42
+ return {
43
+ async LiquidRawTag(node) {
44
+ if (node.name !== 'schema' || node.body.kind !== 'json') return;
45
+
46
+ const schema = await getSchema(context);
47
+
48
+ const { validSchema, ast } = schema ?? {};
49
+ if (
50
+ !validSchema ||
51
+ validSchema instanceof Error ||
52
+ !validSchema.settings?.some((setting) => 'visible_if' in setting) ||
53
+ !ast ||
54
+ ast instanceof Error
55
+ ) {
56
+ return;
57
+ }
58
+
59
+ const offset = node.blockStartPosition.end;
60
+ const settings = Object.fromEntries(
61
+ (await getGlobalSettings(context)).map((s) => [s, true] as const),
62
+ );
63
+ const currentFileSettings = Object.fromEntries(
64
+ validSchema.settings.map((setting) => [setting.id, true] as const),
65
+ );
66
+
67
+ const vars: Vars = { settings };
68
+ if (isSectionSchema(schema)) {
69
+ vars.section = { settings: currentFileSettings };
70
+ } else if (isBlockSchema(schema)) {
71
+ vars.block = { settings: currentFileSettings };
72
+ }
73
+
74
+ for (const [i, setting] of validSchema.settings.entries()) {
75
+ if (!('visible_if' in setting) || typeof setting.visible_if !== 'string') continue;
76
+
77
+ const visibleIfNode = nodeAtPath(ast, ['settings', i, 'visible_if'])!;
78
+
79
+ const varLookupsOrWarning = await getVariableLookupsInExpression(setting.visible_if);
80
+ if (varLookupsOrWarning === null) continue;
81
+
82
+ if ('warning' in varLookupsOrWarning) {
83
+ reportWarning(varLookupsOrWarning.warning, offset, visibleIfNode, context);
84
+ continue;
85
+ }
86
+
87
+ const report = (message: string | null, lookup: LiquidVariableLookup) => {
88
+ if (typeof message === 'string') {
89
+ context.report({
90
+ message,
91
+ // the JSONNode start location returned by `getLocStart`
92
+ // includes the opening quotation mark — whereas when we parse
93
+ // the inner expression, 0 is the location _inside_ the quotes.
94
+ // we add 1 to the offsets to compensate.
95
+ startIndex:
96
+ offset + getLocStart(visibleIfNode) + lookup.position.start + offsetAdjust + 1,
97
+ endIndex:
98
+ offset + getLocStart(visibleIfNode) + lookup.position.end + offsetAdjust + 1,
99
+ });
100
+ }
101
+ };
102
+
103
+ for (const lookup of varLookupsOrWarning) {
104
+ if (lookup.name === 'section' && isBlockSchema(schema)) {
105
+ //no-op, we don't know what section this block will be used in, so we can't validate that the setting exists
106
+ } else if (lookup.name === 'section' && !isSectionSchema(schema)) {
107
+ report(
108
+ `Invalid visible_if: can't refer to "section" when not in a section or block file.`,
109
+ lookup,
110
+ );
111
+ } else if (lookup.name === 'block' && !isBlockSchema(schema)) {
112
+ report(
113
+ `Invalid visible_if: can't refer to "block" when not in a block file.`,
114
+ lookup,
115
+ );
116
+ } else {
117
+ report(validateLookup(lookup, vars), lookup);
118
+ }
119
+ }
120
+ }
121
+ },
122
+ };
123
+ },
124
+ };
125
+
126
+ export const ValidVisibleIfSettingsSchema: JSONCheckDefinition = {
127
+ meta: { ...meta, type: SourceCodeType.JSON },
128
+
129
+ create(context) {
130
+ const relativePath = context.toRelativePath(context.file.uri);
131
+ if (relativePath !== 'config/settings_schema.json') return {};
132
+
133
+ return {
134
+ async Property(node) {
135
+ if (node.key.value !== 'visible_if' || node.value.type !== 'Literal') return;
136
+ const visibleIfExpression = node.value.value;
137
+ if (typeof visibleIfExpression !== 'string') return;
138
+ const offset = node.value.loc.start.offset;
139
+
140
+ const varLookupsOrWarning = await getVariableLookupsInExpression(visibleIfExpression);
141
+ if (varLookupsOrWarning === null) return;
142
+
143
+ if ('warning' in varLookupsOrWarning) {
144
+ context.report({
145
+ message: varLookupsOrWarning.warning,
146
+ startIndex: node.value.loc.start.offset,
147
+ endIndex: node.value.loc.end.offset,
148
+ });
149
+ return;
150
+ }
151
+
152
+ const settings = Object.fromEntries(
153
+ (await getGlobalSettings(context)).map((s) => [s, true] as const),
154
+ );
155
+
156
+ const vars: Vars = { settings };
157
+
158
+ const report = (message: string | null, lookup: LiquidVariableLookup) => {
159
+ if (typeof message === 'string') {
160
+ context.report({
161
+ message,
162
+ startIndex: offset + lookup.position.start + offsetAdjust + 1,
163
+ endIndex: offset + lookup.position.end + offsetAdjust + 1,
164
+ });
165
+ }
166
+ };
167
+
168
+ for (const lookup of varLookupsOrWarning) {
169
+ // settings_schema.json can't reference `section` or `block`.
170
+ if (lookup.name === 'section') {
171
+ report(
172
+ `Invalid visible_if: can't refer to "section" when not in a section file.`,
173
+ lookup,
174
+ );
175
+ } else if (lookup.name === 'block') {
176
+ report(`Invalid visible_if: can't refer to "block" when not in a block file.`, lookup);
177
+ } else {
178
+ report(validateLookup(lookup, vars), lookup);
179
+ }
180
+ }
181
+ },
182
+ };
183
+ },
184
+ };
@@ -0,0 +1,158 @@
1
+ import {
2
+ type LiquidVariableLookup,
3
+ NodeTypes,
4
+ toLiquidHtmlAST,
5
+ } from '@platformos/liquid-html-parser';
6
+ import { Context, SourceCodeType } from '../..';
7
+ import { parseJSON } from '../../json';
8
+ import { visit } from '../../visitor';
9
+
10
+ export type Vars = { [key: string]: Vars | true };
11
+
12
+ export const variableExpressionMatcher = /{{(.+?)}}/;
13
+ export const adjustedPrefix = '{% if ';
14
+ export const adjustedSuffix = ' %}{% endif %}';
15
+ export const offsetAdjust = '{{'.length - adjustedPrefix.length;
16
+
17
+ export async function getVariableLookupsInExpression(
18
+ expression: string,
19
+ ): Promise<LiquidVariableLookup[] | { warning: string } | null> {
20
+ // As of February 2025, parsers other than LiquidJS don't yet support
21
+ // expressions in {{ variable }} tags. So we have to do something a little
22
+ // gnarly — before parsing it we extract the expression from within the tag
23
+ // and plunk it into an `{% if <expression> %}{% endif %}` statement instead.
24
+ // This requires us to adjust the reported character ranges and offer slightly
25
+ // less useful messages on syntax errors, but otherwise should behave
26
+ // similarly to a proper `{{ <expression> }}` syntax whenever it lands.
27
+ const match = variableExpressionMatcher.exec(expression);
28
+ if (match == null) {
29
+ return {
30
+ warning: `Invalid visible_if expression. It should take the form "{{ <expression> }}".`,
31
+ };
32
+ }
33
+ const unwrappedExpression = match[1];
34
+
35
+ const adjustedExpression = `${adjustedPrefix}${unwrappedExpression}${adjustedSuffix}`;
36
+
37
+ try {
38
+ const innerAst = toLiquidHtmlAST(adjustedExpression, {
39
+ mode: 'strict',
40
+ allowUnclosedDocumentNode: false,
41
+ });
42
+
43
+ if (innerAst.children.length !== 1) {
44
+ throw new Error('Unexpected child count for DocumentNode');
45
+ }
46
+
47
+ const ifTag = innerAst.children[0];
48
+
49
+ if (ifTag.type !== 'LiquidTag' || ifTag.name !== 'if') {
50
+ throw new Error("Expected DocumentNode to contain 'if' tag");
51
+ }
52
+
53
+ const expressionNode = ifTag.markup;
54
+ if (typeof expressionNode === 'string') {
55
+ return {
56
+ warning: `Invalid visible_if expression.`,
57
+ };
58
+ }
59
+
60
+ if (
61
+ expressionNode.type === NodeTypes.LiquidLiteral &&
62
+ ['true', 'false'].includes(expressionNode.keyword)
63
+ ) {
64
+ // Those are OK
65
+ return null;
66
+ }
67
+
68
+ const vars = await visit<SourceCodeType.LiquidHtml, LiquidVariableLookup>(ifTag, {
69
+ VariableLookup: async (node) => node,
70
+ });
71
+
72
+ if (vars.length === 0) {
73
+ return {
74
+ warning: `visible_if expression contains no references to any settings. This is likely an error.`,
75
+ };
76
+ }
77
+
78
+ return vars;
79
+ } catch (error) {
80
+ if (error instanceof SyntaxError) {
81
+ // Because of our hackish approach, the underlying error is likely to
82
+ // include an incorrect character range and/or mention {% if %} tags.
83
+ // Squelch the details and just report it as a simple syntax error.
84
+ return { warning: 'Syntax error: cannot parse visible_if expression.' };
85
+ }
86
+
87
+ return { warning: String(error) };
88
+ }
89
+ }
90
+
91
+ export function validateLookup(lookup: LiquidVariableLookup, vars: Vars): string | null {
92
+ const normalized = getNormalizedLookups(lookup);
93
+
94
+ const poppedSegments = [];
95
+ let scope = vars;
96
+ while (normalized.length > 0) {
97
+ const segment = normalized.shift()!;
98
+ poppedSegments.push(segment);
99
+
100
+ // "noUncheckedIndexedAccess" is false in our tsconfig.json
101
+ const next = scope[segment] as true | Vars | undefined;
102
+
103
+ if (!next) {
104
+ return `Invalid variable: "${poppedSegments.join('.')}" was not found.`;
105
+ }
106
+
107
+ if (typeof next === 'boolean') {
108
+ if (normalized.length > 0) {
109
+ return `Invalid variable: "${poppedSegments.join(
110
+ '.',
111
+ )}" refers to a variable, but is being used here as a namespace.`;
112
+ }
113
+ return null;
114
+ }
115
+
116
+ scope = next;
117
+ }
118
+
119
+ // note this is the reverse of the above similar-looking case
120
+ return `Invalid variable: "${poppedSegments.join(
121
+ '.',
122
+ )}" refers to a namespace, but is being used here as a variable.`;
123
+ }
124
+
125
+ function getNormalizedLookups(lookup: LiquidVariableLookup) {
126
+ const nestedLookups = lookup.lookups.map((lookup) => {
127
+ if (lookup.type !== NodeTypes.String) {
128
+ throw new Error(`Expected lookups to be String nodes: ${JSON.stringify(lookup)}`);
129
+ }
130
+ return lookup.value;
131
+ });
132
+
133
+ return [lookup.name, ...nestedLookups];
134
+ }
135
+
136
+ export async function getGlobalSettings(context: Context<SourceCodeType>) {
137
+ const globalSettings: string[] = [];
138
+
139
+ try {
140
+ const uri = context.toUri('config/settings_schema.json');
141
+ const settingsFile = await context.fs.readFile(uri);
142
+ const settings = parseJSON(settingsFile);
143
+ if (Array.isArray(settings)) {
144
+ for (const group of settings) {
145
+ if ('settings' in group && Array.isArray(group.settings)) {
146
+ globalSettings.push(
147
+ ...group.settings.map((setting: any) => setting.id).filter((id: any) => id),
148
+ );
149
+ }
150
+ }
151
+ }
152
+ } catch (e) {
153
+ console.error('Error fetching global settings:', e);
154
+ // ignore absent or malformed settings schema
155
+ }
156
+
157
+ return globalSettings;
158
+ }
@@ -0,0 +1,62 @@
1
+ import { expect, describe, it } from 'vitest';
2
+ import { VariableName } from './index';
3
+ import { applySuggestions, runLiquidCheck } from '../../test';
4
+
5
+ describe('Module: VariableName', () => {
6
+ it('should report an error when a variable is using wrong naming format', async () => {
7
+ const sourceCode = `{% assign variableName = "value" %}`;
8
+
9
+ const offenses = await runLiquidCheck(VariableName, sourceCode);
10
+
11
+ expect(offenses).to.have.length(1);
12
+ expect(offenses[0].message).to.equal("The variable 'variableName' uses wrong naming format");
13
+ });
14
+
15
+ it('should not report an error when a variable is using correct format', async () => {
16
+ const sourceCode = `{% assign variable_name = "value" %}`;
17
+
18
+ const offenses = await runLiquidCheck(VariableName, sourceCode);
19
+
20
+ expect(offenses).to.be.empty;
21
+ });
22
+
23
+ it('should provide a suggestion to change the variable naming', async () => {
24
+ const sourceCode = `{% assign variableName = "value" %}`;
25
+
26
+ const offenses = await runLiquidCheck(VariableName, sourceCode);
27
+
28
+ expect(offenses).to.have.length(1);
29
+ expect(offenses[0].suggest).to.have.length(1);
30
+ expect(offenses[0]!.suggest![0].message).to.equal(
31
+ "Change variable 'variableName' to 'variable_name'",
32
+ );
33
+ });
34
+
35
+ it('should fix the code by changing the wrongly formatted variable', async () => {
36
+ const sourceCode = `{% assign variableName = "value" %}`;
37
+
38
+ const offenses = await runLiquidCheck(VariableName, sourceCode);
39
+ const suggestions = applySuggestions(sourceCode, offenses[0]);
40
+
41
+ const expectedFixedCode = `{% assign variable_name = "value" %}`;
42
+
43
+ expect(suggestions).to.include(expectedFixedCode);
44
+ });
45
+
46
+ // It's impossible to make an idempotent rule that works for all cases. We
47
+ // have to accept whatever spacing the user has input as valid.
48
+ it('should not complain about numbers inside variable names', async () => {
49
+ const varNames = [
50
+ `first_b_2_b_model`,
51
+ `first_b2_b_model`,
52
+ `first_b2b_model`,
53
+ `first_3_d_model`,
54
+ `first3_d_model`,
55
+ ];
56
+ for (const varName of varNames) {
57
+ const sourceCode = `{% assign ${varName} = "value" %}`;
58
+ const offenses = await runLiquidCheck(VariableName, sourceCode);
59
+ expect(offenses).to.be.empty;
60
+ }
61
+ });
62
+ });
@@ -0,0 +1,115 @@
1
+ import {
2
+ LiquidHtmlNode,
3
+ LiquidTag,
4
+ LiquidTagAssign,
5
+ LiquidTagCapture,
6
+ NodeTypes,
7
+ } from '@platformos/liquid-html-parser';
8
+ import { LiquidCheckDefinition, SchemaProp, Severity, SourceCodeType } from '../../types';
9
+ import { camelCase, kebabCase, snakeCase } from 'lodash';
10
+
11
+ const pascalCase = (string: string) => {
12
+ const camelCased = camelCase(string);
13
+ return camelCased.charAt(0).toUpperCase() + camelCased.slice(1);
14
+ };
15
+
16
+ const isLiquidTagAssign = (node: LiquidTag): node is LiquidTagAssign => {
17
+ return node.name === 'assign' && typeof node.markup !== 'string';
18
+ };
19
+
20
+ const isLiquidTagCapture = (node: LiquidHtmlNode): node is LiquidTagCapture => {
21
+ return (
22
+ node.type == NodeTypes.LiquidTag && node.name === 'capture' && typeof node.markup !== 'string'
23
+ );
24
+ };
25
+
26
+ const formatTypes = {
27
+ camelCase: camelCase,
28
+ PascalCase: pascalCase,
29
+ snake_case: snakeCase,
30
+ 'kebab-case': kebabCase,
31
+ };
32
+
33
+ type FormatTypes = keyof typeof formatTypes;
34
+
35
+ const schema = {
36
+ format: SchemaProp.string('snake_case'),
37
+ };
38
+
39
+ // It's impossible to make an idempotent rule that works for all cases. We
40
+ // have to accept whatever spacing the user has input as valid.
41
+ // This function strips dash/underscores around digits so that we can at least
42
+ // make sure that the variable name is in the "correct" format. (e.g. snake case)
43
+ const collapseNumberSpacing = (varName: string) => varName.replace(/[-_]?\d[-_]?/g, '');
44
+
45
+ export const VariableName: LiquidCheckDefinition<typeof schema> = {
46
+ meta: {
47
+ code: 'VariableName',
48
+ name: 'Invalid variable naming format',
49
+ docs: {
50
+ description: 'This check is aimed at using certain variable naming conventions',
51
+ url: 'https://shopify.dev/docs/storefronts/themes/tools/theme-check/checks/variable-name',
52
+ recommended: true,
53
+ },
54
+ type: SourceCodeType.LiquidHtml,
55
+ severity: Severity.WARNING,
56
+ schema,
57
+ targets: [],
58
+ },
59
+
60
+ create(context) {
61
+ const formatter = (node: LiquidTagAssign | LiquidTagCapture) => {
62
+ if (!node.markup.name) {
63
+ return {
64
+ valid: false,
65
+ };
66
+ }
67
+
68
+ const formatter = formatTypes[context.settings.format as FormatTypes];
69
+ const suggestion = formatter(node.markup.name);
70
+
71
+ return {
72
+ valid: collapseNumberSpacing(node.markup.name) === collapseNumberSpacing(suggestion),
73
+ suggestion,
74
+ };
75
+ };
76
+
77
+ const reportHandler = (node: LiquidTagAssign | LiquidTagCapture) => {
78
+ return context.report({
79
+ message: `The variable '${node.markup.name}' uses wrong naming format`,
80
+ startIndex: node.markup.position.start,
81
+ endIndex: node.markup.position.end,
82
+ suggest: [
83
+ {
84
+ message: `Change variable '${node.markup.name}' to '${formatter(node).suggestion}'`,
85
+ fix: (corrector) => {
86
+ const { position, name, source } = node.markup;
87
+
88
+ return corrector.replace(
89
+ position.start,
90
+ position.end,
91
+ source
92
+ .slice(position.start, position.end)
93
+ .replace(name!, formatter(node).suggestion!),
94
+ );
95
+ },
96
+ },
97
+ ],
98
+ });
99
+ };
100
+
101
+ return {
102
+ async LiquidTag(node) {
103
+ if (isLiquidTagAssign(node)) {
104
+ if (!formatter(node).valid) {
105
+ reportHandler(node);
106
+ }
107
+ } else if (isLiquidTagCapture(node) && node.markup.name) {
108
+ if (!formatter(node).valid) {
109
+ reportHandler(node);
110
+ }
111
+ }
112
+ },
113
+ };
114
+ },
115
+ };
@@ -0,0 +1,103 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import {
3
+ makeGetDefaultLocale,
4
+ makeGetDefaultTranslations,
5
+ makeGetMetafieldDefinitions,
6
+ } from './context-utils';
7
+ import { MockFileSystem } from './test';
8
+ import { AbstractFileSystem } from '@platformos/platformos-common';
9
+
10
+ describe('Unit: getDefaultLocale', () => {
11
+ let fs: AbstractFileSystem;
12
+ beforeEach(() => {
13
+ fs = new MockFileSystem(
14
+ {
15
+ 'gitRootTheme/locales/en.default.json': JSON.stringify({ beverage: 'coffee' }),
16
+ 'gitRootTheme/locales/fr.json': JSON.stringify({ beverage: 'coffee' }),
17
+ 'gitRootTheme/snippet/foo.liquid': JSON.stringify({ beverage: 'coffee' }),
18
+ 'frenchDefault/locales/fr.default.json': JSON.stringify({ beverage: 'café' }),
19
+ 'frenchDefault/snippet/foo.liquid': JSON.stringify({ beverage: 'coffee' }),
20
+ '.shopify/metafields.json': JSON.stringify({
21
+ product: [
22
+ {
23
+ key: 'color',
24
+ name: 'color',
25
+ namespace: 'custom',
26
+ description: 'the color of the product',
27
+ type: {
28
+ category: 'COLOR',
29
+ name: 'color',
30
+ },
31
+ },
32
+ ],
33
+ }),
34
+ },
35
+ 'shopify-vfs:/',
36
+ );
37
+ });
38
+
39
+ it('should return the correct translations depending on the root', async () => {
40
+ let getDefaultLocale = makeGetDefaultLocale(fs, 'shopify-vfs:/gitRootTheme');
41
+ expect(await getDefaultLocale()).to.eql('en');
42
+
43
+ getDefaultLocale = makeGetDefaultLocale(fs, 'shopify-vfs:/frenchDefault');
44
+ expect(await getDefaultLocale()).to.eql('fr');
45
+ });
46
+
47
+ describe('Unit: makeGetMetafieldDefinitions', () => {
48
+ it('should return metafield definitions in correct format', async () => {
49
+ const getMetafieldDefinitions = makeGetMetafieldDefinitions(fs);
50
+
51
+ let definitions = await getMetafieldDefinitions('shopify-vfs:/');
52
+
53
+ expect(definitions.product).toHaveLength(1);
54
+ expect(definitions.product[0]).deep.equals({
55
+ key: 'color',
56
+ name: 'color',
57
+ namespace: 'custom',
58
+ description: 'the color of the product',
59
+ type: {
60
+ category: 'COLOR',
61
+ name: 'color',
62
+ },
63
+ });
64
+ });
65
+
66
+ it("should return no metafield definitions if file isn't in correct format", async () => {
67
+ fs = new MockFileSystem(
68
+ {
69
+ '.shopify/metafields.json': JSON.stringify('uhoh'),
70
+ },
71
+ 'shopify-vfs:/',
72
+ );
73
+ const getMetafieldDefinitions = makeGetMetafieldDefinitions(fs);
74
+
75
+ let definitions = await getMetafieldDefinitions('shopify-vfs:/');
76
+
77
+ expect(definitions).deep.equals({
78
+ article: [],
79
+ blog: [],
80
+ collection: [],
81
+ company: [],
82
+ company_location: [],
83
+ location: [],
84
+ market: [],
85
+ order: [],
86
+ page: [],
87
+ product: [],
88
+ variant: [],
89
+ shop: [],
90
+ });
91
+ });
92
+ });
93
+
94
+ describe('Unit: getDefaultTranslationsFactory', () => {
95
+ it('should return the correct translations depending on the root', async () => {
96
+ let getDefaultTranslations = makeGetDefaultTranslations(fs, [], 'shopify-vfs:/gitRootTheme');
97
+ expect(await getDefaultTranslations()).to.eql({ beverage: 'coffee' });
98
+
99
+ getDefaultTranslations = makeGetDefaultTranslations(fs, [], 'shopify-vfs:/frenchDefault');
100
+ expect(await getDefaultTranslations()).to.eql({ beverage: 'café' });
101
+ });
102
+ });
103
+ });