feat(platforms): dual Mac arch downloads with better detection (v1.0.7)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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)",
|
||||
|
||||
Reference in New Issue
Block a user