@dynamic-labs/react-native-extension 4.0.0-alpha.9 → 4.0.1

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/index.cjs CHANGED
@@ -3,32 +3,27 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var assertPackageVersion = require('@dynamic-labs/assert-package-version');
6
+ var reactNative = require('react-native');
6
7
  var react = require('react');
7
8
  var reactNativeWebview = require('react-native-webview');
8
9
  var messageTransport = require('@dynamic-labs/message-transport');
9
10
  var logger$1 = require('@dynamic-labs/logger');
10
- var reactNative = require('react-native');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
  var reactNativePasskeyStamper = require('@turnkey/react-native-passkey-stamper');
13
13
  var expoLinking = require('expo-linking');
14
14
  var expoWebBrowser = require('expo-web-browser');
15
15
  var expoSecureStore = require('expo-secure-store');
16
16
 
17
- var version = "4.0.0-alpha.9";
17
+ var version = "4.0.1";
18
18
 
19
19
  function _extends() {
20
- _extends = Object.assign ? Object.assign.bind() : function (target) {
21
- for (var i = 1; i < arguments.length; i++) {
22
- var source = arguments[i];
23
- for (var key in source) {
24
- if (Object.prototype.hasOwnProperty.call(source, key)) {
25
- target[key] = source[key];
26
- }
27
- }
20
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
21
+ for (var e = 1; e < arguments.length; e++) {
22
+ var t = arguments[e];
23
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
28
24
  }
29
- return target;
30
- };
31
- return _extends.apply(this, arguments);
25
+ return n;
26
+ }, _extends.apply(null, arguments);
32
27
  }
33
28
 
34
29
  const logger = new logger$1.Logger('react-native-extension');
@@ -189,21 +184,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
189
184
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
190
185
  };
191
186
 
192
- const setupFetchHandler = core => {
193
- const fetchRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
194
- fetchRequestChannel.handle('fetch', (input, init) => __awaiter(void 0, void 0, void 0, function* () {
195
- const response = yield fetch(input, init);
196
- const responseBody = yield response.text();
197
- return {
198
- body: responseBody,
199
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
200
- headers: Object.fromEntries(response.headers.entries()),
201
- status: response.status,
202
- statusText: response.statusText
203
- };
204
- }));
205
- };
206
-
207
187
  const setupPasskeyHandler = core => {
208
188
  const passkeysRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
209
189
  passkeysRequestChannel.handle('createPasskey', _a => __awaiter(void 0, [_a], void 0, function* ({
@@ -254,11 +234,35 @@ const setupPlatformHandler = core => {
254
234
  }));
255
235
  };
256
236
 
257
- const setupSecureStorageHandler = core => {
258
- const secureStorageRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
259
- secureStorageRequestChannel.handle('getSecureItem', expoSecureStore.getItemAsync);
260
- secureStorageRequestChannel.handle('setSecureItem', expoSecureStore.setItemAsync);
261
- secureStorageRequestChannel.handle('deleteSecureItem', expoSecureStore.deleteItemAsync);
237
+ const assertValidSource = source => {
238
+ if (source !== 'secureStorage') {
239
+ throw new Error(`Invalid storage source "${source}"`);
240
+ }
241
+ };
242
+ const setupStorageHandler = core => {
243
+ const storageRequestChannel = messageTransport.createRequestChannel(core.messageTransport);
244
+ storageRequestChannel.handle('getItem', _a => __awaiter(void 0, [_a], void 0, function* ({
245
+ key,
246
+ source
247
+ }) {
248
+ assertValidSource(source);
249
+ return expoSecureStore.getItemAsync(key);
250
+ }));
251
+ storageRequestChannel.handle('deleteItem', _b => __awaiter(void 0, [_b], void 0, function* ({
252
+ key,
253
+ source
254
+ }) {
255
+ assertValidSource(source);
256
+ return expoSecureStore.deleteItemAsync(key);
257
+ }));
258
+ storageRequestChannel.handle('setItem', _c => __awaiter(void 0, [_c], void 0, function* ({
259
+ key,
260
+ data,
261
+ source
262
+ }) {
263
+ assertValidSource(source);
264
+ return expoSecureStore.setItemAsync(key, data);
265
+ }));
262
266
  };
263
267
 
264
268
  const defaultWebviewUrl = `https://webview.dynamicauth.com/${version}`;
@@ -267,11 +271,22 @@ const ReactNativeExtension = ({
267
271
  webviewDebuggingEnabled,
268
272
  appOrigin
269
273
  } = {}) => (_, core) => {
274
+ const isPlatformSupportedByWebView = reactNative.Platform.OS === 'android' || reactNative.Platform.OS === 'ios';
275
+ /**
276
+ * If react-native-webview does not supported it will return
277
+ * a dummy webview component so it does not break expo for web
278
+ */
279
+ if (!isPlatformSupportedByWebView) {
280
+ return {
281
+ reactNative: {
282
+ WebView: () => null
283
+ }
284
+ };
285
+ }
270
286
  if (appOrigin) core.manifest.setAppOrigin(appOrigin);
271
287
  setupPasskeyHandler(core);
272
- setupFetchHandler(core);
273
288
  setupPlatformHandler(core);
274
- setupSecureStorageHandler(core);
289
+ setupStorageHandler(core);
275
290
  return {
276
291
  reactNative: {
277
292
  WebView: createWebView({
package/index.js CHANGED
@@ -1,30 +1,25 @@
1
1
  import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
2
+ import { StyleSheet, Platform } from 'react-native';
2
3
  import { useRef, useEffect, useCallback, useState } from 'react';
3
4
  import { WebView as WebView$1 } from 'react-native-webview';
4
5
  import { parseMessageTransportData, createRequestChannel } from '@dynamic-labs/message-transport';
5
6
  import { Logger } from '@dynamic-labs/logger';
6
- import { StyleSheet } from 'react-native';
7
7
  import { jsx } from 'react/jsx-runtime';
8
8
  import { createPasskey, PasskeyStamper } from '@turnkey/react-native-passkey-stamper';
9
9
  import { createURL, openURL } from 'expo-linking';
10
10
  import { openAuthSessionAsync } from 'expo-web-browser';
11
- import { getItemAsync, setItemAsync, deleteItemAsync } from 'expo-secure-store';
11
+ import { getItemAsync, deleteItemAsync, setItemAsync } from 'expo-secure-store';
12
12
 
13
- var version = "4.0.0-alpha.9";
13
+ var version = "4.0.1";
14
14
 
15
15
  function _extends() {
16
- _extends = Object.assign ? Object.assign.bind() : function (target) {
17
- for (var i = 1; i < arguments.length; i++) {
18
- var source = arguments[i];
19
- for (var key in source) {
20
- if (Object.prototype.hasOwnProperty.call(source, key)) {
21
- target[key] = source[key];
22
- }
23
- }
16
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
17
+ for (var e = 1; e < arguments.length; e++) {
18
+ var t = arguments[e];
19
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
24
20
  }
25
- return target;
26
- };
27
- return _extends.apply(this, arguments);
21
+ return n;
22
+ }, _extends.apply(null, arguments);
28
23
  }
29
24
 
30
25
  const logger = new Logger('react-native-extension');
@@ -185,21 +180,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
185
180
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
186
181
  };
187
182
 
188
- const setupFetchHandler = core => {
189
- const fetchRequestChannel = createRequestChannel(core.messageTransport);
190
- fetchRequestChannel.handle('fetch', (input, init) => __awaiter(void 0, void 0, void 0, function* () {
191
- const response = yield fetch(input, init);
192
- const responseBody = yield response.text();
193
- return {
194
- body: responseBody,
195
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
196
- headers: Object.fromEntries(response.headers.entries()),
197
- status: response.status,
198
- statusText: response.statusText
199
- };
200
- }));
201
- };
202
-
203
183
  const setupPasskeyHandler = core => {
204
184
  const passkeysRequestChannel = createRequestChannel(core.messageTransport);
205
185
  passkeysRequestChannel.handle('createPasskey', _a => __awaiter(void 0, [_a], void 0, function* ({
@@ -250,11 +230,35 @@ const setupPlatformHandler = core => {
250
230
  }));
251
231
  };
252
232
 
253
- const setupSecureStorageHandler = core => {
254
- const secureStorageRequestChannel = createRequestChannel(core.messageTransport);
255
- secureStorageRequestChannel.handle('getSecureItem', getItemAsync);
256
- secureStorageRequestChannel.handle('setSecureItem', setItemAsync);
257
- secureStorageRequestChannel.handle('deleteSecureItem', deleteItemAsync);
233
+ const assertValidSource = source => {
234
+ if (source !== 'secureStorage') {
235
+ throw new Error(`Invalid storage source "${source}"`);
236
+ }
237
+ };
238
+ const setupStorageHandler = core => {
239
+ const storageRequestChannel = createRequestChannel(core.messageTransport);
240
+ storageRequestChannel.handle('getItem', _a => __awaiter(void 0, [_a], void 0, function* ({
241
+ key,
242
+ source
243
+ }) {
244
+ assertValidSource(source);
245
+ return getItemAsync(key);
246
+ }));
247
+ storageRequestChannel.handle('deleteItem', _b => __awaiter(void 0, [_b], void 0, function* ({
248
+ key,
249
+ source
250
+ }) {
251
+ assertValidSource(source);
252
+ return deleteItemAsync(key);
253
+ }));
254
+ storageRequestChannel.handle('setItem', _c => __awaiter(void 0, [_c], void 0, function* ({
255
+ key,
256
+ data,
257
+ source
258
+ }) {
259
+ assertValidSource(source);
260
+ return setItemAsync(key, data);
261
+ }));
258
262
  };
259
263
 
260
264
  const defaultWebviewUrl = `https://webview.dynamicauth.com/${version}`;
@@ -263,11 +267,22 @@ const ReactNativeExtension = ({
263
267
  webviewDebuggingEnabled,
264
268
  appOrigin
265
269
  } = {}) => (_, core) => {
270
+ const isPlatformSupportedByWebView = Platform.OS === 'android' || Platform.OS === 'ios';
271
+ /**
272
+ * If react-native-webview does not supported it will return
273
+ * a dummy webview component so it does not break expo for web
274
+ */
275
+ if (!isPlatformSupportedByWebView) {
276
+ return {
277
+ reactNative: {
278
+ WebView: () => null
279
+ }
280
+ };
281
+ }
266
282
  if (appOrigin) core.manifest.setAppOrigin(appOrigin);
267
283
  setupPasskeyHandler(core);
268
- setupFetchHandler(core);
269
284
  setupPlatformHandler(core);
270
- setupSecureStorageHandler(core);
285
+ setupStorageHandler(core);
271
286
  return {
272
287
  reactNative: {
273
288
  WebView: createWebView({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/react-native-extension",
3
- "version": "4.0.0-alpha.9",
3
+ "version": "4.0.1",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./src/index.d.ts",
@@ -14,11 +14,11 @@
14
14
  "./package.json": "./package.json"
15
15
  },
16
16
  "dependencies": {
17
- "@turnkey/react-native-passkey-stamper": "0.2.5",
18
- "@dynamic-labs/assert-package-version": "4.0.0-alpha.9",
19
- "@dynamic-labs/client": "4.0.0-alpha.9",
20
- "@dynamic-labs/logger": "4.0.0-alpha.9",
21
- "@dynamic-labs/message-transport": "4.0.0-alpha.9"
17
+ "@turnkey/react-native-passkey-stamper": "0.2.15",
18
+ "@dynamic-labs/assert-package-version": "4.0.1",
19
+ "@dynamic-labs/client": "4.0.1",
20
+ "@dynamic-labs/logger": "4.0.1",
21
+ "@dynamic-labs/message-transport": "4.0.1"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": "^18.2.0",
@@ -16,7 +16,7 @@ export type ReactNativeExtensionProps = {
16
16
  };
17
17
  export type IReactNativeExtension = {
18
18
  reactNative: {
19
- WebView: () => JSX.Element;
19
+ WebView: () => JSX.Element | null;
20
20
  };
21
21
  };
22
22
  export declare const ReactNativeExtension: ({ webviewUrl, webviewDebuggingEnabled, appOrigin, }?: ReactNativeExtensionProps) => Extension<IReactNativeExtension>;
@@ -0,0 +1 @@
1
+ export { setupStorageHandler } from './setupStorageHandler';
@@ -0,0 +1,2 @@
1
+ import { Core } from '@dynamic-labs/client';
2
+ export declare const setupStorageHandler: (core: Core) => void;
@@ -1 +0,0 @@
1
- export { setupFetchHandler } from './setupFetchHandler';
@@ -1,2 +0,0 @@
1
- import { Core } from '@dynamic-labs/client';
2
- export declare const setupFetchHandler: (core: Core) => void;
@@ -1 +0,0 @@
1
- export { setupSecureStorageHandler } from './setupSecureStorageHandler';
@@ -1,2 +0,0 @@
1
- import { Core } from '@dynamic-labs/client';
2
- export declare const setupSecureStorageHandler: (core: Core) => void;