@soyio/soyio-rn-sdk 2.3.0 → 3.0.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.
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handlePasskeyAuthentication = exports.handlePasskeyRequired = void 0;
40
+ var react_native_inappbrowser_reborn_1 = require("react-native-inappbrowser-reborn");
41
+ var constants_1 = require("./constants");
42
+ var inapp_browser_1 = require("./inapp-browser");
43
+ function getBaseUrl(developmentUrl, isSandbox) {
44
+ return developmentUrl || (isSandbox ? constants_1.SANDBOX_URL : constants_1.PRODUCTION_URL);
45
+ }
46
+ var openAuthBrowser = function (authUrl, uriScheme, onComplete) { return __awaiter(void 0, void 0, void 0, function () {
47
+ var deepLink, result;
48
+ return __generator(this, function (_a) {
49
+ switch (_a.label) {
50
+ case 0:
51
+ deepLink = "".concat(uriScheme, "://success");
52
+ return [4 /*yield*/, react_native_inappbrowser_reborn_1.InAppBrowser.isAvailable()];
53
+ case 1:
54
+ if (!(_a.sent())) {
55
+ throw new Error('InAppBrowser is not available');
56
+ }
57
+ return [4 /*yield*/, react_native_inappbrowser_reborn_1.InAppBrowser.openAuth(authUrl, deepLink, inapp_browser_1.IN_APP_BROWSER_OPTIONS)];
58
+ case 2:
59
+ result = _a.sent();
60
+ if (result.type === 'success')
61
+ onComplete === null || onComplete === void 0 ? void 0 : onComplete();
62
+ return [2 /*return*/];
63
+ }
64
+ });
65
+ }); };
66
+ var handlePasskeyRequired = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
67
+ var baseUrl, authUrl;
68
+ var companyId = _b.companyId, sessionToken = _b.sessionToken, uriScheme = _b.uriScheme, _c = _b.isSandbox, isSandbox = _c === void 0 ? false : _c, developmentUrl = _b.developmentUrl, onComplete = _b.onComplete;
69
+ return __generator(this, function (_d) {
70
+ switch (_d.label) {
71
+ case 0:
72
+ baseUrl = getBaseUrl(developmentUrl, isSandbox);
73
+ authUrl = new URL("".concat(baseUrl, "/widget/register_passkey"));
74
+ authUrl.searchParams.append('session_token', sessionToken);
75
+ authUrl.searchParams.append('company_id', companyId);
76
+ authUrl.searchParams.append('uriScheme', uriScheme);
77
+ return [4 /*yield*/, openAuthBrowser(authUrl.toString(), uriScheme, onComplete)];
78
+ case 1:
79
+ _d.sent();
80
+ return [2 /*return*/];
81
+ }
82
+ });
83
+ }); };
84
+ exports.handlePasskeyRequired = handlePasskeyRequired;
85
+ var handlePasskeyAuthentication = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
86
+ var baseUrl, authUrl;
87
+ var authRequestId = _b.authRequestId, uriScheme = _b.uriScheme, _c = _b.isSandbox, isSandbox = _c === void 0 ? false : _c, developmentUrl = _b.developmentUrl, onComplete = _b.onComplete;
88
+ return __generator(this, function (_d) {
89
+ switch (_d.label) {
90
+ case 0:
91
+ baseUrl = getBaseUrl(developmentUrl, isSandbox);
92
+ authUrl = new URL("".concat(baseUrl, "/widget/passkey_authentication"));
93
+ authUrl.searchParams.append('requestable_id', authRequestId);
94
+ authUrl.searchParams.append('uriScheme', uriScheme);
95
+ return [4 /*yield*/, openAuthBrowser(authUrl.toString(), uriScheme, onComplete)];
96
+ case 1:
97
+ _d.sent();
98
+ return [2 /*return*/];
99
+ }
100
+ });
101
+ }); };
102
+ exports.handlePasskeyAuthentication = handlePasskeyAuthentication;
103
+ //# sourceMappingURL=passkey-bridge.js.map
@@ -5,30 +5,44 @@ type NewDisclosureParams = {
5
5
  userEmail?: string;
6
6
  forceError?: SoyioErrors;
7
7
  };
8
- type ExistingDisclosureParams = {
8
+ export type ExistingDisclosureParams = {
9
9
  templateId?: never;
10
10
  disclosureRequestId: string;
11
11
  userEmail?: never;
12
12
  forceError?: SoyioErrors;
13
13
  };
14
+ export type DisclosureParams = NewDisclosureParams | ExistingDisclosureParams;
14
15
  export type AuthRequestParams = {
15
16
  authRequestId: `authreq_${string}`;
16
17
  };
17
- export type SoyioWidgetParams = {
18
- companyId?: string;
19
- userReference?: string;
18
+ export type SoyioWidgetBaseOptions = {
20
19
  uriScheme: string;
21
20
  isSandbox?: boolean;
22
- customColor?: string;
23
21
  developmentUrl?: string;
24
22
  };
25
- export type DisclosureParams = NewDisclosureParams | ExistingDisclosureParams;
26
- export type SoyioWidgetViewPropsType = {
27
- options: SoyioWidgetParams;
28
- onEventChange?: (event: {
29
- type: string;
30
- url?: string;
31
- message?: string;
32
- }) => void;
23
+ export type SoyioWidgetDisclosureOptions = SoyioWidgetBaseOptions & {
24
+ companyId: string;
25
+ userReference: string;
26
+ };
27
+ export type SoyioWidgetAuthenticationOptions = SoyioWidgetBaseOptions;
28
+ export type SoyioWidgetOptions = SoyioWidgetDisclosureOptions | SoyioWidgetAuthenticationOptions;
29
+ export type WebviewSuccessEvent = {
30
+ type: 'SUCCESS';
31
+ };
32
+ export type PasskeyRegistrationRequired = {
33
+ type: 'PASSKEY_REQUIRED';
34
+ sessionToken: string;
35
+ };
36
+ export type PasskeyAuthRequired = {
37
+ type: 'PASSKEY_AUTHENTICATION_REQUIRED';
38
+ };
39
+ export type WidgetDisclosureEvents = WebviewSuccessEvent | PasskeyRegistrationRequired;
40
+ export type WidgetAuthRequestEvents = WebviewSuccessEvent | PasskeyAuthRequired;
41
+ export type WebViewEvent = WidgetDisclosureEvents | WidgetAuthRequestEvents;
42
+ export type SoyioWidgetProps = {
43
+ options: SoyioWidgetOptions;
44
+ requestType: 'disclosure' | 'authentication_request';
45
+ requestParams: DisclosureParams | AuthRequestParams;
46
+ onSuccess?: () => void;
33
47
  };
34
48
  export {};
@@ -0,0 +1,4 @@
1
+ export { buildUrl } from './url-builder';
2
+ export { buildMessageHandler } from './message-handler';
3
+ export { isDisclosureRequest } from './type-guards';
4
+ export { getPlatformSuffix } from './platform';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPlatformSuffix = exports.isDisclosureRequest = exports.buildMessageHandler = exports.buildUrl = void 0;
4
+ var url_builder_1 = require("./url-builder");
5
+ Object.defineProperty(exports, "buildUrl", { enumerable: true, get: function () { return url_builder_1.buildUrl; } });
6
+ var message_handler_1 = require("./message-handler");
7
+ Object.defineProperty(exports, "buildMessageHandler", { enumerable: true, get: function () { return message_handler_1.buildMessageHandler; } });
8
+ var type_guards_1 = require("./type-guards");
9
+ Object.defineProperty(exports, "isDisclosureRequest", { enumerable: true, get: function () { return type_guards_1.isDisclosureRequest; } });
10
+ var platform_1 = require("./platform");
11
+ Object.defineProperty(exports, "getPlatformSuffix", { enumerable: true, get: function () { return platform_1.getPlatformSuffix; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import type { WebView, WebViewMessageEvent } from 'react-native-webview';
2
+ import type { AuthRequestParams, DisclosureParams, SoyioWidgetOptions } from '../types';
3
+ export declare function buildMessageHandler(options: SoyioWidgetOptions, webViewRef: React.RefObject<WebView>, requestParams: DisclosureParams | AuthRequestParams, onSuccess?: () => void): (event: WebViewMessageEvent) => void;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMessageHandler = buildMessageHandler;
4
+ var react_native_1 = require("react-native");
5
+ var passkey_bridge_1 = require("../passkey-bridge");
6
+ var type_guards_1 = require("./type-guards");
7
+ function postMessageToWebView(webViewRef, messageType) {
8
+ var message = JSON.stringify({ type: messageType });
9
+ if (react_native_1.Platform.OS === 'android') {
10
+ webViewRef.current.injectJavaScript("\n try {\n const message = ".concat(JSON.stringify(message), ";\n window.postMessage?.(message, '*');\n document.dispatchEvent?.(new MessageEvent('message', { data: message }));\n } catch (e) {\n console.warn('Failed to send message to WebView:', e);\n }\n true;\n "));
11
+ }
12
+ else {
13
+ webViewRef.current.postMessage(message);
14
+ }
15
+ }
16
+ function handleSuccessEvent(onSuccess) {
17
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
18
+ }
19
+ function handlePasskeyRequiredEvent(eventData, dependencies) {
20
+ var options = dependencies.options, webViewRef = dependencies.webViewRef, requestParams = dependencies.requestParams;
21
+ if (!(0, type_guards_1.isDisclosureRequest)(requestParams))
22
+ return;
23
+ if ('companyId' in options) {
24
+ (0, passkey_bridge_1.handlePasskeyRequired)({
25
+ companyId: options.companyId,
26
+ sessionToken: eventData.sessionToken,
27
+ uriScheme: options.uriScheme,
28
+ isSandbox: options.isSandbox,
29
+ developmentUrl: options.developmentUrl,
30
+ onComplete: function () { return postMessageToWebView(webViewRef, 'PASSKEY_REGISTERED'); },
31
+ });
32
+ }
33
+ }
34
+ function handlePasskeyAuthenticationEvent(dependencies) {
35
+ var options = dependencies.options, webViewRef = dependencies.webViewRef, requestParams = dependencies.requestParams;
36
+ if (!(0, type_guards_1.isAuthenticationRequest)(requestParams))
37
+ return;
38
+ (0, passkey_bridge_1.handlePasskeyAuthentication)({
39
+ authRequestId: requestParams.authRequestId,
40
+ uriScheme: options.uriScheme,
41
+ isSandbox: options.isSandbox,
42
+ developmentUrl: options.developmentUrl,
43
+ onComplete: function () { return postMessageToWebView(webViewRef, 'PASSKEY_AUTHENTICATED'); },
44
+ });
45
+ }
46
+ function buildMessageHandler(options, webViewRef, requestParams, onSuccess) {
47
+ var dependencies = {
48
+ options: options,
49
+ webViewRef: webViewRef,
50
+ requestParams: requestParams,
51
+ onSuccess: onSuccess,
52
+ };
53
+ return function (event) {
54
+ try {
55
+ var eventData = JSON.parse(event.nativeEvent.data);
56
+ switch (eventData.type) {
57
+ case 'SUCCESS':
58
+ handleSuccessEvent(onSuccess);
59
+ break;
60
+ case 'PASSKEY_REQUIRED':
61
+ handlePasskeyRequiredEvent(eventData, dependencies);
62
+ break;
63
+ case 'PASSKEY_AUTHENTICATION_REQUIRED':
64
+ handlePasskeyAuthenticationEvent(dependencies);
65
+ break;
66
+ default:
67
+ break;
68
+ }
69
+ }
70
+ catch (error) {
71
+ // eslint-disable-next-line no-console
72
+ console.error('Error parsing message from Soyio widget:', error);
73
+ }
74
+ };
75
+ }
76
+ //# sourceMappingURL=message-handler.js.map
@@ -0,0 +1 @@
1
+ export declare function getPlatformSuffix(): string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPlatformSuffix = getPlatformSuffix;
4
+ var react_native_1 = require("react-native");
5
+ function getPlatformSuffix() {
6
+ var platform = react_native_1.Platform.OS;
7
+ return (platform === 'android' || platform === 'ios') ? "-".concat(platform) : '';
8
+ }
9
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1,4 @@
1
+ import type { AuthRequestParams, DisclosureParams, ExistingDisclosureParams } from '../types';
2
+ export declare function isDisclosureRequest(params: DisclosureParams | AuthRequestParams): params is DisclosureParams;
3
+ export declare function isAuthenticationRequest(params: DisclosureParams | AuthRequestParams): params is AuthRequestParams;
4
+ export declare function isExistingDisclosureRequest(params: DisclosureParams): params is ExistingDisclosureParams;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDisclosureRequest = isDisclosureRequest;
4
+ exports.isAuthenticationRequest = isAuthenticationRequest;
5
+ exports.isExistingDisclosureRequest = isExistingDisclosureRequest;
6
+ function isDisclosureRequest(params) {
7
+ return 'disclosureRequestId' in params || 'templateId' in params;
8
+ }
9
+ function isAuthenticationRequest(params) {
10
+ return 'authRequestId' in params;
11
+ }
12
+ function isExistingDisclosureRequest(params) {
13
+ return 'disclosureRequestId' in params && !!params.disclosureRequestId;
14
+ }
15
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1,2 @@
1
+ import type { AuthRequestParams, DisclosureParams, SoyioWidgetOptions } from '../types';
2
+ export declare function buildUrl(options: SoyioWidgetOptions, requestType: 'disclosure' | 'authentication_request', requestParams: DisclosureParams | AuthRequestParams, isWebview?: boolean): string;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.buildUrl = buildUrl;
15
+ var constants_1 = require("../constants");
16
+ var platform_1 = require("./platform");
17
+ var type_guards_1 = require("./type-guards");
18
+ var WIDGET_PATH_PREFIX = 'widget';
19
+ function determineBaseUrl(options) {
20
+ if (options.developmentUrl) {
21
+ return options.developmentUrl;
22
+ }
23
+ return options.isSandbox ? constants_1.SANDBOX_URL : constants_1.PRODUCTION_URL;
24
+ }
25
+ function determineRequestPath(requestType, requestParams) {
26
+ if (requestType === 'disclosure') {
27
+ var disclosureParams = requestParams;
28
+ if ((0, type_guards_1.isExistingDisclosureRequest)(disclosureParams)) {
29
+ return "disclosures/".concat(disclosureParams.disclosureRequestId);
30
+ }
31
+ return 'disclosure';
32
+ }
33
+ return 'authentication_request';
34
+ }
35
+ function buildQueryParams(params) {
36
+ var queryPairs = Object.entries(params)
37
+ .filter(function (_a) {
38
+ var value = _a[1];
39
+ return value !== undefined && value !== null;
40
+ })
41
+ .map(function (_a) {
42
+ var key = _a[0], value = _a[1];
43
+ return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(String(value)));
44
+ });
45
+ return queryPairs.join('&');
46
+ }
47
+ function createBaseParams(options, isWebview) {
48
+ if (isWebview === void 0) { isWebview = true; }
49
+ var baseParams = { sdk: "rn".concat((0, platform_1.getPlatformSuffix)()) };
50
+ if (options.uriScheme)
51
+ baseParams.uriScheme = options.uriScheme;
52
+ if (isWebview)
53
+ baseParams.rn_webview = 'true';
54
+ if ('companyId' in options)
55
+ baseParams.companyId = options.companyId;
56
+ if ('userReference' in options)
57
+ baseParams.userReference = options.userReference;
58
+ return baseParams;
59
+ }
60
+ function buildUrl(options, requestType, requestParams, isWebview) {
61
+ if (isWebview === void 0) { isWebview = true; }
62
+ var baseUrl = determineBaseUrl(options);
63
+ var path = determineRequestPath(requestType, requestParams);
64
+ var fullPath = "".concat(baseUrl, "/").concat(WIDGET_PATH_PREFIX, "/").concat(path);
65
+ var baseParams = createBaseParams(options, isWebview);
66
+ var allParams = __assign(__assign({}, baseParams), requestParams);
67
+ var queryString = buildQueryParams(allParams);
68
+ return "".concat(fullPath, "?").concat(queryString);
69
+ }
70
+ //# sourceMappingURL=url-builder.js.map
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import type { SoyioWidgetProps } from './types';
3
+ export declare const SoyioWidget: ({ options, requestType, requestParams, onSuccess, }: SoyioWidgetProps) => React.JSX.Element;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.SoyioWidget = void 0;
46
+ var react_1 = __importStar(require("react"));
47
+ var react_native_1 = require("react-native");
48
+ var react_native_webview_1 = require("react-native-webview");
49
+ var constants_1 = require("./constants");
50
+ var utils_1 = require("./utils");
51
+ var styles = react_native_1.StyleSheet.create({
52
+ wrapper: {
53
+ width: '100%',
54
+ height: '100%',
55
+ },
56
+ });
57
+ var SoyioWidget = function (_a) {
58
+ var options = _a.options, requestType = _a.requestType, requestParams = _a.requestParams, onSuccess = _a.onSuccess;
59
+ var webViewRef = (0, react_1.useRef)(null);
60
+ return (<react_native_1.View style={styles.wrapper}>
61
+ <react_native_webview_1.WebView ref={webViewRef} source={{ uri: (0, utils_1.buildUrl)(options, requestType, requestParams) }} originWhitelist={__spreadArray(__spreadArray([], constants_1.SOYIO_BASE_URLS, true), [options.developmentUrl], false).filter(Boolean)} onMessage={(0, utils_1.buildMessageHandler)(options, webViewRef, requestParams, onSuccess)} javaScriptEnabled={true}/>
62
+ </react_native_1.View>);
63
+ };
64
+ exports.SoyioWidget = SoyioWidget;
65
+ //# sourceMappingURL=webview.jsx.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soyio/soyio-rn-sdk",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "license": "MIT",
5
5
  "author": "Ignacio Méndez",
6
6
  "main": "./package/index.js",
@@ -17,27 +17,27 @@
17
17
  "lint": "eslint . --ext .ts",
18
18
  "version:get": "node -p \"require('./package.json').version\""
19
19
  },
20
- "dependencies": {
21
- "expo-status-bar": "~1.11.1",
22
- "expo-web-browser": "~12.8.2"
23
- },
24
20
  "peerDependencies": {
25
21
  "react": "*",
26
22
  "react-native": "*",
27
- "expo": "*"
23
+ "react-native-webview": "*",
24
+ "react-native-inappbrowser-reborn": "*"
28
25
  },
29
26
  "devDependencies": {
30
27
  "@babel/core": "^7.20.0",
31
28
  "@types/react": "~18.2.45",
32
- "react": "^18.2.0",
33
- "react-native": "^0.73.6",
34
- "typescript": "^5.4.3",
35
29
  "@typescript-eslint/eslint-plugin": "^7.4.0",
36
30
  "@typescript-eslint/parser": "^7.4.0",
37
31
  "eslint": "^8.57.0",
38
32
  "eslint-config-airbnb-base": "^15.0.0",
39
33
  "eslint-plugin-eslint-comments": "^3.2.0",
40
34
  "eslint-plugin-import": "^2.29.1",
41
- "eslint-plugin-tsdoc": "^0.2.17"
35
+ "eslint-plugin-tsdoc": "^0.2.17",
36
+ "react": "^18.2.0",
37
+ "react-native": "^0.73.6",
38
+ "react-native-webview": "^13.16.0",
39
+ "react-native-app-auth": "^7.2.0",
40
+ "react-native-inappbrowser-reborn": "^3.7.0",
41
+ "typescript": "^5.4.3"
42
42
  }
43
43
  }
@@ -1,5 +0,0 @@
1
- import type { AuthRequestParams, DisclosureParams, SoyioWidgetViewPropsType } from './types';
2
- export declare const useSoyioAuth: ({ options, onEventChange }: SoyioWidgetViewPropsType) => {
3
- disclosure: (registerParams: DisclosureParams) => Promise<void>;
4
- authentication: (authRequestParams: AuthRequestParams) => Promise<void>;
5
- };
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
- return new (P || (P = Promise))(function (resolve, reject) {
39
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
- step((generator = generator.apply(thisArg, _arguments || [])).next());
43
- });
44
- };
45
- var __generator = (this && this.__generator) || function (thisArg, body) {
46
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
- function verb(n) { return function (v) { return step([n, v]); }; }
49
- function step(op) {
50
- if (f) throw new TypeError("Generator is already executing.");
51
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
53
- if (y = 0, t) op = [op[0] & 2, t.value];
54
- switch (op[0]) {
55
- case 0: case 1: t = op; break;
56
- case 4: _.label++; return { value: op[1], done: false };
57
- case 5: _.label++; y = op[1]; op = [0]; continue;
58
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
- default:
60
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
- if (t[2]) _.ops.pop();
65
- _.trys.pop(); continue;
66
- }
67
- op = body.call(thisArg, _);
68
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
- }
71
- };
72
- Object.defineProperty(exports, "__esModule", { value: true });
73
- exports.useSoyioAuth = void 0;
74
- var WebBrowser = __importStar(require("expo-web-browser"));
75
- var react_1 = require("react");
76
- var utils_1 = require("./utils");
77
- var useSoyioAuth = function (_a) {
78
- var options = _a.options, onEventChange = _a.onEventChange;
79
- var handleProcess = (0, react_1.useCallback)(function (baseUri, params) { return __awaiter(void 0, void 0, void 0, function () {
80
- var uri, redirectUrl, webBrowserOptions, result, urlParams;
81
- var _a;
82
- return __generator(this, function (_b) {
83
- switch (_b.label) {
84
- case 0:
85
- uri = "".concat(baseUri, "?").concat((0, utils_1.buildUrlParams)(options, params));
86
- redirectUrl = (0, utils_1.getRedirectUrl)(options.uriScheme);
87
- return [4 /*yield*/, (0, utils_1.getBrowserOptions)()];
88
- case 1:
89
- webBrowserOptions = _b.sent();
90
- if (onEventChange)
91
- onEventChange({ type: 'open' });
92
- return [4 /*yield*/, WebBrowser.openAuthSessionAsync(uri, redirectUrl, webBrowserOptions)];
93
- case 2:
94
- result = _b.sent();
95
- if (onEventChange) {
96
- // 'success' type means that a redirection was triggered by Soyio,
97
- // but doesn't mean that the process was successful
98
- if (result.type === 'success') {
99
- urlParams = (0, utils_1.parseUrlResponseParams)(result.url);
100
- if ((_a = result.url) === null || _a === void 0 ? void 0 : _a.includes('error')) {
101
- onEventChange(__assign({ type: 'error' }, urlParams));
102
- }
103
- else {
104
- onEventChange(__assign({ type: 'success' }, urlParams));
105
- }
106
- }
107
- else {
108
- onEventChange(result);
109
- }
110
- }
111
- return [2 /*return*/];
112
- }
113
- });
114
- }); }, [options, onEventChange]);
115
- var disclosure = (0, react_1.useCallback)(function (registerParams) { return __awaiter(void 0, void 0, void 0, function () {
116
- var disclosureBaseUri;
117
- return __generator(this, function (_a) {
118
- disclosureBaseUri = (0, utils_1.getRequestUrl)(options, __assign({ request: 'disclosure' }, registerParams));
119
- handleProcess(disclosureBaseUri, registerParams);
120
- return [2 /*return*/];
121
- });
122
- }); }, [options, handleProcess]);
123
- var authentication = (0, react_1.useCallback)(function (authRequestParams) { return __awaiter(void 0, void 0, void 0, function () {
124
- var authBaseUri;
125
- return __generator(this, function (_a) {
126
- authBaseUri = (0, utils_1.getRequestUrl)(options, __assign({ request: 'authentication_request' }, authRequestParams));
127
- handleProcess(authBaseUri, authRequestParams);
128
- return [2 /*return*/];
129
- });
130
- }); }, [options, handleProcess]);
131
- return { disclosure: disclosure, authentication: authentication };
132
- };
133
- exports.useSoyioAuth = useSoyioAuth;
134
- //# sourceMappingURL=core.jsx.map
@@ -1,17 +0,0 @@
1
- import * as WebBrowser from 'expo-web-browser';
2
- import { AuthRequestParams, DisclosureParams, SoyioWidgetParams } from './types';
3
- type RequestUrlParams = {
4
- request: 'disclosure';
5
- } & DisclosureParams | {
6
- request: 'authentication_request';
7
- } & AuthRequestParams;
8
- export declare function getRequestUrl(options: SoyioWidgetParams, params: RequestUrlParams): string;
9
- export declare function buildUrlParams(widgetParams: SoyioWidgetParams, requestParams: DisclosureParams | AuthRequestParams): string;
10
- export declare function getBrowserOptions(): Promise<WebBrowser.AuthSessionOpenOptions>;
11
- export declare function getRedirectUrl(scheme: string): string;
12
- type ParsedUrlParameters = {
13
- request: 'disclosure' | 'authentication';
14
- [key: string]: string;
15
- };
16
- export declare function parseUrlResponseParams(url: string): ParsedUrlParameters;
17
- export {};