Skip to content

Commit 9a71d4c

Browse files
committed
[Docs Site] Add WARPReleases component and collection
1 parent d4ece39 commit 9a71d4c

File tree

10 files changed

+137
-1
lines changed

10 files changed

+137
-1
lines changed

package-lock.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"playwright": "^1.49.0",
7373
"prettier": "^3.4.2",
7474
"prettier-plugin-astro": "^0.14.1",
75+
"pretty-bytes": "6.1.1",
7576
"puppeteer": "^23.10.4",
7677
"react": "^18.3.1",
7778
"react-dom": "^18.3.1",

src/components/WARPRelease.astro

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
import Details from "./Details.astro";
3+
import { marked } from "marked";
4+
import { z } from "astro:schema";
5+
import { format } from "date-fns";
6+
import prettyBytes from "pretty-bytes";
7+
import { warpReleasesSchema } from "~/schemas";
8+
9+
type Props = z.infer<typeof props>;
10+
11+
const props = z.object({
12+
header: z.string(),
13+
open: z.boolean().default(false),
14+
platform: z.enum(["Windows", "Linux", "MacOS"]),
15+
release: warpReleasesSchema,
16+
});
17+
18+
const { header, open, platform, release } = props.parse(Astro.props);
19+
---
20+
21+
<Details header={header} open={open}>
22+
<p>
23+
<span>
24+
<h4>Download</h4>
25+
</span>
26+
<div class="flex gap-2">
27+
<span>
28+
<a href={release.packagePath}>{platform} {release.version}</a>
29+
</span>
30+
<span>
31+
<strong>Date: </strong>
32+
{format(release.date, "yyyy-MM-dd")}
33+
</span>
34+
<span>
35+
<strong>Size: </strong>
36+
{prettyBytes(release.packageSize)}
37+
</span>
38+
</div>
39+
</p>
40+
<p>
41+
<span>
42+
<h4>Release notes</h4>
43+
</span>
44+
<Fragment set:html={marked.parse(release.releaseNotes)} />
45+
</p>
46+
</Details>

src/components/WARPReleases.astro

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
import WARPRelease from "./WARPRelease.astro";
3+
import Details from "./Details.astro";
4+
import { getEntry } from "astro:content";
5+
6+
const sortByDate = (a: any, b: any) => b.date.getTime() - a.date.getTime();
7+
8+
const { data: windowsReleases } = await getEntry("warp-releases", "windows-ga");
9+
10+
windowsReleases.sort(sortByDate);
11+
12+
const latestWindowsRelease = windowsReleases.at(0);
13+
14+
if (!latestWindowsRelease) {
15+
throw new Error();
16+
}
17+
---
18+
19+
<WARPRelease
20+
header="Download latest release"
21+
open={true}
22+
platform="Windows"
23+
release={latestWindowsRelease}
24+
/>
25+
26+
<Details header=`Previous version history (${windowsReleases.length - 1})`>
27+
{
28+
windowsReleases
29+
.slice(1)
30+
.sort(sortByDate)
31+
.map((release) => (
32+
<WARPRelease
33+
header={`Windows ${release.version}`}
34+
platform="Windows"
35+
release={release}
36+
/>
37+
))
38+
}
39+
</Details>

src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export { default as TunnelCalculator } from "./TunnelCalculator.astro";
5454
export { default as Type } from "./Type.astro";
5555
export { default as TypeScriptExample } from "./TypeScriptExample.astro";
5656
export { default as WranglerConfig } from "./WranglerConfig.astro";
57+
export { default as WARPReleases } from "./WARPReleases.astro";
5758
export { default as WorkersArchitectureDiagram } from "./WorkersArchitectureDiagram.astro";
5859
export { default as WorkersIsolateDiagram } from "./WorkersIsolateDiagram.astro";
5960
export { default as WorkerStarter } from "./WorkerStarter.astro";

src/content/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
glossarySchema,
1212
learningPathsSchema,
1313
videosSchema,
14+
warpReleasesSchema,
1415
workersAiSchema,
1516
} from "~/schemas";
1617

@@ -74,4 +75,8 @@ export const collections = {
7475
schema: appsSchema,
7576
type: "data",
7677
}),
78+
"warp-releases": defineCollection({
79+
schema: warpReleasesSchema.array(),
80+
type: "data",
81+
}),
7782
};

src/content/docs/cloudflare-one/connections/connect-devices/warp/download-warp/index.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ sidebar:
55
order: 2
66
---
77

8-
import { Render } from "~/components";
8+
import { Render, WARPReleases } from "~/components";
99

1010
You can download the WARP client from Zero Trust. To do that, go to **Settings** > **Resources** and scroll down to **Download the WARP client**.
1111

1212
Alternatively, download the client from one of the following links after checking requirements:
1313

14+
<WARPReleases />
15+
1416
## Windows
1517

1618
<Render file="warp/system-requirements/windows" />
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
- version: 1.2.3
2+
packagePath: https://example.com/
3+
date: 2024-12-12
4+
packageSize: 123456789
5+
releaseNotes: |
6+
- Lorem Ipsum
7+
- version: 1.2.2
8+
packagePath: https://example.com/
9+
date: 2024-12-11
10+
packageSize: 123456789
11+
releaseNotes: |
12+
- Lorem Ipsum
13+
- version: 1.2.1
14+
packagePath: https://example.com/
15+
date: 2024-12-10
16+
packageSize: 123456789
17+
releaseNotes: |
18+
- Lorem Ipsum

src/schemas/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ export * from "./pages-build-environment";
99
export * from "./pages-framework-presets";
1010
export * from "./partials";
1111
export * from "./videos";
12+
export * from "./warp-releases";
1213
export * from "./workers-ai-models";

src/schemas/warp-releases.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { z } from "astro:schema";
2+
3+
export const warpReleasesSchema = z.object({
4+
version: z.string(),
5+
date: z.coerce.date(),
6+
releaseNotes: z.string(),
7+
packageSize: z.number(),
8+
packagePath: z.string(),
9+
});

0 commit comments

Comments
 (0)