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,301 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { isRecord, readBoolean, readChildren, readNumber, readRecord, readString, } from "../component-set-spec/figma-node.js";
5
+ import { parseComponentSetProps, parseVariantName, } from "../component-set-spec/parse-props.js";
6
+ import { stableStringify } from "./stable-stringify.js";
7
+ function sha256Hex(value) {
8
+ return createHash("sha256").update(value).digest("hex");
9
+ }
10
+ export function fingerprintTree(tree) {
11
+ return sha256Hex(stableStringify(tree));
12
+ }
13
+ const layoutKeys = [
14
+ "layoutMode",
15
+ "layoutWrap",
16
+ "layoutPositioning",
17
+ "layoutSizingHorizontal",
18
+ "layoutSizingVertical",
19
+ "primaryAxisSizingMode",
20
+ "counterAxisSizingMode",
21
+ "primaryAxisAlignItems",
22
+ "counterAxisAlignItems",
23
+ "itemSpacing",
24
+ "counterAxisSpacing",
25
+ "layoutGrow",
26
+ "layoutAlign",
27
+ "minWidth",
28
+ "maxWidth",
29
+ "minHeight",
30
+ "maxHeight",
31
+ "paddingTop",
32
+ "paddingRight",
33
+ "paddingBottom",
34
+ "paddingLeft",
35
+ "clipsContent",
36
+ ];
37
+ const textStyleKeys = [
38
+ "fontFamily",
39
+ "fontPostScriptName",
40
+ "fontSize",
41
+ "fontWeight",
42
+ "fontStyle",
43
+ "textAlignHorizontal",
44
+ "textAlignVertical",
45
+ "textAutoResize",
46
+ "lineHeightPx",
47
+ "lineHeightPercent",
48
+ "lineHeightUnit",
49
+ "letterSpacing",
50
+ "paragraphSpacing",
51
+ "paragraphIndent",
52
+ "listSpacing",
53
+ ];
54
+ const paintKeys = [
55
+ "type",
56
+ "visible",
57
+ "opacity",
58
+ "blendMode",
59
+ "color",
60
+ "boundVariables",
61
+ "gradientStops",
62
+ "imageRef",
63
+ "scaleMode",
64
+ "scalingFactor",
65
+ ];
66
+ const effectKeys = [
67
+ "type",
68
+ "visible",
69
+ "radius",
70
+ "spread",
71
+ "offset",
72
+ "color",
73
+ "blendMode",
74
+ "showShadowBehindNode",
75
+ ];
76
+ function pruneSurfaceRecord(value) {
77
+ const entries = Object.entries(value).filter(([, entry]) => {
78
+ if (entry === undefined) {
79
+ return false;
80
+ }
81
+ if (Array.isArray(entry)) {
82
+ return entry.length > 0;
83
+ }
84
+ if (isRecord(entry)) {
85
+ return Object.keys(entry).length > 0;
86
+ }
87
+ return true;
88
+ });
89
+ return entries.length > 0 ? Object.fromEntries(entries) : undefined;
90
+ }
91
+ function variableAliasId(value) {
92
+ if (!isRecord(value) || readString(value, "type") !== "VARIABLE_ALIAS") {
93
+ return undefined;
94
+ }
95
+ return readString(value, "id")?.replace(/^VariableID:/, "");
96
+ }
97
+ function normalizeSurfaceValue(value, variables) {
98
+ const variable = variableAliasId(value);
99
+ if (variable) {
100
+ const token = variables?.resolve(variable);
101
+ return token ? { token } : { variable };
102
+ }
103
+ if (typeof value === "string" ||
104
+ typeof value === "number" ||
105
+ typeof value === "boolean") {
106
+ return value;
107
+ }
108
+ if (value === null) {
109
+ return null;
110
+ }
111
+ if (Array.isArray(value)) {
112
+ const normalized = value
113
+ .map((entry) => normalizeSurfaceValue(entry, variables))
114
+ .filter((entry) => entry !== undefined);
115
+ return normalized.length > 0 ? normalized : undefined;
116
+ }
117
+ if (!isRecord(value)) {
118
+ return undefined;
119
+ }
120
+ const normalized = {};
121
+ for (const [key, entry] of Object.entries(value)) {
122
+ normalized[key] = normalizeSurfaceValue(entry, variables);
123
+ }
124
+ return pruneSurfaceRecord(normalized);
125
+ }
126
+ function normalizePickedRecord(value, keys, variables) {
127
+ if (!isRecord(value)) {
128
+ return undefined;
129
+ }
130
+ const normalized = {};
131
+ for (const key of keys) {
132
+ if (key in value) {
133
+ normalized[key] = normalizeSurfaceValue(value[key], variables);
134
+ }
135
+ }
136
+ return pruneSurfaceRecord(normalized);
137
+ }
138
+ function normalizePaintList(value, variables) {
139
+ if (!Array.isArray(value)) {
140
+ return undefined;
141
+ }
142
+ const paints = value
143
+ .map((paint) => normalizePickedRecord(paint, paintKeys, variables))
144
+ .filter((paint) => paint !== undefined);
145
+ return paints.length > 0 ? paints : undefined;
146
+ }
147
+ function normalizeEffects(value, variables) {
148
+ if (!Array.isArray(value)) {
149
+ return undefined;
150
+ }
151
+ const effects = value
152
+ .map((effect) => normalizePickedRecord(effect, effectKeys, variables))
153
+ .filter((effect) => effect !== undefined);
154
+ return effects.length > 0 ? effects : undefined;
155
+ }
156
+ function normalizeDimensions(node) {
157
+ const box = readRecord(node, "absoluteBoundingBox");
158
+ if (!box) {
159
+ return undefined;
160
+ }
161
+ return pruneSurfaceRecord({
162
+ width: readNumber(box, "width"),
163
+ height: readNumber(box, "height"),
164
+ });
165
+ }
166
+ function normalizeComponentIdentity(node, teamComponents) {
167
+ const componentId = readString(node, "componentId");
168
+ if (!componentId) {
169
+ return undefined;
170
+ }
171
+ const teamComponent = teamComponents?.findById(componentId) ??
172
+ (node.name ? teamComponents?.findByName(node.name) : undefined);
173
+ return pruneSurfaceRecord({
174
+ id: componentId,
175
+ key: teamComponent?.key,
176
+ name: teamComponent?.name ?? readString(node, "name"),
177
+ fileKey: teamComponent?.fileKey,
178
+ });
179
+ }
180
+ function normalizeComponentProperties(value, variables) {
181
+ if (!isRecord(value)) {
182
+ return undefined;
183
+ }
184
+ const properties = {};
185
+ for (const [key, rawProperty] of Object.entries(value)) {
186
+ properties[key] = normalizePickedRecord(rawProperty, ["type", "value", "boundVariables"], variables);
187
+ }
188
+ return pruneSurfaceRecord(properties);
189
+ }
190
+ function normalizeComponentDefinitions(node, variables) {
191
+ if (node.type === "COMPONENT_SET") {
192
+ const { props, baseVariant } = parseComponentSetProps(node);
193
+ const variantNames = readChildren(node)
194
+ .filter((child) => readString(child, "type") === "COMPONENT")
195
+ .map((child) => readString(child, "name"))
196
+ .filter((name) => name !== undefined);
197
+ const variants = variantNames.map((name) => ({
198
+ name,
199
+ when: parseVariantName(name),
200
+ }));
201
+ return pruneSurfaceRecord({
202
+ props: normalizeSurfaceValue(props, variables),
203
+ baseVariant: normalizeSurfaceValue(baseVariant, variables),
204
+ variants: normalizeSurfaceValue(variants, variables),
205
+ });
206
+ }
207
+ const definitions = readRecord(node, "componentPropertyDefinitions");
208
+ if (!definitions) {
209
+ return undefined;
210
+ }
211
+ const normalized = {};
212
+ for (const [key, definition] of Object.entries(definitions)) {
213
+ normalized[key] = normalizePickedRecord(definition, [
214
+ "type",
215
+ "defaultValue",
216
+ "variantOptions",
217
+ "preferredValues",
218
+ "boundVariables",
219
+ ], variables);
220
+ }
221
+ return pruneSurfaceRecord(normalized);
222
+ }
223
+ function normalizeSurfaceNode(node, variables, teamComponents) {
224
+ const visible = readBoolean(node, "visible");
225
+ const variant = node.type === "COMPONENT" && node.name
226
+ ? pruneSurfaceRecord(parseVariantName(node.name))
227
+ : undefined;
228
+ const children = readChildren(node)
229
+ .map((child) => normalizeSurfaceNode(child, variables, teamComponents))
230
+ .filter((child) => child !== undefined);
231
+ return pruneSurfaceRecord({
232
+ type: readString(node, "type"),
233
+ name: readString(node, "name"),
234
+ hidden: visible === false ? true : undefined,
235
+ component: normalizeComponentIdentity(node, teamComponents),
236
+ componentProperties: normalizeComponentProperties(readRecord(node, "componentProperties"), variables),
237
+ componentPropertyReferences: normalizeSurfaceValue(readRecord(node, "componentPropertyReferences"), variables),
238
+ componentDefinitions: normalizeComponentDefinitions(node, variables),
239
+ variant,
240
+ layout: normalizePickedRecord(node, layoutKeys, variables),
241
+ constraints: normalizePickedRecord(readRecord(node, "constraints"), ["horizontal", "vertical"], variables),
242
+ dimensions: normalizeDimensions(node),
243
+ style: pruneSurfaceRecord({
244
+ fills: normalizePaintList(node.fills, variables),
245
+ strokes: normalizePaintList(node.strokes, variables),
246
+ effects: normalizeEffects(node.effects, variables),
247
+ opacity: readNumber(node, "opacity"),
248
+ blendMode: readString(node, "blendMode"),
249
+ strokeWeight: normalizeSurfaceValue(node.strokeWeight, variables),
250
+ strokeAlign: readString(node, "strokeAlign"),
251
+ strokeDashes: normalizeSurfaceValue(node.strokeDashes, variables),
252
+ individualStrokeWeights: normalizeSurfaceValue(node.individualStrokeWeights, variables),
253
+ cornerRadius: normalizeSurfaceValue(node.cornerRadius, variables),
254
+ rectangleCornerRadii: normalizeSurfaceValue(node.rectangleCornerRadii, variables),
255
+ cornerSmoothing: readNumber(node, "cornerSmoothing"),
256
+ }),
257
+ text: pruneSurfaceRecord({
258
+ characters: readString(node, "characters"),
259
+ style: normalizePickedRecord(readRecord(node, "style"), textStyleKeys),
260
+ }),
261
+ boundVariables: normalizeSurfaceValue(readRecord(node, "boundVariables"), variables),
262
+ children,
263
+ });
264
+ }
265
+ export function fingerprintContractSurface(tree, variables, teamComponents) {
266
+ return sha256Hex(stableStringify(normalizeSurfaceNode(tree, variables, teamComponents)));
267
+ }
268
+ export function fingerprintContracts(visuals, geometry, meta, structureDsl) {
269
+ return sha256Hex(stableStringify({
270
+ visuals,
271
+ geometry,
272
+ meta,
273
+ structureDsl,
274
+ }));
275
+ }
276
+ export function variantAssetSlug(when, variantAxes) {
277
+ const orderedAxes = Object.keys(variantAxes).sort((left, right) => {
278
+ if (left === "Size") {
279
+ return 1;
280
+ }
281
+ if (right === "Size") {
282
+ return -1;
283
+ }
284
+ return left.localeCompare(right);
285
+ });
286
+ const parts = orderedAxes
287
+ .map((axis) => when[axis])
288
+ .filter((value) => typeof value === "string")
289
+ .map((value) => value.toLowerCase());
290
+ return parts.join("-");
291
+ }
292
+ export async function fingerprintAssetFiles(assetsDir, slugs) {
293
+ const fingerprints = {};
294
+ for (const slug of slugs.sort()) {
295
+ const absolutePath = path.join(assetsDir, `${slug}.svg`);
296
+ const bytes = await readFile(absolutePath);
297
+ fingerprints[slug] = sha256Hex(bytes);
298
+ }
299
+ return fingerprints;
300
+ }
301
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../src/inspect/contract/fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,sCAAsC,CAAC;AAI9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,SAAS,SAAS,CAAC,KAA0B;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAUD,MAAM,UAAU,GAAG;IACjB,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,wBAAwB;IACxB,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;IACb,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;CACN,CAAC;AAEX,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,oBAAoB;IACpB,UAAU;IACV,YAAY;IACZ,WAAW;IACX,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;CACL,CAAC;AAEX,MAAM,SAAS,GAAG;IAChB,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,OAAO;IACP,gBAAgB;IAChB,eAAe;IACf,UAAU;IACV,WAAW;IACX,eAAe;CACP,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,WAAW;IACX,sBAAsB;CACd,CAAC;AAEX,SAAS,kBAAkB,CACzB,KAA+C;IAE/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;QACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAA6B,CAAC;IAE/B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,SAA4B;IAE5B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK;aACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACvD,MAAM,CAAC,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAA6C,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAuB,EACvB,SAA4B;IAE5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAA6C,EAAE,CAAC;IAChE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAc,EACd,SAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SAClE,MAAM,CAAC,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc,EACd,SAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK;SAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;SACrE,MAAM,CAAC,CAAC,MAAM,EAA0B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAEpE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAkB;IAC7C,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;QAC/B,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAkB,EAClB,cAAsC;IAEtC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GACjB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC;QACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAElE,OAAO,kBAAkB,CAAC;QACxB,EAAE,EAAE,WAAW;QACf,GAAG,EAAE,aAAa,EAAE,GAAG;QACvB,IAAI,EAAE,aAAa,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QACrD,OAAO,EAAE,aAAa,EAAE,OAAO;KAChC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAc,EACd,SAA4B;IAE5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAA6C,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CACrC,WAAW,EACX,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,EACnC,SAAS,CACV,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAkB,EAClB,SAA4B;IAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,WAAW,CAAC;aAC5D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI;YACJ,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC,CAAC;QAEJ,OAAO,kBAAkB,CAAC;YACxB,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC;YAC9C,WAAW,EAAE,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC;YAC1D,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAA6C,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,UAAU,CAAC,GAAG,CAAC,GAAG,qBAAqB,CACrC,UAAU,EACV;YACE,MAAM;YACN,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;SACjB,EACD,SAAS,CACV,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAkB,EAClB,SAA4B,EAC5B,cAAsC;IAEtC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI;QACpC,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,oBAAoB,CAAC,KAAqB,EAAE,SAAS,EAAE,cAAc,CAAC,CACvE;SACA,MAAM,CAAC,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAEjE,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9B,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC5C,SAAS,EAAE,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC;QAC3D,mBAAmB,EAAE,4BAA4B,CAC/C,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,EACvC,SAAS,CACV;QACD,2BAA2B,EAAE,qBAAqB,CAChD,UAAU,CAAC,IAAI,EAAE,6BAA6B,CAAC,EAC/C,SAAS,CACV;QACD,oBAAoB,EAAE,6BAA6B,CAAC,IAAI,EAAE,SAAS,CAAC;QACpE,OAAO;QACP,MAAM,EAAE,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;QAC1D,WAAW,EAAE,qBAAqB,CAChC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,EAC/B,CAAC,YAAY,EAAE,UAAU,CAAC,EAC1B,SAAS,CACV;QACD,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACrC,KAAK,EAAE,kBAAkB,CAAC;YACxB,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YAChD,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YACpD,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAClD,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;YACpC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC;YACxC,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;YACjE,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC;YAC5C,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;YACjE,uBAAuB,EAAE,qBAAqB,CAC5C,IAAI,CAAC,uBAAuB,EAC5B,SAAS,CACV;YACD,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;YACjE,oBAAoB,EAAE,qBAAqB,CACzC,IAAI,CAAC,oBAAoB,EACzB,SAAS,CACV;YACD,eAAe,EAAE,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC;SACrD,CAAC;QACF,IAAI,EAAE,kBAAkB,CAAC;YACvB,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;YAC1C,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC;SACvE,CAAC;QACF,cAAc,EAAE,qBAAqB,CACnC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAClC,SAAS,CACV;QACD,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAkB,EAClB,SAA4B,EAC5B,cAAsC;IAEtC,OAAO,SAAS,CACd,eAAe,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,QAAiC,EACjC,IAAa,EACb,YAAoB;IAEpB,OAAO,SAAS,CACd,eAAe,CAAC;QACd,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,YAAY;KACb,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAA4B,EAC5B,WAAqC;IAErC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,WAAW;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,KAAe;IAEf,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface LockApproval {
2
+ status: "unverified" | "verified" | "deprecated";
3
+ verifiedAt: string | null;
4
+ verifiedBy: string | null;
5
+ baselineRevision: string | null;
6
+ }
7
+ export interface LockDrift {
8
+ lastCheckedAt: string | null;
9
+ metadataChanged: boolean;
10
+ sourceChanged: boolean;
11
+ structureChanged: boolean;
12
+ visualsChanged: boolean;
13
+ }
14
+ export interface LockFingerprintsV1 {
15
+ tree: string;
16
+ contracts: string;
17
+ }
18
+ export interface LockFingerprintsV2 extends LockFingerprintsV1 {
19
+ contractSurface: string;
20
+ }
21
+ export type LockFingerprints = LockFingerprintsV1 | LockFingerprintsV2;
22
+ export declare function hasContractSurfaceFingerprint(fingerprints: LockFingerprints): fingerprints is LockFingerprintsV2;
23
+ export declare function defaultLockApproval(): LockApproval;
24
+ export declare function defaultLockDrift(): LockDrift;
25
+ export declare function normalizeLockVersion(value: unknown): 1 | 2 | undefined;
26
+ export declare function normalizeVersionedLockMetadata(record: Record<string, unknown>, version: 1 | 2): {
27
+ approval: LockApproval;
28
+ drift: LockDrift;
29
+ } | undefined;
30
+ //# sourceMappingURL=lock-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-metadata.d.ts","sourceRoot":"","sources":["../../../src/inspect/contract/lock-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;IACjD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAEvE,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,gBAAgB,GAC7B,YAAY,IAAI,kBAAkB,CAEpC;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAOlD;AAED,wBAAgB,gBAAgB,IAAI,SAAS,CAQ5C;AAmBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAKtE;AA+DD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,CAAC,GAAG,CAAC,GACb;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAe1D"}
@@ -0,0 +1,101 @@
1
+ export function hasContractSurfaceFingerprint(fingerprints) {
2
+ return "contractSurface" in fingerprints;
3
+ }
4
+ export function defaultLockApproval() {
5
+ return {
6
+ status: "unverified",
7
+ verifiedAt: null,
8
+ verifiedBy: null,
9
+ baselineRevision: null,
10
+ };
11
+ }
12
+ export function defaultLockDrift() {
13
+ return {
14
+ lastCheckedAt: null,
15
+ metadataChanged: false,
16
+ sourceChanged: false,
17
+ structureChanged: false,
18
+ visualsChanged: false,
19
+ };
20
+ }
21
+ function readRecord(value) {
22
+ return typeof value === "object" && value !== null && !Array.isArray(value)
23
+ ? value
24
+ : undefined;
25
+ }
26
+ function readNullableString(record, key) {
27
+ const field = record[key];
28
+ if (field === null) {
29
+ return null;
30
+ }
31
+ return typeof field === "string" ? field : undefined;
32
+ }
33
+ export function normalizeLockVersion(value) {
34
+ const record = readRecord(value);
35
+ return record?.version === 1 || record?.version === 2
36
+ ? record.version
37
+ : undefined;
38
+ }
39
+ function normalizeLockApproval(value) {
40
+ const record = readRecord(value);
41
+ if (!record) {
42
+ return undefined;
43
+ }
44
+ const status = record.status;
45
+ if (status !== "unverified" &&
46
+ status !== "verified" &&
47
+ status !== "deprecated") {
48
+ return undefined;
49
+ }
50
+ const verifiedAt = readNullableString(record, "verifiedAt");
51
+ const verifiedBy = readNullableString(record, "verifiedBy");
52
+ const baselineRevision = readNullableString(record, "baselineRevision");
53
+ if (verifiedAt === undefined ||
54
+ verifiedBy === undefined ||
55
+ baselineRevision === undefined) {
56
+ return undefined;
57
+ }
58
+ return { status, verifiedAt, verifiedBy, baselineRevision };
59
+ }
60
+ function normalizeLockDrift(value) {
61
+ const record = readRecord(value);
62
+ if (!record) {
63
+ return undefined;
64
+ }
65
+ const lastCheckedAt = record.lastCheckedAt;
66
+ const metadataChanged = record.metadataChanged;
67
+ const sourceChanged = record.sourceChanged;
68
+ const structureChanged = record.structureChanged;
69
+ const visualsChanged = record.visualsChanged;
70
+ if (lastCheckedAt !== null && typeof lastCheckedAt !== "string") {
71
+ return undefined;
72
+ }
73
+ if (typeof metadataChanged !== "boolean" ||
74
+ typeof sourceChanged !== "boolean" ||
75
+ typeof structureChanged !== "boolean" ||
76
+ typeof visualsChanged !== "boolean") {
77
+ return undefined;
78
+ }
79
+ return {
80
+ lastCheckedAt,
81
+ metadataChanged,
82
+ sourceChanged,
83
+ structureChanged,
84
+ visualsChanged,
85
+ };
86
+ }
87
+ export function normalizeVersionedLockMetadata(record, version) {
88
+ if (version === 1) {
89
+ return {
90
+ approval: defaultLockApproval(),
91
+ drift: defaultLockDrift(),
92
+ };
93
+ }
94
+ const approval = normalizeLockApproval(record.approval);
95
+ const drift = normalizeLockDrift(record.drift);
96
+ if (!approval || !drift) {
97
+ return undefined;
98
+ }
99
+ return { approval, drift };
100
+ }
101
+ //# sourceMappingURL=lock-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-metadata.js","sourceRoot":"","sources":["../../../src/inspect/contract/lock-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function stableStringify(value: unknown): string;
2
+ //# sourceMappingURL=stable-stringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-stringify.d.ts","sourceRoot":"","sources":["../../../src/inspect/contract/stable-stringify.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWtD"}
@@ -0,0 +1,14 @@
1
+ import { isRecord } from "../component-set-spec/figma-node.js";
2
+ export function stableStringify(value) {
3
+ if (Array.isArray(value)) {
4
+ return `[${value.map((entry) => stableStringify(entry)).join(",")}]`;
5
+ }
6
+ if (isRecord(value)) {
7
+ return `{${Object.keys(value)
8
+ .sort()
9
+ .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`)
10
+ .join(",")}}`;
11
+ }
12
+ return JSON.stringify(value) ?? "undefined";
13
+ }
14
+ //# sourceMappingURL=stable-stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-stringify.js","sourceRoot":"","sources":["../../../src/inspect/contract/stable-stringify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACvE,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aAC1B,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;aACrE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type ContractFormat } from "./contract-format.js";
2
+ import { type ContractLockDiff } from "./contract-lock.js";
3
+ type ComponentContractVerifyStatus = "ok" | "changed" | "error";
4
+ export interface ComponentContractVerifyResult {
5
+ componentName: string;
6
+ status: ComponentContractVerifyStatus;
7
+ errors: string[];
8
+ changed: ContractLockDiff;
9
+ }
10
+ export interface VerifyComponentContractsOptions {
11
+ token: string;
12
+ contractDir: string;
13
+ componentName?: string;
14
+ contractFormat?: ContractFormat;
15
+ fetchImpl?: typeof fetch;
16
+ }
17
+ export declare function verifyComponentContracts(options: VerifyComponentContractsOptions): Promise<ComponentContractVerifyResult[]>;
18
+ export {};
19
+ //# sourceMappingURL=verify-component-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-component-contract.d.ts","sourceRoot":"","sources":["../../../src/inspect/contract/verify-component-contract.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,gBAAgB,EAQtB,MAAM,oBAAoB,CAAC;AAO5B,KAAK,6BAA6B,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAiJD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAiB1C"}
@@ -0,0 +1,126 @@
1
+ import { readdir } from "node:fs/promises";
2
+ import { filterFileComponentsForComponentSet, getComponentSetByKey, listFileComponents, } from "../../figma-api/index.js";
3
+ import { loadComponentSetContext } from "../component-set-context.js";
4
+ import { FigmaInspectError } from "../errors.js";
5
+ import { detectContractFormat, } from "./contract-format.js";
6
+ import { diffContractLock, isContractLockDiffEmpty, readContractLock, resolveContractLockPath, toLockVariants, } from "./contract-lock.js";
7
+ import { readComponentContractArtifacts, validateComponentContractArtifacts, } from "./contract-schema.js";
8
+ import { fingerprintContractSurface, fingerprintTree } from "./fingerprint.js";
9
+ function lockFileNamePattern() {
10
+ return /^(.+)\.component-set\.lock\.yaml$/;
11
+ }
12
+ async function discoverLockedComponentNames(contractDir) {
13
+ const entries = await readdir(contractDir, { withFileTypes: true });
14
+ const names = [];
15
+ for (const entry of entries) {
16
+ if (!entry.isFile()) {
17
+ continue;
18
+ }
19
+ const match = entry.name.match(lockFileNamePattern());
20
+ if (match?.[1]) {
21
+ names.push(match[1]);
22
+ }
23
+ }
24
+ return names.sort((left, right) => left.localeCompare(right));
25
+ }
26
+ async function fetchLiveLockSnapshot(token, lock, fetchImpl = fetch) {
27
+ const [componentSetMeta, fileComponents, context] = await Promise.all([
28
+ getComponentSetByKey({
29
+ token,
30
+ componentSetKey: lock.source.componentSetKey,
31
+ fetchImpl,
32
+ }),
33
+ listFileComponents({
34
+ token,
35
+ fileKey: lock.source.fileKey,
36
+ fetchImpl,
37
+ }),
38
+ loadComponentSetContext({
39
+ token,
40
+ fileKey: lock.source.fileKey,
41
+ nodeId: lock.source.nodeId,
42
+ componentSet: { kind: "key", value: lock.source.componentSetKey },
43
+ fetchImpl,
44
+ }),
45
+ ]);
46
+ return {
47
+ source: {
48
+ fileKey: componentSetMeta.file_key,
49
+ nodeId: componentSetMeta.node_id,
50
+ nodeType: "COMPONENT_SET",
51
+ ...(lock.source.sourceUrl ? { sourceUrl: lock.source.sourceUrl } : {}),
52
+ componentSetKey: componentSetMeta.key,
53
+ componentSetUpdatedAt: componentSetMeta.updated_at,
54
+ },
55
+ variants: toLockVariants(filterFileComponentsForComponentSet(fileComponents, lock.source.nodeId)),
56
+ treeFingerprint: fingerprintTree(context.tree),
57
+ contractSurfaceFingerprint: fingerprintContractSurface(context.tree),
58
+ };
59
+ }
60
+ async function verifySingleComponentContract(options, componentName) {
61
+ const fetchImpl = options.fetchImpl ?? fetch;
62
+ const errors = [];
63
+ const emptyDiff = {
64
+ source: false,
65
+ tree: false,
66
+ contractSurface: false,
67
+ variants: [],
68
+ addedVariants: [],
69
+ removedVariants: [],
70
+ };
71
+ try {
72
+ const lockPath = resolveContractLockPath(options.contractDir, componentName);
73
+ const lock = await readContractLock(lockPath);
74
+ if (!lock) {
75
+ return {
76
+ componentName,
77
+ status: "error",
78
+ errors: [`Missing lock file: ${lockPath}`],
79
+ changed: emptyDiff,
80
+ };
81
+ }
82
+ const contractFormat = options.contractFormat ??
83
+ (await detectContractFormat(options.contractDir, componentName));
84
+ const artifacts = await readComponentContractArtifacts(options.contractDir, componentName, contractFormat);
85
+ validateComponentContractArtifacts(artifacts, contractFormat);
86
+ const live = await fetchLiveLockSnapshot(options.token, lock, fetchImpl);
87
+ const changed = diffContractLock(lock, live);
88
+ const status = isContractLockDiffEmpty(changed)
89
+ ? "ok"
90
+ : "changed";
91
+ return {
92
+ componentName,
93
+ status,
94
+ errors: [],
95
+ changed,
96
+ };
97
+ }
98
+ catch (error) {
99
+ const message = error instanceof FigmaInspectError
100
+ ? error.message
101
+ : error instanceof Error
102
+ ? error.message
103
+ : String(error);
104
+ errors.push(message);
105
+ return {
106
+ componentName,
107
+ status: "error",
108
+ errors,
109
+ changed: emptyDiff,
110
+ };
111
+ }
112
+ }
113
+ export async function verifyComponentContracts(options) {
114
+ const componentNames = options.componentName
115
+ ? [options.componentName]
116
+ : await discoverLockedComponentNames(options.contractDir);
117
+ if (componentNames.length === 0) {
118
+ throw new FigmaInspectError(`No *.component-set.lock.yaml files found in ${options.contractDir}.`);
119
+ }
120
+ const results = [];
121
+ for (const componentName of componentNames) {
122
+ results.push(await verifySingleComponentContract(options, componentName));
123
+ }
124
+ return results;
125
+ }
126
+ //# sourceMappingURL=verify-component-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-component-contract.js","sourceRoot":"","sources":["../../../src/inspect/contract/verify-component-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare class FigmaInspectError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/inspect/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B"}