Skip to content

Commit e46993c

Browse files
authored
Merge branch 'production' into kian/PCX-15396
2 parents 9cfaa1c + 3b903fe commit e46993c

File tree

224 files changed

+109577
-103177
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

224 files changed

+109577
-103177
lines changed

.github/CODEOWNERS

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
/src/content/docs/china-network/ @pedrosousa @cloudflare/pcx-technical-writing
7878
/src/content/docs/cloudflare-for-platforms/cloudflare-for-saas/ @RebeccaTamachiro @cloudflare/pcx-technical-writing
7979
/src/content/docs/dns/ @RebeccaTamachiro @cloudflare/pcx-technical-writing
80-
/src/content/docs/fundamentals/ @cloudflare/pcx-technical-writing
80+
/src/content/docs/fundamentals/ @dcpena @cloudflare/pcx-technical-writing
8181
/src/content/docs/fundamentals/account-and-billing/ @dcpena @cloudflare/pcx-technical-writing
8282
/src/content/docs/learning-paths/ @cloudflare/pcx-technical-writing
8383
/src/content/docs/network-error-logging/ @dcpena @cloudflare/pcx-technical-writing
@@ -150,8 +150,8 @@
150150

151151
# Docs team areas
152152

153-
/src/content/docs/docs-guide/ @crwaters16 @cloudflare/pcx-technical-writing
154-
/src/content/docs/style-guide/ @crwaters16 @cloudflare/pcx-technical-writing
153+
/src/content/docs/docs-guide/ @dcpena @cloudflare/pcx-technical-writing
154+
/src/content/docs/style-guide/ @dcpena @cloudflare/pcx-technical-writing
155155

156156
# Magic products
157157

@@ -163,8 +163,8 @@
163163

164164
# Migration guides
165165

166-
/src/content/docs/migration-guides/ @kimj15 @crwaters16 @cloudflare/pcx-technical-writing
167-
/src/assets/images/migration-guides/ @kimj15 @crwaters16 @cloudflare/pcx-technical-writing
166+
/src/content/docs/migration-guides/ @kimj15 @cloudflare/pcx-technical-writing
167+
/src/assets/images/migration-guides/ @kimj15 @cloudflare/pcx-technical-writing
168168

169169
# Performance products
170170

@@ -189,8 +189,8 @@
189189

190190
# Reference architecture
191191

192-
/src/content/docs/reference-architecture/ @securitypedant @crwaters16 @cloudflare/pcx-technical-writing
193-
/src/assets/images/reference-architecture/ @securitypedant @crwaters16 @cloudflare/pcx-technical-writing
192+
/src/content/docs/reference-architecture/ @securitypedant @haleycode @cloudflare/pcx-technical-writing
193+
/src/assets/images/reference-architecture/ @securitypedant @haleycode @cloudflare/pcx-technical-writing
194194

195195
# Security products
196196

.hyperlint/config.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
content_dir: /src/content
22
authorized_users:
3-
- crwaters16
43
- dcpena
54
- kodster28
65
- KianNH

bin/crawl-api-links.js

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,17 @@ async function checkLinks() {
4343
continue; // Skip if the link is empty
4444
}
4545

46-
await page.goto(link, {
47-
waitUntil: "networkidle0",
48-
timeout: navigationTimeout,
49-
});
46+
try {
47+
await page.goto(link, {
48+
waitUntil: "networkidle0",
49+
timeout: navigationTimeout,
50+
});
51+
} catch (e) {
52+
console.log(
53+
` WARNING: Error loading Dev Docs page: ${e.message}... Skipping.`,
54+
);
55+
continue;
56+
}
5057

5158
const pageLinks = await page.$$eval("a", (elements) =>
5259
elements.map((el) => el.href),
@@ -62,18 +69,28 @@ async function checkLinks() {
6269
pageLink.startsWith("/api/resources/")
6370
) {
6471
console.log(`Evaluating link: ${pageLink}`);
65-
const response = await page.goto(pageLink, {
66-
waitUntil: "networkidle0",
67-
timeout: navigationTimeout,
68-
});
69-
visitedLinks.push(pageLink);
72+
73+
let response = null;
74+
75+
try {
76+
response = await page.goto(pageLink, {
77+
waitUntil: "networkidle0",
78+
timeout: navigationTimeout,
79+
});
80+
visitedLinks.push(pageLink);
81+
} catch (e) {
82+
console.log(
83+
` WARNING: Error loading API page: ${e.message}... Skipping.`,
84+
);
85+
continue;
86+
}
7087

7188
if (response) {
7289
if (response.status() === 404) {
7390
brokenLinks.push(pageLink);
7491
}
7592
} else {
76-
console.log("WARNING: Didn't receive a response... skipping.");
93+
console.log(" WARNING: Didn't receive a response... skipping.");
7794
}
7895
}
7996
}

bin/fetch-warp-releases.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import fs from "fs";
2+
import YAML from "yaml";
3+
import { marked } from "marked";
4+
5+
const tracks = ["windows/ga", "windows/beta", "macos/ga", "macos/beta"];
6+
7+
const linesToRemove = [
8+
"For related Cloudflare for Teams documentation please see: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp",
9+
"For Zero Trust documentation please see: https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp",
10+
"For related Consumer documentation please see: https://developers.cloudflare.com/warp-client/",
11+
"For Consumer documentation please see: https://developers.cloudflare.com/warp-client/",
12+
];
13+
14+
for (const track of tracks) {
15+
fetch(`https://downloads.cloudflareclient.com/v1/update/json/${track}`)
16+
.then((res) => res.json())
17+
.then((data) => {
18+
data.items.forEach((item) => {
19+
const path = `./src/content/warp-releases/${track}/${item.version}.yaml`;
20+
21+
if (fs.existsSync(path)) {
22+
console.log(`${track} ${item.version} already exists.`);
23+
return;
24+
}
25+
26+
console.log(`Saving ${track} ${item.version}.`);
27+
28+
let markdown = item.releaseNotes;
29+
30+
markdown.replace(/\r\n/g, "\n");
31+
32+
for (const line of linesToRemove) {
33+
markdown = markdown.replace(line, "");
34+
}
35+
36+
markdown = markdown.trim();
37+
38+
const tokens = marked.lexer(markdown);
39+
40+
marked.walkTokens(tokens, (token) => {
41+
if (token.type === "heading") {
42+
token.type = "strong";
43+
token.raw = `**${token.text}**\n`;
44+
45+
delete token.depth;
46+
}
47+
});
48+
49+
const releaseNotes = tokens.reduce((s, t) => s + t.raw, "");
50+
51+
fs.writeFileSync(
52+
`./src/content/warp-releases/${track}/${item.version}.yaml`,
53+
YAML.stringify({
54+
...item,
55+
releaseNotes,
56+
platformName: data.platformName,
57+
}),
58+
"utf-8",
59+
);
60+
});
61+
});
62+
}

package-lock.json

Lines changed: 19 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
@@ -77,6 +77,7 @@
7777
"playwright": "1.49.1",
7878
"prettier": "3.4.2",
7979
"prettier-plugin-astro": "0.14.1",
80+
"pretty-bytes": "6.1.1",
8081
"prettier-plugin-tailwindcss": "0.6.9",
8182
"puppeteer": "24.1.0",
8283
"react": "19.0.0",

src/components/Markdown.astro

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ type Props = z.infer<typeof props>;
66
77
const props = z.object({
88
text: z.string(),
9+
inline: z.boolean().default(true),
910
});
1011
11-
const { text } = props.parse(Astro.props);
12+
const { text, inline } = props.parse(Astro.props);
1213
---
1314

14-
<Fragment set:html={marked.parseInline(text)} />
15+
<Fragment set:html={inline ? marked.parseInline(text) : marked.parse(text)} />

src/components/WARPRelease.astro

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

src/components/WARPReleases.astro

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
import WARPRelease from "./WARPRelease.astro";
3+
import Details from "./Details.astro";
4+
import { getCollection } from "astro:content";
5+
import { z } from "astro:schema";
6+
import { sub } from "date-fns";
7+
8+
type Props = z.infer<typeof props>;
9+
10+
const props = z.object({
11+
track: z.enum([
12+
"windows/ga",
13+
"windows/beta",
14+
"macos/ga",
15+
"macos/beta",
16+
"linux/ga",
17+
]),
18+
});
19+
20+
const { track } = props.parse(Astro.props);
21+
22+
const sortByDate = (a: any, b: any) =>
23+
b.releaseDate.getTime() - a.releaseDate.getTime();
24+
25+
const entries = await getCollection("warp-releases", (release) => {
26+
if (!release.id.startsWith(track)) return false;
27+
28+
const oneYearAgo = sub(new Date(), {
29+
years: 1,
30+
});
31+
32+
if (release.data.releaseDate.getTime() < oneYearAgo.getTime()) return false;
33+
34+
return true;
35+
});
36+
37+
const releases = entries.map((x) => x.data);
38+
39+
releases.sort(sortByDate);
40+
41+
const latestRelease = releases.at(0);
42+
43+
if (!latestRelease) {
44+
throw new Error();
45+
}
46+
47+
const platform = latestRelease.platformName;
48+
---
49+
50+
<WARPRelease header="Latest release" open={true} release={latestRelease} />
51+
52+
<Details header=`Previous version history (${releases.length - 1})`>
53+
{
54+
releases
55+
.slice(1)
56+
.sort(sortByDate)
57+
.map((release) => (
58+
<WARPRelease
59+
header={`${platform} ${release.version}`}
60+
release={release}
61+
/>
62+
))
63+
}
64+
</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";

0 commit comments

Comments
 (0)