@tscircuit/cli 0.0.116 → 0.0.119

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 (58) hide show
  1. package/.github/workflows/release.yml +1 -1
  2. package/.github/workflows/server-tests.yml +31 -0
  3. package/.github/workflows/test.yml +4 -1
  4. package/README.md +1 -2
  5. package/bun.lockb +0 -0
  6. package/dev-server-api/bun.lockb +0 -0
  7. package/dev-server-api/package.json +2 -4
  8. package/dev-server-api/routes/api/db/download.ts +25 -0
  9. package/dev-server-api/routes/api/dev_package_examples/create.ts +15 -25
  10. package/dev-server-api/routes/api/dev_package_examples/get.ts +12 -21
  11. package/dev-server-api/routes/api/dev_package_examples/list.ts +17 -22
  12. package/dev-server-api/routes/api/dev_package_examples/update.ts +39 -37
  13. package/dev-server-api/routes/api/dev_server/reset.ts +6 -8
  14. package/dev-server-api/routes/api/export_files/create.ts +10 -13
  15. package/dev-server-api/routes/api/export_files/download.ts +10 -7
  16. package/dev-server-api/routes/api/export_requests/create.ts +11 -15
  17. package/dev-server-api/routes/api/export_requests/get.ts +24 -15
  18. package/dev-server-api/routes/api/export_requests/list.ts +9 -10
  19. package/dev-server-api/routes/api/export_requests/update.ts +18 -18
  20. package/dev-server-api/routes/api/package_info/create.ts +9 -11
  21. package/dev-server-api/routes/api/package_info/get.ts +5 -8
  22. package/dev-server-api/routes/index.ts +16 -0
  23. package/dev-server-api/server.ts +1 -1
  24. package/dev-server-api/src/db/get-db.ts +11 -102
  25. package/dev-server-api/src/db/schema.ts +65 -0
  26. package/dev-server-api/src/db/zod-level-db.ts +146 -0
  27. package/dev-server-api/src/middlewares/with-db.ts +7 -3
  28. package/dev-server-api/static-routes.ts +3 -1
  29. package/dev-server-api/tests/fixtures/get-test-server.ts +30 -0
  30. package/dev-server-api/tests/fixtures/start-server.ts +20 -0
  31. package/dev-server-api/tests/routes/dev_package_examples/create.test.ts +19 -0
  32. package/dev-server-api/tests/routes/dev_package_examples/get.test.ts +25 -0
  33. package/dev-server-api/tests/routes/dev_package_examples/list.test.ts +32 -0
  34. package/dev-server-api/tests/routes/dev_package_examples/update.test.ts +28 -0
  35. package/dev-server-api/tests/routes/export_files/create.test.ts +18 -0
  36. package/dev-server-api/tests/routes/export_files/download.test.ts +29 -0
  37. package/dev-server-api/tests/routes/export_requests/create.test.ts +24 -0
  38. package/dev-server-api/tests/routes/export_requests/get.test.ts +41 -0
  39. package/dev-server-api/tests/routes/export_requests/list.test.ts +35 -0
  40. package/dev-server-api/tests/routes/export_requests/update.test.ts +50 -0
  41. package/dev-server-api/tests/routes/health.test.ts +10 -0
  42. package/dist/cli.js +487 -368
  43. package/lib/cmd-fns/dev/index.ts +14 -11
  44. package/package.json +6 -8
  45. package/tests/open.test.ts +1 -2
  46. package/tests/soupify.test.ts +1 -1
  47. package/dev-server-api/src/lib/zod/export_file.ts +0 -8
  48. package/dev-server-api/src/lib/zod/export_package_info.ts +0 -5
  49. package/dev-server-api/src/lib/zod/export_request.ts +0 -21
  50. /package/{tests/assets/example-project → example-project}/README.md +0 -0
  51. /package/{tests/assets/example-project → example-project}/examples/basic-bug.tsx +0 -0
  52. /package/{tests/assets/example-project → example-project}/examples/basic-capacitor.tsx +0 -0
  53. /package/{tests/assets/example-project → example-project}/examples/basic-resistor.tsx +0 -0
  54. /package/{tests/assets/example-project → example-project}/index.ts +0 -0
  55. /package/{tests/assets/example-project → example-project}/package-lock.json +0 -0
  56. /package/{tests/assets/example-project → example-project}/package.json +0 -0
  57. /package/{tests/assets/example-project → example-project}/src/MyCircuit.tsx +0 -0
  58. /package/{tests/assets/example-project → example-project}/src/manual-edits.ts +0 -0
@@ -0,0 +1,24 @@
1
+ import { it, expect } from "bun:test"
2
+ import { getTestFixture } from "tests/fixtures/get-test-server"
3
+
4
+ it("POST /api/export_requests/create", async () => {
5
+ const { axios } = await getTestFixture()
6
+
7
+ const res = await axios.post("/api/export_requests/create", {
8
+ example_file_path: "examples/test-example.tsx",
9
+ export_name: "default",
10
+ export_parameters: { should_export_gerber_zip: true },
11
+ })
12
+
13
+ expect(res.status).toBe(200)
14
+ expect(res.data.export_request).toBeDefined()
15
+ expect(res.data.export_request.example_file_path).toBe(
16
+ "examples/test-example.tsx"
17
+ )
18
+ expect(res.data.export_request.export_name).toBe("default")
19
+ expect(res.data.export_request.export_parameters).toMatchObject({
20
+ should_export_gerber_zip: true,
21
+ })
22
+ expect(res.data.export_request.is_complete).toBe(false)
23
+ expect(res.data.export_request.has_error).toBe(false)
24
+ })
@@ -0,0 +1,41 @@
1
+ import { it, expect } from "bun:test"
2
+ import { getTestFixture } from "tests/fixtures/get-test-server"
3
+
4
+ it("GET /api/export_requests/get", async () => {
5
+ const { axios } = await getTestFixture()
6
+
7
+ // First, create an export request
8
+ const createRes = await axios.post("/api/export_requests/create", {
9
+ example_file_path: "examples/test-example.tsx",
10
+ export_name: "default",
11
+ export_parameters: { should_export_gerber_zip: true },
12
+ })
13
+
14
+ const exportRequestId = createRes.data.export_request.export_request_id
15
+
16
+ // Now, get the export request
17
+ const getRes = await axios.post(`/api/export_requests/get`, {
18
+ export_request_id: exportRequestId,
19
+ })
20
+
21
+ expect(getRes.status).toBe(200)
22
+ expect(getRes.data.export_request).toBeDefined()
23
+ expect(getRes.data.export_request.export_request_id).toBe(exportRequestId)
24
+ expect(getRes.data.export_request.example_file_path).toBe(
25
+ "examples/test-example.tsx"
26
+ )
27
+ expect(getRes.data.export_request.export_name).toBe("default")
28
+ expect(getRes.data.export_request.export_parameters).toMatchObject({
29
+ should_export_gerber_zip: true,
30
+ })
31
+ })
32
+
33
+ it("GET /api/export_requests/get - Not Found", async () => {
34
+ const { axios } = await getTestFixture()
35
+
36
+ try {
37
+ await axios.post("/api/export_requests/get", { export_request_id: 999999 })
38
+ } catch (error: any) {
39
+ expect(error.status).toBe(404)
40
+ }
41
+ })
@@ -0,0 +1,35 @@
1
+ import { it, expect } from "bun:test"
2
+ import { getTestFixture } from "tests/fixtures/get-test-server"
3
+
4
+ it("GET /api/export_requests/list", async () => {
5
+ const { axios } = await getTestFixture()
6
+
7
+ // Create two export requests
8
+ await axios.post("/api/export_requests/create", {
9
+ example_file_path: "examples/test-example1.tsx",
10
+ export_name: "default",
11
+ export_parameters: { format: "gerber" },
12
+ })
13
+
14
+ await axios.post("/api/export_requests/create", {
15
+ example_file_path: "examples/test-example2.tsx",
16
+ export_name: "default",
17
+ export_parameters: { format: "svg" },
18
+ })
19
+
20
+ // List all export requests
21
+ const listRes = await axios.post("/api/export_requests/list", {})
22
+
23
+ expect(listRes.status).toBe(200)
24
+ expect(listRes.data.export_requests).toBeDefined()
25
+ expect(Array.isArray(listRes.data.export_requests)).toBe(true)
26
+
27
+ // List completed export requests (should be empty)
28
+ const completedRes = await axios.post("/api/export_requests/list", {
29
+ is_complete: true,
30
+ })
31
+
32
+ expect(completedRes.status).toBe(200)
33
+ expect(completedRes.data.export_requests).toBeDefined()
34
+ expect(Array.isArray(completedRes.data.export_requests)).toBe(true)
35
+ })
@@ -0,0 +1,50 @@
1
+ import { it, expect } from "bun:test"
2
+ import { getTestFixture } from "tests/fixtures/get-test-server"
3
+
4
+ it("POST /api/export_requests/update", async () => {
5
+ const { axios } = await getTestFixture()
6
+
7
+ // First, create an export request
8
+ const createRes = await axios.post("/api/export_requests/create", {
9
+ example_file_path: "examples/test-example.tsx",
10
+ export_name: "default",
11
+ export_parameters: { format: "gerber", should_export_gerber_zip: true },
12
+ })
13
+
14
+ const exportRequestId = createRes.data.export_request.export_request_id
15
+
16
+ // Now, update the export request
17
+ const updateRes = await axios.post("/api/export_requests/update", {
18
+ export_request_id: exportRequestId,
19
+ is_complete: true,
20
+ has_error: false,
21
+ })
22
+
23
+ expect(updateRes.status).toBe(200)
24
+ expect(updateRes.data.export_request).toBeDefined()
25
+ expect(updateRes.data.export_request.export_request_id).toBe(exportRequestId)
26
+ expect(updateRes.data.export_request.is_complete).toBe(true)
27
+ expect(updateRes.data.export_request.has_error).toBe(false)
28
+
29
+ // // Verify the update
30
+ const getRes = await axios.post(`/api/export_requests/get`, {
31
+ export_request_id: exportRequestId,
32
+ })
33
+
34
+ expect(getRes.status).toBe(200)
35
+ expect(getRes.data.export_request.is_complete).toBe(true)
36
+ expect(getRes.data.export_request.has_error).toBe(false)
37
+ })
38
+
39
+ it("POST /api/export_requests/update - Not Found", async () => {
40
+ const { axios } = await getTestFixture()
41
+
42
+ try {
43
+ await axios.post("/api/export_requests/update", {
44
+ export_request_id: 999999,
45
+ is_complete: true,
46
+ })
47
+ } catch (error: any) {
48
+ expect(error.status).toBe(404)
49
+ }
50
+ })
@@ -0,0 +1,10 @@
1
+ import { it, expect } from "bun:test"
2
+ import { getTestFixture } from "../fixtures/get-test-server"
3
+
4
+ it("GET /health", async () => {
5
+ const { axios } = await getTestFixture()
6
+
7
+ expect(await axios.get("/health").then((r) => r.data)).toMatchObject({
8
+ ok: true,
9
+ })
10
+ })