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
@@ -398,21 +398,43 @@
398
398
  var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
399
399
 
400
400
  var Platform = {
401
- device: Devices.Unknown,
402
- os: OS.Unknown,
403
- engine: Engines.Unknown,
404
- browser: Browsers.Unknown,
401
+ os: { name: OS.Unknown, version: '' },
402
+ engine: { name: Engines.Unknown, version: '' },
403
+ browser: { name: Browsers.Unknown, version: '' },
405
404
  crossPlatformFramework: CrossPlatformFramework.Unknown,
406
- osVersion: '',
407
- engineVersion: '',
408
- browserVersion: '',
409
- renderer: getRenderer(),
410
405
  userAgent: USER_AGENT,
411
- isNode: typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined,
412
- isMobile: false,
413
- isDesktop: false,
414
- isStandalone: false,
415
- isWebview: /; ?wv|applewebkit(?!.*safari)/i.test(USER_AGENT),
406
+ get network() {
407
+ return getNetwork();
408
+ },
409
+ get device() {
410
+ if (this.os.name === OS.iOS || this.os.name === OS.Android)
411
+ return Devices.Mobile;
412
+ if (this.os.name === OS.Windows || this.os.name === OS.MacOS)
413
+ return Devices.Desktop;
414
+ return Devices.Unknown;
415
+ },
416
+ get renderer() {
417
+ return getRenderer();
418
+ },
419
+ get isMobile() {
420
+ return this.device === Devices.Mobile;
421
+ },
422
+ get isDesktop() {
423
+ return this.device === Devices.Desktop;
424
+ },
425
+ get isWebview() {
426
+ return /; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent);
427
+ },
428
+ get isNode() {
429
+ return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
430
+ },
431
+ get isStandalone() {
432
+ if (this.os.name === OS.iOS)
433
+ return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
434
+ if (!('matchMedia' in globalThis))
435
+ return false;
436
+ return globalThis.matchMedia('(display-mode: standalone)').matches;
437
+ },
416
438
  };
417
439
  var OS_RESOLVER_MAP = [
418
440
  [/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
@@ -472,6 +494,14 @@
472
494
  [/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
473
495
  [/firefox\/([\w.]+)/i, Browsers.Firefox],
474
496
  ];
497
+ var HIGH_ENTROPY_BRAND_NAME_MAP = {
498
+ 'Google Chrome': 'Chrome',
499
+ 'Microsoft Edge': 'Edge',
500
+ 'Microsoft Edge WebView2': 'Edge WebView2',
501
+ 'Android WebView': 'Chrome WebView',
502
+ 'HeadlessChrome': 'Chrome Headless',
503
+ 'OperaMobile': 'Opera Mobi',
504
+ };
475
505
  function resolveWindowsVersion(string) {
476
506
  if (string === undefined)
477
507
  return '';
@@ -646,6 +676,33 @@
646
676
  return { brand: entry, version: '' };
647
677
  return { brand: entry.brand, version: entry.version };
648
678
  }
679
+ function getSemanticVersion(string) {
680
+ var parts = string.split('.');
681
+ return {
682
+ major: parseInt(parts[0] || '0'),
683
+ minor: parseInt(parts[1] || '0'),
684
+ build: parseInt(parts[2] || '0')
685
+ };
686
+ }
687
+ function parseOSFromCordova() {
688
+ Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
689
+ if (typeof globalThis.device !== 'undefined') {
690
+ switch (globalThis.device.platform) {
691
+ case 'Android':
692
+ Platform.os = {
693
+ name: OS.Android,
694
+ version: globalThis.device.version,
695
+ };
696
+ break;
697
+ case 'iOS':
698
+ Platform.os = {
699
+ name: OS.iOS,
700
+ version: globalThis.device.version,
701
+ };
702
+ break;
703
+ }
704
+ }
705
+ }
649
706
  function getRenderer() {
650
707
  if (typeof globalThis.document === 'undefined')
651
708
  return '';
@@ -666,171 +723,293 @@
666
723
  return '';
667
724
  }
668
725
  }
669
- function getIsStandalone(os) {
670
- if (!('matchMedia' in globalThis))
671
- return false;
672
- if (os === OS.iOS)
673
- return 'standalone' in navigator && !!navigator.standalone;
674
- return globalThis.matchMedia('(display-mode: standalone)').matches;
675
- }
676
- function getSemanticVersion(string) {
677
- var parts = string.split('.');
678
- return {
679
- major: parseInt(parts[0] || '0'),
680
- minor: parseInt(parts[1] || '0'),
681
- build: parseInt(parts[2] || '0')
726
+ function getNetwork() {
727
+ var network = {
728
+ isOnline: null,
729
+ effectiveType: null,
730
+ type: null,
731
+ downlink: null,
732
+ rtt: null,
733
+ saveData: null,
682
734
  };
683
- }
684
- if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT))) {
685
- Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
686
- }
687
- if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative') {
688
- Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
689
- }
690
- for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
691
- var map = OS_RESOLVER_MAP[i];
692
- var regexp = map[0];
693
- var os = map[1];
694
- var resolver = map[2];
695
- var matched = Platform.userAgent.match(regexp);
696
- if (matched !== null) {
697
- Platform.os = os;
698
- Platform.osVersion = resolveVersion(matched[1], resolver);
699
- break;
735
+ if (typeof globalThis.navigator !== 'undefined') {
736
+ if (typeof globalThis.navigator.onLine !== 'undefined')
737
+ network.isOnline = globalThis.navigator.onLine;
738
+ var connection = globalThis.navigator.connection || globalThis.navigator.mozConnection || globalThis.navigator.webkitConnection;
739
+ if (typeof connection !== 'undefined') {
740
+ if (typeof connection.effectiveType !== 'undefined')
741
+ network.effectiveType = connection.effectiveType;
742
+ if (typeof connection.type !== 'undefined')
743
+ network.type = connection.type;
744
+ if (typeof connection.downlink !== 'undefined')
745
+ network.downlink = connection.downlink;
746
+ if (typeof connection.rtt !== 'undefined')
747
+ network.rtt = connection.rtt;
748
+ if (typeof connection.saveData !== 'undefined')
749
+ network.saveData = connection.saveData;
750
+ }
700
751
  }
701
- }
702
- if (Platform.os === OS.iOS && compareVersion(Platform.osVersion, '18.6') === 0) {
703
- var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
704
- if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
705
- Platform.osVersion = version[1];
706
- }
707
- for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
708
- var map = ENGINE_RESOLVER_MAP[i];
709
- var regexp = map[0];
710
- var engine = map[1];
711
- var resolver = map[2];
712
- var matched = Platform.userAgent.match(regexp);
713
- if (matched !== null) {
714
- Platform.engine = engine;
715
- Platform.engineVersion = resolveVersion(matched[1], resolver);
716
- break;
752
+ if (Platform.isNode) {
753
+ try {
754
+ var os = require('os');
755
+ var networkInterfaces = os.networkInterfaces();
756
+ var networkInterfaceNames = Object.keys(networkInterfaces);
757
+ for (var i = 0; i < networkInterfaceNames.length; i++) {
758
+ var name_1 = networkInterfaceNames[i];
759
+ var networkInterface = networkInterfaces[name_1];
760
+ for (var j = 0; j < networkInterface.length; j++) {
761
+ var address = networkInterface[j];
762
+ if (!address.internal && address.family === 'IPv4')
763
+ network.isOnline = true;
764
+ }
765
+ if (network.isOnline)
766
+ break;
767
+ }
768
+ }
769
+ catch (_) {
770
+ }
771
+ try {
772
+ var childProcess = require('child_process');
773
+ if (Platform.os.name === OS.Windows) {
774
+ try {
775
+ var output = childProcess.execSync('netsh wlan show interfaces', { encoding: 'utf8', timeout: 5000 });
776
+ if (output.includes('State') && output.includes('connected'))
777
+ network.type = 'wifi';
778
+ }
779
+ catch (_) {
780
+ }
781
+ if (network.type === null) {
782
+ try {
783
+ var output = childProcess.execSync('ipconfig', { encoding: 'utf8', timeout: 5000 });
784
+ if (output.includes('Ethernet adapter'))
785
+ network.type = 'ethernet';
786
+ }
787
+ catch (_) {
788
+ }
789
+ }
790
+ if (network.type === null)
791
+ network.type = 'other';
792
+ }
793
+ else if (Platform.os.name === OS.MacOS) {
794
+ try {
795
+ var output = childProcess.execSync('networksetup -listallhardwareports', { encoding: 'utf8', timeout: 5000 });
796
+ var activeInterface = childProcess.execSync('route -n get default | grep interface', { encoding: 'utf8', timeout: 5000 });
797
+ if (activeInterface.includes('en0') && output.includes('Wi-Fi'))
798
+ network.type = 'wifi';
799
+ else if (activeInterface.includes('en') || output.includes('Ethernet'))
800
+ network.type = 'ethernet';
801
+ else
802
+ network.type = 'other';
803
+ }
804
+ catch (_) {
805
+ network.type = 'other';
806
+ }
807
+ }
808
+ }
809
+ catch (_) {
810
+ }
717
811
  }
812
+ return network;
718
813
  }
719
- for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
720
- var map = BROWSER_RESOLVER_MAP[i];
721
- var regexp = map[0];
722
- var browser = map[1];
723
- var resolver = map[2];
724
- var matched = Platform.userAgent.match(regexp);
725
- if (matched !== null) {
726
- Platform.browser = browser;
727
- Platform.browserVersion = resolveVersion(matched[1], resolver);
728
- break;
729
- }
814
+ function canUseHighEntropyValues(navigator) {
815
+ return typeof globalThis.navigator !== 'undefined' && typeof navigator.userAgentData !== 'undefined' && typeof navigator.userAgentData.getHighEntropyValues !== 'undefined';
730
816
  }
731
- if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
732
- try {
733
- var reactNative = require('react-native');
734
- var platform = reactNative.Platform;
735
- var os = platform.OS;
736
- var release = '' + platform.Version;
737
- var version = getSemanticVersion(release);
738
- switch (os) {
739
- case 'android':
740
- Platform.os = OS.Android;
741
- Platform.osVersion = resolveSemanticAndroidVersion(version, release);
742
- break;
743
- case 'ios':
744
- Platform.os = OS.iOS;
745
- Platform.osVersion = release;
746
- break;
747
- case 'windows':
748
- Platform.os = OS.Windows;
749
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
750
- break;
751
- case 'macos':
752
- Platform.os = OS.MacOS;
753
- Platform.osVersion = release;
754
- break;
817
+ function init() {
818
+ if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT)))
819
+ Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
820
+ if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative')
821
+ Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
822
+ for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
823
+ var map = OS_RESOLVER_MAP[i];
824
+ var regexp = map[0];
825
+ var os = map[1];
826
+ var resolver = map[2];
827
+ var matched = Platform.userAgent.match(regexp);
828
+ if (matched !== null) {
829
+ Platform.os = {
830
+ name: os,
831
+ version: resolveVersion(matched[1], resolver),
832
+ };
833
+ break;
755
834
  }
756
835
  }
757
- catch (_) {
836
+ if (Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '18.6') === 0) {
837
+ var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
838
+ if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
839
+ Platform.os.version = version[1];
758
840
  }
759
- }
760
- if (Platform.isNode) {
761
- try {
762
- var os = require('os');
763
- var platform = os.platform();
764
- var release = os.release();
765
- var version = getSemanticVersion(release);
766
- switch (platform) {
767
- case 'win32':
768
- Platform.os = OS.Windows;
769
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
770
- break;
771
- case 'darwin':
772
- Platform.os = OS.MacOS;
773
- Platform.osVersion = resolveSemanticDarwinVersion(version, release);
774
- break;
775
- case 'android':
776
- Platform.os = OS.Android;
777
- Platform.osVersion = release;
778
- break;
779
- case 'linux':
780
- if (/android/i.test(release)) {
781
- Platform.os = OS.Android;
782
- Platform.osVersion = release;
783
- }
784
- break;
841
+ for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
842
+ var map = ENGINE_RESOLVER_MAP[i];
843
+ var regexp = map[0];
844
+ var engine = map[1];
845
+ var resolver = map[2];
846
+ var matched = Platform.userAgent.match(regexp);
847
+ if (matched !== null) {
848
+ Platform.engine = {
849
+ name: engine,
850
+ version: resolveVersion(matched[1], resolver),
851
+ };
852
+ break;
785
853
  }
786
854
  }
787
- catch (_) {
855
+ for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
856
+ var map = BROWSER_RESOLVER_MAP[i];
857
+ var regexp = map[0];
858
+ var browser = map[1];
859
+ var resolver = map[2];
860
+ var matched = Platform.userAgent.match(regexp);
861
+ if (matched !== null) {
862
+ Platform.browser = {
863
+ name: browser,
864
+ version: resolveVersion(matched[1], resolver),
865
+ };
866
+ break;
867
+ }
788
868
  }
789
- }
790
- if (typeof globalThis.document !== 'undefined') {
791
- globalThis.document.addEventListener("deviceready", function () {
792
- Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
793
- if (Platform.os === OS.Unknown && typeof globalThis.device !== 'undefined') {
794
- switch (globalThis.device.platform) {
795
- case 'Android':
796
- Platform.os = OS.Android;
869
+ if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
870
+ try {
871
+ var reactNative = require('react-native');
872
+ var platform = reactNative.Platform;
873
+ var os = platform.OS;
874
+ var release = '' + platform.Version;
875
+ var version = getSemanticVersion(release);
876
+ switch (os) {
877
+ case 'android':
878
+ Platform.os = {
879
+ name: OS.Android,
880
+ version: resolveSemanticAndroidVersion(version, release),
881
+ };
797
882
  break;
798
- case 'iOS':
799
- Platform.os = OS.iOS;
883
+ case 'ios':
884
+ Platform.os = {
885
+ name: OS.iOS,
886
+ version: release,
887
+ };
888
+ break;
889
+ case 'windows':
890
+ Platform.os = {
891
+ name: OS.Windows,
892
+ version: resolveSemanticWindowsVersion(version, release),
893
+ };
894
+ break;
895
+ case 'macos':
896
+ Platform.os = {
897
+ name: OS.MacOS,
898
+ version: release,
899
+ };
800
900
  break;
801
901
  }
802
- Platform.osVersion = globalThis.device.version;
803
902
  }
804
- }, false);
805
- }
806
- if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
807
- navigator
808
- .userAgentData
809
- .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
810
- .then(function (result) {
811
- var brands = result.fullVersionList || result.brands || [];
812
- var platformVersion = result.platformVersion;
813
- for (var i = 0; i < brands.length; i++) {
814
- var brand = normalizeBrand(brands[i]);
815
- var brandName = brand.brand;
816
- var brandVersion = brand.version;
817
- if (/not.a.brand/i.test(brandName))
818
- continue;
819
- if (brandName === "Chromium")
820
- Platform.engineVersion = brandVersion;
903
+ catch (_) {
821
904
  }
822
- if (typeof platformVersion === 'string') {
823
- if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
824
- Platform.osVersion = '11';
825
- else
826
- Platform.osVersion = platformVersion;
905
+ finally {
827
906
  }
828
- });
907
+ }
908
+ if (Platform.isNode) {
909
+ try {
910
+ var os = require('os');
911
+ var platform = os.platform();
912
+ var release = os.release();
913
+ var version = getSemanticVersion(release);
914
+ switch (platform) {
915
+ case 'win32':
916
+ Platform.os = {
917
+ name: OS.Windows,
918
+ version: resolveSemanticWindowsVersion(version, release),
919
+ };
920
+ break;
921
+ case 'darwin':
922
+ Platform.os = {
923
+ name: OS.MacOS,
924
+ version: resolveSemanticDarwinVersion(version, release),
925
+ };
926
+ break;
927
+ case 'android':
928
+ Platform.os = {
929
+ name: OS.Android,
930
+ version: release,
931
+ };
932
+ break;
933
+ case 'linux':
934
+ if (/android/i.test(release)) {
935
+ Platform.os = {
936
+ name: OS.Android,
937
+ version: release,
938
+ };
939
+ }
940
+ break;
941
+ }
942
+ }
943
+ catch (_) {
944
+ }
945
+ finally {
946
+ }
947
+ }
948
+ if (typeof globalThis.document !== 'undefined') {
949
+ if (typeof globalThis.device !== 'undefined') {
950
+ parseOSFromCordova();
951
+ }
952
+ else {
953
+ globalThis.document.addEventListener("deviceready", parseOSFromCordova, false);
954
+ }
955
+ }
956
+ if (canUseHighEntropyValues(globalThis.navigator)) {
957
+ globalThis
958
+ .navigator
959
+ .userAgentData
960
+ .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
961
+ .then(function (result) {
962
+ var brands = result.fullVersionList || result.brands || [];
963
+ var platformVersion = result.platformVersion;
964
+ var platform = result.platform;
965
+ var browserName = Platform.browser.name;
966
+ var prevBrandName = null;
967
+ for (var i = 0; i < brands.length; i++) {
968
+ var brand = normalizeBrand(brands[i]);
969
+ var brandVersion = brand.version;
970
+ var brandName = brand.brand;
971
+ if (/not.a.brand/i.test(brandName))
972
+ continue;
973
+ if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
974
+ brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
975
+ prevBrandName = browserName;
976
+ if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
977
+ browserName = brandName;
978
+ if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
979
+ Platform.browser.name = Browsers.Chrome;
980
+ else if (browserName === 'Edge' || browserName === 'Edge WebView2')
981
+ Platform.browser.name = Browsers.Edge;
982
+ else if (browserName === 'Opera Mobi')
983
+ Platform.browser.name = Browsers.Opera;
984
+ Platform.browser.version = brandVersion;
985
+ }
986
+ prevBrandName = brandName;
987
+ }
988
+ if (brandName === 'Chromium')
989
+ Platform.engine.version = brandVersion;
990
+ }
991
+ if (typeof platformVersion === 'string') {
992
+ if (Platform.os.name === OS.Windows)
993
+ Platform.os.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
994
+ else
995
+ Platform.os.version = platformVersion;
996
+ }
997
+ if (typeof platform === 'string') {
998
+ if (/android/i.test(platform))
999
+ Platform.os.name = OS.Android;
1000
+ else if (/ios|iphone|ipad/i.test(platform))
1001
+ Platform.os.name = OS.iOS;
1002
+ else if (/windows|win32/i.test(platform))
1003
+ Platform.os.name = OS.Windows;
1004
+ else if (/macos|macintel/i.test(platform))
1005
+ Platform.os.name = OS.MacOS;
1006
+ }
1007
+ if (result.mobile === true)
1008
+ Platform.device = Devices.Mobile;
1009
+ });
1010
+ }
829
1011
  }
830
- Platform.device = Platform.os === OS.iOS || Platform.os === OS.Android ? Devices.Mobile : Platform.os === OS.Windows || Platform.os === OS.MacOS ? Devices.Desktop : Devices.Unknown;
831
- Platform.isMobile = Platform.device === Devices.Mobile;
832
- Platform.isDesktop = Platform.device === Devices.Desktop;
833
- Platform.isStandalone = getIsStandalone(Platform.os);
1012
+ init();
834
1013
 
835
1014
  var _a;
836
1015
  var App = {
@@ -953,26 +1132,26 @@
953
1132
  }
954
1133
  }
955
1134
  function canOpenIntentURL() {
956
- if (Platform.os !== OS.Android)
1135
+ if (Platform.os.name !== OS.Android)
957
1136
  return false;
958
- if (Platform.browser === Browsers.SamsungInternet && compareVersion(Platform.browserVersion, '17.0.1.69') >= 0 && compareVersion(Platform.browserVersion, '17.0.7.34') < 0)
1137
+ if (Platform.browser.name === Browsers.SamsungInternet && compareVersion(Platform.browser.version, '17.0.1.69') >= 0 && compareVersion(Platform.browser.version, '17.0.7.34') < 0)
959
1138
  return false;
960
- if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '41.0') < 0)
1139
+ if (Platform.browser.name === Browsers.Firefox && compareVersion(Platform.browser.version, '41.0') < 0)
961
1140
  return false;
962
- if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '58.0') >= 0 && compareVersion(Platform.browserVersion, '68.11.0') < 0)
1141
+ if (Platform.browser.name === Browsers.Firefox && compareVersion(Platform.browser.version, '58.0') >= 0 && compareVersion(Platform.browser.version, '68.11.0') < 0)
963
1142
  return false;
964
- if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '79.0') >= 0 && compareVersion(Platform.browserVersion, '81.2.0') < 0)
1143
+ if (Platform.browser.name === Browsers.Firefox && compareVersion(Platform.browser.version, '79.0') >= 0 && compareVersion(Platform.browser.version, '81.2.0') < 0)
965
1144
  return false;
966
- if (Platform.browser === Browsers.Firefox && compareVersion(Platform.browserVersion, '96.0') >= 0 && compareVersion(Platform.browserVersion, '107.0') < 0)
1145
+ if (Platform.browser.name === Browsers.Firefox && compareVersion(Platform.browser.version, '96.0') >= 0 && compareVersion(Platform.browser.version, '107.0') < 0)
967
1146
  return false;
968
- if (Platform.browser === Browsers.Opera && compareVersion(Platform.browserVersion, '14.0') < 0)
1147
+ if (Platform.browser.name === Browsers.Opera && compareVersion(Platform.browser.version, '14.0') < 0)
969
1148
  return false;
970
1149
  if (/(?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/[\w.]+;/i.test(Platform.userAgent) || /instagram[\/ ][-\w.]+/i.test(Platform.userAgent) || /micromessenger\/([\w.]+)/i.test(Platform.userAgent) || /musical_ly(?:.+app_?version\/|_)[\w.]+/i.test(Platform.userAgent) || /ultralite app_version\/[\w.]+/i.test(Platform.userAgent))
971
1150
  return false;
972
1151
  return true;
973
1152
  }
974
1153
  function canOpenUniversalURL() {
975
- return Platform.os === OS.iOS && compareVersion(Platform.osVersion, '9.0') >= 0;
1154
+ return Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '9.0') >= 0;
976
1155
  }
977
1156
  function getURLOpenError(tried) {
978
1157
  var triedURLString = '';
@@ -1170,8 +1349,8 @@
1170
1349
  eventTarget = { focus: topDocument, blur: topDocument };
1171
1350
  eventType = { focus: 'resume', blur: 'pause' };
1172
1351
  }
1173
- else if (Platform.os === OS.iOS) {
1174
- if (compareVersion(Platform.osVersion, '8.0') >= 0) {
1352
+ else if (Platform.os.name === OS.iOS) {
1353
+ if (compareVersion(Platform.os.version, '8.0') >= 0) {
1175
1354
  eventTarget = { visibilitychange: topDocument };
1176
1355
  eventType = { visibilitychange: 'visibilitychange' };
1177
1356
  }
@@ -1274,12 +1453,12 @@
1274
1453
  });
1275
1454
  }
1276
1455
  function open(options) {
1277
- var os = Platform.os;
1456
+ var os = Platform.os.name;
1278
1457
  var urls = [];
1279
1458
  var tried = [];
1280
1459
  var infos = {};
1281
1460
  var timeout;
1282
- if (Platform.os === OS.Android) {
1461
+ if (Platform.os.name === OS.Android) {
1283
1462
  var option = options[OS.Android] || options['android'];
1284
1463
  if (option === undefined)
1285
1464
  return Promise.reject(getURLOpenError(tried));
@@ -1304,7 +1483,7 @@
1304
1483
  if (infos.scheme !== undefined && infos.intent === undefined)
1305
1484
  infos.intent = createIntentURL(infos.scheme, infos.packageName, infos.fallback);
1306
1485
  }
1307
- else if (Platform.os === OS.iOS) {
1486
+ else if (Platform.os.name === OS.iOS) {
1308
1487
  var option = options[OS.iOS] || options['ios'];
1309
1488
  if (option === undefined)
1310
1489
  return Promise.reject(getURLOpenError(tried));
@@ -1321,7 +1500,7 @@
1321
1500
  if (infos.bundleId !== undefined && infos.trackId === undefined)
1322
1501
  infos.trackId = getTrackId(infos.bundleId);
1323
1502
  }
1324
- else if (Platform.os === OS.Windows) {
1503
+ else if (Platform.os.name === OS.Windows) {
1325
1504
  var option = options[OS.Windows] || options['windows'];
1326
1505
  if (option === undefined)
1327
1506
  return Promise.reject(getURLOpenError(tried));
@@ -1334,7 +1513,7 @@
1334
1513
  infos.allowAppStore = option.allowAppStore;
1335
1514
  infos.allowWebStore = option.allowWebStore;
1336
1515
  }
1337
- else if (Platform.os === OS.MacOS) {
1516
+ else if (Platform.os.name === OS.MacOS) {
1338
1517
  var option = options[OS.MacOS] || options['mac'];
1339
1518
  if (option === undefined)
1340
1519
  return Promise.reject(getURLOpenError(tried));
@@ -1516,7 +1695,7 @@
1516
1695
  + '?cc=' + options.cc
1517
1696
  + '&bcc=' + options.bcc
1518
1697
  + '&subject=' + options.subject
1519
- + '&body=' + options.body, 0, getDefaultTimeoutByOS(Platform.os));
1698
+ + '&body=' + options.body, 0, getDefaultTimeoutByOS(Platform.os.name));
1520
1699
  }
1521
1700
  function openMessengerTelephone(options) {
1522
1701
  return openMessenger(options, 'tel');