@capgo/capacitor-webview-version-checker 8.2.8 → 8.2.10

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,95 +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-02T13:02:16.965Z
14
+ * Generated at: 2026-08-16T12:08:18.255Z
15
15
  */
16
16
  const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
17
17
  const DEFAULT_VERSION_SHARE_BY_MAJOR = {
18
- "4": 0.000031,
19
- "39": 0.08685,
20
- "40": 0.08685,
21
- "41": 0.08685,
22
- "42": 0.08685,
23
- "43": 0.08685,
24
- "44": 0.08685,
25
- "45": 0.091675,
26
- "46": 0.08685,
27
- "47": 0.08685,
28
- "48": 0.091675,
29
- "49": 0.091675,
30
- "50": 0.08685,
31
- "51": 0.08685,
32
- "52": 0.091675,
33
- "53": 0.08685,
34
- "54": 0.08685,
35
- "55": 0.08685,
36
- "56": 0.08685,
37
- "57": 0.08685,
38
- "58": 0.08685,
39
- "59": 0.08685,
40
- "60": 0.08685,
41
- "66": 0.004825,
42
- "69": 0.004825,
43
- "70": 0.024125,
44
- "79": 0.02895,
45
- "86": 0.004825,
46
- "87": 0.014475,
47
- "91": 0.00965,
48
- "93": 0.014475,
49
- "96": 0.004825,
50
- "97": 0.004825,
51
- "98": 0.02895,
52
- "99": 0.014475,
53
- "100": 0.00965,
54
- "101": 0.00965,
55
- "102": 0.004825,
56
- "103": 0.303975,
57
- "104": 0.2509,
58
- "105": 0.236425,
59
- "106": 0.236425,
60
- "107": 0.236425,
61
- "108": 0.246075,
62
- "109": 0.7334,
63
- "110": 0.24125,
64
- "111": 0.2895,
65
- "112": 0.902275,
66
- "114": 0.024125,
67
- "115": 0.00965,
68
- "116": 0.516275,
69
- "117": 0.284675,
70
- "118": 1.1773,
71
- "119": 0.02895,
72
- "120": 0.294325,
73
- "121": 0.024125,
74
- "122": 0.033775,
75
- "123": 0.033775,
76
- "124": 0.27985,
77
- "125": 0.5211,
78
- "126": 0.0386,
79
- "127": 0.0193,
80
- "128": 0.053075,
81
- "129": 0.0193,
82
- "130": 0.062725,
83
- "131": 0.564525,
84
- "132": 0.04825,
85
- "133": 0.516275,
86
- "134": 0.04825,
87
- "135": 0.0386,
88
- "136": 0.043425,
89
- "137": 0.082025,
90
- "138": 0.159225,
91
- "139": 0.101325,
92
- "140": 0.0772,
93
- "141": 0.0579,
94
- "142": 0.902275,
95
- "143": 0.110975,
96
- "144": 0.29915,
97
- "145": 0.863675,
98
- "146": 0.583825,
99
- "147": 6.10362,
100
- "148": 8.41963,
101
- "149": 42.196,
102
- "150": 0.00965
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
103
102
  };
104
103
 
105
104
  const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
@@ -167,6 +166,12 @@ class WebviewVersionCheckerWeb extends core.WebPlugin {
167
166
  else if (state === 'unknown' && deviceShareError) {
168
167
  reason = deviceShareError;
169
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
+ }
170
175
  const status = {
171
176
  platform: 'web',
172
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-02T13:02:16.965Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-07-02T13:02:16.965Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000031,\n \"39\": 0.08685,\n \"40\": 0.08685,\n \"41\": 0.08685,\n \"42\": 0.08685,\n \"43\": 0.08685,\n \"44\": 0.08685,\n \"45\": 0.091675,\n \"46\": 0.08685,\n \"47\": 0.08685,\n \"48\": 0.091675,\n \"49\": 0.091675,\n \"50\": 0.08685,\n \"51\": 0.08685,\n \"52\": 0.091675,\n \"53\": 0.08685,\n \"54\": 0.08685,\n \"55\": 0.08685,\n \"56\": 0.08685,\n \"57\": 0.08685,\n \"58\": 0.08685,\n \"59\": 0.08685,\n \"60\": 0.08685,\n \"66\": 0.004825,\n \"69\": 0.004825,\n \"70\": 0.024125,\n \"79\": 0.02895,\n \"86\": 0.004825,\n \"87\": 0.014475,\n \"91\": 0.00965,\n \"93\": 0.014475,\n \"96\": 0.004825,\n \"97\": 0.004825,\n \"98\": 0.02895,\n \"99\": 0.014475,\n \"100\": 0.00965,\n \"101\": 0.00965,\n \"102\": 0.004825,\n \"103\": 0.303975,\n \"104\": 0.2509,\n \"105\": 0.236425,\n \"106\": 0.236425,\n \"107\": 0.236425,\n \"108\": 0.246075,\n \"109\": 0.7334,\n \"110\": 0.24125,\n \"111\": 0.2895,\n \"112\": 0.902275,\n \"114\": 0.024125,\n \"115\": 0.00965,\n \"116\": 0.516275,\n \"117\": 0.284675,\n \"118\": 1.1773,\n \"119\": 0.02895,\n \"120\": 0.294325,\n \"121\": 0.024125,\n \"122\": 0.033775,\n \"123\": 0.033775,\n \"124\": 0.27985,\n \"125\": 0.5211,\n \"126\": 0.0386,\n \"127\": 0.0193,\n \"128\": 0.053075,\n \"129\": 0.0193,\n \"130\": 0.062725,\n \"131\": 0.564525,\n \"132\": 0.04825,\n \"133\": 0.516275,\n \"134\": 0.04825,\n \"135\": 0.0386,\n \"136\": 0.043425,\n \"137\": 0.082025,\n \"138\": 0.159225,\n \"139\": 0.101325,\n \"140\": 0.0772,\n \"141\": 0.0579,\n \"142\": 0.902275,\n \"143\": 0.110975,\n \"144\": 0.29915,\n \"145\": 0.863675,\n \"146\": 0.583825,\n \"147\": 6.10362,\n \"148\": 8.41963,\n \"149\": 42.196,\n \"150\": 0.00965\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,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,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,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,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,OAAO;AAClB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,KAAK,EAAE,MAAM;AACjB,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,MAAM;AACjB,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,OAAO;AAClB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,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,MAAM;AACjB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,KAAK,EAAE,MAAM;AACjB,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,OAAO;AAClB,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-16T12:08:18.255Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-08-16T12:08:18.255Z';\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,95 +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-02T13:02:16.965Z
13
+ * Generated at: 2026-08-16T12:08:18.255Z
14
14
  */
15
15
  const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
16
16
  const DEFAULT_VERSION_SHARE_BY_MAJOR = {
17
- "4": 0.000031,
18
- "39": 0.08685,
19
- "40": 0.08685,
20
- "41": 0.08685,
21
- "42": 0.08685,
22
- "43": 0.08685,
23
- "44": 0.08685,
24
- "45": 0.091675,
25
- "46": 0.08685,
26
- "47": 0.08685,
27
- "48": 0.091675,
28
- "49": 0.091675,
29
- "50": 0.08685,
30
- "51": 0.08685,
31
- "52": 0.091675,
32
- "53": 0.08685,
33
- "54": 0.08685,
34
- "55": 0.08685,
35
- "56": 0.08685,
36
- "57": 0.08685,
37
- "58": 0.08685,
38
- "59": 0.08685,
39
- "60": 0.08685,
40
- "66": 0.004825,
41
- "69": 0.004825,
42
- "70": 0.024125,
43
- "79": 0.02895,
44
- "86": 0.004825,
45
- "87": 0.014475,
46
- "91": 0.00965,
47
- "93": 0.014475,
48
- "96": 0.004825,
49
- "97": 0.004825,
50
- "98": 0.02895,
51
- "99": 0.014475,
52
- "100": 0.00965,
53
- "101": 0.00965,
54
- "102": 0.004825,
55
- "103": 0.303975,
56
- "104": 0.2509,
57
- "105": 0.236425,
58
- "106": 0.236425,
59
- "107": 0.236425,
60
- "108": 0.246075,
61
- "109": 0.7334,
62
- "110": 0.24125,
63
- "111": 0.2895,
64
- "112": 0.902275,
65
- "114": 0.024125,
66
- "115": 0.00965,
67
- "116": 0.516275,
68
- "117": 0.284675,
69
- "118": 1.1773,
70
- "119": 0.02895,
71
- "120": 0.294325,
72
- "121": 0.024125,
73
- "122": 0.033775,
74
- "123": 0.033775,
75
- "124": 0.27985,
76
- "125": 0.5211,
77
- "126": 0.0386,
78
- "127": 0.0193,
79
- "128": 0.053075,
80
- "129": 0.0193,
81
- "130": 0.062725,
82
- "131": 0.564525,
83
- "132": 0.04825,
84
- "133": 0.516275,
85
- "134": 0.04825,
86
- "135": 0.0386,
87
- "136": 0.043425,
88
- "137": 0.082025,
89
- "138": 0.159225,
90
- "139": 0.101325,
91
- "140": 0.0772,
92
- "141": 0.0579,
93
- "142": 0.902275,
94
- "143": 0.110975,
95
- "144": 0.29915,
96
- "145": 0.863675,
97
- "146": 0.583825,
98
- "147": 6.10362,
99
- "148": 8.41963,
100
- "149": 42.196,
101
- "150": 0.00965
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
102
101
  };
103
102
 
104
103
  const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
@@ -166,6 +165,12 @@ var capacitorWebviewVersionChecker = (function (exports, core) {
166
165
  else if (state === 'unknown' && deviceShareError) {
167
166
  reason = deviceShareError;
168
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
+ }
169
174
  const status = {
170
175
  platform: 'web',
171
176
  state,