figma-inspect-cli 0.1.0

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 (430) hide show
  1. package/README.md +156 -0
  2. package/dist/bin/figma-inspect.d.ts +3 -0
  3. package/dist/bin/figma-inspect.d.ts.map +1 -0
  4. package/dist/bin/figma-inspect.js +19 -0
  5. package/dist/bin/figma-inspect.js.map +1 -0
  6. package/dist/cli/errors.d.ts +3 -0
  7. package/dist/cli/errors.d.ts.map +1 -0
  8. package/dist/cli/errors.js +3 -0
  9. package/dist/cli/errors.js.map +1 -0
  10. package/dist/cli/export-component-set.d.ts +21 -0
  11. package/dist/cli/export-component-set.d.ts.map +1 -0
  12. package/dist/cli/export-component-set.js +173 -0
  13. package/dist/cli/export-component-set.js.map +1 -0
  14. package/dist/cli/export-contract.d.ts +20 -0
  15. package/dist/cli/export-contract.d.ts.map +1 -0
  16. package/dist/cli/export-contract.js +48 -0
  17. package/dist/cli/export-contract.js.map +1 -0
  18. package/dist/cli/export-node-contract.d.ts +17 -0
  19. package/dist/cli/export-node-contract.d.ts.map +1 -0
  20. package/dist/cli/export-node-contract.js +93 -0
  21. package/dist/cli/export-node-contract.js.map +1 -0
  22. package/dist/cli/export-result.d.ts +17 -0
  23. package/dist/cli/export-result.d.ts.map +1 -0
  24. package/dist/cli/export-result.js +22 -0
  25. package/dist/cli/export-result.js.map +1 -0
  26. package/dist/cli/export-team-index.d.ts +18 -0
  27. package/dist/cli/export-team-index.d.ts.map +1 -0
  28. package/dist/cli/export-team-index.js +121 -0
  29. package/dist/cli/export-team-index.js.map +1 -0
  30. package/dist/cli/index.d.ts +3 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +3 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/cli/output.d.ts +13 -0
  35. package/dist/cli/output.d.ts.map +1 -0
  36. package/dist/cli/output.js +26 -0
  37. package/dist/cli/output.js.map +1 -0
  38. package/dist/cli/parse-args.d.ts +3 -0
  39. package/dist/cli/parse-args.d.ts.map +1 -0
  40. package/dist/cli/parse-args.js +790 -0
  41. package/dist/cli/parse-args.js.map +1 -0
  42. package/dist/cli/run-cli.d.ts +3 -0
  43. package/dist/cli/run-cli.d.ts.map +1 -0
  44. package/dist/cli/run-cli.js +416 -0
  45. package/dist/cli/run-cli.js.map +1 -0
  46. package/dist/cli/types.d.ts +114 -0
  47. package/dist/cli/types.d.ts.map +1 -0
  48. package/dist/cli/types.js +2 -0
  49. package/dist/cli/types.js.map +1 -0
  50. package/dist/cli/usage.d.ts +2 -0
  51. package/dist/cli/usage.d.ts.map +1 -0
  52. package/dist/cli/usage.js +75 -0
  53. package/dist/cli/usage.js.map +1 -0
  54. package/dist/figma-api/cache/cached-request.d.ts +8 -0
  55. package/dist/figma-api/cache/cached-request.d.ts.map +1 -0
  56. package/dist/figma-api/cache/cached-request.js +100 -0
  57. package/dist/figma-api/cache/cached-request.js.map +1 -0
  58. package/dist/figma-api/cache/constants.d.ts +5 -0
  59. package/dist/figma-api/cache/constants.d.ts.map +1 -0
  60. package/dist/figma-api/cache/constants.js +5 -0
  61. package/dist/figma-api/cache/constants.js.map +1 -0
  62. package/dist/figma-api/cache/extract-metadata.d.ts +3 -0
  63. package/dist/figma-api/cache/extract-metadata.d.ts.map +1 -0
  64. package/dist/figma-api/cache/extract-metadata.js +13 -0
  65. package/dist/figma-api/cache/extract-metadata.js.map +1 -0
  66. package/dist/figma-api/cache/index.d.ts +3 -0
  67. package/dist/figma-api/cache/index.d.ts.map +1 -0
  68. package/dist/figma-api/cache/index.js +3 -0
  69. package/dist/figma-api/cache/index.js.map +1 -0
  70. package/dist/figma-api/cache/store.d.ts +10 -0
  71. package/dist/figma-api/cache/store.d.ts.map +1 -0
  72. package/dist/figma-api/cache/store.js +53 -0
  73. package/dist/figma-api/cache/store.js.map +1 -0
  74. package/dist/figma-api/cache/types.d.ts +20 -0
  75. package/dist/figma-api/cache/types.d.ts.map +1 -0
  76. package/dist/figma-api/cache/types.js +2 -0
  77. package/dist/figma-api/cache/types.js.map +1 -0
  78. package/dist/figma-api/cache/url.d.ts +5 -0
  79. package/dist/figma-api/cache/url.d.ts.map +1 -0
  80. package/dist/figma-api/cache/url.js +20 -0
  81. package/dist/figma-api/cache/url.js.map +1 -0
  82. package/dist/figma-api/constants.d.ts +2 -0
  83. package/dist/figma-api/constants.d.ts.map +1 -0
  84. package/dist/figma-api/constants.js +2 -0
  85. package/dist/figma-api/constants.js.map +1 -0
  86. package/dist/figma-api/fetch-with-retry.d.ts +2 -0
  87. package/dist/figma-api/fetch-with-retry.d.ts.map +1 -0
  88. package/dist/figma-api/fetch-with-retry.js +48 -0
  89. package/dist/figma-api/fetch-with-retry.js.map +1 -0
  90. package/dist/figma-api/figma-api-error.d.ts +4 -0
  91. package/dist/figma-api/figma-api-error.d.ts.map +1 -0
  92. package/dist/figma-api/figma-api-error.js +7 -0
  93. package/dist/figma-api/figma-api-error.js.map +1 -0
  94. package/dist/figma-api/figma-request.d.ts +2 -0
  95. package/dist/figma-api/figma-request.d.ts.map +1 -0
  96. package/dist/figma-api/figma-request.js +21 -0
  97. package/dist/figma-api/figma-request.js.map +1 -0
  98. package/dist/figma-api/format-figma-error.d.ts +2 -0
  99. package/dist/figma-api/format-figma-error.d.ts.map +1 -0
  100. package/dist/figma-api/format-figma-error.js +24 -0
  101. package/dist/figma-api/format-figma-error.js.map +1 -0
  102. package/dist/figma-api/get-component-set.d.ts +4 -0
  103. package/dist/figma-api/get-component-set.d.ts.map +1 -0
  104. package/dist/figma-api/get-component-set.js +8 -0
  105. package/dist/figma-api/get-component-set.js.map +1 -0
  106. package/dist/figma-api/get-file-images.d.ts +4 -0
  107. package/dist/figma-api/get-file-images.d.ts.map +1 -0
  108. package/dist/figma-api/get-file-images.js +45 -0
  109. package/dist/figma-api/get-file-images.js.map +1 -0
  110. package/dist/figma-api/get-file-node.d.ts +3 -0
  111. package/dist/figma-api/get-file-node.d.ts.map +1 -0
  112. package/dist/figma-api/get-file-node.js +8 -0
  113. package/dist/figma-api/get-file-node.js.map +1 -0
  114. package/dist/figma-api/get-file.d.ts +3 -0
  115. package/dist/figma-api/get-file.d.ts.map +1 -0
  116. package/dist/figma-api/get-file.js +6 -0
  117. package/dist/figma-api/get-file.js.map +1 -0
  118. package/dist/figma-api/index.d.ts +11 -0
  119. package/dist/figma-api/index.d.ts.map +1 -0
  120. package/dist/figma-api/index.js +11 -0
  121. package/dist/figma-api/index.js.map +1 -0
  122. package/dist/figma-api/list-file-component-sets.d.ts +4 -0
  123. package/dist/figma-api/list-file-component-sets.d.ts.map +1 -0
  124. package/dist/figma-api/list-file-component-sets.js +8 -0
  125. package/dist/figma-api/list-file-component-sets.js.map +1 -0
  126. package/dist/figma-api/list-file-components.d.ts +5 -0
  127. package/dist/figma-api/list-file-components.d.ts.map +1 -0
  128. package/dist/figma-api/list-file-components.js +13 -0
  129. package/dist/figma-api/list-file-components.js.map +1 -0
  130. package/dist/figma-api/list-file-pages.d.ts +4 -0
  131. package/dist/figma-api/list-file-pages.d.ts.map +1 -0
  132. package/dist/figma-api/list-file-pages.js +10 -0
  133. package/dist/figma-api/list-file-pages.js.map +1 -0
  134. package/dist/figma-api/list-project-files.d.ts +4 -0
  135. package/dist/figma-api/list-project-files.d.ts.map +1 -0
  136. package/dist/figma-api/list-project-files.js +8 -0
  137. package/dist/figma-api/list-project-files.js.map +1 -0
  138. package/dist/figma-api/list-team-component-sets.d.ts +4 -0
  139. package/dist/figma-api/list-team-component-sets.d.ts.map +1 -0
  140. package/dist/figma-api/list-team-component-sets.js +19 -0
  141. package/dist/figma-api/list-team-component-sets.js.map +1 -0
  142. package/dist/figma-api/list-team-project-files.d.ts +4 -0
  143. package/dist/figma-api/list-team-project-files.d.ts.map +1 -0
  144. package/dist/figma-api/list-team-project-files.js +19 -0
  145. package/dist/figma-api/list-team-project-files.js.map +1 -0
  146. package/dist/figma-api/list-team-projects.d.ts +4 -0
  147. package/dist/figma-api/list-team-projects.d.ts.map +1 -0
  148. package/dist/figma-api/list-team-projects.js +8 -0
  149. package/dist/figma-api/list-team-projects.js.map +1 -0
  150. package/dist/figma-api/schemas.d.ts +95 -0
  151. package/dist/figma-api/schemas.d.ts.map +1 -0
  152. package/dist/figma-api/schemas.js +154 -0
  153. package/dist/figma-api/schemas.js.map +1 -0
  154. package/dist/figma-api/types.d.ts +60 -0
  155. package/dist/figma-api/types.d.ts.map +1 -0
  156. package/dist/figma-api/types.js +2 -0
  157. package/dist/figma-api/types.js.map +1 -0
  158. package/dist/inspect/component-set-context.d.ts +11 -0
  159. package/dist/inspect/component-set-context.d.ts.map +1 -0
  160. package/dist/inspect/component-set-context.js +71 -0
  161. package/dist/inspect/component-set-context.js.map +1 -0
  162. package/dist/inspect/component-set-lookup.d.ts +6 -0
  163. package/dist/inspect/component-set-lookup.d.ts.map +1 -0
  164. package/dist/inspect/component-set-lookup.js +40 -0
  165. package/dist/inspect/component-set-lookup.js.map +1 -0
  166. package/dist/inspect/component-set-pseudocode/asset-backed-contract.d.ts +3 -0
  167. package/dist/inspect/component-set-pseudocode/asset-backed-contract.d.ts.map +1 -0
  168. package/dist/inspect/component-set-pseudocode/asset-backed-contract.js +34 -0
  169. package/dist/inspect/component-set-pseudocode/asset-backed-contract.js.map +1 -0
  170. package/dist/inspect/component-set-pseudocode/assets-contract.d.ts +9 -0
  171. package/dist/inspect/component-set-pseudocode/assets-contract.d.ts.map +1 -0
  172. package/dist/inspect/component-set-pseudocode/assets-contract.js +4 -0
  173. package/dist/inspect/component-set-pseudocode/assets-contract.js.map +1 -0
  174. package/dist/inspect/component-set-pseudocode/baseline-contract.d.ts +17 -0
  175. package/dist/inspect/component-set-pseudocode/baseline-contract.d.ts.map +1 -0
  176. package/dist/inspect/component-set-pseudocode/baseline-contract.js +67 -0
  177. package/dist/inspect/component-set-pseudocode/baseline-contract.js.map +1 -0
  178. package/dist/inspect/component-set-pseudocode/build-pseudocode.d.ts +24 -0
  179. package/dist/inspect/component-set-pseudocode/build-pseudocode.d.ts.map +1 -0
  180. package/dist/inspect/component-set-pseudocode/build-pseudocode.js +83 -0
  181. package/dist/inspect/component-set-pseudocode/build-pseudocode.js.map +1 -0
  182. package/dist/inspect/component-set-pseudocode/index.d.ts +2 -0
  183. package/dist/inspect/component-set-pseudocode/index.d.ts.map +1 -0
  184. package/dist/inspect/component-set-pseudocode/index.js +2 -0
  185. package/dist/inspect/component-set-pseudocode/index.js.map +1 -0
  186. package/dist/inspect/component-set-pseudocode/infer.d.ts +4 -0
  187. package/dist/inspect/component-set-pseudocode/infer.d.ts.map +1 -0
  188. package/dist/inspect/component-set-pseudocode/infer.js +426 -0
  189. package/dist/inspect/component-set-pseudocode/infer.js.map +1 -0
  190. package/dist/inspect/component-set-pseudocode/meta-contract.d.ts +27 -0
  191. package/dist/inspect/component-set-pseudocode/meta-contract.d.ts.map +1 -0
  192. package/dist/inspect/component-set-pseudocode/meta-contract.js +136 -0
  193. package/dist/inspect/component-set-pseudocode/meta-contract.js.map +1 -0
  194. package/dist/inspect/component-set-pseudocode/slim-node-guards.d.ts +14 -0
  195. package/dist/inspect/component-set-pseudocode/slim-node-guards.d.ts.map +1 -0
  196. package/dist/inspect/component-set-pseudocode/slim-node-guards.js +28 -0
  197. package/dist/inspect/component-set-pseudocode/slim-node-guards.js.map +1 -0
  198. package/dist/inspect/component-set-pseudocode/structure-contract.d.ts +71 -0
  199. package/dist/inspect/component-set-pseudocode/structure-contract.d.ts.map +1 -0
  200. package/dist/inspect/component-set-pseudocode/structure-contract.js +281 -0
  201. package/dist/inspect/component-set-pseudocode/structure-contract.js.map +1 -0
  202. package/dist/inspect/component-set-pseudocode/structure-dsl.d.ts +3 -0
  203. package/dist/inspect/component-set-pseudocode/structure-dsl.d.ts.map +1 -0
  204. package/dist/inspect/component-set-pseudocode/structure-dsl.js +170 -0
  205. package/dist/inspect/component-set-pseudocode/structure-dsl.js.map +1 -0
  206. package/dist/inspect/component-set-pseudocode/types.d.ts +44 -0
  207. package/dist/inspect/component-set-pseudocode/types.d.ts.map +1 -0
  208. package/dist/inspect/component-set-pseudocode/types.js +2 -0
  209. package/dist/inspect/component-set-pseudocode/types.js.map +1 -0
  210. package/dist/inspect/component-set-pseudocode/universal.d.ts +14 -0
  211. package/dist/inspect/component-set-pseudocode/universal.d.ts.map +1 -0
  212. package/dist/inspect/component-set-pseudocode/universal.js +393 -0
  213. package/dist/inspect/component-set-pseudocode/universal.js.map +1 -0
  214. package/dist/inspect/component-set-spec/bound-variables.d.ts +14 -0
  215. package/dist/inspect/component-set-spec/bound-variables.d.ts.map +1 -0
  216. package/dist/inspect/component-set-spec/bound-variables.js +53 -0
  217. package/dist/inspect/component-set-spec/bound-variables.js.map +1 -0
  218. package/dist/inspect/component-set-spec/build-spec.d.ts +9 -0
  219. package/dist/inspect/component-set-spec/build-spec.d.ts.map +1 -0
  220. package/dist/inspect/component-set-spec/build-spec.js +102 -0
  221. package/dist/inspect/component-set-spec/build-spec.js.map +1 -0
  222. package/dist/inspect/component-set-spec/compact-spec.d.ts +3 -0
  223. package/dist/inspect/component-set-spec/compact-spec.d.ts.map +1 -0
  224. package/dist/inspect/component-set-spec/compact-spec.js +357 -0
  225. package/dist/inspect/component-set-spec/compact-spec.js.map +1 -0
  226. package/dist/inspect/component-set-spec/extract-slots.d.ts +5 -0
  227. package/dist/inspect/component-set-spec/extract-slots.d.ts.map +1 -0
  228. package/dist/inspect/component-set-spec/extract-slots.js +57 -0
  229. package/dist/inspect/component-set-spec/extract-slots.js.map +1 -0
  230. package/dist/inspect/component-set-spec/figma-node.d.ts +9 -0
  231. package/dist/inspect/component-set-spec/figma-node.d.ts.map +1 -0
  232. package/dist/inspect/component-set-spec/figma-node.js +31 -0
  233. package/dist/inspect/component-set-spec/figma-node.js.map +1 -0
  234. package/dist/inspect/component-set-spec/index.d.ts +2 -0
  235. package/dist/inspect/component-set-spec/index.d.ts.map +1 -0
  236. package/dist/inspect/component-set-spec/index.js +2 -0
  237. package/dist/inspect/component-set-spec/index.js.map +1 -0
  238. package/dist/inspect/component-set-spec/parse-props.d.ts +9 -0
  239. package/dist/inspect/component-set-spec/parse-props.d.ts.map +1 -0
  240. package/dist/inspect/component-set-spec/parse-props.js +96 -0
  241. package/dist/inspect/component-set-spec/parse-props.js.map +1 -0
  242. package/dist/inspect/component-set-spec/prop-name.d.ts +5 -0
  243. package/dist/inspect/component-set-spec/prop-name.d.ts.map +1 -0
  244. package/dist/inspect/component-set-spec/prop-name.js +26 -0
  245. package/dist/inspect/component-set-spec/prop-name.js.map +1 -0
  246. package/dist/inspect/component-set-spec/resolve-tokens.d.ts +4 -0
  247. package/dist/inspect/component-set-spec/resolve-tokens.d.ts.map +1 -0
  248. package/dist/inspect/component-set-spec/resolve-tokens.js +42 -0
  249. package/dist/inspect/component-set-spec/resolve-tokens.js.map +1 -0
  250. package/dist/inspect/component-set-spec/slim-context.d.ts +6 -0
  251. package/dist/inspect/component-set-spec/slim-context.d.ts.map +1 -0
  252. package/dist/inspect/component-set-spec/slim-context.js +2 -0
  253. package/dist/inspect/component-set-spec/slim-context.js.map +1 -0
  254. package/dist/inspect/component-set-spec/slim-node.d.ts +5 -0
  255. package/dist/inspect/component-set-spec/slim-node.d.ts.map +1 -0
  256. package/dist/inspect/component-set-spec/slim-node.js +393 -0
  257. package/dist/inspect/component-set-spec/slim-node.js.map +1 -0
  258. package/dist/inspect/component-set-spec/slim-text-export.d.ts +8 -0
  259. package/dist/inspect/component-set-spec/slim-text-export.d.ts.map +1 -0
  260. package/dist/inspect/component-set-spec/slim-text-export.js +74 -0
  261. package/dist/inspect/component-set-spec/slim-text-export.js.map +1 -0
  262. package/dist/inspect/component-set-spec/team-component-registry.d.ts +19 -0
  263. package/dist/inspect/component-set-spec/team-component-registry.d.ts.map +1 -0
  264. package/dist/inspect/component-set-spec/team-component-registry.js +96 -0
  265. package/dist/inspect/component-set-spec/team-component-registry.js.map +1 -0
  266. package/dist/inspect/component-set-spec/types.d.ts +127 -0
  267. package/dist/inspect/component-set-spec/types.d.ts.map +1 -0
  268. package/dist/inspect/component-set-spec/types.js +2 -0
  269. package/dist/inspect/component-set-spec/types.js.map +1 -0
  270. package/dist/inspect/component-set-spec/variable-registry.d.ts +8 -0
  271. package/dist/inspect/component-set-spec/variable-registry.d.ts.map +1 -0
  272. package/dist/inspect/component-set-spec/variable-registry.js +74 -0
  273. package/dist/inspect/component-set-spec/variable-registry.js.map +1 -0
  274. package/dist/inspect/component-set-spec/variant-axes.d.ts +2 -0
  275. package/dist/inspect/component-set-spec/variant-axes.d.ts.map +1 -0
  276. package/dist/inspect/component-set-spec/variant-axes.js +14 -0
  277. package/dist/inspect/component-set-spec/variant-axes.js.map +1 -0
  278. package/dist/inspect/contract/contract-format.d.ts +5 -0
  279. package/dist/inspect/contract/contract-format.d.ts.map +1 -0
  280. package/dist/inspect/contract/contract-format.js +26 -0
  281. package/dist/inspect/contract/contract-format.js.map +1 -0
  282. package/dist/inspect/contract/contract-lock.d.ts +75 -0
  283. package/dist/inspect/contract/contract-lock.d.ts.map +1 -0
  284. package/dist/inspect/contract/contract-lock.js +326 -0
  285. package/dist/inspect/contract/contract-lock.js.map +1 -0
  286. package/dist/inspect/contract/contract-schema.d.ts +51 -0
  287. package/dist/inspect/contract/contract-schema.d.ts.map +1 -0
  288. package/dist/inspect/contract/contract-schema.js +130 -0
  289. package/dist/inspect/contract/contract-schema.js.map +1 -0
  290. package/dist/inspect/contract/fingerprint.d.ts +9 -0
  291. package/dist/inspect/contract/fingerprint.d.ts.map +1 -0
  292. package/dist/inspect/contract/fingerprint.js +301 -0
  293. package/dist/inspect/contract/fingerprint.js.map +1 -0
  294. package/dist/inspect/contract/lock-metadata.d.ts +30 -0
  295. package/dist/inspect/contract/lock-metadata.d.ts.map +1 -0
  296. package/dist/inspect/contract/lock-metadata.js +101 -0
  297. package/dist/inspect/contract/lock-metadata.js.map +1 -0
  298. package/dist/inspect/contract/stable-stringify.d.ts +2 -0
  299. package/dist/inspect/contract/stable-stringify.d.ts.map +1 -0
  300. package/dist/inspect/contract/stable-stringify.js +14 -0
  301. package/dist/inspect/contract/stable-stringify.js.map +1 -0
  302. package/dist/inspect/contract/verify-component-contract.d.ts +19 -0
  303. package/dist/inspect/contract/verify-component-contract.d.ts.map +1 -0
  304. package/dist/inspect/contract/verify-component-contract.js +126 -0
  305. package/dist/inspect/contract/verify-component-contract.js.map +1 -0
  306. package/dist/inspect/errors.d.ts +4 -0
  307. package/dist/inspect/errors.d.ts.map +1 -0
  308. package/dist/inspect/errors.js +7 -0
  309. package/dist/inspect/errors.js.map +1 -0
  310. package/dist/inspect/export/assert-asset-exportable.d.ts +3 -0
  311. package/dist/inspect/export/assert-asset-exportable.d.ts.map +1 -0
  312. package/dist/inspect/export/assert-asset-exportable.js +45 -0
  313. package/dist/inspect/export/assert-asset-exportable.js.map +1 -0
  314. package/dist/inspect/export/export-nested-assets.d.ts +94 -0
  315. package/dist/inspect/export/export-nested-assets.d.ts.map +1 -0
  316. package/dist/inspect/export/export-nested-assets.js +333 -0
  317. package/dist/inspect/export/export-nested-assets.js.map +1 -0
  318. package/dist/inspect/export/export-node-preview.d.ts +24 -0
  319. package/dist/inspect/export/export-node-preview.d.ts.map +1 -0
  320. package/dist/inspect/export/export-node-preview.js +34 -0
  321. package/dist/inspect/export/export-node-preview.js.map +1 -0
  322. package/dist/inspect/export/export-variant-assets.d.ts +18 -0
  323. package/dist/inspect/export/export-variant-assets.d.ts.map +1 -0
  324. package/dist/inspect/export/export-variant-assets.js +127 -0
  325. package/dist/inspect/export/export-variant-assets.js.map +1 -0
  326. package/dist/inspect/export/normalize-exported-svg.d.ts +2 -0
  327. package/dist/inspect/export/normalize-exported-svg.d.ts.map +1 -0
  328. package/dist/inspect/export/normalize-exported-svg.js +15 -0
  329. package/dist/inspect/export/normalize-exported-svg.js.map +1 -0
  330. package/dist/inspect/export/rendered-image-bytes.d.ts +4 -0
  331. package/dist/inspect/export/rendered-image-bytes.d.ts.map +1 -0
  332. package/dist/inspect/export/rendered-image-bytes.js +24 -0
  333. package/dist/inspect/export/rendered-image-bytes.js.map +1 -0
  334. package/dist/inspect/export-contract-target.d.ts +7 -0
  335. package/dist/inspect/export-contract-target.d.ts.map +1 -0
  336. package/dist/inspect/export-contract-target.js +33 -0
  337. package/dist/inspect/export-contract-target.js.map +1 -0
  338. package/dist/inspect/fetch-file-entry.d.ts +4 -0
  339. package/dist/inspect/fetch-file-entry.d.ts.map +1 -0
  340. package/dist/inspect/fetch-file-entry.js +7 -0
  341. package/dist/inspect/fetch-file-entry.js.map +1 -0
  342. package/dist/inspect/fetch-file-node-entry.d.ts +4 -0
  343. package/dist/inspect/fetch-file-node-entry.d.ts.map +1 -0
  344. package/dist/inspect/fetch-file-node-entry.js +7 -0
  345. package/dist/inspect/fetch-file-node-entry.js.map +1 -0
  346. package/dist/inspect/figma-node-url.d.ts +3 -0
  347. package/dist/inspect/figma-node-url.d.ts.map +1 -0
  348. package/dist/inspect/figma-node-url.js +30 -0
  349. package/dist/inspect/figma-node-url.js.map +1 -0
  350. package/dist/inspect/get-node-component-set.d.ts +5 -0
  351. package/dist/inspect/get-node-component-set.d.ts.map +1 -0
  352. package/dist/inspect/get-node-component-set.js +10 -0
  353. package/dist/inspect/get-node-component-set.js.map +1 -0
  354. package/dist/inspect/index.d.ts +17 -0
  355. package/dist/inspect/index.d.ts.map +1 -0
  356. package/dist/inspect/index.js +17 -0
  357. package/dist/inspect/index.js.map +1 -0
  358. package/dist/inspect/list-all-component-sets.d.ts +3 -0
  359. package/dist/inspect/list-all-component-sets.d.ts.map +1 -0
  360. package/dist/inspect/list-all-component-sets.js +27 -0
  361. package/dist/inspect/list-all-component-sets.js.map +1 -0
  362. package/dist/inspect/list-component-set-properties.d.ts +4 -0
  363. package/dist/inspect/list-component-set-properties.d.ts.map +1 -0
  364. package/dist/inspect/list-component-set-properties.js +73 -0
  365. package/dist/inspect/list-component-set-properties.js.map +1 -0
  366. package/dist/inspect/node-contract/build-node-contract.d.ts +12 -0
  367. package/dist/inspect/node-contract/build-node-contract.d.ts.map +1 -0
  368. package/dist/inspect/node-contract/build-node-contract.js +212 -0
  369. package/dist/inspect/node-contract/build-node-contract.js.map +1 -0
  370. package/dist/inspect/node-contract/dependencies.d.ts +5 -0
  371. package/dist/inspect/node-contract/dependencies.d.ts.map +1 -0
  372. package/dist/inspect/node-contract/dependencies.js +84 -0
  373. package/dist/inspect/node-contract/dependencies.js.map +1 -0
  374. package/dist/inspect/node-contract/index.d.ts +6 -0
  375. package/dist/inspect/node-contract/index.d.ts.map +1 -0
  376. package/dist/inspect/node-contract/index.js +6 -0
  377. package/dist/inspect/node-contract/index.js.map +1 -0
  378. package/dist/inspect/node-contract/node-kind.d.ts +9 -0
  379. package/dist/inspect/node-contract/node-kind.d.ts.map +1 -0
  380. package/dist/inspect/node-contract/node-kind.js +31 -0
  381. package/dist/inspect/node-contract/node-kind.js.map +1 -0
  382. package/dist/inspect/node-contract/node-lock.d.ts +6 -0
  383. package/dist/inspect/node-contract/node-lock.d.ts.map +1 -0
  384. package/dist/inspect/node-contract/node-lock.js +181 -0
  385. package/dist/inspect/node-contract/node-lock.js.map +1 -0
  386. package/dist/inspect/node-contract/node-schema.d.ts +14 -0
  387. package/dist/inspect/node-contract/node-schema.d.ts.map +1 -0
  388. package/dist/inspect/node-contract/node-schema.js +137 -0
  389. package/dist/inspect/node-contract/node-schema.js.map +1 -0
  390. package/dist/inspect/node-contract/paths.d.ts +10 -0
  391. package/dist/inspect/node-contract/paths.d.ts.map +1 -0
  392. package/dist/inspect/node-contract/paths.js +29 -0
  393. package/dist/inspect/node-contract/paths.js.map +1 -0
  394. package/dist/inspect/node-contract/tokens.d.ts +4 -0
  395. package/dist/inspect/node-contract/tokens.d.ts.map +1 -0
  396. package/dist/inspect/node-contract/tokens.js +30 -0
  397. package/dist/inspect/node-contract/tokens.js.map +1 -0
  398. package/dist/inspect/node-contract/types.d.ts +84 -0
  399. package/dist/inspect/node-contract/types.d.ts.map +1 -0
  400. package/dist/inspect/node-contract/types.js +2 -0
  401. package/dist/inspect/node-contract/types.js.map +1 -0
  402. package/dist/inspect/node-contract/verify-node-contract.d.ts +20 -0
  403. package/dist/inspect/node-contract/verify-node-contract.d.ts.map +1 -0
  404. package/dist/inspect/node-contract/verify-node-contract.js +131 -0
  405. package/dist/inspect/node-contract/verify-node-contract.js.map +1 -0
  406. package/dist/inspect/resolve-team-component-set.d.ts +14 -0
  407. package/dist/inspect/resolve-team-component-set.d.ts.map +1 -0
  408. package/dist/inspect/resolve-team-component-set.js +77 -0
  409. package/dist/inspect/resolve-team-component-set.js.map +1 -0
  410. package/dist/inspect/schemas.d.ts +37 -0
  411. package/dist/inspect/schemas.d.ts.map +1 -0
  412. package/dist/inspect/schemas.js +79 -0
  413. package/dist/inspect/schemas.js.map +1 -0
  414. package/dist/inspect/team-index.d.ts +76 -0
  415. package/dist/inspect/team-index.d.ts.map +1 -0
  416. package/dist/inspect/team-index.js +361 -0
  417. package/dist/inspect/team-index.js.map +1 -0
  418. package/dist/inspect/types.d.ts +46 -0
  419. package/dist/inspect/types.d.ts.map +1 -0
  420. package/dist/inspect/types.js +2 -0
  421. package/dist/inspect/types.js.map +1 -0
  422. package/dist/test/fixtures.d.ts +3 -0
  423. package/dist/test/fixtures.d.ts.map +1 -0
  424. package/dist/test/fixtures.js +6 -0
  425. package/dist/test/fixtures.js.map +1 -0
  426. package/dist/zod/parse-valid-entries.d.ts +4 -0
  427. package/dist/zod/parse-valid-entries.d.ts.map +1 -0
  428. package/dist/zod/parse-valid-entries.js +20 -0
  429. package/dist/zod/parse-valid-entries.js.map +1 -0
  430. package/package.json +39 -0
@@ -0,0 +1,790 @@
1
+ import { DEFAULT_NESTED_ASSET_SCALE, DEFAULT_PREVIEW_SCALE, FigmaInspectError, isNestedAssetNodeType, parseFigmaNodeUrl, supportedNestedAssetNodeTypes, } from "../inspect/index.js";
2
+ import { CliError } from "./errors.js";
3
+ import { usage } from "./usage.js";
4
+ function resolveOutputFormat(flags) {
5
+ return flags.json ? "json" : "yaml";
6
+ }
7
+ function emptyFlags() {
8
+ return {
9
+ help: false,
10
+ listTeamProjects: false,
11
+ listProjectFiles: false,
12
+ listTeamProjectFiles: false,
13
+ exportTeamIndex: false,
14
+ listTeamComponentSets: false,
15
+ listFilePages: false,
16
+ listFileComponentSets: false,
17
+ inspectComponentSetProperties: false,
18
+ inspectComponentSet: false,
19
+ inspectTeamComponentSet: false,
20
+ inspectFileNode: false,
21
+ buildComponentSetSpec: false,
22
+ buildComponentSetPseudocode: false,
23
+ verifyComponentContract: false,
24
+ verifyNodeContract: false,
25
+ exportContract: false,
26
+ exportComponentSet: false,
27
+ exportNodeContract: false,
28
+ exportAssets: false,
29
+ exportNestedAssets: false,
30
+ assetFormats: [],
31
+ assetNodeIds: [],
32
+ assetIncludeRegex: undefined,
33
+ assetNodeTypes: undefined,
34
+ assetMax: undefined,
35
+ assetScale: undefined,
36
+ exportPreview: false,
37
+ previewFormat: undefined,
38
+ previewScale: undefined,
39
+ projectId: undefined,
40
+ inputPath: undefined,
41
+ outputPath: undefined,
42
+ outputDir: undefined,
43
+ screenSimilarityThreshold: undefined,
44
+ screenSizeTolerance: undefined,
45
+ variablesPath: undefined,
46
+ teamComponentsPath: undefined,
47
+ url: undefined,
48
+ fileKey: undefined,
49
+ nodeId: undefined,
50
+ componentSetKey: undefined,
51
+ componentSetName: undefined,
52
+ contractDir: undefined,
53
+ componentName: undefined,
54
+ nodeName: undefined,
55
+ json: false,
56
+ };
57
+ }
58
+ function readFlagValue(argv, index, flag) {
59
+ const value = argv[index + 1];
60
+ if (!value || value.startsWith("-")) {
61
+ throw new CliError(`Missing value for ${flag}.`);
62
+ }
63
+ return { value, nextIndex: index + 1 };
64
+ }
65
+ function parsePreviewFormat(value) {
66
+ if (value === "png" || value === "svg") {
67
+ return value;
68
+ }
69
+ throw new CliError(`Unsupported --preview-format ${JSON.stringify(value)}. Expected png or svg.`);
70
+ }
71
+ function parsePreviewScale(value) {
72
+ const scale = Number(value);
73
+ if (!Number.isFinite(scale) || scale <= 0) {
74
+ throw new CliError(`Invalid --preview-scale ${JSON.stringify(value)}. Expected a positive number.`);
75
+ }
76
+ return scale;
77
+ }
78
+ function parseAssetFormat(value) {
79
+ if (value === "svg" || value === "png") {
80
+ return value;
81
+ }
82
+ throw new CliError(`Unsupported --asset-format ${JSON.stringify(value)}. Expected svg or png.`);
83
+ }
84
+ function parseAssetScale(value) {
85
+ const scale = Number(value);
86
+ if (!Number.isFinite(scale) || scale <= 0) {
87
+ throw new CliError(`Invalid --asset-scale ${JSON.stringify(value)}. Expected a positive number.`);
88
+ }
89
+ return scale;
90
+ }
91
+ function parseAssetMax(value) {
92
+ const max = Number(value);
93
+ if (!Number.isInteger(max) || max <= 0) {
94
+ throw new CliError(`Invalid --asset-max ${JSON.stringify(value)}. Expected a positive integer.`);
95
+ }
96
+ return max;
97
+ }
98
+ function parseScreenSimilarityThreshold(value) {
99
+ const threshold = Number(value);
100
+ if (!Number.isFinite(threshold) || threshold < 0 || threshold > 1) {
101
+ throw new CliError(`Invalid --screen-similarity-threshold ${JSON.stringify(value)}. Expected a number between 0 and 1.`);
102
+ }
103
+ return threshold;
104
+ }
105
+ function parseScreenSizeTolerance(value) {
106
+ const tolerance = Number(value);
107
+ if (!Number.isFinite(tolerance) || tolerance < 0) {
108
+ throw new CliError(`Invalid --screen-size-tolerance ${JSON.stringify(value)}. Expected a non-negative number.`);
109
+ }
110
+ return tolerance;
111
+ }
112
+ function parseAssetNodeTypes(value) {
113
+ const nodeTypes = value
114
+ .split(",")
115
+ .map((entry) => entry.trim().toUpperCase())
116
+ .filter((entry) => entry.length > 0);
117
+ if (nodeTypes.length === 0) {
118
+ throw new CliError("--asset-node-types must include at least one node type.");
119
+ }
120
+ const supportedTypes = supportedNestedAssetNodeTypes();
121
+ const parsed = [];
122
+ for (const nodeType of nodeTypes) {
123
+ if (!isNestedAssetNodeType(nodeType)) {
124
+ throw new CliError(`Unsupported --asset-node-types entry ${JSON.stringify(nodeType)}. Expected one of ${supportedTypes.join(", ")}.`);
125
+ }
126
+ parsed.push(nodeType);
127
+ }
128
+ return [...new Set(parsed)];
129
+ }
130
+ function parseAssetIncludeRegex(value) {
131
+ try {
132
+ new RegExp(value, "i");
133
+ return value;
134
+ }
135
+ catch (error) {
136
+ if (error instanceof Error) {
137
+ throw new CliError(`Invalid --asset-include-regex ${JSON.stringify(value)}: ${error.message}`);
138
+ }
139
+ throw error;
140
+ }
141
+ }
142
+ function normalizeFlagNodeId(value) {
143
+ return value.replace(/-/g, ":");
144
+ }
145
+ function uniqueAssetFormats(formats) {
146
+ return [...new Set(formats)];
147
+ }
148
+ function resolveAssetFormat(flags) {
149
+ if (!flags.exportAssets) {
150
+ return undefined;
151
+ }
152
+ const formats = uniqueAssetFormats(flags.assetFormats);
153
+ if (formats.some((format) => format !== "svg")) {
154
+ throw new CliError("--asset-format png is only supported with --export-nested-assets; --export-assets supports svg.");
155
+ }
156
+ return formats.includes("svg") ? "svg" : undefined;
157
+ }
158
+ function hasNestedAssetFlags(flags) {
159
+ return (flags.assetNodeIds.length > 0 ||
160
+ flags.assetIncludeRegex !== undefined ||
161
+ flags.assetNodeTypes !== undefined ||
162
+ flags.assetMax !== undefined ||
163
+ flags.assetScale !== undefined);
164
+ }
165
+ function resolveNestedAssetsOptions(flags) {
166
+ if (!flags.exportNestedAssets && !hasNestedAssetFlags(flags)) {
167
+ return undefined;
168
+ }
169
+ if (!flags.exportNestedAssets) {
170
+ throw new CliError("--asset-node-id, --asset-include-regex, --asset-node-types, --asset-max, and --asset-scale require --export-nested-assets.");
171
+ }
172
+ if (flags.assetNodeIds.length === 0 &&
173
+ flags.assetIncludeRegex === undefined) {
174
+ throw new CliError("--export-nested-assets requires --asset-node-id or --asset-include-regex.");
175
+ }
176
+ const formats = uniqueAssetFormats(flags.assetFormats.length > 0 ? flags.assetFormats : ["svg"]);
177
+ if (flags.assetScale !== undefined && !formats.includes("png")) {
178
+ throw new CliError("--asset-scale is only supported with --asset-format png.");
179
+ }
180
+ return {
181
+ nodeIds: flags.assetNodeIds,
182
+ ...(flags.assetIncludeRegex
183
+ ? { includeRegex: flags.assetIncludeRegex }
184
+ : {}),
185
+ ...(flags.assetNodeTypes ? { nodeTypes: flags.assetNodeTypes } : {}),
186
+ ...(flags.assetMax !== undefined ? { maxAssets: flags.assetMax } : {}),
187
+ formats,
188
+ scale: flags.assetScale ?? DEFAULT_NESTED_ASSET_SCALE,
189
+ };
190
+ }
191
+ function rejectUnusedAssetFormats(flags) {
192
+ if (flags.assetFormats.length > 0 &&
193
+ !flags.exportAssets &&
194
+ !flags.exportNestedAssets) {
195
+ throw new CliError("--asset-format requires --export-assets or --export-nested-assets.");
196
+ }
197
+ }
198
+ function resolvePreviewOptions(flags) {
199
+ if (!flags.exportPreview &&
200
+ flags.previewFormat === undefined &&
201
+ flags.previewScale === undefined) {
202
+ return undefined;
203
+ }
204
+ if (!flags.exportPreview) {
205
+ throw new CliError("--preview-format and --preview-scale require --export-preview.");
206
+ }
207
+ const format = flags.previewFormat ?? "png";
208
+ if (format === "svg") {
209
+ if (flags.previewScale !== undefined) {
210
+ throw new CliError("--preview-scale is only supported with --preview-format png.");
211
+ }
212
+ return { format };
213
+ }
214
+ return {
215
+ format,
216
+ scale: flags.previewScale ?? DEFAULT_PREVIEW_SCALE,
217
+ };
218
+ }
219
+ function parseComponentSetLookup(componentSetKey, componentSetName, command) {
220
+ if (componentSetKey && componentSetName) {
221
+ throw new CliError(`Pass either --component-set-key or --component-set-name for ${command}.`);
222
+ }
223
+ if (componentSetKey) {
224
+ return { kind: "key", value: componentSetKey };
225
+ }
226
+ if (componentSetName) {
227
+ return { kind: "name", value: componentSetName };
228
+ }
229
+ throw new CliError(`Missing --component-set-key or --component-set-name for ${command}.`);
230
+ }
231
+ function requireFileKey(fileKey, command) {
232
+ if (!fileKey) {
233
+ throw new CliError(`Missing --file-key for ${command}.`);
234
+ }
235
+ return fileKey;
236
+ }
237
+ function requireNodeId(nodeId, command) {
238
+ if (!nodeId) {
239
+ throw new CliError(`Missing --node-id for ${command}.`);
240
+ }
241
+ return nodeId;
242
+ }
243
+ function requireVariablesPath(variablesPath, command) {
244
+ if (!variablesPath) {
245
+ throw new CliError(`Missing --variables for ${command}.`);
246
+ }
247
+ return variablesPath;
248
+ }
249
+ function requireComponentSetScope(flags, command) {
250
+ if (flags.url) {
251
+ rejectFileNodeFlagsWithUrl(flags, command);
252
+ rejectComponentSetLookupWithUrl(flags, command);
253
+ return { kind: "node", ...parseFigmaUrl(flags.url) };
254
+ }
255
+ return {
256
+ kind: "lookup",
257
+ fileKey: requireFileKey(flags.fileKey, command),
258
+ nodeId: requireNodeId(flags.nodeId, command),
259
+ componentSet: parseComponentSetLookup(flags.componentSetKey, flags.componentSetName, command),
260
+ };
261
+ }
262
+ function parseFigmaUrl(url) {
263
+ try {
264
+ return parseFigmaNodeUrl(url);
265
+ }
266
+ catch (error) {
267
+ if (error instanceof FigmaInspectError) {
268
+ throw new CliError(error.message);
269
+ }
270
+ throw error;
271
+ }
272
+ }
273
+ function rejectFileNodeFlagsWithUrl(flags, command) {
274
+ if (flags.fileKey || flags.nodeId) {
275
+ throw new CliError(`Pass either --url or --file-key/--node-id for ${command}.`);
276
+ }
277
+ }
278
+ function rejectComponentSetLookupWithUrl(flags, command) {
279
+ if (flags.componentSetKey || flags.componentSetName) {
280
+ throw new CliError(`Pass either --url or --component-set-key/--component-set-name for ${command}.`);
281
+ }
282
+ }
283
+ function resolveNodeRef(flags, command) {
284
+ if (flags.url) {
285
+ rejectFileNodeFlagsWithUrl(flags, command);
286
+ return parseFigmaUrl(flags.url);
287
+ }
288
+ return {
289
+ fileKey: requireFileKey(flags.fileKey, command),
290
+ nodeId: requireNodeId(flags.nodeId, command),
291
+ };
292
+ }
293
+ function parseComponentSetTarget(flags, command) {
294
+ if (flags.url) {
295
+ rejectFileNodeFlagsWithUrl(flags, command);
296
+ rejectComponentSetLookupWithUrl(flags, command);
297
+ return { kind: "node", ...parseFigmaUrl(flags.url) };
298
+ }
299
+ return parseComponentSetLookup(flags.componentSetKey, flags.componentSetName, command);
300
+ }
301
+ function resolveCommand(flags) {
302
+ if (flags.help) {
303
+ return { kind: "help" };
304
+ }
305
+ const selected = [
306
+ flags.listTeamProjects ? "list-team-projects" : undefined,
307
+ flags.listProjectFiles ? "list-project-files" : undefined,
308
+ flags.listTeamProjectFiles
309
+ ? "list-team-project-files"
310
+ : undefined,
311
+ flags.exportTeamIndex ? "export-team-index" : undefined,
312
+ flags.listTeamComponentSets
313
+ ? "list-team-component-sets"
314
+ : undefined,
315
+ flags.listFilePages ? "list-file-pages" : undefined,
316
+ flags.listFileComponentSets
317
+ ? "list-file-component-sets"
318
+ : undefined,
319
+ flags.inspectComponentSetProperties
320
+ ? "inspect-component-set-properties"
321
+ : undefined,
322
+ flags.inspectComponentSet ? "inspect-component-set" : undefined,
323
+ flags.inspectTeamComponentSet
324
+ ? "inspect-team-component-set"
325
+ : undefined,
326
+ flags.inspectFileNode ? "inspect-file-node" : undefined,
327
+ flags.buildComponentSetSpec
328
+ ? "build-component-set-spec"
329
+ : undefined,
330
+ flags.buildComponentSetPseudocode
331
+ ? "build-component-set-pseudocode"
332
+ : undefined,
333
+ flags.verifyComponentContract
334
+ ? "verify-component-contract"
335
+ : undefined,
336
+ flags.verifyNodeContract ? "verify-node-contract" : undefined,
337
+ flags.exportContract ? "export-contract" : undefined,
338
+ flags.exportComponentSet ? "export-component-set" : undefined,
339
+ flags.exportNodeContract ? "export-node-contract" : undefined,
340
+ ].filter((command) => command !== undefined);
341
+ if (selected.length === 0) {
342
+ throw new CliError("Nothing to do. Pass --list-team-projects, --list-project-files, --list-team-project-files, --export-team-index, --list-team-component-sets, --list-file-pages, --list-file-component-sets, --inspect-component-set-properties, --inspect-component-set, --inspect-team-component-set, --inspect-file-node, --build-component-set-spec, --build-component-set-pseudocode, --verify-component-contract, --verify-node-contract, --export-contract, --export-component-set, or --export-node-contract.\n\n" +
343
+ usage);
344
+ }
345
+ if (selected.length > 1) {
346
+ throw new CliError("Pass only one command at a time.");
347
+ }
348
+ const command = selected[0];
349
+ if (command !== "export-team-index" &&
350
+ (flags.screenSimilarityThreshold !== undefined ||
351
+ flags.screenSizeTolerance !== undefined)) {
352
+ throw new CliError("--screen-similarity-threshold and --screen-size-tolerance require --export-team-index.");
353
+ }
354
+ switch (command) {
355
+ case "list-team-projects":
356
+ return { kind: "list-team-projects", format: resolveOutputFormat(flags) };
357
+ case "list-team-project-files":
358
+ return {
359
+ kind: "list-team-project-files",
360
+ format: resolveOutputFormat(flags),
361
+ };
362
+ case "export-team-index": {
363
+ if (!flags.outputDir) {
364
+ throw new CliError("Missing --output-dir for --export-team-index.");
365
+ }
366
+ if (flags.json) {
367
+ throw new CliError("--json is not supported with --export-team-index; team index files are YAML.");
368
+ }
369
+ return {
370
+ kind: "export-team-index",
371
+ outputDir: flags.outputDir,
372
+ screenSimilarityThreshold: flags.screenSimilarityThreshold,
373
+ screenSizeTolerance: flags.screenSizeTolerance,
374
+ };
375
+ }
376
+ case "list-team-component-sets":
377
+ return {
378
+ kind: "list-team-component-sets",
379
+ format: resolveOutputFormat(flags),
380
+ };
381
+ case "list-project-files": {
382
+ if (!flags.projectId) {
383
+ throw new CliError("Missing --project-id for --list-project-files.");
384
+ }
385
+ return {
386
+ kind: "list-project-files",
387
+ projectId: flags.projectId,
388
+ format: resolveOutputFormat(flags),
389
+ };
390
+ }
391
+ case "list-file-pages":
392
+ return {
393
+ kind: "list-file-pages",
394
+ fileKey: requireFileKey(flags.fileKey, "--list-file-pages"),
395
+ format: resolveOutputFormat(flags),
396
+ };
397
+ case "list-file-component-sets":
398
+ return {
399
+ kind: "list-file-component-sets",
400
+ fileKey: requireFileKey(flags.fileKey, "--list-file-component-sets"),
401
+ format: resolveOutputFormat(flags),
402
+ };
403
+ case "inspect-component-set-properties":
404
+ return {
405
+ kind: "inspect-component-set-properties",
406
+ scope: requireComponentSetScope(flags, "--inspect-component-set-properties"),
407
+ format: resolveOutputFormat(flags),
408
+ };
409
+ case "inspect-component-set":
410
+ return {
411
+ kind: "inspect-component-set",
412
+ scope: requireComponentSetScope(flags, "--inspect-component-set"),
413
+ format: resolveOutputFormat(flags),
414
+ };
415
+ case "inspect-team-component-set":
416
+ return {
417
+ kind: "inspect-team-component-set",
418
+ componentSet: parseComponentSetLookup(flags.componentSetKey, flags.componentSetName, "--inspect-team-component-set"),
419
+ format: resolveOutputFormat(flags),
420
+ };
421
+ case "inspect-file-node":
422
+ return {
423
+ kind: "inspect-file-node",
424
+ ...resolveNodeRef(flags, "--inspect-file-node"),
425
+ sourceUrl: flags.url,
426
+ format: resolveOutputFormat(flags),
427
+ };
428
+ case "build-component-set-spec": {
429
+ if (!flags.inputPath) {
430
+ throw new CliError("Missing --input for --build-component-set-spec.");
431
+ }
432
+ return {
433
+ kind: "build-component-set-spec",
434
+ inputPath: flags.inputPath,
435
+ variablesPath: requireVariablesPath(flags.variablesPath, "--build-component-set-spec"),
436
+ teamComponentsPath: flags.teamComponentsPath,
437
+ format: resolveOutputFormat(flags),
438
+ };
439
+ }
440
+ case "build-component-set-pseudocode": {
441
+ if (!flags.inputPath) {
442
+ throw new CliError("Missing --input for --build-component-set-pseudocode.");
443
+ }
444
+ return {
445
+ kind: "build-component-set-pseudocode",
446
+ inputPath: flags.inputPath,
447
+ outputDir: flags.outputDir ?? flags.outputPath,
448
+ variablesPath: requireVariablesPath(flags.variablesPath, "--build-component-set-pseudocode"),
449
+ teamComponentsPath: flags.teamComponentsPath,
450
+ format: resolveOutputFormat(flags),
451
+ };
452
+ }
453
+ case "verify-component-contract": {
454
+ if (!flags.contractDir) {
455
+ throw new CliError("Missing --contract-dir for --verify-component-contract.");
456
+ }
457
+ return {
458
+ kind: "verify-component-contract",
459
+ contractDir: flags.contractDir,
460
+ componentName: flags.componentName,
461
+ outputFormat: resolveOutputFormat(flags),
462
+ };
463
+ }
464
+ case "verify-node-contract": {
465
+ if (!flags.contractDir) {
466
+ throw new CliError("Missing --contract-dir for --verify-node-contract.");
467
+ }
468
+ return {
469
+ kind: "verify-node-contract",
470
+ contractDir: flags.contractDir,
471
+ nodeName: flags.nodeName,
472
+ outputFormat: resolveOutputFormat(flags),
473
+ };
474
+ }
475
+ case "export-component-set": {
476
+ if (!flags.outputDir) {
477
+ throw new CliError("Missing --output-dir for --export-component-set.");
478
+ }
479
+ rejectUnusedAssetFormats(flags);
480
+ const preview = resolvePreviewOptions(flags);
481
+ const assetFormat = resolveAssetFormat(flags);
482
+ const nestedAssets = resolveNestedAssetsOptions(flags);
483
+ return {
484
+ kind: "export-component-set",
485
+ outputDir: flags.outputDir,
486
+ componentSet: parseComponentSetTarget(flags, "--export-component-set"),
487
+ sourceUrl: flags.url,
488
+ variablesPath: requireVariablesPath(flags.variablesPath, "--export-component-set"),
489
+ exportAssets: flags.exportAssets,
490
+ assetFormat,
491
+ ...(nestedAssets ? { nestedAssets } : {}),
492
+ ...(preview ? { preview } : {}),
493
+ format: resolveOutputFormat(flags),
494
+ };
495
+ }
496
+ case "export-contract": {
497
+ if (!flags.outputDir) {
498
+ throw new CliError("Missing --output-dir for --export-contract.");
499
+ }
500
+ const nodeRef = resolveNodeRef(flags, "--export-contract");
501
+ rejectUnusedAssetFormats(flags);
502
+ const preview = resolvePreviewOptions(flags);
503
+ const assetFormat = resolveAssetFormat(flags);
504
+ const nestedAssets = resolveNestedAssetsOptions(flags);
505
+ return {
506
+ kind: "export-contract",
507
+ outputDir: flags.outputDir,
508
+ ...nodeRef,
509
+ sourceUrl: flags.url,
510
+ variablesPath: requireVariablesPath(flags.variablesPath, "--export-contract"),
511
+ exportAssets: flags.exportAssets,
512
+ assetFormat,
513
+ ...(nestedAssets ? { nestedAssets } : {}),
514
+ ...(preview ? { preview } : {}),
515
+ format: resolveOutputFormat(flags),
516
+ };
517
+ }
518
+ case "export-node-contract": {
519
+ if (!flags.outputDir) {
520
+ throw new CliError("Missing --output-dir for --export-node-contract.");
521
+ }
522
+ const nodeRef = resolveNodeRef(flags, "--export-node-contract");
523
+ if (flags.exportAssets) {
524
+ throw new CliError("--export-assets is not supported with --export-node-contract. Use --export-nested-assets for node sidecar assets.");
525
+ }
526
+ rejectUnusedAssetFormats(flags);
527
+ const preview = resolvePreviewOptions(flags);
528
+ const nestedAssets = resolveNestedAssetsOptions(flags);
529
+ return {
530
+ kind: "export-node-contract",
531
+ outputDir: flags.outputDir,
532
+ ...nodeRef,
533
+ sourceUrl: flags.url,
534
+ variablesPath: requireVariablesPath(flags.variablesPath, "--export-node-contract"),
535
+ ...(nestedAssets ? { nestedAssets } : {}),
536
+ ...(preview ? { preview } : {}),
537
+ format: resolveOutputFormat(flags),
538
+ };
539
+ }
540
+ default: {
541
+ const exhaustive = command;
542
+ return exhaustive;
543
+ }
544
+ }
545
+ }
546
+ export function parseCommand(argv) {
547
+ const flags = emptyFlags();
548
+ for (let index = 0; index < argv.length; index += 1) {
549
+ const arg = argv[index];
550
+ if (arg === "--help" || arg === "-h") {
551
+ flags.help = true;
552
+ continue;
553
+ }
554
+ if (arg === "--list-team-projects") {
555
+ flags.listTeamProjects = true;
556
+ continue;
557
+ }
558
+ if (arg === "--list-project-files") {
559
+ flags.listProjectFiles = true;
560
+ continue;
561
+ }
562
+ if (arg === "--list-team-project-files") {
563
+ flags.listTeamProjectFiles = true;
564
+ continue;
565
+ }
566
+ if (arg === "--export-team-index") {
567
+ flags.exportTeamIndex = true;
568
+ continue;
569
+ }
570
+ if (arg === "--list-team-component-sets") {
571
+ flags.listTeamComponentSets = true;
572
+ continue;
573
+ }
574
+ if (arg === "--list-file-pages") {
575
+ flags.listFilePages = true;
576
+ continue;
577
+ }
578
+ if (arg === "--list-file-component-sets") {
579
+ flags.listFileComponentSets = true;
580
+ continue;
581
+ }
582
+ if (arg === "--inspect-component-set-properties") {
583
+ flags.inspectComponentSetProperties = true;
584
+ continue;
585
+ }
586
+ if (arg === "--inspect-component-set") {
587
+ flags.inspectComponentSet = true;
588
+ continue;
589
+ }
590
+ if (arg === "--inspect-team-component-set") {
591
+ flags.inspectTeamComponentSet = true;
592
+ continue;
593
+ }
594
+ if (arg === "--inspect-file-node") {
595
+ flags.inspectFileNode = true;
596
+ continue;
597
+ }
598
+ if (arg === "--build-component-set-spec") {
599
+ flags.buildComponentSetSpec = true;
600
+ continue;
601
+ }
602
+ if (arg === "--build-component-set-pseudocode") {
603
+ flags.buildComponentSetPseudocode = true;
604
+ continue;
605
+ }
606
+ if (arg === "--verify-component-contract") {
607
+ flags.verifyComponentContract = true;
608
+ continue;
609
+ }
610
+ if (arg === "--verify-node-contract") {
611
+ flags.verifyNodeContract = true;
612
+ continue;
613
+ }
614
+ if (arg === "--export-contract") {
615
+ flags.exportContract = true;
616
+ continue;
617
+ }
618
+ if (arg === "--export-component-set") {
619
+ flags.exportComponentSet = true;
620
+ continue;
621
+ }
622
+ if (arg === "--export-node-contract") {
623
+ flags.exportNodeContract = true;
624
+ continue;
625
+ }
626
+ if (arg === "--export-assets") {
627
+ flags.exportAssets = true;
628
+ continue;
629
+ }
630
+ if (arg === "--export-nested-assets") {
631
+ flags.exportNestedAssets = true;
632
+ continue;
633
+ }
634
+ if (arg === "--export-preview") {
635
+ flags.exportPreview = true;
636
+ continue;
637
+ }
638
+ if (arg === "--asset-format") {
639
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
640
+ flags.assetFormats.push(parseAssetFormat(value));
641
+ index = nextIndex;
642
+ continue;
643
+ }
644
+ if (arg === "--asset-node-id") {
645
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
646
+ flags.assetNodeIds.push(normalizeFlagNodeId(value));
647
+ index = nextIndex;
648
+ continue;
649
+ }
650
+ if (arg === "--asset-include-regex") {
651
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
652
+ flags.assetIncludeRegex = parseAssetIncludeRegex(value);
653
+ index = nextIndex;
654
+ continue;
655
+ }
656
+ if (arg === "--asset-node-types") {
657
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
658
+ flags.assetNodeTypes = parseAssetNodeTypes(value);
659
+ index = nextIndex;
660
+ continue;
661
+ }
662
+ if (arg === "--asset-max") {
663
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
664
+ flags.assetMax = parseAssetMax(value);
665
+ index = nextIndex;
666
+ continue;
667
+ }
668
+ if (arg === "--asset-scale") {
669
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
670
+ flags.assetScale = parseAssetScale(value);
671
+ index = nextIndex;
672
+ continue;
673
+ }
674
+ if (arg === "--preview-format") {
675
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
676
+ flags.previewFormat = parsePreviewFormat(value);
677
+ index = nextIndex;
678
+ continue;
679
+ }
680
+ if (arg === "--preview-scale") {
681
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
682
+ flags.previewScale = parsePreviewScale(value);
683
+ index = nextIndex;
684
+ continue;
685
+ }
686
+ if (arg === "--screen-similarity-threshold") {
687
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
688
+ flags.screenSimilarityThreshold = parseScreenSimilarityThreshold(value);
689
+ index = nextIndex;
690
+ continue;
691
+ }
692
+ if (arg === "--screen-size-tolerance") {
693
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
694
+ flags.screenSizeTolerance = parseScreenSizeTolerance(value);
695
+ index = nextIndex;
696
+ continue;
697
+ }
698
+ if (arg === "--input") {
699
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
700
+ flags.inputPath = value;
701
+ index = nextIndex;
702
+ continue;
703
+ }
704
+ if (arg === "--variables") {
705
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
706
+ flags.variablesPath = value;
707
+ index = nextIndex;
708
+ continue;
709
+ }
710
+ if (arg === "--team-components") {
711
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
712
+ flags.teamComponentsPath = value;
713
+ index = nextIndex;
714
+ continue;
715
+ }
716
+ if (arg === "--url") {
717
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
718
+ flags.url = value;
719
+ index = nextIndex;
720
+ continue;
721
+ }
722
+ if (arg === "--output") {
723
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
724
+ flags.outputPath = value;
725
+ index = nextIndex;
726
+ continue;
727
+ }
728
+ if (arg === "--output-dir") {
729
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
730
+ flags.outputDir = value;
731
+ index = nextIndex;
732
+ continue;
733
+ }
734
+ if (arg === "--project-id") {
735
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
736
+ flags.projectId = value;
737
+ index = nextIndex;
738
+ continue;
739
+ }
740
+ if (arg === "--file-key") {
741
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
742
+ flags.fileKey = value;
743
+ index = nextIndex;
744
+ continue;
745
+ }
746
+ if (arg === "--node-id") {
747
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
748
+ flags.nodeId = value;
749
+ index = nextIndex;
750
+ continue;
751
+ }
752
+ if (arg === "--component-set-key") {
753
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
754
+ flags.componentSetKey = value;
755
+ index = nextIndex;
756
+ continue;
757
+ }
758
+ if (arg === "--component-set-name") {
759
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
760
+ flags.componentSetName = value;
761
+ index = nextIndex;
762
+ continue;
763
+ }
764
+ if (arg === "--contract-dir") {
765
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
766
+ flags.contractDir = value;
767
+ index = nextIndex;
768
+ continue;
769
+ }
770
+ if (arg === "--component-name") {
771
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
772
+ flags.componentName = value;
773
+ index = nextIndex;
774
+ continue;
775
+ }
776
+ if (arg === "--node-name") {
777
+ const { value, nextIndex } = readFlagValue(argv, index, arg);
778
+ flags.nodeName = value;
779
+ index = nextIndex;
780
+ continue;
781
+ }
782
+ if (arg === "--json") {
783
+ flags.json = true;
784
+ continue;
785
+ }
786
+ throw new CliError(`Unknown option: ${arg}`);
787
+ }
788
+ return resolveCommand(flags);
789
+ }
790
+ //# sourceMappingURL=parse-args.js.map