@tscircuit/fake-snippets 0.0.72 → 0.0.74

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 (40) hide show
  1. package/bun.lock +33 -17
  2. package/dist/bundle.js +296 -200
  3. package/dist/index.d.ts +87 -4
  4. package/dist/index.js +71 -8
  5. package/dist/schema.d.ts +120 -0
  6. package/dist/schema.js +19 -1
  7. package/fake-snippets-api/lib/db/db-client.ts +58 -7
  8. package/fake-snippets-api/lib/db/schema.ts +26 -0
  9. package/fake-snippets-api/lib/package_file/generate-fs-sha.ts +20 -0
  10. package/fake-snippets-api/lib/public-mapping/public-map-package.ts +1 -0
  11. package/fake-snippets-api/routes/api/package_files/create.ts +3 -0
  12. package/fake-snippets-api/routes/api/package_files/create_or_update.ts +6 -0
  13. package/fake-snippets-api/routes/api/package_files/delete.ts +3 -0
  14. package/fake-snippets-api/routes/api/package_releases/rebuild.ts +32 -0
  15. package/fake-snippets-api/routes/api/packages/create.ts +1 -0
  16. package/package.json +7 -7
  17. package/src/App.tsx +5 -0
  18. package/src/components/JLCPCBImportDialog.tsx +1 -1
  19. package/src/components/PackageBuildsPage/PackageBuildDetailsPage.tsx +56 -0
  20. package/src/components/PackageBuildsPage/build-preview-content.tsx +11 -0
  21. package/src/components/PackageBuildsPage/collapsible-section.tsx +70 -0
  22. package/src/components/PackageBuildsPage/package-build-details-panel.tsx +84 -0
  23. package/src/components/PackageBuildsPage/package-build-header.tsx +75 -0
  24. package/src/components/PackageCard.tsx +1 -10
  25. package/src/components/TrendingPackagesCarousel.tsx +5 -16
  26. package/src/components/ViewPackagePage/components/mobile-sidebar.tsx +1 -1
  27. package/src/components/ViewPackagePage/components/preview-image-squares.tsx +2 -6
  28. package/src/components/package-port/CodeAndPreview.tsx +3 -2
  29. package/src/components/package-port/CodeEditor.tsx +5 -3
  30. package/src/components/package-port/EditorNav.tsx +17 -13
  31. package/src/hooks/use-create-package-mutation.ts +0 -7
  32. package/src/hooks/use-current-package-id.ts +2 -8
  33. package/src/hooks/use-current-package-release.ts +28 -0
  34. package/src/hooks/use-preview-images.ts +3 -15
  35. package/src/hooks/useFileManagement.ts +26 -21
  36. package/src/lib/utils/checkIfManualEditsImported.ts +9 -0
  37. package/src/pages/editor.tsx +2 -10
  38. package/src/pages/package-builds.tsx +33 -0
  39. package/src/pages/package-editor.tsx +2 -14
  40. package/src/hooks/use-get-fsmap-hash-for-package.ts +0 -19
package/dist/index.d.ts CHANGED
@@ -421,6 +421,20 @@ declare const packageReleaseSchema: z.ZodObject<{
421
421
  has_transpiled: z.ZodDefault<z.ZodBoolean>;
422
422
  transpilation_error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
423
423
  fs_sha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
424
+ display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
425
+ total_build_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
426
+ transpilation_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
427
+ transpilation_in_progress: z.ZodDefault<z.ZodBoolean>;
428
+ transpilation_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
429
+ transpilation_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
430
+ transpilation_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
431
+ transpilation_is_stale: z.ZodDefault<z.ZodBoolean>;
432
+ circuit_json_build_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
433
+ circuit_json_build_in_progress: z.ZodDefault<z.ZodBoolean>;
434
+ circuit_json_build_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
435
+ circuit_json_build_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
436
+ circuit_json_build_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
437
+ circuit_json_build_is_stale: z.ZodDefault<z.ZodBoolean>;
424
438
  }, "strip", z.ZodTypeAny, {
425
439
  package_release_id: string;
426
440
  created_at: string;
@@ -429,12 +443,26 @@ declare const packageReleaseSchema: z.ZodObject<{
429
443
  is_locked: boolean;
430
444
  is_latest: boolean;
431
445
  has_transpiled: boolean;
446
+ display_status: "pending" | "building" | "successful" | "failed";
447
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
448
+ transpilation_in_progress: boolean;
449
+ transpilation_logs: any[];
450
+ transpilation_is_stale: boolean;
451
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
452
+ circuit_json_build_in_progress: boolean;
453
+ circuit_json_build_logs: any[];
454
+ circuit_json_build_is_stale: boolean;
432
455
  commit_sha?: string | null | undefined;
433
456
  license?: string | null | undefined;
434
457
  circuit_json_build_error?: string | null | undefined;
435
458
  circuit_json_build_error_last_updated_at?: string | null | undefined;
436
459
  transpilation_error?: string | null | undefined;
437
460
  fs_sha?: string | null | undefined;
461
+ total_build_duration_ms?: number | null | undefined;
462
+ transpilation_started_at?: string | null | undefined;
463
+ transpilation_completed_at?: string | null | undefined;
464
+ circuit_json_build_started_at?: string | null | undefined;
465
+ circuit_json_build_completed_at?: string | null | undefined;
438
466
  }, {
439
467
  package_release_id: string;
440
468
  created_at: string;
@@ -449,6 +477,20 @@ declare const packageReleaseSchema: z.ZodObject<{
449
477
  has_transpiled?: boolean | undefined;
450
478
  transpilation_error?: string | null | undefined;
451
479
  fs_sha?: string | null | undefined;
480
+ display_status?: "pending" | "building" | "successful" | "failed" | undefined;
481
+ total_build_duration_ms?: number | null | undefined;
482
+ transpilation_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
483
+ transpilation_in_progress?: boolean | undefined;
484
+ transpilation_started_at?: string | null | undefined;
485
+ transpilation_completed_at?: string | null | undefined;
486
+ transpilation_logs?: any[] | undefined;
487
+ transpilation_is_stale?: boolean | undefined;
488
+ circuit_json_build_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
489
+ circuit_json_build_in_progress?: boolean | undefined;
490
+ circuit_json_build_started_at?: string | null | undefined;
491
+ circuit_json_build_completed_at?: string | null | undefined;
492
+ circuit_json_build_logs?: any[] | undefined;
493
+ circuit_json_build_is_stale?: boolean | undefined;
452
494
  }>;
453
495
  type PackageRelease = z.infer<typeof packageReleaseSchema>;
454
496
  declare const packageFileSchema: z.ZodObject<{
@@ -508,6 +550,7 @@ declare const packageSchema: z.ZodObject<{
508
550
  ai_description: z.ZodNullable<z.ZodString>;
509
551
  latest_license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
510
552
  ai_usage_instructions: z.ZodNullable<z.ZodString>;
553
+ latest_package_release_fs_sha: z.ZodDefault<z.ZodNullable<z.ZodString>>;
511
554
  default_view: z.ZodOptional<z.ZodDefault<z.ZodEnum<["files", "3d", "pcb", "schematic"]>>>;
512
555
  }, "strip", z.ZodTypeAny, {
513
556
  name: string;
@@ -535,6 +578,7 @@ declare const packageSchema: z.ZodObject<{
535
578
  website: string | null;
536
579
  ai_description: string | null;
537
580
  ai_usage_instructions: string | null;
581
+ latest_package_release_fs_sha: string | null;
538
582
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
539
583
  latest_license?: string | null | undefined;
540
584
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -566,6 +610,7 @@ declare const packageSchema: z.ZodObject<{
566
610
  is_source_from_github?: boolean | undefined;
567
611
  website?: string | null | undefined;
568
612
  latest_license?: string | null | undefined;
613
+ latest_package_release_fs_sha?: string | null | undefined;
569
614
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
570
615
  }>;
571
616
  type Package = z.infer<typeof packageSchema>;
@@ -706,12 +751,26 @@ declare const createDatabase: ({ seed }?: {
706
751
  is_locked: boolean;
707
752
  is_latest: boolean;
708
753
  has_transpiled: boolean;
754
+ display_status: "pending" | "building" | "successful" | "failed";
755
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
756
+ transpilation_in_progress: boolean;
757
+ transpilation_logs: any[];
758
+ transpilation_is_stale: boolean;
759
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
760
+ circuit_json_build_in_progress: boolean;
761
+ circuit_json_build_logs: any[];
762
+ circuit_json_build_is_stale: boolean;
709
763
  commit_sha?: string | null | undefined;
710
764
  license?: string | null | undefined;
711
765
  circuit_json_build_error?: string | null | undefined;
712
766
  circuit_json_build_error_last_updated_at?: string | null | undefined;
713
767
  transpilation_error?: string | null | undefined;
714
768
  fs_sha?: string | null | undefined;
769
+ total_build_duration_ms?: number | null | undefined;
770
+ transpilation_started_at?: string | null | undefined;
771
+ transpilation_completed_at?: string | null | undefined;
772
+ circuit_json_build_started_at?: string | null | undefined;
773
+ circuit_json_build_completed_at?: string | null | undefined;
715
774
  }[];
716
775
  packageFiles: {
717
776
  package_release_id: string;
@@ -779,6 +838,7 @@ declare const createDatabase: ({ seed }?: {
779
838
  website: string | null;
780
839
  ai_description: string | null;
781
840
  ai_usage_instructions: string | null;
841
+ latest_package_release_fs_sha: string | null;
782
842
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
783
843
  latest_license?: string | null | undefined;
784
844
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -889,7 +949,7 @@ declare const createDatabase: ({ seed }?: {
889
949
  }[];
890
950
  total_cost_without_shipping: number;
891
951
  }[];
892
- }, "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" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId"> & {
952
+ }, "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" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId" | "updatePackageReleaseFsSha"> & {
893
953
  addOrder: (order: Omit<Order, "order_id">) => Order;
894
954
  getOrderById: (orderId: string) => Order | undefined;
895
955
  getOrderFilesByOrderId: (orderId: string) => OrderFile[];
@@ -956,13 +1016,17 @@ declare const createDatabase: ({ seed }?: {
956
1016
  updatePackage: (packageId: string, updates: Partial<Package>) => Package | undefined;
957
1017
  getPackageById: (packageId: string) => Package | undefined;
958
1018
  getPackageReleaseById: (packageReleaseId: string) => PackageRelease | undefined;
959
- addPackageRelease: (packageRelease: Omit<PackageRelease, "package_release_id">) => PackageRelease;
1019
+ addPackageRelease: (packageRelease: Omit<z.input<typeof packageReleaseSchema>, "package_release_id">) => PackageRelease;
960
1020
  updatePackageRelease: (packageRelease: PackageRelease) => void;
961
1021
  deletePackageFile: (packageFileId: string) => boolean;
962
1022
  addPackageFile: (packageFile: Omit<PackageFile, "package_file_id">) => PackageFile;
963
1023
  updatePackageFile: (packageFileId: string, updates: Partial<Omit<PackageFile, "package_file_id">>) => PackageFile;
964
1024
  getStarCount: (packageId: string) => number;
965
1025
  getPackageFilesByReleaseId: (packageReleaseId: string) => PackageFile[];
1026
+ /**
1027
+ * Update fs_sha for a package release based on its files
1028
+ */
1029
+ updatePackageReleaseFsSha: (packageReleaseId: string) => void;
966
1030
  }> & Omit<{
967
1031
  idCounter: number;
968
1032
  snippets: {
@@ -997,12 +1061,26 @@ declare const createDatabase: ({ seed }?: {
997
1061
  is_locked: boolean;
998
1062
  is_latest: boolean;
999
1063
  has_transpiled: boolean;
1064
+ display_status: "pending" | "building" | "successful" | "failed";
1065
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
1066
+ transpilation_in_progress: boolean;
1067
+ transpilation_logs: any[];
1068
+ transpilation_is_stale: boolean;
1069
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
1070
+ circuit_json_build_in_progress: boolean;
1071
+ circuit_json_build_logs: any[];
1072
+ circuit_json_build_is_stale: boolean;
1000
1073
  commit_sha?: string | null | undefined;
1001
1074
  license?: string | null | undefined;
1002
1075
  circuit_json_build_error?: string | null | undefined;
1003
1076
  circuit_json_build_error_last_updated_at?: string | null | undefined;
1004
1077
  transpilation_error?: string | null | undefined;
1005
1078
  fs_sha?: string | null | undefined;
1079
+ total_build_duration_ms?: number | null | undefined;
1080
+ transpilation_started_at?: string | null | undefined;
1081
+ transpilation_completed_at?: string | null | undefined;
1082
+ circuit_json_build_started_at?: string | null | undefined;
1083
+ circuit_json_build_completed_at?: string | null | undefined;
1006
1084
  }[];
1007
1085
  packageFiles: {
1008
1086
  package_release_id: string;
@@ -1070,6 +1148,7 @@ declare const createDatabase: ({ seed }?: {
1070
1148
  website: string | null;
1071
1149
  ai_description: string | null;
1072
1150
  ai_usage_instructions: string | null;
1151
+ latest_package_release_fs_sha: string | null;
1073
1152
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
1074
1153
  latest_license?: string | null | undefined;
1075
1154
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -1180,7 +1259,7 @@ declare const createDatabase: ({ seed }?: {
1180
1259
  }[];
1181
1260
  total_cost_without_shipping: number;
1182
1261
  }[];
1183
- }, "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" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId"> & {
1262
+ }, "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" | "deleteSnippet" | "addSession" | "getSessions" | "createLoginPage" | "getLoginPage" | "updateLoginPage" | "getAccount" | "updateAccount" | "createSession" | "addStar" | "removeStar" | "hasStarred" | "addPackage" | "updatePackage" | "getPackageById" | "getPackageReleaseById" | "addPackageRelease" | "updatePackageRelease" | "deletePackageFile" | "addPackageFile" | "updatePackageFile" | "getStarCount" | "getPackageFilesByReleaseId" | "updatePackageReleaseFsSha"> & {
1184
1263
  addOrder: (order: Omit<Order, "order_id">) => Order;
1185
1264
  getOrderById: (orderId: string) => Order | undefined;
1186
1265
  getOrderFilesByOrderId: (orderId: string) => OrderFile[];
@@ -1247,13 +1326,17 @@ declare const createDatabase: ({ seed }?: {
1247
1326
  updatePackage: (packageId: string, updates: Partial<Package>) => Package | undefined;
1248
1327
  getPackageById: (packageId: string) => Package | undefined;
1249
1328
  getPackageReleaseById: (packageReleaseId: string) => PackageRelease | undefined;
1250
- addPackageRelease: (packageRelease: Omit<PackageRelease, "package_release_id">) => PackageRelease;
1329
+ addPackageRelease: (packageRelease: Omit<z.input<typeof packageReleaseSchema>, "package_release_id">) => PackageRelease;
1251
1330
  updatePackageRelease: (packageRelease: PackageRelease) => void;
1252
1331
  deletePackageFile: (packageFileId: string) => boolean;
1253
1332
  addPackageFile: (packageFile: Omit<PackageFile, "package_file_id">) => PackageFile;
1254
1333
  updatePackageFile: (packageFileId: string, updates: Partial<Omit<PackageFile, "package_file_id">>) => PackageFile;
1255
1334
  getStarCount: (packageId: string) => number;
1256
1335
  getPackageFilesByReleaseId: (packageReleaseId: string) => PackageFile[];
1336
+ /**
1337
+ * Update fs_sha for a package release based on its files
1338
+ */
1339
+ updatePackageReleaseFsSha: (packageReleaseId: string) => void;
1257
1340
  };
1258
1341
  type DbClient = ReturnType<typeof createDatabase>;
1259
1342
 
package/dist/index.js CHANGED
@@ -148,7 +148,24 @@ var packageReleaseSchema = z.object({
148
148
  circuit_json_build_error_last_updated_at: z.string().datetime().nullable().optional(),
149
149
  has_transpiled: z.boolean().default(false),
150
150
  transpilation_error: z.string().nullable().optional(),
151
- fs_sha: z.string().nullable().optional()
151
+ fs_sha: z.string().nullable().optional(),
152
+ // Build Status and Display
153
+ display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
154
+ total_build_duration_ms: z.number().nullable().optional(),
155
+ // Transpilation Process
156
+ transpilation_display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
157
+ transpilation_in_progress: z.boolean().default(false),
158
+ transpilation_started_at: z.string().datetime().nullable().optional(),
159
+ transpilation_completed_at: z.string().datetime().nullable().optional(),
160
+ transpilation_logs: z.array(z.any()).default([]),
161
+ transpilation_is_stale: z.boolean().default(false),
162
+ // Circuit JSON Build Process
163
+ circuit_json_build_display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
164
+ circuit_json_build_in_progress: z.boolean().default(false),
165
+ circuit_json_build_started_at: z.string().datetime().nullable().optional(),
166
+ circuit_json_build_completed_at: z.string().datetime().nullable().optional(),
167
+ circuit_json_build_logs: z.array(z.any()).default([]),
168
+ circuit_json_build_is_stale: z.boolean().default(false)
152
169
  });
153
170
  var packageFileSchema = z.object({
154
171
  package_file_id: z.string(),
@@ -188,6 +205,7 @@ var packageSchema = z.object({
188
205
  ai_description: z.string().nullable(),
189
206
  latest_license: z.string().nullable().optional(),
190
207
  ai_usage_instructions: z.string().nullable(),
208
+ latest_package_release_fs_sha: z.string().nullable().default(null),
191
209
  default_view: z.enum(["files", "3d", "pcb", "schematic"]).default("files").optional()
192
210
  });
193
211
  var jlcpcbOrderStateSchema = z.object({
@@ -2001,6 +2019,17 @@ export const SquareWaveModule = () => (
2001
2019
  });
2002
2020
  };
2003
2021
 
2022
+ // fake-snippets-api/lib/package_file/generate-fs-sha.ts
2023
+ import md5 from "md5";
2024
+ function generateFsSha(packageFiles) {
2025
+ const fsMap = {};
2026
+ packageFiles.filter((file) => file.content_text).forEach((file) => {
2027
+ fsMap[file.file_path] = file.content_text || "";
2028
+ });
2029
+ const hash = md5(JSON.stringify(fsMap));
2030
+ return `md5-${hash}`;
2031
+ }
2032
+
2004
2033
  // fake-snippets-api/lib/db/db-client.ts
2005
2034
  var createDatabase = ({ seed: seed2 } = {}) => {
2006
2035
  const db = hoist(createStore(initializer));
@@ -2209,9 +2238,10 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2209
2238
  is_private: false,
2210
2239
  is_public: true,
2211
2240
  is_unlisted: false,
2212
- latest_package_release_id: `package_release_${nextId}`
2241
+ latest_package_release_id: `package_release_${nextId}`,
2242
+ latest_package_release_fs_sha: null
2213
2243
  };
2214
- const newPackageRelease = {
2244
+ const newPackageRelease = packageReleaseSchema.parse({
2215
2245
  package_release_id: `package_release_${nextId}`,
2216
2246
  package_id: newPackage.package_id,
2217
2247
  version: "0.0.1",
@@ -2221,7 +2251,7 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2221
2251
  updated_at: currentTime,
2222
2252
  has_transpiled: true,
2223
2253
  transpilation_error: null
2224
- };
2254
+ });
2225
2255
  const packageFiles = [];
2226
2256
  let fileIdCounter = nextId;
2227
2257
  packageFiles.push({
@@ -2265,6 +2295,20 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2265
2295
  packageFiles: [...state.packageFiles, ...packageFiles],
2266
2296
  idCounter: fileIdCounter
2267
2297
  }));
2298
+ const dbState = get();
2299
+ const releaseFiles = dbState.packageFiles.filter(
2300
+ (pf) => pf.package_release_id === newPackageRelease.package_release_id
2301
+ );
2302
+ const fsSha = generateFsSha(releaseFiles);
2303
+ set((state) => ({
2304
+ ...state,
2305
+ packageReleases: state.packageReleases.map(
2306
+ (pr) => pr.package_release_id === newPackageRelease.package_release_id ? { ...pr, fs_sha: fsSha } : pr
2307
+ ),
2308
+ packages: state.packages.map(
2309
+ (pkg) => pkg.latest_package_release_id === newPackageRelease.package_release_id ? { ...pkg, latest_package_release_fs_sha: fsSha } : pkg
2310
+ )
2311
+ }));
2268
2312
  return {
2269
2313
  snippet_id: newPackage.package_id,
2270
2314
  package_release_id: newPackageRelease.package_release_id,
@@ -2914,14 +2958,14 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2914
2958
  );
2915
2959
  },
2916
2960
  addPackageRelease: (packageRelease) => {
2917
- const newPackageRelease = {
2961
+ const parsed = packageReleaseSchema.parse({
2918
2962
  package_release_id: `package_release_${Date.now()}`,
2919
2963
  ...packageRelease
2920
- };
2964
+ });
2921
2965
  set((state) => ({
2922
- packageReleases: [...state.packageReleases, newPackageRelease]
2966
+ packageReleases: [...state.packageReleases, parsed]
2923
2967
  }));
2924
- return newPackageRelease;
2968
+ return parsed;
2925
2969
  },
2926
2970
  updatePackageRelease: (packageRelease) => {
2927
2971
  set((state) => ({
@@ -2976,6 +3020,25 @@ var initializer = combine(databaseSchema.parse({}), (set, get) => ({
2976
3020
  return state.packageFiles.filter(
2977
3021
  (pf) => pf.package_release_id === packageReleaseId
2978
3022
  );
3023
+ },
3024
+ /**
3025
+ * Update fs_sha for a package release based on its files
3026
+ */
3027
+ updatePackageReleaseFsSha: (packageReleaseId) => {
3028
+ const state = get();
3029
+ const packageFiles = state.packageFiles.filter(
3030
+ (pf) => pf.package_release_id === packageReleaseId
3031
+ );
3032
+ const fsSha = generateFsSha(packageFiles);
3033
+ set((currentState) => ({
3034
+ ...currentState,
3035
+ packageReleases: currentState.packageReleases.map(
3036
+ (pr) => pr.package_release_id === packageReleaseId ? { ...pr, fs_sha: fsSha } : pr
3037
+ ),
3038
+ packages: currentState.packages.map(
3039
+ (pkg) => pkg.latest_package_release_id === packageReleaseId ? { ...pkg, latest_package_release_fs_sha: fsSha } : pkg
3040
+ )
3041
+ }));
2979
3042
  }
2980
3043
  }));
2981
3044
 
package/dist/schema.d.ts CHANGED
@@ -546,6 +546,20 @@ declare const packageReleaseSchema: z.ZodObject<{
546
546
  has_transpiled: z.ZodDefault<z.ZodBoolean>;
547
547
  transpilation_error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
548
548
  fs_sha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
549
+ display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
550
+ total_build_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
551
+ transpilation_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
552
+ transpilation_in_progress: z.ZodDefault<z.ZodBoolean>;
553
+ transpilation_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
554
+ transpilation_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
555
+ transpilation_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
556
+ transpilation_is_stale: z.ZodDefault<z.ZodBoolean>;
557
+ circuit_json_build_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
558
+ circuit_json_build_in_progress: z.ZodDefault<z.ZodBoolean>;
559
+ circuit_json_build_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
560
+ circuit_json_build_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
561
+ circuit_json_build_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
562
+ circuit_json_build_is_stale: z.ZodDefault<z.ZodBoolean>;
549
563
  }, "strip", z.ZodTypeAny, {
550
564
  package_release_id: string;
551
565
  created_at: string;
@@ -554,12 +568,26 @@ declare const packageReleaseSchema: z.ZodObject<{
554
568
  is_locked: boolean;
555
569
  is_latest: boolean;
556
570
  has_transpiled: boolean;
571
+ display_status: "pending" | "building" | "successful" | "failed";
572
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
573
+ transpilation_in_progress: boolean;
574
+ transpilation_logs: any[];
575
+ transpilation_is_stale: boolean;
576
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
577
+ circuit_json_build_in_progress: boolean;
578
+ circuit_json_build_logs: any[];
579
+ circuit_json_build_is_stale: boolean;
557
580
  commit_sha?: string | null | undefined;
558
581
  license?: string | null | undefined;
559
582
  circuit_json_build_error?: string | null | undefined;
560
583
  circuit_json_build_error_last_updated_at?: string | null | undefined;
561
584
  transpilation_error?: string | null | undefined;
562
585
  fs_sha?: string | null | undefined;
586
+ total_build_duration_ms?: number | null | undefined;
587
+ transpilation_started_at?: string | null | undefined;
588
+ transpilation_completed_at?: string | null | undefined;
589
+ circuit_json_build_started_at?: string | null | undefined;
590
+ circuit_json_build_completed_at?: string | null | undefined;
563
591
  }, {
564
592
  package_release_id: string;
565
593
  created_at: string;
@@ -574,6 +602,20 @@ declare const packageReleaseSchema: z.ZodObject<{
574
602
  has_transpiled?: boolean | undefined;
575
603
  transpilation_error?: string | null | undefined;
576
604
  fs_sha?: string | null | undefined;
605
+ display_status?: "pending" | "building" | "successful" | "failed" | undefined;
606
+ total_build_duration_ms?: number | null | undefined;
607
+ transpilation_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
608
+ transpilation_in_progress?: boolean | undefined;
609
+ transpilation_started_at?: string | null | undefined;
610
+ transpilation_completed_at?: string | null | undefined;
611
+ transpilation_logs?: any[] | undefined;
612
+ transpilation_is_stale?: boolean | undefined;
613
+ circuit_json_build_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
614
+ circuit_json_build_in_progress?: boolean | undefined;
615
+ circuit_json_build_started_at?: string | null | undefined;
616
+ circuit_json_build_completed_at?: string | null | undefined;
617
+ circuit_json_build_logs?: any[] | undefined;
618
+ circuit_json_build_is_stale?: boolean | undefined;
577
619
  }>;
578
620
  type PackageRelease = z.infer<typeof packageReleaseSchema>;
579
621
  declare const packageFileSchema: z.ZodObject<{
@@ -633,6 +675,7 @@ declare const packageSchema: z.ZodObject<{
633
675
  ai_description: z.ZodNullable<z.ZodString>;
634
676
  latest_license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
635
677
  ai_usage_instructions: z.ZodNullable<z.ZodString>;
678
+ latest_package_release_fs_sha: z.ZodDefault<z.ZodNullable<z.ZodString>>;
636
679
  default_view: z.ZodOptional<z.ZodDefault<z.ZodEnum<["files", "3d", "pcb", "schematic"]>>>;
637
680
  }, "strip", z.ZodTypeAny, {
638
681
  name: string;
@@ -660,6 +703,7 @@ declare const packageSchema: z.ZodObject<{
660
703
  website: string | null;
661
704
  ai_description: string | null;
662
705
  ai_usage_instructions: string | null;
706
+ latest_package_release_fs_sha: string | null;
663
707
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
664
708
  latest_license?: string | null | undefined;
665
709
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -691,6 +735,7 @@ declare const packageSchema: z.ZodObject<{
691
735
  is_source_from_github?: boolean | undefined;
692
736
  website?: string | null | undefined;
693
737
  latest_license?: string | null | undefined;
738
+ latest_package_release_fs_sha?: string | null | undefined;
694
739
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
695
740
  }>;
696
741
  type Package = z.infer<typeof packageSchema>;
@@ -880,6 +925,20 @@ declare const databaseSchema: z.ZodObject<{
880
925
  has_transpiled: z.ZodDefault<z.ZodBoolean>;
881
926
  transpilation_error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
882
927
  fs_sha: z.ZodOptional<z.ZodNullable<z.ZodString>>;
928
+ display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
929
+ total_build_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
930
+ transpilation_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
931
+ transpilation_in_progress: z.ZodDefault<z.ZodBoolean>;
932
+ transpilation_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
933
+ transpilation_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
934
+ transpilation_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
935
+ transpilation_is_stale: z.ZodDefault<z.ZodBoolean>;
936
+ circuit_json_build_display_status: z.ZodDefault<z.ZodEnum<["pending", "building", "successful", "failed"]>>;
937
+ circuit_json_build_in_progress: z.ZodDefault<z.ZodBoolean>;
938
+ circuit_json_build_started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
939
+ circuit_json_build_completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
940
+ circuit_json_build_logs: z.ZodDefault<z.ZodArray<z.ZodAny, "many">>;
941
+ circuit_json_build_is_stale: z.ZodDefault<z.ZodBoolean>;
883
942
  }, "strip", z.ZodTypeAny, {
884
943
  package_release_id: string;
885
944
  created_at: string;
@@ -888,12 +947,26 @@ declare const databaseSchema: z.ZodObject<{
888
947
  is_locked: boolean;
889
948
  is_latest: boolean;
890
949
  has_transpiled: boolean;
950
+ display_status: "pending" | "building" | "successful" | "failed";
951
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
952
+ transpilation_in_progress: boolean;
953
+ transpilation_logs: any[];
954
+ transpilation_is_stale: boolean;
955
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
956
+ circuit_json_build_in_progress: boolean;
957
+ circuit_json_build_logs: any[];
958
+ circuit_json_build_is_stale: boolean;
891
959
  commit_sha?: string | null | undefined;
892
960
  license?: string | null | undefined;
893
961
  circuit_json_build_error?: string | null | undefined;
894
962
  circuit_json_build_error_last_updated_at?: string | null | undefined;
895
963
  transpilation_error?: string | null | undefined;
896
964
  fs_sha?: string | null | undefined;
965
+ total_build_duration_ms?: number | null | undefined;
966
+ transpilation_started_at?: string | null | undefined;
967
+ transpilation_completed_at?: string | null | undefined;
968
+ circuit_json_build_started_at?: string | null | undefined;
969
+ circuit_json_build_completed_at?: string | null | undefined;
897
970
  }, {
898
971
  package_release_id: string;
899
972
  created_at: string;
@@ -908,6 +981,20 @@ declare const databaseSchema: z.ZodObject<{
908
981
  has_transpiled?: boolean | undefined;
909
982
  transpilation_error?: string | null | undefined;
910
983
  fs_sha?: string | null | undefined;
984
+ display_status?: "pending" | "building" | "successful" | "failed" | undefined;
985
+ total_build_duration_ms?: number | null | undefined;
986
+ transpilation_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
987
+ transpilation_in_progress?: boolean | undefined;
988
+ transpilation_started_at?: string | null | undefined;
989
+ transpilation_completed_at?: string | null | undefined;
990
+ transpilation_logs?: any[] | undefined;
991
+ transpilation_is_stale?: boolean | undefined;
992
+ circuit_json_build_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
993
+ circuit_json_build_in_progress?: boolean | undefined;
994
+ circuit_json_build_started_at?: string | null | undefined;
995
+ circuit_json_build_completed_at?: string | null | undefined;
996
+ circuit_json_build_logs?: any[] | undefined;
997
+ circuit_json_build_is_stale?: boolean | undefined;
911
998
  }>, "many">>;
912
999
  packageFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
913
1000
  package_file_id: z.ZodString;
@@ -1071,6 +1158,7 @@ declare const databaseSchema: z.ZodObject<{
1071
1158
  ai_description: z.ZodNullable<z.ZodString>;
1072
1159
  latest_license: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1073
1160
  ai_usage_instructions: z.ZodNullable<z.ZodString>;
1161
+ latest_package_release_fs_sha: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1074
1162
  default_view: z.ZodOptional<z.ZodDefault<z.ZodEnum<["files", "3d", "pcb", "schematic"]>>>;
1075
1163
  }, "strip", z.ZodTypeAny, {
1076
1164
  name: string;
@@ -1098,6 +1186,7 @@ declare const databaseSchema: z.ZodObject<{
1098
1186
  website: string | null;
1099
1187
  ai_description: string | null;
1100
1188
  ai_usage_instructions: string | null;
1189
+ latest_package_release_fs_sha: string | null;
1101
1190
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
1102
1191
  latest_license?: string | null | undefined;
1103
1192
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -1129,6 +1218,7 @@ declare const databaseSchema: z.ZodObject<{
1129
1218
  is_source_from_github?: boolean | undefined;
1130
1219
  website?: string | null | undefined;
1131
1220
  latest_license?: string | null | undefined;
1221
+ latest_package_release_fs_sha?: string | null | undefined;
1132
1222
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
1133
1223
  }>, "many">>;
1134
1224
  orders: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1503,12 +1593,26 @@ declare const databaseSchema: z.ZodObject<{
1503
1593
  is_locked: boolean;
1504
1594
  is_latest: boolean;
1505
1595
  has_transpiled: boolean;
1596
+ display_status: "pending" | "building" | "successful" | "failed";
1597
+ transpilation_display_status: "pending" | "building" | "successful" | "failed";
1598
+ transpilation_in_progress: boolean;
1599
+ transpilation_logs: any[];
1600
+ transpilation_is_stale: boolean;
1601
+ circuit_json_build_display_status: "pending" | "building" | "successful" | "failed";
1602
+ circuit_json_build_in_progress: boolean;
1603
+ circuit_json_build_logs: any[];
1604
+ circuit_json_build_is_stale: boolean;
1506
1605
  commit_sha?: string | null | undefined;
1507
1606
  license?: string | null | undefined;
1508
1607
  circuit_json_build_error?: string | null | undefined;
1509
1608
  circuit_json_build_error_last_updated_at?: string | null | undefined;
1510
1609
  transpilation_error?: string | null | undefined;
1511
1610
  fs_sha?: string | null | undefined;
1611
+ total_build_duration_ms?: number | null | undefined;
1612
+ transpilation_started_at?: string | null | undefined;
1613
+ transpilation_completed_at?: string | null | undefined;
1614
+ circuit_json_build_started_at?: string | null | undefined;
1615
+ circuit_json_build_completed_at?: string | null | undefined;
1512
1616
  }[];
1513
1617
  packageFiles: {
1514
1618
  package_release_id: string;
@@ -1576,6 +1680,7 @@ declare const databaseSchema: z.ZodObject<{
1576
1680
  website: string | null;
1577
1681
  ai_description: string | null;
1578
1682
  ai_usage_instructions: string | null;
1683
+ latest_package_release_fs_sha: string | null;
1579
1684
  snippet_type?: "board" | "package" | "model" | "footprint" | undefined;
1580
1685
  latest_license?: string | null | undefined;
1581
1686
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
@@ -1726,6 +1831,20 @@ declare const databaseSchema: z.ZodObject<{
1726
1831
  has_transpiled?: boolean | undefined;
1727
1832
  transpilation_error?: string | null | undefined;
1728
1833
  fs_sha?: string | null | undefined;
1834
+ display_status?: "pending" | "building" | "successful" | "failed" | undefined;
1835
+ total_build_duration_ms?: number | null | undefined;
1836
+ transpilation_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
1837
+ transpilation_in_progress?: boolean | undefined;
1838
+ transpilation_started_at?: string | null | undefined;
1839
+ transpilation_completed_at?: string | null | undefined;
1840
+ transpilation_logs?: any[] | undefined;
1841
+ transpilation_is_stale?: boolean | undefined;
1842
+ circuit_json_build_display_status?: "pending" | "building" | "successful" | "failed" | undefined;
1843
+ circuit_json_build_in_progress?: boolean | undefined;
1844
+ circuit_json_build_started_at?: string | null | undefined;
1845
+ circuit_json_build_completed_at?: string | null | undefined;
1846
+ circuit_json_build_logs?: any[] | undefined;
1847
+ circuit_json_build_is_stale?: boolean | undefined;
1729
1848
  }[] | undefined;
1730
1849
  packageFiles?: {
1731
1850
  package_release_id: string;
@@ -1795,6 +1914,7 @@ declare const databaseSchema: z.ZodObject<{
1795
1914
  is_source_from_github?: boolean | undefined;
1796
1915
  website?: string | null | undefined;
1797
1916
  latest_license?: string | null | undefined;
1917
+ latest_package_release_fs_sha?: string | null | undefined;
1798
1918
  default_view?: "files" | "3d" | "pcb" | "schematic" | undefined;
1799
1919
  }[] | undefined;
1800
1920
  orders?: {
package/dist/schema.js CHANGED
@@ -143,7 +143,24 @@ var packageReleaseSchema = z.object({
143
143
  circuit_json_build_error_last_updated_at: z.string().datetime().nullable().optional(),
144
144
  has_transpiled: z.boolean().default(false),
145
145
  transpilation_error: z.string().nullable().optional(),
146
- fs_sha: z.string().nullable().optional()
146
+ fs_sha: z.string().nullable().optional(),
147
+ // Build Status and Display
148
+ display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
149
+ total_build_duration_ms: z.number().nullable().optional(),
150
+ // Transpilation Process
151
+ transpilation_display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
152
+ transpilation_in_progress: z.boolean().default(false),
153
+ transpilation_started_at: z.string().datetime().nullable().optional(),
154
+ transpilation_completed_at: z.string().datetime().nullable().optional(),
155
+ transpilation_logs: z.array(z.any()).default([]),
156
+ transpilation_is_stale: z.boolean().default(false),
157
+ // Circuit JSON Build Process
158
+ circuit_json_build_display_status: z.enum(["pending", "building", "successful", "failed"]).default("pending"),
159
+ circuit_json_build_in_progress: z.boolean().default(false),
160
+ circuit_json_build_started_at: z.string().datetime().nullable().optional(),
161
+ circuit_json_build_completed_at: z.string().datetime().nullable().optional(),
162
+ circuit_json_build_logs: z.array(z.any()).default([]),
163
+ circuit_json_build_is_stale: z.boolean().default(false)
147
164
  });
148
165
  var packageFileSchema = z.object({
149
166
  package_file_id: z.string(),
@@ -183,6 +200,7 @@ var packageSchema = z.object({
183
200
  ai_description: z.string().nullable(),
184
201
  latest_license: z.string().nullable().optional(),
185
202
  ai_usage_instructions: z.string().nullable(),
203
+ latest_package_release_fs_sha: z.string().nullable().default(null),
186
204
  default_view: z.enum(["files", "3d", "pcb", "schematic"]).default("files").optional()
187
205
  });
188
206
  var jlcpcbOrderStateSchema = z.object({