@platformos/platformos-check-common 0.0.7 → 0.0.8

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 (309) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/AugmentedPlatformOSDocset.d.ts +11 -0
  3. package/dist/AugmentedPlatformOSDocset.js +81 -0
  4. package/dist/AugmentedPlatformOSDocset.js.map +1 -0
  5. package/dist/JSONValidator.js +1 -1
  6. package/dist/JSONValidator.js.map +1 -1
  7. package/dist/checks/deprecated-filter/index.js +4 -41
  8. package/dist/checks/deprecated-filter/index.js.map +1 -1
  9. package/dist/checks/deprecated-tag/index.js +21 -22
  10. package/dist/checks/deprecated-tag/index.js.map +1 -1
  11. package/dist/checks/duplicate-function-arguments/index.js +1 -1
  12. package/dist/checks/duplicate-function-arguments/index.js.map +1 -1
  13. package/dist/checks/duplicate-render-partial-arguments/index.js +1 -1
  14. package/dist/checks/duplicate-render-partial-arguments/index.js.map +1 -1
  15. package/dist/checks/graphql/index.js +1 -1
  16. package/dist/checks/graphql/index.js.map +1 -1
  17. package/dist/checks/img-width-and-height/index.js +1 -1
  18. package/dist/checks/img-width-and-height/index.js.map +1 -1
  19. package/dist/checks/index.d.ts +3 -3
  20. package/dist/checks/index.js +4 -79
  21. package/dist/checks/index.js.map +1 -1
  22. package/dist/checks/json-syntax-error/index.js +1 -1
  23. package/dist/checks/json-syntax-error/index.js.map +1 -1
  24. package/dist/checks/liquid-html-syntax-error/index.js +2 -2
  25. package/dist/checks/liquid-html-syntax-error/index.js.map +1 -1
  26. package/dist/checks/matching-translations/index.d.ts +2 -2
  27. package/dist/checks/matching-translations/index.js +20 -31
  28. package/dist/checks/matching-translations/index.js.map +1 -1
  29. package/dist/checks/metadata-params/index.js +6 -3
  30. package/dist/checks/metadata-params/index.js.map +1 -1
  31. package/dist/checks/missing-asset/index.js +1 -1
  32. package/dist/checks/missing-asset/index.js.map +1 -1
  33. package/dist/checks/missing-partial/index.d.ts +6 -0
  34. package/dist/checks/missing-partial/index.js +70 -0
  35. package/dist/checks/missing-partial/index.js.map +1 -0
  36. package/dist/checks/orphaned-partial/index.js +4 -4
  37. package/dist/checks/orphaned-partial/index.js.map +1 -1
  38. package/dist/checks/parser-blocking-script/index.js +10 -36
  39. package/dist/checks/parser-blocking-script/index.js.map +1 -1
  40. package/dist/checks/parser-blocking-script/suggestions.d.ts +1 -2
  41. package/dist/checks/parser-blocking-script/suggestions.js +1 -11
  42. package/dist/checks/parser-blocking-script/suggestions.js.map +1 -1
  43. package/dist/checks/reserved-doc-param-names/index.js +6 -5
  44. package/dist/checks/reserved-doc-param-names/index.js.map +1 -1
  45. package/dist/checks/translation-key-exists/index.js +1 -1
  46. package/dist/checks/translation-key-exists/index.js.map +1 -1
  47. package/dist/checks/unclosed-html-element/index.js +5 -1
  48. package/dist/checks/unclosed-html-element/index.js.map +1 -1
  49. package/dist/checks/undefined-object/index.js +7 -30
  50. package/dist/checks/undefined-object/index.js.map +1 -1
  51. package/dist/checks/unique-doc-param-names/index.js +1 -1
  52. package/dist/checks/unique-doc-param-names/index.js.map +1 -1
  53. package/dist/checks/unknown-filter/index.js +3 -3
  54. package/dist/checks/unknown-filter/index.js.map +1 -1
  55. package/dist/checks/unknown-property/index.js +1 -1
  56. package/dist/checks/unknown-property/index.js.map +1 -1
  57. package/dist/checks/unrecognized-render-partial-arguments/index.js +2 -2
  58. package/dist/checks/unrecognized-render-partial-arguments/index.js.map +1 -1
  59. package/dist/checks/unused-assign/index.js +1 -1
  60. package/dist/checks/unused-assign/index.js.map +1 -1
  61. package/dist/checks/unused-doc-param/index.js +1 -1
  62. package/dist/checks/unused-doc-param/index.js.map +1 -1
  63. package/dist/checks/utils.js +1 -1
  64. package/dist/checks/utils.js.map +1 -1
  65. package/dist/checks/valid-content-for-arguments/index.js +1 -1
  66. package/dist/checks/valid-content-for-arguments/index.js.map +1 -1
  67. package/dist/checks/valid-doc-param-types/index.js +4 -4
  68. package/dist/checks/valid-doc-param-types/index.js.map +1 -1
  69. package/dist/checks/valid-html-translation/index.d.ts +2 -2
  70. package/dist/checks/valid-html-translation/index.js +4 -4
  71. package/dist/checks/valid-html-translation/index.js.map +1 -1
  72. package/dist/checks/valid-json/index.js +1 -1
  73. package/dist/checks/valid-json/index.js.map +1 -1
  74. package/dist/checks/valid-render-partial-argument-types/index.js +2 -2
  75. package/dist/checks/valid-render-partial-argument-types/index.js.map +1 -1
  76. package/dist/checks/variable-name/index.js +1 -1
  77. package/dist/checks/variable-name/index.js.map +1 -1
  78. package/dist/context-utils.d.ts +2 -7
  79. package/dist/context-utils.js +39 -109
  80. package/dist/context-utils.js.map +1 -1
  81. package/dist/disabled-checks/index.js +4 -2
  82. package/dist/disabled-checks/index.js.map +1 -1
  83. package/dist/doc-generator/DocBlockGenerator.d.ts +16 -0
  84. package/dist/doc-generator/DocBlockGenerator.js +464 -0
  85. package/dist/doc-generator/DocBlockGenerator.js.map +1 -0
  86. package/dist/doc-generator/index.d.ts +1 -0
  87. package/dist/doc-generator/index.js +6 -0
  88. package/dist/doc-generator/index.js.map +1 -0
  89. package/dist/find-root.d.ts +7 -10
  90. package/dist/find-root.js +10 -17
  91. package/dist/find-root.js.map +1 -1
  92. package/dist/fixes/autofix.d.ts +4 -4
  93. package/dist/fixes/autofix.js +2 -2
  94. package/dist/fixes/autofix.js.map +1 -1
  95. package/dist/fixes/correctors/index.js +4 -0
  96. package/dist/fixes/correctors/index.js.map +1 -1
  97. package/dist/index.d.ts +4 -5
  98. package/dist/index.js +34 -17
  99. package/dist/index.js.map +1 -1
  100. package/dist/jsonc/parse.d.ts +1 -1
  101. package/dist/jsonc/parse.js +1 -1
  102. package/dist/liquid-doc/arguments.d.ts +7 -8
  103. package/dist/liquid-doc/arguments.js +20 -28
  104. package/dist/liquid-doc/arguments.js.map +1 -1
  105. package/dist/liquid-doc/liquidDoc.d.ts +1 -1
  106. package/dist/liquid-doc/liquidDoc.js.map +1 -1
  107. package/dist/liquid-doc/utils.d.ts +1 -1
  108. package/dist/liquid-doc/utils.js +4 -3
  109. package/dist/liquid-doc/utils.js.map +1 -1
  110. package/dist/path.d.ts +1 -0
  111. package/dist/path.js +5 -1
  112. package/dist/path.js.map +1 -1
  113. package/dist/test/MockApp.d.ts +16 -0
  114. package/dist/test/MockApp.js +16 -0
  115. package/dist/test/MockApp.js.map +1 -0
  116. package/dist/test/MockFileSystem.d.ts +3 -3
  117. package/dist/test/MockFileSystem.js +6 -6
  118. package/dist/test/MockFileSystem.js.map +1 -1
  119. package/dist/test/index.d.ts +1 -1
  120. package/dist/test/index.js +1 -1
  121. package/dist/test/index.js.map +1 -1
  122. package/dist/test/test-helper.d.ts +10 -9
  123. package/dist/test/test-helper.js +15 -106
  124. package/dist/test/test-helper.js.map +1 -1
  125. package/dist/to-schema.d.ts +1 -1
  126. package/dist/to-source-code.d.ts +3 -2
  127. package/dist/to-source-code.js +20 -0
  128. package/dist/to-source-code.js.map +1 -1
  129. package/dist/tsconfig.tsbuildinfo +1 -1
  130. package/dist/types/platformos-liquid-docs.d.ts +128 -0
  131. package/dist/types/platformos-liquid-docs.js +3 -0
  132. package/dist/types/platformos-liquid-docs.js.map +1 -0
  133. package/dist/types/schemas/index.d.ts +0 -2
  134. package/dist/types/schemas/index.js.map +1 -1
  135. package/dist/types.d.ts +18 -67
  136. package/dist/types.js +3 -5
  137. package/dist/types.js.map +1 -1
  138. package/dist/utils/block.js.map +1 -1
  139. package/dist/utils/index.d.ts +0 -1
  140. package/dist/utils/index.js +0 -1
  141. package/dist/utils/index.js.map +1 -1
  142. package/dist/yaml/parse.d.ts +5 -0
  143. package/dist/yaml/parse.js +94 -0
  144. package/dist/yaml/parse.js.map +1 -0
  145. package/package.json +4 -3
  146. package/src/{AugmentedThemeDocset.spec.ts → AugmentedPlatformOSDocset.spec.ts} +47 -34
  147. package/src/AugmentedPlatformOSDocset.ts +89 -0
  148. package/src/JSONValidator.ts +1 -1
  149. package/src/checks/deprecated-filter/index.spec.ts +76 -248
  150. package/src/checks/deprecated-filter/index.ts +5 -53
  151. package/src/checks/deprecated-tag/index.spec.ts +85 -34
  152. package/src/checks/deprecated-tag/index.ts +27 -22
  153. package/src/checks/duplicate-function-arguments/index.ts +1 -1
  154. package/src/checks/duplicate-render-partial-arguments/index.ts +1 -1
  155. package/src/checks/graphql/index.ts +1 -1
  156. package/src/checks/img-width-and-height/index.ts +1 -1
  157. package/src/checks/index.ts +11 -80
  158. package/src/checks/invalid-hash-assign-target/index.spec.ts +14 -14
  159. package/src/checks/json-syntax-error/index.ts +1 -1
  160. package/src/checks/liquid-html-syntax-error/checks/InvalidBooleanExpression.spec.ts +0 -11
  161. package/src/checks/liquid-html-syntax-error/checks/InvalidLoopArguments.spec.ts +1 -2
  162. package/src/checks/liquid-html-syntax-error/index.spec.ts +1 -6
  163. package/src/checks/liquid-html-syntax-error/index.ts +2 -2
  164. package/src/checks/matching-translations/index.spec.ts +89 -346
  165. package/src/checks/matching-translations/index.ts +24 -35
  166. package/src/checks/metadata-params/index.ts +5 -7
  167. package/src/checks/missing-asset/index.ts +1 -1
  168. package/src/checks/{missing-template → missing-partial}/index.spec.ts +6 -6
  169. package/src/checks/{missing-template → missing-partial}/index.ts +6 -20
  170. package/src/checks/orphaned-partial/index.ts +3 -3
  171. package/src/checks/parser-blocking-script/index.spec.ts +0 -118
  172. package/src/checks/parser-blocking-script/index.ts +3 -33
  173. package/src/checks/parser-blocking-script/suggestions.ts +1 -28
  174. package/src/checks/translation-key-exists/index.ts +1 -1
  175. package/src/checks/unclosed-html-element/index.ts +5 -1
  176. package/src/checks/undefined-object/index.spec.ts +3 -109
  177. package/src/checks/undefined-object/index.ts +8 -33
  178. package/src/checks/unique-doc-param-names/index.ts +1 -1
  179. package/src/checks/unknown-filter/index.spec.ts +2 -2
  180. package/src/checks/unknown-filter/index.ts +3 -3
  181. package/src/checks/unknown-property/index.ts +1 -1
  182. package/src/checks/unrecognized-render-partial-arguments/index.spec.ts +5 -5
  183. package/src/checks/unrecognized-render-partial-arguments/index.ts +2 -5
  184. package/src/checks/unused-assign/index.spec.ts +0 -30
  185. package/src/checks/unused-assign/index.ts +1 -1
  186. package/src/checks/unused-doc-param/index.ts +1 -1
  187. package/src/checks/utils.ts +1 -1
  188. package/src/checks/valid-doc-param-types/index.ts +4 -4
  189. package/src/checks/valid-html-translation/index.spec.ts +42 -32
  190. package/src/checks/valid-html-translation/index.ts +7 -7
  191. package/src/checks/valid-json/index.ts +1 -1
  192. package/src/checks/valid-render-partial-argument-types/index.ts +2 -5
  193. package/src/checks/variable-name/index.ts +1 -1
  194. package/src/context-utils.spec.ts +49 -77
  195. package/src/context-utils.ts +39 -128
  196. package/src/disabled-checks/index.spec.ts +35 -0
  197. package/src/disabled-checks/index.ts +4 -2
  198. package/src/find-root.ts +12 -22
  199. package/src/fixes/autofix.spec.ts +2 -2
  200. package/src/fixes/autofix.ts +4 -4
  201. package/src/fixes/correctors/index.ts +4 -0
  202. package/src/ignore.spec.ts +0 -1
  203. package/src/index.ts +33 -21
  204. package/src/jsonc/parse.ts +1 -1
  205. package/src/liquid-doc/arguments.spec.ts +19 -45
  206. package/src/liquid-doc/arguments.ts +26 -39
  207. package/src/liquid-doc/liquidDoc.ts +1 -2
  208. package/src/liquid-doc/utils.ts +4 -3
  209. package/src/path.ts +1 -0
  210. package/src/test/{MockTheme.ts → MockApp.ts} +1 -1
  211. package/src/test/MockFileSystem.ts +6 -6
  212. package/src/test/index.ts +1 -1
  213. package/src/test/test-helper.ts +29 -127
  214. package/src/to-source-code.ts +20 -1
  215. package/src/types/{theme-liquid-docs.ts → platformos-liquid-docs.ts} +8 -13
  216. package/src/types/schemas/index.ts +0 -2
  217. package/src/types.ts +21 -92
  218. package/src/utils/index.ts +0 -1
  219. package/src/yaml/parse.ts +111 -0
  220. package/src/AugmentedThemeDocset.ts +0 -137
  221. package/src/checks/app-block-missing-schema/index.spec.ts +0 -121
  222. package/src/checks/app-block-missing-schema/index.ts +0 -46
  223. package/src/checks/app-block-valid-tags/index.spec.ts +0 -96
  224. package/src/checks/app-block-valid-tags/index.ts +0 -54
  225. package/src/checks/asset-preload/index.spec.ts +0 -78
  226. package/src/checks/asset-preload/index.ts +0 -65
  227. package/src/checks/asset-size-app-block-css/index.spec.ts +0 -88
  228. package/src/checks/asset-size-app-block-css/index.ts +0 -78
  229. package/src/checks/asset-size-app-block-javascript/index.spec.ts +0 -66
  230. package/src/checks/asset-size-app-block-javascript/index.ts +0 -78
  231. package/src/checks/asset-size-css/index.spec.ts +0 -166
  232. package/src/checks/asset-size-css/index.ts +0 -160
  233. package/src/checks/asset-size-javascript/index.spec.ts +0 -184
  234. package/src/checks/asset-size-javascript/index.ts +0 -144
  235. package/src/checks/block-id-usage/index.spec.ts +0 -76
  236. package/src/checks/block-id-usage/index.ts +0 -72
  237. package/src/checks/cdn-preconnect/index.spec.ts +0 -40
  238. package/src/checks/cdn-preconnect/index.ts +0 -43
  239. package/src/checks/content-for-header-modification/index.spec.ts +0 -65
  240. package/src/checks/content-for-header-modification/index.ts +0 -72
  241. package/src/checks/deprecate-bgsizes/index.spec.ts +0 -41
  242. package/src/checks/deprecate-bgsizes/index.ts +0 -49
  243. package/src/checks/deprecate-lazysizes/index.spec.ts +0 -26
  244. package/src/checks/deprecate-lazysizes/index.ts +0 -58
  245. package/src/checks/deprecated-filter/fixes.ts +0 -264
  246. package/src/checks/deprecated-fonts-on-sections-and-blocks/deprecated-fonts-data.ts +0 -1343
  247. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.spec.ts +0 -613
  248. package/src/checks/deprecated-fonts-on-sections-and-blocks/index.ts +0 -284
  249. package/src/checks/deprecated-fonts-on-settings-schema/index.spec.ts +0 -102
  250. package/src/checks/deprecated-fonts-on-settings-schema/index.ts +0 -66
  251. package/src/checks/duplicate-content-for-arguments/index.spec.ts +0 -98
  252. package/src/checks/duplicate-content-for-arguments/index.ts +0 -43
  253. package/src/checks/empty-block-content/index.spec.ts +0 -117
  254. package/src/checks/empty-block-content/index.ts +0 -60
  255. package/src/checks/hardcoded-routes/index.spec.ts +0 -58
  256. package/src/checks/hardcoded-routes/index.ts +0 -100
  257. package/src/checks/json-missing-block/index.spec.ts +0 -435
  258. package/src/checks/json-missing-block/index.ts +0 -56
  259. package/src/checks/json-missing-block/missing-block-utils.ts +0 -147
  260. package/src/checks/liquid-free-settings/index.spec.ts +0 -180
  261. package/src/checks/liquid-free-settings/index.ts +0 -79
  262. package/src/checks/missing-content-for-arguments/index.spec.ts +0 -144
  263. package/src/checks/missing-content-for-arguments/index.ts +0 -46
  264. package/src/checks/pagination-size/index.spec.ts +0 -158
  265. package/src/checks/pagination-size/index.ts +0 -104
  266. package/src/checks/remote-asset/index.spec.ts +0 -280
  267. package/src/checks/remote-asset/index.ts +0 -238
  268. package/src/checks/reserved-doc-param-names/index.spec.ts +0 -62
  269. package/src/checks/reserved-doc-param-names/index.ts +0 -57
  270. package/src/checks/schema-presets-block-order/index.spec.ts +0 -344
  271. package/src/checks/schema-presets-block-order/index.ts +0 -154
  272. package/src/checks/schema-presets-static-blocks/index.spec.ts +0 -145
  273. package/src/checks/schema-presets-static-blocks/index.ts +0 -126
  274. package/src/checks/static-stylesheet-and-javascript-tags/index.spec.ts +0 -257
  275. package/src/checks/static-stylesheet-and-javascript-tags/index.ts +0 -48
  276. package/src/checks/unique-settings-id/index.spec.ts +0 -24
  277. package/src/checks/unique-settings-id/index.ts +0 -84
  278. package/src/checks/unique-settings-id/test-data.ts +0 -1191
  279. package/src/checks/unique-static-block-id/index.spec.ts +0 -55
  280. package/src/checks/unique-static-block-id/index.ts +0 -60
  281. package/src/checks/unrecognized-content-for-arguments/index.spec.ts +0 -145
  282. package/src/checks/unrecognized-content-for-arguments/index.ts +0 -55
  283. package/src/checks/valid-block-target/index.spec.ts +0 -1396
  284. package/src/checks/valid-block-target/index.ts +0 -142
  285. package/src/checks/valid-content-for-argument-types/index.spec.ts +0 -382
  286. package/src/checks/valid-content-for-argument-types/index.ts +0 -42
  287. package/src/checks/valid-content-for-arguments/index.spec.ts +0 -107
  288. package/src/checks/valid-content-for-arguments/index.ts +0 -98
  289. package/src/checks/valid-local-blocks/index.spec.ts +0 -286
  290. package/src/checks/valid-local-blocks/index.ts +0 -100
  291. package/src/checks/valid-local-blocks/valid-block-utils.ts +0 -97
  292. package/src/checks/valid-schema/index.spec.ts +0 -174
  293. package/src/checks/valid-schema/index.ts +0 -41
  294. package/src/checks/valid-schema-name/index.spec.ts +0 -112
  295. package/src/checks/valid-schema-name/index.ts +0 -75
  296. package/src/checks/valid-settings-key/index.spec.ts +0 -321
  297. package/src/checks/valid-settings-key/index.ts +0 -144
  298. package/src/checks/valid-static-block-type/index.spec.ts +0 -38
  299. package/src/checks/valid-static-block-type/index.ts +0 -58
  300. package/src/checks/valid-visible-if/index.spec.ts +0 -619
  301. package/src/checks/valid-visible-if/index.ts +0 -184
  302. package/src/checks/valid-visible-if/visible-if-utils.ts +0 -158
  303. package/src/tags/content-for.ts +0 -25
  304. package/src/to-schema.ts +0 -231
  305. package/src/types/schemas/section.ts +0 -86
  306. package/src/types/schemas/theme-block.ts +0 -34
  307. package/src/types/theme-schemas.ts +0 -80
  308. package/src/utils/block.ts +0 -300
  309. package/src/utils/markup.ts +0 -10
@@ -0,0 +1,464 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDocBlock = generateDocBlock;
4
+ const liquid_html_parser_1 = require("@platformos/liquid-html-parser");
5
+ const utils_1 = require("../utils");
6
+ const visitor_1 = require("../visitor");
7
+ const utils_2 = require("../liquid-doc/utils");
8
+ /**
9
+ * Generate a doc block for a partial/block based on detected parameters and inferred types.
10
+ */
11
+ async function generateDocBlock(ast, uri, themeDocset) {
12
+ if ((0, utils_1.isError)(ast)) {
13
+ return {
14
+ parameters: [],
15
+ hasExistingDocBlock: false,
16
+ docBlockText: '',
17
+ };
18
+ }
19
+ // Check for existing doc block
20
+ const hasExistingDocBlock = await hasDocBlock(ast);
21
+ // Get global objects that should not be treated as parameters
22
+ const globalObjectNames = await getGlobalObjectNames(themeDocset);
23
+ // Get contextual objects based on file path
24
+ const contextualObjectNames = getContextualObjects(uri);
25
+ // Collect all variable usages and definitions
26
+ const { usages, definedVariables, docParamNames } = await collectVariableInfo(ast);
27
+ // Detect parameters: variables used but not defined (excluding globals/contextuals)
28
+ const excludedNames = new Set([
29
+ ...globalObjectNames,
30
+ ...contextualObjectNames,
31
+ ...definedVariables,
32
+ ...docParamNames,
33
+ ]);
34
+ const parameterUsages = new Map();
35
+ for (const usage of usages) {
36
+ if (!usage.name || excludedNames.has(usage.name))
37
+ continue;
38
+ // Group usages by parameter name
39
+ if (!parameterUsages.has(usage.name)) {
40
+ parameterUsages.set(usage.name, []);
41
+ }
42
+ parameterUsages.get(usage.name).push(usage);
43
+ }
44
+ // Infer types and detect optional parameters
45
+ const parameters = [];
46
+ for (const [name, usageList] of parameterUsages) {
47
+ const type = inferTypeFromUsages(usageList);
48
+ const isOptional = detectOptional(usageList);
49
+ parameters.push({ name, type, isOptional });
50
+ }
51
+ // Sort parameters: required first, then by name
52
+ parameters.sort((a, b) => {
53
+ if (a.isOptional !== b.isOptional) {
54
+ return a.isOptional ? 1 : -1;
55
+ }
56
+ return a.name.localeCompare(b.name);
57
+ });
58
+ // Generate doc block text
59
+ const docBlockText = formatDocBlock(parameters);
60
+ return {
61
+ parameters,
62
+ hasExistingDocBlock,
63
+ docBlockText,
64
+ };
65
+ }
66
+ /**
67
+ * Check if the AST already has a {% doc %} block.
68
+ */
69
+ async function hasDocBlock(ast) {
70
+ let found = false;
71
+ await (0, visitor_1.visit)(ast, {
72
+ async LiquidRawTag(node) {
73
+ if (node.name === 'doc') {
74
+ found = true;
75
+ }
76
+ },
77
+ });
78
+ return found;
79
+ }
80
+ /**
81
+ * Get global object names from the theme docset.
82
+ */
83
+ async function getGlobalObjectNames(themeDocset) {
84
+ if (!themeDocset)
85
+ return new Set();
86
+ const objects = await themeDocset.objects();
87
+ const globalObjects = objects.filter(({ access }) => {
88
+ return !access || access.global === true || access.template.length > 0;
89
+ });
90
+ return new Set(globalObjects.map((obj) => obj.name));
91
+ }
92
+ /**
93
+ * Get contextual objects based on file path.
94
+ */
95
+ function getContextualObjects(uri) {
96
+ if (uri.includes('layout/checkout.liquid')) {
97
+ return [
98
+ 'locale',
99
+ 'direction',
100
+ 'skip_to_content_link',
101
+ 'checkout_html_classes',
102
+ 'checkout_stylesheets',
103
+ 'checkout_scripts',
104
+ 'content_for_logo',
105
+ 'breadcrumb',
106
+ 'order_summary_toggle',
107
+ 'content_for_order_summary',
108
+ 'alternative_payment_methods',
109
+ 'content_for_footer',
110
+ 'tracking_code',
111
+ ];
112
+ }
113
+ if (uri.includes('/sections/')) {
114
+ return ['section', 'predictive_search', 'recommendations', 'comment'];
115
+ }
116
+ if (uri.includes('/blocks/')) {
117
+ return ['app', 'section', 'recommendations', 'block'];
118
+ }
119
+ if (uri.includes('views/partials/') || uri.includes('/lib/')) {
120
+ return ['app'];
121
+ }
122
+ return [];
123
+ }
124
+ /**
125
+ * Collect all variable usages and defined variables from the AST.
126
+ */
127
+ async function collectVariableInfo(ast) {
128
+ const scopedVariables = new Map();
129
+ const fileScopedVariables = new Set();
130
+ const usages = [];
131
+ const docParamNames = new Set();
132
+ function indexVariableScope(variableName, scope) {
133
+ if (!variableName)
134
+ return;
135
+ const indexedScope = scopedVariables.get(variableName) ?? [];
136
+ scopedVariables.set(variableName, indexedScope.concat(scope));
137
+ }
138
+ await (0, visitor_1.visit)(ast, {
139
+ async LiquidDocParamNode(node) {
140
+ const paramName = node.paramName?.value;
141
+ if (paramName) {
142
+ fileScopedVariables.add(paramName);
143
+ docParamNames.add(paramName);
144
+ }
145
+ },
146
+ async LiquidTag(node, ancestors) {
147
+ if (isLiquidTagAssign(node) || isLiquidTagGraphQL(node)) {
148
+ indexVariableScope(node.markup.name, {
149
+ start: node.blockStartPosition.end,
150
+ });
151
+ }
152
+ if (isLiquidTagHashAssign(node) && node.markup.target.name) {
153
+ indexVariableScope(node.markup.target.name, {
154
+ start: node.blockStartPosition.end,
155
+ });
156
+ }
157
+ if (isLiquidTagCapture(node)) {
158
+ indexVariableScope(node.markup.name, {
159
+ start: node.blockEndPosition?.end,
160
+ });
161
+ }
162
+ if (['form', 'paginate'].includes(node.name)) {
163
+ indexVariableScope(node.name, {
164
+ start: node.blockStartPosition.end,
165
+ end: node.blockEndPosition?.start,
166
+ });
167
+ }
168
+ if (node.name === 'function') {
169
+ indexVariableScope(node.markup.name, {
170
+ start: node.position.end,
171
+ });
172
+ }
173
+ if (node.name === 'layout') {
174
+ indexVariableScope('none', {
175
+ start: node.position.start,
176
+ end: node.position.end,
177
+ });
178
+ }
179
+ if ((isLiquidTagIncrement(node) || isLiquidTagDecrement(node)) &&
180
+ node.markup.name !== null) {
181
+ indexVariableScope(node.markup.name, {
182
+ start: node.position.start,
183
+ });
184
+ }
185
+ if (isLiquidForTag(node) || isLiquidTableRowTag(node)) {
186
+ indexVariableScope(node.markup.variableName, {
187
+ start: node.blockStartPosition.end,
188
+ end: node.blockEndPosition?.start,
189
+ });
190
+ indexVariableScope(node.name === 'for' ? 'forloop' : 'tablerowloop', {
191
+ start: node.blockStartPosition.end,
192
+ end: node.blockEndPosition?.start,
193
+ });
194
+ }
195
+ if (isLiquidTagBackground(node)) {
196
+ indexVariableScope(node.markup.jobId.name, {
197
+ start: node.blockEndPosition?.end,
198
+ });
199
+ }
200
+ },
201
+ async LiquidVariable(node, ancestors) {
202
+ // Collect variable usages from LiquidVariable nodes
203
+ const expression = node.expression;
204
+ if (expression.type === liquid_html_parser_1.NodeTypes.VariableLookup && expression.name) {
205
+ usages.push({
206
+ name: expression.name,
207
+ lookup: expression,
208
+ filters: node.filters,
209
+ });
210
+ }
211
+ },
212
+ async VariableLookup(node, ancestors) {
213
+ const parent = (0, utils_1.last)(ancestors);
214
+ // Skip if inside capture tag markup (being defined, not used)
215
+ if (isLiquidTag(parent) && isLiquidTagCapture(parent))
216
+ return;
217
+ // Skip the jobId variable in background tag markup
218
+ if (isBackgroundInlineMarkup(parent) && parent.jobId === node)
219
+ return;
220
+ // Skip if this is a LiquidVariable's expression (already collected above)
221
+ if (parent &&
222
+ 'expression' in parent &&
223
+ parent.expression === node) {
224
+ return;
225
+ }
226
+ if (node.name) {
227
+ usages.push({
228
+ name: node.name,
229
+ lookup: node,
230
+ filters: [],
231
+ });
232
+ }
233
+ },
234
+ });
235
+ // Filter usages to only those that are undefined at their usage point
236
+ const undefinedUsages = usages.filter((usage) => {
237
+ if (!usage.name)
238
+ return false;
239
+ return !isDefined(usage.name, usage.lookup.position, fileScopedVariables, scopedVariables);
240
+ });
241
+ // Get all defined variables (both file-scoped and scoped)
242
+ const definedVariables = new Set([
243
+ ...fileScopedVariables,
244
+ ...scopedVariables.keys(),
245
+ ]);
246
+ return { usages: undefinedUsages, definedVariables, docParamNames };
247
+ }
248
+ /**
249
+ * Check if a variable is defined at a given position.
250
+ */
251
+ function isDefined(variableName, variablePosition, fileScopedVariables, scopedVariables) {
252
+ if (fileScopedVariables.has(variableName)) {
253
+ return true;
254
+ }
255
+ const scopes = scopedVariables.get(variableName);
256
+ if (!scopes) {
257
+ return false;
258
+ }
259
+ return scopes.some((scope) => isDefinedInScope(variablePosition, scope));
260
+ }
261
+ function isDefinedInScope(variablePosition, scope) {
262
+ const start = variablePosition.start;
263
+ const isVariableAfterScopeStart = !scope.start || start > scope.start;
264
+ const isVariableBeforeScopeEnd = !scope.end || start < scope.end;
265
+ return isVariableAfterScopeStart && isVariableBeforeScopeEnd;
266
+ }
267
+ /**
268
+ * Infer type from variable usages.
269
+ */
270
+ function inferTypeFromUsages(usages) {
271
+ // Analyze all usages to determine the most likely type
272
+ const typeVotes = new Map();
273
+ for (const usage of usages) {
274
+ const inferredType = inferTypeFromUsage(usage);
275
+ if (inferredType) {
276
+ const currentVotes = typeVotes.get(inferredType) || 0;
277
+ typeVotes.set(inferredType, currentVotes + 1);
278
+ }
279
+ }
280
+ // Return the type with most votes, or 'object' as default
281
+ let bestType = null;
282
+ let maxVotes = 0;
283
+ for (const [type, votes] of typeVotes) {
284
+ if (votes > maxVotes) {
285
+ maxVotes = votes;
286
+ bestType = type;
287
+ }
288
+ }
289
+ // If no specific type was inferred, check if it has property access (object)
290
+ if (!bestType) {
291
+ for (const usage of usages) {
292
+ if (usage.lookup.lookups.length > 0) {
293
+ return utils_2.BasicParamTypes.Object;
294
+ }
295
+ }
296
+ }
297
+ return bestType;
298
+ }
299
+ /**
300
+ * Infer type from a single variable usage.
301
+ */
302
+ function inferTypeFromUsage(usage) {
303
+ const { lookup, filters } = usage;
304
+ // Check filters for type hints
305
+ for (const filter of filters) {
306
+ const typeFromFilter = inferTypeFromFilter(filter.name);
307
+ if (typeFromFilter) {
308
+ return typeFromFilter;
309
+ }
310
+ }
311
+ // Check property access for object type
312
+ if (lookup.lookups.length > 0) {
313
+ return utils_2.BasicParamTypes.Object;
314
+ }
315
+ return null;
316
+ }
317
+ /**
318
+ * Infer type from filter name.
319
+ */
320
+ function inferTypeFromFilter(filterName) {
321
+ // Filters that suggest string input
322
+ const stringFilters = [
323
+ 'append',
324
+ 'prepend',
325
+ 'capitalize',
326
+ 'downcase',
327
+ 'upcase',
328
+ 'strip',
329
+ 'lstrip',
330
+ 'rstrip',
331
+ 'strip_html',
332
+ 'strip_newlines',
333
+ 'newline_to_br',
334
+ 'escape',
335
+ 'escape_once',
336
+ 'url_encode',
337
+ 'url_decode',
338
+ 'md5',
339
+ 'sha1',
340
+ 'sha256',
341
+ 'base64_encode',
342
+ 'base64_decode',
343
+ 'hmac_sha1',
344
+ 'hmac_sha256',
345
+ 'truncate',
346
+ 'truncatewords',
347
+ 'split',
348
+ 'replace',
349
+ 'replace_first',
350
+ 'remove',
351
+ 'remove_first',
352
+ 'slice',
353
+ 'pluralize',
354
+ ];
355
+ // Filters that suggest number input
356
+ const numberFilters = [
357
+ 'plus',
358
+ 'minus',
359
+ 'times',
360
+ 'divided_by',
361
+ 'modulo',
362
+ 'floor',
363
+ 'ceil',
364
+ 'round',
365
+ 'abs',
366
+ 'at_least',
367
+ 'at_most',
368
+ ];
369
+ // Filters that suggest array input
370
+ const arrayFilters = [
371
+ 'join',
372
+ 'first',
373
+ 'last',
374
+ 'size',
375
+ 'reverse',
376
+ 'sort',
377
+ 'sort_natural',
378
+ 'uniq',
379
+ 'compact',
380
+ 'map',
381
+ 'where',
382
+ 'concat',
383
+ ];
384
+ if (stringFilters.includes(filterName)) {
385
+ return utils_2.BasicParamTypes.String;
386
+ }
387
+ if (numberFilters.includes(filterName)) {
388
+ return utils_2.BasicParamTypes.Number;
389
+ }
390
+ if (arrayFilters.includes(filterName)) {
391
+ // Array implies object type in LiquidDoc context
392
+ return utils_2.BasicParamTypes.Object;
393
+ }
394
+ return null;
395
+ }
396
+ /**
397
+ * Detect if a parameter is optional (has default filter usage).
398
+ */
399
+ function detectOptional(usages) {
400
+ for (const usage of usages) {
401
+ for (const filter of usage.filters) {
402
+ if (filter.name === 'default') {
403
+ return true;
404
+ }
405
+ }
406
+ }
407
+ return false;
408
+ }
409
+ /**
410
+ * Format the doc block text.
411
+ */
412
+ function formatDocBlock(parameters) {
413
+ if (parameters.length === 0) {
414
+ return '{% doc %}\n{% enddoc %}';
415
+ }
416
+ const lines = ['{% doc %}'];
417
+ for (const param of parameters) {
418
+ const typeStr = param.type ? `{${param.type}}` : '{object}';
419
+ const nameStr = param.isOptional ? `[${param.name}]` : param.name;
420
+ lines.push(` @param ${typeStr} ${nameStr} -`);
421
+ }
422
+ lines.push('{% enddoc %}');
423
+ return lines.join('\n');
424
+ }
425
+ // Type guard functions
426
+ function isLiquidTag(node) {
427
+ return node?.type === liquid_html_parser_1.NodeTypes.LiquidTag;
428
+ }
429
+ function isLiquidTagCapture(node) {
430
+ return node.name === liquid_html_parser_1.NamedTags.capture;
431
+ }
432
+ function isLiquidTagAssign(node) {
433
+ return node.name === liquid_html_parser_1.NamedTags.assign && typeof node.markup !== 'string';
434
+ }
435
+ function isLiquidTagHashAssign(node) {
436
+ return node.name === liquid_html_parser_1.NamedTags.hash_assign && typeof node.markup !== 'string';
437
+ }
438
+ function isLiquidTagGraphQL(node) {
439
+ return node.name === liquid_html_parser_1.NamedTags.graphql && typeof node.markup !== 'string';
440
+ }
441
+ function isLiquidForTag(node) {
442
+ return node.name === liquid_html_parser_1.NamedTags.for && typeof node.markup !== 'string';
443
+ }
444
+ function isLiquidTableRowTag(node) {
445
+ return node.name === liquid_html_parser_1.NamedTags.tablerow && typeof node.markup !== 'string';
446
+ }
447
+ function isLiquidTagIncrement(node) {
448
+ return node.name === liquid_html_parser_1.NamedTags.increment && typeof node.markup !== 'string';
449
+ }
450
+ function isLiquidTagDecrement(node) {
451
+ return node.name === liquid_html_parser_1.NamedTags.decrement && typeof node.markup !== 'string';
452
+ }
453
+ function isLiquidTagBackground(node) {
454
+ return (node.name === liquid_html_parser_1.NamedTags.background &&
455
+ typeof node.markup !== 'string' &&
456
+ node.markup.type === liquid_html_parser_1.NodeTypes.BackgroundInlineMarkup);
457
+ }
458
+ function isBackgroundInlineMarkup(node) {
459
+ return (typeof node === 'object' &&
460
+ node !== null &&
461
+ 'type' in node &&
462
+ node.type === liquid_html_parser_1.NodeTypes.BackgroundInlineMarkup);
463
+ }
464
+ //# sourceMappingURL=DocBlockGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocBlockGenerator.js","sourceRoot":"","sources":["../../src/doc-generator/DocBlockGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { generateDocBlock, DetectedParameter, DocBlockResult, } from './DocBlockGenerator';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDocBlock = void 0;
4
+ var DocBlockGenerator_1 = require("./DocBlockGenerator");
5
+ Object.defineProperty(exports, "generateDocBlock", { enumerable: true, get: function () { return DocBlockGenerator_1.generateDocBlock; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-generator/index.ts"],"names":[],"mappings":";;;AAAA,yDAI6B;AAH3B,qHAAA,gBAAgB,OAAA"}
@@ -1,18 +1,15 @@
1
1
  import { UriString } from '@platformos/platformos-common';
2
2
  type FileExists = (uri: string) => Promise<boolean>;
3
3
  /**
4
- * Returns the "root" of a theme or theme app extension. The root is the
5
- * directory that contains a `.theme-check.yml` file, a `.git` directory, or a
6
- * `shopify.extension.toml` file.
4
+ * Returns the root of a platformOS app. The root is the directory that contains
5
+ * a `.pos` sentinel file, a `.platformos-check.yml` config file, an `app/` directory,
6
+ * or a `modules/` directory (when not inside `app/`).
7
7
  *
8
- * There are cases where .theme-check.yml is not defined and we have to infer the root.
9
- * We'll assume that the root is the directory that contains a `snippets` directory.
8
+ * Note: `modules/` inside `app/` (i.e. `app/modules/`) is a valid subdirectory and
9
+ * should not be treated as a root indicator.
10
10
  *
11
- * So you can think of this function as the function that infers where a .theme-check.yml
12
- * should be.
13
- *
14
- * Note: that this is not the theme root. The config file might have a `root` entry in it
15
- * that points to somewhere else.
11
+ * Note: this is not the app root itself. The config file might have a `root` entry that
12
+ * points to somewhere else.
16
13
  */
17
14
  export declare function findRoot(curr: UriString, fileExists: FileExists): Promise<UriString | null>;
18
15
  export {};
package/dist/find-root.js CHANGED
@@ -36,9 +36,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.findRoot = findRoot;
37
37
  const path = __importStar(require("./path"));
38
38
  async function isRoot(dir, fileExists) {
39
- return or(
40
- // .pos config file and app directory exists
41
- and(fileExists(path.join(dir, '.pos')), fileExists(path.join(dir, 'app')), fileExists(path.join(dir, 'modules')), fileExists(path.join(dir, '.git'))));
39
+ return or(fileExists(path.join(dir, '.pos')), fileExists(path.join(dir, '.platformos-check.yml')), fileExists(path.join(dir, 'app')),
40
+ // modules/ is a root indicator only when not inside app/ (app/modules/ is a valid subdirectory)
41
+ and(fileExists(path.join(dir, 'modules')), Promise.resolve(path.basename(dir) !== 'app')));
42
42
  }
43
43
  async function and(...promises) {
44
44
  const bools = await Promise.all(promises);
@@ -48,23 +48,16 @@ async function or(...promises) {
48
48
  const bools = await Promise.all(promises);
49
49
  return bools.reduce((a, b) => a || b, false);
50
50
  }
51
- async function not(ap) {
52
- const a = await ap;
53
- return !a;
54
- }
55
51
  /**
56
- * Returns the "root" of a theme or theme app extension. The root is the
57
- * directory that contains a `.theme-check.yml` file, a `.git` directory, or a
58
- * `shopify.extension.toml` file.
59
- *
60
- * There are cases where .theme-check.yml is not defined and we have to infer the root.
61
- * We'll assume that the root is the directory that contains a `snippets` directory.
52
+ * Returns the root of a platformOS app. The root is the directory that contains
53
+ * a `.pos` sentinel file, a `.platformos-check.yml` config file, an `app/` directory,
54
+ * or a `modules/` directory (when not inside `app/`).
62
55
  *
63
- * So you can think of this function as the function that infers where a .theme-check.yml
64
- * should be.
56
+ * Note: `modules/` inside `app/` (i.e. `app/modules/`) is a valid subdirectory and
57
+ * should not be treated as a root indicator.
65
58
  *
66
- * Note: that this is not the theme root. The config file might have a `root` entry in it
67
- * that points to somewhere else.
59
+ * Note: this is not the app root itself. The config file might have a `root` entry that
60
+ * points to somewhere else.
68
61
  */
69
62
  async function findRoot(curr, fileExists) {
70
63
  const currIsRoot = await isRoot(curr, fileExists);
@@ -1 +1 @@
1
- {"version":3,"file":"find-root.js","sourceRoot":"","sources":["../src/find-root.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,4BAaC;AA1DD,6CAA+B;AAI/B,KAAK,UAAU,MAAM,CAAC,GAAc,EAAE,UAAsB;IAC1D,OAAO,EAAE;IACP,4CAA4C;IAC5C,GAAG,CACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EACrC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CACnC,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,GAAG,QAA4B;IAChD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,EAAE,CAAC,GAAG,QAA4B;IAC/C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,EAAoB;IACrC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,QAAQ,CAAC,IAAe,EAAE,UAAsB;IACpE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,kBAAkB,GAAG,GAAG,KAAK,IAAI,CAAC;IACxC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,CAAC,kBAAkB;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"find-root.js","sourceRoot":"","sources":["../src/find-root.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,4BAaC;AAhDD,6CAA+B;AAI/B,KAAK,UAAU,MAAM,CAAC,GAAc,EAAE,UAAsB;IAC1D,OAAO,EAAE,CACP,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,EACnD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjC,gGAAgG;IAChG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAC1F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,GAAG,QAA4B;IAChD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,EAAE,CAAC,GAAG,QAA4B;IAC/C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,QAAQ,CAAC,IAAe,EAAE,UAAsB;IACpE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,kBAAkB,GAAG,GAAG,KAAK,IAAI,CAAC;IACxC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,CAAC,kBAAkB;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACnC,CAAC"}
@@ -1,9 +1,9 @@
1
- import { FixApplicator, Offense, Theme } from '../types';
1
+ import { FixApplicator, Offense, App } from '../types';
2
2
  /**
3
- * Takes a theme, list of offenses and a fixApplicator and runs all the
4
- * safe ones on the theme.
3
+ * Takes an app, list of offenses and a fixApplicator and runs all the
4
+ * safe ones on the app.
5
5
  *
6
6
  * Note that offense.fix is assumed to be safe, unlike offense.suggest
7
7
  * options.
8
8
  */
9
- export declare function autofix(sourceCodes: Theme, offenses: Offense[], applyFixes: FixApplicator): Promise<void>;
9
+ export declare function autofix(sourceCodes: App, offenses: Offense[], applyFixes: FixApplicator): Promise<void>;
@@ -4,8 +4,8 @@ exports.autofix = autofix;
4
4
  const correctors_1 = require("./correctors");
5
5
  const utils_1 = require("./utils");
6
6
  /**
7
- * Takes a theme, list of offenses and a fixApplicator and runs all the
8
- * safe ones on the theme.
7
+ * Takes an app, list of offenses and a fixApplicator and runs all the
8
+ * safe ones on the app.
9
9
  *
10
10
  * Note that offense.fix is assumed to be safe, unlike offense.suggest
11
11
  * options.
@@ -1 +1 @@
1
- {"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../src/fixes/autofix.ts"],"names":[],"mappings":";;AAgBA,0BAwBC;AAtCD,6CAA+C;AAC/C,mCAAuC;AAMvC;;;;;;GAMG;AACI,KAAK,UAAU,OAAO,CAAC,WAAkB,EAAE,QAAmB,EAAE,UAAyB;IAC9F,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAA6C,EAAE,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAC1F,CAAC;IAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/F,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACtE,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,uDAAuD;YACvD,OAAO,CAAC,GAAG,CAAC,SAAgB,CAAC,CAAC;QAChC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAA,oBAAY,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../src/fixes/autofix.ts"],"names":[],"mappings":";;AAgBA,0BAwBC;AAtCD,6CAA+C;AAC/C,mCAAuC;AAMvC;;;;;;GAMG;AACI,KAAK,UAAU,OAAO,CAAC,WAAgB,EAAE,QAAmB,EAAE,UAAyB;IAC5F,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAA6C,EAAE,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAC1F,CAAC;IAEF,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/F,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACtE,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,uDAAuD;YACvD,OAAO,CAAC,GAAG,CAAC,SAAgB,CAAC,CAAC;QAChC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAA,oBAAY,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
@@ -19,6 +19,10 @@ function createCorrector(sourceCodeType, source) {
19
19
  }
20
20
  case types_1.SourceCodeType.GraphQL:
21
21
  return new graphql_corrector_1.GraphQLCorrector(source);
22
+ case types_1.SourceCodeType.YAML: {
23
+ // YAML autofix is not yet supported; this case should not be reached
24
+ throw new Error('YAML autofix is not supported');
25
+ }
22
26
  default: {
23
27
  return assertNever(sourceCodeType);
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fixes/correctors/index.ts"],"names":[],"mappings":";;;AAOA,0CAiBC;AAxBD,uCAAwD;AACxD,qDAAiD;AAIxC,8FAJA,8BAAa,OAIA;AAHtB,yDAAqD;AAG7B,gGAHf,kCAAe,OAGe;AAFvC,2DAAuD;AAEd,iGAFhC,oCAAgB,OAEgC;AAEzD,SAAgB,eAAe,CAC7B,cAAiB,EACjB,MAAc;IAEd,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,sBAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,OAAO,IAAI,8BAAa,CAAC,MAAM,CAAqC,CAAC;QACvE,CAAC;QACD,KAAK,sBAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/B,OAAO,IAAI,kCAAe,CAAC,MAAM,CAAqC,CAAC;QACzE,CAAC;QACD,KAAK,sBAAc,CAAC,OAAO;YACzB,OAAO,IAAI,oCAAgB,CAAC,MAAM,CAAqC,CAAC;QAC1E,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAQ;IAC3B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fixes/correctors/index.ts"],"names":[],"mappings":";;;AAOA,0CAqBC;AA5BD,uCAAwD;AACxD,qDAAiD;AAIxC,8FAJA,8BAAa,OAIA;AAHtB,yDAAqD;AAG7B,gGAHf,kCAAe,OAGe;AAFvC,2DAAuD;AAEd,iGAFhC,oCAAgB,OAEgC;AAEzD,SAAgB,eAAe,CAC7B,cAAiB,EACjB,MAAc;IAEd,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,sBAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,OAAO,IAAI,8BAAa,CAAC,MAAM,CAAqC,CAAC;QACvE,CAAC;QACD,KAAK,sBAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/B,OAAO,IAAI,kCAAe,CAAC,MAAM,CAAqC,CAAC;QACzE,CAAC;QACD,KAAK,sBAAc,CAAC,OAAO;YACzB,OAAO,IAAI,oCAAgB,CAAC,MAAM,CAAqC,CAAC;QAC1E,KAAK,sBAAc,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,qEAAqE;YACrE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAQ;IAC3B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}