native-fn 1.0.74 → 1.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/index.d.ts +5 -5
  2. package/dist/native.cjs +1 -1
  3. package/dist/native.min.cjs +1 -1
  4. package/dist/native.min.mjs +1 -1
  5. package/dist/native.mjs +1 -1
  6. package/dist/native.umd.js +1 -1
  7. package/dist/native.umd.min.js +1 -1
  8. package/dist/plugin/app/index.cjs +355 -176
  9. package/dist/plugin/app/index.min.cjs +1 -1
  10. package/dist/plugin/app/index.min.mjs +1 -1
  11. package/dist/plugin/app/index.mjs +355 -176
  12. package/dist/plugin/app/index.umd.js +355 -176
  13. package/dist/plugin/app/index.umd.min.js +1 -1
  14. package/dist/plugin/app/src/plugin/platform/cores/index.d.ts +12 -0
  15. package/dist/plugin/app/src/plugin/platform/types/platform.d.ts +16 -6
  16. package/dist/plugin/app/src/types/native.d.ts +5 -5
  17. package/dist/plugin/appearance/index.cjs +344 -165
  18. package/dist/plugin/appearance/index.min.cjs +1 -1
  19. package/dist/plugin/appearance/index.min.mjs +1 -1
  20. package/dist/plugin/appearance/index.mjs +344 -165
  21. package/dist/plugin/appearance/index.umd.js +344 -165
  22. package/dist/plugin/appearance/index.umd.min.js +1 -1
  23. package/dist/plugin/appearance/src/plugin/platform/cores/index.d.ts +12 -0
  24. package/dist/plugin/appearance/src/plugin/platform/types/platform.d.ts +16 -6
  25. package/dist/plugin/appearance/src/types/native.d.ts +5 -5
  26. package/dist/plugin/clipboard/index.cjs +339 -160
  27. package/dist/plugin/clipboard/index.min.cjs +1 -1
  28. package/dist/plugin/clipboard/index.min.mjs +1 -1
  29. package/dist/plugin/clipboard/index.mjs +339 -160
  30. package/dist/plugin/clipboard/index.umd.js +339 -160
  31. package/dist/plugin/clipboard/index.umd.min.js +1 -1
  32. package/dist/plugin/clipboard/src/plugin/platform/cores/index.d.ts +12 -0
  33. package/dist/plugin/clipboard/src/plugin/platform/types/platform.d.ts +16 -6
  34. package/dist/plugin/clipboard/src/types/native.d.ts +5 -5
  35. package/dist/plugin/fullscreen/index.cjs +348 -169
  36. package/dist/plugin/fullscreen/index.min.cjs +1 -1
  37. package/dist/plugin/fullscreen/index.min.mjs +1 -1
  38. package/dist/plugin/fullscreen/index.mjs +348 -169
  39. package/dist/plugin/fullscreen/index.umd.js +348 -169
  40. package/dist/plugin/fullscreen/index.umd.min.js +1 -1
  41. package/dist/plugin/fullscreen/src/plugin/platform/cores/index.d.ts +12 -0
  42. package/dist/plugin/fullscreen/src/plugin/platform/types/platform.d.ts +16 -6
  43. package/dist/plugin/fullscreen/src/types/native.d.ts +5 -5
  44. package/dist/plugin/platform/index.cjs +339 -160
  45. package/dist/plugin/platform/index.d.ts +17 -7
  46. package/dist/plugin/platform/index.min.cjs +1 -1
  47. package/dist/plugin/platform/index.min.mjs +1 -1
  48. package/dist/plugin/platform/index.mjs +339 -160
  49. package/dist/plugin/platform/index.umd.js +339 -160
  50. package/dist/plugin/platform/index.umd.min.js +1 -1
  51. package/dist/plugin/platform/src/plugin/platform/cores/index.d.ts +12 -0
  52. package/dist/plugin/platform/src/plugin/platform/types/platform.d.ts +16 -6
  53. package/dist/plugin/platform/src/types/native.d.ts +5 -5
  54. package/dist/plugin/theme/index.cjs +339 -160
  55. package/dist/plugin/theme/index.min.cjs +1 -1
  56. package/dist/plugin/theme/index.min.mjs +1 -1
  57. package/dist/plugin/theme/index.mjs +339 -160
  58. package/dist/plugin/theme/index.umd.js +339 -160
  59. package/dist/plugin/theme/index.umd.min.js +1 -1
  60. package/dist/plugin/theme/src/plugin/platform/cores/index.d.ts +12 -0
  61. package/dist/plugin/theme/src/plugin/platform/types/platform.d.ts +16 -6
  62. package/dist/plugin/theme/src/types/native.d.ts +5 -5
  63. package/dist/src/plugin/platform/cores/index.d.ts +12 -0
  64. package/dist/src/plugin/platform/types/platform.d.ts +16 -6
  65. package/dist/src/types/native.d.ts +5 -5
  66. package/package.json +1 -1
@@ -70,21 +70,43 @@ var CrossPlatformFramework;
70
70
  var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
71
71
 
72
72
  var Platform = {
73
- device: Devices.Unknown,
74
- os: OS.Unknown,
75
- engine: Engines.Unknown,
76
- browser: Browsers.Unknown,
73
+ os: { name: OS.Unknown, version: '' },
74
+ engine: { name: Engines.Unknown, version: '' },
75
+ browser: { name: Browsers.Unknown, version: '' },
77
76
  crossPlatformFramework: CrossPlatformFramework.Unknown,
78
- osVersion: '',
79
- engineVersion: '',
80
- browserVersion: '',
81
- renderer: getRenderer(),
82
77
  userAgent: USER_AGENT,
83
- isNode: typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined,
84
- isMobile: false,
85
- isDesktop: false,
86
- isStandalone: false,
87
- isWebview: /; ?wv|applewebkit(?!.*safari)/i.test(USER_AGENT),
78
+ get network() {
79
+ return getNetwork();
80
+ },
81
+ get device() {
82
+ if (this.os.name === OS.iOS || this.os.name === OS.Android)
83
+ return Devices.Mobile;
84
+ if (this.os.name === OS.Windows || this.os.name === OS.MacOS)
85
+ return Devices.Desktop;
86
+ return Devices.Unknown;
87
+ },
88
+ get renderer() {
89
+ return getRenderer();
90
+ },
91
+ get isMobile() {
92
+ return this.device === Devices.Mobile;
93
+ },
94
+ get isDesktop() {
95
+ return this.device === Devices.Desktop;
96
+ },
97
+ get isWebview() {
98
+ return /; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent);
99
+ },
100
+ get isNode() {
101
+ return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
102
+ },
103
+ get isStandalone() {
104
+ if (this.os.name === OS.iOS)
105
+ return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
106
+ if (!('matchMedia' in globalThis))
107
+ return false;
108
+ return globalThis.matchMedia('(display-mode: standalone)').matches;
109
+ },
88
110
  };
89
111
  var OS_RESOLVER_MAP = [
90
112
  [/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
@@ -144,6 +166,14 @@ var BROWSER_RESOLVER_MAP = [
144
166
  [/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
145
167
  [/firefox\/([\w.]+)/i, Browsers.Firefox],
146
168
  ];
169
+ var HIGH_ENTROPY_BRAND_NAME_MAP = {
170
+ 'Google Chrome': 'Chrome',
171
+ 'Microsoft Edge': 'Edge',
172
+ 'Microsoft Edge WebView2': 'Edge WebView2',
173
+ 'Android WebView': 'Chrome WebView',
174
+ 'HeadlessChrome': 'Chrome Headless',
175
+ 'OperaMobile': 'Opera Mobi',
176
+ };
147
177
  function resolveWindowsVersion(string) {
148
178
  if (string === undefined)
149
179
  return '';
@@ -318,6 +348,33 @@ function normalizeBrand(entry) {
318
348
  return { brand: entry, version: '' };
319
349
  return { brand: entry.brand, version: entry.version };
320
350
  }
351
+ function getSemanticVersion(string) {
352
+ var parts = string.split('.');
353
+ return {
354
+ major: parseInt(parts[0] || '0'),
355
+ minor: parseInt(parts[1] || '0'),
356
+ build: parseInt(parts[2] || '0')
357
+ };
358
+ }
359
+ function parseOSFromCordova() {
360
+ Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
361
+ if (typeof globalThis.device !== 'undefined') {
362
+ switch (globalThis.device.platform) {
363
+ case 'Android':
364
+ Platform.os = {
365
+ name: OS.Android,
366
+ version: globalThis.device.version,
367
+ };
368
+ break;
369
+ case 'iOS':
370
+ Platform.os = {
371
+ name: OS.iOS,
372
+ version: globalThis.device.version,
373
+ };
374
+ break;
375
+ }
376
+ }
377
+ }
321
378
  function getRenderer() {
322
379
  if (typeof globalThis.document === 'undefined')
323
380
  return '';
@@ -338,171 +395,293 @@ function getRenderer() {
338
395
  return '';
339
396
  }
340
397
  }
341
- function getIsStandalone(os) {
342
- if (!('matchMedia' in globalThis))
343
- return false;
344
- if (os === OS.iOS)
345
- return 'standalone' in navigator && !!navigator.standalone;
346
- return globalThis.matchMedia('(display-mode: standalone)').matches;
347
- }
348
- function getSemanticVersion(string) {
349
- var parts = string.split('.');
350
- return {
351
- major: parseInt(parts[0] || '0'),
352
- minor: parseInt(parts[1] || '0'),
353
- build: parseInt(parts[2] || '0')
398
+ function getNetwork() {
399
+ var network = {
400
+ isOnline: null,
401
+ effectiveType: null,
402
+ type: null,
403
+ downlink: null,
404
+ rtt: null,
405
+ saveData: null,
354
406
  };
355
- }
356
- if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT))) {
357
- Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
358
- }
359
- if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative') {
360
- Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
361
- }
362
- for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
363
- var map = OS_RESOLVER_MAP[i];
364
- var regexp = map[0];
365
- var os = map[1];
366
- var resolver = map[2];
367
- var matched = Platform.userAgent.match(regexp);
368
- if (matched !== null) {
369
- Platform.os = os;
370
- Platform.osVersion = resolveVersion(matched[1], resolver);
371
- break;
407
+ if (typeof globalThis.navigator !== 'undefined') {
408
+ if (typeof globalThis.navigator.onLine !== 'undefined')
409
+ network.isOnline = globalThis.navigator.onLine;
410
+ var connection = globalThis.navigator.connection || globalThis.navigator.mozConnection || globalThis.navigator.webkitConnection;
411
+ if (typeof connection !== 'undefined') {
412
+ if (typeof connection.effectiveType !== 'undefined')
413
+ network.effectiveType = connection.effectiveType;
414
+ if (typeof connection.type !== 'undefined')
415
+ network.type = connection.type;
416
+ if (typeof connection.downlink !== 'undefined')
417
+ network.downlink = connection.downlink;
418
+ if (typeof connection.rtt !== 'undefined')
419
+ network.rtt = connection.rtt;
420
+ if (typeof connection.saveData !== 'undefined')
421
+ network.saveData = connection.saveData;
422
+ }
372
423
  }
373
- }
374
- if (Platform.os === OS.iOS && compareVersion(Platform.osVersion, '18.6') === 0) {
375
- var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
376
- if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
377
- Platform.osVersion = version[1];
378
- }
379
- for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
380
- var map = ENGINE_RESOLVER_MAP[i];
381
- var regexp = map[0];
382
- var engine = map[1];
383
- var resolver = map[2];
384
- var matched = Platform.userAgent.match(regexp);
385
- if (matched !== null) {
386
- Platform.engine = engine;
387
- Platform.engineVersion = resolveVersion(matched[1], resolver);
388
- break;
424
+ if (Platform.isNode) {
425
+ try {
426
+ var os = require('os');
427
+ var networkInterfaces = os.networkInterfaces();
428
+ var networkInterfaceNames = Object.keys(networkInterfaces);
429
+ for (var i = 0; i < networkInterfaceNames.length; i++) {
430
+ var name_1 = networkInterfaceNames[i];
431
+ var networkInterface = networkInterfaces[name_1];
432
+ for (var j = 0; j < networkInterface.length; j++) {
433
+ var address = networkInterface[j];
434
+ if (!address.internal && address.family === 'IPv4')
435
+ network.isOnline = true;
436
+ }
437
+ if (network.isOnline)
438
+ break;
439
+ }
440
+ }
441
+ catch (_) {
442
+ }
443
+ try {
444
+ var childProcess = require('child_process');
445
+ if (Platform.os.name === OS.Windows) {
446
+ try {
447
+ var output = childProcess.execSync('netsh wlan show interfaces', { encoding: 'utf8', timeout: 5000 });
448
+ if (output.includes('State') && output.includes('connected'))
449
+ network.type = 'wifi';
450
+ }
451
+ catch (_) {
452
+ }
453
+ if (network.type === null) {
454
+ try {
455
+ var output = childProcess.execSync('ipconfig', { encoding: 'utf8', timeout: 5000 });
456
+ if (output.includes('Ethernet adapter'))
457
+ network.type = 'ethernet';
458
+ }
459
+ catch (_) {
460
+ }
461
+ }
462
+ if (network.type === null)
463
+ network.type = 'other';
464
+ }
465
+ else if (Platform.os.name === OS.MacOS) {
466
+ try {
467
+ var output = childProcess.execSync('networksetup -listallhardwareports', { encoding: 'utf8', timeout: 5000 });
468
+ var activeInterface = childProcess.execSync('route -n get default | grep interface', { encoding: 'utf8', timeout: 5000 });
469
+ if (activeInterface.includes('en0') && output.includes('Wi-Fi'))
470
+ network.type = 'wifi';
471
+ else if (activeInterface.includes('en') || output.includes('Ethernet'))
472
+ network.type = 'ethernet';
473
+ else
474
+ network.type = 'other';
475
+ }
476
+ catch (_) {
477
+ network.type = 'other';
478
+ }
479
+ }
480
+ }
481
+ catch (_) {
482
+ }
389
483
  }
484
+ return network;
390
485
  }
391
- for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
392
- var map = BROWSER_RESOLVER_MAP[i];
393
- var regexp = map[0];
394
- var browser = map[1];
395
- var resolver = map[2];
396
- var matched = Platform.userAgent.match(regexp);
397
- if (matched !== null) {
398
- Platform.browser = browser;
399
- Platform.browserVersion = resolveVersion(matched[1], resolver);
400
- break;
401
- }
486
+ function canUseHighEntropyValues(navigator) {
487
+ return typeof globalThis.navigator !== 'undefined' && typeof navigator.userAgentData !== 'undefined' && typeof navigator.userAgentData.getHighEntropyValues !== 'undefined';
402
488
  }
403
- if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
404
- try {
405
- var reactNative = require('react-native');
406
- var platform = reactNative.Platform;
407
- var os = platform.OS;
408
- var release = '' + platform.Version;
409
- var version = getSemanticVersion(release);
410
- switch (os) {
411
- case 'android':
412
- Platform.os = OS.Android;
413
- Platform.osVersion = resolveSemanticAndroidVersion(version, release);
414
- break;
415
- case 'ios':
416
- Platform.os = OS.iOS;
417
- Platform.osVersion = release;
418
- break;
419
- case 'windows':
420
- Platform.os = OS.Windows;
421
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
422
- break;
423
- case 'macos':
424
- Platform.os = OS.MacOS;
425
- Platform.osVersion = release;
426
- break;
489
+ function init() {
490
+ if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT)))
491
+ Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
492
+ if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative')
493
+ Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
494
+ for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
495
+ var map = OS_RESOLVER_MAP[i];
496
+ var regexp = map[0];
497
+ var os = map[1];
498
+ var resolver = map[2];
499
+ var matched = Platform.userAgent.match(regexp);
500
+ if (matched !== null) {
501
+ Platform.os = {
502
+ name: os,
503
+ version: resolveVersion(matched[1], resolver),
504
+ };
505
+ break;
427
506
  }
428
507
  }
429
- catch (_) {
508
+ if (Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '18.6') === 0) {
509
+ var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
510
+ if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
511
+ Platform.os.version = version[1];
430
512
  }
431
- }
432
- if (Platform.isNode) {
433
- try {
434
- var os = require('os');
435
- var platform = os.platform();
436
- var release = os.release();
437
- var version = getSemanticVersion(release);
438
- switch (platform) {
439
- case 'win32':
440
- Platform.os = OS.Windows;
441
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
442
- break;
443
- case 'darwin':
444
- Platform.os = OS.MacOS;
445
- Platform.osVersion = resolveSemanticDarwinVersion(version, release);
446
- break;
447
- case 'android':
448
- Platform.os = OS.Android;
449
- Platform.osVersion = release;
450
- break;
451
- case 'linux':
452
- if (/android/i.test(release)) {
453
- Platform.os = OS.Android;
454
- Platform.osVersion = release;
455
- }
456
- break;
513
+ for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
514
+ var map = ENGINE_RESOLVER_MAP[i];
515
+ var regexp = map[0];
516
+ var engine = map[1];
517
+ var resolver = map[2];
518
+ var matched = Platform.userAgent.match(regexp);
519
+ if (matched !== null) {
520
+ Platform.engine = {
521
+ name: engine,
522
+ version: resolveVersion(matched[1], resolver),
523
+ };
524
+ break;
457
525
  }
458
526
  }
459
- catch (_) {
527
+ for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
528
+ var map = BROWSER_RESOLVER_MAP[i];
529
+ var regexp = map[0];
530
+ var browser = map[1];
531
+ var resolver = map[2];
532
+ var matched = Platform.userAgent.match(regexp);
533
+ if (matched !== null) {
534
+ Platform.browser = {
535
+ name: browser,
536
+ version: resolveVersion(matched[1], resolver),
537
+ };
538
+ break;
539
+ }
460
540
  }
461
- }
462
- if (typeof globalThis.document !== 'undefined') {
463
- globalThis.document.addEventListener("deviceready", function () {
464
- Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
465
- if (Platform.os === OS.Unknown && typeof globalThis.device !== 'undefined') {
466
- switch (globalThis.device.platform) {
467
- case 'Android':
468
- Platform.os = OS.Android;
541
+ if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
542
+ try {
543
+ var reactNative = require('react-native');
544
+ var platform = reactNative.Platform;
545
+ var os = platform.OS;
546
+ var release = '' + platform.Version;
547
+ var version = getSemanticVersion(release);
548
+ switch (os) {
549
+ case 'android':
550
+ Platform.os = {
551
+ name: OS.Android,
552
+ version: resolveSemanticAndroidVersion(version, release),
553
+ };
554
+ break;
555
+ case 'ios':
556
+ Platform.os = {
557
+ name: OS.iOS,
558
+ version: release,
559
+ };
469
560
  break;
470
- case 'iOS':
471
- Platform.os = OS.iOS;
561
+ case 'windows':
562
+ Platform.os = {
563
+ name: OS.Windows,
564
+ version: resolveSemanticWindowsVersion(version, release),
565
+ };
566
+ break;
567
+ case 'macos':
568
+ Platform.os = {
569
+ name: OS.MacOS,
570
+ version: release,
571
+ };
472
572
  break;
473
573
  }
474
- Platform.osVersion = globalThis.device.version;
475
574
  }
476
- }, false);
477
- }
478
- if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
479
- navigator
480
- .userAgentData
481
- .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
482
- .then(function (result) {
483
- var brands = result.fullVersionList || result.brands || [];
484
- var platformVersion = result.platformVersion;
485
- for (var i = 0; i < brands.length; i++) {
486
- var brand = normalizeBrand(brands[i]);
487
- var brandName = brand.brand;
488
- var brandVersion = brand.version;
489
- if (/not.a.brand/i.test(brandName))
490
- continue;
491
- if (brandName === "Chromium")
492
- Platform.engineVersion = brandVersion;
575
+ catch (_) {
576
+ }
577
+ finally {
578
+ }
579
+ }
580
+ if (Platform.isNode) {
581
+ try {
582
+ var os = require('os');
583
+ var platform = os.platform();
584
+ var release = os.release();
585
+ var version = getSemanticVersion(release);
586
+ switch (platform) {
587
+ case 'win32':
588
+ Platform.os = {
589
+ name: OS.Windows,
590
+ version: resolveSemanticWindowsVersion(version, release),
591
+ };
592
+ break;
593
+ case 'darwin':
594
+ Platform.os = {
595
+ name: OS.MacOS,
596
+ version: resolveSemanticDarwinVersion(version, release),
597
+ };
598
+ break;
599
+ case 'android':
600
+ Platform.os = {
601
+ name: OS.Android,
602
+ version: release,
603
+ };
604
+ break;
605
+ case 'linux':
606
+ if (/android/i.test(release)) {
607
+ Platform.os = {
608
+ name: OS.Android,
609
+ version: release,
610
+ };
611
+ }
612
+ break;
613
+ }
493
614
  }
494
- if (typeof platformVersion === 'string') {
495
- if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
496
- Platform.osVersion = '11';
497
- else
498
- Platform.osVersion = platformVersion;
615
+ catch (_) {
499
616
  }
500
- });
617
+ finally {
618
+ }
619
+ }
620
+ if (typeof globalThis.document !== 'undefined') {
621
+ if (typeof globalThis.device !== 'undefined') {
622
+ parseOSFromCordova();
623
+ }
624
+ else {
625
+ globalThis.document.addEventListener("deviceready", parseOSFromCordova, false);
626
+ }
627
+ }
628
+ if (canUseHighEntropyValues(globalThis.navigator)) {
629
+ globalThis
630
+ .navigator
631
+ .userAgentData
632
+ .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
633
+ .then(function (result) {
634
+ var brands = result.fullVersionList || result.brands || [];
635
+ var platformVersion = result.platformVersion;
636
+ var platform = result.platform;
637
+ var browserName = Platform.browser.name;
638
+ var prevBrandName = null;
639
+ for (var i = 0; i < brands.length; i++) {
640
+ var brand = normalizeBrand(brands[i]);
641
+ var brandVersion = brand.version;
642
+ var brandName = brand.brand;
643
+ if (/not.a.brand/i.test(brandName))
644
+ continue;
645
+ if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
646
+ brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
647
+ prevBrandName = browserName;
648
+ if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
649
+ browserName = brandName;
650
+ if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
651
+ Platform.browser.name = Browsers.Chrome;
652
+ else if (browserName === 'Edge' || browserName === 'Edge WebView2')
653
+ Platform.browser.name = Browsers.Edge;
654
+ else if (browserName === 'Opera Mobi')
655
+ Platform.browser.name = Browsers.Opera;
656
+ Platform.browser.version = brandVersion;
657
+ }
658
+ prevBrandName = brandName;
659
+ }
660
+ if (brandName === 'Chromium')
661
+ Platform.engine.version = brandVersion;
662
+ }
663
+ if (typeof platformVersion === 'string') {
664
+ if (Platform.os.name === OS.Windows)
665
+ Platform.os.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
666
+ else
667
+ Platform.os.version = platformVersion;
668
+ }
669
+ if (typeof platform === 'string') {
670
+ if (/android/i.test(platform))
671
+ Platform.os.name = OS.Android;
672
+ else if (/ios|iphone|ipad/i.test(platform))
673
+ Platform.os.name = OS.iOS;
674
+ else if (/windows|win32/i.test(platform))
675
+ Platform.os.name = OS.Windows;
676
+ else if (/macos|macintel/i.test(platform))
677
+ Platform.os.name = OS.MacOS;
678
+ }
679
+ if (result.mobile === true)
680
+ Platform.device = Devices.Mobile;
681
+ });
682
+ }
501
683
  }
502
- Platform.device = Platform.os === OS.iOS || Platform.os === OS.Android ? Devices.Mobile : Platform.os === OS.Windows || Platform.os === OS.MacOS ? Devices.Desktop : Devices.Unknown;
503
- Platform.isMobile = Platform.device === Devices.Mobile;
504
- Platform.isDesktop = Platform.device === Devices.Desktop;
505
- Platform.isStandalone = getIsStandalone(Platform.os);
684
+ init();
506
685
 
507
686
  var IS_IE_MOBILE = /iemobile/i.test(Platform.userAgent);
508
687
  var IS_WINDOWS_PHONE = /windows phone/i.test(Platform.userAgent);