@capgo/capacitor-webview-version-checker 8.1.1 → 8.2.0
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.
- package/README.md +2 -0
- package/android/src/main/java/app/capgo/webviewversionchecker/GeneratedVersionShareData.java +2 -2
- package/android/src/main/java/app/capgo/webviewversionchecker/WebviewVersionCheckerPlugin.java +89 -20
- package/dist/esm/definitions.d.ts +9 -0
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/generated-version-share.d.ts +2 -2
- package/dist/esm/generated-version-share.js +4 -4
- package/dist/esm/generated-version-share.js.map +1 -1
- package/dist/plugin.cjs.js +3 -3
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +3 -3
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,7 @@ const config: CapacitorConfig = {
|
|
|
47
47
|
plugins: {
|
|
48
48
|
WebviewVersionChecker: {
|
|
49
49
|
autoPromptOnOutdated: true,
|
|
50
|
+
autoPromptDismissible: false,
|
|
50
51
|
},
|
|
51
52
|
},
|
|
52
53
|
};
|
|
@@ -113,6 +114,7 @@ const status = await WebviewVersionChecker.check({
|
|
|
113
114
|
'https://versionhistory.googleapis.com/v1/chrome/platforms/android/channels/stable/versions?page_size=1',
|
|
114
115
|
minimumMajorVersion: 124,
|
|
115
116
|
showPromptOnOutdated: true,
|
|
117
|
+
autoPromptDismissible: false,
|
|
116
118
|
promptTitle: 'Update WebView',
|
|
117
119
|
promptMessage: 'Your WebView is outdated. Please update to continue safely.',
|
|
118
120
|
promptUpdateButtonText: 'Update now',
|
package/android/src/main/java/app/capgo/webviewversionchecker/GeneratedVersionShareData.java
CHANGED
|
@@ -4,9 +4,9 @@ import org.json.JSONObject;
|
|
|
4
4
|
|
|
5
5
|
final class GeneratedVersionShareData {
|
|
6
6
|
|
|
7
|
-
private static final String GENERATED_AT = "2026-02-
|
|
7
|
+
private static final String GENERATED_AT = "2026-02-22T16:25:02.516Z";
|
|
8
8
|
private static final String DATA_SOURCE = "generatedVersionShareByMajor";
|
|
9
|
-
private static final String JSON_DATA = "{\"4\":0.000092,\"39\":0.004796,\"40\":0.004796,\"41\":0.009592,\"42\":0.004796,\"43\":0.004796,\"44\":0.004796,\"45\":0.009592,\"46\":0.004796,\"47\":0.009592,\"48\":0.014388,\"49\":0.014388,\"50\":0.009592,\"51\":0.009592,\"52\":0.014388,\"53\":0.009592,\"54\":0.004796,\"55\":0.009592,\"56\":0.009592,\"57\":0.009592,\"58\":0.009592,\"59\":0.009592,\"60\":0.014388,\"61\":0.004796,\"62\":0.009592,\"63\":0.009592,\"64\":0.009592,\"65\":0.004796,\"66\":0.02398,\"67\":0.009592,\"68\":0.009592,\"69\":0.033572,\"70\":0.009592,\"75\":0.004796,\"77\":0.004796,\"79\":0.067144,\"80\":0.009592,\"81\":0.009592,\"83\":0.043164,\"85\":0.004796,\"86\":0.009592,\"87\":0.028776,\"88\":0.004796,\"91\":0.019184,\"92\":0.014388,\"93\":0.009592,\"97\":0.009592,\"98\":0.04796,\"99\":0.043164,\"101\":0.014388,\"102\":0.009592,\"103\":0.26378,\"104\":0.230208,\"105\":0.273372,\"106\":0.206228,\"107\":0.230208,\"108\":0.230208,\"109\":0.786544,\"110\":0.235004,\"111\":0.292556,\"112\":2.71454,\"113\":0.004796,\"114\":0.062348,\"115\":0.02398,\"116\":0.446028,\"117\":0.282964,\"118\":0.052756,\"119\":0.038368,\"120\":0.31174,\"121\":0.04796,\"122\":0.091124,\"123\":0.062348,\"124\":0.230208,\"125\":0.244596,\"126\":0.052756,\"127\":0.052756,\"128\":0.076736,\"129\":0.067144,\"130\":0.09592,\"131\":0.709808,\"132\":0.139084,\"133\":0.52756,\"134\":0.067144,\"135\":0.067144,\"136\":0.09592,\"137\":0.062348,\"138\":0.235004,\"139\":3.34761,\"140\":0.177452,\"141\":0.398068,\"142\":1.29972,\"143\":10.4121,\"144\":
|
|
9
|
+
private static final String JSON_DATA = "{\"4\":0.000092,\"39\":0.004796,\"40\":0.004796,\"41\":0.009592,\"42\":0.004796,\"43\":0.004796,\"44\":0.004796,\"45\":0.009592,\"46\":0.004796,\"47\":0.009592,\"48\":0.014388,\"49\":0.014388,\"50\":0.009592,\"51\":0.009592,\"52\":0.014388,\"53\":0.009592,\"54\":0.004796,\"55\":0.009592,\"56\":0.009592,\"57\":0.009592,\"58\":0.009592,\"59\":0.009592,\"60\":0.014388,\"61\":0.004796,\"62\":0.009592,\"63\":0.009592,\"64\":0.009592,\"65\":0.004796,\"66\":0.02398,\"67\":0.009592,\"68\":0.009592,\"69\":0.033572,\"70\":0.009592,\"75\":0.004796,\"77\":0.004796,\"79\":0.067144,\"80\":0.009592,\"81\":0.009592,\"83\":0.043164,\"85\":0.004796,\"86\":0.009592,\"87\":0.028776,\"88\":0.004796,\"91\":0.019184,\"92\":0.014388,\"93\":0.009592,\"97\":0.009592,\"98\":0.04796,\"99\":0.043164,\"101\":0.014388,\"102\":0.009592,\"103\":0.26378,\"104\":0.230208,\"105\":0.273372,\"106\":0.206228,\"107\":0.230208,\"108\":0.230208,\"109\":0.786544,\"110\":0.235004,\"111\":0.292556,\"112\":2.71454,\"113\":0.004796,\"114\":0.062348,\"115\":0.02398,\"116\":0.446028,\"117\":0.282964,\"118\":0.052756,\"119\":0.038368,\"120\":0.31174,\"121\":0.04796,\"122\":0.091124,\"123\":0.062348,\"124\":0.230208,\"125\":0.244596,\"126\":0.052756,\"127\":0.052756,\"128\":0.076736,\"129\":0.067144,\"130\":0.09592,\"131\":0.709808,\"132\":0.139084,\"133\":0.52756,\"134\":0.067144,\"135\":0.067144,\"136\":0.09592,\"137\":0.062348,\"138\":0.235004,\"139\":3.34761,\"140\":0.177452,\"141\":0.398068,\"142\":1.29972,\"143\":10.4121,\"144\":3.76486,\"145\":41.8835}";
|
|
10
10
|
|
|
11
11
|
private GeneratedVersionShareData() {}
|
|
12
12
|
|
package/android/src/main/java/app/capgo/webviewversionchecker/WebviewVersionCheckerPlugin.java
CHANGED
|
@@ -75,6 +75,11 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
75
75
|
|
|
76
76
|
private long cachedVersionShareTimestamp;
|
|
77
77
|
|
|
78
|
+
private boolean isPromptShowing;
|
|
79
|
+
|
|
80
|
+
@Nullable
|
|
81
|
+
private AlertDialog activePromptDialog;
|
|
82
|
+
|
|
78
83
|
@Override
|
|
79
84
|
public void load() {
|
|
80
85
|
super.load();
|
|
@@ -132,7 +137,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
132
137
|
@PluginMethod
|
|
133
138
|
public void showUpdatePrompt(PluginCall call) {
|
|
134
139
|
PromptOptions promptOptions = PromptOptions.fromCall(call, runtimeOptions);
|
|
135
|
-
showUpdatePrompt(promptOptions, true, (shown, opened) -> {
|
|
140
|
+
showUpdatePrompt(promptOptions, true, runtimeOptions.autoPromptDismissible, (shown, opened) -> {
|
|
136
141
|
JSObject payload = new JSObject();
|
|
137
142
|
payload.put("shown", shown);
|
|
138
143
|
payload.put("openedUpdatePage", opened);
|
|
@@ -166,6 +171,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
166
171
|
lastStatus = status;
|
|
167
172
|
|
|
168
173
|
notifyStatus(status);
|
|
174
|
+
dismissAutoPromptIfUpToDate(status);
|
|
169
175
|
maybeAutoPrompt(status, options, forcePrompt);
|
|
170
176
|
|
|
171
177
|
if (call != null) {
|
|
@@ -314,10 +320,15 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
314
320
|
}
|
|
315
321
|
|
|
316
322
|
PromptOptions promptOptions = PromptOptions.fromRuntime(options);
|
|
317
|
-
showUpdatePrompt(promptOptions, forcePrompt, null);
|
|
323
|
+
showUpdatePrompt(promptOptions, forcePrompt, options.autoPromptDismissible, null);
|
|
318
324
|
}
|
|
319
325
|
|
|
320
|
-
private void showUpdatePrompt(
|
|
326
|
+
private void showUpdatePrompt(
|
|
327
|
+
PromptOptions promptOptions,
|
|
328
|
+
boolean force,
|
|
329
|
+
boolean dismissible,
|
|
330
|
+
@Nullable PromptResultCallback callback
|
|
331
|
+
) {
|
|
321
332
|
Activity activity = getActivity();
|
|
322
333
|
if (activity == null || activity.isFinishing()) {
|
|
323
334
|
if (callback != null) {
|
|
@@ -335,15 +346,24 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
335
346
|
}
|
|
336
347
|
|
|
337
348
|
String fingerprint = buildPromptFingerprint(lastStatus, updateUrl);
|
|
338
|
-
if (!force && !isBlank(fingerprint) && fingerprint.equals(lastPromptFingerprint)) {
|
|
349
|
+
if (dismissible && !force && !isBlank(fingerprint) && fingerprint.equals(lastPromptFingerprint)) {
|
|
350
|
+
if (callback != null) {
|
|
351
|
+
callback.onResult(false, false);
|
|
352
|
+
}
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
if (isPromptShowing) {
|
|
339
357
|
if (callback != null) {
|
|
340
358
|
callback.onResult(false, false);
|
|
341
359
|
}
|
|
342
360
|
return;
|
|
343
361
|
}
|
|
344
362
|
|
|
345
|
-
if (!isBlank(fingerprint)) {
|
|
363
|
+
if (dismissible && !isBlank(fingerprint)) {
|
|
346
364
|
lastPromptFingerprint = fingerprint;
|
|
365
|
+
} else {
|
|
366
|
+
lastPromptFingerprint = null;
|
|
347
367
|
}
|
|
348
368
|
|
|
349
369
|
String title = !isBlank(promptOptions.title) ? promptOptions.title : DEFAULT_PROMPT_TITLE;
|
|
@@ -353,7 +373,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
353
373
|
|
|
354
374
|
bridge.executeOnMainThread(() -> {
|
|
355
375
|
final boolean[] resolved = { false };
|
|
356
|
-
AlertDialog
|
|
376
|
+
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
|
|
357
377
|
.setTitle(title)
|
|
358
378
|
.setMessage(message)
|
|
359
379
|
.setPositiveButton(updateButtonText, (dialogInterface, which) -> {
|
|
@@ -362,21 +382,64 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
362
382
|
resolved[0] = true;
|
|
363
383
|
callback.onResult(true, opened);
|
|
364
384
|
}
|
|
365
|
-
})
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
385
|
+
});
|
|
386
|
+
|
|
387
|
+
if (dismissible) {
|
|
388
|
+
builder
|
|
389
|
+
.setNegativeButton(cancelButtonText, (dialogInterface, which) -> {
|
|
390
|
+
if (callback != null && !resolved[0]) {
|
|
391
|
+
resolved[0] = true;
|
|
392
|
+
callback.onResult(true, false);
|
|
393
|
+
}
|
|
394
|
+
})
|
|
395
|
+
.setOnCancelListener((dialogInterface) -> {
|
|
396
|
+
if (callback != null && !resolved[0]) {
|
|
397
|
+
resolved[0] = true;
|
|
398
|
+
callback.onResult(true, false);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
AlertDialog dialog = builder.setCancelable(dismissible).create();
|
|
404
|
+
isPromptShowing = true;
|
|
405
|
+
activePromptDialog = dialog;
|
|
406
|
+
dialog.setOnDismissListener((dialogInterface) -> {
|
|
407
|
+
isPromptShowing = false;
|
|
408
|
+
if (activePromptDialog == dialog) {
|
|
409
|
+
activePromptDialog = null;
|
|
410
|
+
}
|
|
411
|
+
});
|
|
379
412
|
dialog.show();
|
|
413
|
+
if (!dismissible) {
|
|
414
|
+
dialog
|
|
415
|
+
.getButton(AlertDialog.BUTTON_POSITIVE)
|
|
416
|
+
.setOnClickListener((view) -> {
|
|
417
|
+
boolean opened = openUpdateUrl(updateUrl);
|
|
418
|
+
if (callback != null && !resolved[0]) {
|
|
419
|
+
resolved[0] = true;
|
|
420
|
+
callback.onResult(true, opened);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
private void dismissAutoPromptIfUpToDate(JSObject status) {
|
|
428
|
+
if (!"latest".equals(status.optString("state", "unknown"))) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
AlertDialog dialog = activePromptDialog;
|
|
432
|
+
if (dialog == null) {
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
bridge.executeOnMainThread(() -> {
|
|
437
|
+
if (dialog.isShowing()) {
|
|
438
|
+
dialog.dismiss();
|
|
439
|
+
}
|
|
440
|
+
if (activePromptDialog == dialog) {
|
|
441
|
+
activePromptDialog = null;
|
|
442
|
+
}
|
|
380
443
|
});
|
|
381
444
|
}
|
|
382
445
|
|
|
@@ -1000,6 +1063,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
1000
1063
|
private boolean autoCheckOnResume = true;
|
|
1001
1064
|
private boolean autoPromptOnOutdated;
|
|
1002
1065
|
private boolean showPromptOnOutdated;
|
|
1066
|
+
private boolean autoPromptDismissible = true;
|
|
1003
1067
|
|
|
1004
1068
|
@Nullable
|
|
1005
1069
|
private String latestVersion;
|
|
@@ -1039,6 +1103,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
1039
1103
|
out.autoCheckOnLoad = config.getBoolean("autoCheckOnLoad", true);
|
|
1040
1104
|
out.autoCheckOnResume = config.getBoolean("autoCheckOnResume", true);
|
|
1041
1105
|
out.autoPromptOnOutdated = config.getBoolean("autoPromptOnOutdated", false);
|
|
1106
|
+
out.autoPromptDismissible = config.getBoolean("autoPromptDismissible", true);
|
|
1042
1107
|
out.latestVersion = emptyToNull(config.getString("latestVersion"));
|
|
1043
1108
|
Integer minimum = config.getConfigJSON().has("minimumMajorVersion") ? config.getInt("minimumMajorVersion", 0) : null;
|
|
1044
1109
|
out.minimumMajorVersion = minimum;
|
|
@@ -1068,6 +1133,9 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
1068
1133
|
if (call.hasOption("autoPromptOnOutdated")) {
|
|
1069
1134
|
out.autoPromptOnOutdated = call.getBoolean("autoPromptOnOutdated", out.autoPromptOnOutdated);
|
|
1070
1135
|
}
|
|
1136
|
+
if (call.hasOption("autoPromptDismissible")) {
|
|
1137
|
+
out.autoPromptDismissible = call.getBoolean("autoPromptDismissible", out.autoPromptDismissible);
|
|
1138
|
+
}
|
|
1071
1139
|
if (call.hasOption("showPromptOnOutdated")) {
|
|
1072
1140
|
out.showPromptOnOutdated = call.getBoolean("showPromptOnOutdated", out.showPromptOnOutdated);
|
|
1073
1141
|
}
|
|
@@ -1113,6 +1181,7 @@ public class WebviewVersionCheckerPlugin extends Plugin {
|
|
|
1113
1181
|
out.autoCheckOnLoad = autoCheckOnLoad;
|
|
1114
1182
|
out.autoCheckOnResume = autoCheckOnResume;
|
|
1115
1183
|
out.autoPromptOnOutdated = autoPromptOnOutdated;
|
|
1184
|
+
out.autoPromptDismissible = autoPromptDismissible;
|
|
1116
1185
|
out.showPromptOnOutdated = showPromptOnOutdated;
|
|
1117
1186
|
out.latestVersion = latestVersion;
|
|
1118
1187
|
out.minimumMajorVersion = minimumMajorVersion;
|
|
@@ -54,6 +54,15 @@ export interface WebviewVersionCheckerConfig {
|
|
|
54
54
|
* @default false
|
|
55
55
|
*/
|
|
56
56
|
autoPromptOnOutdated?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Controls whether the automatic modal can be dismissed.
|
|
59
|
+
*
|
|
60
|
+
* When set to false, users cannot dismiss the automatic modal manually.
|
|
61
|
+
* They can only exit by opening the update action and reopening the app after updating.
|
|
62
|
+
*
|
|
63
|
+
* @default true
|
|
64
|
+
*/
|
|
65
|
+
autoPromptDismissible?: boolean;
|
|
57
66
|
/**
|
|
58
67
|
* Explicit latest version to compare with.
|
|
59
68
|
* If provided, this value is used before any API lookup.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nexport type WebViewVersionState = 'latest' | 'outdated' | 'unknown';\n\nexport type WebViewPlatform = 'android' | 'ios' | 'web';\n\n/**\n * Capacitor config shape for `plugins.WebviewVersionChecker`.\n *\n * Main use case (default, no plugin config required):\n * Browserslist-style compatibility checks with a built-in version-share dataset\n * generated from caniuse at plugin build time.\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {}\n * }\n * ```\n *\n * Simple setup with automatic prompt:\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {\n * autoPromptOnOutdated: true,\n * }\n * }\n * ```\n *\n * Advanced setup with custom dataset and threshold:\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {\n * minimumDeviceSharePercent: 3,\n * versionShareByMajor: { '137': 58.2, '136': 21.3, '135': 4.6 },\n * }\n * }\n * ```\n */\nexport interface WebviewVersionCheckerConfig {\n /**\n * Automatically run a version check once when the plugin loads.\n *\n * @default true\n */\n autoCheckOnLoad?: boolean;\n\n /**\n * Automatically run a version check each time the app returns to foreground.\n *\n * @default true\n */\n autoCheckOnResume?: boolean;\n\n /**\n * Automatically show a native update prompt whenever an outdated WebView is detected.\n *\n * @default false\n */\n autoPromptOnOutdated?: boolean;\n\n /**\n * Explicit latest version to compare with.\n * If provided, this value is used before any API lookup.\n */\n latestVersion?: string;\n\n /**\n * Fallback minimum allowed major version.\n * Used when `latestVersion` cannot be resolved.\n */\n minimumMajorVersion?: number;\n\n /**\n * Browserslist-style compatibility threshold in percentage points.\n *\n * Example: `3` means the installed WebView major version must represent at least 3%\n * of devices in the selected version-share dataset.\n *\n * Data source priority:\n * - `versionShareByMajor` (inline dataset) if provided\n * - else `versionShareApiUrl` if provided\n * - else built-in generated dataset (`generatedVersionShareByMajor`)\n *\n * If the threshold cannot be evaluated (missing dataset or missing major entry),\n * the plugin falls back to normal version checks (`latestVersion` / `latestVersionApiUrl`,\n * then `minimumMajorVersion`).\n *\n * @default 3\n */\n minimumDeviceSharePercent?: number;\n\n /**\n * Optional inline dataset for major-version device share.\n *\n * Keys are major versions (string or number-like), values are percentages (`0..100`).\n *\n * Example:\n * `{ \"137\": 54.2, \"136\": 23.8, \"135\": 7.1, \"134\": 2.4 }`\n *\n * Used when `minimumDeviceSharePercent` is set.\n * If both `versionShareByMajor` and `versionShareApiUrl` are provided,\n * this inline map is used first.\n */\n versionShareByMajor?: Record<string, number>;\n\n /**\n * Optional endpoint returning a version-share dataset.\n *\n * Used when `minimumDeviceSharePercent` is set and no inline `versionShareByMajor`\n * is provided. If omitted, the plugin uses its built-in generated dataset.\n *\n * Supported response shapes:\n * - `{ \"versionShareByMajor\": { \"137\": 54.2, \"136\": 23.8 } }`\n * - `{ \"shareByMajor\": { \"137\": 54.2, \"136\": 23.8 } }`\n * - `{ \"versions\": [{ \"major\": 137, \"share\": 54.2 }, { \"version\": \"136.0.0.0\", \"percent\": 23.8 }] }`\n * - Caniuse full dataset shape (`agents.*.usage_global`)\n */\n versionShareApiUrl?: string;\n\n /**\n * Optional endpoint returning a JSON payload with the latest version.\n *\n * Supported response shapes:\n * - `{ \"version\": \"137.0.7151.44\" }`\n * - `{ \"latestVersion\": \"137.0.7151.44\" }`\n * - Google version history format: `{ \"versions\": [{ \"version\": \"137.0.7151.44\" }] }`\n */\n latestVersionApiUrl?: string;\n\n /**\n * Optional URL opened when users tap update in the native prompt.\n *\n * Android default: Play Store listing of the active WebView package.\n * iOS default: Apple iOS update help page.\n */\n updateUrl?: string;\n\n /**\n * Native prompt title.\n */\n promptTitle?: string;\n\n /**\n * Native prompt message.\n */\n promptMessage?: string;\n\n /**\n * Native prompt update button text.\n */\n promptUpdateButtonText?: string;\n\n /**\n * Native prompt cancel button text.\n */\n promptCancelButtonText?: string;\n}\n\n/**\n * Options for running a WebView version check.\n */\nexport interface CheckWebViewOptions extends WebviewVersionCheckerConfig {\n /**\n * Force showing a native prompt if an outdated WebView is detected.\n *\n * @default false\n */\n showPromptOnOutdated?: boolean;\n\n /**\n * Optional tag included in the status payload so you can identify the check origin.\n *\n * @default \"manual\"\n */\n source?: string;\n}\n\n/**\n * Options for starting monitor mode.\n */\nexport interface StartMonitoringOptions extends CheckWebViewOptions {\n /**\n * Run a check immediately when monitoring starts.\n *\n * @default true\n */\n checkOnStart?: boolean;\n\n /**\n * Whether foreground checks should run while monitoring is enabled.\n *\n * @default true\n */\n checkOnResume?: boolean;\n}\n\n/**\n * Options for showing the native update prompt.\n */\nexport interface ShowUpdatePromptOptions {\n /**\n * Prompt title.\n */\n title?: string;\n\n /**\n * Prompt message.\n */\n message?: string;\n\n /**\n * Update CTA label.\n */\n updateButtonText?: string;\n\n /**\n * Cancel CTA label.\n */\n cancelButtonText?: string;\n\n /**\n * Optional URL to open if the update action is selected.\n */\n updateUrl?: string;\n}\n\n/**\n * Options for opening the update page directly.\n */\nexport interface OpenUpdatePageOptions {\n /**\n * Optional URL override.\n */\n updateUrl?: string;\n}\n\n/**\n * Snapshot of the currently detected WebView status.\n */\nexport interface WebViewVersionStatus {\n /**\n * Native platform that generated the status.\n */\n platform: WebViewPlatform;\n\n /**\n * Resolved version state.\n */\n state: WebViewVersionState;\n\n /**\n * Convenience boolean equivalent to `state === 'latest'`.\n */\n isLatest: boolean;\n\n /**\n * ISO-8601 timestamp of the check.\n */\n checkedAt: string;\n\n /**\n * Human-readable explanation for the reported state.\n */\n reason: string;\n\n /**\n * Current WebView (or iOS system WebKit) version string.\n */\n currentVersion: string;\n\n /**\n * Current detected major version (if parseable).\n */\n currentMajorVersion?: number;\n\n /**\n * Resolved latest version used for comparison.\n */\n latestVersion?: string;\n\n /**\n * Resolved latest major version (if parseable).\n */\n latestMajorVersion?: number;\n\n /**\n * Device-share percentage for the installed WebView major version.\n *\n * Present only when a version-share dataset is available and includes the current major version.\n */\n currentVersionSharePercent?: number;\n\n /**\n * Configured threshold used by compatibility-threshold mode.\n *\n * Present only when `minimumDeviceSharePercent` was requested for that check.\n */\n minimumDeviceSharePercent?: number;\n\n /**\n * Source used for version-share data.\n *\n * Values:\n * - `versionShareByMajor` (inline dataset)\n * - `versionShareApiUrl` (remote dataset)\n * - `generatedVersionShareByMajor` (built-in dataset generated at build time)\n */\n versionShareSource?: string;\n\n /**\n * Diagnostic message for compatibility-threshold mode.\n *\n * Present when `minimumDeviceSharePercent` was requested but the threshold check\n * could not be fully evaluated.\n */\n deviceShareError?: string;\n\n /**\n * Android package name of the active WebView provider.\n */\n providerPackage?: string;\n\n /**\n * URL that should be opened to update when outdated.\n */\n updateUrl?: string;\n\n /**\n * Internal source identifier for the check implementation.\n */\n source: string;\n}\n\n/**\n * Result payload for monitor controls.\n */\nexport interface MonitoringStateResult {\n /**\n * Whether monitoring is currently active.\n */\n monitoring: boolean;\n\n /**\n * Whether checks run on app resume while monitoring is active.\n */\n checkOnResume: boolean;\n\n /**\n * Whether outdated checks auto-trigger the native prompt.\n */\n autoPromptOnOutdated: boolean;\n}\n\n/**\n * Last known check snapshot.\n */\nexport interface LastStatusResult {\n /**\n * Null until the first check completes.\n */\n status: WebViewVersionStatus | null;\n}\n\n/**\n * Result payload for `showUpdatePrompt()`.\n */\nexport interface ShowUpdatePromptResult {\n /**\n * Whether a native prompt was actually shown.\n */\n shown: boolean;\n\n /**\n * Whether the update page was opened from the prompt action.\n */\n openedUpdatePage: boolean;\n}\n\n/**\n * Result payload for `openUpdatePage()`.\n */\nexport interface OpenUpdatePageResult {\n /**\n * Whether opening the update URL succeeded.\n */\n opened: boolean;\n\n /**\n * URL that was attempted.\n */\n url: string;\n}\n\n/**\n * Public API for checking WebView freshness and guiding users to updates.\n */\nexport interface WebviewVersionCheckerPlugin {\n /**\n * Runs a version check and returns the latest known status.\n */\n check(options?: CheckWebViewOptions): Promise<WebViewVersionStatus>;\n\n /**\n * Enables background monitoring (typically on app resume).\n */\n startMonitoring(options?: StartMonitoringOptions): Promise<MonitoringStateResult>;\n\n /**\n * Disables monitoring.\n */\n stopMonitoring(): Promise<MonitoringStateResult>;\n\n /**\n * Returns the last resolved status, or `null` if no check was run yet.\n */\n getLastStatus(): Promise<LastStatusResult>;\n\n /**\n * Shows a native prompt asking the user to update the WebView.\n */\n showUpdatePrompt(options?: ShowUpdatePromptOptions): Promise<ShowUpdatePromptResult>;\n\n /**\n * Opens the configured update page directly.\n */\n openUpdatePage(options?: OpenUpdatePageOptions): Promise<OpenUpdatePageResult>;\n\n /**\n * Fired for every successful status evaluation.\n */\n addListener(\n eventName: 'statusChanged',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n\n /**\n * Fired when the state resolves to `latest`.\n */\n addListener(\n eventName: 'webViewLatest',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n\n /**\n * Fired when the state resolves to `outdated`.\n */\n addListener(\n eventName: 'webViewOutdated',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nexport type WebViewVersionState = 'latest' | 'outdated' | 'unknown';\n\nexport type WebViewPlatform = 'android' | 'ios' | 'web';\n\n/**\n * Capacitor config shape for `plugins.WebviewVersionChecker`.\n *\n * Main use case (default, no plugin config required):\n * Browserslist-style compatibility checks with a built-in version-share dataset\n * generated from caniuse at plugin build time.\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {}\n * }\n * ```\n *\n * Simple setup with automatic prompt:\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {\n * autoPromptOnOutdated: true,\n * }\n * }\n * ```\n *\n * Advanced setup with custom dataset and threshold:\n *\n * ```ts\n * plugins: {\n * WebviewVersionChecker: {\n * minimumDeviceSharePercent: 3,\n * versionShareByMajor: { '137': 58.2, '136': 21.3, '135': 4.6 },\n * }\n * }\n * ```\n */\nexport interface WebviewVersionCheckerConfig {\n /**\n * Automatically run a version check once when the plugin loads.\n *\n * @default true\n */\n autoCheckOnLoad?: boolean;\n\n /**\n * Automatically run a version check each time the app returns to foreground.\n *\n * @default true\n */\n autoCheckOnResume?: boolean;\n\n /**\n * Automatically show a native update prompt whenever an outdated WebView is detected.\n *\n * @default false\n */\n autoPromptOnOutdated?: boolean;\n\n /**\n * Controls whether the automatic modal can be dismissed.\n *\n * When set to false, users cannot dismiss the automatic modal manually.\n * They can only exit by opening the update action and reopening the app after updating.\n *\n * @default true\n */\n autoPromptDismissible?: boolean;\n\n /**\n * Explicit latest version to compare with.\n * If provided, this value is used before any API lookup.\n */\n latestVersion?: string;\n\n /**\n * Fallback minimum allowed major version.\n * Used when `latestVersion` cannot be resolved.\n */\n minimumMajorVersion?: number;\n\n /**\n * Browserslist-style compatibility threshold in percentage points.\n *\n * Example: `3` means the installed WebView major version must represent at least 3%\n * of devices in the selected version-share dataset.\n *\n * Data source priority:\n * - `versionShareByMajor` (inline dataset) if provided\n * - else `versionShareApiUrl` if provided\n * - else built-in generated dataset (`generatedVersionShareByMajor`)\n *\n * If the threshold cannot be evaluated (missing dataset or missing major entry),\n * the plugin falls back to normal version checks (`latestVersion` / `latestVersionApiUrl`,\n * then `minimumMajorVersion`).\n *\n * @default 3\n */\n minimumDeviceSharePercent?: number;\n\n /**\n * Optional inline dataset for major-version device share.\n *\n * Keys are major versions (string or number-like), values are percentages (`0..100`).\n *\n * Example:\n * `{ \"137\": 54.2, \"136\": 23.8, \"135\": 7.1, \"134\": 2.4 }`\n *\n * Used when `minimumDeviceSharePercent` is set.\n * If both `versionShareByMajor` and `versionShareApiUrl` are provided,\n * this inline map is used first.\n */\n versionShareByMajor?: Record<string, number>;\n\n /**\n * Optional endpoint returning a version-share dataset.\n *\n * Used when `minimumDeviceSharePercent` is set and no inline `versionShareByMajor`\n * is provided. If omitted, the plugin uses its built-in generated dataset.\n *\n * Supported response shapes:\n * - `{ \"versionShareByMajor\": { \"137\": 54.2, \"136\": 23.8 } }`\n * - `{ \"shareByMajor\": { \"137\": 54.2, \"136\": 23.8 } }`\n * - `{ \"versions\": [{ \"major\": 137, \"share\": 54.2 }, { \"version\": \"136.0.0.0\", \"percent\": 23.8 }] }`\n * - Caniuse full dataset shape (`agents.*.usage_global`)\n */\n versionShareApiUrl?: string;\n\n /**\n * Optional endpoint returning a JSON payload with the latest version.\n *\n * Supported response shapes:\n * - `{ \"version\": \"137.0.7151.44\" }`\n * - `{ \"latestVersion\": \"137.0.7151.44\" }`\n * - Google version history format: `{ \"versions\": [{ \"version\": \"137.0.7151.44\" }] }`\n */\n latestVersionApiUrl?: string;\n\n /**\n * Optional URL opened when users tap update in the native prompt.\n *\n * Android default: Play Store listing of the active WebView package.\n * iOS default: Apple iOS update help page.\n */\n updateUrl?: string;\n\n /**\n * Native prompt title.\n */\n promptTitle?: string;\n\n /**\n * Native prompt message.\n */\n promptMessage?: string;\n\n /**\n * Native prompt update button text.\n */\n promptUpdateButtonText?: string;\n\n /**\n * Native prompt cancel button text.\n */\n promptCancelButtonText?: string;\n}\n\n/**\n * Options for running a WebView version check.\n */\nexport interface CheckWebViewOptions extends WebviewVersionCheckerConfig {\n /**\n * Force showing a native prompt if an outdated WebView is detected.\n *\n * @default false\n */\n showPromptOnOutdated?: boolean;\n\n /**\n * Optional tag included in the status payload so you can identify the check origin.\n *\n * @default \"manual\"\n */\n source?: string;\n}\n\n/**\n * Options for starting monitor mode.\n */\nexport interface StartMonitoringOptions extends CheckWebViewOptions {\n /**\n * Run a check immediately when monitoring starts.\n *\n * @default true\n */\n checkOnStart?: boolean;\n\n /**\n * Whether foreground checks should run while monitoring is enabled.\n *\n * @default true\n */\n checkOnResume?: boolean;\n}\n\n/**\n * Options for showing the native update prompt.\n */\nexport interface ShowUpdatePromptOptions {\n /**\n * Prompt title.\n */\n title?: string;\n\n /**\n * Prompt message.\n */\n message?: string;\n\n /**\n * Update CTA label.\n */\n updateButtonText?: string;\n\n /**\n * Cancel CTA label.\n */\n cancelButtonText?: string;\n\n /**\n * Optional URL to open if the update action is selected.\n */\n updateUrl?: string;\n}\n\n/**\n * Options for opening the update page directly.\n */\nexport interface OpenUpdatePageOptions {\n /**\n * Optional URL override.\n */\n updateUrl?: string;\n}\n\n/**\n * Snapshot of the currently detected WebView status.\n */\nexport interface WebViewVersionStatus {\n /**\n * Native platform that generated the status.\n */\n platform: WebViewPlatform;\n\n /**\n * Resolved version state.\n */\n state: WebViewVersionState;\n\n /**\n * Convenience boolean equivalent to `state === 'latest'`.\n */\n isLatest: boolean;\n\n /**\n * ISO-8601 timestamp of the check.\n */\n checkedAt: string;\n\n /**\n * Human-readable explanation for the reported state.\n */\n reason: string;\n\n /**\n * Current WebView (or iOS system WebKit) version string.\n */\n currentVersion: string;\n\n /**\n * Current detected major version (if parseable).\n */\n currentMajorVersion?: number;\n\n /**\n * Resolved latest version used for comparison.\n */\n latestVersion?: string;\n\n /**\n * Resolved latest major version (if parseable).\n */\n latestMajorVersion?: number;\n\n /**\n * Device-share percentage for the installed WebView major version.\n *\n * Present only when a version-share dataset is available and includes the current major version.\n */\n currentVersionSharePercent?: number;\n\n /**\n * Configured threshold used by compatibility-threshold mode.\n *\n * Present only when `minimumDeviceSharePercent` was requested for that check.\n */\n minimumDeviceSharePercent?: number;\n\n /**\n * Source used for version-share data.\n *\n * Values:\n * - `versionShareByMajor` (inline dataset)\n * - `versionShareApiUrl` (remote dataset)\n * - `generatedVersionShareByMajor` (built-in dataset generated at build time)\n */\n versionShareSource?: string;\n\n /**\n * Diagnostic message for compatibility-threshold mode.\n *\n * Present when `minimumDeviceSharePercent` was requested but the threshold check\n * could not be fully evaluated.\n */\n deviceShareError?: string;\n\n /**\n * Android package name of the active WebView provider.\n */\n providerPackage?: string;\n\n /**\n * URL that should be opened to update when outdated.\n */\n updateUrl?: string;\n\n /**\n * Internal source identifier for the check implementation.\n */\n source: string;\n}\n\n/**\n * Result payload for monitor controls.\n */\nexport interface MonitoringStateResult {\n /**\n * Whether monitoring is currently active.\n */\n monitoring: boolean;\n\n /**\n * Whether checks run on app resume while monitoring is active.\n */\n checkOnResume: boolean;\n\n /**\n * Whether outdated checks auto-trigger the native prompt.\n */\n autoPromptOnOutdated: boolean;\n}\n\n/**\n * Last known check snapshot.\n */\nexport interface LastStatusResult {\n /**\n * Null until the first check completes.\n */\n status: WebViewVersionStatus | null;\n}\n\n/**\n * Result payload for `showUpdatePrompt()`.\n */\nexport interface ShowUpdatePromptResult {\n /**\n * Whether a native prompt was actually shown.\n */\n shown: boolean;\n\n /**\n * Whether the update page was opened from the prompt action.\n */\n openedUpdatePage: boolean;\n}\n\n/**\n * Result payload for `openUpdatePage()`.\n */\nexport interface OpenUpdatePageResult {\n /**\n * Whether opening the update URL succeeded.\n */\n opened: boolean;\n\n /**\n * URL that was attempted.\n */\n url: string;\n}\n\n/**\n * Public API for checking WebView freshness and guiding users to updates.\n */\nexport interface WebviewVersionCheckerPlugin {\n /**\n * Runs a version check and returns the latest known status.\n */\n check(options?: CheckWebViewOptions): Promise<WebViewVersionStatus>;\n\n /**\n * Enables background monitoring (typically on app resume).\n */\n startMonitoring(options?: StartMonitoringOptions): Promise<MonitoringStateResult>;\n\n /**\n * Disables monitoring.\n */\n stopMonitoring(): Promise<MonitoringStateResult>;\n\n /**\n * Returns the last resolved status, or `null` if no check was run yet.\n */\n getLastStatus(): Promise<LastStatusResult>;\n\n /**\n * Shows a native prompt asking the user to update the WebView.\n */\n showUpdatePrompt(options?: ShowUpdatePromptOptions): Promise<ShowUpdatePromptResult>;\n\n /**\n * Opens the configured update page directly.\n */\n openUpdatePage(options?: OpenUpdatePageOptions): Promise<OpenUpdatePageResult>;\n\n /**\n * Fired for every successful status evaluation.\n */\n addListener(\n eventName: 'statusChanged',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n\n /**\n * Fired when the state resolves to `latest`.\n */\n addListener(\n eventName: 'webViewLatest',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n\n /**\n * Fired when the state resolves to `outdated`.\n */\n addListener(\n eventName: 'webViewOutdated',\n listenerFunc: (status: WebViewVersionStatus) => void,\n ): Promise<PluginListenerHandle>;\n}\n"]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* AUTO-GENERATED FILE. DO NOT EDIT.
|
|
3
3
|
* Generated by: scripts/generate-version-share-data.mjs
|
|
4
4
|
* Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json
|
|
5
|
-
* Generated at: 2026-02-
|
|
5
|
+
* Generated at: 2026-02-22T16:25:02.516Z
|
|
6
6
|
*/
|
|
7
7
|
export declare const DEFAULT_VERSION_SHARE_DATA_SOURCE = "generatedVersionShareByMajor";
|
|
8
|
-
export declare const DEFAULT_VERSION_SHARE_GENERATED_AT = "2026-02-
|
|
8
|
+
export declare const DEFAULT_VERSION_SHARE_GENERATED_AT = "2026-02-22T16:25:02.516Z";
|
|
9
9
|
export declare const DEFAULT_VERSION_SHARE_BY_MAJOR: Record<string, number>;
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* AUTO-GENERATED FILE. DO NOT EDIT.
|
|
4
4
|
* Generated by: scripts/generate-version-share-data.mjs
|
|
5
5
|
* Source: https://raw.githubusercontent.com/Fyrd/caniuse/main/data.json
|
|
6
|
-
* Generated at: 2026-02-
|
|
6
|
+
* Generated at: 2026-02-22T16:25:02.516Z
|
|
7
7
|
*/
|
|
8
8
|
export const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
|
|
9
|
-
export const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-
|
|
9
|
+
export const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-22T16:25:02.516Z';
|
|
10
10
|
export const DEFAULT_VERSION_SHARE_BY_MAJOR = {
|
|
11
11
|
"4": 0.000092,
|
|
12
12
|
"39": 0.004796,
|
|
@@ -100,7 +100,7 @@ export const DEFAULT_VERSION_SHARE_BY_MAJOR = {
|
|
|
100
100
|
"141": 0.398068,
|
|
101
101
|
"142": 1.29972,
|
|
102
102
|
"143": 10.4121,
|
|
103
|
-
"144":
|
|
104
|
-
"145":
|
|
103
|
+
"144": 3.76486,
|
|
104
|
+
"145": 41.8835
|
|
105
105
|
};
|
|
106
106
|
//# sourceMappingURL=generated-version-share.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-version-share.js","sourceRoot":"","sources":["../../src/generated-version-share.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;AAChF,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"generated-version-share.js","sourceRoot":"","sources":["../../src/generated-version-share.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;AAChF,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACpE,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;CACf,CAAC","sourcesContent":["/* 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-02-22T16:25:02.516Z\n */\n\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-22T16:25:02.516Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR: Record<string, number> = {\n \"4\": 0.000092,\n \"39\": 0.004796,\n \"40\": 0.004796,\n \"41\": 0.009592,\n \"42\": 0.004796,\n \"43\": 0.004796,\n \"44\": 0.004796,\n \"45\": 0.009592,\n \"46\": 0.004796,\n \"47\": 0.009592,\n \"48\": 0.014388,\n \"49\": 0.014388,\n \"50\": 0.009592,\n \"51\": 0.009592,\n \"52\": 0.014388,\n \"53\": 0.009592,\n \"54\": 0.004796,\n \"55\": 0.009592,\n \"56\": 0.009592,\n \"57\": 0.009592,\n \"58\": 0.009592,\n \"59\": 0.009592,\n \"60\": 0.014388,\n \"61\": 0.004796,\n \"62\": 0.009592,\n \"63\": 0.009592,\n \"64\": 0.009592,\n \"65\": 0.004796,\n \"66\": 0.02398,\n \"67\": 0.009592,\n \"68\": 0.009592,\n \"69\": 0.033572,\n \"70\": 0.009592,\n \"75\": 0.004796,\n \"77\": 0.004796,\n \"79\": 0.067144,\n \"80\": 0.009592,\n \"81\": 0.009592,\n \"83\": 0.043164,\n \"85\": 0.004796,\n \"86\": 0.009592,\n \"87\": 0.028776,\n \"88\": 0.004796,\n \"91\": 0.019184,\n \"92\": 0.014388,\n \"93\": 0.009592,\n \"97\": 0.009592,\n \"98\": 0.04796,\n \"99\": 0.043164,\n \"101\": 0.014388,\n \"102\": 0.009592,\n \"103\": 0.26378,\n \"104\": 0.230208,\n \"105\": 0.273372,\n \"106\": 0.206228,\n \"107\": 0.230208,\n \"108\": 0.230208,\n \"109\": 0.786544,\n \"110\": 0.235004,\n \"111\": 0.292556,\n \"112\": 2.71454,\n \"113\": 0.004796,\n \"114\": 0.062348,\n \"115\": 0.02398,\n \"116\": 0.446028,\n \"117\": 0.282964,\n \"118\": 0.052756,\n \"119\": 0.038368,\n \"120\": 0.31174,\n \"121\": 0.04796,\n \"122\": 0.091124,\n \"123\": 0.062348,\n \"124\": 0.230208,\n \"125\": 0.244596,\n \"126\": 0.052756,\n \"127\": 0.052756,\n \"128\": 0.076736,\n \"129\": 0.067144,\n \"130\": 0.09592,\n \"131\": 0.709808,\n \"132\": 0.139084,\n \"133\": 0.52756,\n \"134\": 0.067144,\n \"135\": 0.067144,\n \"136\": 0.09592,\n \"137\": 0.062348,\n \"138\": 0.235004,\n \"139\": 3.34761,\n \"140\": 0.177452,\n \"141\": 0.398068,\n \"142\": 1.29972,\n \"143\": 10.4121,\n \"144\": 3.76486,\n \"145\": 41.8835\n};\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -11,7 +11,7 @@ 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-02-
|
|
14
|
+
* Generated at: 2026-02-22T16:25:02.516Z
|
|
15
15
|
*/
|
|
16
16
|
const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
|
|
17
17
|
const DEFAULT_VERSION_SHARE_BY_MAJOR = {
|
|
@@ -107,8 +107,8 @@ const DEFAULT_VERSION_SHARE_BY_MAJOR = {
|
|
|
107
107
|
"141": 0.398068,
|
|
108
108
|
"142": 1.29972,
|
|
109
109
|
"143": 10.4121,
|
|
110
|
-
"144":
|
|
111
|
-
"145":
|
|
110
|
+
"144": 3.76486,
|
|
111
|
+
"145": 41.8835
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -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-02-20T04:04:07.658Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-20T04:04:07.658Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000092,\n \"39\": 0.004796,\n \"40\": 0.004796,\n \"41\": 0.009592,\n \"42\": 0.004796,\n \"43\": 0.004796,\n \"44\": 0.004796,\n \"45\": 0.009592,\n \"46\": 0.004796,\n \"47\": 0.009592,\n \"48\": 0.014388,\n \"49\": 0.014388,\n \"50\": 0.009592,\n \"51\": 0.009592,\n \"52\": 0.014388,\n \"53\": 0.009592,\n \"54\": 0.004796,\n \"55\": 0.009592,\n \"56\": 0.009592,\n \"57\": 0.009592,\n \"58\": 0.009592,\n \"59\": 0.009592,\n \"60\": 0.014388,\n \"61\": 0.004796,\n \"62\": 0.009592,\n \"63\": 0.009592,\n \"64\": 0.009592,\n \"65\": 0.004796,\n \"66\": 0.02398,\n \"67\": 0.009592,\n \"68\": 0.009592,\n \"69\": 0.033572,\n \"70\": 0.009592,\n \"75\": 0.004796,\n \"77\": 0.004796,\n \"79\": 0.067144,\n \"80\": 0.009592,\n \"81\": 0.009592,\n \"83\": 0.043164,\n \"85\": 0.004796,\n \"86\": 0.009592,\n \"87\": 0.028776,\n \"88\": 0.004796,\n \"91\": 0.019184,\n \"92\": 0.014388,\n \"93\": 0.009592,\n \"97\": 0.009592,\n \"98\": 0.04796,\n \"99\": 0.043164,\n \"101\": 0.014388,\n \"102\": 0.009592,\n \"103\": 0.26378,\n \"104\": 0.230208,\n \"105\": 0.273372,\n \"106\": 0.206228,\n \"107\": 0.230208,\n \"108\": 0.230208,\n \"109\": 0.786544,\n \"110\": 0.235004,\n \"111\": 0.292556,\n \"112\": 2.71454,\n \"113\": 0.004796,\n \"114\": 0.062348,\n \"115\": 0.02398,\n \"116\": 0.446028,\n \"117\": 0.282964,\n \"118\": 0.052756,\n \"119\": 0.038368,\n \"120\": 0.31174,\n \"121\": 0.04796,\n \"122\": 0.091124,\n \"123\": 0.062348,\n \"124\": 0.230208,\n \"125\": 0.244596,\n \"126\": 0.052756,\n \"127\": 0.052756,\n \"128\": 0.076736,\n \"129\": 0.067144,\n \"130\": 0.09592,\n \"131\": 0.709808,\n \"132\": 0.139084,\n \"133\": 0.52756,\n \"134\": 0.067144,\n \"135\": 0.067144,\n \"136\": 0.09592,\n \"137\": 0.062348,\n \"138\": 0.235004,\n \"139\": 3.34761,\n \"140\": 0.177452,\n \"141\": 0.398068,\n \"142\": 1.29972,\n \"143\": 10.4121,\n \"144\": 41.8835,\n \"145\": 0.019184\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,OAAO;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,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,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,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,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,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,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ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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-02-22T16:25:02.516Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-22T16:25:02.516Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000092,\n \"39\": 0.004796,\n \"40\": 0.004796,\n \"41\": 0.009592,\n \"42\": 0.004796,\n \"43\": 0.004796,\n \"44\": 0.004796,\n \"45\": 0.009592,\n \"46\": 0.004796,\n \"47\": 0.009592,\n \"48\": 0.014388,\n \"49\": 0.014388,\n \"50\": 0.009592,\n \"51\": 0.009592,\n \"52\": 0.014388,\n \"53\": 0.009592,\n \"54\": 0.004796,\n \"55\": 0.009592,\n \"56\": 0.009592,\n \"57\": 0.009592,\n \"58\": 0.009592,\n \"59\": 0.009592,\n \"60\": 0.014388,\n \"61\": 0.004796,\n \"62\": 0.009592,\n \"63\": 0.009592,\n \"64\": 0.009592,\n \"65\": 0.004796,\n \"66\": 0.02398,\n \"67\": 0.009592,\n \"68\": 0.009592,\n \"69\": 0.033572,\n \"70\": 0.009592,\n \"75\": 0.004796,\n \"77\": 0.004796,\n \"79\": 0.067144,\n \"80\": 0.009592,\n \"81\": 0.009592,\n \"83\": 0.043164,\n \"85\": 0.004796,\n \"86\": 0.009592,\n \"87\": 0.028776,\n \"88\": 0.004796,\n \"91\": 0.019184,\n \"92\": 0.014388,\n \"93\": 0.009592,\n \"97\": 0.009592,\n \"98\": 0.04796,\n \"99\": 0.043164,\n \"101\": 0.014388,\n \"102\": 0.009592,\n \"103\": 0.26378,\n \"104\": 0.230208,\n \"105\": 0.273372,\n \"106\": 0.206228,\n \"107\": 0.230208,\n \"108\": 0.230208,\n \"109\": 0.786544,\n \"110\": 0.235004,\n \"111\": 0.292556,\n \"112\": 2.71454,\n \"113\": 0.004796,\n \"114\": 0.062348,\n \"115\": 0.02398,\n \"116\": 0.446028,\n \"117\": 0.282964,\n \"118\": 0.052756,\n \"119\": 0.038368,\n \"120\": 0.31174,\n \"121\": 0.04796,\n \"122\": 0.091124,\n \"123\": 0.062348,\n \"124\": 0.230208,\n \"125\": 0.244596,\n \"126\": 0.052756,\n \"127\": 0.052756,\n \"128\": 0.076736,\n \"129\": 0.067144,\n \"130\": 0.09592,\n \"131\": 0.709808,\n \"132\": 0.139084,\n \"133\": 0.52756,\n \"134\": 0.067144,\n \"135\": 0.067144,\n \"136\": 0.09592,\n \"137\": 0.062348,\n \"138\": 0.235004,\n \"139\": 3.34761,\n \"140\": 0.177452,\n \"141\": 0.398068,\n \"142\": 1.29972,\n \"143\": 10.4121,\n \"144\": 3.76486,\n \"145\": 41.8835\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,OAAO;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,OAAO;AACjB,IAAI,IAAI,EAAE,QAAQ;AAClB,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,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,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,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,OAAO;AAClB,IAAI,KAAK,EAAE,QAAQ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"}
|
package/dist/plugin.js
CHANGED
|
@@ -10,7 +10,7 @@ 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-02-
|
|
13
|
+
* Generated at: 2026-02-22T16:25:02.516Z
|
|
14
14
|
*/
|
|
15
15
|
const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';
|
|
16
16
|
const DEFAULT_VERSION_SHARE_BY_MAJOR = {
|
|
@@ -106,8 +106,8 @@ var capacitorWebviewVersionChecker = (function (exports, core) {
|
|
|
106
106
|
"141": 0.398068,
|
|
107
107
|
"142": 1.29972,
|
|
108
108
|
"143": 10.4121,
|
|
109
|
-
"144":
|
|
110
|
-
"145":
|
|
109
|
+
"144": 3.76486,
|
|
110
|
+
"145": 41.8835
|
|
111
111
|
};
|
|
112
112
|
|
|
113
113
|
const UNKNOWN_REASON = 'Web implementation is a compatibility shim. Native Android/iOS implementations provide full WebView checks.';
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.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-02-20T04:04:07.658Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-20T04:04:07.658Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000092,\n \"39\": 0.004796,\n \"40\": 0.004796,\n \"41\": 0.009592,\n \"42\": 0.004796,\n \"43\": 0.004796,\n \"44\": 0.004796,\n \"45\": 0.009592,\n \"46\": 0.004796,\n \"47\": 0.009592,\n \"48\": 0.014388,\n \"49\": 0.014388,\n \"50\": 0.009592,\n \"51\": 0.009592,\n \"52\": 0.014388,\n \"53\": 0.009592,\n \"54\": 0.004796,\n \"55\": 0.009592,\n \"56\": 0.009592,\n \"57\": 0.009592,\n \"58\": 0.009592,\n \"59\": 0.009592,\n \"60\": 0.014388,\n \"61\": 0.004796,\n \"62\": 0.009592,\n \"63\": 0.009592,\n \"64\": 0.009592,\n \"65\": 0.004796,\n \"66\": 0.02398,\n \"67\": 0.009592,\n \"68\": 0.009592,\n \"69\": 0.033572,\n \"70\": 0.009592,\n \"75\": 0.004796,\n \"77\": 0.004796,\n \"79\": 0.067144,\n \"80\": 0.009592,\n \"81\": 0.009592,\n \"83\": 0.043164,\n \"85\": 0.004796,\n \"86\": 0.009592,\n \"87\": 0.028776,\n \"88\": 0.004796,\n \"91\": 0.019184,\n \"92\": 0.014388,\n \"93\": 0.009592,\n \"97\": 0.009592,\n \"98\": 0.04796,\n \"99\": 0.043164,\n \"101\": 0.014388,\n \"102\": 0.009592,\n \"103\": 0.26378,\n \"104\": 0.230208,\n \"105\": 0.273372,\n \"106\": 0.206228,\n \"107\": 0.230208,\n \"108\": 0.230208,\n \"109\": 0.786544,\n \"110\": 0.235004,\n \"111\": 0.292556,\n \"112\": 2.71454,\n \"113\": 0.004796,\n \"114\": 0.062348,\n \"115\": 0.02398,\n \"116\": 0.446028,\n \"117\": 0.282964,\n \"118\": 0.052756,\n \"119\": 0.038368,\n \"120\": 0.31174,\n \"121\": 0.04796,\n \"122\": 0.091124,\n \"123\": 0.062348,\n \"124\": 0.230208,\n \"125\": 0.244596,\n \"126\": 0.052756,\n \"127\": 0.052756,\n \"128\": 0.076736,\n \"129\": 0.067144,\n \"130\": 0.09592,\n \"131\": 0.709808,\n \"132\": 0.139084,\n \"133\": 0.52756,\n \"134\": 0.067144,\n \"135\": 0.067144,\n \"136\": 0.09592,\n \"137\": 0.062348,\n \"138\": 0.235004,\n \"139\": 3.34761,\n \"140\": 0.177452,\n \"141\": 0.398068,\n \"142\": 1.29972,\n \"143\": 10.4121,\n \"144\": 41.8835,\n \"145\": 0.019184\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,UAAC,qBAAqB,GAAGA,mBAAc,CAAC,uBAAuB,EAAE;IACtE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;IAC5E,CAAC;;ICHD;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,iCAAiC,GAAG,8BAA8B;IAExE,MAAM,8BAA8B,GAAG;IAC9C,IAAI,GAAG,EAAE,QAAQ;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,OAAO;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,OAAO;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;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"}
|
|
1
|
+
{"version":3,"file":"plugin.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-02-22T16:25:02.516Z\n */\nexport const DEFAULT_VERSION_SHARE_DATA_SOURCE = 'generatedVersionShareByMajor';\nexport const DEFAULT_VERSION_SHARE_GENERATED_AT = '2026-02-22T16:25:02.516Z';\nexport const DEFAULT_VERSION_SHARE_BY_MAJOR = {\n \"4\": 0.000092,\n \"39\": 0.004796,\n \"40\": 0.004796,\n \"41\": 0.009592,\n \"42\": 0.004796,\n \"43\": 0.004796,\n \"44\": 0.004796,\n \"45\": 0.009592,\n \"46\": 0.004796,\n \"47\": 0.009592,\n \"48\": 0.014388,\n \"49\": 0.014388,\n \"50\": 0.009592,\n \"51\": 0.009592,\n \"52\": 0.014388,\n \"53\": 0.009592,\n \"54\": 0.004796,\n \"55\": 0.009592,\n \"56\": 0.009592,\n \"57\": 0.009592,\n \"58\": 0.009592,\n \"59\": 0.009592,\n \"60\": 0.014388,\n \"61\": 0.004796,\n \"62\": 0.009592,\n \"63\": 0.009592,\n \"64\": 0.009592,\n \"65\": 0.004796,\n \"66\": 0.02398,\n \"67\": 0.009592,\n \"68\": 0.009592,\n \"69\": 0.033572,\n \"70\": 0.009592,\n \"75\": 0.004796,\n \"77\": 0.004796,\n \"79\": 0.067144,\n \"80\": 0.009592,\n \"81\": 0.009592,\n \"83\": 0.043164,\n \"85\": 0.004796,\n \"86\": 0.009592,\n \"87\": 0.028776,\n \"88\": 0.004796,\n \"91\": 0.019184,\n \"92\": 0.014388,\n \"93\": 0.009592,\n \"97\": 0.009592,\n \"98\": 0.04796,\n \"99\": 0.043164,\n \"101\": 0.014388,\n \"102\": 0.009592,\n \"103\": 0.26378,\n \"104\": 0.230208,\n \"105\": 0.273372,\n \"106\": 0.206228,\n \"107\": 0.230208,\n \"108\": 0.230208,\n \"109\": 0.786544,\n \"110\": 0.235004,\n \"111\": 0.292556,\n \"112\": 2.71454,\n \"113\": 0.004796,\n \"114\": 0.062348,\n \"115\": 0.02398,\n \"116\": 0.446028,\n \"117\": 0.282964,\n \"118\": 0.052756,\n \"119\": 0.038368,\n \"120\": 0.31174,\n \"121\": 0.04796,\n \"122\": 0.091124,\n \"123\": 0.062348,\n \"124\": 0.230208,\n \"125\": 0.244596,\n \"126\": 0.052756,\n \"127\": 0.052756,\n \"128\": 0.076736,\n \"129\": 0.067144,\n \"130\": 0.09592,\n \"131\": 0.709808,\n \"132\": 0.139084,\n \"133\": 0.52756,\n \"134\": 0.067144,\n \"135\": 0.067144,\n \"136\": 0.09592,\n \"137\": 0.062348,\n \"138\": 0.235004,\n \"139\": 3.34761,\n \"140\": 0.177452,\n \"141\": 0.398068,\n \"142\": 1.29972,\n \"143\": 10.4121,\n \"144\": 3.76486,\n \"145\": 41.8835\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,UAAC,qBAAqB,GAAGA,mBAAc,CAAC,uBAAuB,EAAE;IACtE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;IAC5E,CAAC;;ICHD;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,iCAAiC,GAAG,8BAA8B;IAExE,MAAM,8BAA8B,GAAG;IAC9C,IAAI,GAAG,EAAE,QAAQ;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,OAAO;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,IAAI,EAAE,OAAO;IACjB,IAAI,IAAI,EAAE,QAAQ;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,QAAQ;IACnB,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,KAAK,EAAE,QAAQ;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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capgo/capacitor-webview-version-checker",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Capacitor plugin for checking outdated Android WebView engines, emitting status events, and presenting native update prompts.",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|