@astryxdesign/cli 0.1.8-canary.0c4d8d7 → 0.1.8-canary.0db5dfd

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 (303) hide show
  1. package/{src/api → api/blog}/blog.mjs +42 -6
  2. package/{src/api → api/blog}/blog.test.mjs +2 -2
  3. package/api/build/build.mjs +92 -0
  4. package/api/build/build.test.mjs +92 -0
  5. package/{src/api → api/component}/component.mjs +49 -26
  6. package/{src/api → api/discover}/discover.mjs +55 -18
  7. package/{src/api → api/docs}/docs.mjs +47 -21
  8. package/{src/api → api/doctor}/doctor.mjs +11 -8
  9. package/{src/api → api/hook}/hook.mjs +11 -11
  10. package/{src/api → api}/index.mjs +16 -9
  11. package/{src/api → api/integration}/validate-integration.mjs +48 -15
  12. package/{src/api → api/integration}/validate-integration.test.mjs +1 -1
  13. package/{src/api → api/layout}/layout.mjs +66 -17
  14. package/{src/api → api/layout}/layout.test.mjs +1 -1
  15. package/{src/api → api/search}/search.mjs +71 -12
  16. package/api/swizzle/swizzle.mjs +283 -0
  17. package/{src/commands → api/swizzle}/swizzle.test.mjs +26 -1
  18. package/{src/api → api/template}/template-integration.test.mjs +2 -2
  19. package/{src/api → api/template}/template-suffix.test.mjs +3 -3
  20. package/{src/api → api/template}/template.mjs +96 -19
  21. package/{src/api → api/theme}/theme-add.mjs +35 -7
  22. package/{src → authoring}/codemod.mjs +6 -6
  23. package/{src → authoring}/config.test.mjs +1 -1
  24. package/{src → authoring}/doc.mjs +1 -1
  25. package/{src → authoring}/doc.test.mjs +1 -1
  26. package/{src → authoring}/template.mjs +1 -1
  27. package/bin/astryx.mjs +12 -10
  28. package/{src → cli}/commands/blog.mjs +48 -7
  29. package/{src → cli}/commands/build-theme.mjs +125 -46
  30. package/{src → cli}/commands/build.mjs +33 -57
  31. package/{src → cli}/commands/component/index.mjs +49 -22
  32. package/{src → cli}/commands/component-ownership.test.mjs +3 -3
  33. package/{src → cli}/commands/component-package.test.mjs +1 -1
  34. package/{src → cli}/commands/component-resolution.test.mjs +2 -2
  35. package/{src → cli}/commands/discover.mjs +17 -8
  36. package/{src → cli}/commands/docs.mjs +39 -7
  37. package/{src → cli}/commands/docs.test.mjs +1 -1
  38. package/{src → cli}/commands/doctor.mjs +3 -3
  39. package/{src → cli}/commands/doctor.test.mjs +2 -2
  40. package/{src → cli}/commands/ensure-core-built.mjs +3 -2
  41. package/{src → cli}/commands/external-showcase.test.mjs +1 -1
  42. package/{src → cli}/commands/hook/index.mjs +37 -14
  43. package/{src → cli}/commands/import-hint-correctness.test.mjs +1 -1
  44. package/{src → cli}/commands/init.mjs +20 -9
  45. package/{src → cli}/commands/layout.mjs +58 -18
  46. package/{src → cli}/commands/search.mjs +19 -12
  47. package/{src → cli}/commands/search.test.mjs +1 -1
  48. package/{src → cli}/commands/setup-nudge.test.mjs +1 -1
  49. package/cli/commands/swizzle.mjs +103 -0
  50. package/{src → cli}/commands/template.mjs +73 -22
  51. package/{src → cli}/commands/template.path-safety.test.mjs +2 -2
  52. package/{src → cli}/commands/upgrade.integration-policy.test.mjs +1 -1
  53. package/{src → cli}/commands/upgrade.mjs +160 -52
  54. package/{src → cli}/commands/upgrade.test.mjs +1 -1
  55. package/{src → cli}/commands/validate-integration.mjs +17 -37
  56. package/{src → cli}/index.mjs +17 -15
  57. package/{src/codemods → codemods}/ensure-jscodeshift.mjs +1 -1
  58. package/{src/codemods → codemods}/integration-discovery.mjs +6 -3
  59. package/{src/codemods → codemods}/integration-discovery.test.mjs +1 -1
  60. package/{src/codemods → codemods}/integration-runner.mjs +8 -3
  61. package/{src/codemods → codemods}/registry.mjs +3 -1
  62. package/{src/codemods → codemods}/run-codemod.mjs +17 -10
  63. package/{src/codemods → codemods}/runner.mjs +22 -12
  64. package/{src/codemods → codemods}/transforms/v0.0.10/remove-size-props.mjs +9 -4
  65. package/{src/codemods → codemods}/transforms/v0.0.12/add-is-icon-only.mjs +27 -22
  66. package/{src/codemods → codemods}/transforms/v0.0.13/icon-name-deprecations.mjs +12 -5
  67. package/{src/codemods → codemods}/transforms/v0.0.13/rename-attachments-to-drawer.mjs +15 -8
  68. package/{src/codemods → codemods}/transforms/v0.0.13/toolbar-density-to-size.mjs +10 -4
  69. package/{src/codemods → codemods}/transforms/v0.0.14/rename-action-props.mjs +11 -5
  70. package/{src/codemods → codemods}/transforms/v0.0.14/rename-section-wash-to-muted.mjs +11 -6
  71. package/{src/codemods → codemods}/transforms/v0.0.14/rename-status-variants.mjs +15 -10
  72. package/{src/codemods → codemods}/transforms/v0.0.15/migrate-item-children-to-endcontent.mjs +13 -8
  73. package/{src/codemods → codemods}/transforms/v0.0.15/migrate-selector-children-to-render-option.mjs +18 -13
  74. package/{src/codemods → codemods}/transforms/v0.0.15/migrate-theme-selectors-to-data-attrs.mjs +8 -4
  75. package/{src/codemods → codemods}/transforms/v0.0.15/rename-date-picker-to-input.mjs +11 -6
  76. package/{src/codemods → codemods}/transforms/v0.0.15/rename-imperative-ref-to-handleRef.mjs +6 -1
  77. package/{src/codemods → codemods}/transforms/v0.0.15/rename-isStreaming-to-isStopShown.mjs +6 -1
  78. package/{src/codemods → codemods}/transforms/v0.0.15/rename-stack-element-to-as.mjs +8 -3
  79. package/{src/codemods → codemods}/transforms/v0.0.2/migrate-badge-dot-to-statusdot.mjs +17 -10
  80. package/{src/codemods → codemods}/transforms/v0.0.2/migrate-gap-to-numeric.mjs +7 -1
  81. package/{src/codemods → codemods}/transforms/v0.0.2/migrate-isFullBleed-to-padding.mjs +9 -4
  82. package/{src/codemods → codemods}/transforms/v0.0.2/migrate-useXDSIcon-to-getIcon.mjs +12 -7
  83. package/{src/codemods → codemods}/transforms/v0.0.2/rename-banner-endButton-to-endContent.mjs +7 -2
  84. package/{src/codemods → codemods}/transforms/v0.0.2/rename-form-tooltip-startIcon.mjs +8 -2
  85. package/{src/codemods → codemods}/transforms/v0.0.2/rename-isShown-to-isOpen.mjs +7 -2
  86. package/{src/codemods → codemods}/transforms/v0.0.2/rename-selector-items-to-options.mjs +7 -2
  87. package/{src/codemods → codemods}/transforms/v0.0.2/rename-sidenav-header-to-heading.mjs +11 -4
  88. package/{src/codemods → codemods}/transforms/v0.0.2/rename-topnav-title-to-heading.mjs +10 -4
  89. package/{src/codemods → codemods}/transforms/v0.0.2/unify-uncontrolled-to-defaultX.mjs +7 -2
  90. package/{src/codemods → codemods}/transforms/v0.0.2/unify-visibility-to-onOpenChange.mjs +10 -5
  91. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-badge-children-to-label.mjs +7 -2
  92. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-collapse-to-collapsible.mjs +9 -3
  93. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-radius-tokens.mjs +11 -5
  94. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-shadow-tokens.mjs +13 -6
  95. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-skeleton-radius.mjs +7 -1
  96. package/{src/codemods → codemods}/transforms/v0.0.6/migrate-token-names.mjs +11 -5
  97. package/{src/codemods → codemods}/transforms/v0.0.7/rename-banner-variant-to-container.mjs +8 -3
  98. package/{src/codemods → codemods}/transforms/v0.0.8/migrate-token-renames.mjs +15 -8
  99. package/{src/codemods → codemods}/transforms/v0.0.8/rename-endslot-to-endcontent.mjs +7 -2
  100. package/{src/codemods → codemods}/transforms/v0.1.0/drop-xds-prefix-imports.mjs +19 -14
  101. package/{src/codemods → codemods}/transforms/v0.1.0/migrate-xds-css-surfaces.mjs +21 -17
  102. package/{src/codemods → codemods}/transforms/v0.1.0/migrate-xds-declare-module.mjs +7 -2
  103. package/{src/codemods → codemods}/transforms/v0.1.0/migrate-xds-module-specifiers.mjs +16 -11
  104. package/{src/codemods → codemods}/transforms/v0.1.2/rename-text-color-active-to-accent.mjs +15 -9
  105. package/{src/codemods → codemods}/transforms/v0.1.3/migrate-layout-components-to-experimental.mjs +17 -12
  106. package/{src/codemods → codemods}/transforms/v0.1.5/rename-switch-label-spacing-default-to-hug.mjs +15 -9
  107. package/{src/codemods → codemods}/transforms/v0.1.7/migrate-table-tableprops-to-direct-props.mjs +17 -10
  108. package/{src/codemods → codemods}/transforms/v0.1.7/rename-table-renderprops-styles-to-xstyle.mjs +18 -13
  109. package/{src/codemods → codemods}/transforms/v0.1.8/rename-avatar-size-scale.mjs +15 -10
  110. package/docs/internationalization.doc.mjs +92 -46
  111. package/{src/commands → lib/agent-docs}/agent-docs.mjs +30 -11
  112. package/{src/commands → lib/agent-docs}/agent-docs.path-safety.test.mjs +1 -1
  113. package/{src/lib → lib}/component-discovery.mjs +44 -2
  114. package/{src/lib → lib}/component-format.mjs +65 -24
  115. package/{src/lib → lib}/component-loader.mjs +27 -13
  116. package/{src/lib → lib}/componentDocOverlay.test.mjs +0 -1
  117. package/{src/lib → lib}/error-codes.test.mjs +1 -1
  118. package/{src/lib → lib}/hook-discovery.mjs +14 -1
  119. package/{src/lib → lib}/hook-format.mjs +29 -5
  120. package/{src/lib → lib}/integration-warnings.mjs +2 -2
  121. package/{src/lib → lib}/integrations.mjs +20 -0
  122. package/{src/lib → lib}/integrations.test.mjs +1 -1
  123. package/{src/lib → lib}/json-contract.test.mjs +1 -1
  124. package/{src/lib → lib}/json-shim.mjs +10 -5
  125. package/{src/lib → lib}/json-shim.test.mjs +1 -1
  126. package/{src/lib → lib}/levenshtein.mjs +6 -0
  127. package/{src/lib → lib}/manifest.mjs +7 -5
  128. package/{src/lib → lib}/manifest.test.mjs +2 -2
  129. package/{src/lib → lib}/module-loader.mjs +1 -0
  130. package/{src/lib → lib}/package-scanner.mjs +47 -0
  131. package/{src/lib → lib}/project.mjs +48 -18
  132. package/{src/lib → lib}/project.test.mjs +1 -1
  133. package/{src/lib → lib}/resolve-theme.mjs +5 -0
  134. package/{src/lib → lib}/string-utils.mjs +15 -0
  135. package/{src/lib → lib}/term-log.mjs +12 -3
  136. package/{src/lib → lib}/xle/browser.mjs +18 -8
  137. package/{src/lib → lib}/xle/expand.mjs +155 -22
  138. package/{src/lib → lib}/xle/parse.mjs +119 -13
  139. package/{src/lib → lib}/xle/print.mjs +54 -14
  140. package/{src/lib → lib}/xle/registry-core.mjs +28 -3
  141. package/{src/lib → lib}/xle/registry.mjs +9 -4
  142. package/{src/lib → lib}/xle/splice.mjs +13 -2
  143. package/{src/lib → lib}/xle/validate.mjs +95 -14
  144. package/lib/xle/xle-ast.d.ts +214 -0
  145. package/package.json +33 -26
  146. package/scripts/postinstall.mjs +4 -4
  147. package/templates/blocks/components/Avatar/AvatarShowcase.tsx +1 -1
  148. package/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.doc.mjs +19 -0
  149. package/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +46 -0
  150. package/templates/blocks/components/InternationalizationProvider/InternationalizationProvider02Overrides.doc.mjs +14 -0
  151. package/templates/blocks/components/InternationalizationProvider/InternationalizationProvider02Overrides.tsx +33 -0
  152. package/{src/types → types}/api.contract.assert.ts +17 -8
  153. package/{src/types → types}/api.d.ts +106 -0
  154. package/{src/types → types}/base.d.ts +17 -2
  155. package/types/build.d.ts +53 -0
  156. package/types/codemod.d.ts +166 -0
  157. package/{src/types → types}/component.d.ts +1 -1
  158. package/{src/types → types}/discover.d.ts +1 -1
  159. package/{src/types → types}/docs.d.ts +1 -4
  160. package/{src/types → types}/hook.d.ts +1 -1
  161. package/types/jscodeshift.d.ts +19 -0
  162. package/types/layout.d.ts +74 -0
  163. package/types/theme.d.ts +53 -0
  164. package/{src/types → types}/upgrade.d.ts +8 -1
  165. package/{src/utils → utils}/paths.mjs +4 -1
  166. package/src/commands/swizzle.mjs +0 -417
  167. package/src/types/build.d.ts +0 -23
  168. package/src/types/codemod.d.ts +0 -81
  169. package/src/types/theme.d.ts +0 -23
  170. /package/{src/api → api/docs}/docOverlays.test.mjs +0 -0
  171. /package/{src/api → api}/error.mjs +0 -0
  172. /package/{src/api → api/integration}/integration-block-exports.test.mjs +0 -0
  173. /package/{src/api → api/template}/template.test.mjs +0 -0
  174. /package/{src → authoring}/codemod.test.mjs +0 -0
  175. /package/{src → authoring}/config.mjs +0 -0
  176. /package/{src → authoring}/integration.mjs +0 -0
  177. /package/{src → authoring}/template.test.mjs +0 -0
  178. /package/{src → cli}/cli-exit-codes.test.mjs +0 -0
  179. /package/{src → cli}/commands/build-theme.color-scheme.test.mjs +0 -0
  180. /package/{src → cli}/commands/build-theme.import-path.test.mjs +0 -0
  181. /package/{src → cli}/commands/build-theme.path-safety.test.mjs +0 -0
  182. /package/{src → cli}/commands/build-theme.prose.test.mjs +0 -0
  183. /package/{src → cli}/commands/build-theme.variants.test.mjs +0 -0
  184. /package/{src → cli}/commands/build-theme.watch.test.mjs +0 -0
  185. /package/{src → cli}/commands/cli-postinstall.test.mjs +0 -0
  186. /package/{src → cli}/commands/component.test.mjs +0 -0
  187. /package/{src → cli}/commands/detail-levels.test.mjs +0 -0
  188. /package/{src → cli}/commands/init.next-steps.test.mjs +0 -0
  189. /package/{src → cli}/commands/interactive-guard.test.mjs +0 -0
  190. /package/{src → cli}/commands/json-contract.test.mjs +0 -0
  191. /package/{src → cli}/commands/swizzle.path-safety.test.mjs +0 -0
  192. /package/{src → cli}/commands/swizzle.routing.test.mjs +0 -0
  193. /package/{src → cli}/commands/template.test.mjs +0 -0
  194. /package/{src → cli}/commands/upgrade.config-ordering.test.mjs +0 -0
  195. /package/{src → cli}/commands/validate-integration.test.mjs +0 -0
  196. /package/{src → cli}/update-hint-commands.test.mjs +0 -0
  197. /package/{src/codemods → codemods}/__tests__/registry.test.mjs +0 -0
  198. /package/{src/codemods → codemods}/__tests__/rename-imperative-ref-to-handleRef.test.mjs +0 -0
  199. /package/{src/codemods → codemods}/__tests__/rename-isStreaming-to-isStopShown.test.mjs +0 -0
  200. /package/{src/codemods → codemods}/__tests__/rename-section-wash-to-muted.test.mjs +0 -0
  201. /package/{src/codemods → codemods}/__tests__/runner.test.mjs +0 -0
  202. /package/{src/codemods → codemods}/__tests__/toolbar-density-to-size.test.mjs +0 -0
  203. /package/{src/codemods → codemods}/__tests__/validation.test.mjs +0 -0
  204. /package/{src/codemods → codemods}/transforms/v0.0.10/__tests__/remove-size-props.test.mjs +0 -0
  205. /package/{src/codemods → codemods}/transforms/v0.0.10/index.mjs +0 -0
  206. /package/{src/codemods → codemods}/transforms/v0.0.12/__tests__/add-is-icon-only.test.mjs +0 -0
  207. /package/{src/codemods → codemods}/transforms/v0.0.12/index.mjs +0 -0
  208. /package/{src/codemods → codemods}/transforms/v0.0.13/__tests__/icon-name-deprecations.test.mjs +0 -0
  209. /package/{src/codemods → codemods}/transforms/v0.0.13/__tests__/rename-attachments-to-drawer.test.mjs +0 -0
  210. /package/{src/codemods → codemods}/transforms/v0.0.13/index.mjs +0 -0
  211. /package/{src/codemods → codemods}/transforms/v0.0.14/__tests__/rename-action-props.test.mjs +0 -0
  212. /package/{src/codemods → codemods}/transforms/v0.0.14/__tests__/rename-status-variants.test.mjs +0 -0
  213. /package/{src/codemods → codemods}/transforms/v0.0.14/index.mjs +0 -0
  214. /package/{src/codemods → codemods}/transforms/v0.0.15/__tests__/migrate-item-children-to-endcontent.test.mjs +0 -0
  215. /package/{src/codemods → codemods}/transforms/v0.0.15/__tests__/migrate-selector-children-to-render-option.test.mjs +0 -0
  216. /package/{src/codemods → codemods}/transforms/v0.0.15/__tests__/migrate-theme-selectors-to-data-attrs.test.mjs +0 -0
  217. /package/{src/codemods → codemods}/transforms/v0.0.15/__tests__/rename-date-picker-to-input.test.mjs +0 -0
  218. /package/{src/codemods → codemods}/transforms/v0.0.15/__tests__/rename-stack-element-to-as.test.mjs +0 -0
  219. /package/{src/codemods → codemods}/transforms/v0.0.15/index.mjs +0 -0
  220. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/migrate-badge-dot-to-statusdot.test.mjs +0 -0
  221. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/migrate-gap-to-numeric.test.mjs +0 -0
  222. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/migrate-isFullBleed-to-padding.test.mjs +0 -0
  223. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/migrate-useXDSIcon-to-getIcon.test.mjs +0 -0
  224. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-banner-endButton-to-endContent.test.mjs +0 -0
  225. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-form-tooltip-startIcon.test.mjs +0 -0
  226. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-isShown-to-isOpen.test.mjs +0 -0
  227. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-selector-items-to-options.test.mjs +0 -0
  228. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-sidenav-header-to-heading.test.mjs +0 -0
  229. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/rename-topnav-title-to-heading.test.mjs +0 -0
  230. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/unify-uncontrolled-to-defaultX.test.mjs +0 -0
  231. /package/{src/codemods → codemods}/transforms/v0.0.2/__tests__/unify-visibility-to-onOpenChange.test.mjs +0 -0
  232. /package/{src/codemods → codemods}/transforms/v0.0.2/index.mjs +0 -0
  233. /package/{src/codemods → codemods}/transforms/v0.0.6/__tests__/migrate-collapse-to-collapsible.test.mjs +0 -0
  234. /package/{src/codemods → codemods}/transforms/v0.0.6/__tests__/migrate-radius-tokens.test.mjs +0 -0
  235. /package/{src/codemods → codemods}/transforms/v0.0.6/__tests__/migrate-shadow-tokens.test.mjs +0 -0
  236. /package/{src/codemods → codemods}/transforms/v0.0.6/__tests__/migrate-skeleton-radius.test.mjs +0 -0
  237. /package/{src/codemods → codemods}/transforms/v0.0.6/__tests__/migrate-token-names.test.mjs +0 -0
  238. /package/{src/codemods → codemods}/transforms/v0.0.6/index.mjs +0 -0
  239. /package/{src/codemods → codemods}/transforms/v0.0.7/__tests__/rename-banner-variant-to-container.test.mjs +0 -0
  240. /package/{src/codemods → codemods}/transforms/v0.0.7/index.mjs +0 -0
  241. /package/{src/codemods → codemods}/transforms/v0.0.8/__tests__/migrate-token-renames.test.mjs +0 -0
  242. /package/{src/codemods → codemods}/transforms/v0.0.8/__tests__/rename-endslot-to-endcontent.test.mjs +0 -0
  243. /package/{src/codemods → codemods}/transforms/v0.0.8/index.mjs +0 -0
  244. /package/{src/codemods → codemods}/transforms/v0.1.0/__tests__/drop-xds-prefix-imports.test.mjs +0 -0
  245. /package/{src/codemods → codemods}/transforms/v0.1.0/__tests__/migrate-xds-css-surfaces.test.mjs +0 -0
  246. /package/{src/codemods → codemods}/transforms/v0.1.0/__tests__/migrate-xds-declare-module.test.mjs +0 -0
  247. /package/{src/codemods → codemods}/transforms/v0.1.0/__tests__/migrate-xds-module-specifiers.test.mjs +0 -0
  248. /package/{src/codemods → codemods}/transforms/v0.1.0/__tests__/v0.1.0-ordering.test.mjs +0 -0
  249. /package/{src/codemods → codemods}/transforms/v0.1.0/index.mjs +0 -0
  250. /package/{src/codemods → codemods}/transforms/v0.1.2/__tests__/rename-text-color-active-to-accent.test.mjs +0 -0
  251. /package/{src/codemods → codemods}/transforms/v0.1.2/index.mjs +0 -0
  252. /package/{src/codemods → codemods}/transforms/v0.1.3/__tests__/migrate-layout-components-to-experimental.test.mjs +0 -0
  253. /package/{src/codemods → codemods}/transforms/v0.1.3/index.mjs +0 -0
  254. /package/{src/codemods → codemods}/transforms/v0.1.5/__tests__/rename-switch-label-spacing-default-to-hug.test.mjs +0 -0
  255. /package/{src/codemods → codemods}/transforms/v0.1.5/index.mjs +0 -0
  256. /package/{src/codemods → codemods}/transforms/v0.1.7/__tests__/migrate-table-tableprops-to-direct-props.test.mjs +0 -0
  257. /package/{src/codemods → codemods}/transforms/v0.1.7/__tests__/rename-table-renderprops-styles-to-xstyle.test.mjs +0 -0
  258. /package/{src/codemods → codemods}/transforms/v0.1.7/index.mjs +0 -0
  259. /package/{src/codemods → codemods}/transforms/v0.1.8/__tests__/rename-avatar-size-scale.test.mjs +0 -0
  260. /package/{src/codemods → codemods}/transforms/v0.1.8/index.mjs +0 -0
  261. /package/{src/commands → lib/agent-docs}/agent-docs.test.mjs +0 -0
  262. /package/{src/lib → lib}/cli-error.mjs +0 -0
  263. /package/{src/lib → lib}/cli-error.test.mjs +0 -0
  264. /package/{src/lib → lib}/component-discovery.importpath.test.mjs +0 -0
  265. /package/{src/lib → lib}/component-format.test.mjs +0 -0
  266. /package/{src/lib → lib}/component-loader.test.mjs +0 -0
  267. /package/{src/lib → lib}/config-cache.mjs +0 -0
  268. /package/{src/lib → lib}/config-cache.test.mjs +0 -0
  269. /package/{src/lib → lib}/config-schema.mjs +0 -0
  270. /package/{src/lib → lib}/error-codes.mjs +0 -0
  271. /package/{src/lib → lib}/integration-warnings.test.mjs +0 -0
  272. /package/{src/lib → lib}/json.mjs +0 -0
  273. /package/{src/lib → lib}/module-loader.test.mjs +0 -0
  274. /package/{src/lib → lib}/node-version.mjs +0 -0
  275. /package/{src/lib → lib}/node-version.test.mjs +0 -0
  276. /package/{src/lib → lib}/parse.mjs +0 -0
  277. /package/{src/lib → lib}/site.mjs +0 -0
  278. /package/{src/lib → lib}/xle/browser.d.ts +0 -0
  279. /package/{src/lib → lib}/xle/xle.test.mjs +0 -0
  280. /package/{src/schemas → schemas}/doc-schema.mjs +0 -0
  281. /package/{src/schemas → schemas}/template-schema.mjs +0 -0
  282. /package/{src/types → types}/config.d.ts +0 -0
  283. /package/{src/types → types}/doc.d.ts +0 -0
  284. /package/{src/types → types}/doctor.d.ts +0 -0
  285. /package/{src/types → types}/error-codes.d.ts +0 -0
  286. /package/{src/types → types}/index.d.ts +0 -0
  287. /package/{src/types → types}/integration.d.ts +0 -0
  288. /package/{src/types → types}/manifest.d.ts +0 -0
  289. /package/{src/types → types}/search.d.ts +0 -0
  290. /package/{src/types → types}/swizzle.d.ts +0 -0
  291. /package/{src/types → types}/template-api.d.ts +0 -0
  292. /package/{src/types → types}/template.d.ts +0 -0
  293. /package/{src/types → types}/validate-integration.d.ts +0 -0
  294. /package/{src/utils → utils}/github.mjs +0 -0
  295. /package/{src/utils → utils}/package-manager.mjs +0 -0
  296. /package/{src/utils → utils}/package-manager.test.mjs +0 -0
  297. /package/{src/utils → utils}/path-safety.mjs +0 -0
  298. /package/{src/utils → utils}/path-safety.test.mjs +0 -0
  299. /package/{src/utils → utils}/paths.test.mjs +0 -0
  300. /package/{src/utils → utils}/semver.mjs +0 -0
  301. /package/{src/utils → utils}/semver.test.mjs +0 -0
  302. /package/{src/utils → utils}/update-check.mjs +0 -0
  303. /package/{src/utils → utils}/update-check.test.mjs +0 -0
@@ -44,19 +44,42 @@ import {findCoreDir} from '../utils/paths.mjs';
44
44
  import {
45
45
  discoverTemplates,
46
46
  discoverIntegrationTemplatesForOne,
47
- } from '../api/template.mjs';
47
+ } from '../api/template/template.mjs';
48
48
  import {getTransformsBetween} from '../codemods/registry.mjs';
49
49
  import {
50
50
  discoverIntegrationCodemods,
51
51
  selectIntegrationCodemods,
52
52
  } from '../codemods/integration-discovery.mjs';
53
- import {validateLoadedIntegration} from '../api/validate-integration.mjs';
53
+ import {validateLoadedIntegration} from '../api/integration/validate-integration.mjs';
54
54
  import {
55
55
  InMemoryConfigCache,
56
56
  cacheKey,
57
57
  configContentHash,
58
58
  } from './config-cache.mjs';
59
59
 
60
+ /**
61
+ * Extract a human-readable message from an unknown thrown value.
62
+ * Reproduces the historical `err?.message ?? String(err)` behavior in a
63
+ * strict-checkJs-safe way: prefer a non-nullish `.message` (covers Error
64
+ * instances and error-like objects thrown by integration code), else `String()`.
65
+ * @param {unknown} err
66
+ * @returns {string}
67
+ */
68
+ function errorMessage(err) {
69
+ const message =
70
+ err && typeof err === 'object' && 'message' in err
71
+ ? /** @type {{message: unknown}} */ (err).message
72
+ : undefined;
73
+ return message == null ? String(err) : String(message);
74
+ }
75
+
76
+ /**
77
+ * An integration issue tagged with the owner package. The base
78
+ * {@link import('../types/integration').AstryxIntegrationIssue} fields plus the
79
+ * `package` that produced it, which Project tracks for routing/dedup.
80
+ * @typedef {import('../types/integration').AstryxIntegrationIssue & {package: string}} ProjectIntegrationIssue
81
+ */
82
+
60
83
  /** Conventional config basenames, in load-precedence order. */
61
84
  export const CONFIG_BASENAMES = [
62
85
  'astryx.config.ts',
@@ -117,13 +140,13 @@ export class Project {
117
140
  #config;
118
141
  /** @type {string[]} */
119
142
  #integrations;
120
- /** @type {Array<object>} */
143
+ /** @type {import('./integrations.mjs').LoadedIntegration[]} */
121
144
  #loadedIntegrations;
122
145
  /** @type {import('./config-cache.mjs').ConfigCache} */
123
146
  #cache;
124
147
  /** @type {string} */
125
148
  #hash;
126
- /** @type {import('../types/integration').AstryxIntegrationIssue[]} */
149
+ /** @type {ProjectIntegrationIssue[]} */
127
150
  #issues = [];
128
151
  /**
129
152
  * Package names of integrations whose issues have already been collected
@@ -137,9 +160,9 @@ export class Project {
137
160
  * @param {object} init
138
161
  * @param {string} init.cwd
139
162
  * @param {string|null} init.configPath
140
- * @param {object} init.config validated AstryxConfig surface
163
+ * @param {import('../types/config').AstryxConfig} init.config validated AstryxConfig surface
141
164
  * @param {string[]} init.integrations
142
- * @param {Array<object>} init.loadedIntegrations
165
+ * @param {import('./integrations.mjs').LoadedIntegration[]} init.loadedIntegrations
143
166
  * @param {import('./config-cache.mjs').ConfigCache} init.cache
144
167
  * @param {string} init.hash config content hash
145
168
  */
@@ -175,8 +198,11 @@ export class Project {
175
198
  const configPath = findConfigPath(cwd);
176
199
  const hash = configContentHash(configPath);
177
200
 
201
+ /** @type {import('../types/config').AstryxConfig} */
178
202
  let config = {integrations: []};
203
+ /** @type {string[]} */
179
204
  let integrations = [];
205
+ /** @type {import('./integrations.mjs').LoadedIntegration[]} */
180
206
  let loadedIntegrations = [];
181
207
 
182
208
  if (configPath) {
@@ -204,7 +230,7 @@ export class Project {
204
230
  /**
205
231
  * The validated config surface (same data loadConfig returned, minus the
206
232
  * resolved `loadedIntegrations` which is exposed separately).
207
- * @returns {{integrations?: string[], issuesUrl?: string, hooks?: object, experimental?: object}}
233
+ * @returns {import('../types/config').AstryxConfig}
208
234
  */
209
235
  get config() {
210
236
  return this.#config;
@@ -215,7 +241,7 @@ export class Project {
215
241
  return this.#integrations;
216
242
  }
217
243
 
218
- /** Resolved loaded integrations (lib/integrations.mjs shape). @returns {Array<object>} */
244
+ /** Resolved loaded integrations (lib/integrations.mjs shape). @returns {import('./integrations.mjs').LoadedIntegration[]} */
219
245
  get loadedIntegrations() {
220
246
  return this.#loadedIntegrations;
221
247
  }
@@ -245,7 +271,7 @@ export class Project {
245
271
  */
246
272
  async #memo(kind, produce) {
247
273
  const key = cacheKey(this.#hash, this.#cwd, kind);
248
- const hit = this.#cache.get(key);
274
+ const hit = /** @type {{value: T} | undefined} */ (this.#cache.get(key));
249
275
  if (hit !== undefined) return hit.value;
250
276
  const value = await produce();
251
277
  this.#cache.set(key, {value});
@@ -272,7 +298,10 @@ export class Project {
272
298
  });
273
299
  }
274
300
 
275
- /** Package label for a loaded integration. */
301
+ /** Package label for a loaded integration.
302
+ * @param {import('./integrations.mjs').LoadedIntegration} integration
303
+ * @returns {string}
304
+ */
276
305
  #pkgLabel(integration) {
277
306
  return integration?.name ?? integration?.__spec ?? '(integration)';
278
307
  }
@@ -281,7 +310,7 @@ export class Project {
281
310
  * Validate one loaded integration and collect any issues. Marks the
282
311
  * integration visited so issues() won't redo the work. Best-effort: a
283
312
  * validator throwing is itself recorded as an issue, never propagated.
284
- * @param {object} integration
313
+ * @param {import('./integrations.mjs').LoadedIntegration} integration
285
314
  */
286
315
  async #collectIssues(integration) {
287
316
  const pkg = this.#pkgLabel(integration);
@@ -294,7 +323,7 @@ export class Project {
294
323
  this.#pushIssue(pkg, {
295
324
  code: 'integration_error',
296
325
  severity: 'error',
297
- message: err?.message ?? String(err),
326
+ message: errorMessage(err),
298
327
  });
299
328
  }
300
329
  }
@@ -311,7 +340,7 @@ export class Project {
311
340
  async components() {
312
341
  return this.#memo('components', async () => {
313
342
  const coreDir = findCoreDir(this.#cwd);
314
- /** @type {Array<object>} */
343
+ /** @type {Array<{name: string, package: string, group: string|null, docPath: string|null, sourcePath: string|null, issuesUrl: string|undefined}>} */
315
344
  const records = [];
316
345
 
317
346
  // Core records (no integrations) — never integration-broken.
@@ -343,7 +372,7 @@ export class Project {
343
372
  this.#pushIssue(pkg, {
344
373
  code: 'invalid_component',
345
374
  severity: 'error',
346
- message: err?.message ?? String(err),
375
+ message: errorMessage(err),
347
376
  });
348
377
  }
349
378
  }
@@ -362,7 +391,7 @@ export class Project {
362
391
  */
363
392
  async templates() {
364
393
  return this.#memo('templates', async () => {
365
- /** @type {Array<object>} */
394
+ /** @type {any[]} */
366
395
  const templates = [];
367
396
 
368
397
  // Core + external-package templates (discoverTemplates internally also
@@ -371,7 +400,7 @@ export class Project {
371
400
  // path so the skip+warn policy and issue collection apply, then dedupe).
372
401
  try {
373
402
  const core = await discoverTemplates(this.#cwd);
374
- for (const t of core) {
403
+ for (const t of /** @type {any[]} */ (core)) {
375
404
  // Skip integration-owned templates here; they are re-added (and
376
405
  // issue-collected) per integration below to honor skip+warn.
377
406
  if (t.package && t.package !== CORE_PACKAGE) continue;
@@ -405,7 +434,7 @@ export class Project {
405
434
  this.#pushIssue(pkg, {
406
435
  code: 'invalid_template',
407
436
  severity: 'error',
408
- message: err?.message ?? String(err),
437
+ message: errorMessage(err),
409
438
  });
410
439
  }
411
440
  }
@@ -431,6 +460,7 @@ export class Project {
431
460
 
432
461
  // Discover integration codemods per integration so a single broken
433
462
  // integration is skipped (issue collected) without losing the others.
463
+ /** @type {import('./integrations.mjs').LoadedIntegration[]} */
434
464
  const good = [];
435
465
  for (const integration of this.#loadedIntegrations) {
436
466
  await this.#collectIssues(integration);
@@ -449,7 +479,7 @@ export class Project {
449
479
  this.#pushIssue(pkg, {
450
480
  code: 'invalid_codemod',
451
481
  severity: 'error',
452
- message: err?.message ?? String(err),
482
+ message: errorMessage(err),
453
483
  });
454
484
  }
455
485
  }
@@ -13,7 +13,7 @@ let originalCwd;
13
13
 
14
14
  const codemodModulePath = path.resolve(
15
15
  process.cwd(),
16
- 'packages/cli/src/codemod.mjs',
16
+ 'packages/cli/authoring/codemod.mjs',
17
17
  );
18
18
  const codemodModuleUrl = pathToFileURL(codemodModulePath).href;
19
19
 
@@ -25,6 +25,9 @@ const _require = createRequire(import.meta.url);
25
25
  /**
26
26
  * Try to load a module, returning the default export or the module itself.
27
27
  * Returns null if the module cannot be found.
28
+ * @param {string} specifier
29
+ * @param {string} cwd
30
+ * @returns {unknown}
28
31
  */
29
32
  function tryLoadModule(specifier, cwd) {
30
33
  // For relative/absolute paths, resolve against cwd
@@ -49,6 +52,8 @@ function tryLoadModule(specifier, cwd) {
49
52
  * Extract theme data from a loaded module.
50
53
  * Handles both `module.default` and direct `module` patterns,
51
54
  * as well as named exports like `module.theme` or `module.{name}Theme`.
55
+ * @param {any} mod
56
+ * @returns {any}
52
57
  */
53
58
  function extractTheme(mod) {
54
59
  if (!mod || typeof mod !== 'object') return null;
@@ -13,6 +13,10 @@ export {levenshteinDistance} from './levenshtein.mjs';
13
13
  /**
14
14
  * Find the closest component names to a given (possibly misspelled) name.
15
15
  * Returns matches sorted by distance, filtered to maxDistance.
16
+ * @param {string} name
17
+ * @param {Record<string, string[]>} components
18
+ * @param {number} [maxDistance]
19
+ * @returns {{name: string, distance: number}[]}
16
20
  */
17
21
  export function findClosestComponents(name, components, maxDistance = 3) {
18
22
  const allNames = Object.values(components).flat();
@@ -45,6 +49,11 @@ export function findClosestComponents(name, components, maxDistance = 3) {
45
49
  * 20 name Levenshtein distance 3
46
50
  *
47
51
  * Each result: { name, score, reason }
52
+ *
53
+ * @param {string} needle
54
+ * @param {string} coreDir
55
+ * @param {Record<string, string[]>} components
56
+ * @returns {Promise<{name: string, score: number, reason: string}[]>}
48
57
  */
49
58
  export async function searchComponents(needle, coreDir, components) {
50
59
  const {pathToFileURL} = await import('node:url');
@@ -53,8 +62,14 @@ export async function searchComponents(needle, coreDir, components) {
53
62
 
54
63
  const term = needle.toLowerCase();
55
64
  const allNames = Object.values(components).flat();
65
+ /** @type {Map<string, {name: string, score: number, reason: string}>} */
56
66
  const scored = new Map();
57
67
 
68
+ /**
69
+ * @param {string} name
70
+ * @param {number} score
71
+ * @param {string} reason
72
+ */
58
73
  function addMatch(name, score, reason) {
59
74
  const existing = scored.get(name);
60
75
  if (!existing || score > existing.score) {
@@ -15,12 +15,13 @@
15
15
  * primitive, which is a no-op in `--json` mode — so these human logs can never
16
16
  * corrupt a JSON envelope.
17
17
  *
18
- * Call sites use it as `import * as p from '../lib/term-log.mjs'` and call
18
+ * Call sites use it as `import * as p from './term-log.mjs'` and call
19
19
  * `p.log.info(...)`, `p.intro(...)`, `p.outro(...)`.
20
20
  */
21
21
 
22
22
  import {humanLog} from './json.mjs';
23
23
 
24
+ /** @param {unknown} msg */
24
25
  const toStr = (msg) => (msg === undefined || msg === null ? '' : String(msg));
25
26
 
26
27
  /**
@@ -29,20 +30,28 @@ const toStr = (msg) => (msg === undefined || msg === null ? '' : String(msg));
29
30
  * every one of these, keeping machine-readable stdout clean.
30
31
  */
31
32
  export const log = {
33
+ /** @param {unknown} msg */
32
34
  message: (msg) => humanLog(toStr(msg)),
35
+ /** @param {unknown} msg */
33
36
  info: (msg) => humanLog(toStr(msg)),
37
+ /** @param {unknown} msg */
34
38
  step: (msg) => humanLog(toStr(msg)),
39
+ /** @param {unknown} msg */
35
40
  success: (msg) => humanLog(`✓ ${toStr(msg)}`),
41
+ /** @param {unknown} msg */
36
42
  warn: (msg) => humanLog(`⚠ ${toStr(msg)}`),
43
+ /** @param {unknown} msg */
37
44
  error: (msg) => humanLog(`✗ ${toStr(msg)}`),
38
45
  };
39
46
 
40
- /** Banner printed at the start of a multi-step command. */
47
+ /** Banner printed at the start of a multi-step command.
48
+ * @param {unknown} title */
41
49
  export function intro(title) {
42
50
  humanLog(`\n${toStr(title)}`);
43
51
  }
44
52
 
45
- /** Footer printed at the end of a multi-step command. */
53
+ /** Footer printed at the end of a multi-step command.
54
+ * @param {unknown} message */
46
55
  export function outro(message) {
47
56
  humanLog(`${toStr(message)}\n`);
48
57
  }
@@ -23,11 +23,21 @@ import {hydrateRegistry} from './registry-core.mjs';
23
23
  export {parse, detectForm, XLEParseError, validate, expand, toCompact, toOutline};
24
24
  export {hydrateRegistry, serializeRegistry, ALIAS_TABLE, resolveComponent, SPACING_STEPS} from './registry-core.mjs';
25
25
 
26
- /** Accept either a hydrated registry (Map fields) or serialized JSON. */
26
+ /**
27
+ * Accept either a hydrated registry (Map fields) or serialized JSON.
28
+ * @param {import('./xle-ast').Registry | import('./browser').SerializedRegistry | object} registry
29
+ * @returns {import('./xle-ast').Registry}
30
+ */
27
31
  function asRegistry(registry) {
28
- return registry && registry.components instanceof Map ? registry : hydrateRegistry(registry);
32
+ return registry && /** @type {any} */ (registry).components instanceof Map
33
+ ? /** @type {import('./xle-ast').Registry} */ (registry)
34
+ : hydrateRegistry(/** @type {import('./browser').SerializedRegistry} */ (registry));
29
35
  }
30
36
 
37
+ /**
38
+ * @param {import('./xle-ast').RawIssue | {message: string, line?: number, col?: number}} issue
39
+ * @returns {string}
40
+ */
31
41
  function formatIssue(issue) {
32
42
  const where = issue.line != null ? `line ${issue.line}: ` : '';
33
43
  return `${where}${issue.message}`;
@@ -38,12 +48,12 @@ function formatIssue(issue) {
38
48
  * twin of `layout check`. Never throws on invalid input; returns the errors.
39
49
  *
40
50
  * @param {string} expression
41
- * @param {object} registry - serialized or hydrated
51
+ * @param {import('./xle-ast').Registry | import('./browser').SerializedRegistry | object} registry - serialized or hydrated
42
52
  * @param {object} [opts]
43
- * @param {Array} [opts.blocks] - block list for {hint} resolution (default [])
53
+ * @param {import('./browser').XLEBlock[]} [opts.blocks] - block list for {hint} resolution (default [])
44
54
  * @param {'compact'|'outline'|'auto'} [opts.form]
45
55
  * @param {boolean} [opts.loose]
46
- * @returns {{ok: boolean, valid?: boolean, form?: string, errors: Array, warnings: string[], compact?: string, outline?: string, parseError?: object}}
56
+ * @returns {import('./browser').CheckResult}
47
57
  */
48
58
  export function checkExpression(expression, registry, opts = {}) {
49
59
  const {blocks = [], form = 'auto', loose = false} = opts;
@@ -79,13 +89,13 @@ export function checkExpression(expression, registry, opts = {}) {
79
89
  * Returns either {code, ...} or {errors} (never writes files).
80
90
  *
81
91
  * @param {string} expression
82
- * @param {object} registry
92
+ * @param {import('./xle-ast').Registry | import('./browser').SerializedRegistry | object} registry
83
93
  * @param {object} [opts]
84
- * @param {Array} [opts.blocks]
94
+ * @param {import('./browser').XLEBlock[]} [opts.blocks]
85
95
  * @param {'compact'|'outline'|'auto'} [opts.form]
86
96
  * @param {boolean} [opts.loose]
87
97
  * @param {string} [opts.name] - generated component name (PascalCase)
88
- * @param {Map} [opts.blockModules] - prepared block sources/imports for splicing;
98
+ * @param {Map<string, import('./xle-ast').BlockModule>} [opts.blockModules] - prepared block sources/imports for splicing;
89
99
  * omit in the browser (hints stay as TODO markers without sources)
90
100
  */
91
101
  export function expandExpression(expression, registry, opts = {}) {