@tscircuit/fake-snippets 0.0.106 → 0.0.108

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 (43) hide show
  1. package/CLAUDE.md +92 -0
  2. package/api/generated-index.js +84 -25
  3. package/biome.json +7 -1
  4. package/bun-tests/fake-snippets-api/routes/package_builds/get.test.ts +0 -15
  5. package/bun-tests/fake-snippets-api/routes/package_builds/list.test.ts +0 -12
  6. package/dist/bundle.js +360 -434
  7. package/dist/index.d.ts +26 -15
  8. package/dist/index.js +40 -21
  9. package/dist/schema.d.ts +32 -24
  10. package/dist/schema.js +7 -5
  11. package/fake-snippets-api/lib/db/db-client.ts +19 -1
  12. package/fake-snippets-api/lib/db/schema.ts +6 -3
  13. package/fake-snippets-api/lib/db/seed.ts +23 -12
  14. package/fake-snippets-api/lib/public-mapping/public-map-package-build.ts +0 -3
  15. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +3 -0
  16. package/fake-snippets-api/routes/api/package_builds/list.ts +0 -1
  17. package/package.json +3 -2
  18. package/src/App.tsx +27 -9
  19. package/src/components/FileSidebar.tsx +14 -159
  20. package/src/components/PackageBreadcrumb.tsx +111 -0
  21. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +1 -1
  22. package/src/components/ViewPackagePage/components/sidebar-about-section.tsx +18 -2
  23. package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +18 -8
  24. package/src/components/preview/BuildsList.tsx +84 -167
  25. package/src/components/preview/ConnectedPackagesList.tsx +92 -62
  26. package/src/components/preview/ConnectedRepoOverview.tsx +171 -155
  27. package/src/components/preview/{ConnectedRepoDashboard.tsx → PackageReleasesDashboard.tsx} +31 -69
  28. package/src/components/preview/index.tsx +20 -154
  29. package/src/hooks/use-package-builds.ts +0 -48
  30. package/src/hooks/use-package-release-by-id-or-version.ts +36 -0
  31. package/src/hooks/use-package-release.ts +32 -0
  32. package/src/index.css +24 -0
  33. package/src/lib/utils/isUuid.ts +5 -0
  34. package/src/lib/utils/transformFilesToTreeData.tsx +195 -0
  35. package/src/pages/404.tsx +3 -5
  36. package/src/pages/preview-release.tsx +269 -0
  37. package/src/pages/release-builds.tsx +99 -0
  38. package/src/pages/release-detail.tsx +120 -0
  39. package/src/pages/releases.tsx +55 -0
  40. package/fake-snippets-api/routes/api/package_builds/latest.ts +0 -109
  41. package/src/hooks/use-snippets-base-api-url.ts +0 -3
  42. package/src/pages/preview-build.tsx +0 -380
  43. package/src/pages/view-connected-repo.tsx +0 -49
package/dist/index.d.ts CHANGED
@@ -520,6 +520,10 @@ declare const packageReleaseSchema: z.ZodObject<{
520
520
  ai_review_requested: z.ZodDefault<z.ZodBoolean>;
521
521
  is_pr_preview: z.ZodDefault<z.ZodBoolean>;
522
522
  github_pr_number: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
523
+ latest_package_build_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
524
+ branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
525
+ commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
526
+ commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
523
527
  }, "strip", z.ZodTypeAny, {
524
528
  package_release_id: string;
525
529
  created_at: string;
@@ -556,6 +560,10 @@ declare const packageReleaseSchema: z.ZodObject<{
556
560
  ai_review_error?: any;
557
561
  ai_review_logs?: any[] | null | undefined;
558
562
  github_pr_number?: number | null | undefined;
563
+ latest_package_build_id?: string | null | undefined;
564
+ branch_name?: string | null | undefined;
565
+ commit_message?: string | null | undefined;
566
+ commit_author?: string | null | undefined;
559
567
  }, {
560
568
  package_release_id: string;
561
569
  created_at: string;
@@ -592,6 +600,10 @@ declare const packageReleaseSchema: z.ZodObject<{
592
600
  ai_review_requested?: boolean | undefined;
593
601
  is_pr_preview?: boolean | undefined;
594
602
  github_pr_number?: number | null | undefined;
603
+ latest_package_build_id?: string | null | undefined;
604
+ branch_name?: string | null | undefined;
605
+ commit_message?: string | null | undefined;
606
+ commit_author?: string | null | undefined;
595
607
  }>;
596
608
  type PackageRelease = z.infer<typeof packageReleaseSchema>;
597
609
  declare const packageFileSchema: z.ZodObject<{
@@ -842,9 +854,6 @@ declare const packageBuildSchema: z.ZodObject<{
842
854
  build_error_last_updated_at: z.ZodString;
843
855
  preview_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
844
856
  build_logs: z.ZodOptional<z.ZodNullable<z.ZodString>>;
845
- branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
846
- commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
847
- commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
848
857
  }, "strip", z.ZodTypeAny, {
849
858
  package_release_id: string;
850
859
  created_at: string;
@@ -866,9 +875,6 @@ declare const packageBuildSchema: z.ZodObject<{
866
875
  build_error?: string | null | undefined;
867
876
  preview_url?: string | null | undefined;
868
877
  build_logs?: string | null | undefined;
869
- branch_name?: string | null | undefined;
870
- commit_message?: string | null | undefined;
871
- commit_author?: string | null | undefined;
872
878
  }, {
873
879
  package_release_id: string;
874
880
  created_at: string;
@@ -890,9 +896,6 @@ declare const packageBuildSchema: z.ZodObject<{
890
896
  build_error?: string | null | undefined;
891
897
  preview_url?: string | null | undefined;
892
898
  build_logs?: string | null | undefined;
893
- branch_name?: string | null | undefined;
894
- commit_message?: string | null | undefined;
895
- commit_author?: string | null | undefined;
896
899
  }>;
897
900
  type PackageBuild = z.infer<typeof packageBuildSchema>;
898
901
 
@@ -960,6 +963,10 @@ declare const createDatabase: ({ seed }?: {
960
963
  ai_review_error?: any;
961
964
  ai_review_logs?: any[] | null | undefined;
962
965
  github_pr_number?: number | null | undefined;
966
+ latest_package_build_id?: string | null | undefined;
967
+ branch_name?: string | null | undefined;
968
+ commit_message?: string | null | undefined;
969
+ commit_author?: string | null | undefined;
963
970
  }[];
964
971
  packageFiles: {
965
972
  package_release_id: string;
@@ -1195,9 +1202,6 @@ declare const createDatabase: ({ seed }?: {
1195
1202
  build_error?: string | null | undefined;
1196
1203
  preview_url?: string | null | undefined;
1197
1204
  build_logs?: string | null | undefined;
1198
- branch_name?: string | null | undefined;
1199
- commit_message?: string | null | undefined;
1200
- commit_author?: string | null | undefined;
1201
1205
  }[];
1202
1206
  }, "addOrder" | "getOrderById" | "getOrderFilesByOrderId" | "addOrderQuote" | "getOrderQuoteById" | "getJlcpcbOrderStatesByOrderId" | "getJlcpcbOrderStepRunsByJlcpcbOrderStateId" | "updateOrder" | "addJlcpcbOrderState" | "updateJlcpcbOrderState" | "addOrderFile" | "getOrderFileById" | "addAccount" | "addAccountPackage" | "getAccountPackageById" | "updateAccountPackage" | "deleteAccountPackage" | "addSnippet" | "getLatestSnippets" | "getTrendingSnippets" | "getPackagesByAuthor" | "getSnippetByAuthorAndName" | "updateSnippet" | "getSnippetById" | "searchSnippets" | "searchPackages" | "searchAccounts" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId" | "updatePackageReleaseFsSha" | "addAiReview" | "updateAiReview" | "getAiReviewById" | "listAiReviews" | "addDatasheet" | "getDatasheetById" | "getDatasheetByChipName" | "listDatasheets" | "updateDatasheet" | "addPackageBuild" | "getPackageBuildById" | "getPackageBuildsByReleaseId" | "updatePackageBuild"> & {
1203
1207
  addOrder: (order: Omit<Order, "order_id">) => Order;
@@ -1239,6 +1243,9 @@ declare const createDatabase: ({ seed }?: {
1239
1243
  addSnippet: (snippet: Omit<z.input<typeof snippetSchema>, "snippet_id" | "package_release_id"> & {
1240
1244
  creator_account_id?: string;
1241
1245
  github_repo_full_name?: string;
1246
+ branch_name?: string;
1247
+ commit_message?: string;
1248
+ commit_author?: string;
1242
1249
  }) => Snippet;
1243
1250
  getLatestSnippets: (limit: number) => Snippet[];
1244
1251
  getTrendingSnippets: (limit: number, since: string) => Snippet[];
@@ -1361,6 +1368,10 @@ declare const createDatabase: ({ seed }?: {
1361
1368
  ai_review_error?: any;
1362
1369
  ai_review_logs?: any[] | null | undefined;
1363
1370
  github_pr_number?: number | null | undefined;
1371
+ latest_package_build_id?: string | null | undefined;
1372
+ branch_name?: string | null | undefined;
1373
+ commit_message?: string | null | undefined;
1374
+ commit_author?: string | null | undefined;
1364
1375
  }[];
1365
1376
  packageFiles: {
1366
1377
  package_release_id: string;
@@ -1596,9 +1607,6 @@ declare const createDatabase: ({ seed }?: {
1596
1607
  build_error?: string | null | undefined;
1597
1608
  preview_url?: string | null | undefined;
1598
1609
  build_logs?: string | null | undefined;
1599
- branch_name?: string | null | undefined;
1600
- commit_message?: string | null | undefined;
1601
- commit_author?: string | null | undefined;
1602
1610
  }[];
1603
1611
  }, "addOrder" | "getOrderById" | "getOrderFilesByOrderId" | "addOrderQuote" | "getOrderQuoteById" | "getJlcpcbOrderStatesByOrderId" | "getJlcpcbOrderStepRunsByJlcpcbOrderStateId" | "updateOrder" | "addJlcpcbOrderState" | "updateJlcpcbOrderState" | "addOrderFile" | "getOrderFileById" | "addAccount" | "addAccountPackage" | "getAccountPackageById" | "updateAccountPackage" | "deleteAccountPackage" | "addSnippet" | "getLatestSnippets" | "getTrendingSnippets" | "getPackagesByAuthor" | "getSnippetByAuthorAndName" | "updateSnippet" | "getSnippetById" | "searchSnippets" | "searchPackages" | "searchAccounts" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId" | "updatePackageReleaseFsSha" | "addAiReview" | "updateAiReview" | "getAiReviewById" | "listAiReviews" | "addDatasheet" | "getDatasheetById" | "getDatasheetByChipName" | "listDatasheets" | "updateDatasheet" | "addPackageBuild" | "getPackageBuildById" | "getPackageBuildsByReleaseId" | "updatePackageBuild"> & {
1604
1612
  addOrder: (order: Omit<Order, "order_id">) => Order;
@@ -1640,6 +1648,9 @@ declare const createDatabase: ({ seed }?: {
1640
1648
  addSnippet: (snippet: Omit<z.input<typeof snippetSchema>, "snippet_id" | "package_release_id"> & {
1641
1649
  creator_account_id?: string;
1642
1650
  github_repo_full_name?: string;
1651
+ branch_name?: string;
1652
+ commit_message?: string;
1653
+ commit_author?: string;
1643
1654
  }) => Snippet;
1644
1655
  getLatestSnippets: (limit: number) => Snippet[];
1645
1656
  getTrendingSnippets: (limit: number, since: string) => Snippet[];
package/dist/index.js CHANGED
@@ -212,7 +212,12 @@ var packageReleaseSchema = z.object({
212
212
  ai_review_requested: z.boolean().default(false),
213
213
  // Preview
214
214
  is_pr_preview: z.boolean().default(false),
215
- github_pr_number: z.number().nullable().optional()
215
+ github_pr_number: z.number().nullable().optional(),
216
+ // Latest Build Reference
217
+ latest_package_build_id: z.string().nullable().optional(),
218
+ branch_name: z.string().nullable().optional(),
219
+ commit_message: z.string().nullable().optional(),
220
+ commit_author: z.string().nullable().optional()
216
221
  });
217
222
  var packageFileSchema = z.object({
218
223
  package_file_id: z.string(),
@@ -311,10 +316,7 @@ var packageBuildSchema = z.object({
311
316
  build_error: z.string().nullable().optional(),
312
317
  build_error_last_updated_at: z.string().datetime(),
313
318
  preview_url: z.string().nullable().optional(),
314
- build_logs: z.string().nullable().optional(),
315
- branch_name: z.string().nullable().optional(),
316
- commit_message: z.string().nullable().optional(),
317
- commit_author: z.string().nullable().optional()
319
+ build_logs: z.string().nullable().optional()
318
320
  });
319
321
  var databaseSchema = z.object({
320
322
  idCounter: z.number().default(0),
@@ -539,6 +541,9 @@ var seed = (db) => {
539
541
  unscoped_name: "my-test-board",
540
542
  github_repo_full_name: "testuser/my-test-board",
541
543
  owner_name: "testuser",
544
+ branch_name: "main",
545
+ commit_message: "Attempted build of a555timer-square-wave package",
546
+ commit_author: "testuser",
542
547
  creator_account_id: account_id,
543
548
  code: `
544
549
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -1045,7 +1050,7 @@ export default () => (
1045
1050
  }
1046
1051
  ]
1047
1052
  });
1048
- db.addPackageBuild({
1053
+ const firstBuild = db.addPackageBuild({
1049
1054
  package_release_id: packageReleaseId1,
1050
1055
  created_at: new Date(Date.now() - 15e3).toISOString(),
1051
1056
  // 15 seconds ago
@@ -1070,10 +1075,12 @@ export default () => (
1070
1075
  build_error: "Build failed: Unable to complete transpilation step",
1071
1076
  build_error_last_updated_at: new Date(Date.now() - 14e3).toISOString(),
1072
1077
  preview_url: null,
1073
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors",
1074
- branch_name: "main",
1075
- commit_message: "Attempted build of a555timer-square-wave package",
1076
- commit_author: "testuser"
1078
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors"
1079
+ });
1080
+ const release1 = db.getPackageReleaseById(packageReleaseId1);
1081
+ db.updatePackageRelease({
1082
+ ...release1,
1083
+ latest_package_build_id: firstBuild.package_build_id
1077
1084
  });
1078
1085
  db.addSnippet({
1079
1086
  name: "seveibar/a555timer",
@@ -1606,6 +1613,9 @@ exports.A555Timer = A555Timer;
1606
1613
  name: "testuser/a555timer-square-wave",
1607
1614
  unscoped_name: "a555timer-square-wave",
1608
1615
  owner_name: "testuser",
1616
+ branch_name: "main",
1617
+ commit_message: "Attempted build of a555timer-square-wave package",
1618
+ commit_author: "testuser",
1609
1619
  creator_account_id: account_id,
1610
1620
  code: `
1611
1621
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -2113,7 +2123,7 @@ export const SquareWaveModule = () => (
2113
2123
  }
2114
2124
  ]
2115
2125
  });
2116
- db.addPackageBuild({
2126
+ const failedBuild = db.addPackageBuild({
2117
2127
  package_release_id: packageReleaseId2,
2118
2128
  created_at: new Date(Date.now() - 15e3).toISOString(),
2119
2129
  // 15 seconds ago
@@ -2138,12 +2148,9 @@ export const SquareWaveModule = () => (
2138
2148
  build_error: "Build failed: Unable to complete transpilation step",
2139
2149
  build_error_last_updated_at: new Date(Date.now() - 14e3).toISOString(),
2140
2150
  preview_url: null,
2141
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors",
2142
- branch_name: "main",
2143
- commit_message: "Attempted build of a555timer-square-wave package",
2144
- commit_author: "testuser"
2151
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - FAILED\nError: Invalid syntax in component declaration\nBuild terminated with errors"
2145
2152
  });
2146
- db.addPackageBuild({
2153
+ const successfulBuild = db.addPackageBuild({
2147
2154
  package_release_id: packageReleaseId2,
2148
2155
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
2149
2156
  transpilation_in_progress: false,
@@ -2180,10 +2187,12 @@ export const SquareWaveModule = () => (
2180
2187
  build_error: null,
2181
2188
  build_error_last_updated_at: (/* @__PURE__ */ new Date()).toISOString(),
2182
2189
  preview_url: "http://localhost:3000/preview/package_build_1",
2183
- build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - OK\n4. Circuit validation - OK\n5. Package assembly - OK\nBuild completed successfully",
2184
- branch_name: "main",
2185
- commit_message: "Initial build of a555timer-square-wave package",
2186
- commit_author: "testuser"
2190
+ build_logs: "Build process:\n1. Environment setup - OK\n2. Dependency resolution - OK\n3. Code compilation - OK\n4. Circuit validation - OK\n5. Package assembly - OK\nBuild completed successfully"
2191
+ });
2192
+ const release2 = db.getPackageReleaseById(packageReleaseId2);
2193
+ db.updatePackageRelease({
2194
+ ...release2,
2195
+ latest_package_build_id: successfulBuild.package_build_id
2187
2196
  });
2188
2197
  db.addOrder({
2189
2198
  account_id,
@@ -2438,6 +2447,9 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2438
2447
  is_locked: false,
2439
2448
  created_at: currentTime,
2440
2449
  updated_at: currentTime,
2450
+ branch_name: snippet.branch_name,
2451
+ commit_message: snippet.commit_message,
2452
+ commit_author: snippet.commit_author,
2441
2453
  has_transpiled: true,
2442
2454
  transpilation_error: null,
2443
2455
  ...snippet.name == "testuser/my-test-board" ? { is_pr_preview: true, github_pr_number: 69 } : {}
@@ -3349,7 +3361,14 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
3349
3361
  ...packageBuild
3350
3362
  };
3351
3363
  set((state) => ({
3352
- packageBuilds: [...state.packageBuilds, newPackageBuild]
3364
+ packageBuilds: [...state.packageBuilds, newPackageBuild],
3365
+ // Automatically update the package release to reference this as the latest build
3366
+ packageReleases: state.packageReleases.map(
3367
+ (release) => release.package_release_id === packageBuild.package_release_id ? {
3368
+ ...release,
3369
+ latest_package_build_id: newPackageBuild.package_build_id
3370
+ } : release
3371
+ )
3353
3372
  }));
3354
3373
  return newPackageBuild;
3355
3374
  },
package/dist/schema.d.ts CHANGED
@@ -693,6 +693,10 @@ declare const packageReleaseSchema: z.ZodObject<{
693
693
  ai_review_requested: z.ZodDefault<z.ZodBoolean>;
694
694
  is_pr_preview: z.ZodDefault<z.ZodBoolean>;
695
695
  github_pr_number: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
696
+ latest_package_build_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
697
+ branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
698
+ commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
699
+ commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
696
700
  }, "strip", z.ZodTypeAny, {
697
701
  package_release_id: string;
698
702
  created_at: string;
@@ -729,6 +733,10 @@ declare const packageReleaseSchema: z.ZodObject<{
729
733
  ai_review_error?: any;
730
734
  ai_review_logs?: any[] | null | undefined;
731
735
  github_pr_number?: number | null | undefined;
736
+ latest_package_build_id?: string | null | undefined;
737
+ branch_name?: string | null | undefined;
738
+ commit_message?: string | null | undefined;
739
+ commit_author?: string | null | undefined;
732
740
  }, {
733
741
  package_release_id: string;
734
742
  created_at: string;
@@ -765,6 +773,10 @@ declare const packageReleaseSchema: z.ZodObject<{
765
773
  ai_review_requested?: boolean | undefined;
766
774
  is_pr_preview?: boolean | undefined;
767
775
  github_pr_number?: number | null | undefined;
776
+ latest_package_build_id?: string | null | undefined;
777
+ branch_name?: string | null | undefined;
778
+ commit_message?: string | null | undefined;
779
+ commit_author?: string | null | undefined;
768
780
  }>;
769
781
  type PackageRelease = z.infer<typeof packageReleaseSchema>;
770
782
  declare const packageFileSchema: z.ZodObject<{
@@ -1015,9 +1027,6 @@ declare const packageBuildSchema: z.ZodObject<{
1015
1027
  build_error_last_updated_at: z.ZodString;
1016
1028
  preview_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1017
1029
  build_logs: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1018
- branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1019
- commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1020
- commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1021
1030
  }, "strip", z.ZodTypeAny, {
1022
1031
  package_release_id: string;
1023
1032
  created_at: string;
@@ -1039,9 +1048,6 @@ declare const packageBuildSchema: z.ZodObject<{
1039
1048
  build_error?: string | null | undefined;
1040
1049
  preview_url?: string | null | undefined;
1041
1050
  build_logs?: string | null | undefined;
1042
- branch_name?: string | null | undefined;
1043
- commit_message?: string | null | undefined;
1044
- commit_author?: string | null | undefined;
1045
1051
  }, {
1046
1052
  package_release_id: string;
1047
1053
  created_at: string;
@@ -1063,9 +1069,6 @@ declare const packageBuildSchema: z.ZodObject<{
1063
1069
  build_error?: string | null | undefined;
1064
1070
  preview_url?: string | null | undefined;
1065
1071
  build_logs?: string | null | undefined;
1066
- branch_name?: string | null | undefined;
1067
- commit_message?: string | null | undefined;
1068
- commit_author?: string | null | undefined;
1069
1072
  }>;
1070
1073
  type PackageBuild = z.infer<typeof packageBuildSchema>;
1071
1074
  declare const databaseSchema: z.ZodObject<{
@@ -1176,6 +1179,10 @@ declare const databaseSchema: z.ZodObject<{
1176
1179
  ai_review_requested: z.ZodDefault<z.ZodBoolean>;
1177
1180
  is_pr_preview: z.ZodDefault<z.ZodBoolean>;
1178
1181
  github_pr_number: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1182
+ latest_package_build_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1183
+ branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1184
+ commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1185
+ commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1179
1186
  }, "strip", z.ZodTypeAny, {
1180
1187
  package_release_id: string;
1181
1188
  created_at: string;
@@ -1212,6 +1219,10 @@ declare const databaseSchema: z.ZodObject<{
1212
1219
  ai_review_error?: any;
1213
1220
  ai_review_logs?: any[] | null | undefined;
1214
1221
  github_pr_number?: number | null | undefined;
1222
+ latest_package_build_id?: string | null | undefined;
1223
+ branch_name?: string | null | undefined;
1224
+ commit_message?: string | null | undefined;
1225
+ commit_author?: string | null | undefined;
1215
1226
  }, {
1216
1227
  package_release_id: string;
1217
1228
  created_at: string;
@@ -1248,6 +1259,10 @@ declare const databaseSchema: z.ZodObject<{
1248
1259
  ai_review_requested?: boolean | undefined;
1249
1260
  is_pr_preview?: boolean | undefined;
1250
1261
  github_pr_number?: number | null | undefined;
1262
+ latest_package_build_id?: string | null | undefined;
1263
+ branch_name?: string | null | undefined;
1264
+ commit_message?: string | null | undefined;
1265
+ commit_author?: string | null | undefined;
1251
1266
  }>, "many">>;
1252
1267
  packageFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
1253
1268
  package_file_id: z.ZodString;
@@ -1945,9 +1960,6 @@ declare const databaseSchema: z.ZodObject<{
1945
1960
  build_error_last_updated_at: z.ZodString;
1946
1961
  preview_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1947
1962
  build_logs: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1948
- branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1949
- commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1950
- commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1951
1963
  }, "strip", z.ZodTypeAny, {
1952
1964
  package_release_id: string;
1953
1965
  created_at: string;
@@ -1969,9 +1981,6 @@ declare const databaseSchema: z.ZodObject<{
1969
1981
  build_error?: string | null | undefined;
1970
1982
  preview_url?: string | null | undefined;
1971
1983
  build_logs?: string | null | undefined;
1972
- branch_name?: string | null | undefined;
1973
- commit_message?: string | null | undefined;
1974
- commit_author?: string | null | undefined;
1975
1984
  }, {
1976
1985
  package_release_id: string;
1977
1986
  created_at: string;
@@ -1993,9 +2002,6 @@ declare const databaseSchema: z.ZodObject<{
1993
2002
  build_error?: string | null | undefined;
1994
2003
  preview_url?: string | null | undefined;
1995
2004
  build_logs?: string | null | undefined;
1996
- branch_name?: string | null | undefined;
1997
- commit_message?: string | null | undefined;
1998
- commit_author?: string | null | undefined;
1999
2005
  }>, "many">>;
2000
2006
  }, "strip", z.ZodTypeAny, {
2001
2007
  idCounter: number;
@@ -2059,6 +2065,10 @@ declare const databaseSchema: z.ZodObject<{
2059
2065
  ai_review_error?: any;
2060
2066
  ai_review_logs?: any[] | null | undefined;
2061
2067
  github_pr_number?: number | null | undefined;
2068
+ latest_package_build_id?: string | null | undefined;
2069
+ branch_name?: string | null | undefined;
2070
+ commit_message?: string | null | undefined;
2071
+ commit_author?: string | null | undefined;
2062
2072
  }[];
2063
2073
  packageFiles: {
2064
2074
  package_release_id: string;
@@ -2294,9 +2304,6 @@ declare const databaseSchema: z.ZodObject<{
2294
2304
  build_error?: string | null | undefined;
2295
2305
  preview_url?: string | null | undefined;
2296
2306
  build_logs?: string | null | undefined;
2297
- branch_name?: string | null | undefined;
2298
- commit_message?: string | null | undefined;
2299
- commit_author?: string | null | undefined;
2300
2307
  }[];
2301
2308
  }, {
2302
2309
  idCounter?: number | undefined;
@@ -2360,6 +2367,10 @@ declare const databaseSchema: z.ZodObject<{
2360
2367
  ai_review_requested?: boolean | undefined;
2361
2368
  is_pr_preview?: boolean | undefined;
2362
2369
  github_pr_number?: number | null | undefined;
2370
+ latest_package_build_id?: string | null | undefined;
2371
+ branch_name?: string | null | undefined;
2372
+ commit_message?: string | null | undefined;
2373
+ commit_author?: string | null | undefined;
2363
2374
  }[] | undefined;
2364
2375
  packageFiles?: {
2365
2376
  package_release_id: string;
@@ -2595,9 +2606,6 @@ declare const databaseSchema: z.ZodObject<{
2595
2606
  build_error?: string | null | undefined;
2596
2607
  preview_url?: string | null | undefined;
2597
2608
  build_logs?: string | null | undefined;
2598
- branch_name?: string | null | undefined;
2599
- commit_message?: string | null | undefined;
2600
- commit_author?: string | null | undefined;
2601
2609
  }[] | undefined;
2602
2610
  }>;
2603
2611
  type DatabaseSchema = z.infer<typeof databaseSchema>;
package/dist/schema.js CHANGED
@@ -207,7 +207,12 @@ var packageReleaseSchema = z.object({
207
207
  ai_review_requested: z.boolean().default(false),
208
208
  // Preview
209
209
  is_pr_preview: z.boolean().default(false),
210
- github_pr_number: z.number().nullable().optional()
210
+ github_pr_number: z.number().nullable().optional(),
211
+ // Latest Build Reference
212
+ latest_package_build_id: z.string().nullable().optional(),
213
+ branch_name: z.string().nullable().optional(),
214
+ commit_message: z.string().nullable().optional(),
215
+ commit_author: z.string().nullable().optional()
211
216
  });
212
217
  var packageFileSchema = z.object({
213
218
  package_file_id: z.string(),
@@ -306,10 +311,7 @@ var packageBuildSchema = z.object({
306
311
  build_error: z.string().nullable().optional(),
307
312
  build_error_last_updated_at: z.string().datetime(),
308
313
  preview_url: z.string().nullable().optional(),
309
- build_logs: z.string().nullable().optional(),
310
- branch_name: z.string().nullable().optional(),
311
- commit_message: z.string().nullable().optional(),
312
- commit_author: z.string().nullable().optional()
314
+ build_logs: z.string().nullable().optional()
313
315
  });
314
316
  var databaseSchema = z.object({
315
317
  idCounter: z.number().default(0),
@@ -242,7 +242,13 @@ const initializer = combine(databaseSchema.parse({}), (set, get) => ({
242
242
  snippet: Omit<
243
243
  z.input<typeof snippetSchema>,
244
244
  "snippet_id" | "package_release_id"
245
- > & { creator_account_id?: string; github_repo_full_name?: string },
245
+ > & {
246
+ creator_account_id?: string
247
+ github_repo_full_name?: string
248
+ branch_name?: string
249
+ commit_message?: string
250
+ commit_author?: string
251
+ },
246
252
  ): Snippet => {
247
253
  const timestamp = Date.now()
248
254
  const currentTime = new Date(timestamp).toISOString()
@@ -291,6 +297,9 @@ const initializer = combine(databaseSchema.parse({}), (set, get) => ({
291
297
  is_locked: false,
292
298
  created_at: currentTime,
293
299
  updated_at: currentTime,
300
+ branch_name: snippet.branch_name,
301
+ commit_message: snippet.commit_message,
302
+ commit_author: snippet.commit_author,
294
303
  has_transpiled: true,
295
304
  transpilation_error: null,
296
305
  ...(snippet.name == "testuser/my-test-board"
@@ -1488,6 +1497,15 @@ const initializer = combine(databaseSchema.parse({}), (set, get) => ({
1488
1497
  }
1489
1498
  set((state) => ({
1490
1499
  packageBuilds: [...state.packageBuilds, newPackageBuild],
1500
+ // Automatically update the package release to reference this as the latest build
1501
+ packageReleases: state.packageReleases.map((release) =>
1502
+ release.package_release_id === packageBuild.package_release_id
1503
+ ? {
1504
+ ...release,
1505
+ latest_package_build_id: newPackageBuild.package_build_id,
1506
+ }
1507
+ : release,
1508
+ ),
1491
1509
  }))
1492
1510
  return newPackageBuild
1493
1511
  },
@@ -255,6 +255,12 @@ export const packageReleaseSchema = z.object({
255
255
  // Preview
256
256
  is_pr_preview: z.boolean().default(false),
257
257
  github_pr_number: z.number().nullable().optional(),
258
+
259
+ // Latest Build Reference
260
+ latest_package_build_id: z.string().nullable().optional(),
261
+ branch_name: z.string().nullable().optional(),
262
+ commit_message: z.string().nullable().optional(),
263
+ commit_author: z.string().nullable().optional(),
258
264
  })
259
265
  export type PackageRelease = z.infer<typeof packageReleaseSchema>
260
266
 
@@ -367,9 +373,6 @@ export const packageBuildSchema = z.object({
367
373
  build_error_last_updated_at: z.string().datetime(),
368
374
  preview_url: z.string().nullable().optional(),
369
375
  build_logs: z.string().nullable().optional(),
370
- branch_name: z.string().nullable().optional(),
371
- commit_message: z.string().nullable().optional(),
372
- commit_author: z.string().nullable().optional(),
373
376
  })
374
377
  export type PackageBuild = z.infer<typeof packageBuildSchema>
375
378
 
@@ -31,6 +31,9 @@ export const seed = (db: DbClient) => {
31
31
  unscoped_name: "my-test-board",
32
32
  github_repo_full_name: "testuser/my-test-board",
33
33
  owner_name: "testuser",
34
+ branch_name: "main",
35
+ commit_message: "Attempted build of a555timer-square-wave package",
36
+ commit_author: "testuser",
34
37
  creator_account_id: account_id,
35
38
  code: `
36
39
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -538,7 +541,7 @@ export default () => (
538
541
  ],
539
542
  })
540
543
 
541
- db.addPackageBuild({
544
+ const firstBuild = db.addPackageBuild({
542
545
  package_release_id: packageReleaseId1,
543
546
  created_at: new Date(Date.now() - 15000).toISOString(), // 15 seconds ago
544
547
  transpilation_in_progress: false,
@@ -570,9 +573,13 @@ export default () => (
570
573
  "3. Code compilation - FAILED\n" +
571
574
  "Error: Invalid syntax in component declaration\n" +
572
575
  "Build terminated with errors",
573
- branch_name: "main",
574
- commit_message: "Attempted build of a555timer-square-wave package",
575
- commit_author: "testuser",
576
+ })
577
+
578
+ // Update the package release with the latest build ID
579
+ const release1 = db.getPackageReleaseById(packageReleaseId1)!
580
+ db.updatePackageRelease({
581
+ ...release1,
582
+ latest_package_build_id: firstBuild.package_build_id,
576
583
  })
577
584
  // Define the @tsci/seveibar.a555timer package
578
585
  db.addSnippet({
@@ -1109,6 +1116,9 @@ exports.A555Timer = A555Timer;
1109
1116
  name: "testuser/a555timer-square-wave",
1110
1117
  unscoped_name: "a555timer-square-wave",
1111
1118
  owner_name: "testuser",
1119
+ branch_name: "main",
1120
+ commit_message: "Attempted build of a555timer-square-wave package",
1121
+ commit_author: "testuser",
1112
1122
  creator_account_id: account_id,
1113
1123
  code: `
1114
1124
  import { A555Timer } from "@tsci/seveibar.a555timer"
@@ -1620,7 +1630,7 @@ export const SquareWaveModule = () => (
1620
1630
  })
1621
1631
 
1622
1632
  // Add failed build first
1623
- db.addPackageBuild({
1633
+ const failedBuild = db.addPackageBuild({
1624
1634
  package_release_id: packageReleaseId2,
1625
1635
  created_at: new Date(Date.now() - 15000).toISOString(), // 15 seconds ago
1626
1636
  transpilation_in_progress: false,
@@ -1652,13 +1662,10 @@ export const SquareWaveModule = () => (
1652
1662
  "3. Code compilation - FAILED\n" +
1653
1663
  "Error: Invalid syntax in component declaration\n" +
1654
1664
  "Build terminated with errors",
1655
- branch_name: "main",
1656
- commit_message: "Attempted build of a555timer-square-wave package",
1657
- commit_author: "testuser",
1658
1665
  })
1659
1666
 
1660
1667
  // Add successful build
1661
- db.addPackageBuild({
1668
+ const successfulBuild = db.addPackageBuild({
1662
1669
  package_release_id: packageReleaseId2,
1663
1670
  created_at: new Date().toISOString(),
1664
1671
  transpilation_in_progress: false,
@@ -1697,9 +1704,13 @@ export const SquareWaveModule = () => (
1697
1704
  "4. Circuit validation - OK\n" +
1698
1705
  "5. Package assembly - OK\n" +
1699
1706
  "Build completed successfully",
1700
- branch_name: "main",
1701
- commit_message: "Initial build of a555timer-square-wave package",
1702
- commit_author: "testuser",
1707
+ })
1708
+
1709
+ // Update the package release with the latest (successful) build ID
1710
+ const release2 = db.getPackageReleaseById(packageReleaseId2)!
1711
+ db.updatePackageRelease({
1712
+ ...release2,
1713
+ latest_package_build_id: successfulBuild.package_build_id,
1703
1714
  })
1704
1715
 
1705
1716
  db.addOrder({
@@ -32,9 +32,6 @@ export const publicMapPackageBuild = (
32
32
  internalPackageBuild.build_error_last_updated_at,
33
33
  preview_url: internalPackageBuild.preview_url,
34
34
  build_logs: options.include_logs ? internalPackageBuild.build_logs : null,
35
- branch_name: internalPackageBuild.branch_name,
36
- commit_message: internalPackageBuild.commit_message,
37
- commit_author: internalPackageBuild.commit_author,
38
35
  }
39
36
 
40
37
  return result
@@ -26,6 +26,9 @@ export const publicMapPackageRelease = (
26
26
  : [],
27
27
  is_pr_preview: Boolean(internal_package_release.is_pr_preview),
28
28
  github_pr_number: internal_package_release.github_pr_number,
29
+ branch_name: internal_package_release.branch_name,
30
+ commit_message: internal_package_release.commit_message ?? null,
31
+ commit_author: internal_package_release.commit_author ?? null,
29
32
  }
30
33
 
31
34
  if (options.include_ai_review && options.db) {
@@ -14,7 +14,6 @@ export default withRouteSpec({
14
14
  }),
15
15
  })(async (req, ctx) => {
16
16
  const { package_id, package_release_id } = req.query
17
- console.log(ctx.db.packageBuilds)
18
17
  if (!package_id && !package_release_id) {
19
18
  return ctx.error(400, {
20
19
  error_code: "invalid_request",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/fake-snippets",
3
- "version": "0.0.106",
3
+ "version": "0.0.108",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,8 @@
30
30
  "build:fake-api": "bun run build:fake-api:tsup && bun run build:fake-api:bundle && bun run build:fake-api:schema",
31
31
  "build:fake-api:schema": "tsup-node ./fake-snippets-api/lib/db/schema.ts --format esm --dts",
32
32
  "generate-images": "bun run scripts/generate-image-sizes.ts",
33
- "generate-sitemap": "bun run scripts/generate-sitemap.ts"
33
+ "generate-sitemap": "bun run scripts/generate-sitemap.ts",
34
+ "typecheck": "tsc --noEmit"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@anthropic-ai/sdk": "^0.27.3",