feat(platforms): dual Mac arch downloads with better detection (v1.0.7)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-09-16 12:33:59 +08:00
parent 96344a8d5e
commit 32bd7281df
6 changed files with 264 additions and 37 deletions
+37
View File
@@ -25,6 +25,7 @@ import { MESSAGES, inferLocaleFromLanguages } from "./i18n/messages";
import {
detectCpuArch,
detectOs,
parseUaDataArchitecture,
resolveDownloadHref,
resolvePlatformDownloadHref,
} from "./lib/detectOs";
@@ -121,6 +122,8 @@ describe("i18n messages", () => {
assert.equal(MESSAGES.en.cta.download, "Download");
assert.equal(MESSAGES.ru.cta.buy, "Купить");
assert.equal(MESSAGES.en.cta.buy, "Buy");
assert.equal(MESSAGES.ru.platforms.macosArch.arm64, "Apple Silicon");
assert.equal(MESSAGES.en.platforms.macosArch.x64, "Intel");
});
});
@@ -156,6 +159,32 @@ describe("detectOs", () => {
assert.equal(detectCpuArch("Mozilla/5.0 (X11; Linux aarch64)"), "arm64");
});
it("parses Client Hints architecture tokens", () => {
assert.equal(parseUaDataArchitecture("arm"), "arm64");
assert.equal(parseUaDataArchitecture("x86"), "x64");
assert.equal(parseUaDataArchitecture("arm64"), "arm64");
assert.equal(parseUaDataArchitecture(undefined), "unknown");
});
it("does not guess Intel on opaque Mac user agents", () => {
assert.equal(
detectCpuArch("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)", 0),
"unknown",
);
assert.equal(
detectCpuArch("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)", 5),
"arm64",
);
assert.equal(
detectCpuArch(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
0,
"arm",
),
"arm64",
);
});
it("resolves download href by OS", () => {
const hints = { userAgent: "Mozilla/5.0 (Windows NT 10.0)" };
assert.equal(
@@ -166,9 +195,17 @@ describe("detectOs", () => {
resolveDownloadHref("macos", DOWNLOAD_LINKS, {
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X)",
maxTouchPoints: 0,
uaArchitecture: "x86",
}),
DOWNLOAD_LINKS.macos.x64,
);
assert.equal(
resolveDownloadHref("macos", DOWNLOAD_LINKS, {
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X)",
maxTouchPoints: 0,
}),
DOWNLOAD_LINKS.macos.arm64,
);
assert.equal(
resolveDownloadHref("linux", DOWNLOAD_LINKS, {
userAgent: "Mozilla/5.0 (X11; Linux aarch64)",