@tscircuit/fake-snippets 0.0.110 → 0.0.111

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 (32) hide show
  1. package/bun-tests/fake-snippets-api/fixtures/get-test-server.ts +1 -0
  2. package/bun-tests/fake-snippets-api/routes/orgs/create.test.ts +2 -2
  3. package/bun-tests/fake-snippets-api/routes/orgs/update.test.ts +52 -0
  4. package/bun.lock +14 -2
  5. package/dist/bundle.js +81 -36
  6. package/dist/index.d.ts +33 -13
  7. package/dist/index.js +10 -6
  8. package/dist/schema.d.ts +24 -8
  9. package/dist/schema.js +5 -3
  10. package/fake-snippets-api/lib/db/db-client.ts +7 -3
  11. package/fake-snippets-api/lib/db/schema.ts +3 -2
  12. package/fake-snippets-api/lib/middleware/with-session-auth.ts +59 -7
  13. package/fake-snippets-api/lib/public-mapping/public-map-org.ts +3 -2
  14. package/fake-snippets-api/routes/api/orgs/create.ts +4 -2
  15. package/fake-snippets-api/routes/api/orgs/get.ts +1 -1
  16. package/fake-snippets-api/routes/api/orgs/list_members.ts +1 -8
  17. package/fake-snippets-api/routes/api/orgs/update.ts +31 -6
  18. package/fake-snippets-api/routes/api/packages/create.ts +5 -2
  19. package/package.json +6 -4
  20. package/src/App.tsx +3 -5
  21. package/src/components/DownloadButtonAndMenu.tsx +14 -1
  22. package/src/components/SentryNotFoundReporter.tsx +44 -0
  23. package/src/components/organization/OrganizationCard.tsx +5 -3
  24. package/src/hooks/use-hydration.ts +30 -0
  25. package/src/hooks/use-org-by-github-handle.ts +1 -1
  26. package/src/lib/download-fns/download-kicad-files.ts +10 -0
  27. package/src/lib/download-fns/download-step.ts +12 -0
  28. package/src/pages/create-organization.tsx +1 -0
  29. package/src/pages/organization-settings.tsx +4 -1
  30. package/src/pages/search.tsx +7 -2
  31. package/src/pages/user-settings.tsx +161 -0
  32. package/src/pages/view-package.tsx +23 -3
@@ -126,6 +126,7 @@ const seedDatabase = (db: DbClient) => {
126
126
  // Seed a organization for account2
127
127
  const organization = db.addOrganization({
128
128
  name: "jane",
129
+ github_handle: "jane",
129
130
  owner_account_id: account2.account_id,
130
131
  })
131
132
 
@@ -23,8 +23,8 @@ test("POST /api/orgs/create - should create a new org for the user", async () =>
23
23
  test("POST /api/orgs/create - should reject duplicate org names", async () => {
24
24
  const { axios, seed } = await getTestServer()
25
25
  try {
26
- const orgResponse = await axios.post("/api/orgs/create", {
27
- name: seed.organization.github_handle,
26
+ await axios.post("/api/orgs/create", {
27
+ name: seed.organization.org_name,
28
28
  })
29
29
  throw new Error("Expected request to fail")
30
30
  } catch (error: any) {
@@ -97,3 +97,55 @@ test("POST /api/orgs/update - should reject duplicate name", async () => {
97
97
  )
98
98
  }
99
99
  })
100
+
101
+ test("POST /api/orgs/update - should update github_handle when owner", async () => {
102
+ const { axios, db } = await getTestServer()
103
+
104
+ const createResponse = await axios.post("/api/orgs/create", {
105
+ name: "handle-owner",
106
+ })
107
+ const org = createResponse.data.org
108
+
109
+ const updateResponse = await axios.post("/api/orgs/update", {
110
+ org_id: org.org_id,
111
+ github_handle: "handle-owner",
112
+ })
113
+
114
+ expect(updateResponse.status).toBe(200)
115
+
116
+ const state = db.getState()
117
+ const updatedOrg = state.organizations.find(
118
+ (o: any) => o.org_id === org.org_id,
119
+ )
120
+ expect(updatedOrg?.github_handle).toBe("handle-owner")
121
+ })
122
+
123
+ test("POST /api/orgs/update - should reject duplicate github_handle", async () => {
124
+ const { axios } = await getTestServer()
125
+
126
+ const orgAResponse = await axios.post("/api/orgs/create", {
127
+ name: "dup-handle-a",
128
+ })
129
+ const orgA = orgAResponse.data.org
130
+
131
+ await axios.post("/api/orgs/update", {
132
+ org_id: orgA.org_id,
133
+ github_handle: "duplicate-handle",
134
+ })
135
+
136
+ const orgBResponse = await axios.post("/api/orgs/create", {
137
+ name: "dup-handle-b",
138
+ })
139
+ const orgB = orgBResponse.data.org
140
+
141
+ try {
142
+ await axios.post("/api/orgs/update", {
143
+ org_id: orgB.org_id,
144
+ github_handle: "duplicate-handle",
145
+ })
146
+ throw new Error("Expected request to fail")
147
+ } catch (error: any) {
148
+ expect(error.status).toBe(400)
149
+ expect(error.data.error.error_code).toBe("org_github_handle_already_exists")
150
+ }
151
+ })
package/bun.lock CHANGED
@@ -80,11 +80,12 @@
80
80
  "circuit-json-to-bom-csv": "^0.0.7",
81
81
  "circuit-json-to-gerber": "^0.0.29",
82
82
  "circuit-json-to-gltf": "^0.0.14",
83
- "circuit-json-to-kicad": "^0.0.3",
83
+ "circuit-json-to-kicad": "^0.0.9",
84
84
  "circuit-json-to-pnp-csv": "^0.0.7",
85
85
  "circuit-json-to-readable-netlist": "^0.0.13",
86
86
  "circuit-json-to-simple-3d": "^0.0.7",
87
87
  "circuit-json-to-spice": "^0.0.6",
88
+ "circuit-json-to-step": "^0.0.2",
88
89
  "circuit-json-to-tscircuit": "^0.0.9",
89
90
  "circuit-to-svg": "^0.0.202",
90
91
  "class-variance-authority": "^0.7.1",
@@ -144,6 +145,7 @@
144
145
  "sitemap": "^8.0.0",
145
146
  "sonner": "^1.5.0",
146
147
  "states-us": "^1.1.1",
148
+ "stepts": "^0.0.1",
147
149
  "svgo": "^4.0.0",
148
150
  "tailwind-merge": "^2.5.2",
149
151
  "tailwindcss": "^3.4.13",
@@ -1077,7 +1079,7 @@
1077
1079
 
1078
1080
  "circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.14", "", { "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-wasm"] }, "sha512-z+O7vlCpe5zhmsbZXdvG73S0t4XDwXyvCe4q+imR7oMMCqMv4xhIqSyHdazYnHuHrA/taTTrGQwWrFtFr18dTA=="],
1079
1081
 
1080
- "circuit-json-to-kicad": ["circuit-json-to-kicad@0.0.3", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-WrX1rUaRGOdsitKBk/fU9wgwpzxv7iZpVf7ORTWMUkui1iZ3gbXUNGAgKgrH0390SWFm0zGEiHlkLEqxWgu7ww=="],
1082
+ "circuit-json-to-kicad": ["circuit-json-to-kicad@0.0.9", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-TZYgvKNoCqIQnvE4NL4twgI1rIxvOU0YRzmK0mPvUbAW2yWLmsHO1Abr395XAh4ZR16q/eZyTxf/pr6vOc31tw=="],
1081
1083
 
1082
1084
  "circuit-json-to-pnp-csv": ["circuit-json-to-pnp-csv@0.0.7", "", { "dependencies": { "papaparse": "^5.4.1" }, "peerDependencies": { "@tscircuit/soup-util": "*", "typescript": "^5.0.0" } }, "sha512-WAdNRHtaPhQM8X5NN/43WMBKDCEKQSLShg/mHIZxMUzJviymnfbq6rJj/2WvDqm/bogey34PyTEHwF3mC7zxlQ=="],
1083
1085
 
@@ -1087,6 +1089,8 @@
1087
1089
 
1088
1090
  "circuit-json-to-spice": ["circuit-json-to-spice@0.0.6", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-rrjXZbbh3FFFJvExnJMJuVXEJZo3AuiQRaabBdonAEIccd05PTxmTvRCLNCrTTph71+NC4Q87mCgL7WFWBdtEw=="],
1089
1091
 
1092
+ "circuit-json-to-step": ["circuit-json-to-step@0.0.2", "", { "dependencies": { "@tscircuit/circuit-json-util": "^0.0.72", "circuit-json-to-connectivity-map": "^0.0.22", "circuit-json-to-gltf": "^0.0.19", "circuit-to-svg": "^0.0.226", "schematic-symbols": "^0.0.202" }, "peerDependencies": { "typescript": "^5" } }, "sha512-x5U91w89mZ+EVDnMnAR11JNaZ1ys118DKxHL799MJupAzKaeVgMZdruUObjFGIX03zm5FvOuz00CF8J3lxREZA=="],
1093
+
1090
1094
  "circuit-json-to-tscircuit": ["circuit-json-to-tscircuit@0.0.9", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-2B4E3kOU9zFbJ6SyCKcp9ktlay/Xf2gbLuGcWE8rBL3uuypJU3uX4MFjHVfwx8cbvB/0LTF5v3gHTYbxpiZMOg=="],
1091
1095
 
1092
1096
  "circuit-to-svg": ["circuit-to-svg@0.0.202", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" }, "peerDependencies": { "tscircuit": "*" } }, "sha512-NrhxmQw5TB6yaf3W6fJkSu0lFWBC7F2DVTLsTx2GrJwvcpuQvJIbsLVVNrQbh1/r8z4BOJeORteaQQ6ZGolIpQ=="],
@@ -2111,6 +2115,8 @@
2111
2115
 
2112
2116
  "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="],
2113
2117
 
2118
+ "stepts": ["stepts@0.0.1", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-yMt4V8v4KqcLL81jqUjCjkllBFFKpZJFDF1KDugcyCsXCXRCvQogf3N2lyQpauSWR2Ai6GZt8oMa4YwCO8nNbw=="],
2119
+
2114
2120
  "stream-shift": ["stream-shift@1.0.3", "", {}, "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="],
2115
2121
 
2116
2122
  "streamx": ["streamx@2.23.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="],
@@ -2389,6 +2395,12 @@
2389
2395
 
2390
2396
  "circuit-json-to-gerber/transformation-matrix": ["transformation-matrix@3.1.0", "", {}, "sha512-oYubRWTi2tYFHAL2J8DLvPIqIYcYZ0fSOi2vmSy042Ho4jBW2ce6VP7QfD44t65WQz6bw5w1Pk22J7lcUpaTKA=="],
2391
2397
 
2398
+ "circuit-json-to-step/@tscircuit/circuit-json-util": ["@tscircuit/circuit-json-util@0.0.72", "", { "dependencies": { "parsel-js": "^1.1.2" }, "peerDependencies": { "circuit-json": "*", "transformation-matrix": "*", "zod": "3" } }, "sha512-8KqdPYz1Q+rYgPuP9VBBxusLgq0MmpVw4FjLORNHYr2qfWmM1m/1OQEokZHZZZLTUbfcn86zUOcv69+LqHa0FA=="],
2399
+
2400
+ "circuit-json-to-step/circuit-json-to-gltf": ["circuit-json-to-gltf@0.0.19", "", { "dependencies": { "@jscad/modeling": "^2.12.6" }, "peerDependencies": { "@resvg/resvg-js": "2", "@resvg/resvg-wasm": "2", "@tscircuit/circuit-json-util": "*", "circuit-json": "*", "circuit-to-svg": "*", "typescript": "^5" }, "optionalPeers": ["@resvg/resvg-js", "@resvg/resvg-wasm"] }, "sha512-PvGcOJlttUu1hRVUQ4NLYqu9FbmfJBiyrahxyguPwT1x9Vvt6ht+LzZcX2thUQ4S+e6+1iiT1queiRqKKOMEjA=="],
2401
+
2402
+ "circuit-json-to-step/circuit-to-svg": ["circuit-to-svg@0.0.226", "", { "dependencies": { "@types/node": "^22.5.5", "bun-types": "^1.1.40", "calculate-elbow": "0.0.12", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" } }, "sha512-sd43kbLcpRQJriWndI9sCh5N/aWwp5u+dX1qybEDhjxYAcC6nHjO5KZjArHob5SoHKYfZwDU5Rtxh5+w11Im1g=="],
2403
+
2392
2404
  "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
2393
2405
 
2394
2406
  "connectivity-map/@biomejs/biome": ["@biomejs/biome@2.2.5", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.5", "@biomejs/cli-darwin-x64": "2.2.5", "@biomejs/cli-linux-arm64": "2.2.5", "@biomejs/cli-linux-arm64-musl": "2.2.5", "@biomejs/cli-linux-x64": "2.2.5", "@biomejs/cli-linux-x64-musl": "2.2.5", "@biomejs/cli-win32-arm64": "2.2.5", "@biomejs/cli-win32-x64": "2.2.5" }, "bin": { "biome": "bin/biome" } }, "sha512-zcIi+163Rc3HtyHbEO7CjeHq8DjQRs40HsGbW6vx2WI0tg8mYQOPouhvHSyEnCBAorfYNnKdR64/IxO7xQ5faw=="],