@dynamic-labs/react-native-extension 4.53.0 → 4.53.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.
Files changed (3) hide show
  1. package/index.cjs +31 -2
  2. package/index.js +31 -2
  3. package/package.json +6 -6
package/index.cjs CHANGED
@@ -33,7 +33,7 @@ function _interopNamespace(e) {
33
33
  return Object.freeze(n);
34
34
  }
35
35
 
36
- var version = "4.53.0";
36
+ var version = "4.53.2";
37
37
 
38
38
  function _extends() {
39
39
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
@@ -246,6 +246,8 @@ const assignEnvironmentIdToUrl = (url, environmentId) => {
246
246
  return _url;
247
247
  };
248
248
 
249
+ const waasOrigins = ['https://app.dynamic-preprod.xyz', 'https://app.dynamicauth.com'];
250
+ const turnkeyOrigins = ['https://recovery.turnkey.com', 'https://export.turnkey.com'];
249
251
  const WebView = ({
250
252
  webviewUrl: initialWebViewUrl,
251
253
  core,
@@ -331,9 +333,36 @@ const WebView = ({
331
333
  webviewDebuggingEnabled: _webviewDebuggingEnabled,
332
334
  onContentProcessDidTerminate: blockAndReloadWebView,
333
335
  onRenderProcessGone: blockAndReloadWebView,
334
- onError: () => setWebViewLoadError()
336
+ onError: () => setWebViewLoadError(),
337
+ setSupportMultipleWindows: false,
338
+ onShouldStartLoadWithRequest: request => {
339
+ const requestUrl = getUrl(request.url);
340
+ // Invalid URL, never navigate to it
341
+ if (!requestUrl) return false;
342
+ // Same origin as the webview, allow navigation
343
+ if (webViewUrl.origin === requestUrl.origin) {
344
+ return true;
345
+ }
346
+ // Allow WAAS iframe to load
347
+ if (requestUrl.pathname.startsWith('/waas-v1') && waasOrigins.includes(requestUrl.origin)) {
348
+ return true;
349
+ }
350
+ // Allow TurnkeyV1 iframe to load
351
+ if (turnkeyOrigins.includes(requestUrl.origin)) {
352
+ return true;
353
+ }
354
+ return false;
355
+ }
335
356
  }, webViewKey);
336
357
  };
358
+ const getUrl = url => {
359
+ try {
360
+ return new URL(url);
361
+ } catch (error) {
362
+ logger.error('Failed to get origin from url', error);
363
+ return null;
364
+ }
365
+ };
337
366
  const createWebView = internalProps => {
338
367
  const WebViewWrapper = props => /*#__PURE__*/jsxRuntime.jsx(WebView, _extends({}, internalProps, props));
339
368
  return WebViewWrapper;
package/index.js CHANGED
@@ -11,7 +11,7 @@ import { openAuthSessionAsync } from 'expo-web-browser';
11
11
  import { getItemAsync, deleteItemAsync, setItemAsync } from 'expo-secure-store';
12
12
  import { createPasskey, PasskeyStamper } from '@turnkey/react-native-passkey-stamper';
13
13
 
14
- var version = "4.53.0";
14
+ var version = "4.53.2";
15
15
 
16
16
  function _extends() {
17
17
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
@@ -224,6 +224,8 @@ const assignEnvironmentIdToUrl = (url, environmentId) => {
224
224
  return _url;
225
225
  };
226
226
 
227
+ const waasOrigins = ['https://app.dynamic-preprod.xyz', 'https://app.dynamicauth.com'];
228
+ const turnkeyOrigins = ['https://recovery.turnkey.com', 'https://export.turnkey.com'];
227
229
  const WebView = ({
228
230
  webviewUrl: initialWebViewUrl,
229
231
  core,
@@ -309,9 +311,36 @@ const WebView = ({
309
311
  webviewDebuggingEnabled: _webviewDebuggingEnabled,
310
312
  onContentProcessDidTerminate: blockAndReloadWebView,
311
313
  onRenderProcessGone: blockAndReloadWebView,
312
- onError: () => setWebViewLoadError()
314
+ onError: () => setWebViewLoadError(),
315
+ setSupportMultipleWindows: false,
316
+ onShouldStartLoadWithRequest: request => {
317
+ const requestUrl = getUrl(request.url);
318
+ // Invalid URL, never navigate to it
319
+ if (!requestUrl) return false;
320
+ // Same origin as the webview, allow navigation
321
+ if (webViewUrl.origin === requestUrl.origin) {
322
+ return true;
323
+ }
324
+ // Allow WAAS iframe to load
325
+ if (requestUrl.pathname.startsWith('/waas-v1') && waasOrigins.includes(requestUrl.origin)) {
326
+ return true;
327
+ }
328
+ // Allow TurnkeyV1 iframe to load
329
+ if (turnkeyOrigins.includes(requestUrl.origin)) {
330
+ return true;
331
+ }
332
+ return false;
333
+ }
313
334
  }, webViewKey);
314
335
  };
336
+ const getUrl = url => {
337
+ try {
338
+ return new URL(url);
339
+ } catch (error) {
340
+ logger.error('Failed to get origin from url', error);
341
+ return null;
342
+ }
343
+ };
315
344
  const createWebView = internalProps => {
316
345
  const WebViewWrapper = props => /*#__PURE__*/jsx(WebView, _extends({}, internalProps, props));
317
346
  return WebViewWrapper;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/react-native-extension",
3
- "version": "4.53.0",
3
+ "version": "4.53.2",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./src/index.d.ts",
@@ -18,11 +18,11 @@
18
18
  "@turnkey/react-native-passkey-stamper": "1.1.3",
19
19
  "@react-native-documents/picker": "^11.0.0",
20
20
  "react-native-fs": ">=2.20.0",
21
- "@dynamic-labs/assert-package-version": "4.53.0",
22
- "@dynamic-labs/client": "4.53.0",
23
- "@dynamic-labs/logger": "4.53.0",
24
- "@dynamic-labs/message-transport": "4.53.0",
25
- "@dynamic-labs/webview-messages": "4.53.0"
21
+ "@dynamic-labs/assert-package-version": "4.53.2",
22
+ "@dynamic-labs/client": "4.53.2",
23
+ "@dynamic-labs/logger": "4.53.2",
24
+ "@dynamic-labs/message-transport": "4.53.2",
25
+ "@dynamic-labs/webview-messages": "4.53.2"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18.0.0 <20.0.0",