@tscircuit/fake-snippets 0.0.118 → 0.0.120

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 (31) hide show
  1. package/bun-tests/fake-snippets-api/routes/bug_reports/create.test.ts +37 -0
  2. package/bun-tests/fake-snippets-api/routes/bug_reports/upload_file.test.ts +89 -0
  3. package/bun-tests/fake-snippets-api/routes/packages/get.test.ts +3 -0
  4. package/bun.lock +2 -2
  5. package/dist/bundle.js +778 -508
  6. package/dist/index.d.ts +161 -6
  7. package/dist/index.js +102 -3
  8. package/dist/schema.d.ts +225 -7
  9. package/dist/schema.js +38 -3
  10. package/fake-snippets-api/lib/db/db-client.ts +98 -0
  11. package/fake-snippets-api/lib/db/schema.ts +37 -0
  12. package/fake-snippets-api/lib/public-mapping/public-map-package-release.ts +6 -0
  13. package/fake-snippets-api/lib/public-mapping/public-map-package.ts +9 -0
  14. package/fake-snippets-api/routes/api/bug_reports/create.ts +43 -0
  15. package/fake-snippets-api/routes/api/bug_reports/upload_file.ts +113 -0
  16. package/package.json +2 -2
  17. package/src/components/Header.tsx +16 -0
  18. package/src/components/PackageCard.tsx +7 -4
  19. package/src/components/PackageSearchResults.tsx +1 -7
  20. package/src/components/SearchComponent.tsx +64 -53
  21. package/src/components/TrendingPackagesCarousel.tsx +16 -23
  22. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +3 -2
  23. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +6 -3
  24. package/src/hooks/use-preview-images.ts +22 -17
  25. package/src/hooks/useUpdatePackageFilesMutation.ts +8 -0
  26. package/src/lib/utils/getPackagePreviewImageUrl.ts +15 -0
  27. package/src/pages/dashboard.tsx +0 -1
  28. package/src/pages/editor.tsx +12 -9
  29. package/src/pages/organization-profile.tsx +0 -1
  30. package/src/pages/package-editor.tsx +13 -9
  31. package/src/pages/user-profile.tsx +0 -1
package/dist/index.d.ts CHANGED
@@ -270,6 +270,61 @@ declare const orderFileSchema: z.ZodObject<{
270
270
  content_bytes: Uint8Array<ArrayBuffer> | null;
271
271
  }>;
272
272
  type OrderFile = z.infer<typeof orderFileSchema>;
273
+ declare const bugReportSchema: z.ZodObject<{
274
+ bug_report_id: z.ZodString;
275
+ reporter_account_id: z.ZodString;
276
+ text: z.ZodNullable<z.ZodString>;
277
+ is_auto_deleted: z.ZodDefault<z.ZodBoolean>;
278
+ delete_at: z.ZodNullable<z.ZodString>;
279
+ created_at: z.ZodString;
280
+ file_count: z.ZodNumber;
281
+ }, "strip", z.ZodTypeAny, {
282
+ created_at: string;
283
+ bug_report_id: string;
284
+ reporter_account_id: string;
285
+ text: string | null;
286
+ is_auto_deleted: boolean;
287
+ delete_at: string | null;
288
+ file_count: number;
289
+ }, {
290
+ created_at: string;
291
+ bug_report_id: string;
292
+ reporter_account_id: string;
293
+ text: string | null;
294
+ delete_at: string | null;
295
+ file_count: number;
296
+ is_auto_deleted?: boolean | undefined;
297
+ }>;
298
+ type BugReport = z.infer<typeof bugReportSchema>;
299
+ declare const bugReportFileSchema: z.ZodObject<{
300
+ bug_report_file_id: z.ZodString;
301
+ bug_report_id: z.ZodString;
302
+ file_path: z.ZodString;
303
+ content_mimetype: z.ZodString;
304
+ is_text: z.ZodBoolean;
305
+ created_at: z.ZodString;
306
+ content_text: z.ZodNullable<z.ZodString>;
307
+ content_bytes: z.ZodNullable<z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>>;
308
+ }, "strip", z.ZodTypeAny, {
309
+ created_at: string;
310
+ content_text: string | null;
311
+ content_bytes: Uint8Array<ArrayBuffer> | null;
312
+ bug_report_id: string;
313
+ bug_report_file_id: string;
314
+ file_path: string;
315
+ content_mimetype: string;
316
+ is_text: boolean;
317
+ }, {
318
+ created_at: string;
319
+ content_text: string | null;
320
+ content_bytes: Uint8Array<ArrayBuffer> | null;
321
+ bug_report_id: string;
322
+ bug_report_file_id: string;
323
+ file_path: string;
324
+ content_mimetype: string;
325
+ is_text: boolean;
326
+ }>;
327
+ type BugReportFile = z.infer<typeof bugReportFileSchema>;
273
328
  declare const orderQuoteSchema: z.ZodObject<{
274
329
  order_quote_id: z.ZodString;
275
330
  account_id: z.ZodNullable<z.ZodString>;
@@ -538,6 +593,9 @@ declare const packageReleaseSchema: z.ZodObject<{
538
593
  branch_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
539
594
  commit_message: z.ZodOptional<z.ZodNullable<z.ZodString>>;
540
595
  commit_author: z.ZodOptional<z.ZodNullable<z.ZodString>>;
596
+ pcb_preview_image_url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
597
+ sch_preview_image_url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
598
+ cad_preview_image_url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
541
599
  }, "strip", z.ZodTypeAny, {
542
600
  package_release_id: string;
543
601
  created_at: string;
@@ -561,6 +619,9 @@ declare const packageReleaseSchema: z.ZodObject<{
561
619
  image_generation_is_stale: boolean;
562
620
  ai_review_requested: boolean;
563
621
  is_pr_preview: boolean;
622
+ pcb_preview_image_url: string | null;
623
+ sch_preview_image_url: string | null;
624
+ cad_preview_image_url: string | null;
564
625
  ai_review_text?: string | null | undefined;
565
626
  commit_sha?: string | null | undefined;
566
627
  license?: string | null | undefined;
@@ -634,6 +695,9 @@ declare const packageReleaseSchema: z.ZodObject<{
634
695
  branch_name?: string | null | undefined;
635
696
  commit_message?: string | null | undefined;
636
697
  commit_author?: string | null | undefined;
698
+ pcb_preview_image_url?: string | null | undefined;
699
+ sch_preview_image_url?: string | null | undefined;
700
+ cad_preview_image_url?: string | null | undefined;
637
701
  }>;
638
702
  type PackageRelease = z.infer<typeof packageReleaseSchema>;
639
703
  declare const packageFileSchema: z.ZodObject<{
@@ -648,8 +712,8 @@ declare const packageFileSchema: z.ZodObject<{
648
712
  }, "strip", z.ZodTypeAny, {
649
713
  package_release_id: string;
650
714
  created_at: string;
651
- package_file_id: string;
652
715
  file_path: string;
716
+ package_file_id: string;
653
717
  content_text?: string | null | undefined;
654
718
  content_mimetype?: string | null | undefined;
655
719
  is_release_tarball?: boolean | undefined;
@@ -657,8 +721,8 @@ declare const packageFileSchema: z.ZodObject<{
657
721
  }, {
658
722
  package_release_id: string;
659
723
  created_at: string;
660
- package_file_id: string;
661
724
  file_path: string;
725
+ package_file_id: string;
662
726
  content_text?: string | null | undefined;
663
727
  content_mimetype?: string | null | undefined;
664
728
  is_release_tarball?: boolean | undefined;
@@ -698,6 +762,9 @@ declare const packageSchema: z.ZodObject<{
698
762
  default_view: z.ZodOptional<z.ZodDefault<z.ZodEnum<["files", "3d", "pcb", "schematic"]>>>;
699
763
  allow_pr_previews: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
700
764
  is_starred: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
765
+ latest_pcb_preview_image_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
766
+ latest_sch_preview_image_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
767
+ latest_cad_preview_image_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
701
768
  }, "strip", z.ZodTypeAny, {
702
769
  name: string;
703
770
  unscoped_name: string;
@@ -731,6 +798,9 @@ declare const packageSchema: z.ZodObject<{
731
798
  latest_license?: string | null | undefined;
732
799
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
733
800
  allow_pr_previews?: boolean | undefined;
801
+ latest_pcb_preview_image_url?: string | null | undefined;
802
+ latest_sch_preview_image_url?: string | null | undefined;
803
+ latest_cad_preview_image_url?: string | null | undefined;
734
804
  }, {
735
805
  name: string;
736
806
  unscoped_name: string;
@@ -764,6 +834,9 @@ declare const packageSchema: z.ZodObject<{
764
834
  latest_package_release_fs_sha?: string | null | undefined;
765
835
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
766
836
  allow_pr_previews?: boolean | undefined;
837
+ latest_pcb_preview_image_url?: string | null | undefined;
838
+ latest_sch_preview_image_url?: string | null | undefined;
839
+ latest_cad_preview_image_url?: string | null | undefined;
767
840
  }>;
768
841
  type Package = z.infer<typeof packageSchema>;
769
842
  declare const jlcpcbOrderStateSchema: z.ZodObject<{
@@ -1044,6 +1117,9 @@ declare const createDatabase: ({ seed }?: {
1044
1117
  image_generation_is_stale: boolean;
1045
1118
  ai_review_requested: boolean;
1046
1119
  is_pr_preview: boolean;
1120
+ pcb_preview_image_url: string | null;
1121
+ sch_preview_image_url: string | null;
1122
+ cad_preview_image_url: string | null;
1047
1123
  ai_review_text?: string | null | undefined;
1048
1124
  commit_sha?: string | null | undefined;
1049
1125
  license?: string | null | undefined;
@@ -1073,8 +1149,8 @@ declare const createDatabase: ({ seed }?: {
1073
1149
  packageFiles: {
1074
1150
  package_release_id: string;
1075
1151
  created_at: string;
1076
- package_file_id: string;
1077
1152
  file_path: string;
1153
+ package_file_id: string;
1078
1154
  content_text?: string | null | undefined;
1079
1155
  content_mimetype?: string | null | undefined;
1080
1156
  is_release_tarball?: boolean | undefined;
@@ -1145,6 +1221,9 @@ declare const createDatabase: ({ seed }?: {
1145
1221
  latest_license?: string | null | undefined;
1146
1222
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
1147
1223
  allow_pr_previews?: boolean | undefined;
1224
+ latest_pcb_preview_image_url?: string | null | undefined;
1225
+ latest_sch_preview_image_url?: string | null | undefined;
1226
+ latest_cad_preview_image_url?: string | null | undefined;
1148
1227
  }[];
1149
1228
  orders: {
1150
1229
  error: z.objectOutputType<{
@@ -1329,7 +1408,26 @@ declare const createDatabase: ({ seed }?: {
1329
1408
  preview_url?: string | null | undefined;
1330
1409
  build_logs?: string | null | undefined;
1331
1410
  }[];
1332
- }, "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" | "addOrganization" | "getOrgs" | "getOrg" | "addOrganizationAccount" | "getOrganizationAccount" | "getOrganizationAccounts" | "removeOrganizationAccount" | "updateOrganization"> & {
1411
+ bugReports: {
1412
+ created_at: string;
1413
+ bug_report_id: string;
1414
+ reporter_account_id: string;
1415
+ text: string | null;
1416
+ is_auto_deleted: boolean;
1417
+ delete_at: string | null;
1418
+ file_count: number;
1419
+ }[];
1420
+ bugReportFiles: {
1421
+ created_at: string;
1422
+ content_text: string | null;
1423
+ content_bytes: Uint8Array<ArrayBuffer> | null;
1424
+ bug_report_id: string;
1425
+ bug_report_file_id: string;
1426
+ file_path: string;
1427
+ content_mimetype: string;
1428
+ is_text: boolean;
1429
+ }[];
1430
+ }, "addOrder" | "getOrderById" | "getOrderFilesByOrderId" | "addOrderQuote" | "getOrderQuoteById" | "getJlcpcbOrderStatesByOrderId" | "getJlcpcbOrderStepRunsByJlcpcbOrderStateId" | "updateOrder" | "addJlcpcbOrderState" | "updateJlcpcbOrderState" | "addOrderFile" | "getOrderFileById" | "addBugReport" | "getBugReportById" | "addBugReportFile" | "getBugReportFilesByBugReportId" | "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" | "addOrganization" | "getOrgs" | "getOrg" | "addOrganizationAccount" | "getOrganizationAccount" | "getOrganizationAccounts" | "removeOrganizationAccount" | "updateOrganization"> & {
1333
1431
  addOrder: (order: Omit<Order, "order_id">) => Order;
1334
1432
  getOrderById: (orderId: string) => Order | undefined;
1335
1433
  getOrderFilesByOrderId: (orderId: string) => OrderFile[];
@@ -1346,6 +1444,22 @@ declare const createDatabase: ({ seed }?: {
1346
1444
  updateJlcpcbOrderState: (orderId: string, updates: Partial<JlcpcbOrderState>) => void;
1347
1445
  addOrderFile: (orderFile: Omit<OrderFile, "order_file_id">) => OrderFile;
1348
1446
  getOrderFileById: (orderFileId: string) => OrderFile | undefined;
1447
+ addBugReport: ({ reporter_account_id, text, is_auto_deleted, delete_at, }: {
1448
+ reporter_account_id: string;
1449
+ text?: string | null;
1450
+ is_auto_deleted?: boolean;
1451
+ delete_at?: string | null;
1452
+ }) => BugReport;
1453
+ getBugReportById: (bugReportId: string) => BugReport | undefined;
1454
+ addBugReportFile: ({ bug_report_id, file_path, content_mimetype, is_text, content_text, content_bytes, }: {
1455
+ bug_report_id: string;
1456
+ file_path: string;
1457
+ content_mimetype: string;
1458
+ is_text: boolean;
1459
+ content_text: string | null;
1460
+ content_bytes: Uint8Array | null;
1461
+ }) => BugReportFile;
1462
+ getBugReportFilesByBugReportId: (bugReportId: string) => BugReportFile[];
1349
1463
  addAccount: (account: Omit<Account, "account_id" | "is_tscircuit_staff"> & Partial<Pick<Account, "account_id" | "is_tscircuit_staff">>) => {
1350
1464
  is_tscircuit_staff: boolean;
1351
1465
  github_username: string;
@@ -1558,6 +1672,9 @@ declare const createDatabase: ({ seed }?: {
1558
1672
  image_generation_is_stale: boolean;
1559
1673
  ai_review_requested: boolean;
1560
1674
  is_pr_preview: boolean;
1675
+ pcb_preview_image_url: string | null;
1676
+ sch_preview_image_url: string | null;
1677
+ cad_preview_image_url: string | null;
1561
1678
  ai_review_text?: string | null | undefined;
1562
1679
  commit_sha?: string | null | undefined;
1563
1680
  license?: string | null | undefined;
@@ -1587,8 +1704,8 @@ declare const createDatabase: ({ seed }?: {
1587
1704
  packageFiles: {
1588
1705
  package_release_id: string;
1589
1706
  created_at: string;
1590
- package_file_id: string;
1591
1707
  file_path: string;
1708
+ package_file_id: string;
1592
1709
  content_text?: string | null | undefined;
1593
1710
  content_mimetype?: string | null | undefined;
1594
1711
  is_release_tarball?: boolean | undefined;
@@ -1659,6 +1776,9 @@ declare const createDatabase: ({ seed }?: {
1659
1776
  latest_license?: string | null | undefined;
1660
1777
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
1661
1778
  allow_pr_previews?: boolean | undefined;
1779
+ latest_pcb_preview_image_url?: string | null | undefined;
1780
+ latest_sch_preview_image_url?: string | null | undefined;
1781
+ latest_cad_preview_image_url?: string | null | undefined;
1662
1782
  }[];
1663
1783
  orders: {
1664
1784
  error: z.objectOutputType<{
@@ -1843,7 +1963,26 @@ declare const createDatabase: ({ seed }?: {
1843
1963
  preview_url?: string | null | undefined;
1844
1964
  build_logs?: string | null | undefined;
1845
1965
  }[];
1846
- }, "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" | "addOrganization" | "getOrgs" | "getOrg" | "addOrganizationAccount" | "getOrganizationAccount" | "getOrganizationAccounts" | "removeOrganizationAccount" | "updateOrganization"> & {
1966
+ bugReports: {
1967
+ created_at: string;
1968
+ bug_report_id: string;
1969
+ reporter_account_id: string;
1970
+ text: string | null;
1971
+ is_auto_deleted: boolean;
1972
+ delete_at: string | null;
1973
+ file_count: number;
1974
+ }[];
1975
+ bugReportFiles: {
1976
+ created_at: string;
1977
+ content_text: string | null;
1978
+ content_bytes: Uint8Array<ArrayBuffer> | null;
1979
+ bug_report_id: string;
1980
+ bug_report_file_id: string;
1981
+ file_path: string;
1982
+ content_mimetype: string;
1983
+ is_text: boolean;
1984
+ }[];
1985
+ }, "addOrder" | "getOrderById" | "getOrderFilesByOrderId" | "addOrderQuote" | "getOrderQuoteById" | "getJlcpcbOrderStatesByOrderId" | "getJlcpcbOrderStepRunsByJlcpcbOrderStateId" | "updateOrder" | "addJlcpcbOrderState" | "updateJlcpcbOrderState" | "addOrderFile" | "getOrderFileById" | "addBugReport" | "getBugReportById" | "addBugReportFile" | "getBugReportFilesByBugReportId" | "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" | "addOrganization" | "getOrgs" | "getOrg" | "addOrganizationAccount" | "getOrganizationAccount" | "getOrganizationAccounts" | "removeOrganizationAccount" | "updateOrganization"> & {
1847
1986
  addOrder: (order: Omit<Order, "order_id">) => Order;
1848
1987
  getOrderById: (orderId: string) => Order | undefined;
1849
1988
  getOrderFilesByOrderId: (orderId: string) => OrderFile[];
@@ -1860,6 +1999,22 @@ declare const createDatabase: ({ seed }?: {
1860
1999
  updateJlcpcbOrderState: (orderId: string, updates: Partial<JlcpcbOrderState>) => void;
1861
2000
  addOrderFile: (orderFile: Omit<OrderFile, "order_file_id">) => OrderFile;
1862
2001
  getOrderFileById: (orderFileId: string) => OrderFile | undefined;
2002
+ addBugReport: ({ reporter_account_id, text, is_auto_deleted, delete_at, }: {
2003
+ reporter_account_id: string;
2004
+ text?: string | null;
2005
+ is_auto_deleted?: boolean;
2006
+ delete_at?: string | null;
2007
+ }) => BugReport;
2008
+ getBugReportById: (bugReportId: string) => BugReport | undefined;
2009
+ addBugReportFile: ({ bug_report_id, file_path, content_mimetype, is_text, content_text, content_bytes, }: {
2010
+ bug_report_id: string;
2011
+ file_path: string;
2012
+ content_mimetype: string;
2013
+ is_text: boolean;
2014
+ content_text: string | null;
2015
+ content_bytes: Uint8Array | null;
2016
+ }) => BugReportFile;
2017
+ getBugReportFilesByBugReportId: (bugReportId: string) => BugReportFile[];
1863
2018
  addAccount: (account: Omit<Account, "account_id" | "is_tscircuit_staff"> & Partial<Pick<Account, "account_id" | "is_tscircuit_staff">>) => {
1864
2019
  is_tscircuit_staff: boolean;
1865
2020
  github_username: string;
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // fake-snippets-api/lib/db/db-client.ts
2
+ import { randomUUID } from "crypto";
2
3
  import { hoist } from "zustand-hoist";
3
4
  import { createStore } from "zustand/vanilla";
4
5
  import { combine } from "zustand/middleware";
@@ -92,6 +93,29 @@ var orderFileSchema = z.object({
92
93
  content_text: z.string().nullable(),
93
94
  content_bytes: z.instanceof(Uint8Array).nullable()
94
95
  });
96
+ var bugReportSchema = z.object({
97
+ bug_report_id: z.string().uuid(),
98
+ reporter_account_id: z.string(),
99
+ text: z.string().nullable(),
100
+ is_auto_deleted: z.boolean().default(false),
101
+ delete_at: z.string().datetime().nullable(),
102
+ created_at: z.string().datetime(),
103
+ file_count: z.number().int()
104
+ });
105
+ var bugReportFileSchema = z.object({
106
+ bug_report_file_id: z.string().uuid(),
107
+ bug_report_id: z.string().uuid(),
108
+ file_path: z.string(),
109
+ content_mimetype: z.string(),
110
+ is_text: z.boolean(),
111
+ created_at: z.string().datetime(),
112
+ content_text: z.string().nullable(),
113
+ content_bytes: z.instanceof(Uint8Array).nullable()
114
+ });
115
+ var bugReportFileResponseSchema = bugReportFileSchema.omit({
116
+ content_text: true,
117
+ content_bytes: true
118
+ });
95
119
  var shippingOptionSchema = z.object({
96
120
  carrier: z.string(),
97
121
  service: z.string(),
@@ -228,7 +252,11 @@ var packageReleaseSchema = z.object({
228
252
  latest_package_build_id: z.string().nullable().optional(),
229
253
  branch_name: z.string().nullable().optional(),
230
254
  commit_message: z.string().nullable().optional(),
231
- commit_author: z.string().nullable().optional()
255
+ commit_author: z.string().nullable().optional(),
256
+ // Preview images url
257
+ pcb_preview_image_url: z.string().nullable().default(null),
258
+ sch_preview_image_url: z.string().nullable().default(null),
259
+ cad_preview_image_url: z.string().nullable().default(null)
232
260
  });
233
261
  var packageFileSchema = z.object({
234
262
  package_file_id: z.string(),
@@ -272,7 +300,10 @@ var packageSchema = z.object({
272
300
  latest_package_release_fs_sha: z.string().nullable().default(null),
273
301
  default_view: z.enum(["files", "3d", "pcb", "schematic"]).default("files").optional(),
274
302
  allow_pr_previews: z.boolean().default(false).optional(),
275
- is_starred: z.boolean().default(false).optional()
303
+ is_starred: z.boolean().default(false).optional(),
304
+ latest_pcb_preview_image_url: z.string().nullable().optional(),
305
+ latest_sch_preview_image_url: z.string().nullable().optional(),
306
+ latest_cad_preview_image_url: z.string().nullable().optional()
276
307
  });
277
308
  var jlcpcbOrderStateSchema = z.object({
278
309
  jlcpcb_order_state_id: z.string(),
@@ -390,7 +421,9 @@ var databaseSchema = z.object({
390
421
  aiReviews: z.array(aiReviewSchema).default([]),
391
422
  datasheets: z.array(datasheetSchema).default([]),
392
423
  githubInstallations: z.array(githubInstallationSchema).default([]),
393
- packageBuilds: z.array(packageBuildSchema).default([])
424
+ packageBuilds: z.array(packageBuildSchema).default([]),
425
+ bugReports: z.array(bugReportSchema).default([]),
426
+ bugReportFiles: z.array(bugReportFileSchema).default([])
394
427
  });
395
428
 
396
429
  // fake-snippets-api/lib/db/autoload-dev-packages.ts
@@ -2510,6 +2543,69 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2510
2543
  const state = get();
2511
2544
  return state.orderFiles.find((file) => file.order_file_id === orderFileId);
2512
2545
  },
2546
+ addBugReport: ({
2547
+ reporter_account_id,
2548
+ text,
2549
+ is_auto_deleted,
2550
+ delete_at
2551
+ }) => {
2552
+ const normalizedIsAutoDeleted = Boolean(is_auto_deleted);
2553
+ if (normalizedIsAutoDeleted && !delete_at) {
2554
+ throw new Error("delete_at is required when is_auto_deleted is true");
2555
+ }
2556
+ const normalizedDeleteAt = normalizedIsAutoDeleted ? delete_at ?? null : null;
2557
+ const bugReport = bugReportSchema.parse({
2558
+ bug_report_id: randomUUID(),
2559
+ reporter_account_id,
2560
+ text: text ?? null,
2561
+ is_auto_deleted: normalizedIsAutoDeleted,
2562
+ delete_at: normalizedDeleteAt,
2563
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
2564
+ file_count: 0
2565
+ });
2566
+ set((state) => ({
2567
+ bugReports: [...state.bugReports, bugReport]
2568
+ }));
2569
+ return bugReport;
2570
+ },
2571
+ getBugReportById: (bugReportId) => {
2572
+ const state = get();
2573
+ return state.bugReports.find(
2574
+ (bugReport) => bugReport.bug_report_id === bugReportId
2575
+ );
2576
+ },
2577
+ addBugReportFile: ({
2578
+ bug_report_id,
2579
+ file_path,
2580
+ content_mimetype,
2581
+ is_text,
2582
+ content_text,
2583
+ content_bytes
2584
+ }) => {
2585
+ const bugReportFile = bugReportFileSchema.parse({
2586
+ bug_report_file_id: randomUUID(),
2587
+ bug_report_id,
2588
+ file_path,
2589
+ content_mimetype,
2590
+ is_text,
2591
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
2592
+ content_text,
2593
+ content_bytes
2594
+ });
2595
+ set((state) => ({
2596
+ bugReportFiles: [...state.bugReportFiles, bugReportFile],
2597
+ bugReports: state.bugReports.map(
2598
+ (bugReport) => bugReport.bug_report_id === bug_report_id ? { ...bugReport, file_count: bugReport.file_count + 1 } : bugReport
2599
+ )
2600
+ }));
2601
+ return bugReportFile;
2602
+ },
2603
+ getBugReportFilesByBugReportId: (bugReportId) => {
2604
+ const state = get();
2605
+ return state.bugReportFiles.filter(
2606
+ (file) => file.bug_report_id === bugReportId
2607
+ );
2608
+ },
2513
2609
  addAccount: (account) => {
2514
2610
  const newAccount = {
2515
2611
  account_id: account.account_id || `account_${get().idCounter + 1}`,
@@ -3309,6 +3405,9 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
3309
3405
  const newPackage = {
3310
3406
  package_id: `package_${timestamp}`,
3311
3407
  github_repo_full_name: null,
3408
+ latest_pcb_preview_image_url: _package.latest_pcb_preview_image_url ?? `/api/packages/images/${_package.name}`,
3409
+ latest_cad_preview_image_url: _package.latest_cad_preview_image_url ?? `/api/packages/images/${_package.name}`,
3410
+ latest_sch_preview_image_url: _package.latest_sch_preview_image_url ?? `/api/packages/images/${_package.name}`,
3312
3411
  ..._package
3313
3412
  };
3314
3413
  set((state) => ({