@tscircuit/fake-snippets 0.0.106 → 0.0.107
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.
- package/CLAUDE.md +92 -0
- package/api/generated-index.js +2 -3
- package/dist/bundle.js +339 -413
- package/dist/index.d.ts +5 -0
- package/dist/index.js +24 -5
- package/dist/schema.d.ts +8 -0
- package/dist/schema.js +3 -1
- package/fake-snippets-api/lib/db/db-client.ts +9 -0
- package/fake-snippets-api/lib/db/schema.ts +3 -0
- package/fake-snippets-api/lib/db/seed.ts +17 -3
- package/fake-snippets-api/routes/api/package_builds/list.ts +0 -1
- package/package.json +3 -2
- package/src/App.tsx +19 -4
- package/src/components/PackageBreadcrumb.tsx +111 -0
- package/src/components/ViewPackagePage/components/sidebar-releases-section.tsx +17 -7
- package/src/components/preview/BuildsList.tsx +74 -168
- package/src/components/preview/ConnectedPackagesList.tsx +22 -5
- package/src/components/preview/ConnectedRepoOverview.tsx +12 -2
- package/src/components/preview/{ConnectedRepoDashboard.tsx → PackageReleasesDashboard.tsx} +30 -74
- package/src/components/preview/index.tsx +7 -4
- package/src/hooks/use-package-builds.ts +0 -48
- package/src/hooks/use-package-release-by-id-or-version.ts +36 -0
- package/src/hooks/use-package-release.ts +32 -0
- package/src/lib/utils/isUuid.ts +5 -0
- package/src/pages/preview-build.tsx +3 -3
- package/src/pages/release-builds.tsx +107 -0
- package/src/pages/release-detail.tsx +118 -0
- package/src/pages/releases.tsx +51 -0
- package/fake-snippets-api/routes/api/package_builds/latest.ts +0 -109
- package/src/pages/view-connected-repo.tsx +0 -49
package/dist/index.d.ts
CHANGED
|
@@ -520,6 +520,7 @@ 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>>;
|
|
523
524
|
}, "strip", z.ZodTypeAny, {
|
|
524
525
|
package_release_id: string;
|
|
525
526
|
created_at: string;
|
|
@@ -556,6 +557,7 @@ declare const packageReleaseSchema: z.ZodObject<{
|
|
|
556
557
|
ai_review_error?: any;
|
|
557
558
|
ai_review_logs?: any[] | null | undefined;
|
|
558
559
|
github_pr_number?: number | null | undefined;
|
|
560
|
+
latest_package_build_id?: string | null | undefined;
|
|
559
561
|
}, {
|
|
560
562
|
package_release_id: string;
|
|
561
563
|
created_at: string;
|
|
@@ -592,6 +594,7 @@ declare const packageReleaseSchema: z.ZodObject<{
|
|
|
592
594
|
ai_review_requested?: boolean | undefined;
|
|
593
595
|
is_pr_preview?: boolean | undefined;
|
|
594
596
|
github_pr_number?: number | null | undefined;
|
|
597
|
+
latest_package_build_id?: string | null | undefined;
|
|
595
598
|
}>;
|
|
596
599
|
type PackageRelease = z.infer<typeof packageReleaseSchema>;
|
|
597
600
|
declare const packageFileSchema: z.ZodObject<{
|
|
@@ -960,6 +963,7 @@ 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;
|
|
963
967
|
}[];
|
|
964
968
|
packageFiles: {
|
|
965
969
|
package_release_id: string;
|
|
@@ -1361,6 +1365,7 @@ declare const createDatabase: ({ seed }?: {
|
|
|
1361
1365
|
ai_review_error?: any;
|
|
1362
1366
|
ai_review_logs?: any[] | null | undefined;
|
|
1363
1367
|
github_pr_number?: number | null | undefined;
|
|
1368
|
+
latest_package_build_id?: string | null | undefined;
|
|
1364
1369
|
}[];
|
|
1365
1370
|
packageFiles: {
|
|
1366
1371
|
package_release_id: string;
|
package/dist/index.js
CHANGED
|
@@ -212,7 +212,9 @@ 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()
|
|
216
218
|
});
|
|
217
219
|
var packageFileSchema = z.object({
|
|
218
220
|
package_file_id: z.string(),
|
|
@@ -1045,7 +1047,7 @@ export default () => (
|
|
|
1045
1047
|
}
|
|
1046
1048
|
]
|
|
1047
1049
|
});
|
|
1048
|
-
db.addPackageBuild({
|
|
1050
|
+
const firstBuild = db.addPackageBuild({
|
|
1049
1051
|
package_release_id: packageReleaseId1,
|
|
1050
1052
|
created_at: new Date(Date.now() - 15e3).toISOString(),
|
|
1051
1053
|
// 15 seconds ago
|
|
@@ -1075,6 +1077,11 @@ export default () => (
|
|
|
1075
1077
|
commit_message: "Attempted build of a555timer-square-wave package",
|
|
1076
1078
|
commit_author: "testuser"
|
|
1077
1079
|
});
|
|
1080
|
+
const release1 = db.getPackageReleaseById(packageReleaseId1);
|
|
1081
|
+
db.updatePackageRelease({
|
|
1082
|
+
...release1,
|
|
1083
|
+
latest_package_build_id: firstBuild.package_build_id
|
|
1084
|
+
});
|
|
1078
1085
|
db.addSnippet({
|
|
1079
1086
|
name: "seveibar/a555timer",
|
|
1080
1087
|
unscoped_name: "a555timer",
|
|
@@ -2113,7 +2120,7 @@ export const SquareWaveModule = () => (
|
|
|
2113
2120
|
}
|
|
2114
2121
|
]
|
|
2115
2122
|
});
|
|
2116
|
-
db.addPackageBuild({
|
|
2123
|
+
const failedBuild = db.addPackageBuild({
|
|
2117
2124
|
package_release_id: packageReleaseId2,
|
|
2118
2125
|
created_at: new Date(Date.now() - 15e3).toISOString(),
|
|
2119
2126
|
// 15 seconds ago
|
|
@@ -2143,7 +2150,7 @@ export const SquareWaveModule = () => (
|
|
|
2143
2150
|
commit_message: "Attempted build of a555timer-square-wave package",
|
|
2144
2151
|
commit_author: "testuser"
|
|
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,
|
|
@@ -2185,6 +2192,11 @@ export const SquareWaveModule = () => (
|
|
|
2185
2192
|
commit_message: "Initial build of a555timer-square-wave package",
|
|
2186
2193
|
commit_author: "testuser"
|
|
2187
2194
|
});
|
|
2195
|
+
const release2 = db.getPackageReleaseById(packageReleaseId2);
|
|
2196
|
+
db.updatePackageRelease({
|
|
2197
|
+
...release2,
|
|
2198
|
+
latest_package_build_id: successfulBuild.package_build_id
|
|
2199
|
+
});
|
|
2188
2200
|
db.addOrder({
|
|
2189
2201
|
account_id,
|
|
2190
2202
|
is_running: false,
|
|
@@ -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,7 @@ 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>>;
|
|
696
697
|
}, "strip", z.ZodTypeAny, {
|
|
697
698
|
package_release_id: string;
|
|
698
699
|
created_at: string;
|
|
@@ -729,6 +730,7 @@ declare const packageReleaseSchema: z.ZodObject<{
|
|
|
729
730
|
ai_review_error?: any;
|
|
730
731
|
ai_review_logs?: any[] | null | undefined;
|
|
731
732
|
github_pr_number?: number | null | undefined;
|
|
733
|
+
latest_package_build_id?: string | null | undefined;
|
|
732
734
|
}, {
|
|
733
735
|
package_release_id: string;
|
|
734
736
|
created_at: string;
|
|
@@ -765,6 +767,7 @@ declare const packageReleaseSchema: z.ZodObject<{
|
|
|
765
767
|
ai_review_requested?: boolean | undefined;
|
|
766
768
|
is_pr_preview?: boolean | undefined;
|
|
767
769
|
github_pr_number?: number | null | undefined;
|
|
770
|
+
latest_package_build_id?: string | null | undefined;
|
|
768
771
|
}>;
|
|
769
772
|
type PackageRelease = z.infer<typeof packageReleaseSchema>;
|
|
770
773
|
declare const packageFileSchema: z.ZodObject<{
|
|
@@ -1176,6 +1179,7 @@ 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>>;
|
|
1179
1183
|
}, "strip", z.ZodTypeAny, {
|
|
1180
1184
|
package_release_id: string;
|
|
1181
1185
|
created_at: string;
|
|
@@ -1212,6 +1216,7 @@ declare const databaseSchema: z.ZodObject<{
|
|
|
1212
1216
|
ai_review_error?: any;
|
|
1213
1217
|
ai_review_logs?: any[] | null | undefined;
|
|
1214
1218
|
github_pr_number?: number | null | undefined;
|
|
1219
|
+
latest_package_build_id?: string | null | undefined;
|
|
1215
1220
|
}, {
|
|
1216
1221
|
package_release_id: string;
|
|
1217
1222
|
created_at: string;
|
|
@@ -1248,6 +1253,7 @@ declare const databaseSchema: z.ZodObject<{
|
|
|
1248
1253
|
ai_review_requested?: boolean | undefined;
|
|
1249
1254
|
is_pr_preview?: boolean | undefined;
|
|
1250
1255
|
github_pr_number?: number | null | undefined;
|
|
1256
|
+
latest_package_build_id?: string | null | undefined;
|
|
1251
1257
|
}>, "many">>;
|
|
1252
1258
|
packageFiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1253
1259
|
package_file_id: z.ZodString;
|
|
@@ -2059,6 +2065,7 @@ 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;
|
|
2062
2069
|
}[];
|
|
2063
2070
|
packageFiles: {
|
|
2064
2071
|
package_release_id: string;
|
|
@@ -2360,6 +2367,7 @@ 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;
|
|
2363
2371
|
}[] | undefined;
|
|
2364
2372
|
packageFiles?: {
|
|
2365
2373
|
package_release_id: string;
|
package/dist/schema.js
CHANGED
|
@@ -207,7 +207,9 @@ 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()
|
|
211
213
|
});
|
|
212
214
|
var packageFileSchema = z.object({
|
|
213
215
|
package_file_id: z.string(),
|
|
@@ -1488,6 +1488,15 @@ const initializer = combine(databaseSchema.parse({}), (set, get) => ({
|
|
|
1488
1488
|
}
|
|
1489
1489
|
set((state) => ({
|
|
1490
1490
|
packageBuilds: [...state.packageBuilds, newPackageBuild],
|
|
1491
|
+
// Automatically update the package release to reference this as the latest build
|
|
1492
|
+
packageReleases: state.packageReleases.map((release) =>
|
|
1493
|
+
release.package_release_id === packageBuild.package_release_id
|
|
1494
|
+
? {
|
|
1495
|
+
...release,
|
|
1496
|
+
latest_package_build_id: newPackageBuild.package_build_id,
|
|
1497
|
+
}
|
|
1498
|
+
: release,
|
|
1499
|
+
),
|
|
1491
1500
|
}))
|
|
1492
1501
|
return newPackageBuild
|
|
1493
1502
|
},
|
|
@@ -255,6 +255,9 @@ 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(),
|
|
258
261
|
})
|
|
259
262
|
export type PackageRelease = z.infer<typeof packageReleaseSchema>
|
|
260
263
|
|
|
@@ -538,7 +538,7 @@ export default () => (
|
|
|
538
538
|
],
|
|
539
539
|
})
|
|
540
540
|
|
|
541
|
-
db.addPackageBuild({
|
|
541
|
+
const firstBuild = db.addPackageBuild({
|
|
542
542
|
package_release_id: packageReleaseId1,
|
|
543
543
|
created_at: new Date(Date.now() - 15000).toISOString(), // 15 seconds ago
|
|
544
544
|
transpilation_in_progress: false,
|
|
@@ -574,6 +574,13 @@ export default () => (
|
|
|
574
574
|
commit_message: "Attempted build of a555timer-square-wave package",
|
|
575
575
|
commit_author: "testuser",
|
|
576
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,
|
|
583
|
+
})
|
|
577
584
|
// Define the @tsci/seveibar.a555timer package
|
|
578
585
|
db.addSnippet({
|
|
579
586
|
name: "seveibar/a555timer",
|
|
@@ -1620,7 +1627,7 @@ export const SquareWaveModule = () => (
|
|
|
1620
1627
|
})
|
|
1621
1628
|
|
|
1622
1629
|
// Add failed build first
|
|
1623
|
-
db.addPackageBuild({
|
|
1630
|
+
const failedBuild = db.addPackageBuild({
|
|
1624
1631
|
package_release_id: packageReleaseId2,
|
|
1625
1632
|
created_at: new Date(Date.now() - 15000).toISOString(), // 15 seconds ago
|
|
1626
1633
|
transpilation_in_progress: false,
|
|
@@ -1658,7 +1665,7 @@ export const SquareWaveModule = () => (
|
|
|
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,
|
|
@@ -1702,6 +1709,13 @@ export const SquareWaveModule = () => (
|
|
|
1702
1709
|
commit_author: "testuser",
|
|
1703
1710
|
})
|
|
1704
1711
|
|
|
1712
|
+
// Update the package release with the latest (successful) build ID
|
|
1713
|
+
const release2 = db.getPackageReleaseById(packageReleaseId2)!
|
|
1714
|
+
db.updatePackageRelease({
|
|
1715
|
+
...release2,
|
|
1716
|
+
latest_package_build_id: successfulBuild.package_build_id,
|
|
1717
|
+
})
|
|
1718
|
+
|
|
1705
1719
|
db.addOrder({
|
|
1706
1720
|
account_id,
|
|
1707
1721
|
is_running: false,
|
|
@@ -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.
|
|
3
|
+
"version": "0.0.107",
|
|
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",
|
package/src/App.tsx
CHANGED
|
@@ -79,9 +79,9 @@ const PackageEditorPage = lazyImport(async () => {
|
|
|
79
79
|
])
|
|
80
80
|
return editorModule
|
|
81
81
|
})
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
)
|
|
82
|
+
const ReleasesPage = lazyImport(() => import("@/pages/releases"))
|
|
83
|
+
const ReleaseDetailPage = lazyImport(() => import("@/pages/release-detail"))
|
|
84
|
+
const ReleaseBuildsPage = lazyImport(() => import("@/pages/release-builds"))
|
|
85
85
|
const PreviewBuildPage = lazyImport(() => import("@/pages/preview-build"))
|
|
86
86
|
|
|
87
87
|
class ErrorBoundary extends React.Component<
|
|
@@ -258,7 +258,22 @@ function App() {
|
|
|
258
258
|
<Route path="/my-orders" component={MyOrdersPage} />
|
|
259
259
|
<Route path="/dev-login" component={DevLoginPage} />
|
|
260
260
|
<Route path="/:username" component={UserProfilePage} />
|
|
261
|
-
<Route
|
|
261
|
+
<Route
|
|
262
|
+
path="/:author/:packageName/release/:releaseId/builds"
|
|
263
|
+
component={ReleaseBuildsPage}
|
|
264
|
+
/>
|
|
265
|
+
<Route
|
|
266
|
+
path="/:author/:packageName/release/:releaseId"
|
|
267
|
+
component={ReleaseDetailPage}
|
|
268
|
+
/>
|
|
269
|
+
<Route
|
|
270
|
+
path="/:author/:packageName/releases/:packageReleaseId"
|
|
271
|
+
component={ReleaseDetailPage}
|
|
272
|
+
/>
|
|
273
|
+
<Route
|
|
274
|
+
path="/:author/:packageName/releases"
|
|
275
|
+
component={ReleasesPage}
|
|
276
|
+
/>
|
|
262
277
|
<Route
|
|
263
278
|
path="/build/:buildId/preview"
|
|
264
279
|
component={PreviewBuildPage}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { PrefetchPageLink } from "@/components/PrefetchPageLink"
|
|
2
|
+
import {
|
|
3
|
+
Breadcrumb,
|
|
4
|
+
BreadcrumbList,
|
|
5
|
+
BreadcrumbItem,
|
|
6
|
+
BreadcrumbLink,
|
|
7
|
+
BreadcrumbPage,
|
|
8
|
+
BreadcrumbSeparator,
|
|
9
|
+
} from "@/components/ui/breadcrumb"
|
|
10
|
+
|
|
11
|
+
interface PackageBreadcrumbProps {
|
|
12
|
+
author: string
|
|
13
|
+
packageName: string
|
|
14
|
+
unscopedName?: string
|
|
15
|
+
currentPage?: "releases" | "builds" | string
|
|
16
|
+
releaseVersion?: string
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function PackageBreadcrumb({
|
|
20
|
+
author,
|
|
21
|
+
packageName,
|
|
22
|
+
unscopedName,
|
|
23
|
+
currentPage,
|
|
24
|
+
releaseVersion,
|
|
25
|
+
}: PackageBreadcrumbProps) {
|
|
26
|
+
return (
|
|
27
|
+
<Breadcrumb className="mb-4">
|
|
28
|
+
<BreadcrumbList>
|
|
29
|
+
{/* Author */}
|
|
30
|
+
<BreadcrumbItem>
|
|
31
|
+
<BreadcrumbLink asChild>
|
|
32
|
+
<PrefetchPageLink href={`/${author}`}>{author}</PrefetchPageLink>
|
|
33
|
+
</BreadcrumbLink>
|
|
34
|
+
</BreadcrumbItem>
|
|
35
|
+
<BreadcrumbSeparator>
|
|
36
|
+
<span>/</span>
|
|
37
|
+
</BreadcrumbSeparator>
|
|
38
|
+
|
|
39
|
+
{/* Package */}
|
|
40
|
+
<BreadcrumbItem>
|
|
41
|
+
<BreadcrumbLink asChild>
|
|
42
|
+
<PrefetchPageLink href={`/${packageName}`}>
|
|
43
|
+
{unscopedName || packageName}
|
|
44
|
+
</PrefetchPageLink>
|
|
45
|
+
</BreadcrumbLink>
|
|
46
|
+
</BreadcrumbItem>
|
|
47
|
+
<BreadcrumbSeparator>
|
|
48
|
+
<span>/</span>
|
|
49
|
+
</BreadcrumbSeparator>
|
|
50
|
+
|
|
51
|
+
{/* Releases */}
|
|
52
|
+
{(currentPage === "releases" ||
|
|
53
|
+
releaseVersion ||
|
|
54
|
+
currentPage === "builds") && (
|
|
55
|
+
<>
|
|
56
|
+
<BreadcrumbItem>
|
|
57
|
+
{currentPage === "releases" ? (
|
|
58
|
+
<BreadcrumbPage>releases</BreadcrumbPage>
|
|
59
|
+
) : (
|
|
60
|
+
<BreadcrumbLink asChild>
|
|
61
|
+
<PrefetchPageLink href={`/${packageName}/releases`}>
|
|
62
|
+
releases
|
|
63
|
+
</PrefetchPageLink>
|
|
64
|
+
</BreadcrumbLink>
|
|
65
|
+
)}
|
|
66
|
+
</BreadcrumbItem>
|
|
67
|
+
<BreadcrumbSeparator>
|
|
68
|
+
<span>/</span>
|
|
69
|
+
</BreadcrumbSeparator>
|
|
70
|
+
</>
|
|
71
|
+
)}
|
|
72
|
+
|
|
73
|
+
{/* Release Version */}
|
|
74
|
+
{releaseVersion && (
|
|
75
|
+
<>
|
|
76
|
+
<BreadcrumbItem>
|
|
77
|
+
{currentPage === "builds" ? (
|
|
78
|
+
<BreadcrumbLink asChild>
|
|
79
|
+
<PrefetchPageLink
|
|
80
|
+
href={`/${packageName}/release/${releaseVersion}`}
|
|
81
|
+
>
|
|
82
|
+
{releaseVersion}
|
|
83
|
+
</PrefetchPageLink>
|
|
84
|
+
</BreadcrumbLink>
|
|
85
|
+
) : (
|
|
86
|
+
<BreadcrumbPage>{releaseVersion}</BreadcrumbPage>
|
|
87
|
+
)}
|
|
88
|
+
</BreadcrumbItem>
|
|
89
|
+
{currentPage === "builds" && (
|
|
90
|
+
<>
|
|
91
|
+
<BreadcrumbSeparator>
|
|
92
|
+
<span>/</span>
|
|
93
|
+
</BreadcrumbSeparator>
|
|
94
|
+
<BreadcrumbItem>
|
|
95
|
+
<BreadcrumbPage>builds</BreadcrumbPage>
|
|
96
|
+
</BreadcrumbItem>
|
|
97
|
+
</>
|
|
98
|
+
)}
|
|
99
|
+
</>
|
|
100
|
+
)}
|
|
101
|
+
|
|
102
|
+
{/* Other current pages */}
|
|
103
|
+
{currentPage && !["releases", "builds"].includes(currentPage) && (
|
|
104
|
+
<BreadcrumbItem>
|
|
105
|
+
<BreadcrumbPage>{currentPage}</BreadcrumbPage>
|
|
106
|
+
</BreadcrumbItem>
|
|
107
|
+
)}
|
|
108
|
+
</BreadcrumbList>
|
|
109
|
+
</Breadcrumb>
|
|
110
|
+
)
|
|
111
|
+
}
|
|
@@ -7,7 +7,7 @@ import { BuildStatus, BuildStep } from "./build-status"
|
|
|
7
7
|
import type { PackageRelease } from "fake-snippets-api/lib/db/schema"
|
|
8
8
|
import { getBuildStatus, StatusIcon } from "@/components/preview"
|
|
9
9
|
import { PrefetchPageLink } from "@/components/PrefetchPageLink"
|
|
10
|
-
import {
|
|
10
|
+
import { usePackageBuild } from "@/hooks/use-package-builds"
|
|
11
11
|
|
|
12
12
|
function getTranspilationStatus(
|
|
13
13
|
pr?: PackageRelease | null,
|
|
@@ -42,8 +42,8 @@ export default function SidebarReleasesSection() {
|
|
|
42
42
|
const { data: packageRelease } = usePackageReleaseById(
|
|
43
43
|
packageInfo?.latest_package_release_id,
|
|
44
44
|
)
|
|
45
|
-
const { data: latestBuild } =
|
|
46
|
-
packageRelease?.
|
|
45
|
+
const { data: latestBuild } = usePackageBuild(
|
|
46
|
+
packageRelease?.latest_package_build_id ?? null,
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
const buildSteps: BuildStep[] = [
|
|
@@ -79,12 +79,22 @@ export default function SidebarReleasesSection() {
|
|
|
79
79
|
: { status: "pending", label: "pending" }
|
|
80
80
|
return (
|
|
81
81
|
<div className="mb-6">
|
|
82
|
-
<h2 className="text-lg font-semibold mb-2">
|
|
82
|
+
<h2 className="text-lg font-semibold mb-2">
|
|
83
|
+
<PrefetchPageLink
|
|
84
|
+
href={`/${packageInfo?.owner_github_username}/${packageInfo?.unscoped_name}/releases`}
|
|
85
|
+
className="hover:underline"
|
|
86
|
+
>
|
|
87
|
+
Releases
|
|
88
|
+
</PrefetchPageLink>
|
|
89
|
+
</h2>
|
|
83
90
|
<div className="flex flex-col space-y-2">
|
|
84
|
-
<
|
|
91
|
+
<PrefetchPageLink
|
|
92
|
+
href={`/${packageInfo?.owner_github_username}/${packageInfo?.unscoped_name}/releases`}
|
|
93
|
+
className="flex items-center hover:underline"
|
|
94
|
+
>
|
|
85
95
|
<Tag className="h-4 w-4 mr-2 text-gray-500 dark:text-[#8b949e]" />
|
|
86
96
|
<span className="text-sm font-medium">v{packageRelease.version}</span>
|
|
87
|
-
</
|
|
97
|
+
</PrefetchPageLink>
|
|
88
98
|
<div className="flex items-center">
|
|
89
99
|
<Clock className="h-4 w-4 mr-2 text-gray-500 dark:text-[#8b949e]" />
|
|
90
100
|
<span className="text-sm text-gray-500 dark:text-[#8b949e]">
|
|
@@ -104,7 +114,7 @@ export default function SidebarReleasesSection() {
|
|
|
104
114
|
className="flex items-center gap-2 text-sm text-gray-500 dark:text-[#8b949e]"
|
|
105
115
|
>
|
|
106
116
|
<StatusIcon status={status} />
|
|
107
|
-
<span>Package
|
|
117
|
+
<span>Package Preview {label}</span>
|
|
108
118
|
</PrefetchPageLink>
|
|
109
119
|
)}
|
|
110
120
|
</div>
|