@alfalab/bridge-to-native 1.0.1 → 1.0.2

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.
@@ -202,8 +202,10 @@ export declare class BridgeToNative {
202
202
  /**
203
203
  * Для перезагрузки страницы необходимо использовать этот метод.
204
204
  * Иначе синхронизация состояния с NA будет потеряна.
205
+ * По умолчанию метод сам делает location.reload,
206
+ * но с помощью аргумента можно отключить этот вызов
205
207
  */
206
- reload(): void;
208
+ reload(skipReload?: boolean): void;
207
209
  /**
208
210
  * Информирует NA, что WA находится на первом экране. Это приведёт к тому,
209
211
  * что следующее нажатие на кнопку «Назад» в NA закроет WV.
@@ -242,9 +242,11 @@ class BridgeToNative {
242
242
  /**
243
243
  * Для перезагрузки страницы необходимо использовать этот метод.
244
244
  * Иначе синхронизация состояния с NA будет потеряна.
245
+ * По умолчанию метод сам делает location.reload,
246
+ * но с помощью аргумента можно отключить этот вызов
245
247
  */
246
- reload() {
247
- this.nativeNavigationAndTitleService.reload();
248
+ reload(skipReload) {
249
+ this.nativeNavigationAndTitleService.reload(skipReload);
248
250
  }
249
251
  /**
250
252
  * Информирует NA, что WA находится на первом экране. Это приведёт к тому,
@@ -18,7 +18,7 @@ export declare class NativeNavigationAndTitleService {
18
18
  goBackAFewStepsClientSide(stepsNumber: number, autoCloseWebview?: boolean): void;
19
19
  navigateClientSide(url: HistoryPushStateParams[2], state?: HistoryPushStateParams[0], nativeTitle?: string): void;
20
20
  navigateServerSide(link: LocationAssignParam, nativeTitle?: string): void;
21
- reload(): void;
21
+ reload(skipReload?: boolean): void;
22
22
  setInitialView(nativeTitle?: string): void;
23
23
  setTitle(nativeTitle: string): void;
24
24
  /**
@@ -76,11 +76,14 @@ class NativeNavigationAndTitleService {
76
76
  this.saveNativeHistoryStack();
77
77
  window.location.assign(this.prepareExternalLinkBeforeOpen(url));
78
78
  }
79
- reload() {
79
+ reload(skipReload = false) {
80
80
  this.nativeHistoryStack.push(1 /* NativeHistoryStackSpecialValues.TemporaryReloadStub */); // небольшой костыль, чтобы переиспользовать server-side сценарий
81
81
  this.saveNativeHistoryStack();
82
82
  // информация для серверной стороны B2N, что происходит `reload` и парсить запрос на предмет NA параметров не нужно (в нем их скорее всего не будет)
83
83
  document.cookie = `${query_and_headers_keys_1.COOKIE_KEY_BRIDGE_TO_NATIVE_RELOAD}=true; Path=/`;
84
+ if (!skipReload) {
85
+ window.location.reload();
86
+ }
84
87
  }
85
88
  setInitialView(nativeTitle = '') {
86
89
  this.nativeHistoryStack = [nativeTitle];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/bridge-to-native",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "license": "MIT",
5
5
  "description": "Утилита для удобной работы веб приложения внутри нативного приложения и коммуникации с ним.",
6
6
  "engines": {
@@ -1,4 +1,9 @@
1
1
  export declare const bridgeToNativeDataCookieExistencePattern: RegExp;
2
+ /**
3
+ * Схема опирается на стандарт RFC 3986
4
+ *
5
+ * @see https://datatracker.ietf.org/doc/html/rfc3986#section-3.1
6
+ */
2
7
  export declare const iosAppIdPattern: RegExp;
3
8
  export declare const versionPattern: RegExp;
4
9
  export declare const webviewUaIOSPattern: RegExp;
@@ -4,7 +4,12 @@ exports.webviewUaIOSPattern = exports.versionPattern = exports.iosAppIdPattern =
4
4
  const query_and_headers_keys_1 = require("../query-and-headers-keys");
5
5
  // Проверка, согласно спецификации https://httpwg.org/specs/rfc6265.html#cookie
6
6
  exports.bridgeToNativeDataCookieExistencePattern = new RegExp(`^(.+;\\s?)?${query_and_headers_keys_1.COOKIE_KEY_BRIDGE_TO_NATIVE_DATA}=`);
7
- exports.iosAppIdPattern = /^com\.([a-z]+)\.app$/;
7
+ /**
8
+ * Схема опирается на стандарт RFC 3986
9
+ *
10
+ * @see https://datatracker.ietf.org/doc/html/rfc3986#section-3.1
11
+ */
12
+ exports.iosAppIdPattern = /^com\.([a-z0-9+.-]+)\.app$/i;
8
13
  // Вебвью Android приписывает после версии тип билда, например `feature`. Нам эта информация не нужна.
9
14
  exports.versionPattern = /^(\d+\.\d+\.\d+)(\s.+)?$/;
10
15
  exports.webviewUaIOSPattern = /WebView|(iPhone|iPod|iPad)(?!.*Safari)/i;