native-fn 1.0.73 → 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 (80) 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 +357 -178
  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 +357 -178
  12. package/dist/plugin/app/index.umd.js +357 -178
  13. package/dist/plugin/app/index.umd.min.js +1 -1
  14. package/dist/plugin/app/src/plugin/platform/constants/index.d.ts +1 -1
  15. package/dist/plugin/app/src/plugin/platform/cores/index.d.ts +12 -0
  16. package/dist/plugin/app/src/plugin/platform/types/platform.d.ts +16 -6
  17. package/dist/plugin/app/src/types/native.d.ts +5 -5
  18. package/dist/plugin/appearance/index.cjs +346 -167
  19. package/dist/plugin/appearance/index.min.cjs +1 -1
  20. package/dist/plugin/appearance/index.min.mjs +1 -1
  21. package/dist/plugin/appearance/index.mjs +346 -167
  22. package/dist/plugin/appearance/index.umd.js +346 -167
  23. package/dist/plugin/appearance/index.umd.min.js +1 -1
  24. package/dist/plugin/appearance/src/plugin/platform/constants/index.d.ts +1 -1
  25. package/dist/plugin/appearance/src/plugin/platform/cores/index.d.ts +12 -0
  26. package/dist/plugin/appearance/src/plugin/platform/types/platform.d.ts +16 -6
  27. package/dist/plugin/appearance/src/types/native.d.ts +5 -5
  28. package/dist/plugin/camera/index.cjs +2 -2
  29. package/dist/plugin/camera/index.min.cjs +1 -1
  30. package/dist/plugin/camera/index.min.mjs +1 -1
  31. package/dist/plugin/camera/index.mjs +2 -2
  32. package/dist/plugin/camera/index.umd.js +2 -2
  33. package/dist/plugin/camera/index.umd.min.js +1 -1
  34. package/dist/plugin/camera/src/plugin/platform/constants/index.d.ts +1 -1
  35. package/dist/plugin/clipboard/index.cjs +341 -162
  36. package/dist/plugin/clipboard/index.min.cjs +1 -1
  37. package/dist/plugin/clipboard/index.min.mjs +1 -1
  38. package/dist/plugin/clipboard/index.mjs +341 -162
  39. package/dist/plugin/clipboard/index.umd.js +341 -162
  40. package/dist/plugin/clipboard/index.umd.min.js +1 -1
  41. package/dist/plugin/clipboard/src/plugin/platform/constants/index.d.ts +1 -1
  42. package/dist/plugin/clipboard/src/plugin/platform/cores/index.d.ts +12 -0
  43. package/dist/plugin/clipboard/src/plugin/platform/types/platform.d.ts +16 -6
  44. package/dist/plugin/clipboard/src/types/native.d.ts +5 -5
  45. package/dist/plugin/fullscreen/index.cjs +350 -171
  46. package/dist/plugin/fullscreen/index.min.cjs +1 -1
  47. package/dist/plugin/fullscreen/index.min.mjs +1 -1
  48. package/dist/plugin/fullscreen/index.mjs +350 -171
  49. package/dist/plugin/fullscreen/index.umd.js +350 -171
  50. package/dist/plugin/fullscreen/index.umd.min.js +1 -1
  51. package/dist/plugin/fullscreen/src/plugin/platform/constants/index.d.ts +1 -1
  52. package/dist/plugin/fullscreen/src/plugin/platform/cores/index.d.ts +12 -0
  53. package/dist/plugin/fullscreen/src/plugin/platform/types/platform.d.ts +16 -6
  54. package/dist/plugin/fullscreen/src/types/native.d.ts +5 -5
  55. package/dist/plugin/platform/index.cjs +341 -162
  56. package/dist/plugin/platform/index.d.ts +18 -8
  57. package/dist/plugin/platform/index.min.cjs +1 -1
  58. package/dist/plugin/platform/index.min.mjs +1 -1
  59. package/dist/plugin/platform/index.mjs +341 -162
  60. package/dist/plugin/platform/index.umd.js +341 -162
  61. package/dist/plugin/platform/index.umd.min.js +1 -1
  62. package/dist/plugin/platform/src/plugin/platform/constants/index.d.ts +1 -1
  63. package/dist/plugin/platform/src/plugin/platform/cores/index.d.ts +12 -0
  64. package/dist/plugin/platform/src/plugin/platform/types/platform.d.ts +16 -6
  65. package/dist/plugin/platform/src/types/native.d.ts +5 -5
  66. package/dist/plugin/theme/index.cjs +341 -162
  67. package/dist/plugin/theme/index.min.cjs +1 -1
  68. package/dist/plugin/theme/index.min.mjs +1 -1
  69. package/dist/plugin/theme/index.mjs +341 -162
  70. package/dist/plugin/theme/index.umd.js +341 -162
  71. package/dist/plugin/theme/index.umd.min.js +1 -1
  72. package/dist/plugin/theme/src/plugin/platform/constants/index.d.ts +1 -1
  73. package/dist/plugin/theme/src/plugin/platform/cores/index.d.ts +12 -0
  74. package/dist/plugin/theme/src/plugin/platform/types/platform.d.ts +16 -6
  75. package/dist/plugin/theme/src/types/native.d.ts +5 -5
  76. package/dist/src/plugin/platform/constants/index.d.ts +1 -1
  77. package/dist/src/plugin/platform/cores/index.d.ts +12 -0
  78. package/dist/src/plugin/platform/types/platform.d.ts +16 -6
  79. package/dist/src/types/native.d.ts +5 -5
  80. package/package.json +1 -1
@@ -92,7 +92,7 @@ var Browsers;
92
92
  })(Browsers || (Browsers = {}));
93
93
  var CrossPlatformFramework;
94
94
  (function (CrossPlatformFramework) {
95
- CrossPlatformFramework["NotACrossPlatformFramework"] = "NotACrossPlatformFramework";
95
+ CrossPlatformFramework["Unknown"] = "Unknown";
96
96
  CrossPlatformFramework["ReactNative"] = "ReactNative";
97
97
  CrossPlatformFramework["Electron"] = "Electron";
98
98
  CrossPlatformFramework["Cordova"] = "Cordova";
@@ -100,21 +100,43 @@ var CrossPlatformFramework;
100
100
  var USER_AGENT = typeof globalThis.navigator !== 'undefined' && typeof globalThis.navigator.userAgent === 'string' ? globalThis.navigator.userAgent : '';
101
101
 
102
102
  var Platform = {
103
- device: Devices.Unknown,
104
- os: OS.Unknown,
105
- engine: Engines.Unknown,
106
- browser: Browsers.Unknown,
107
- crossPlatformFramework: CrossPlatformFramework.NotACrossPlatformFramework,
108
- osVersion: '',
109
- engineVersion: '',
110
- browserVersion: '',
111
- renderer: getRenderer(),
103
+ os: { name: OS.Unknown, version: '' },
104
+ engine: { name: Engines.Unknown, version: '' },
105
+ browser: { name: Browsers.Unknown, version: '' },
106
+ crossPlatformFramework: CrossPlatformFramework.Unknown,
112
107
  userAgent: USER_AGENT,
113
- isNode: typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined,
114
- isMobile: false,
115
- isDesktop: false,
116
- isStandalone: false,
117
- isWebview: /; ?wv|applewebkit(?!.*safari)/i.test(USER_AGENT),
108
+ get network() {
109
+ return getNetwork();
110
+ },
111
+ get device() {
112
+ if (this.os.name === OS.iOS || this.os.name === OS.Android)
113
+ return Devices.Mobile;
114
+ if (this.os.name === OS.Windows || this.os.name === OS.MacOS)
115
+ return Devices.Desktop;
116
+ return Devices.Unknown;
117
+ },
118
+ get renderer() {
119
+ return getRenderer();
120
+ },
121
+ get isMobile() {
122
+ return this.device === Devices.Mobile;
123
+ },
124
+ get isDesktop() {
125
+ return this.device === Devices.Desktop;
126
+ },
127
+ get isWebview() {
128
+ return /; ?wv|applewebkit(?!.*safari)/i.test(this.userAgent);
129
+ },
130
+ get isNode() {
131
+ return typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.node !== undefined;
132
+ },
133
+ get isStandalone() {
134
+ if (this.os.name === OS.iOS)
135
+ return 'standalone' in globalThis.navigator && !!globalThis.navigator.standalone;
136
+ if (!('matchMedia' in globalThis))
137
+ return false;
138
+ return globalThis.matchMedia('(display-mode: standalone)').matches;
139
+ },
118
140
  };
119
141
  var OS_RESOLVER_MAP = [
120
142
  [/windows nt (6\.[23]); arm/i, OS.Windows, resolveWindowsVersion],
@@ -174,6 +196,14 @@ var BROWSER_RESOLVER_MAP = [
174
196
  [/mobile vr; rv:([\w.]+)\).+firefox/i, Browsers.Firefox],
175
197
  [/firefox\/([\w.]+)/i, Browsers.Firefox],
176
198
  ];
199
+ var HIGH_ENTROPY_BRAND_NAME_MAP = {
200
+ 'Google Chrome': 'Chrome',
201
+ 'Microsoft Edge': 'Edge',
202
+ 'Microsoft Edge WebView2': 'Edge WebView2',
203
+ 'Android WebView': 'Chrome WebView',
204
+ 'HeadlessChrome': 'Chrome Headless',
205
+ 'OperaMobile': 'Opera Mobi',
206
+ };
177
207
  function resolveWindowsVersion(string) {
178
208
  if (string === undefined)
179
209
  return '';
@@ -348,6 +378,33 @@ function normalizeBrand(entry) {
348
378
  return { brand: entry, version: '' };
349
379
  return { brand: entry.brand, version: entry.version };
350
380
  }
381
+ function getSemanticVersion(string) {
382
+ var parts = string.split('.');
383
+ return {
384
+ major: parseInt(parts[0] || '0'),
385
+ minor: parseInt(parts[1] || '0'),
386
+ build: parseInt(parts[2] || '0')
387
+ };
388
+ }
389
+ function parseOSFromCordova() {
390
+ Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
391
+ if (typeof globalThis.device !== 'undefined') {
392
+ switch (globalThis.device.platform) {
393
+ case 'Android':
394
+ Platform.os = {
395
+ name: OS.Android,
396
+ version: globalThis.device.version,
397
+ };
398
+ break;
399
+ case 'iOS':
400
+ Platform.os = {
401
+ name: OS.iOS,
402
+ version: globalThis.device.version,
403
+ };
404
+ break;
405
+ }
406
+ }
407
+ }
351
408
  function getRenderer() {
352
409
  if (typeof globalThis.document === 'undefined')
353
410
  return '';
@@ -368,171 +425,293 @@ function getRenderer() {
368
425
  return '';
369
426
  }
370
427
  }
371
- function getIsStandalone(os) {
372
- if (!('matchMedia' in globalThis))
373
- return false;
374
- if (os === OS.iOS)
375
- return 'standalone' in navigator && !!navigator.standalone;
376
- return globalThis.matchMedia('(display-mode: standalone)').matches;
377
- }
378
- function getSemanticVersion(string) {
379
- var parts = string.split('.');
380
- return {
381
- major: parseInt(parts[0] || '0'),
382
- minor: parseInt(parts[1] || '0'),
383
- build: parseInt(parts[2] || '0')
428
+ function getNetwork() {
429
+ var network = {
430
+ isOnline: null,
431
+ effectiveType: null,
432
+ type: null,
433
+ downlink: null,
434
+ rtt: null,
435
+ saveData: null,
384
436
  };
385
- }
386
- if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT))) {
387
- Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
388
- }
389
- if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative') {
390
- Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
391
- }
392
- for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
393
- var map = OS_RESOLVER_MAP[i];
394
- var regexp = map[0];
395
- var os = map[1];
396
- var resolver = map[2];
397
- var matched = Platform.userAgent.match(regexp);
398
- if (matched !== null) {
399
- Platform.os = os;
400
- Platform.osVersion = resolveVersion(matched[1], resolver);
401
- break;
402
- }
403
- }
404
- if (Platform.os === OS.iOS && compareVersion(Platform.osVersion, '18.6') === 0) {
405
- var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
406
- if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
407
- Platform.osVersion = version[1];
408
- }
409
- for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
410
- var map = ENGINE_RESOLVER_MAP[i];
411
- var regexp = map[0];
412
- var engine = map[1];
413
- var resolver = map[2];
414
- var matched = Platform.userAgent.match(regexp);
415
- if (matched !== null) {
416
- Platform.engine = engine;
417
- Platform.engineVersion = resolveVersion(matched[1], resolver);
418
- break;
437
+ if (typeof globalThis.navigator !== 'undefined') {
438
+ if (typeof globalThis.navigator.onLine !== 'undefined')
439
+ network.isOnline = globalThis.navigator.onLine;
440
+ var connection = globalThis.navigator.connection || globalThis.navigator.mozConnection || globalThis.navigator.webkitConnection;
441
+ if (typeof connection !== 'undefined') {
442
+ if (typeof connection.effectiveType !== 'undefined')
443
+ network.effectiveType = connection.effectiveType;
444
+ if (typeof connection.type !== 'undefined')
445
+ network.type = connection.type;
446
+ if (typeof connection.downlink !== 'undefined')
447
+ network.downlink = connection.downlink;
448
+ if (typeof connection.rtt !== 'undefined')
449
+ network.rtt = connection.rtt;
450
+ if (typeof connection.saveData !== 'undefined')
451
+ network.saveData = connection.saveData;
452
+ }
419
453
  }
420
- }
421
- for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
422
- var map = BROWSER_RESOLVER_MAP[i];
423
- var regexp = map[0];
424
- var browser = map[1];
425
- var resolver = map[2];
426
- var matched = Platform.userAgent.match(regexp);
427
- if (matched !== null) {
428
- Platform.browser = browser;
429
- Platform.browserVersion = resolveVersion(matched[1], resolver);
430
- break;
454
+ if (Platform.isNode) {
455
+ try {
456
+ var os = require('os');
457
+ var networkInterfaces = os.networkInterfaces();
458
+ var networkInterfaceNames = Object.keys(networkInterfaces);
459
+ for (var i = 0; i < networkInterfaceNames.length; i++) {
460
+ var name_1 = networkInterfaceNames[i];
461
+ var networkInterface = networkInterfaces[name_1];
462
+ for (var j = 0; j < networkInterface.length; j++) {
463
+ var address = networkInterface[j];
464
+ if (!address.internal && address.family === 'IPv4')
465
+ network.isOnline = true;
466
+ }
467
+ if (network.isOnline)
468
+ break;
469
+ }
470
+ }
471
+ catch (_) {
472
+ }
473
+ try {
474
+ var childProcess = require('child_process');
475
+ if (Platform.os.name === OS.Windows) {
476
+ try {
477
+ var output = childProcess.execSync('netsh wlan show interfaces', { encoding: 'utf8', timeout: 5000 });
478
+ if (output.includes('State') && output.includes('connected'))
479
+ network.type = 'wifi';
480
+ }
481
+ catch (_) {
482
+ }
483
+ if (network.type === null) {
484
+ try {
485
+ var output = childProcess.execSync('ipconfig', { encoding: 'utf8', timeout: 5000 });
486
+ if (output.includes('Ethernet adapter'))
487
+ network.type = 'ethernet';
488
+ }
489
+ catch (_) {
490
+ }
491
+ }
492
+ if (network.type === null)
493
+ network.type = 'other';
494
+ }
495
+ else if (Platform.os.name === OS.MacOS) {
496
+ try {
497
+ var output = childProcess.execSync('networksetup -listallhardwareports', { encoding: 'utf8', timeout: 5000 });
498
+ var activeInterface = childProcess.execSync('route -n get default | grep interface', { encoding: 'utf8', timeout: 5000 });
499
+ if (activeInterface.includes('en0') && output.includes('Wi-Fi'))
500
+ network.type = 'wifi';
501
+ else if (activeInterface.includes('en') || output.includes('Ethernet'))
502
+ network.type = 'ethernet';
503
+ else
504
+ network.type = 'other';
505
+ }
506
+ catch (_) {
507
+ network.type = 'other';
508
+ }
509
+ }
510
+ }
511
+ catch (_) {
512
+ }
431
513
  }
432
- }
433
- if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
434
- try {
435
- var reactNative = require('react-native');
436
- var platform = reactNative.Platform;
437
- var os = platform.OS;
438
- var release = '' + platform.Version;
439
- var version = getSemanticVersion(release);
440
- switch (os) {
441
- case 'android':
442
- Platform.os = OS.Android;
443
- Platform.osVersion = resolveSemanticAndroidVersion(version, release);
444
- break;
445
- case 'ios':
446
- Platform.os = OS.iOS;
447
- Platform.osVersion = release;
448
- break;
449
- case 'windows':
450
- Platform.os = OS.Windows;
451
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
452
- break;
453
- case 'macos':
454
- Platform.os = OS.MacOS;
455
- Platform.osVersion = release;
456
- break;
514
+ return network;
515
+ }
516
+ function canUseHighEntropyValues(navigator) {
517
+ return typeof globalThis.navigator !== 'undefined' && typeof navigator.userAgentData !== 'undefined' && typeof navigator.userAgentData.getHighEntropyValues !== 'undefined';
518
+ }
519
+ function init() {
520
+ if ((typeof globalThis.process !== 'undefined' && typeof globalThis.process.versions !== 'undefined' && globalThis.process.versions.electron !== undefined) || (/ electron\//i.test(USER_AGENT)))
521
+ Platform.crossPlatformFramework = CrossPlatformFramework.Electron;
522
+ if (typeof globalThis.navigator !== 'undefined' && globalThis.navigator.product === 'ReactNative')
523
+ Platform.crossPlatformFramework = CrossPlatformFramework.ReactNative;
524
+ for (var i = 0; i < OS_RESOLVER_MAP.length; i++) {
525
+ var map = OS_RESOLVER_MAP[i];
526
+ var regexp = map[0];
527
+ var os = map[1];
528
+ var resolver = map[2];
529
+ var matched = Platform.userAgent.match(regexp);
530
+ if (matched !== null) {
531
+ Platform.os = {
532
+ name: os,
533
+ version: resolveVersion(matched[1], resolver),
534
+ };
535
+ break;
457
536
  }
458
537
  }
459
- catch (_) {
538
+ if (Platform.os.name === OS.iOS && compareVersion(Platform.os.version, '18.6') === 0) {
539
+ var version = /\) Version\/([\d.]+)/.exec(Platform.userAgent);
540
+ if (version !== null && parseInt(version[1].substring(0, 2), 10) >= 26)
541
+ Platform.os.version = version[1];
460
542
  }
461
- }
462
- if (Platform.isNode) {
463
- try {
464
- var os = require('os');
465
- var platform = os.platform();
466
- var release = os.release();
467
- var version = getSemanticVersion(release);
468
- switch (platform) {
469
- case 'win32':
470
- Platform.os = OS.Windows;
471
- Platform.osVersion = resolveSemanticWindowsVersion(version, release);
472
- break;
473
- case 'darwin':
474
- Platform.os = OS.MacOS;
475
- Platform.osVersion = resolveSemanticDarwinVersion(version, release);
476
- break;
477
- case 'android':
478
- Platform.os = OS.Android;
479
- Platform.osVersion = release;
480
- break;
481
- case 'linux':
482
- if (/android/i.test(release)) {
483
- Platform.os = OS.Android;
484
- Platform.osVersion = release;
485
- }
486
- break;
543
+ for (var i = 0; i < ENGINE_RESOLVER_MAP.length; i++) {
544
+ var map = ENGINE_RESOLVER_MAP[i];
545
+ var regexp = map[0];
546
+ var engine = map[1];
547
+ var resolver = map[2];
548
+ var matched = Platform.userAgent.match(regexp);
549
+ if (matched !== null) {
550
+ Platform.engine = {
551
+ name: engine,
552
+ version: resolveVersion(matched[1], resolver),
553
+ };
554
+ break;
487
555
  }
488
556
  }
489
- catch (_) {
557
+ for (var i = 0; i < BROWSER_RESOLVER_MAP.length; i++) {
558
+ var map = BROWSER_RESOLVER_MAP[i];
559
+ var regexp = map[0];
560
+ var browser = map[1];
561
+ var resolver = map[2];
562
+ var matched = Platform.userAgent.match(regexp);
563
+ if (matched !== null) {
564
+ Platform.browser = {
565
+ name: browser,
566
+ version: resolveVersion(matched[1], resolver),
567
+ };
568
+ break;
569
+ }
490
570
  }
491
- }
492
- if (typeof globalThis.document !== 'undefined') {
493
- globalThis.document.addEventListener("deviceready", function () {
494
- Platform.crossPlatformFramework = CrossPlatformFramework.Cordova;
495
- if (Platform.os === OS.Unknown && typeof globalThis.device !== 'undefined') {
496
- switch (globalThis.device.platform) {
497
- case 'Android':
498
- Platform.os = OS.Android;
571
+ if (Platform.crossPlatformFramework === CrossPlatformFramework.ReactNative) {
572
+ try {
573
+ var reactNative = require('react-native');
574
+ var platform = reactNative.Platform;
575
+ var os = platform.OS;
576
+ var release = '' + platform.Version;
577
+ var version = getSemanticVersion(release);
578
+ switch (os) {
579
+ case 'android':
580
+ Platform.os = {
581
+ name: OS.Android,
582
+ version: resolveSemanticAndroidVersion(version, release),
583
+ };
584
+ break;
585
+ case 'ios':
586
+ Platform.os = {
587
+ name: OS.iOS,
588
+ version: release,
589
+ };
590
+ break;
591
+ case 'windows':
592
+ Platform.os = {
593
+ name: OS.Windows,
594
+ version: resolveSemanticWindowsVersion(version, release),
595
+ };
499
596
  break;
500
- case 'iOS':
501
- Platform.os = OS.iOS;
597
+ case 'macos':
598
+ Platform.os = {
599
+ name: OS.MacOS,
600
+ version: release,
601
+ };
502
602
  break;
503
603
  }
504
- Platform.osVersion = globalThis.device.version;
505
604
  }
506
- }, false);
507
- }
508
- if (navigator.userAgentData !== undefined && navigator.userAgentData.getHighEntropyValues !== undefined) {
509
- navigator
510
- .userAgentData
511
- .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
512
- .then(function (result) {
513
- var brands = result.fullVersionList || result.brands || [];
514
- var platformVersion = result.platformVersion;
515
- for (var i = 0; i < brands.length; i++) {
516
- var brand = normalizeBrand(brands[i]);
517
- var brandName = brand.brand;
518
- var brandVersion = brand.version;
519
- if (/not.a.brand/i.test(brandName))
520
- continue;
521
- if (brandName === "Chromium")
522
- Platform.engineVersion = brandVersion;
605
+ catch (_) {
523
606
  }
524
- if (typeof platformVersion === 'string') {
525
- if (Platform.os === OS.Windows && parseInt(platformVersion.replace(/[^\d.]/g, '').split('.')[0], 10) >= 13)
526
- Platform.osVersion = '11';
527
- else
528
- Platform.osVersion = platformVersion;
607
+ finally {
529
608
  }
530
- });
609
+ }
610
+ if (Platform.isNode) {
611
+ try {
612
+ var os = require('os');
613
+ var platform = os.platform();
614
+ var release = os.release();
615
+ var version = getSemanticVersion(release);
616
+ switch (platform) {
617
+ case 'win32':
618
+ Platform.os = {
619
+ name: OS.Windows,
620
+ version: resolveSemanticWindowsVersion(version, release),
621
+ };
622
+ break;
623
+ case 'darwin':
624
+ Platform.os = {
625
+ name: OS.MacOS,
626
+ version: resolveSemanticDarwinVersion(version, release),
627
+ };
628
+ break;
629
+ case 'android':
630
+ Platform.os = {
631
+ name: OS.Android,
632
+ version: release,
633
+ };
634
+ break;
635
+ case 'linux':
636
+ if (/android/i.test(release)) {
637
+ Platform.os = {
638
+ name: OS.Android,
639
+ version: release,
640
+ };
641
+ }
642
+ break;
643
+ }
644
+ }
645
+ catch (_) {
646
+ }
647
+ finally {
648
+ }
649
+ }
650
+ if (typeof globalThis.document !== 'undefined') {
651
+ if (typeof globalThis.device !== 'undefined') {
652
+ parseOSFromCordova();
653
+ }
654
+ else {
655
+ globalThis.document.addEventListener("deviceready", parseOSFromCordova, false);
656
+ }
657
+ }
658
+ if (canUseHighEntropyValues(globalThis.navigator)) {
659
+ globalThis
660
+ .navigator
661
+ .userAgentData
662
+ .getHighEntropyValues(['brands', 'fullVersionList', 'mobile', 'model', 'platform', 'platformVersion', 'architecture', 'formFactors', 'bitness', 'uaFullVersion', 'wow64'])
663
+ .then(function (result) {
664
+ var brands = result.fullVersionList || result.brands || [];
665
+ var platformVersion = result.platformVersion;
666
+ var platform = result.platform;
667
+ var browserName = Platform.browser.name;
668
+ var prevBrandName = null;
669
+ for (var i = 0; i < brands.length; i++) {
670
+ var brand = normalizeBrand(brands[i]);
671
+ var brandVersion = brand.version;
672
+ var brandName = brand.brand;
673
+ if (/not.a.brand/i.test(brandName))
674
+ continue;
675
+ if (prevBrandName === null || (/Chrom/.test(prevBrandName) && brandName !== 'Chromium') || (prevBrandName === 'Edge' && /WebView2/.test(brandName))) {
676
+ brandName = HIGH_ENTROPY_BRAND_NAME_MAP[brandName] || brandName;
677
+ prevBrandName = browserName;
678
+ if (prevBrandName === null || /Chrom/.test(prevBrandName) || !/Chrom/.test(brandName)) {
679
+ browserName = brandName;
680
+ if (browserName === 'Chrome' || browserName === 'Chrome WebView' || browserName === 'Chrome Headless')
681
+ Platform.browser.name = Browsers.Chrome;
682
+ else if (browserName === 'Edge' || browserName === 'Edge WebView2')
683
+ Platform.browser.name = Browsers.Edge;
684
+ else if (browserName === 'Opera Mobi')
685
+ Platform.browser.name = Browsers.Opera;
686
+ Platform.browser.version = brandVersion;
687
+ }
688
+ prevBrandName = brandName;
689
+ }
690
+ if (brandName === 'Chromium')
691
+ Platform.engine.version = brandVersion;
692
+ }
693
+ if (typeof platformVersion === 'string') {
694
+ if (Platform.os.name === OS.Windows)
695
+ Platform.os.version = parseInt(platformVersion.split('.')[0], 10) >= 13 ? '11' : '10';
696
+ else
697
+ Platform.os.version = platformVersion;
698
+ }
699
+ if (typeof platform === 'string') {
700
+ if (/android/i.test(platform))
701
+ Platform.os.name = OS.Android;
702
+ else if (/ios|iphone|ipad/i.test(platform))
703
+ Platform.os.name = OS.iOS;
704
+ else if (/windows|win32/i.test(platform))
705
+ Platform.os.name = OS.Windows;
706
+ else if (/macos|macintel/i.test(platform))
707
+ Platform.os.name = OS.MacOS;
708
+ }
709
+ if (result.mobile === true)
710
+ Platform.device = Devices.Mobile;
711
+ });
712
+ }
531
713
  }
532
- Platform.device = Platform.os === OS.iOS || Platform.os === OS.Android ? Devices.Mobile : Platform.os === OS.Windows || Platform.os === OS.MacOS ? Devices.Desktop : Devices.Unknown;
533
- Platform.isMobile = Platform.device === Devices.Mobile;
534
- Platform.isDesktop = Platform.device === Devices.Desktop;
535
- Platform.isStandalone = getIsStandalone(Platform.os);
714
+ init();
536
715
 
537
716
  var currentAppearance = null;
538
717
  var appearanceIntervalId = null;
@@ -598,7 +777,7 @@ function getAppearance() {
598
777
  return new Promise(function (resolve) {
599
778
  resolve(getAppearanceFromElectron());
600
779
  });
601
- if (Platform.browser === Browsers.SamsungInternet)
780
+ if (Platform.browser.name === Browsers.SamsungInternet)
602
781
  return getAppearanceFromEngine();
603
782
  return new Promise(function (resolve) {
604
783
  resolve(getAppearanceFromMediaQuery());
@@ -682,7 +861,7 @@ function removeEntry(entry) {
682
861
  if (index !== -1)
683
862
  ENTRIES.splice(index, 1);
684
863
  if (ENTRIES.length === 0) {
685
- if (Platform.browser === Browsers.SamsungInternet)
864
+ if (Platform.browser.name === Browsers.SamsungInternet)
686
865
  stopPolling();
687
866
  else
688
867
  removeListener(entry.capture);
@@ -747,7 +926,7 @@ function onchange(listener, options) {
747
926
  if (index === -1) {
748
927
  ENTRIES.push(entry);
749
928
  if (ENTRIES.length === 1) {
750
- if (Platform.browser === Browsers.SamsungInternet)
929
+ if (Platform.browser.name === Browsers.SamsungInternet)
751
930
  startPolling();
752
931
  else
753
932
  addListener(entry.capture);