@tscircuit/fake-snippets 0.0.120 → 0.0.122

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 (612) hide show
  1. package/dist/bundle.js +1 -2
  2. package/package.json +4 -1
  3. package/.github/CODEOWNERS +0 -1
  4. package/.github/workflows/bun-formatcheck.yml +0 -26
  5. package/.github/workflows/bun-pver-release.yml +0 -28
  6. package/.github/workflows/bun-test.yml +0 -28
  7. package/.github/workflows/bun-typecheck.yml +0 -26
  8. package/.github/workflows/bundle-size-analysis.yml +0 -79
  9. package/.github/workflows/stale.yml +0 -40
  10. package/.github/workflows/update-package.yml +0 -58
  11. package/.github/workflows/update-snapshots.yml +0 -49
  12. package/CLAUDE.md +0 -92
  13. package/CONTRIBUTING.md +0 -59
  14. package/api/generated-index.js +0 -456
  15. package/biome.json +0 -67
  16. package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +0 -141
  17. package/bun-tests/fake-snippets-api/fixtures/preload.ts +0 -18
  18. package/bun-tests/fake-snippets-api/fixtures/start-server.ts +0 -48
  19. package/bun-tests/fake-snippets-api/routes/accounts/get.test.ts +0 -64
  20. package/bun-tests/fake-snippets-api/routes/accounts/get_account_balance.test.ts +0 -14
  21. package/bun-tests/fake-snippets-api/routes/ai_reviews/create.test.ts +0 -21
  22. package/bun-tests/fake-snippets-api/routes/ai_reviews/get.test.ts +0 -16
  23. package/bun-tests/fake-snippets-api/routes/ai_reviews/list.test.ts +0 -14
  24. package/bun-tests/fake-snippets-api/routes/ai_reviews/process_review.test.ts +0 -16
  25. package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +0 -37
  26. package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +0 -89
  27. package/bun-tests/fake-snippets-api/routes/datasheets/create.test.ts +0 -16
  28. package/bun-tests/fake-snippets-api/routes/datasheets/get.test.ts +0 -54
  29. package/bun-tests/fake-snippets-api/routes/datasheets/list.test.ts +0 -49
  30. package/bun-tests/fake-snippets-api/routes/datasheets/process_all_datasheets.test.ts +0 -22
  31. package/bun-tests/fake-snippets-api/routes/datasheets/run_async_tasks.test.ts +0 -19
  32. package/bun-tests/fake-snippets-api/routes/health.test.ts +0 -9
  33. package/bun-tests/fake-snippets-api/routes/order_files/get.test.ts +0 -48
  34. package/bun-tests/fake-snippets-api/routes/order_files/upload.test.ts +0 -77
  35. package/bun-tests/fake-snippets-api/routes/order_quotes/create.test.ts +0 -33
  36. package/bun-tests/fake-snippets-api/routes/orders/create.test.ts +0 -17
  37. package/bun-tests/fake-snippets-api/routes/orders/get.test.ts +0 -199
  38. package/bun-tests/fake-snippets-api/routes/orders/list.test.ts +0 -30
  39. package/bun-tests/fake-snippets-api/routes/orgs/add_member.test.ts +0 -26
  40. package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +0 -37
  41. package/bun-tests/fake-snippets-api/routes/orgs/get.test.ts +0 -53
  42. package/bun-tests/fake-snippets-api/routes/orgs/get_member.test.ts +0 -110
  43. package/bun-tests/fake-snippets-api/routes/orgs/list.test.ts +0 -17
  44. package/bun-tests/fake-snippets-api/routes/orgs/list_members.test.ts +0 -24
  45. package/bun-tests/fake-snippets-api/routes/orgs/remove_member.test.ts +0 -81
  46. package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +0 -151
  47. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -279
  48. package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -292
  49. package/bun-tests/fake-snippets-api/routes/package_files/create.test.ts +0 -320
  50. package/bun-tests/fake-snippets-api/routes/package_files/create_or_update.test.ts +0 -603
  51. package/bun-tests/fake-snippets-api/routes/package_files/delete.test.ts +0 -233
  52. package/bun-tests/fake-snippets-api/routes/package_files/download.test.ts +0 -248
  53. package/bun-tests/fake-snippets-api/routes/package_files/get.test.ts +0 -230
  54. package/bun-tests/fake-snippets-api/routes/package_files/list.test.ts +0 -212
  55. package/bun-tests/fake-snippets-api/routes/package_releases/create.test.ts +0 -171
  56. package/bun-tests/fake-snippets-api/routes/package_releases/get.test.ts +0 -181
  57. package/bun-tests/fake-snippets-api/routes/package_releases/get_image_generation_fields.test.ts +0 -38
  58. package/bun-tests/fake-snippets-api/routes/package_releases/list.test.ts +0 -149
  59. package/bun-tests/fake-snippets-api/routes/package_releases/update.test.ts +0 -160
  60. package/bun-tests/fake-snippets-api/routes/packages/add_star.test.ts +0 -129
  61. package/bun-tests/fake-snippets-api/routes/packages/create.test.ts +0 -67
  62. package/bun-tests/fake-snippets-api/routes/packages/delete.test.ts +0 -74
  63. package/bun-tests/fake-snippets-api/routes/packages/fork.test.ts +0 -132
  64. package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +0 -112
  65. package/bun-tests/fake-snippets-api/routes/packages/images.test.ts +0 -72
  66. package/bun-tests/fake-snippets-api/routes/packages/list-1.test.ts +0 -145
  67. package/bun-tests/fake-snippets-api/routes/packages/list-2.test.ts +0 -48
  68. package/bun-tests/fake-snippets-api/routes/packages/list_latest.test.ts +0 -110
  69. package/bun-tests/fake-snippets-api/routes/packages/list_trending.test.ts +0 -103
  70. package/bun-tests/fake-snippets-api/routes/packages/remove_star.test.ts +0 -131
  71. package/bun-tests/fake-snippets-api/routes/packages/update.test.ts +0 -217
  72. package/bun-tests/fake-snippets-api/routes/proxy.test.ts +0 -42
  73. package/bun.lock +0 -2724
  74. package/bunfig.toml +0 -3
  75. package/components.json +0 -20
  76. package/docs/CIRCUIT_JSON_SOURCE_COMPONENT_OVERVIEW.md +0 -151
  77. package/fake-snippets-api/README.md +0 -6
  78. package/fake-snippets-api/biome.json +0 -47
  79. package/fake-snippets-api/bun.lockb +0 -0
  80. package/fake-snippets-api/lib/db/autoload-dev-packages.ts +0 -222
  81. package/fake-snippets-api/lib/db/autoload-packages.json +0 -8
  82. package/fake-snippets-api/lib/db/db-client.ts +0 -1857
  83. package/fake-snippets-api/lib/db/schema.ts +0 -502
  84. package/fake-snippets-api/lib/db/seed.ts +0 -1843
  85. package/fake-snippets-api/lib/index.ts +0 -3
  86. package/fake-snippets-api/lib/middleware/with-ctx-error.ts +0 -26
  87. package/fake-snippets-api/lib/middleware/with-db.ts +0 -15
  88. package/fake-snippets-api/lib/middleware/with-error-handling.ts +0 -24
  89. package/fake-snippets-api/lib/middleware/with-optional-session-auth.ts +0 -53
  90. package/fake-snippets-api/lib/middleware/with-request-logging.ts +0 -54
  91. package/fake-snippets-api/lib/middleware/with-session-auth.ts +0 -102
  92. package/fake-snippets-api/lib/middleware/with-winter-spec.ts +0 -24
  93. package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +0 -20
  94. package/fake-snippets-api/lib/package_file/get-package-file-id-from-file-descriptor.ts +0 -173
  95. package/fake-snippets-api/lib/package_release/find-package-release-id.ts +0 -120
  96. package/fake-snippets-api/lib/public-mapping/public-map-org.ts +0 -34
  97. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -48
  98. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +0 -88
  99. package/fake-snippets-api/lib/public-mapping/public-map-package.ts +0 -60
  100. package/fake-snippets-api/lib/with-winter-spec.ts +0 -1
  101. package/fake-snippets-api/next-env.d.ts +0 -5
  102. package/fake-snippets-api/routes/api/_fake/ai_reviews/process_review.ts +0 -31
  103. package/fake-snippets-api/routes/api/_fake/datasheets/process_all_datasheets.ts +0 -38
  104. package/fake-snippets-api/routes/api/_fake/db.ts +0 -11
  105. package/fake-snippets-api/routes/api/_fake/move_orders_forward.ts +0 -65
  106. package/fake-snippets-api/routes/api/_fake/received_quotes.ts +0 -112
  107. package/fake-snippets-api/routes/api/_fake/run_async_tasks.ts +0 -12
  108. package/fake-snippets-api/routes/api/_fake/seed.ts +0 -13
  109. package/fake-snippets-api/routes/api/accounts/get.ts +0 -35
  110. package/fake-snippets-api/routes/api/accounts/get_account_balance.ts +0 -22
  111. package/fake-snippets-api/routes/api/accounts/search.ts +0 -20
  112. package/fake-snippets-api/routes/api/accounts/update.ts +0 -32
  113. package/fake-snippets-api/routes/api/ai/[...anyroute].ts +0 -31
  114. package/fake-snippets-api/routes/api/ai.ts +0 -2
  115. package/fake-snippets-api/routes/api/ai_reviews/create.ts +0 -44
  116. package/fake-snippets-api/routes/api/ai_reviews/get.ts +0 -24
  117. package/fake-snippets-api/routes/api/ai_reviews/list.ts +0 -14
  118. package/fake-snippets-api/routes/api/aistream/[...anyroute].ts +0 -65
  119. package/fake-snippets-api/routes/api/autocomplete/create_autocomplete.ts +0 -16
  120. package/fake-snippets-api/routes/api/bug_reports/create.ts +0 -43
  121. package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +0 -113
  122. package/fake-snippets-api/routes/api/datasheets/create.ts +0 -18
  123. package/fake-snippets-api/routes/api/datasheets/get.ts +0 -35
  124. package/fake-snippets-api/routes/api/datasheets/list.ts +0 -29
  125. package/fake-snippets-api/routes/api/github/installations/create_new_installation_redirect.ts +0 -75
  126. package/fake-snippets-api/routes/api/github/repos/list_available.ts +0 -91
  127. package/fake-snippets-api/routes/api/github/repos/refresh.ts +0 -44
  128. package/fake-snippets-api/routes/api/health.ts +0 -9
  129. package/fake-snippets-api/routes/api/internal/sessions/create_without_auth.ts +0 -63
  130. package/fake-snippets-api/routes/api/order_files/get.ts +0 -28
  131. package/fake-snippets-api/routes/api/order_files/upload.ts +0 -46
  132. package/fake-snippets-api/routes/api/order_quotes/create.ts +0 -60
  133. package/fake-snippets-api/routes/api/order_quotes/create_all_vendor_quotes.ts +0 -30
  134. package/fake-snippets-api/routes/api/order_quotes/get.ts +0 -29
  135. package/fake-snippets-api/routes/api/orders/create.ts +0 -70
  136. package/fake-snippets-api/routes/api/orders/get.ts +0 -168
  137. package/fake-snippets-api/routes/api/orders/list.ts +0 -15
  138. package/fake-snippets-api/routes/api/orgs/add_member.ts +0 -52
  139. package/fake-snippets-api/routes/api/orgs/create.ts +0 -48
  140. package/fake-snippets-api/routes/api/orgs/get.ts +0 -39
  141. package/fake-snippets-api/routes/api/orgs/get_member.ts +0 -67
  142. package/fake-snippets-api/routes/api/orgs/list.ts +0 -31
  143. package/fake-snippets-api/routes/api/orgs/list_members.ts +0 -106
  144. package/fake-snippets-api/routes/api/orgs/remove_member.ts +0 -46
  145. package/fake-snippets-api/routes/api/orgs/update.ts +0 -118
  146. package/fake-snippets-api/routes/api/package_builds/get.ts +0 -70
  147. package/fake-snippets-api/routes/api/package_builds/list.ts +0 -97
  148. package/fake-snippets-api/routes/api/package_files/create.ts +0 -135
  149. package/fake-snippets-api/routes/api/package_files/create_or_update.ts +0 -194
  150. package/fake-snippets-api/routes/api/package_files/delete.ts +0 -109
  151. package/fake-snippets-api/routes/api/package_files/download.ts +0 -87
  152. package/fake-snippets-api/routes/api/package_files/get.ts +0 -68
  153. package/fake-snippets-api/routes/api/package_files/list.ts +0 -54
  154. package/fake-snippets-api/routes/api/package_releases/create.ts +0 -109
  155. package/fake-snippets-api/routes/api/package_releases/get.ts +0 -137
  156. package/fake-snippets-api/routes/api/package_releases/list.ts +0 -85
  157. package/fake-snippets-api/routes/api/package_releases/rebuild.ts +0 -66
  158. package/fake-snippets-api/routes/api/package_releases/update.ts +0 -122
  159. package/fake-snippets-api/routes/api/packages/add_star.ts +0 -84
  160. package/fake-snippets-api/routes/api/packages/create.ts +0 -136
  161. package/fake-snippets-api/routes/api/packages/delete.ts +0 -41
  162. package/fake-snippets-api/routes/api/packages/fork.ts +0 -165
  163. package/fake-snippets-api/routes/api/packages/generate_from_jlcpcb.ts +0 -111
  164. package/fake-snippets-api/routes/api/packages/get.ts +0 -81
  165. package/fake-snippets-api/routes/api/packages/images/[owner_github_username]/[unscoped_name]/[view_format].ts +0 -119
  166. package/fake-snippets-api/routes/api/packages/list.ts +0 -105
  167. package/fake-snippets-api/routes/api/packages/list_latest.ts +0 -29
  168. package/fake-snippets-api/routes/api/packages/list_trending.ts +0 -43
  169. package/fake-snippets-api/routes/api/packages/remove_star.ts +0 -70
  170. package/fake-snippets-api/routes/api/packages/search.ts +0 -19
  171. package/fake-snippets-api/routes/api/packages/update.ts +0 -112
  172. package/fake-snippets-api/routes/api/packages/update_ai_description.ts +0 -37
  173. package/fake-snippets-api/routes/api/proxy.ts +0 -128
  174. package/fake-snippets-api/routes/api/snippets/add_star.ts +0 -62
  175. package/fake-snippets-api/routes/api/snippets/create.ts +0 -184
  176. package/fake-snippets-api/routes/api/snippets/delete.ts +0 -41
  177. package/fake-snippets-api/routes/api/snippets/download.ts +0 -162
  178. package/fake-snippets-api/routes/api/snippets/generate_from_jlcpcb.ts +0 -48
  179. package/fake-snippets-api/routes/api/snippets/get.ts +0 -83
  180. package/fake-snippets-api/routes/api/snippets/get_image.ts +0 -65
  181. package/fake-snippets-api/routes/api/snippets/images/[author]/[snippet_name]/[typeFormat].ts +0 -80
  182. package/fake-snippets-api/routes/api/snippets/list.ts +0 -151
  183. package/fake-snippets-api/routes/api/snippets/list_latest.ts +0 -13
  184. package/fake-snippets-api/routes/api/snippets/list_trending.ts +0 -38
  185. package/fake-snippets-api/routes/api/snippets/remove_star.ts +0 -42
  186. package/fake-snippets-api/routes/api/snippets/search.ts +0 -18
  187. package/fake-snippets-api/routes/api/snippets/update.ts +0 -114
  188. package/fake-snippets-api/utils/normalizeProjectFilePath.ts +0 -60
  189. package/fake-snippets-api/utils/order-steps.ts +0 -20
  190. package/favicon.ico +0 -0
  191. package/index.html +0 -125
  192. package/landing.html +0 -23
  193. package/playwright-tests/ai-page.spec.ts +0 -19
  194. package/playwright-tests/circuit-json-import.spec.ts +0 -133
  195. package/playwright-tests/cmd-click.spec.ts +0 -43
  196. package/playwright-tests/dashboard-page.spec.ts +0 -10
  197. package/playwright-tests/editor-page.spec.ts +0 -15
  198. package/playwright-tests/exampleCircuitJson.ts +0 -498
  199. package/playwright-tests/files-dialog.spec.ts +0 -19
  200. package/playwright-tests/footprint-dialog/footprint-dialog.spec.ts +0 -27
  201. package/playwright-tests/footprint-dialog/footprint-insertion.spec.ts +0 -38
  202. package/playwright-tests/footprint-dialog/footprint-preview.spec.ts +0 -34
  203. package/playwright-tests/footprint-dialog/footprint-selection.spec.ts +0 -29
  204. package/playwright-tests/handle-manual-edits.spec.ts +0 -55
  205. package/playwright-tests/home-page.spec.ts +0 -10
  206. package/playwright-tests/images.spec.ts +0 -17
  207. package/playwright-tests/manual-edits.spec.ts +0 -89
  208. package/playwright-tests/preview-page.spec.ts +0 -7
  209. package/playwright-tests/profile-page.spec.ts +0 -108
  210. package/playwright-tests/quickstart-page.spec.ts +0 -10
  211. package/playwright-tests/search-links.spec.ts +0 -21
  212. package/playwright-tests/search.spec.ts +0 -27
  213. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-lg.png +0 -0
  214. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-md.png +0 -0
  215. package/playwright-tests/snapshots/ai-page.spec.ts-AI-Page-xs.png +0 -0
  216. package/playwright-tests/snapshots/cmd-click.spec.ts-underlined-imports.png +0 -0
  217. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-lg.png +0 -0
  218. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-md.png +0 -0
  219. package/playwright-tests/snapshots/dashboard-page.spec.ts-Dashboard-page-xs.png +0 -0
  220. package/playwright-tests/snapshots/editor-page.spec.ts-editor-with-snippet.png +0 -0
  221. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-lg.png +0 -0
  222. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-md.png +0 -0
  223. package/playwright-tests/snapshots/error-fallback.spec.ts-error-fallback-xs.png +0 -0
  224. package/playwright-tests/snapshots/files-dialog.spec.ts-view-snippet-files.png +0 -0
  225. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-lg.png +0 -0
  226. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-md.png +0 -0
  227. package/playwright-tests/snapshots/footprint-dialog/footprint-dialog.spec.ts-footprint-preview-xs.png +0 -0
  228. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-lg.png +0 -0
  229. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-md.png +0 -0
  230. package/playwright-tests/snapshots/footprint-dialog/footprint-insertion.spec.ts-footprint-insertion-xs.png +0 -0
  231. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-lg.png +0 -0
  232. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-md.png +0 -0
  233. package/playwright-tests/snapshots/footprint-dialog/footprint-preview.spec.ts-footprint-preview-xs.png +0 -0
  234. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-lg.png +0 -0
  235. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-md.png +0 -0
  236. package/playwright-tests/snapshots/footprint-dialog/footprint-selection.spec.ts-footprint-preview-xs.png +0 -0
  237. package/playwright-tests/snapshots/handle-manual-edits.spec.ts-handle-manual-edits.png +0 -0
  238. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-lg.png +0 -0
  239. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-md.png +0 -0
  240. package/playwright-tests/snapshots/home-page.spec.ts-Home-page-xs.png +0 -0
  241. package/playwright-tests/snapshots/images.spec.ts-pcb-image.png +0 -0
  242. package/playwright-tests/snapshots/images.spec.ts-schematic-image.png +0 -0
  243. package/playwright-tests/snapshots/manual-edits.spec.ts-editor-manual-edits.png +0 -0
  244. package/playwright-tests/snapshots/manual-edits.spec.ts-manual-edits-view.png +0 -0
  245. package/playwright-tests/snapshots/preview-page.spec.ts-preview-snippet-pcb.png +0 -0
  246. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-before-delete.png +0 -0
  247. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-delete-dialog.png +0 -0
  248. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-dropdown-open.png +0 -0
  249. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-snippets-tab.png +0 -0
  250. package/playwright-tests/snapshots/profile-page.spec.ts-profile-page-starred-tab.png +0 -0
  251. package/playwright-tests/snapshots/profile-page.spec.ts-snippet-page-open-after-star-click.png +0 -0
  252. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagelg.png +0 -0
  253. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagemd.png +0 -0
  254. package/playwright-tests/snapshots/quickstart-page.spec.ts-Quickstart-Pagexs.png +0 -0
  255. package/playwright-tests/snapshots/search-links.spec.ts-search-links.png +0 -0
  256. package/playwright-tests/snapshots/search.spec.ts-search-lg.png +0 -0
  257. package/playwright-tests/snapshots/search.spec.ts-search-md.png +0 -0
  258. package/playwright-tests/snapshots/search.spec.ts-search-xs.png +0 -0
  259. package/playwright-tests/snapshots/star.spec.ts-remove-star-button.png +0 -0
  260. package/playwright-tests/snapshots/star.spec.ts-star-button.png +0 -0
  261. package/playwright-tests/snapshots/update-description.spec.ts-update-description.png +0 -0
  262. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-lg.png +0 -0
  263. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-md.png +0 -0
  264. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-after-xs.png +0 -0
  265. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-lg.png +0 -0
  266. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-md.png +0 -0
  267. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-before-xs.png +0 -0
  268. package/playwright-tests/snapshots/view-snippet.spec.ts-view-snippet-files.png +0 -0
  269. package/playwright-tests/star.spec.ts +0 -40
  270. package/playwright-tests/update-description.spec.ts +0 -18
  271. package/playwright-tests/view-snippet.spec.ts +0 -35
  272. package/playwright-tests/viewports.ts +0 -5
  273. package/playwright.config.ts +0 -27
  274. package/postcss.config.js +0 -6
  275. package/public/robots.txt +0 -9
  276. package/renovate.json +0 -25
  277. package/scripts/generate-image-sizes.ts +0 -57
  278. package/scripts/generate-sitemap.ts +0 -103
  279. package/scripts/generate_bundle_stats.js +0 -208
  280. package/scripts/snapshot.ts +0 -35
  281. package/src/App.tsx +0 -314
  282. package/src/ContextProviders.tsx +0 -94
  283. package/src/assets/originals/editor_example_1.webp +0 -0
  284. package/src/assets/originals/editor_example_1_more_square.webp +0 -0
  285. package/src/assets/originals/editor_example_2.webp +0 -0
  286. package/src/assets/originals/example_schematic.webp +0 -0
  287. package/src/components/AiChatMessage.tsx +0 -86
  288. package/src/components/Analytics.tsx +0 -23
  289. package/src/components/BomTable.tsx +0 -69
  290. package/src/components/ChatInput.tsx +0 -53
  291. package/src/components/CircuitJsonImportDialog.tsx +0 -269
  292. package/src/components/CircuitToSvgWithMouseControl.tsx +0 -78
  293. package/src/components/CmdKMenu.tsx +0 -809
  294. package/src/components/CreateNewSnippetWithAiHero.tsx +0 -81
  295. package/src/components/CreateReleaseDialog.tsx +0 -124
  296. package/src/components/DownloadButtonAndMenu.tsx +0 -443
  297. package/src/components/ErrorFallback.tsx +0 -25
  298. package/src/components/ErrorOutline.tsx +0 -35
  299. package/src/components/ErrorTabContent.tsx +0 -122
  300. package/src/components/ExpandableText.tsx +0 -29
  301. package/src/components/FAQ.tsx +0 -189
  302. package/src/components/FileSidebar.tsx +0 -271
  303. package/src/components/Footer.tsx +0 -144
  304. package/src/components/GithubAvatarWithFallback.tsx +0 -35
  305. package/src/components/Header.tsx +0 -202
  306. package/src/components/Header2.tsx +0 -202
  307. package/src/components/HeaderDropdown.tsx +0 -88
  308. package/src/components/HeaderLogin.tsx +0 -105
  309. package/src/components/HiddenFilesDropdown.tsx +0 -42
  310. package/src/components/ImageWithFallback.tsx +0 -37
  311. package/src/components/LatestSnippets.tsx +0 -39
  312. package/src/components/NotFound.tsx +0 -37
  313. package/src/components/OptimizedImage.tsx +0 -100
  314. package/src/components/PackageBreadcrumb.tsx +0 -105
  315. package/src/components/PackageBuildsPage/ErrorObject.ts +0 -12
  316. package/src/components/PackageBuildsPage/capitalCase.ts +0 -4
  317. package/src/components/PackageBuildsPage/getColorForDisplayStatus.ts +0 -17
  318. package/src/components/PackageCard.tsx +0 -191
  319. package/src/components/PackageCardSkeleton.tsx +0 -17
  320. package/src/components/PackageLink.tsx +0 -29
  321. package/src/components/PackageSearchResults.tsx +0 -81
  322. package/src/components/PackagesList.tsx +0 -71
  323. package/src/components/PcbViewerWithContainerHeight.tsx +0 -47
  324. package/src/components/PrefetchPageLink.tsx +0 -114
  325. package/src/components/PreviewEmptyState.tsx +0 -16
  326. package/src/components/ProfileRouter.tsx +0 -30
  327. package/src/components/RunButton.tsx +0 -27
  328. package/src/components/SearchComponent.tsx +0 -282
  329. package/src/components/SentryNotFoundReporter.tsx +0 -44
  330. package/src/components/SnippetTypeIcon.tsx +0 -60
  331. package/src/components/StaticPreviewContent.tsx +0 -89
  332. package/src/components/StaticViewSnippetSidebar.tsx +0 -100
  333. package/src/components/SuspenseRunFrame.tsx +0 -28
  334. package/src/components/TableViewer/CircuitJsonTableViewer.tsx +0 -316
  335. package/src/components/TableViewer/ClickableText.tsx +0 -21
  336. package/src/components/TableViewer/HeaderCell.tsx +0 -27
  337. package/src/components/TableViewer/Modal.tsx +0 -39
  338. package/src/components/TrendingPackagesCarousel.tsx +0 -79
  339. package/src/components/TypeBadge.tsx +0 -31
  340. package/src/components/UserCard.tsx +0 -80
  341. package/src/components/ViewPackagePage/components/ShikiCodeViewer.tsx +0 -49
  342. package/src/components/ViewPackagePage/components/build-status.tsx +0 -38
  343. package/src/components/ViewPackagePage/components/important-files-view.tsx +0 -611
  344. package/src/components/ViewPackagePage/components/main-content-header.tsx +0 -181
  345. package/src/components/ViewPackagePage/components/main-content-view-selector.tsx +0 -167
  346. package/src/components/ViewPackagePage/components/markdown-viewer.tsx +0 -88
  347. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +0 -301
  348. package/src/components/ViewPackagePage/components/package-header.tsx +0 -264
  349. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +0 -47
  350. package/src/components/ViewPackagePage/components/repo-page-content.tsx +0 -266
  351. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +0 -223
  352. package/src/components/ViewPackagePage/components/sidebar-packages-section.tsx +0 -16
  353. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +0 -126
  354. package/src/components/ViewPackagePage/components/sidebar.tsx +0 -29
  355. package/src/components/ViewPackagePage/components/tab-views/3d-view.tsx +0 -43
  356. package/src/components/ViewPackagePage/components/tab-views/bom-view.tsx +0 -30
  357. package/src/components/ViewPackagePage/components/tab-views/files-view.tsx +0 -295
  358. package/src/components/ViewPackagePage/components/tab-views/pcb-view.tsx +0 -35
  359. package/src/components/ViewPackagePage/components/tab-views/schematic-view.tsx +0 -38
  360. package/src/components/ViewPackagePage/components/theme-toggle.tsx +0 -40
  361. package/src/components/ViewPackagePage/hooks/use-current-package-circuit-json.ts +0 -46
  362. package/src/components/ViewPackagePage/hooks/use-mobile.tsx +0 -19
  363. package/src/components/ViewPackagePage/hooks/use-toast.tsx +0 -69
  364. package/src/components/ViewPackagePage/utils/fuzz-search.ts +0 -121
  365. package/src/components/ViewPackagePage/utils/get-license-content.ts +0 -119
  366. package/src/components/ViewPackagePage/utils/is-hidden-file.ts +0 -55
  367. package/src/components/ViewPackagePage/utils/is-package-file-important.ts +0 -35
  368. package/src/components/ViewPackagePage/utils/is-within-directory.ts +0 -32
  369. package/src/components/dialogs/GitHubRepositorySelector.tsx +0 -300
  370. package/src/components/dialogs/confirm-delete-package-dialog.tsx +0 -74
  371. package/src/components/dialogs/confirm-discard-changes-dialog.tsx +0 -73
  372. package/src/components/dialogs/create-use-dialog.tsx +0 -40
  373. package/src/components/dialogs/edit-description-dialog.tsx +0 -96
  374. package/src/components/dialogs/edit-package-details-dialog.tsx +0 -474
  375. package/src/components/dialogs/files-dialog.tsx +0 -70
  376. package/src/components/dialogs/import-component-dialog.tsx +0 -32
  377. package/src/components/dialogs/import-package-dialog.tsx +0 -90
  378. package/src/components/dialogs/new-package-save-prompt-dialog.tsx +0 -199
  379. package/src/components/dialogs/package-visibility-settings-dialog.tsx +0 -93
  380. package/src/components/dialogs/pcb-download-dialog.tsx +0 -113
  381. package/src/components/dialogs/rename-package-dialog.tsx +0 -86
  382. package/src/components/dialogs/rename-snippet-dialog.tsx +0 -81
  383. package/src/components/dialogs/update-package-description-dialog.tsx +0 -96
  384. package/src/components/dialogs/view-ts-files-dialog.tsx +0 -664
  385. package/src/components/organization/OrganizationCard.tsx +0 -202
  386. package/src/components/organization/OrganizationCardSkeleton.tsx +0 -55
  387. package/src/components/organization/OrganizationHeader.tsx +0 -140
  388. package/src/components/organization/OrganizationMembers.tsx +0 -117
  389. package/src/components/package-port/CodeAndPreview.tsx +0 -253
  390. package/src/components/package-port/CodeEditor.tsx +0 -866
  391. package/src/components/package-port/CodeEditorHeader.tsx +0 -427
  392. package/src/components/package-port/EditorNav.tsx +0 -606
  393. package/src/components/package-port/GlobalFindReplace.tsx +0 -681
  394. package/src/components/package-port/QuickOpen.tsx +0 -241
  395. package/src/components/preview/BuildsList.tsx +0 -237
  396. package/src/components/preview/ConnectedPackagesList.tsx +0 -229
  397. package/src/components/preview/ConnectedRepoOverview.tsx +0 -588
  398. package/src/components/preview/PackageReleasesDashboard.tsx +0 -228
  399. package/src/components/preview/index.tsx +0 -54
  400. package/src/components/ui/accordion.tsx +0 -55
  401. package/src/components/ui/alert-dialog.tsx +0 -139
  402. package/src/components/ui/alert.tsx +0 -59
  403. package/src/components/ui/aspect-ratio.tsx +0 -5
  404. package/src/components/ui/avatar.tsx +0 -48
  405. package/src/components/ui/badge.tsx +0 -36
  406. package/src/components/ui/breadcrumb.tsx +0 -118
  407. package/src/components/ui/button.tsx +0 -58
  408. package/src/components/ui/calendar.tsx +0 -73
  409. package/src/components/ui/card.tsx +0 -76
  410. package/src/components/ui/carousel.tsx +0 -260
  411. package/src/components/ui/chart.tsx +0 -363
  412. package/src/components/ui/checkbox.tsx +0 -28
  413. package/src/components/ui/collapsible.tsx +0 -9
  414. package/src/components/ui/combobox.tsx +0 -178
  415. package/src/components/ui/command.tsx +0 -151
  416. package/src/components/ui/context-menu.tsx +0 -202
  417. package/src/components/ui/dialog.tsx +0 -120
  418. package/src/components/ui/drawer.tsx +0 -116
  419. package/src/components/ui/dropdown-menu.tsx +0 -203
  420. package/src/components/ui/form.tsx +0 -182
  421. package/src/components/ui/hover-card.tsx +0 -27
  422. package/src/components/ui/input.tsx +0 -25
  423. package/src/components/ui/label.tsx +0 -24
  424. package/src/components/ui/menubar.tsx +0 -238
  425. package/src/components/ui/navigation-menu.tsx +0 -129
  426. package/src/components/ui/pagination.tsx +0 -121
  427. package/src/components/ui/popover.tsx +0 -31
  428. package/src/components/ui/progress.tsx +0 -26
  429. package/src/components/ui/radio-group.tsx +0 -42
  430. package/src/components/ui/resizable.tsx +0 -43
  431. package/src/components/ui/role-badge.tsx +0 -27
  432. package/src/components/ui/scroll-area.tsx +0 -46
  433. package/src/components/ui/searchable-select.tsx +0 -94
  434. package/src/components/ui/select.tsx +0 -162
  435. package/src/components/ui/separator.tsx +0 -29
  436. package/src/components/ui/sheet.tsx +0 -141
  437. package/src/components/ui/skeleton.tsx +0 -18
  438. package/src/components/ui/slider.tsx +0 -26
  439. package/src/components/ui/sonner.tsx +0 -30
  440. package/src/components/ui/switch.tsx +0 -27
  441. package/src/components/ui/table.tsx +0 -120
  442. package/src/components/ui/tabs.tsx +0 -53
  443. package/src/components/ui/textarea.tsx +0 -24
  444. package/src/components/ui/toast.tsx +0 -128
  445. package/src/components/ui/toaster.tsx +0 -1
  446. package/src/components/ui/toggle-group.tsx +0 -59
  447. package/src/components/ui/toggle.tsx +0 -43
  448. package/src/components/ui/tooltip.tsx +0 -28
  449. package/src/components/ui/tree-view.tsx +0 -563
  450. package/src/entry-server.tsx +0 -12
  451. package/src/hooks/use-account-balance.ts +0 -25
  452. package/src/hooks/use-add-org-member-mutation.ts +0 -51
  453. package/src/hooks/use-ai-api.ts +0 -35
  454. package/src/hooks/use-ai-review.ts +0 -31
  455. package/src/hooks/use-axios.ts +0 -20
  456. package/src/hooks/use-code-completion-ai-api.ts +0 -11
  457. package/src/hooks/use-copy-to-clipboard.ts +0 -26
  458. package/src/hooks/use-create-datasheet.ts +0 -30
  459. package/src/hooks/use-create-org-mutation.ts +0 -38
  460. package/src/hooks/use-create-package-files-mutation.ts +0 -76
  461. package/src/hooks/use-create-package-mutation.ts +0 -54
  462. package/src/hooks/use-create-package-release-mutation.ts +0 -107
  463. package/src/hooks/use-create-release-dialog.ts +0 -160
  464. package/src/hooks/use-create-snippet-mutation.ts +0 -65
  465. package/src/hooks/use-current-package-id.ts +0 -16
  466. package/src/hooks/use-current-package-info.ts +0 -32
  467. package/src/hooks/use-current-package-release.ts +0 -48
  468. package/src/hooks/use-current-snippet-id.ts +0 -78
  469. package/src/hooks/use-current-snippet.ts +0 -24
  470. package/src/hooks/use-datasheet.ts +0 -18
  471. package/src/hooks/use-debounce.ts +0 -17
  472. package/src/hooks/use-delete-package.ts +0 -45
  473. package/src/hooks/use-download-zip.ts +0 -50
  474. package/src/hooks/use-fork-package-mutation.ts +0 -61
  475. package/src/hooks/use-global-store.ts +0 -36
  476. package/src/hooks/use-hotkey.ts +0 -116
  477. package/src/hooks/use-hydration.ts +0 -30
  478. package/src/hooks/use-is-using-fake-api.ts +0 -3
  479. package/src/hooks/use-jlcpcb-component-import.tsx +0 -164
  480. package/src/hooks/use-list-org-members.ts +0 -32
  481. package/src/hooks/use-list-user-orgs.ts +0 -25
  482. package/src/hooks/use-now.ts +0 -12
  483. package/src/hooks/use-org-by-github-handle.ts +0 -24
  484. package/src/hooks/use-org.ts +0 -24
  485. package/src/hooks/use-organization.ts +0 -42
  486. package/src/hooks/use-package-as-snippet.ts +0 -81
  487. package/src/hooks/use-package-builds.ts +0 -91
  488. package/src/hooks/use-package-by-package-id.ts +0 -24
  489. package/src/hooks/use-package-by-package-name.ts +0 -29
  490. package/src/hooks/use-package-details-form.ts +0 -146
  491. package/src/hooks/use-package-files.ts +0 -122
  492. package/src/hooks/use-package-release-by-id-or-version.ts +0 -45
  493. package/src/hooks/use-package-release-images.ts +0 -105
  494. package/src/hooks/use-package-release.ts +0 -124
  495. package/src/hooks/use-package-stars.ts +0 -163
  496. package/src/hooks/use-package.ts +0 -24
  497. package/src/hooks/use-packages-base-api-url.ts +0 -3
  498. package/src/hooks/use-preview-images.ts +0 -78
  499. package/src/hooks/use-rebuild-package-release-mutation.ts +0 -41
  500. package/src/hooks/use-remove-org-member-mutation.ts +0 -32
  501. package/src/hooks/use-request-ai-review-mutation.ts +0 -54
  502. package/src/hooks/use-run-tsx/eval-compiled-js.ts +0 -9
  503. package/src/hooks/use-shiki-highlighter.ts +0 -33
  504. package/src/hooks/use-sign-in.ts +0 -24
  505. package/src/hooks/use-snippet-by-name.ts +0 -25
  506. package/src/hooks/use-snippet.ts +0 -24
  507. package/src/hooks/use-toast.tsx +0 -90
  508. package/src/hooks/use-update-ai-description-mutation.ts +0 -42
  509. package/src/hooks/use-update-org-mutation.ts +0 -41
  510. package/src/hooks/use-url-params.ts +0 -31
  511. package/src/hooks/use-warn-user-on-page-change.ts +0 -90
  512. package/src/hooks/useFileManagement.ts +0 -602
  513. package/src/hooks/useForkPackageMutation.ts +0 -50
  514. package/src/hooks/useForkSnippetMutation.ts +0 -53
  515. package/src/hooks/useOptimizedPackageFilesLoader.ts +0 -136
  516. package/src/hooks/usePackageFilesLoader.ts +0 -58
  517. package/src/hooks/useUpdatePackageFilesMutation.ts +0 -131
  518. package/src/hooks/useUpdatePackageMutation.ts +0 -63
  519. package/src/index.css +0 -108
  520. package/src/lib/__tests__/constants.test.ts +0 -66
  521. package/src/lib/base64ToBytes.ts +0 -5
  522. package/src/lib/bytesToBase64.ts +0 -4
  523. package/src/lib/codemirror/basic-setup.ts +0 -67
  524. package/src/lib/constants.ts +0 -23
  525. package/src/lib/decodeUrlHashToFsMap.ts +0 -17
  526. package/src/lib/decodeUrlHashToText.ts +0 -15
  527. package/src/lib/defaultCodeForBlankCode.tsx +0 -7
  528. package/src/lib/download-fns/createBlobURL.ts +0 -4
  529. package/src/lib/download-fns/download-assembly-svg.ts +0 -12
  530. package/src/lib/download-fns/download-circuit-json-fn.ts +0 -12
  531. package/src/lib/download-fns/download-circuit-png.ts +0 -96
  532. package/src/lib/download-fns/download-dsn-file-fn.ts +0 -12
  533. package/src/lib/download-fns/download-fabrication-files.ts +0 -233
  534. package/src/lib/download-fns/download-gltf-from-circuit-json.ts +0 -44
  535. package/src/lib/download-fns/download-gltf.ts +0 -43
  536. package/src/lib/download-fns/download-kicad-files.ts +0 -38
  537. package/src/lib/download-fns/download-pcb-svg.ts +0 -35
  538. package/src/lib/download-fns/download-png-utils.ts +0 -31
  539. package/src/lib/download-fns/download-readable-netlist.ts +0 -12
  540. package/src/lib/download-fns/download-schematic-svg.ts +0 -12
  541. package/src/lib/download-fns/download-simple-route-json.ts +0 -17
  542. package/src/lib/download-fns/download-spice-file.ts +0 -13
  543. package/src/lib/download-fns/download-step.ts +0 -12
  544. package/src/lib/encodeFsMapToUrlHash.ts +0 -13
  545. package/src/lib/encodeTextToUrlHash.ts +0 -17
  546. package/src/lib/get-snippet-template.ts +0 -26
  547. package/src/lib/getLicenseFromLicenseContent.ts +0 -67
  548. package/src/lib/handleManualEditsImport.tsx +0 -65
  549. package/src/lib/handleManualEditsImportWithSupportForMultipleFiles.ts +0 -67
  550. package/src/lib/normalize-svg-for-tile.ts +0 -50
  551. package/src/lib/populate-query-cache-with-ssr-data.ts +0 -53
  552. package/src/lib/posthog.ts +0 -17
  553. package/src/lib/react-query-api-failure-tracking.ts +0 -148
  554. package/src/lib/sentry.ts +0 -14
  555. package/src/lib/templates/blank-3d-model-template.ts +0 -12
  556. package/src/lib/templates/blank-circuit-board-template.ts +0 -20
  557. package/src/lib/templates/blank-footprint-template.ts +0 -29
  558. package/src/lib/templates/blank-package-template.ts +0 -21
  559. package/src/lib/templates/blinking-led-board-template.ts +0 -64
  560. package/src/lib/templates/usb-c-led-flashlight-template.ts +0 -22
  561. package/src/lib/ts-lib-cache.ts +0 -162
  562. package/src/lib/types.ts +0 -31
  563. package/src/lib/utils/checkIfManualEditsImported.ts +0 -20
  564. package/src/lib/utils/findTargetFile.ts +0 -97
  565. package/src/lib/utils/formatTimeAgo.ts +0 -10
  566. package/src/lib/utils/getPackagePreviewImageUrl.ts +0 -15
  567. package/src/lib/utils/index.ts +0 -6
  568. package/src/lib/utils/isComponentExported.ts +0 -10
  569. package/src/lib/utils/isUuid.ts +0 -5
  570. package/src/lib/utils/isValidFileName.ts +0 -17
  571. package/src/lib/utils/load-prettier.ts +0 -23
  572. package/src/lib/utils/member-role.tsx +0 -61
  573. package/src/lib/utils/package-utils.ts +0 -7
  574. package/src/lib/utils/parseJsonOrNull.ts +0 -8
  575. package/src/lib/utils/pcbManualEditEventHandler.ts +0 -156
  576. package/src/lib/utils/resolveRelativePath.ts +0 -40
  577. package/src/lib/utils/timeAgo.ts +0 -20
  578. package/src/lib/utils/toastManualEditConflicts.tsx +0 -39
  579. package/src/lib/utils/transformFilesToTreeData.tsx +0 -195
  580. package/src/main.tsx +0 -15
  581. package/src/pages/404.tsx +0 -23
  582. package/src/pages/authorize.tsx +0 -208
  583. package/src/pages/create-organization.tsx +0 -169
  584. package/src/pages/dashboard.tsx +0 -254
  585. package/src/pages/datasheet.tsx +0 -198
  586. package/src/pages/datasheets.tsx +0 -148
  587. package/src/pages/dev-login.tsx +0 -68
  588. package/src/pages/editor.tsx +0 -54
  589. package/src/pages/landing.tsx +0 -237
  590. package/src/pages/latest.tsx +0 -145
  591. package/src/pages/my-orders.tsx +0 -54
  592. package/src/pages/organization-profile.tsx +0 -197
  593. package/src/pages/organization-settings.tsx +0 -571
  594. package/src/pages/package-editor.tsx +0 -60
  595. package/src/pages/preview-release.tsx +0 -209
  596. package/src/pages/quickstart.tsx +0 -258
  597. package/src/pages/release-builds.tsx +0 -99
  598. package/src/pages/release-detail.tsx +0 -211
  599. package/src/pages/releases.tsx +0 -55
  600. package/src/pages/search.tsx +0 -288
  601. package/src/pages/settings-redirect.tsx +0 -44
  602. package/src/pages/trending.tsx +0 -201
  603. package/src/pages/user-profile.tsx +0 -330
  604. package/src/pages/user-settings.tsx +0 -161
  605. package/src/pages/view-package.tsx +0 -90
  606. package/src/types/package.ts +0 -4
  607. package/src/vite-env.d.ts +0 -1
  608. package/tailwind.config.js +0 -47
  609. package/tsconfig.json +0 -30
  610. package/vercel.json +0 -50
  611. package/vite.config.ts +0 -236
  612. package/winterspec.config.ts +0 -6
@@ -1,456 +0,0 @@
1
- // api/generated-index.js
2
- import ky from "ky"
3
- import { readFileSync } from "fs"
4
- import { join, dirname } from "path"
5
- import { fileURLToPath } from "url"
6
- import he from "he"
7
- const __filename = fileURLToPath(import.meta.url)
8
- const __dirname = dirname(__filename)
9
-
10
- const isDev =
11
- process.env.TSC_DEV_SSR === "true" || process.env.NODE_ENV === "development"
12
- const normalIndexFile = isDev
13
- ? join(__dirname, "../index.html")
14
- : join(__dirname, "../dist/index.html")
15
- let htmlContent = readFileSync(normalIndexFile, "utf-8")
16
-
17
- export function setHtmlContent(html) {
18
- htmlContent = html
19
- }
20
-
21
- const BASE_URL = process.env.TSC_BASE_URL || "https://tscircuit.com"
22
- const REGISTRY_URL = process.env.TSC_REGISTRY_API || "https://api.tscircuit.com"
23
-
24
- export const cacheControlHeader = "public, max-age=0, must-revalidate"
25
- const PREFETCHABLE_PAGES = new Set([
26
- "landing",
27
- "editor",
28
- "search",
29
- "trending",
30
- "dashboard",
31
- "latest",
32
- "settings",
33
- "quickstart",
34
- "releases",
35
- ])
36
-
37
- const pageDescriptions = {
38
- landing:
39
- "Build electronics with code and AI tools. Render code into schematics, PCBs, 3D, fabrication files, and more. Open-source MIT licensed electronic design automation tool.",
40
- dashboard:
41
- "Your tscircuit dashboard - manage your electronic circuit packages, view trending and latest packages, and access your recent designs.",
42
- search:
43
- "Search and discover electronic circuit packages on tscircuit. Find components, circuits, and designs created by the community.",
44
- editor:
45
- "Design and edit electronic circuits online with tscircuit's powerful web-based editor. Create schematics, PCB layouts, and 3D models with code.",
46
- trending:
47
- "Discover the most popular and trending electronic circuit packages on tscircuit. Find top-rated components, keyboards, microcontrollers, connectors, and sensors.",
48
- latest:
49
- "Explore the newest electronic circuit packages on tscircuit. Discover fresh circuit designs, components, and innovative approaches to electronic design.",
50
- quickstart:
51
- "Get started quickly with tscircuit. Create new circuit packages, import components from JLCPCB, or start from templates to begin your electronic design journey.",
52
- settings:
53
- "Manage your tscircuit account settings, shipping information, and preferences for electronic design and PCB ordering.",
54
- releases: "View all package releases, access build information.",
55
- }
56
-
57
- function getPageDescription(pageName) {
58
- return pageDescriptions[pageName] || ""
59
- }
60
-
61
- function getHtmlWithModifiedSeoTags({
62
- title,
63
- description,
64
- canonicalUrl,
65
- imageUrl,
66
- ssrPackageData,
67
- }) {
68
- const seoStartTag = "<!-- SEO_START -->"
69
- const seoEndTag = "<!-- SEO_END -->"
70
- const seoStartIndex = htmlContent.indexOf(seoStartTag)
71
- const seoEndIndex = htmlContent.indexOf(seoEndTag) + seoEndTag.length
72
-
73
- const seoTags = `
74
- <title>${title}</title>
75
- <meta name="description"
76
- content="${description}" />
77
- <meta name="keywords"
78
- content="electronic design, PCB design, schematic capture, React components, circuit design, electronics CAD, open source EDA, ${title}" />
79
- <meta property="og:title" content="${title}" />
80
- <meta property="og:description"
81
- content="${description}" />
82
- <meta property="og:type" content="website" />
83
- <meta name="twitter:card" content="summary_large_image" />
84
- <meta name="twitter:title" content="${title}" />
85
- <meta name="twitter:description" content="${description}" />
86
- ${imageUrl ? `<meta property="og:image" content="${imageUrl}" />` : ""}
87
- ${imageUrl ? `<meta name="twitter:image" content="${imageUrl}" />` : ""}
88
- <link rel="canonical" href="${canonicalUrl}" />
89
- `
90
-
91
- // First replace SEO tags
92
- let modifiedHtml = `${htmlContent.substring(
93
- 0,
94
- seoStartIndex,
95
- )}${seoTags}${htmlContent.substring(seoEndIndex)}`
96
-
97
- // Then handle SSR data injection
98
- if (ssrPackageData) {
99
- const ssrStartTag = "<!-- SSR_START -->"
100
- const ssrEndTag = "<!-- SSR_END -->"
101
- const {
102
- package: packageData,
103
- packageRelease,
104
- packageFiles,
105
- } = ssrPackageData
106
-
107
- const assignments = []
108
- if (packageData) {
109
- assignments.push(`window.SSR_PACKAGE = ${JSON.stringify(packageData)};`)
110
- }
111
- if (packageRelease) {
112
- assignments.push(
113
- `window.SSR_PACKAGE_RELEASE = ${JSON.stringify(packageRelease)};`,
114
- )
115
- }
116
- if (packageFiles) {
117
- assignments.push(
118
- `window.SSR_PACKAGE_FILES = ${JSON.stringify(packageFiles)};`,
119
- )
120
- }
121
-
122
- const ssrScripts =
123
- assignments.length > 0 ? `<script>${assignments.join(" ")}</script>` : ""
124
-
125
- if (ssrScripts) {
126
- const ssrContent = `\n ${ssrScripts}\n `
127
- modifiedHtml = modifiedHtml.replace(
128
- `${ssrStartTag}\n ${ssrEndTag}`,
129
- `${ssrStartTag}${ssrContent}${ssrEndTag}`,
130
- )
131
- }
132
- }
133
-
134
- return modifiedHtml
135
- }
136
-
137
- export async function handleUserProfile(req, res) {
138
- const username = req.url.split("/")[req.url.split("/").length - 1]
139
-
140
- if (!username) {
141
- throw new Error("Username not provided")
142
- }
143
-
144
- const description = he.encode(`Circuits created by ${username} on tscircuit`)
145
-
146
- const title = he.encode(`${username} - tscircuit`)
147
-
148
- const html = getHtmlWithModifiedSeoTags({
149
- title,
150
- description,
151
- canonicalUrl: `${BASE_URL}/${he.encode(username)}`,
152
- imageUrl: `https://github.com/${username}.png`,
153
- })
154
-
155
- res.setHeader("Content-Type", "text/html; charset=utf-8")
156
- res.setHeader("Cache-Control", cacheControlHeader)
157
- res.setHeader("Vary", "Accept-Encoding")
158
- res.status(200).send(html)
159
- }
160
-
161
- async function handleDatasheetPage(req, res) {
162
- const parts = req.url.split("?")[0].split("/")
163
- if (parts[1] !== "datasheets" || !parts[2]) {
164
- throw new Error("Not a datasheet page")
165
- }
166
- const chipName = parts[2]
167
-
168
- const html = getHtmlWithModifiedSeoTags({
169
- title: `${chipName} Datasheet - tscircuit`,
170
- description: `View the ${chipName} datasheet on tscircuit.`,
171
- canonicalUrl: `${BASE_URL}/datasheets/${he.encode(chipName)}`,
172
- })
173
-
174
- res.setHeader("Content-Type", "text/html; charset=utf-8")
175
- res.setHeader("Cache-Control", cacheControlHeader)
176
- res.setHeader("Vary", "Accept-Encoding")
177
- res.status(200).send(html)
178
- }
179
-
180
- async function handleCustomPackageHtml(req, res) {
181
- // Get the author and package name
182
- const [_, author, unscopedPackageName, other] = req.url
183
- .split("?")[0]
184
- .split("/")
185
- if (unscopedPackageName === "settings") {
186
- throw new Error("Organization settings route")
187
- }
188
- if (other == "releases" || other == "release") {
189
- throw new Error("Release route")
190
- }
191
- if (!author || !unscopedPackageName) {
192
- throw new Error("Invalid author/package URL")
193
- }
194
- if (author === "datasheets") {
195
- throw new Error("Datasheet route")
196
- }
197
-
198
- const packageNotFoundHtml = getHtmlWithModifiedSeoTags({
199
- title: "Package Not Found - tscircuit",
200
- description: `The package ${author}/${unscopedPackageName} could not be found.`,
201
- canonicalUrl: `${BASE_URL}/${he.encode(author)}/${he.encode(
202
- unscopedPackageName,
203
- )}`,
204
- })
205
- const packageDetails = await ky
206
- .get(`${REGISTRY_URL}/packages/get`, {
207
- searchParams: {
208
- name: `${author}/${unscopedPackageName}`,
209
- },
210
- })
211
- .json()
212
- .catch((e) => {
213
- if (String(e).includes("404")) {
214
- return null
215
- }
216
- throw e
217
- })
218
-
219
- if (!packageDetails) {
220
- res.setHeader("Content-Type", "text/html; charset=utf-8")
221
- res.setHeader("Cache-Control", cacheControlHeader)
222
- res.setHeader("Vary", "Accept-Encoding")
223
- res.status(404).send(packageNotFoundHtml)
224
- return
225
- }
226
-
227
- const { package: packageInfo } = packageDetails
228
-
229
- let packageRelease = null
230
- let packageFiles = null
231
- try {
232
- const releaseResponse = await ky
233
- .post(`${REGISTRY_URL}/package_releases/get`, {
234
- json: {
235
- package_id: packageInfo.package_id,
236
- is_latest: true,
237
- },
238
- })
239
- .json()
240
- packageRelease = releaseResponse.package_release
241
-
242
- // Get package files for the latest release
243
- if (packageRelease?.package_release_id) {
244
- try {
245
- const filesResponse = await ky
246
- .get(`${REGISTRY_URL}/package_files/list`, {
247
- searchParams: {
248
- package_release_id: packageRelease.package_release_id,
249
- },
250
- })
251
- .json()
252
- packageFiles = filesResponse.package_files || []
253
- } catch (e) {
254
- console.warn("Failed to fetch package files:", e)
255
- }
256
- }
257
- } catch (e) {
258
- console.warn("Failed to fetch package release:", e)
259
- }
260
-
261
- const description = he.encode(
262
- `${
263
- packageInfo.description ||
264
- packageInfo.ai_description ||
265
- "A tscircuit component created by " + author
266
- } ${packageInfo.ai_usage_instructions ?? ""}`,
267
- )
268
- const title = he.encode(`${packageInfo.name} - tscircuit`)
269
-
270
- const allowedViews = ["schematic", "pcb", "assembly", "3d"]
271
- const defaultView = packageInfo.default_view || "pcb"
272
- const thumbnailView = allowedViews.includes(defaultView) ? defaultView : "pcb"
273
- const imageUrl = `${REGISTRY_URL}/packages/images/${he.encode(
274
- author,
275
- )}/${he.encode(unscopedPackageName)}/${thumbnailView}.png?fs_sha=${
276
- packageInfo.latest_package_release_fs_sha
277
- }`
278
-
279
- const html = getHtmlWithModifiedSeoTags({
280
- title,
281
- description,
282
- canonicalUrl: `${BASE_URL}/${he.encode(author)}/${he.encode(
283
- unscopedPackageName,
284
- )}`,
285
- imageUrl,
286
- ssrPackageData: { package: packageInfo, packageRelease, packageFiles },
287
- })
288
-
289
- res.setHeader("Content-Type", "text/html; charset=utf-8")
290
- res.setHeader("Cache-Control", cacheControlHeader)
291
- // Add ETag support for better caching
292
- res.setHeader("Vary", "Accept-Encoding")
293
- res.status(200).send(html)
294
- }
295
-
296
- async function handleOrganizationSettings(req, res) {
297
- const [_, orgSlug, settings] = req.url.split("?")[0].split("/")
298
- if (!orgSlug || settings !== "settings") {
299
- throw new Error("Not an organization settings route")
300
- }
301
-
302
- const encodedSlugForUrl = encodeURIComponent(orgSlug)
303
- const title = he.encode(`${orgSlug} Settings - tscircuit`)
304
- const description = he.encode(
305
- `Manage the ${orgSlug} organization settings on tscircuit.`,
306
- )
307
-
308
- const html = getHtmlWithModifiedSeoTags({
309
- title,
310
- description,
311
- canonicalUrl: he.encode(`${BASE_URL}/${encodedSlugForUrl}/settings`),
312
- })
313
-
314
- res.setHeader("Content-Type", "text/html; charset=utf-8")
315
- res.setHeader("Cache-Control", cacheControlHeader)
316
- res.setHeader("Vary", "Accept-Encoding")
317
- res.status(200).send(html)
318
- }
319
- async function handleCustomPage(req, res) {
320
- const [_, page] = req.url.split("?")[0].split("/")
321
-
322
- if (page === "landing" || !page) {
323
- throw new Error("Use landing.html content")
324
- }
325
-
326
- if (!PREFETCHABLE_PAGES.has(page)) {
327
- throw new Error("Not a route that can be prefetched")
328
- }
329
-
330
- const pageDescription = getPageDescription(page)
331
-
332
- const html = getHtmlWithModifiedSeoTags({
333
- title: `${page.charAt(0).toUpperCase() + page.slice(1)} - tscircuit`,
334
- description: pageDescription,
335
- canonicalUrl: `${BASE_URL}/${page}`,
336
- })
337
-
338
- res.setHeader("Content-Type", "text/html; charset=utf-8")
339
- res.setHeader("Cache-Control", cacheControlHeader)
340
- res.setHeader("Vary", "Accept-Encoding")
341
- res.status(200).send(html)
342
- }
343
-
344
- async function handleReleasePreview(req, res) {
345
- const [_, author, unscopedPackageName, releaseId] = req.url
346
- .split("?")[0]
347
- .split("/")
348
-
349
- if (!author || !unscopedPackageName || !releaseId) {
350
- throw new Error("Invalid author/package/release URL")
351
- }
352
- const packageDetails = await ky
353
- .get(`${REGISTRY_URL}/packages/get`, {
354
- searchParams: {
355
- name: `${author}/${unscopedPackageName}`,
356
- },
357
- })
358
- .json()
359
- .catch((e) => {
360
- if (String(e).includes("404")) {
361
- return null
362
- }
363
- throw e
364
- })
365
- const packageNotFoundHtml = getHtmlWithModifiedSeoTags({
366
- title: "Package Not Found - tscircuit",
367
- description: `Release for package ${author}/${unscopedPackageName} could not be found.`,
368
- canonicalUrl: `${BASE_URL}/${he.encode(author)}/${he.encode(
369
- unscopedPackageName,
370
- )}`,
371
- })
372
- if (!packageDetails) {
373
- res.setHeader("Content-Type", "text/html; charset=utf-8")
374
- res.setHeader("Cache-Control", cacheControlHeader)
375
- res.setHeader("Vary", "Accept-Encoding")
376
- res.status(404).send(packageNotFoundHtml)
377
- return
378
- }
379
-
380
- const { package: packageInfo } = packageDetails
381
- const title = he.encode(`Release preview for ${packageInfo.name} - tscircuit`)
382
-
383
- const html = getHtmlWithModifiedSeoTags({
384
- title,
385
- description: pageDescriptions["releases"],
386
- ssrPackageData: { package: packageInfo },
387
- })
388
-
389
- res.setHeader("Content-Type", "text/html; charset=utf-8")
390
- res.setHeader("Cache-Control", cacheControlHeader)
391
- res.setHeader("Vary", "Accept-Encoding")
392
- res.status(200).send(html)
393
- }
394
-
395
- export default async function handler(req, res) {
396
- const urlPath = req.url.split("?")[0]
397
- if (urlPath === "/api/generated-index") {
398
- res.setHeader("Content-Type", "text/html; charset=utf-8")
399
- res.setHeader("Cache-Control", cacheControlHeader)
400
- res.setHeader("Vary", "Accept-Encoding")
401
- res.status(200).send(htmlContent)
402
- return
403
- }
404
-
405
- const pathParts = req.url.split("?")[0].split("/")
406
-
407
- try {
408
- await handleCustomPackageHtml(req, res)
409
- return
410
- } catch (e) {
411
- console.warn(e)
412
- }
413
-
414
- try {
415
- await handleReleasePreview(req, res)
416
- return
417
- } catch (e) {
418
- console.warn(e)
419
- }
420
-
421
- if (pathParts[1] === "datasheets" && pathParts[2]) {
422
- try {
423
- await handleDatasheetPage(req, res)
424
- return
425
- } catch (e) {
426
- console.warn(e)
427
- }
428
- }
429
-
430
- try {
431
- await handleOrganizationSettings(req, res)
432
- return
433
- } catch (e) {
434
- console.warn(e)
435
- }
436
-
437
- try {
438
- await handleCustomPage(req, res)
439
- return
440
- } catch (e) {
441
- console.warn(e)
442
- }
443
-
444
- try {
445
- await handleUserProfile(req, res)
446
- return
447
- } catch (e) {
448
- console.warn(e)
449
- }
450
-
451
- res.setHeader("Content-Type", "text/html; charset=utf-8")
452
- res.setHeader("Cache-Control", cacheControlHeader)
453
- // Add ETag support for better caching
454
- res.setHeader("Vary", "Accept-Encoding")
455
- res.status(200).send(htmlContent)
456
- }
package/biome.json DELETED
@@ -1,67 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json",
3
- "organizeImports": {
4
- "enabled": true
5
- },
6
- "formatter": {
7
- "enabled": true,
8
- "indentStyle": "space"
9
- },
10
- "files": {
11
- "ignore": [
12
- "cosmos-export",
13
- "dist",
14
- "package.json",
15
- ".vercel",
16
- "src/index.css",
17
- "renovate.json"
18
- ]
19
- },
20
- "javascript": {
21
- "formatter": {
22
- "jsxQuoteStyle": "double",
23
- "quoteProperties": "asNeeded",
24
- "trailingCommas": "all",
25
- "semicolons": "asNeeded",
26
- "arrowParentheses": "always",
27
- "bracketSpacing": true,
28
- "bracketSameLine": false
29
- }
30
- },
31
- "linter": {
32
- "enabled": false,
33
- "rules": {
34
- "recommended": true,
35
- "suspicious": {
36
- "noExplicitAny": "off"
37
- },
38
- "style": {
39
- "noNonNullAssertion": "off",
40
- "useNumberNamespace": "off",
41
- "useFilenamingConvention": {
42
- "level": "error",
43
- "options": {
44
- "strictCase": true,
45
- "requireAscii": true,
46
- "filenameCases": ["kebab-case", "export"]
47
- }
48
- },
49
- "useNamingConvention": {
50
- "level": "error",
51
- "options": {
52
- "strictCase": true,
53
- "requireAscii": true,
54
- "conventions": [
55
- {
56
- "selector": {
57
- "kind": "const"
58
- },
59
- "formats": ["camelCase"]
60
- }
61
- ]
62
- }
63
- }
64
- }
65
- }
66
- }
67
- }
@@ -1,141 +0,0 @@
1
- import defaultAxios from "redaxios"
2
- import { startServer } from "./start-server"
3
- import { DbClient } from "fake-snippets-api/lib/db/db-client"
4
-
5
- process.env.BUN_TEST = "true"
6
- interface TestFixture {
7
- url: string
8
- server: any
9
- axios: typeof defaultAxios
10
- jane_axios: typeof defaultAxios
11
- unauthenticatedAxios: typeof defaultAxios
12
- db: DbClient
13
- seed: ReturnType<typeof seedDatabase>
14
- }
15
-
16
- export const getTestServer = async (): Promise<TestFixture> => {
17
- const testInstanceId = Math.random().toString(36).substring(2, 15)
18
- const testDbName = `testdb${testInstanceId}`
19
-
20
- const { server, db, port } = await startServer({
21
- testDbName,
22
- })
23
-
24
- const url = `http://127.0.0.1:${port}`
25
- const seed = seedDatabase(db)
26
- const axios = defaultAxios.create({
27
- baseURL: url,
28
- headers: {
29
- Authorization: `Bearer ${seed.account.account_id}`,
30
- },
31
- })
32
- const jane_axios = defaultAxios.create({
33
- baseURL: url,
34
- headers: {
35
- Authorization: `Bearer ${seed.account2.account_id}`,
36
- },
37
- })
38
- const unauthenticatedAxios = defaultAxios.create({
39
- baseURL: url,
40
- })
41
-
42
- globalThis.deferredCleanupFns.push(async () => {
43
- if (server && typeof server.stop === "function") {
44
- await server.stop()
45
- }
46
- })
47
-
48
- return {
49
- url,
50
- server,
51
- axios,
52
- jane_axios,
53
- unauthenticatedAxios,
54
- db,
55
- seed,
56
- }
57
- }
58
-
59
- const seedDatabase = (db: DbClient) => {
60
- const account = db.addAccount({
61
- github_username: "testuser",
62
- shippingInfo: {
63
- firstName: "Test",
64
- lastName: "User",
65
- companyName: "Test Company",
66
- address: "123 Test St",
67
- apartment: "Apt 4B",
68
- city: "Testville",
69
- state: "NY",
70
- zipCode: "10001",
71
- country: "United States of America",
72
- phone: "555-123-4567",
73
- },
74
- })
75
-
76
- // Create personal organization for the main test account
77
- const personalOrg = db.addOrganization({
78
- org_id: "personal-org-1",
79
- name: "testuser",
80
- owner_account_id: account.account_id,
81
- is_personal_org: true,
82
- })
83
-
84
- // Add the account as a member of their personal org
85
- db.addOrganizationAccount({
86
- org_id: personalOrg.org_id,
87
- account_id: account.account_id,
88
- is_owner: true,
89
- })
90
-
91
- const account2 = db.addAccount({
92
- github_username: "jane",
93
- })
94
- const order = db.addOrder({
95
- account_id: account.account_id,
96
- is_running: false,
97
- is_started: false,
98
- is_finished: false,
99
- error: null,
100
- has_error: false,
101
- circuit_json: [
102
- {
103
- type: "source_component",
104
- ftype: "simple_resistor",
105
- source_component_id: "source_component_1",
106
- name: "R1",
107
- resistance: "1k",
108
- },
109
- ],
110
- created_at: new Date().toISOString(),
111
- started_at: null,
112
- completed_at: null,
113
- })
114
-
115
- // Seed a package release
116
- const packageRelease = db.addPackageRelease({
117
- package_id: "pkg_1",
118
- version: "0.0.1",
119
- created_at: new Date().toISOString(),
120
- is_latest: true,
121
- is_locked: false,
122
- has_transpiled: true,
123
- transpilation_error: null,
124
- })
125
-
126
- // Seed a organization for account2
127
- const organization = db.addOrganization({
128
- name: "jane",
129
- github_handle: "jane",
130
- owner_account_id: account2.account_id,
131
- })
132
-
133
- // Add account2 as a member of their org
134
- db.addOrganizationAccount({
135
- org_id: organization.org_id,
136
- account_id: account2.account_id,
137
- is_owner: true,
138
- })
139
-
140
- return { account, account2, order, packageRelease, organization }
141
- }
@@ -1,18 +0,0 @@
1
- import { afterEach } from "bun:test"
2
-
3
- declare global {
4
- // Add the property to the globalThis type
5
- // eslint-disable-next-line no-var
6
- var deferredCleanupFns: Array<() => Promise<void>>
7
- }
8
-
9
- if (!globalThis.deferredCleanupFns) {
10
- globalThis.deferredCleanupFns = []
11
- }
12
-
13
- afterEach(async () => {
14
- for (const fn of globalThis.deferredCleanupFns) {
15
- await fn()
16
- }
17
- globalThis.deferredCleanupFns = []
18
- })