diff --git a/src/internal/deobfuscateAppleGPU.ts b/src/internal/deobfuscateAppleGPU.ts index 9c06c3f1..36a4d1a2 100644 --- a/src/internal/deobfuscateAppleGPU.ts +++ b/src/internal/deobfuscateAppleGPU.ts @@ -56,6 +56,9 @@ export function deobfuscateAppleGPU( ['a15', codeA, 15], // ipad mini 6th gen / ipad 10th gen ['m1', codeA, 15], // ipad pro 11 5nd gen / ipad pro 12.9 5th gen / ipad air 5th gen ['m2', codeA, 15], // ipad pro 11 6nd gen / ipad pro 12.9 6th gen + ['m3', codeA, 15], // ipad air 11-inch (m3, 2025) / ipad air 13-inch (m3, 2025) + ['m4', codeA, 15], // ipad pro 11-inch (m4, 2024) / ipad pro 13-inch (m4, 2024) + ['m5', codeA, 15], // ipad pro 11-inch (m5, 2025) / ipad pro 13-inch (m5, 2025) ] : [ // ['a4', 7], // 4 / ipod touch 4th gen @@ -72,6 +75,10 @@ export function deobfuscateAppleGPU( ['a15', codeA, 15], // 13 / 13 mini / 13 pro / 13 pro max / se 3rd gen / 14 / 14 plus ['a16', codeA, 15], // 14 pro / 14 pro max / 15 / 15 plus ['a17', codeA, 15], // 15 pro / 15 pro max + ['a18', codeA, 15], // iphone 16 / iphone 16 plus / iphone 16e + ['a18 pro', codeA, 15], // iphone 16 pro / iphone 16 pro max + ['a19', codeA, 15], // iphone 17 + ['a19 pro', codeA, 15], // iphone 17 air / iphone 17 pro / iphone 17 pro max ]; let chipsets: typeof possibleChipsets; diff --git a/test/index.test.ts b/test/index.test.ts index 758a67a1..21a903f2 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -157,6 +157,42 @@ for (const { input, expected } of [ renderer: 'Apple a10 GPU', }, }, + { + expected: { + gpu: 'apple a18 gpu', + }, + input: { + isMobile: true, + renderer: 'Apple a18 GPU', + }, + }, + { + expected: { + gpu: 'apple a18 pro gpu', + }, + input: { + isMobile: true, + renderer: 'Apple a18 pro GPU', + }, + }, + { + expected: { + gpu: 'apple m3', + }, + input: { + isMobile: false, + renderer: 'Apple M3', + }, + }, + { + expected: { + gpu: 'apple m4', + }, + input: { + isMobile: false, + renderer: 'Apple M4', + }, + }, { expected: { gpu: 'intel mesa dri intel uhd graphics 630', @@ -278,6 +314,22 @@ for (const { input, expected } of [ isMobile: false, renderer: 'this renderer does not exist', }, + { + isMobile: true, + renderer: 'Apple a19 GPU', + }, + { + isMobile: true, + renderer: 'Apple a19 pro GPU', + }, + { + isMobile: true, + renderer: 'Apple a19pro GPU', + }, + { + isMobile: false, + renderer: 'Apple M5', + }, ].map((settings) => { test(`${settings.renderer} should return FALLBACK`, async () => { expectGPUResults(