@capgo/capacitor-webview-version-checker 8.2.9 → 8.2.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n CheckWebViewOptions,\n LastStatusResult,\n MonitoringStateResult,\n OpenUpdatePageOptions,\n OpenUpdatePageResult,\n ShowUpdatePromptOptions,\n ShowUpdatePromptResult,\n StartMonitoringOptions,\n WebViewVersionState,\n WebViewVersionStatus,\n WebviewVersionCheckerPlugin,\n} from './definitions';\nimport { DEFAULT_VERSION_SHARE_BY_MAJOR, DEFAULT_VERSION_SHARE_DATA_SOURCE } from './generated-version-share';\n\nconst UNKNOWN_REASON =\n 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';\n\nexport class WebviewVersionCheckerWeb extends WebPlugin implements WebviewVersionCheckerPlugin {\n private monitoring = false;\n private checkOnResume = true;\n private autoPromptOnOutdated = false;\n private lastStatus: WebViewVersionStatus | null = null;\n\n async check(options: CheckWebViewOptions = {}): Promise<WebViewVersionStatus> {\n const currentVersion = this.detectCurrentVersion();\n const currentMajorVersion = this.parseMajorVersion(currentVersion);\n const latestVersion = options.latestVersion;\n const latestMajorVersion = this.parseMajorVersion(latestVersion);\n const minimumDeviceSharePercent = this.normalizePercent(options.minimumDeviceSharePercent ?? 3);\n const normalizedInlineVersionShareByMajor = this.normalizeVersionShareByMajor(options.versionShareByMajor);\n const normalizedGeneratedVersionShareByMajor = this.normalizeVersionShareByMajor(DEFAULT_VERSION_SHARE_BY_MAJOR);\n const normalizedVersionShareByMajor = normalizedInlineVersionShareByMajor ?? normalizedGeneratedVersionShareByMajor;\n const versionShareSource = normalizedInlineVersionShareByMajor\n ? 'versionShareByMajor'\n : DEFAULT_VERSION_SHARE_DATA_SOURCE;\n const currentVersionSharePercent = this.resolveCurrentVersionSharePercent(\n currentMajorVersion,\n normalizedVersionShareByMajor,\n );\n let deviceShareError: string | undefined;\n\n let state: WebViewVersionState = 'unknown';\n let reason = UNKNOWN_REASON;\n\n if (typeof minimumDeviceSharePercent === 'number') {\n if (typeof currentVersionSharePercent === 'number') {\n state = currentVersionSharePercent >= minimumDeviceSharePercent ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the configured device-share threshold.'\n : 'Current browser engine major version is below the configured device-share threshold.';\n } else if (!normalizedVersionShareByMajor && options.versionShareApiUrl) {\n deviceShareError =\n 'Web shim does not fetch version-share API data. Provide versionShareByMajor to evaluate minimumDeviceSharePercent.';\n } else if (!normalizedVersionShareByMajor) {\n deviceShareError = 'minimumDeviceSharePercent is set, but no versionShareByMajor dataset was provided.';\n } else {\n deviceShareError = 'No device-share entry was found for the current browser engine major version.';\n }\n }\n\n if (state === 'unknown' && latestVersion && currentVersion) {\n const cmp = this.compareVersions(currentVersion, latestVersion);\n state = cmp >= 0 ? 'latest' : 'outdated';\n reason =\n cmp >= 0\n ? 'Current browser engine is at or above the requested latest version.'\n : 'Current browser engine is below the requested latest version.';\n } else if (\n state === 'unknown' &&\n typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number'\n ) {\n state = currentMajorVersion >= options.minimumMajorVersion ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the minimum requirement.'\n : 'Current browser engine major version is below the minimum requirement.';\n } else if (state === 'unknown' && deviceShareError) {\n reason = deviceShareError;\n }\n\n const status: WebViewVersionStatus = {\n platform: 'web',\n state,\n isLatest: state === 'latest',\n checkedAt: new Date().toISOString(),\n reason,\n currentVersion,\n currentMajorVersion,\n latestVersion,\n latestMajorVersion,\n currentVersionSharePercent,\n minimumDeviceSharePercent,\n versionShareSource: normalizedVersionShareByMajor ? versionShareSource : undefined,\n deviceShareError,\n updateUrl: options.updateUrl,\n source: options.source ?? 'web-shim',\n };\n\n this.lastStatus = status;\n this.notifyListeners('statusChanged', status);\n if (state === 'latest') {\n this.notifyListeners('webViewLatest', status);\n } else if (state === 'outdated') {\n this.notifyListeners('webViewOutdated', status);\n if (options.showPromptOnOutdated || this.autoPromptOnOutdated) {\n await this.showUpdatePrompt({ updateUrl: status.updateUrl });\n }\n }\n\n return status;\n }\n\n async startMonitoring(options: StartMonitoringOptions = {}): Promise<MonitoringStateResult> {\n this.monitoring = true;\n this.checkOnResume = options.checkOnResume ?? true;\n this.autoPromptOnOutdated = options.autoPromptOnOutdated ?? false;\n\n if (options.checkOnStart ?? true) {\n await this.check({ ...options, source: options.source ?? 'startMonitoring' });\n }\n\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n\n async stopMonitoring(): Promise<MonitoringStateResult> {\n this.monitoring = false;\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n\n async getLastStatus(): Promise<LastStatusResult> {\n return {\n status: this.lastStatus,\n };\n }\n\n async showUpdatePrompt(options: ShowUpdatePromptOptions = {}): Promise<ShowUpdatePromptResult> {\n const url = options.updateUrl ?? this.lastStatus?.updateUrl;\n\n if (!url) {\n return {\n shown: false,\n openedUpdatePage: false,\n };\n }\n\n const opened = this.openUrl(url);\n\n return {\n shown: true,\n openedUpdatePage: opened,\n };\n }\n\n async openUpdatePage(options: OpenUpdatePageOptions = {}): Promise<OpenUpdatePageResult> {\n const url = options.updateUrl ?? this.lastStatus?.updateUrl ?? '';\n if (!url) {\n return {\n opened: false,\n url,\n };\n }\n\n return {\n opened: this.openUrl(url),\n url,\n };\n }\n\n private detectCurrentVersion(): string {\n const chromiumMatch = navigator.userAgent.match(/Chrome\\/([\\d.]+)/i);\n if (chromiumMatch?.[1]) {\n return chromiumMatch[1];\n }\n\n const appleWebKitMatch = navigator.userAgent.match(/AppleWebKit\\/([\\d.]+)/i);\n if (appleWebKitMatch?.[1]) {\n return appleWebKitMatch[1];\n }\n\n return navigator.userAgent;\n }\n\n private openUrl(url: string): boolean {\n try {\n window.open(url, '_blank', 'noopener,noreferrer');\n return true;\n } catch {\n return false;\n }\n }\n\n private parseMajorVersion(version?: string): number | undefined {\n if (!version) {\n return undefined;\n }\n\n const match = version.match(/(\\d+)/);\n if (!match) {\n return undefined;\n }\n\n const major = Number.parseInt(match[1], 10);\n return Number.isFinite(major) ? major : undefined;\n }\n\n private compareVersions(left: string, right: string): number {\n const leftParts = left\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const rightParts = right\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n\n for (let i = 0; i < maxLength; i += 1) {\n const a = leftParts[i] ?? 0;\n const b = rightParts[i] ?? 0;\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n }\n\n return 0;\n }\n\n private normalizePercent(value?: number): number | undefined {\n if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {\n return undefined;\n }\n return Math.min(100, Math.max(0, value));\n }\n\n private normalizeVersionShareByMajor(shareByMajor?: Record<string, number>): Record<number, number> | undefined {\n if (!shareByMajor) {\n return undefined;\n }\n\n const normalized: Record<number, number> = {};\n for (const [rawKey, rawShare] of Object.entries(shareByMajor)) {\n const major = this.parseMajorVersion(rawKey);\n const share = this.normalizePercent(rawShare);\n if (typeof major === 'number' && typeof share === 'number') {\n normalized[major] = share;\n }\n }\n\n return Object.keys(normalized).length > 0 ? normalized : undefined;\n }\n\n private resolveCurrentVersionSharePercent(\n currentMajorVersion: number | undefined,\n normalizedShareByMajor: Record<number, number> | undefined,\n ): number | undefined {\n if (typeof currentMajorVersion !== 'number' || !normalizedShareByMajor) {\n return undefined;\n }\n\n return normalizedShareByMajor[currentMajorVersion];\n }\n}\n"]}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n CheckWebViewOptions,\n LastStatusResult,\n MonitoringStateResult,\n OpenUpdatePageOptions,\n OpenUpdatePageResult,\n ShowUpdatePromptOptions,\n ShowUpdatePromptResult,\n StartMonitoringOptions,\n WebViewVersionState,\n WebViewVersionStatus,\n WebviewVersionCheckerPlugin,\n} from './definitions';\nimport { DEFAULT_VERSION_SHARE_BY_MAJOR, DEFAULT_VERSION_SHARE_DATA_SOURCE } from './generated-version-share';\n\nconst UNKNOWN_REASON =\n 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';\n\nexport class WebviewVersionCheckerWeb extends WebPlugin implements WebviewVersionCheckerPlugin {\n private monitoring = false;\n private checkOnResume = true;\n private autoPromptOnOutdated = false;\n private lastStatus: WebViewVersionStatus | null = null;\n\n async check(options: CheckWebViewOptions = {}): Promise<WebViewVersionStatus> {\n const currentVersion = this.detectCurrentVersion();\n const currentMajorVersion = this.parseMajorVersion(currentVersion);\n const latestVersion = options.latestVersion;\n const latestMajorVersion = this.parseMajorVersion(latestVersion);\n const minimumDeviceSharePercent = this.normalizePercent(options.minimumDeviceSharePercent ?? 3);\n const normalizedInlineVersionShareByMajor = this.normalizeVersionShareByMajor(options.versionShareByMajor);\n const normalizedGeneratedVersionShareByMajor = this.normalizeVersionShareByMajor(DEFAULT_VERSION_SHARE_BY_MAJOR);\n const normalizedVersionShareByMajor = normalizedInlineVersionShareByMajor ?? normalizedGeneratedVersionShareByMajor;\n const versionShareSource = normalizedInlineVersionShareByMajor\n ? 'versionShareByMajor'\n : DEFAULT_VERSION_SHARE_DATA_SOURCE;\n const currentVersionSharePercent = this.resolveCurrentVersionSharePercent(\n currentMajorVersion,\n normalizedVersionShareByMajor,\n );\n let deviceShareError: string | undefined;\n\n let state: WebViewVersionState = 'unknown';\n let reason = UNKNOWN_REASON;\n\n if (typeof minimumDeviceSharePercent === 'number') {\n if (typeof currentVersionSharePercent === 'number') {\n state = currentVersionSharePercent >= minimumDeviceSharePercent ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the configured device-share threshold.'\n : 'Current browser engine major version is below the configured device-share threshold.';\n } else if (!normalizedVersionShareByMajor && options.versionShareApiUrl) {\n deviceShareError =\n 'Web shim does not fetch version-share API data. Provide versionShareByMajor to evaluate minimumDeviceSharePercent.';\n } else if (!normalizedVersionShareByMajor) {\n deviceShareError = 'minimumDeviceSharePercent is set, but no versionShareByMajor dataset was provided.';\n } else {\n deviceShareError = 'No device-share entry was found for the current browser engine major version.';\n }\n }\n\n if (state === 'unknown' && latestVersion && currentVersion) {\n const cmp = this.compareVersions(currentVersion, latestVersion);\n state = cmp >= 0 ? 'latest' : 'outdated';\n reason =\n cmp >= 0\n ? 'Current browser engine is at or above the requested latest version.'\n : 'Current browser engine is below the requested latest version.';\n } else if (\n state === 'unknown' &&\n typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number'\n ) {\n state = currentMajorVersion >= options.minimumMajorVersion ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the minimum requirement.'\n : 'Current browser engine major version is below the minimum requirement.';\n } else if (state === 'unknown' && deviceShareError) {\n reason = deviceShareError;\n }\n\n if (\n typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number' &&\n currentMajorVersion < options.minimumMajorVersion\n ) {\n state = 'outdated';\n reason = 'Current browser engine major version is below the minimum requirement.';\n }\n\n const status: WebViewVersionStatus = {\n platform: 'web',\n state,\n isLatest: state === 'latest',\n checkedAt: new Date().toISOString(),\n reason,\n currentVersion,\n currentMajorVersion,\n latestVersion,\n latestMajorVersion,\n currentVersionSharePercent,\n minimumDeviceSharePercent,\n versionShareSource: normalizedVersionShareByMajor ? versionShareSource : undefined,\n deviceShareError,\n updateUrl: options.updateUrl,\n source: options.source ?? 'web-shim',\n };\n\n this.lastStatus = status;\n this.notifyListeners('statusChanged', status);\n if (state === 'latest') {\n this.notifyListeners('webViewLatest', status);\n } else if (state === 'outdated') {\n this.notifyListeners('webViewOutdated', status);\n if (options.showPromptOnOutdated || this.autoPromptOnOutdated) {\n await this.showUpdatePrompt({ updateUrl: status.updateUrl });\n }\n }\n\n return status;\n }\n\n async startMonitoring(options: StartMonitoringOptions = {}): Promise<MonitoringStateResult> {\n this.monitoring = true;\n this.checkOnResume = options.checkOnResume ?? true;\n this.autoPromptOnOutdated = options.autoPromptOnOutdated ?? false;\n\n if (options.checkOnStart ?? true) {\n await this.check({ ...options, source: options.source ?? 'startMonitoring' });\n }\n\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n\n async stopMonitoring(): Promise<MonitoringStateResult> {\n this.monitoring = false;\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n\n async getLastStatus(): Promise<LastStatusResult> {\n return {\n status: this.lastStatus,\n };\n }\n\n async showUpdatePrompt(options: ShowUpdatePromptOptions = {}): Promise<ShowUpdatePromptResult> {\n const url = options.updateUrl ?? this.lastStatus?.updateUrl;\n\n if (!url) {\n return {\n shown: false,\n openedUpdatePage: false,\n };\n }\n\n const opened = this.openUrl(url);\n\n return {\n shown: true,\n openedUpdatePage: opened,\n };\n }\n\n async openUpdatePage(options: OpenUpdatePageOptions = {}): Promise<OpenUpdatePageResult> {\n const url = options.updateUrl ?? this.lastStatus?.updateUrl ?? '';\n if (!url) {\n return {\n opened: false,\n url,\n };\n }\n\n return {\n opened: this.openUrl(url),\n url,\n };\n }\n\n private detectCurrentVersion(): string {\n const chromiumMatch = navigator.userAgent.match(/Chrome\\/([\\d.]+)/i);\n if (chromiumMatch?.[1]) {\n return chromiumMatch[1];\n }\n\n const appleWebKitMatch = navigator.userAgent.match(/AppleWebKit\\/([\\d.]+)/i);\n if (appleWebKitMatch?.[1]) {\n return appleWebKitMatch[1];\n }\n\n return navigator.userAgent;\n }\n\n private openUrl(url: string): boolean {\n try {\n window.open(url, '_blank', 'noopener,noreferrer');\n return true;\n } catch {\n return false;\n }\n }\n\n private parseMajorVersion(version?: string): number | undefined {\n if (!version) {\n return undefined;\n }\n\n const match = version.match(/(\\d+)/);\n if (!match) {\n return undefined;\n }\n\n const major = Number.parseInt(match[1], 10);\n return Number.isFinite(major) ? major : undefined;\n }\n\n private compareVersions(left: string, right: string): number {\n const leftParts = left\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const rightParts = right\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n\n for (let i = 0; i < maxLength; i += 1) {\n const a = leftParts[i] ?? 0;\n const b = rightParts[i] ?? 0;\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n }\n\n return 0;\n }\n\n private normalizePercent(value?: number): number | undefined {\n if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {\n return undefined;\n }\n return Math.min(100, Math.max(0, value));\n }\n\n private normalizeVersionShareByMajor(shareByMajor?: Record<string, number>): Record<number, number> | undefined {\n if (!shareByMajor) {\n return undefined;\n }\n\n const normalized: Record<number, number> = {};\n for (const [rawKey, rawShare] of Object.entries(shareByMajor)) {\n const major = this.parseMajorVersion(rawKey);\n const share = this.normalizePercent(rawShare);\n if (typeof major === 'number' && typeof share === 'number') {\n normalized[major] = share;\n }\n }\n\n return Object.keys(normalized).length > 0 ? normalized : undefined;\n }\n\n private resolveCurrentVersionSharePercent(\n currentMajorVersion: number | undefined,\n normalizedShareByMajor: Record<number, number> | undefined,\n ): number | undefined {\n if (typeof currentMajorVersion !== 'number' || !normalizedShareByMajor) {\n return undefined;\n }\n\n return normalizedShareByMajor[currentMajorVersion];\n }\n}\n"]}
@@ -11,96 +11,94 @@ const WebviewVersionChecker = core.registerPlugin('WebviewVersionChecker', {
11
11
  * AUTO-GENERATED FILE. DO NOT EDIT.
12
12
  * Generated by: scripts/generate-version-share-data.mjs
13
13
  * Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json
14
- * Generated at: 2026-07-11T09:48:57.348Z
14
+ * Generated at: 2026-08-20T10:59:38.950Z
15
15
  */
16
16
  const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
17
17
  const DEFAULT_VERSION_SHARE_BY_MAJOR = {
18
- "4": 0.000057,
19
- "39": 0.084942,
20
- "40": 0.084942,
21
- "41": 0.084942,
22
- "42": 0.084942,
23
- "43": 0.084942,
24
- "44": 0.084942,
25
- "45": 0.084942,
26
- "46": 0.084942,
27
- "47": 0.084942,
28
- "48": 0.084942,
29
- "49": 0.089661,
30
- "50": 0.084942,
31
- "51": 0.084942,
32
- "52": 0.084942,
33
- "53": 0.084942,
34
- "54": 0.084942,
35
- "55": 0.084942,
36
- "56": 0.084942,
37
- "57": 0.084942,
38
- "58": 0.084942,
39
- "59": 0.084942,
40
- "60": 0.084942,
41
- "66": 0.004719,
42
- "69": 0.009438,
43
- "70": 0.042471,
44
- "79": 0.028314,
45
- "86": 0.004719,
46
- "87": 0.018876,
47
- "91": 0.009438,
48
- "92": 0.009438,
49
- "93": 0.014157,
50
- "97": 0.004719,
51
- "98": 0.023595,
52
- "99": 0.014157,
53
- "100": 0.004719,
54
- "101": 0.009438,
55
- "102": 0.009438,
56
- "103": 0.202917,
57
- "104": 0.155727,
58
- "105": 0.132132,
59
- "106": 0.132132,
60
- "107": 0.132132,
61
- "108": 0.136851,
62
- "109": 0.632346,
63
- "110": 0.132132,
64
- "111": 0.165165,
65
- "112": 0.132132,
66
- "114": 0.023595,
67
- "115": 0.014157,
68
- "116": 0.302016,
69
- "117": 0.160446,
70
- "118": 1.00515,
71
- "119": 0.278421,
72
- "120": 0.453024,
73
- "121": 0.014157,
74
- "122": 0.037752,
75
- "123": 0.018876,
76
- "124": 0.198198,
77
- "125": 0.405834,
78
- "126": 0.051909,
79
- "127": 0.033033,
80
- "128": 0.070785,
81
- "129": 0.033033,
82
- "130": 0.061347,
83
- "131": 0.353925,
84
- "132": 0.075504,
85
- "133": 0.311454,
86
- "134": 0.061347,
87
- "135": 0.042471,
88
- "136": 0.037752,
89
- "137": 0.075504,
90
- "138": 0.146289,
91
- "139": 0.179322,
92
- "140": 0.04719,
93
- "141": 0.04719,
94
- "142": 0.462462,
95
- "143": 0.09438,
96
- "144": 0.278421,
97
- "145": 0.42471,
98
- "146": 0.495495,
99
- "147": 0.4719,
100
- "148": 5.50235,
101
- "149": 44.7497,
102
- "150": 0.042471,
103
- "151": 0.009438
18
+ "4": 0.000003,
19
+ "39": 0.02296,
20
+ "40": 0.02296,
21
+ "41": 0.02296,
22
+ "42": 0.02296,
23
+ "43": 0.02296,
24
+ "44": 0.02296,
25
+ "45": 0.02296,
26
+ "46": 0.02296,
27
+ "47": 0.02296,
28
+ "48": 0.027552,
29
+ "49": 0.027552,
30
+ "50": 0.02296,
31
+ "51": 0.02296,
32
+ "52": 0.027552,
33
+ "53": 0.02296,
34
+ "54": 0.02296,
35
+ "55": 0.02296,
36
+ "56": 0.02296,
37
+ "57": 0.02296,
38
+ "58": 0.02296,
39
+ "59": 0.02296,
40
+ "60": 0.02296,
41
+ "69": 0.009184,
42
+ "70": 0.06888,
43
+ "79": 0.018368,
44
+ "86": 0.004592,
45
+ "87": 0.02296,
46
+ "91": 0.009184,
47
+ "93": 0.009184,
48
+ "97": 0.004592,
49
+ "98": 0.02296,
50
+ "99": 0.004592,
51
+ "101": 0.009184,
52
+ "102": 0.009184,
53
+ "103": 0.146944,
54
+ "104": 0.087248,
55
+ "105": 0.087248,
56
+ "106": 0.09184,
57
+ "107": 0.09184,
58
+ "108": 0.096432,
59
+ "109": 0.583184,
60
+ "110": 0.09184,
61
+ "111": 0.101024,
62
+ "112": 0.09184,
63
+ "114": 0.018368,
64
+ "115": 0.009184,
65
+ "116": 0.20664,
66
+ "117": 0.09184,
67
+ "118": 0.211232,
68
+ "119": 0.36736,
69
+ "120": 0.509712,
70
+ "121": 0.013776,
71
+ "122": 0.036736,
72
+ "123": 0.018368,
73
+ "124": 0.174496,
74
+ "125": 0.087248,
75
+ "126": 0.036736,
76
+ "127": 0.013776,
77
+ "128": 0.064288,
78
+ "129": 0.013776,
79
+ "130": 0.027552,
80
+ "131": 0.270928,
81
+ "132": 0.073472,
82
+ "133": 0.211232,
83
+ "134": 0.04592,
84
+ "135": 0.036736,
85
+ "136": 0.247968,
86
+ "137": 0.073472,
87
+ "138": 0.123984,
88
+ "139": 0.188272,
89
+ "140": 0.036736,
90
+ "141": 0.04592,
91
+ "142": 0.257152,
92
+ "143": 0.073472,
93
+ "144": 0.101024,
94
+ "145": 0.904624,
95
+ "146": 0.110208,
96
+ "147": 0.220416,
97
+ "148": 0.716352,
98
+ "149": 5.04202,
99
+ "150": 9.15645,
100
+ "151": 46.3251,
101
+ "152": 0.009184
104
102
  };
105
103
 
106
104
  const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
@@ -168,6 +166,12 @@ class WebviewVersionCheckerWeb extends core.WebPlugin {
168
166
  else if (state === 'unknown' && deviceShareError) {
169
167
  reason = deviceShareError;
170
168
  }
169
+ if (typeof options.minimumMajorVersion === 'number' &&
170
+ typeof currentMajorVersion === 'number' &&
171
+ currentMajorVersion < options.minimumMajorVersion) {
172
+ state = 'outdated';
173
+ reason = 'Current browser engine major version is below the minimum requirement.';
174
+ }
171
175
  const status = {
172
176
  platform: 'web',
173
177
  state,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/generated-version-share.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst WebviewVersionChecker = registerPlugin('WebviewVersionChecker', {\n web: () => import('./web').then((m) => new m.WebviewVersionCheckerWeb()),\n});\nexport * from './definitions';\nexport { WebviewVersionChecker };\n//# sourceMappingURL=index.js.map","/* eslint-disable */\n/**\n * AUTO-GENERATED FILE. DO NOT EDIT.\n * Generated by: scripts/generate-version-share-data.mjs\n * Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json\n * Generated at: 2026-07-11T09:48:57.348Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-07-11T09:48:57.348Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000057,\n \"39\": 0.084942,\n \"40\": 0.084942,\n \"41\": 0.084942,\n \"42\": 0.084942,\n \"43\": 0.084942,\n \"44\": 0.084942,\n \"45\": 0.084942,\n \"46\": 0.084942,\n \"47\": 0.084942,\n \"48\": 0.084942,\n \"49\": 0.089661,\n \"50\": 0.084942,\n \"51\": 0.084942,\n \"52\": 0.084942,\n \"53\": 0.084942,\n \"54\": 0.084942,\n \"55\": 0.084942,\n \"56\": 0.084942,\n \"57\": 0.084942,\n \"58\": 0.084942,\n \"59\": 0.084942,\n \"60\": 0.084942,\n \"66\": 0.004719,\n \"69\": 0.009438,\n \"70\": 0.042471,\n \"79\": 0.028314,\n \"86\": 0.004719,\n \"87\": 0.018876,\n \"91\": 0.009438,\n \"92\": 0.009438,\n \"93\": 0.014157,\n \"97\": 0.004719,\n \"98\": 0.023595,\n \"99\": 0.014157,\n \"100\": 0.004719,\n \"101\": 0.009438,\n \"102\": 0.009438,\n \"103\": 0.202917,\n \"104\": 0.155727,\n \"105\": 0.132132,\n \"106\": 0.132132,\n \"107\": 0.132132,\n \"108\": 0.136851,\n \"109\": 0.632346,\n \"110\": 0.132132,\n \"111\": 0.165165,\n \"112\": 0.132132,\n \"114\": 0.023595,\n \"115\": 0.014157,\n \"116\": 0.302016,\n \"117\": 0.160446,\n \"118\": 1.00515,\n \"119\": 0.278421,\n \"120\": 0.453024,\n \"121\": 0.014157,\n \"122\": 0.037752,\n \"123\": 0.018876,\n \"124\": 0.198198,\n \"125\": 0.405834,\n \"126\": 0.051909,\n \"127\": 0.033033,\n \"128\": 0.070785,\n \"129\": 0.033033,\n \"130\": 0.061347,\n \"131\": 0.353925,\n \"132\": 0.075504,\n \"133\": 0.311454,\n \"134\": 0.061347,\n \"135\": 0.042471,\n \"136\": 0.037752,\n \"137\": 0.075504,\n \"138\": 0.146289,\n \"139\": 0.179322,\n \"140\": 0.04719,\n \"141\": 0.04719,\n \"142\": 0.462462,\n \"143\": 0.09438,\n \"144\": 0.278421,\n \"145\": 0.42471,\n \"146\": 0.495495,\n \"147\": 0.4719,\n \"148\": 5.50235,\n \"149\": 44.7497,\n \"150\": 0.042471,\n \"151\": 0.009438\n};\n//# sourceMappingURL=generated-version-share.js.map","import { WebPlugin } from '@capacitor/core';\nimport { DEFAULT_VERSION_SHARE_BY_MAJOR, DEFAULT_VERSION_SHARE_DATA_SOURCE } from './generated-version-share';\nconst UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';\nexport class WebviewVersionCheckerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.monitoring = false;\n this.checkOnResume = true;\n this.autoPromptOnOutdated = false;\n this.lastStatus = null;\n }\n async check(options = {}) {\n var _a, _b;\n const currentVersion = this.detectCurrentVersion();\n const currentMajorVersion = this.parseMajorVersion(currentVersion);\n const latestVersion = options.latestVersion;\n const latestMajorVersion = this.parseMajorVersion(latestVersion);\n const minimumDeviceSharePercent = this.normalizePercent((_a = options.minimumDeviceSharePercent) !== null && _a !== void 0 ? _a : 3);\n const normalizedInlineVersionShareByMajor = this.normalizeVersionShareByMajor(options.versionShareByMajor);\n const normalizedGeneratedVersionShareByMajor = this.normalizeVersionShareByMajor(DEFAULT_VERSION_SHARE_BY_MAJOR);\n const normalizedVersionShareByMajor = normalizedInlineVersionShareByMajor !== null && normalizedInlineVersionShareByMajor !== void 0 ? normalizedInlineVersionShareByMajor : normalizedGeneratedVersionShareByMajor;\n const versionShareSource = normalizedInlineVersionShareByMajor\n ? 'versionShareByMajor'\n : DEFAULT_VERSION_SHARE_DATA_SOURCE;\n const currentVersionSharePercent = this.resolveCurrentVersionSharePercent(currentMajorVersion, normalizedVersionShareByMajor);\n let deviceShareError;\n let state = 'unknown';\n let reason = UNKNOWN_REASON;\n if (typeof minimumDeviceSharePercent === 'number') {\n if (typeof currentVersionSharePercent === 'number') {\n state = currentVersionSharePercent >= minimumDeviceSharePercent ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the configured device-share threshold.'\n : 'Current browser engine major version is below the configured device-share threshold.';\n }\n else if (!normalizedVersionShareByMajor && options.versionShareApiUrl) {\n deviceShareError =\n 'Web shim does not fetch version-share API data. Provide versionShareByMajor to evaluate minimumDeviceSharePercent.';\n }\n else if (!normalizedVersionShareByMajor) {\n deviceShareError = 'minimumDeviceSharePercent is set, but no versionShareByMajor dataset was provided.';\n }\n else {\n deviceShareError = 'No device-share entry was found for the current browser engine major version.';\n }\n }\n if (state === 'unknown' && latestVersion && currentVersion) {\n const cmp = this.compareVersions(currentVersion, latestVersion);\n state = cmp >= 0 ? 'latest' : 'outdated';\n reason =\n cmp >= 0\n ? 'Current browser engine is at or above the requested latest version.'\n : 'Current browser engine is below the requested latest version.';\n }\n else if (state === 'unknown' &&\n typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number') {\n state = currentMajorVersion >= options.minimumMajorVersion ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the minimum requirement.'\n : 'Current browser engine major version is below the minimum requirement.';\n }\n else if (state === 'unknown' && deviceShareError) {\n reason = deviceShareError;\n }\n const status = {\n platform: 'web',\n state,\n isLatest: state === 'latest',\n checkedAt: new Date().toISOString(),\n reason,\n currentVersion,\n currentMajorVersion,\n latestVersion,\n latestMajorVersion,\n currentVersionSharePercent,\n minimumDeviceSharePercent,\n versionShareSource: normalizedVersionShareByMajor ? versionShareSource : undefined,\n deviceShareError,\n updateUrl: options.updateUrl,\n source: (_b = options.source) !== null && _b !== void 0 ? _b : 'web-shim',\n };\n this.lastStatus = status;\n this.notifyListeners('statusChanged', status);\n if (state === 'latest') {\n this.notifyListeners('webViewLatest', status);\n }\n else if (state === 'outdated') {\n this.notifyListeners('webViewOutdated', status);\n if (options.showPromptOnOutdated || this.autoPromptOnOutdated) {\n await this.showUpdatePrompt({ updateUrl: status.updateUrl });\n }\n }\n return status;\n }\n async startMonitoring(options = {}) {\n var _a, _b, _c, _d;\n this.monitoring = true;\n this.checkOnResume = (_a = options.checkOnResume) !== null && _a !== void 0 ? _a : true;\n this.autoPromptOnOutdated = (_b = options.autoPromptOnOutdated) !== null && _b !== void 0 ? _b : false;\n if ((_c = options.checkOnStart) !== null && _c !== void 0 ? _c : true) {\n await this.check(Object.assign(Object.assign({}, options), { source: (_d = options.source) !== null && _d !== void 0 ? _d : 'startMonitoring' }));\n }\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n async stopMonitoring() {\n this.monitoring = false;\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n async getLastStatus() {\n return {\n status: this.lastStatus,\n };\n }\n async showUpdatePrompt(options = {}) {\n var _a, _b;\n const url = (_a = options.updateUrl) !== null && _a !== void 0 ? _a : (_b = this.lastStatus) === null || _b === void 0 ? void 0 : _b.updateUrl;\n if (!url) {\n return {\n shown: false,\n openedUpdatePage: false,\n };\n }\n const opened = this.openUrl(url);\n return {\n shown: true,\n openedUpdatePage: opened,\n };\n }\n async openUpdatePage(options = {}) {\n var _a, _b, _c;\n const url = (_c = (_a = options.updateUrl) !== null && _a !== void 0 ? _a : (_b = this.lastStatus) === null || _b === void 0 ? void 0 : _b.updateUrl) !== null && _c !== void 0 ? _c : '';\n if (!url) {\n return {\n opened: false,\n url,\n };\n }\n return {\n opened: this.openUrl(url),\n url,\n };\n }\n detectCurrentVersion() {\n const chromiumMatch = navigator.userAgent.match(/Chrome\\/([\\d.]+)/i);\n if (chromiumMatch === null || chromiumMatch === void 0 ? void 0 : chromiumMatch[1]) {\n return chromiumMatch[1];\n }\n const appleWebKitMatch = navigator.userAgent.match(/AppleWebKit\\/([\\d.]+)/i);\n if (appleWebKitMatch === null || appleWebKitMatch === void 0 ? void 0 : appleWebKitMatch[1]) {\n return appleWebKitMatch[1];\n }\n return navigator.userAgent;\n }\n openUrl(url) {\n try {\n window.open(url, '_blank', 'noopener,noreferrer');\n return true;\n }\n catch (_a) {\n return false;\n }\n }\n parseMajorVersion(version) {\n if (!version) {\n return undefined;\n }\n const match = version.match(/(\\d+)/);\n if (!match) {\n return undefined;\n }\n const major = Number.parseInt(match[1], 10);\n return Number.isFinite(major) ? major : undefined;\n }\n compareVersions(left, right) {\n var _a, _b;\n const leftParts = left\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const rightParts = right\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n for (let i = 0; i < maxLength; i += 1) {\n const a = (_a = leftParts[i]) !== null && _a !== void 0 ? _a : 0;\n const b = (_b = rightParts[i]) !== null && _b !== void 0 ? _b : 0;\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n }\n return 0;\n }\n normalizePercent(value) {\n if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {\n return undefined;\n }\n return Math.min(100, Math.max(0, value));\n }\n normalizeVersionShareByMajor(shareByMajor) {\n if (!shareByMajor) {\n return undefined;\n }\n const normalized = {};\n for (const [rawKey, rawShare] of Object.entries(shareByMajor)) {\n const major = this.parseMajorVersion(rawKey);\n const share = this.normalizePercent(rawShare);\n if (typeof major === 'number' && typeof share === 'number') {\n normalized[major] = share;\n }\n }\n return Object.keys(normalized).length > 0 ? normalized : undefined;\n }\n resolveCurrentVersionSharePercent(currentMajorVersion, normalizedShareByMajor) {\n if (typeof currentMajorVersion !== 'number' || !normalizedShareByMajor) {\n return undefined;\n }\n return normalizedShareByMajor[currentMajorVersion];\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":";;;;AACK,MAAC,qBAAqB,GAAGA,mBAAc,CAAC,uBAAuB,EAAE;AACtE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAC5E,CAAC;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAiC,GAAG,8BAA8B;AAExE,MAAM,8BAA8B,GAAG;AAC9C,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,OAAO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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/generated-version-share.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst WebviewVersionChecker = registerPlugin('WebviewVersionChecker', {\n web: () => import('./web').then((m) => new m.WebviewVersionCheckerWeb()),\n});\nexport * from './definitions';\nexport { WebviewVersionChecker };\n//# sourceMappingURL=index.js.map","/* eslint-disable */\n/**\n * AUTO-GENERATED FILE. DO NOT EDIT.\n * Generated by: scripts/generate-version-share-data.mjs\n * Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json\n * Generated at: 2026-08-20T10:59:38.950Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-08-20T10:59:38.950Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000003,\n \"39\": 0.02296,\n \"40\": 0.02296,\n \"41\": 0.02296,\n \"42\": 0.02296,\n \"43\": 0.02296,\n \"44\": 0.02296,\n \"45\": 0.02296,\n \"46\": 0.02296,\n \"47\": 0.02296,\n \"48\": 0.027552,\n \"49\": 0.027552,\n \"50\": 0.02296,\n \"51\": 0.02296,\n \"52\": 0.027552,\n \"53\": 0.02296,\n \"54\": 0.02296,\n \"55\": 0.02296,\n \"56\": 0.02296,\n \"57\": 0.02296,\n \"58\": 0.02296,\n \"59\": 0.02296,\n \"60\": 0.02296,\n \"69\": 0.009184,\n \"70\": 0.06888,\n \"79\": 0.018368,\n \"86\": 0.004592,\n \"87\": 0.02296,\n \"91\": 0.009184,\n \"93\": 0.009184,\n \"97\": 0.004592,\n \"98\": 0.02296,\n \"99\": 0.004592,\n \"101\": 0.009184,\n \"102\": 0.009184,\n \"103\": 0.146944,\n \"104\": 0.087248,\n \"105\": 0.087248,\n \"106\": 0.09184,\n \"107\": 0.09184,\n \"108\": 0.096432,\n \"109\": 0.583184,\n \"110\": 0.09184,\n \"111\": 0.101024,\n \"112\": 0.09184,\n \"114\": 0.018368,\n \"115\": 0.009184,\n \"116\": 0.20664,\n \"117\": 0.09184,\n \"118\": 0.211232,\n \"119\": 0.36736,\n \"120\": 0.509712,\n \"121\": 0.013776,\n \"122\": 0.036736,\n \"123\": 0.018368,\n \"124\": 0.174496,\n \"125\": 0.087248,\n \"126\": 0.036736,\n \"127\": 0.013776,\n \"128\": 0.064288,\n \"129\": 0.013776,\n \"130\": 0.027552,\n \"131\": 0.270928,\n \"132\": 0.073472,\n \"133\": 0.211232,\n \"134\": 0.04592,\n \"135\": 0.036736,\n \"136\": 0.247968,\n \"137\": 0.073472,\n \"138\": 0.123984,\n \"139\": 0.188272,\n \"140\": 0.036736,\n \"141\": 0.04592,\n \"142\": 0.257152,\n \"143\": 0.073472,\n \"144\": 0.101024,\n \"145\": 0.904624,\n \"146\": 0.110208,\n \"147\": 0.220416,\n \"148\": 0.716352,\n \"149\": 5.04202,\n \"150\": 9.15645,\n \"151\": 46.3251,\n \"152\": 0.009184\n};\n//# sourceMappingURL=generated-version-share.js.map","import { WebPlugin } from '@capacitor/core';\nimport { DEFAULT_VERSION_SHARE_BY_MAJOR, DEFAULT_VERSION_SHARE_DATA_SOURCE } from './generated-version-share';\nconst UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';\nexport class WebviewVersionCheckerWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.monitoring = false;\n this.checkOnResume = true;\n this.autoPromptOnOutdated = false;\n this.lastStatus = null;\n }\n async check(options = {}) {\n var _a, _b;\n const currentVersion = this.detectCurrentVersion();\n const currentMajorVersion = this.parseMajorVersion(currentVersion);\n const latestVersion = options.latestVersion;\n const latestMajorVersion = this.parseMajorVersion(latestVersion);\n const minimumDeviceSharePercent = this.normalizePercent((_a = options.minimumDeviceSharePercent) !== null && _a !== void 0 ? _a : 3);\n const normalizedInlineVersionShareByMajor = this.normalizeVersionShareByMajor(options.versionShareByMajor);\n const normalizedGeneratedVersionShareByMajor = this.normalizeVersionShareByMajor(DEFAULT_VERSION_SHARE_BY_MAJOR);\n const normalizedVersionShareByMajor = normalizedInlineVersionShareByMajor !== null && normalizedInlineVersionShareByMajor !== void 0 ? normalizedInlineVersionShareByMajor : normalizedGeneratedVersionShareByMajor;\n const versionShareSource = normalizedInlineVersionShareByMajor\n ? 'versionShareByMajor'\n : DEFAULT_VERSION_SHARE_DATA_SOURCE;\n const currentVersionSharePercent = this.resolveCurrentVersionSharePercent(currentMajorVersion, normalizedVersionShareByMajor);\n let deviceShareError;\n let state = 'unknown';\n let reason = UNKNOWN_REASON;\n if (typeof minimumDeviceSharePercent === 'number') {\n if (typeof currentVersionSharePercent === 'number') {\n state = currentVersionSharePercent >= minimumDeviceSharePercent ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the configured device-share threshold.'\n : 'Current browser engine major version is below the configured device-share threshold.';\n }\n else if (!normalizedVersionShareByMajor && options.versionShareApiUrl) {\n deviceShareError =\n 'Web shim does not fetch version-share API data. Provide versionShareByMajor to evaluate minimumDeviceSharePercent.';\n }\n else if (!normalizedVersionShareByMajor) {\n deviceShareError = 'minimumDeviceSharePercent is set, but no versionShareByMajor dataset was provided.';\n }\n else {\n deviceShareError = 'No device-share entry was found for the current browser engine major version.';\n }\n }\n if (state === 'unknown' && latestVersion && currentVersion) {\n const cmp = this.compareVersions(currentVersion, latestVersion);\n state = cmp >= 0 ? 'latest' : 'outdated';\n reason =\n cmp >= 0\n ? 'Current browser engine is at or above the requested latest version.'\n : 'Current browser engine is below the requested latest version.';\n }\n else if (state === 'unknown' &&\n typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number') {\n state = currentMajorVersion >= options.minimumMajorVersion ? 'latest' : 'outdated';\n reason =\n state === 'latest'\n ? 'Current browser engine major version meets the minimum requirement.'\n : 'Current browser engine major version is below the minimum requirement.';\n }\n else if (state === 'unknown' && deviceShareError) {\n reason = deviceShareError;\n }\n if (typeof options.minimumMajorVersion === 'number' &&\n typeof currentMajorVersion === 'number' &&\n currentMajorVersion < options.minimumMajorVersion) {\n state = 'outdated';\n reason = 'Current browser engine major version is below the minimum requirement.';\n }\n const status = {\n platform: 'web',\n state,\n isLatest: state === 'latest',\n checkedAt: new Date().toISOString(),\n reason,\n currentVersion,\n currentMajorVersion,\n latestVersion,\n latestMajorVersion,\n currentVersionSharePercent,\n minimumDeviceSharePercent,\n versionShareSource: normalizedVersionShareByMajor ? versionShareSource : undefined,\n deviceShareError,\n updateUrl: options.updateUrl,\n source: (_b = options.source) !== null && _b !== void 0 ? _b : 'web-shim',\n };\n this.lastStatus = status;\n this.notifyListeners('statusChanged', status);\n if (state === 'latest') {\n this.notifyListeners('webViewLatest', status);\n }\n else if (state === 'outdated') {\n this.notifyListeners('webViewOutdated', status);\n if (options.showPromptOnOutdated || this.autoPromptOnOutdated) {\n await this.showUpdatePrompt({ updateUrl: status.updateUrl });\n }\n }\n return status;\n }\n async startMonitoring(options = {}) {\n var _a, _b, _c, _d;\n this.monitoring = true;\n this.checkOnResume = (_a = options.checkOnResume) !== null && _a !== void 0 ? _a : true;\n this.autoPromptOnOutdated = (_b = options.autoPromptOnOutdated) !== null && _b !== void 0 ? _b : false;\n if ((_c = options.checkOnStart) !== null && _c !== void 0 ? _c : true) {\n await this.check(Object.assign(Object.assign({}, options), { source: (_d = options.source) !== null && _d !== void 0 ? _d : 'startMonitoring' }));\n }\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n async stopMonitoring() {\n this.monitoring = false;\n return {\n monitoring: this.monitoring,\n checkOnResume: this.checkOnResume,\n autoPromptOnOutdated: this.autoPromptOnOutdated,\n };\n }\n async getLastStatus() {\n return {\n status: this.lastStatus,\n };\n }\n async showUpdatePrompt(options = {}) {\n var _a, _b;\n const url = (_a = options.updateUrl) !== null && _a !== void 0 ? _a : (_b = this.lastStatus) === null || _b === void 0 ? void 0 : _b.updateUrl;\n if (!url) {\n return {\n shown: false,\n openedUpdatePage: false,\n };\n }\n const opened = this.openUrl(url);\n return {\n shown: true,\n openedUpdatePage: opened,\n };\n }\n async openUpdatePage(options = {}) {\n var _a, _b, _c;\n const url = (_c = (_a = options.updateUrl) !== null && _a !== void 0 ? _a : (_b = this.lastStatus) === null || _b === void 0 ? void 0 : _b.updateUrl) !== null && _c !== void 0 ? _c : '';\n if (!url) {\n return {\n opened: false,\n url,\n };\n }\n return {\n opened: this.openUrl(url),\n url,\n };\n }\n detectCurrentVersion() {\n const chromiumMatch = navigator.userAgent.match(/Chrome\\/([\\d.]+)/i);\n if (chromiumMatch === null || chromiumMatch === void 0 ? void 0 : chromiumMatch[1]) {\n return chromiumMatch[1];\n }\n const appleWebKitMatch = navigator.userAgent.match(/AppleWebKit\\/([\\d.]+)/i);\n if (appleWebKitMatch === null || appleWebKitMatch === void 0 ? void 0 : appleWebKitMatch[1]) {\n return appleWebKitMatch[1];\n }\n return navigator.userAgent;\n }\n openUrl(url) {\n try {\n window.open(url, '_blank', 'noopener,noreferrer');\n return true;\n }\n catch (_a) {\n return false;\n }\n }\n parseMajorVersion(version) {\n if (!version) {\n return undefined;\n }\n const match = version.match(/(\\d+)/);\n if (!match) {\n return undefined;\n }\n const major = Number.parseInt(match[1], 10);\n return Number.isFinite(major) ? major : undefined;\n }\n compareVersions(left, right) {\n var _a, _b;\n const leftParts = left\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const rightParts = right\n .split(/[^0-9]+/)\n .filter(Boolean)\n .map((part) => Number.parseInt(part, 10));\n const maxLength = Math.max(leftParts.length, rightParts.length);\n for (let i = 0; i < maxLength; i += 1) {\n const a = (_a = leftParts[i]) !== null && _a !== void 0 ? _a : 0;\n const b = (_b = rightParts[i]) !== null && _b !== void 0 ? _b : 0;\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n }\n return 0;\n }\n normalizePercent(value) {\n if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {\n return undefined;\n }\n return Math.min(100, Math.max(0, value));\n }\n normalizeVersionShareByMajor(shareByMajor) {\n if (!shareByMajor) {\n return undefined;\n }\n const normalized = {};\n for (const [rawKey, rawShare] of Object.entries(shareByMajor)) {\n const major = this.parseMajorVersion(rawKey);\n const share = this.normalizePercent(rawShare);\n if (typeof major === 'number' && typeof share === 'number') {\n normalized[major] = share;\n }\n }\n return Object.keys(normalized).length > 0 ? normalized : undefined;\n }\n resolveCurrentVersionSharePercent(currentMajorVersion, normalizedShareByMajor) {\n if (typeof currentMajorVersion !== 'number' || !normalizedShareByMajor) {\n return undefined;\n }\n return normalizedShareByMajor[currentMajorVersion];\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":";;;;AACK,MAAC,qBAAqB,GAAGA,mBAAc,CAAC,uBAAuB,EAAE;AACtE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;AAC5E,CAAC;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iCAAiC,GAAG,8BAA8B;AAExE,MAAM,8BAA8B,GAAG;AAC9C,IAAI,GAAG,EAAE,QAAQ;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO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"}
package/dist/plugin.js CHANGED
@@ -10,96 +10,94 @@ var capacitorWebviewVersionChecker = (function (exports, core) {
10
10
  * AUTO-GENERATED FILE. DO NOT EDIT.
11
11
  * Generated by: scripts/generate-version-share-data.mjs
12
12
  * Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json
13
- * Generated at: 2026-07-11T09:48:57.348Z
13
+ * Generated at: 2026-08-20T10:59:38.950Z
14
14
  */
15
15
  const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
16
16
  const DEFAULT_VERSION_SHARE_BY_MAJOR = {
17
- "4": 0.000057,
18
- "39": 0.084942,
19
- "40": 0.084942,
20
- "41": 0.084942,
21
- "42": 0.084942,
22
- "43": 0.084942,
23
- "44": 0.084942,
24
- "45": 0.084942,
25
- "46": 0.084942,
26
- "47": 0.084942,
27
- "48": 0.084942,
28
- "49": 0.089661,
29
- "50": 0.084942,
30
- "51": 0.084942,
31
- "52": 0.084942,
32
- "53": 0.084942,
33
- "54": 0.084942,
34
- "55": 0.084942,
35
- "56": 0.084942,
36
- "57": 0.084942,
37
- "58": 0.084942,
38
- "59": 0.084942,
39
- "60": 0.084942,
40
- "66": 0.004719,
41
- "69": 0.009438,
42
- "70": 0.042471,
43
- "79": 0.028314,
44
- "86": 0.004719,
45
- "87": 0.018876,
46
- "91": 0.009438,
47
- "92": 0.009438,
48
- "93": 0.014157,
49
- "97": 0.004719,
50
- "98": 0.023595,
51
- "99": 0.014157,
52
- "100": 0.004719,
53
- "101": 0.009438,
54
- "102": 0.009438,
55
- "103": 0.202917,
56
- "104": 0.155727,
57
- "105": 0.132132,
58
- "106": 0.132132,
59
- "107": 0.132132,
60
- "108": 0.136851,
61
- "109": 0.632346,
62
- "110": 0.132132,
63
- "111": 0.165165,
64
- "112": 0.132132,
65
- "114": 0.023595,
66
- "115": 0.014157,
67
- "116": 0.302016,
68
- "117": 0.160446,
69
- "118": 1.00515,
70
- "119": 0.278421,
71
- "120": 0.453024,
72
- "121": 0.014157,
73
- "122": 0.037752,
74
- "123": 0.018876,
75
- "124": 0.198198,
76
- "125": 0.405834,
77
- "126": 0.051909,
78
- "127": 0.033033,
79
- "128": 0.070785,
80
- "129": 0.033033,
81
- "130": 0.061347,
82
- "131": 0.353925,
83
- "132": 0.075504,
84
- "133": 0.311454,
85
- "134": 0.061347,
86
- "135": 0.042471,
87
- "136": 0.037752,
88
- "137": 0.075504,
89
- "138": 0.146289,
90
- "139": 0.179322,
91
- "140": 0.04719,
92
- "141": 0.04719,
93
- "142": 0.462462,
94
- "143": 0.09438,
95
- "144": 0.278421,
96
- "145": 0.42471,
97
- "146": 0.495495,
98
- "147": 0.4719,
99
- "148": 5.50235,
100
- "149": 44.7497,
101
- "150": 0.042471,
102
- "151": 0.009438
17
+ "4": 0.000003,
18
+ "39": 0.02296,
19
+ "40": 0.02296,
20
+ "41": 0.02296,
21
+ "42": 0.02296,
22
+ "43": 0.02296,
23
+ "44": 0.02296,
24
+ "45": 0.02296,
25
+ "46": 0.02296,
26
+ "47": 0.02296,
27
+ "48": 0.027552,
28
+ "49": 0.027552,
29
+ "50": 0.02296,
30
+ "51": 0.02296,
31
+ "52": 0.027552,
32
+ "53": 0.02296,
33
+ "54": 0.02296,
34
+ "55": 0.02296,
35
+ "56": 0.02296,
36
+ "57": 0.02296,
37
+ "58": 0.02296,
38
+ "59": 0.02296,
39
+ "60": 0.02296,
40
+ "69": 0.009184,
41
+ "70": 0.06888,
42
+ "79": 0.018368,
43
+ "86": 0.004592,
44
+ "87": 0.02296,
45
+ "91": 0.009184,
46
+ "93": 0.009184,
47
+ "97": 0.004592,
48
+ "98": 0.02296,
49
+ "99": 0.004592,
50
+ "101": 0.009184,
51
+ "102": 0.009184,
52
+ "103": 0.146944,
53
+ "104": 0.087248,
54
+ "105": 0.087248,
55
+ "106": 0.09184,
56
+ "107": 0.09184,
57
+ "108": 0.096432,
58
+ "109": 0.583184,
59
+ "110": 0.09184,
60
+ "111": 0.101024,
61
+ "112": 0.09184,
62
+ "114": 0.018368,
63
+ "115": 0.009184,
64
+ "116": 0.20664,
65
+ "117": 0.09184,
66
+ "118": 0.211232,
67
+ "119": 0.36736,
68
+ "120": 0.509712,
69
+ "121": 0.013776,
70
+ "122": 0.036736,
71
+ "123": 0.018368,
72
+ "124": 0.174496,
73
+ "125": 0.087248,
74
+ "126": 0.036736,
75
+ "127": 0.013776,
76
+ "128": 0.064288,
77
+ "129": 0.013776,
78
+ "130": 0.027552,
79
+ "131": 0.270928,
80
+ "132": 0.073472,
81
+ "133": 0.211232,
82
+ "134": 0.04592,
83
+ "135": 0.036736,
84
+ "136": 0.247968,
85
+ "137": 0.073472,
86
+ "138": 0.123984,
87
+ "139": 0.188272,
88
+ "140": 0.036736,
89
+ "141": 0.04592,
90
+ "142": 0.257152,
91
+ "143": 0.073472,
92
+ "144": 0.101024,
93
+ "145": 0.904624,
94
+ "146": 0.110208,
95
+ "147": 0.220416,
96
+ "148": 0.716352,
97
+ "149": 5.04202,
98
+ "150": 9.15645,
99
+ "151": 46.3251,
100
+ "152": 0.009184
103
101
  };
104
102
 
105
103
  const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
@@ -167,6 +165,12 @@ var capacitorWebviewVersionChecker = (function (exports, core) {
167
165
  else if (state === 'unknown' && deviceShareError) {
168
166
  reason = deviceShareError;
169
167
  }
168
+ if (typeof options.minimumMajorVersion === 'number' &&
169
+ typeof currentMajorVersion === 'number' &&
170
+ currentMajorVersion < options.minimumMajorVersion) {
171
+ state = 'outdated';
172
+ reason = 'Current browser engine major version is below the minimum requirement.';
173
+ }
170
174
  const status = {
171
175
  platform: 'web',
172
176
  state,