fritzkit 0.0.0-stage → 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 (328) hide show
  1. package/.claude-plugin/marketplace.json +12 -0
  2. package/.claude-plugin/plugin.json +13 -0
  3. package/CHANGELOG.md +8 -0
  4. package/LICENSE +21 -0
  5. package/README.md +429 -2
  6. package/dist/cli/commands/doctor.d.ts +4 -0
  7. package/dist/cli/commands/doctor.js +7 -0
  8. package/dist/cli/commands/doctor.js.map +1 -0
  9. package/dist/cli/commands/export.d.ts +17 -0
  10. package/dist/cli/commands/export.js +81 -0
  11. package/dist/cli/commands/export.js.map +1 -0
  12. package/dist/cli/commands/kicad.d.ts +10 -0
  13. package/dist/cli/commands/kicad.js +22 -0
  14. package/dist/cli/commands/kicad.js.map +1 -0
  15. package/dist/cli/commands/parts.d.ts +22 -0
  16. package/dist/cli/commands/parts.js +46 -0
  17. package/dist/cli/commands/parts.js.map +1 -0
  18. package/dist/cli/commands/prune.d.ts +14 -0
  19. package/dist/cli/commands/prune.js +67 -0
  20. package/dist/cli/commands/prune.js.map +1 -0
  21. package/dist/cli/commands/render.d.ts +24 -0
  22. package/dist/cli/commands/render.js +62 -0
  23. package/dist/cli/commands/render.js.map +1 -0
  24. package/dist/cli/commands/schema.d.ts +10 -0
  25. package/dist/cli/commands/schema.js +35 -0
  26. package/dist/cli/commands/schema.js.map +1 -0
  27. package/dist/cli/commands/ui.d.ts +14 -0
  28. package/dist/cli/commands/ui.js +67 -0
  29. package/dist/cli/commands/ui.js.map +1 -0
  30. package/dist/cli/commands/validate.d.ts +24 -0
  31. package/dist/cli/commands/validate.js +91 -0
  32. package/dist/cli/commands/validate.js.map +1 -0
  33. package/dist/cli/context.d.ts +81 -0
  34. package/dist/cli/context.js +139 -0
  35. package/dist/cli/context.js.map +1 -0
  36. package/dist/cli/main.d.ts +2 -0
  37. package/dist/cli/main.js +8 -0
  38. package/dist/cli/main.js.map +1 -0
  39. package/dist/cli/program.d.ts +21 -0
  40. package/dist/cli/program.js +158 -0
  41. package/dist/cli/program.js.map +1 -0
  42. package/dist/cli/raster.d.ts +4 -0
  43. package/dist/cli/raster.js +9 -0
  44. package/dist/cli/raster.js.map +1 -0
  45. package/dist/core/compile/breadboard-util.d.ts +12 -0
  46. package/dist/core/compile/breadboard-util.js +107 -0
  47. package/dist/core/compile/breadboard-util.js.map +1 -0
  48. package/dist/core/compile/breadboard.d.ts +60 -0
  49. package/dist/core/compile/breadboard.js +513 -0
  50. package/dist/core/compile/breadboard.js.map +1 -0
  51. package/dist/core/compile/fzp.d.ts +12 -0
  52. package/dist/core/compile/fzp.js +183 -0
  53. package/dist/core/compile/fzp.js.map +1 -0
  54. package/dist/core/compile/icon.d.ts +17 -0
  55. package/dist/core/compile/icon.js +27 -0
  56. package/dist/core/compile/icon.js.map +1 -0
  57. package/dist/core/compile/index.d.ts +4 -0
  58. package/dist/core/compile/index.js +62 -0
  59. package/dist/core/compile/index.js.map +1 -0
  60. package/dist/core/compile/pcb.d.ts +39 -0
  61. package/dist/core/compile/pcb.js +164 -0
  62. package/dist/core/compile/pcb.js.map +1 -0
  63. package/dist/core/compile/schematic.d.ts +69 -0
  64. package/dist/core/compile/schematic.js +240 -0
  65. package/dist/core/compile/schematic.js.map +1 -0
  66. package/dist/core/compile/style.d.ts +52 -0
  67. package/dist/core/compile/style.js +72 -0
  68. package/dist/core/compile/style.js.map +1 -0
  69. package/dist/core/compile/types.d.ts +50 -0
  70. package/dist/core/compile/types.js +15 -0
  71. package/dist/core/compile/types.js.map +1 -0
  72. package/dist/core/export/bin.d.ts +61 -0
  73. package/dist/core/export/bin.js +221 -0
  74. package/dist/core/export/bin.js.map +1 -0
  75. package/dist/core/export/fzpz.d.ts +37 -0
  76. package/dist/core/export/fzpz.js +121 -0
  77. package/dist/core/export/fzpz.js.map +1 -0
  78. package/dist/core/export/index.d.ts +5 -0
  79. package/dist/core/export/index.js +6 -0
  80. package/dist/core/export/index.js.map +1 -0
  81. package/dist/core/export/install.d.ts +77 -0
  82. package/dist/core/export/install.js +183 -0
  83. package/dist/core/export/install.js.map +1 -0
  84. package/dist/core/export/prune.d.ts +72 -0
  85. package/dist/core/export/prune.js +165 -0
  86. package/dist/core/export/prune.js.map +1 -0
  87. package/dist/core/fritzing.d.ts +22 -0
  88. package/dist/core/fritzing.js +77 -0
  89. package/dist/core/fritzing.js.map +1 -0
  90. package/dist/core/identity.d.ts +29 -0
  91. package/dist/core/identity.js +70 -0
  92. package/dist/core/identity.js.map +1 -0
  93. package/dist/core/image/bbox.d.ts +27 -0
  94. package/dist/core/image/bbox.js +24 -0
  95. package/dist/core/image/bbox.js.map +1 -0
  96. package/dist/core/image/index.d.ts +8 -0
  97. package/dist/core/image/index.js +9 -0
  98. package/dist/core/image/index.js.map +1 -0
  99. package/dist/core/image/key.d.ts +72 -0
  100. package/dist/core/image/key.js +317 -0
  101. package/dist/core/image/key.js.map +1 -0
  102. package/dist/core/image/prepare.d.ts +31 -0
  103. package/dist/core/image/prepare.js +98 -0
  104. package/dist/core/image/prepare.js.map +1 -0
  105. package/dist/core/image/remover.d.ts +17 -0
  106. package/dist/core/image/remover.js +51 -0
  107. package/dist/core/image/remover.js.map +1 -0
  108. package/dist/core/index.d.ts +16 -0
  109. package/dist/core/index.js +17 -0
  110. package/dist/core/index.js.map +1 -0
  111. package/dist/core/kicad/footprint.d.ts +104 -0
  112. package/dist/core/kicad/footprint.js +317 -0
  113. package/dist/core/kicad/footprint.js.map +1 -0
  114. package/dist/core/kicad/index.d.ts +25 -0
  115. package/dist/core/kicad/index.js +197 -0
  116. package/dist/core/kicad/index.js.map +1 -0
  117. package/dist/core/kicad/sexpr.d.ts +35 -0
  118. package/dist/core/kicad/sexpr.js +163 -0
  119. package/dist/core/kicad/sexpr.js.map +1 -0
  120. package/dist/core/resolve.d.ts +113 -0
  121. package/dist/core/resolve.js +301 -0
  122. package/dist/core/resolve.js.map +1 -0
  123. package/dist/core/schema/part.d.ts +995 -0
  124. package/dist/core/schema/part.js +278 -0
  125. package/dist/core/schema/part.js.map +1 -0
  126. package/dist/core/schema/part.schema.json +1122 -0
  127. package/dist/core/svg.d.ts +20 -0
  128. package/dist/core/svg.js +56 -0
  129. package/dist/core/svg.js.map +1 -0
  130. package/dist/core/units.d.ts +28 -0
  131. package/dist/core/units.js +42 -0
  132. package/dist/core/units.js.map +1 -0
  133. package/dist/core/validate/checker.d.ts +46 -0
  134. package/dist/core/validate/checker.js +142 -0
  135. package/dist/core/validate/checker.js.map +1 -0
  136. package/dist/core/validate/doctor.d.ts +25 -0
  137. package/dist/core/validate/doctor.js +156 -0
  138. package/dist/core/validate/doctor.js.map +1 -0
  139. package/dist/core/validate/explain.d.ts +10 -0
  140. package/dist/core/validate/explain.js +135 -0
  141. package/dist/core/validate/explain.js.map +1 -0
  142. package/dist/core/validate/index.d.ts +21 -0
  143. package/dist/core/validate/index.js +96 -0
  144. package/dist/core/validate/index.js.map +1 -0
  145. package/dist/core/validate/structural.d.ts +74 -0
  146. package/dist/core/validate/structural.js +664 -0
  147. package/dist/core/validate/structural.js.map +1 -0
  148. package/dist/core/workspace.d.ts +69 -0
  149. package/dist/core/workspace.js +213 -0
  150. package/dist/core/workspace.js.map +1 -0
  151. package/dist/mcp/jsonpatch.d.ts +30 -0
  152. package/dist/mcp/jsonpatch.js +145 -0
  153. package/dist/mcp/jsonpatch.js.map +1 -0
  154. package/dist/mcp/main.d.ts +2 -0
  155. package/dist/mcp/main.js +5 -0
  156. package/dist/mcp/main.js.map +1 -0
  157. package/dist/mcp/server.d.ts +28 -0
  158. package/dist/mcp/server.js +310 -0
  159. package/dist/mcp/server.js.map +1 -0
  160. package/dist/server/api.d.ts +72 -0
  161. package/dist/server/api.js +507 -0
  162. package/dist/server/api.js.map +1 -0
  163. package/dist/server/events.d.ts +28 -0
  164. package/dist/server/events.js +134 -0
  165. package/dist/server/events.js.map +1 -0
  166. package/dist/server/http.d.ts +36 -0
  167. package/dist/server/http.js +127 -0
  168. package/dist/server/http.js.map +1 -0
  169. package/dist/server/index.d.ts +65 -0
  170. package/dist/server/index.js +193 -0
  171. package/dist/server/index.js.map +1 -0
  172. package/dist/ui/assets/index-DLU8opyI.js +63 -0
  173. package/dist/ui/assets/index-GhUA-T3b.css +1 -0
  174. package/dist/ui/index.html +14 -0
  175. package/package.json +89 -4
  176. package/skills/fritzkit/SKILL.md +690 -0
  177. package/skills/fritzkit/reference/examples.md +275 -0
  178. package/skills/fritzkit/reference/part-json.md +333 -0
  179. package/skills/fritzkit/scripts/measure.py +197 -0
  180. package/tools/fzp-checker/.python-version +1 -0
  181. package/tools/fzp-checker/README.md +45 -0
  182. package/tools/fzp-checker/check_fzp.py +48 -0
  183. package/tools/fzp-checker/pyproject.toml +26 -0
  184. package/tools/fzp-checker/uv.lock +266 -0
  185. package/tools/fzp-checker/vendor/LICENSE.txt +8 -0
  186. package/tools/fzp-checker/vendor/UPSTREAM.md +25 -0
  187. package/tools/fzp-checker/vendor/fzp_checker.py +14 -0
  188. package/tools/fzp-checker/vendor/scripts/checks/__init__.py +26 -0
  189. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/__init__.cpython-313.pyc +0 -0
  190. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/check_missing_leg_ids.cpython-313.pyc +0 -0
  191. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/connector_numbering.cpython-313.pyc +0 -0
  192. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/fzp_checker_runner.cpython-313.pyc +0 -0
  193. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/fzp_checkers.cpython-313.pyc +0 -0
  194. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/fzp_svg_checkers.cpython-313.pyc +0 -0
  195. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/fzp_utils.cpython-313.pyc +0 -0
  196. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/svg_checkers.cpython-313.pyc +0 -0
  197. package/tools/fzp-checker/vendor/scripts/checks/__pycache__/svg_utils.cpython-313.pyc +0 -0
  198. package/tools/fzp-checker/vendor/scripts/checks/check_missing_leg_ids.py +44 -0
  199. package/tools/fzp-checker/vendor/scripts/checks/checkascii.py +27 -0
  200. package/tools/fzp-checker/vendor/scripts/checks/checkcase.py +156 -0
  201. package/tools/fzp-checker/vendor/scripts/checks/checkcopies.py +104 -0
  202. package/tools/fzp-checker/vendor/scripts/checks/connector_numbering.py +79 -0
  203. package/tools/fzp-checker/vendor/scripts/checks/connectors_misnumbered.py +228 -0
  204. package/tools/fzp-checker/vendor/scripts/checks/explain_errors.md +95 -0
  205. package/tools/fzp-checker/vendor/scripts/checks/fzp_checker_runner.py +717 -0
  206. package/tools/fzp-checker/vendor/scripts/checks/fzp_checkers.py +1069 -0
  207. package/tools/fzp-checker/vendor/scripts/checks/fzp_svg_checkers.py +62 -0
  208. package/tools/fzp-checker/vendor/scripts/checks/fzp_utils.py +222 -0
  209. package/tools/fzp-checker/vendor/scripts/checks/inspector_fc51.png +0 -0
  210. package/tools/fzp-checker/vendor/scripts/checks/invisibleconnectors.py +118 -0
  211. package/tools/fzp-checker/vendor/scripts/checks/nolayeridcheck.txt +758 -0
  212. package/tools/fzp-checker/vendor/scripts/checks/requirements.txt +3 -0
  213. package/tools/fzp-checker/vendor/scripts/checks/svg_checkers.py +953 -0
  214. package/tools/fzp-checker/vendor/scripts/checks/svg_utils.py +96 -0
  215. package/tools/fzp-checker/vendor/scripts/checks/test_checkers.py +839 -0
  216. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/author_missing.fzp.test +3 -0
  217. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/author_present.fzp.test +4 -0
  218. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/buses_missing_id.fzp.test +8 -0
  219. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/buses_missing_node_members.fzp.test +7 -0
  220. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/buses_present_valid.fzp.test +8 -0
  221. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/connector_layers_missing_attributes.fzp.test +16 -0
  222. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/connector_layers_present_valid.fzp.test +14 -0
  223. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/connector_numbering_invalid.fzp.test +70 -0
  224. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/connector_numbering_valid.fzp.test +70 -0
  225. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/connector_refs_valid.fzp.test +53 -0
  226. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_invalid_mixed.fzp.test +11 -0
  227. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_invalid_silkscreen_nested.fzp.test +11 -0
  228. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_invalid_style_attr.fzp.test +11 -0
  229. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_invalid_white_stroke.fzp.test +11 -0
  230. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_invalid_wrong_color.fzp.test +11 -0
  231. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_inherited.fzp.test +11 -0
  232. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_legacy.fzp.test +12 -0
  233. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_nested_copper.fzp.test +12 -0
  234. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_none.fzp.test +11 -0
  235. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_standard.fzp.test +12 -0
  236. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/copper_color_valid_uppercase.fzp.test +11 -0
  237. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/css_connector.fzp.test +100 -0
  238. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/description_missing.fzp.test +3 -0
  239. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/description_present.fzp.test +4 -0
  240. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/duplicate_ids.fzp.test +27 -0
  241. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/family_property_missing.fzp.test +6 -0
  242. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/family_property_present_valid.fzp.test +6 -0
  243. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/font_size.fzp.test +46 -0
  244. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/fritzing_version_invalid_format.fzp.test +4 -0
  245. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/fritzing_version_missing.fzp.test +4 -0
  246. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/fritzing_version_present_valid.fzp.test +4 -0
  247. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/gorn_absent.fzp.test +15 -0
  248. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/gorn_present.fzp.test +15 -0
  249. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/hybrid_connectors.fzp.test +232 -0
  250. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/invalid_xml.fzp.test +12 -0
  251. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/layer_ids_match.fzp.test +29 -0
  252. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/layer_ids_mismatch.fzp.test +30 -0
  253. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/layer_nesting_invalid.fzp.test +11 -0
  254. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/layer_nesting_valid.fzp.test +11 -0
  255. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/matrix_transform.fzp.test +8 -0
  256. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/missing_connector_refs.fzp.test +63 -0
  257. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/missing_leg_ids.fzp.test +34 -0
  258. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_missing.fzp.test +4 -0
  259. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_non_alnum.fzp.test +4 -0
  260. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_present.fzp.test +4 -0
  261. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_special_chars_absent.fzp.test +4 -0
  262. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_special_chars_present.fzp.test +4 -0
  263. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/module_id_too_short.fzp.test +4 -0
  264. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/no_layer_invalid.fzp.test +19 -0
  265. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/no_layer_namedview.fzp.test +19 -0
  266. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/no_layer_valid.fzp.test +19 -0
  267. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/pcb_only.fzp.test +48 -0
  268. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/property_fields_missing_name.fzp.test +6 -0
  269. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/property_fields_missing_value.fzp.test +6 -0
  270. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/property_fields_present.fzp.test +6 -0
  271. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/required_tags_missing.fzp.test +3 -0
  272. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/required_tags_present.fzp.test +11 -0
  273. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/stroke_test.fzp.test +60 -0
  274. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/template_svgs.fzp.test +35 -0
  275. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/title_missing.fzp.test +3 -0
  276. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/title_present.fzp.test +4 -0
  277. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/unique_ids.fzp.test +27 -0
  278. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/unique_property_names_duplicates.fzp.test +7 -0
  279. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/unique_property_names_unique.fzp.test +7 -0
  280. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/valid_xml.fzp.test +249 -0
  281. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/version_invalid_format.fzp.test +4 -0
  282. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/version_missing.fzp.test +3 -0
  283. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/version_present_valid.fzp.test +4 -0
  284. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/views_missing.fzp.test +3 -0
  285. package/tools/fzp-checker/vendor/scripts/checks/test_data/core/views_present.fzp.test +8 -0
  286. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/connector_refs_valid_breadboard.svg +7 -0
  287. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/duplicate_ids_breadboard.svg +13 -0
  288. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/gorn_absent_breadboard.svg +7 -0
  289. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/gorn_present_breadboard.svg +7 -0
  290. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/hybrid_connectors_breadboard.svg +102 -0
  291. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/layer_nesting_invalid.svg +13 -0
  292. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/layer_nesting_valid.svg +13 -0
  293. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/matrix_transform.svg +11 -0
  294. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/missing_connector_refs_breadboard.svg +8 -0
  295. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/missing_leg_ids_breadboard.svg +9 -0
  296. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/test_layer_ids_match_breadboard.svg +9 -0
  297. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/test_layer_ids_mismatch_breadboard.svg +9 -0
  298. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/breadboard/unique_ids_breadboard.svg +13 -0
  299. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/icon/hybrid_connectors_icon.svg +78 -0
  300. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/icon/no_layer_invalid.svg +4 -0
  301. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/icon/no_layer_namedview.svg +9 -0
  302. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/icon/no_layer_valid.svg +7 -0
  303. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/icon/plain_pcb.svg +10 -0
  304. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/connector_refs_valid_pcb.svg +10 -0
  305. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_invalid_mixed.svg +8 -0
  306. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_invalid_silkscreen_nested.svg +10 -0
  307. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_invalid_style_attr.svg +6 -0
  308. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_invalid_white_stroke.svg +6 -0
  309. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_invalid_wrong_color.svg +6 -0
  310. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_inherited.svg +7 -0
  311. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_legacy.svg +10 -0
  312. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_nested_copper.svg +9 -0
  313. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_none.svg +7 -0
  314. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_standard.svg +10 -0
  315. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/copper_color_valid_uppercase.svg +7 -0
  316. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/css_connector.svg +25 -0
  317. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/font_size.svg +54 -0
  318. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/hybrid_connectors_pcb.svg +35 -0
  319. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/missing_connector_refs_pcb.svg +14 -0
  320. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/pcb-arduino-shield.svg +25 -0
  321. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/stroke_test.svg +12 -0
  322. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/test_layer_ids_match_pcb.svg +12 -0
  323. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/pcb/test_layer_ids_mismatch_pcb.svg +12 -0
  324. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/schematic/connector_refs_valid_schematic.svg +7 -0
  325. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/schematic/hybrid_connectors_schematic.svg +59 -0
  326. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/schematic/missing_connector_refs_schematic.svg +8 -0
  327. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/schematic/test_layer_ids_match_schematic.svg +6 -0
  328. package/tools/fzp-checker/vendor/scripts/checks/test_data/svg/core/schematic/test_layer_ids_mismatch_schematic.svg +6 -0
@@ -0,0 +1,1122 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/pmaxhogan/fritzkit/main/src/core/schema/part.schema.json",
4
+ "title": "fritzkit part.json",
5
+ "description": "A fritzkit part spec. All lengths are millimetres; origin is the top-left corner of the outline, y down.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string"
10
+ },
11
+ "slug": {
12
+ "type": "string",
13
+ "minLength": 3,
14
+ "maxLength": 60,
15
+ "pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
16
+ },
17
+ "title": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 120
21
+ },
22
+ "version": {
23
+ "default": 1,
24
+ "type": "integer",
25
+ "minimum": 1,
26
+ "maximum": 9007199254740991
27
+ },
28
+ "family": {
29
+ "type": "string",
30
+ "minLength": 1,
31
+ "maxLength": 60
32
+ },
33
+ "label": {
34
+ "default": "A",
35
+ "type": "string",
36
+ "minLength": 1,
37
+ "maxLength": 4
38
+ },
39
+ "author": {
40
+ "default": "fritzkit",
41
+ "type": "string",
42
+ "maxLength": 80
43
+ },
44
+ "tags": {
45
+ "default": [],
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string",
49
+ "minLength": 1,
50
+ "maxLength": 30
51
+ }
52
+ },
53
+ "description": {
54
+ "default": "",
55
+ "type": "string",
56
+ "maxLength": 4000
57
+ },
58
+ "sources": {
59
+ "default": [],
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string",
63
+ "format": "uri"
64
+ }
65
+ },
66
+ "properties": {
67
+ "default": {},
68
+ "type": "object",
69
+ "propertyNames": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "additionalProperties": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ }
77
+ },
78
+ "outline": {
79
+ "type": "object",
80
+ "properties": {
81
+ "widthMm": {
82
+ "type": "number",
83
+ "exclusiveMinimum": 0
84
+ },
85
+ "heightMm": {
86
+ "type": "number",
87
+ "exclusiveMinimum": 0
88
+ },
89
+ "shape": {
90
+ "default": "rounded",
91
+ "type": "string",
92
+ "enum": [
93
+ "rect",
94
+ "rounded",
95
+ "custom"
96
+ ]
97
+ },
98
+ "cornerRadiusMm": {
99
+ "default": 1,
100
+ "type": "number",
101
+ "minimum": 0
102
+ },
103
+ "pathMm": {
104
+ "type": "string"
105
+ },
106
+ "holes": {
107
+ "default": [],
108
+ "type": "array",
109
+ "items": {
110
+ "type": "object",
111
+ "properties": {
112
+ "xMm": {
113
+ "type": "number"
114
+ },
115
+ "yMm": {
116
+ "type": "number"
117
+ },
118
+ "dMm": {
119
+ "type": "number",
120
+ "exclusiveMinimum": 0
121
+ }
122
+ },
123
+ "required": [
124
+ "xMm",
125
+ "yMm",
126
+ "dMm"
127
+ ],
128
+ "additionalProperties": false
129
+ }
130
+ }
131
+ },
132
+ "required": [
133
+ "widthMm",
134
+ "heightMm"
135
+ ],
136
+ "additionalProperties": false
137
+ },
138
+ "artwork": {
139
+ "default": {},
140
+ "type": "object",
141
+ "properties": {
142
+ "style": {
143
+ "default": "vector",
144
+ "type": "string",
145
+ "enum": [
146
+ "vector",
147
+ "photo"
148
+ ]
149
+ },
150
+ "boardColor": {
151
+ "default": "#1B7F3B",
152
+ "type": "string",
153
+ "pattern": "^#[0-9A-Fa-f]{6}$"
154
+ },
155
+ "silkColor": {
156
+ "default": "#FFFFFF",
157
+ "type": "string",
158
+ "pattern": "^#[0-9A-Fa-f]{6}$"
159
+ },
160
+ "silkscreen": {
161
+ "default": [],
162
+ "type": "array",
163
+ "items": {
164
+ "oneOf": [
165
+ {
166
+ "type": "object",
167
+ "properties": {
168
+ "kind": {
169
+ "type": "string",
170
+ "const": "text"
171
+ },
172
+ "text": {
173
+ "type": "string",
174
+ "minLength": 1,
175
+ "maxLength": 80
176
+ },
177
+ "xMm": {
178
+ "type": "number"
179
+ },
180
+ "yMm": {
181
+ "type": "number"
182
+ },
183
+ "sizeMm": {
184
+ "default": 1.2,
185
+ "type": "number",
186
+ "exclusiveMinimum": 0
187
+ },
188
+ "color": {
189
+ "default": "#FFFFFF",
190
+ "type": "string",
191
+ "pattern": "^#[0-9A-Fa-f]{6}$"
192
+ },
193
+ "anchor": {
194
+ "default": "middle",
195
+ "type": "string",
196
+ "enum": [
197
+ "start",
198
+ "middle",
199
+ "end"
200
+ ]
201
+ },
202
+ "rotate": {
203
+ "default": 0,
204
+ "type": "number"
205
+ }
206
+ },
207
+ "required": [
208
+ "kind",
209
+ "text",
210
+ "xMm",
211
+ "yMm"
212
+ ],
213
+ "additionalProperties": false
214
+ },
215
+ {
216
+ "type": "object",
217
+ "properties": {
218
+ "kind": {
219
+ "type": "string",
220
+ "const": "rect"
221
+ },
222
+ "xMm": {
223
+ "type": "number"
224
+ },
225
+ "yMm": {
226
+ "type": "number"
227
+ },
228
+ "wMm": {
229
+ "type": "number",
230
+ "exclusiveMinimum": 0
231
+ },
232
+ "hMm": {
233
+ "type": "number",
234
+ "exclusiveMinimum": 0
235
+ },
236
+ "color": {
237
+ "default": "#222222",
238
+ "type": "string",
239
+ "pattern": "^#[0-9A-Fa-f]{6}$"
240
+ },
241
+ "rxMm": {
242
+ "default": 0,
243
+ "type": "number",
244
+ "minimum": 0
245
+ },
246
+ "note": {
247
+ "type": "string",
248
+ "maxLength": 120
249
+ }
250
+ },
251
+ "required": [
252
+ "kind",
253
+ "xMm",
254
+ "yMm",
255
+ "wMm",
256
+ "hMm"
257
+ ],
258
+ "additionalProperties": false
259
+ },
260
+ {
261
+ "type": "object",
262
+ "properties": {
263
+ "kind": {
264
+ "type": "string",
265
+ "const": "circle"
266
+ },
267
+ "xMm": {
268
+ "type": "number"
269
+ },
270
+ "yMm": {
271
+ "type": "number"
272
+ },
273
+ "dMm": {
274
+ "type": "number",
275
+ "exclusiveMinimum": 0
276
+ },
277
+ "color": {
278
+ "default": "#222222",
279
+ "type": "string",
280
+ "pattern": "^#[0-9A-Fa-f]{6}$"
281
+ },
282
+ "note": {
283
+ "type": "string",
284
+ "maxLength": 120
285
+ }
286
+ },
287
+ "required": [
288
+ "kind",
289
+ "xMm",
290
+ "yMm",
291
+ "dMm"
292
+ ],
293
+ "additionalProperties": false
294
+ },
295
+ {
296
+ "type": "object",
297
+ "properties": {
298
+ "kind": {
299
+ "type": "string",
300
+ "const": "line"
301
+ },
302
+ "x1Mm": {
303
+ "type": "number"
304
+ },
305
+ "y1Mm": {
306
+ "type": "number"
307
+ },
308
+ "x2Mm": {
309
+ "type": "number"
310
+ },
311
+ "y2Mm": {
312
+ "type": "number"
313
+ },
314
+ "widthMm": {
315
+ "default": 0.2,
316
+ "type": "number",
317
+ "exclusiveMinimum": 0
318
+ },
319
+ "color": {
320
+ "default": "#FFFFFF",
321
+ "type": "string",
322
+ "pattern": "^#[0-9A-Fa-f]{6}$"
323
+ }
324
+ },
325
+ "required": [
326
+ "kind",
327
+ "x1Mm",
328
+ "y1Mm",
329
+ "x2Mm",
330
+ "y2Mm"
331
+ ],
332
+ "additionalProperties": false
333
+ }
334
+ ]
335
+ }
336
+ },
337
+ "components": {
338
+ "default": [],
339
+ "type": "array",
340
+ "items": {
341
+ "oneOf": [
342
+ {
343
+ "type": "object",
344
+ "properties": {
345
+ "kind": {
346
+ "type": "string",
347
+ "const": "text"
348
+ },
349
+ "text": {
350
+ "type": "string",
351
+ "minLength": 1,
352
+ "maxLength": 80
353
+ },
354
+ "xMm": {
355
+ "type": "number"
356
+ },
357
+ "yMm": {
358
+ "type": "number"
359
+ },
360
+ "sizeMm": {
361
+ "default": 1.2,
362
+ "type": "number",
363
+ "exclusiveMinimum": 0
364
+ },
365
+ "color": {
366
+ "default": "#FFFFFF",
367
+ "type": "string",
368
+ "pattern": "^#[0-9A-Fa-f]{6}$"
369
+ },
370
+ "anchor": {
371
+ "default": "middle",
372
+ "type": "string",
373
+ "enum": [
374
+ "start",
375
+ "middle",
376
+ "end"
377
+ ]
378
+ },
379
+ "rotate": {
380
+ "default": 0,
381
+ "type": "number"
382
+ }
383
+ },
384
+ "required": [
385
+ "kind",
386
+ "text",
387
+ "xMm",
388
+ "yMm"
389
+ ],
390
+ "additionalProperties": false
391
+ },
392
+ {
393
+ "type": "object",
394
+ "properties": {
395
+ "kind": {
396
+ "type": "string",
397
+ "const": "rect"
398
+ },
399
+ "xMm": {
400
+ "type": "number"
401
+ },
402
+ "yMm": {
403
+ "type": "number"
404
+ },
405
+ "wMm": {
406
+ "type": "number",
407
+ "exclusiveMinimum": 0
408
+ },
409
+ "hMm": {
410
+ "type": "number",
411
+ "exclusiveMinimum": 0
412
+ },
413
+ "color": {
414
+ "default": "#222222",
415
+ "type": "string",
416
+ "pattern": "^#[0-9A-Fa-f]{6}$"
417
+ },
418
+ "rxMm": {
419
+ "default": 0,
420
+ "type": "number",
421
+ "minimum": 0
422
+ },
423
+ "note": {
424
+ "type": "string",
425
+ "maxLength": 120
426
+ }
427
+ },
428
+ "required": [
429
+ "kind",
430
+ "xMm",
431
+ "yMm",
432
+ "wMm",
433
+ "hMm"
434
+ ],
435
+ "additionalProperties": false
436
+ },
437
+ {
438
+ "type": "object",
439
+ "properties": {
440
+ "kind": {
441
+ "type": "string",
442
+ "const": "circle"
443
+ },
444
+ "xMm": {
445
+ "type": "number"
446
+ },
447
+ "yMm": {
448
+ "type": "number"
449
+ },
450
+ "dMm": {
451
+ "type": "number",
452
+ "exclusiveMinimum": 0
453
+ },
454
+ "color": {
455
+ "default": "#222222",
456
+ "type": "string",
457
+ "pattern": "^#[0-9A-Fa-f]{6}$"
458
+ },
459
+ "note": {
460
+ "type": "string",
461
+ "maxLength": 120
462
+ }
463
+ },
464
+ "required": [
465
+ "kind",
466
+ "xMm",
467
+ "yMm",
468
+ "dMm"
469
+ ],
470
+ "additionalProperties": false
471
+ },
472
+ {
473
+ "type": "object",
474
+ "properties": {
475
+ "kind": {
476
+ "type": "string",
477
+ "const": "line"
478
+ },
479
+ "x1Mm": {
480
+ "type": "number"
481
+ },
482
+ "y1Mm": {
483
+ "type": "number"
484
+ },
485
+ "x2Mm": {
486
+ "type": "number"
487
+ },
488
+ "y2Mm": {
489
+ "type": "number"
490
+ },
491
+ "widthMm": {
492
+ "default": 0.2,
493
+ "type": "number",
494
+ "exclusiveMinimum": 0
495
+ },
496
+ "color": {
497
+ "default": "#FFFFFF",
498
+ "type": "string",
499
+ "pattern": "^#[0-9A-Fa-f]{6}$"
500
+ }
501
+ },
502
+ "required": [
503
+ "kind",
504
+ "x1Mm",
505
+ "y1Mm",
506
+ "x2Mm",
507
+ "y2Mm"
508
+ ],
509
+ "additionalProperties": false
510
+ }
511
+ ]
512
+ }
513
+ },
514
+ "photo": {
515
+ "type": "object",
516
+ "properties": {
517
+ "src": {
518
+ "type": "string",
519
+ "minLength": 1
520
+ },
521
+ "crop": {
522
+ "type": "array",
523
+ "prefixItems": [
524
+ {
525
+ "type": "number"
526
+ },
527
+ {
528
+ "type": "number"
529
+ },
530
+ {
531
+ "type": "number"
532
+ },
533
+ {
534
+ "type": "number"
535
+ }
536
+ ],
537
+ "items": false,
538
+ "minItems": 4,
539
+ "maxItems": 4
540
+ },
541
+ "rotate": {
542
+ "default": 0,
543
+ "anyOf": [
544
+ {
545
+ "type": "number",
546
+ "const": 0
547
+ },
548
+ {
549
+ "type": "number",
550
+ "const": 90
551
+ },
552
+ {
553
+ "type": "number",
554
+ "const": 180
555
+ },
556
+ {
557
+ "type": "number",
558
+ "const": 270
559
+ }
560
+ ]
561
+ },
562
+ "removeBackground": {
563
+ "default": true,
564
+ "type": "boolean"
565
+ },
566
+ "opacity": {
567
+ "default": 1,
568
+ "type": "number",
569
+ "minimum": 0,
570
+ "maximum": 1
571
+ }
572
+ },
573
+ "required": [
574
+ "src"
575
+ ],
576
+ "additionalProperties": false
577
+ }
578
+ },
579
+ "additionalProperties": false
580
+ },
581
+ "pins": {
582
+ "default": [],
583
+ "type": "array",
584
+ "items": {
585
+ "type": "object",
586
+ "properties": {
587
+ "key": {
588
+ "type": "string",
589
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
590
+ },
591
+ "name": {
592
+ "type": "string",
593
+ "minLength": 1,
594
+ "maxLength": 40
595
+ },
596
+ "label": {
597
+ "type": "string",
598
+ "maxLength": 16
599
+ },
600
+ "description": {
601
+ "type": "string",
602
+ "maxLength": 400
603
+ },
604
+ "role": {
605
+ "default": "io",
606
+ "type": "string",
607
+ "enum": [
608
+ "power",
609
+ "gnd",
610
+ "io",
611
+ "analog",
612
+ "pwm",
613
+ "i2c",
614
+ "spi",
615
+ "uart",
616
+ "usb",
617
+ "clock",
618
+ "reset",
619
+ "enable",
620
+ "nc",
621
+ "other"
622
+ ]
623
+ },
624
+ "type": {
625
+ "default": "female",
626
+ "type": "string",
627
+ "enum": [
628
+ "male",
629
+ "female",
630
+ "pad",
631
+ "wire"
632
+ ]
633
+ },
634
+ "xMm": {
635
+ "type": "number"
636
+ },
637
+ "yMm": {
638
+ "type": "number"
639
+ },
640
+ "pad": {
641
+ "default": {
642
+ "shape": "rect",
643
+ "wMm": 2,
644
+ "hMm": 2,
645
+ "holeMm": 1
646
+ },
647
+ "type": "object",
648
+ "properties": {
649
+ "shape": {
650
+ "default": "rect",
651
+ "type": "string",
652
+ "enum": [
653
+ "rect",
654
+ "round",
655
+ "oval"
656
+ ]
657
+ },
658
+ "wMm": {
659
+ "type": "number",
660
+ "exclusiveMinimum": 0
661
+ },
662
+ "hMm": {
663
+ "type": "number",
664
+ "exclusiveMinimum": 0
665
+ },
666
+ "holeMm": {
667
+ "type": "number",
668
+ "minimum": 0
669
+ },
670
+ "smd": {
671
+ "type": "boolean"
672
+ }
673
+ },
674
+ "required": [
675
+ "wMm",
676
+ "hMm"
677
+ ],
678
+ "additionalProperties": false
679
+ },
680
+ "snap": {
681
+ "type": "boolean"
682
+ }
683
+ },
684
+ "required": [
685
+ "key",
686
+ "name",
687
+ "xMm",
688
+ "yMm"
689
+ ],
690
+ "additionalProperties": false
691
+ }
692
+ },
693
+ "headers": {
694
+ "default": [],
695
+ "type": "array",
696
+ "items": {
697
+ "type": "object",
698
+ "properties": {
699
+ "key": {
700
+ "type": "string",
701
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
702
+ },
703
+ "kind": {
704
+ "default": "male",
705
+ "type": "string",
706
+ "enum": [
707
+ "male",
708
+ "female",
709
+ "castellated"
710
+ ]
711
+ },
712
+ "pitchMm": {
713
+ "default": 2.54,
714
+ "type": "number",
715
+ "exclusiveMinimum": 0
716
+ },
717
+ "rows": {
718
+ "default": 1,
719
+ "type": "integer",
720
+ "minimum": 1,
721
+ "maximum": 8
722
+ },
723
+ "cols": {
724
+ "type": "integer",
725
+ "minimum": 1,
726
+ "maximum": 64
727
+ },
728
+ "xMm": {
729
+ "type": "number"
730
+ },
731
+ "yMm": {
732
+ "type": "number"
733
+ },
734
+ "orientation": {
735
+ "default": "horizontal",
736
+ "type": "string",
737
+ "enum": [
738
+ "horizontal",
739
+ "vertical"
740
+ ]
741
+ },
742
+ "pins": {
743
+ "type": "array",
744
+ "items": {
745
+ "anyOf": [
746
+ {
747
+ "type": "object",
748
+ "properties": {
749
+ "key": {
750
+ "type": "string",
751
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
752
+ },
753
+ "name": {
754
+ "type": "string",
755
+ "minLength": 1,
756
+ "maxLength": 40
757
+ },
758
+ "label": {
759
+ "type": "string",
760
+ "maxLength": 16
761
+ },
762
+ "description": {
763
+ "type": "string",
764
+ "maxLength": 400
765
+ },
766
+ "role": {
767
+ "default": "io",
768
+ "type": "string",
769
+ "enum": [
770
+ "power",
771
+ "gnd",
772
+ "io",
773
+ "analog",
774
+ "pwm",
775
+ "i2c",
776
+ "spi",
777
+ "uart",
778
+ "usb",
779
+ "clock",
780
+ "reset",
781
+ "enable",
782
+ "nc",
783
+ "other"
784
+ ]
785
+ }
786
+ },
787
+ "required": [
788
+ "key",
789
+ "name"
790
+ ],
791
+ "additionalProperties": false
792
+ },
793
+ {
794
+ "type": "null"
795
+ }
796
+ ]
797
+ }
798
+ },
799
+ "pad": {
800
+ "type": "object",
801
+ "properties": {
802
+ "shape": {
803
+ "default": "rect",
804
+ "type": "string",
805
+ "enum": [
806
+ "rect",
807
+ "round",
808
+ "oval"
809
+ ]
810
+ },
811
+ "wMm": {
812
+ "type": "number",
813
+ "exclusiveMinimum": 0
814
+ },
815
+ "hMm": {
816
+ "type": "number",
817
+ "exclusiveMinimum": 0
818
+ },
819
+ "holeMm": {
820
+ "type": "number",
821
+ "minimum": 0
822
+ },
823
+ "smd": {
824
+ "type": "boolean"
825
+ }
826
+ },
827
+ "required": [
828
+ "wMm",
829
+ "hMm"
830
+ ],
831
+ "additionalProperties": false
832
+ }
833
+ },
834
+ "required": [
835
+ "key",
836
+ "cols",
837
+ "xMm",
838
+ "yMm",
839
+ "pins"
840
+ ],
841
+ "additionalProperties": false
842
+ }
843
+ },
844
+ "leads": {
845
+ "default": [],
846
+ "type": "array",
847
+ "items": {
848
+ "type": "object",
849
+ "properties": {
850
+ "key": {
851
+ "type": "string",
852
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
853
+ },
854
+ "name": {
855
+ "type": "string",
856
+ "minLength": 1,
857
+ "maxLength": 40
858
+ },
859
+ "label": {
860
+ "type": "string",
861
+ "maxLength": 16
862
+ },
863
+ "description": {
864
+ "type": "string",
865
+ "maxLength": 400
866
+ },
867
+ "role": {
868
+ "default": "io",
869
+ "type": "string",
870
+ "enum": [
871
+ "power",
872
+ "gnd",
873
+ "io",
874
+ "analog",
875
+ "pwm",
876
+ "i2c",
877
+ "spi",
878
+ "uart",
879
+ "usb",
880
+ "clock",
881
+ "reset",
882
+ "enable",
883
+ "nc",
884
+ "other"
885
+ ]
886
+ },
887
+ "color": {
888
+ "default": "#000000",
889
+ "type": "string",
890
+ "pattern": "^#[0-9A-Fa-f]{6}$"
891
+ },
892
+ "lengthMm": {
893
+ "default": 40,
894
+ "type": "number",
895
+ "exclusiveMinimum": 0
896
+ },
897
+ "fromXMm": {
898
+ "type": "number"
899
+ },
900
+ "fromYMm": {
901
+ "type": "number"
902
+ },
903
+ "direction": {
904
+ "default": "left",
905
+ "type": "string",
906
+ "enum": [
907
+ "left",
908
+ "right",
909
+ "up",
910
+ "down"
911
+ ]
912
+ },
913
+ "gaugeMm": {
914
+ "default": 1.6,
915
+ "type": "number",
916
+ "exclusiveMinimum": 0
917
+ }
918
+ },
919
+ "required": [
920
+ "key",
921
+ "name",
922
+ "fromXMm",
923
+ "fromYMm"
924
+ ],
925
+ "additionalProperties": false
926
+ }
927
+ },
928
+ "pinIds": {
929
+ "default": {},
930
+ "type": "object",
931
+ "propertyNames": {
932
+ "type": "string",
933
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
934
+ },
935
+ "additionalProperties": {
936
+ "type": "integer",
937
+ "minimum": 0,
938
+ "maximum": 9007199254740991
939
+ }
940
+ },
941
+ "buses": {
942
+ "default": [],
943
+ "type": "array",
944
+ "items": {
945
+ "type": "object",
946
+ "properties": {
947
+ "id": {
948
+ "type": "string",
949
+ "pattern": "^[A-Za-z0-9_.-]+$"
950
+ },
951
+ "pins": {
952
+ "minItems": 2,
953
+ "type": "array",
954
+ "items": {
955
+ "type": "string",
956
+ "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]*$"
957
+ }
958
+ }
959
+ },
960
+ "required": [
961
+ "id",
962
+ "pins"
963
+ ],
964
+ "additionalProperties": false
965
+ }
966
+ },
967
+ "spice": {
968
+ "type": "object",
969
+ "properties": {
970
+ "model": {
971
+ "type": "string"
972
+ },
973
+ "lines": {
974
+ "minItems": 1,
975
+ "type": "array",
976
+ "items": {
977
+ "type": "string",
978
+ "minLength": 1
979
+ }
980
+ }
981
+ },
982
+ "required": [
983
+ "lines"
984
+ ],
985
+ "additionalProperties": false
986
+ },
987
+ "schematic": {
988
+ "default": {},
989
+ "type": "object",
990
+ "properties": {
991
+ "layout": {
992
+ "default": "by-role",
993
+ "type": "string",
994
+ "enum": [
995
+ "by-role"
996
+ ]
997
+ },
998
+ "sides": {
999
+ "type": "object",
1000
+ "properties": {
1001
+ "left": {
1002
+ "type": "array",
1003
+ "items": {
1004
+ "type": "string",
1005
+ "enum": [
1006
+ "power",
1007
+ "gnd",
1008
+ "io",
1009
+ "analog",
1010
+ "pwm",
1011
+ "i2c",
1012
+ "spi",
1013
+ "uart",
1014
+ "usb",
1015
+ "clock",
1016
+ "reset",
1017
+ "enable",
1018
+ "nc",
1019
+ "other"
1020
+ ]
1021
+ }
1022
+ },
1023
+ "right": {
1024
+ "type": "array",
1025
+ "items": {
1026
+ "type": "string",
1027
+ "enum": [
1028
+ "power",
1029
+ "gnd",
1030
+ "io",
1031
+ "analog",
1032
+ "pwm",
1033
+ "i2c",
1034
+ "spi",
1035
+ "uart",
1036
+ "usb",
1037
+ "clock",
1038
+ "reset",
1039
+ "enable",
1040
+ "nc",
1041
+ "other"
1042
+ ]
1043
+ }
1044
+ },
1045
+ "top": {
1046
+ "type": "array",
1047
+ "items": {
1048
+ "type": "string",
1049
+ "enum": [
1050
+ "power",
1051
+ "gnd",
1052
+ "io",
1053
+ "analog",
1054
+ "pwm",
1055
+ "i2c",
1056
+ "spi",
1057
+ "uart",
1058
+ "usb",
1059
+ "clock",
1060
+ "reset",
1061
+ "enable",
1062
+ "nc",
1063
+ "other"
1064
+ ]
1065
+ }
1066
+ },
1067
+ "bottom": {
1068
+ "type": "array",
1069
+ "items": {
1070
+ "type": "string",
1071
+ "enum": [
1072
+ "power",
1073
+ "gnd",
1074
+ "io",
1075
+ "analog",
1076
+ "pwm",
1077
+ "i2c",
1078
+ "spi",
1079
+ "uart",
1080
+ "usb",
1081
+ "clock",
1082
+ "reset",
1083
+ "enable",
1084
+ "nc",
1085
+ "other"
1086
+ ]
1087
+ }
1088
+ }
1089
+ },
1090
+ "additionalProperties": false
1091
+ }
1092
+ },
1093
+ "additionalProperties": false
1094
+ },
1095
+ "pcb": {
1096
+ "default": {},
1097
+ "type": "object",
1098
+ "properties": {
1099
+ "mode": {
1100
+ "default": "auto",
1101
+ "type": "string",
1102
+ "enum": [
1103
+ "auto",
1104
+ "tht",
1105
+ "smd"
1106
+ ]
1107
+ },
1108
+ "silkscreenOutline": {
1109
+ "default": true,
1110
+ "type": "boolean"
1111
+ }
1112
+ },
1113
+ "additionalProperties": false
1114
+ }
1115
+ },
1116
+ "required": [
1117
+ "slug",
1118
+ "title",
1119
+ "outline"
1120
+ ],
1121
+ "additionalProperties": false
1122
+ }