@soyio/soyio-rn-sdk 0.2.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 (84) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.js +46 -0
  3. package/.expo/README.md +15 -0
  4. package/.expo/devices.json +3 -0
  5. package/.expo/metro/externals/assert/index.js +1 -0
  6. package/.expo/metro/externals/async_hooks/index.js +1 -0
  7. package/.expo/metro/externals/buffer/index.js +1 -0
  8. package/.expo/metro/externals/child_process/index.js +1 -0
  9. package/.expo/metro/externals/cluster/index.js +1 -0
  10. package/.expo/metro/externals/console/index.js +1 -0
  11. package/.expo/metro/externals/constants/index.js +1 -0
  12. package/.expo/metro/externals/crypto/index.js +1 -0
  13. package/.expo/metro/externals/dgram/index.js +1 -0
  14. package/.expo/metro/externals/diagnostics_channel/index.js +1 -0
  15. package/.expo/metro/externals/dns/index.js +1 -0
  16. package/.expo/metro/externals/domain/index.js +1 -0
  17. package/.expo/metro/externals/events/index.js +1 -0
  18. package/.expo/metro/externals/fs/index.js +1 -0
  19. package/.expo/metro/externals/fs/promises/index.js +1 -0
  20. package/.expo/metro/externals/http/index.js +1 -0
  21. package/.expo/metro/externals/http2/index.js +1 -0
  22. package/.expo/metro/externals/https/index.js +1 -0
  23. package/.expo/metro/externals/inspector/index.js +1 -0
  24. package/.expo/metro/externals/module/index.js +1 -0
  25. package/.expo/metro/externals/net/index.js +1 -0
  26. package/.expo/metro/externals/os/index.js +1 -0
  27. package/.expo/metro/externals/path/index.js +1 -0
  28. package/.expo/metro/externals/perf_hooks/index.js +1 -0
  29. package/.expo/metro/externals/process/index.js +1 -0
  30. package/.expo/metro/externals/punycode/index.js +1 -0
  31. package/.expo/metro/externals/querystring/index.js +1 -0
  32. package/.expo/metro/externals/readline/index.js +1 -0
  33. package/.expo/metro/externals/repl/index.js +1 -0
  34. package/.expo/metro/externals/stream/index.js +1 -0
  35. package/.expo/metro/externals/string_decoder/index.js +1 -0
  36. package/.expo/metro/externals/timers/index.js +1 -0
  37. package/.expo/metro/externals/tls/index.js +1 -0
  38. package/.expo/metro/externals/trace_events/index.js +1 -0
  39. package/.expo/metro/externals/tty/index.js +1 -0
  40. package/.expo/metro/externals/url/index.js +1 -0
  41. package/.expo/metro/externals/util/index.js +1 -0
  42. package/.expo/metro/externals/v8/index.js +1 -0
  43. package/.expo/metro/externals/vm/index.js +1 -0
  44. package/.expo/metro/externals/wasi/index.js +1 -0
  45. package/.expo/metro/externals/worker_threads/index.js +1 -0
  46. package/.expo/metro/externals/zlib/index.js +1 -0
  47. package/.expo/metro/polyfill.js +1 -0
  48. package/.expo/metro/polyfill.native.js +1 -0
  49. package/.expo/metro/shims/react-native-web/dist/cjs/exports/AppRegistry/AppContainer.js +13 -0
  50. package/.expo/metro/shims/react-native-web/dist/cjs/exports/BackHandler/index.js +10 -0
  51. package/.expo/metro/shims/react-native-web/dist/exports/AppRegistry/AppContainer.js +12 -0
  52. package/.expo/metro/shims/react-native-web/dist/exports/BackHandler/index.js +7 -0
  53. package/.expo/settings.json +8 -0
  54. package/.github/actions/setup/action.yml +27 -0
  55. package/.node-version +1 -0
  56. package/README.md +148 -0
  57. package/app.json +13 -0
  58. package/dist/main.es.js +261 -0
  59. package/dist/main.es.js.map +1 -0
  60. package/dist/main.umd.js +2 -0
  61. package/dist/main.umd.js.map +1 -0
  62. package/dist/src/lib/constants.d.ts +3 -0
  63. package/dist/src/lib/constants.d.ts.map +1 -0
  64. package/dist/src/lib/core.d.ts +6 -0
  65. package/dist/src/lib/core.d.ts.map +1 -0
  66. package/dist/src/lib/utils.d.ts +4 -0
  67. package/dist/src/lib/utils.d.ts.map +1 -0
  68. package/dist/src/main.d.ts +3 -0
  69. package/dist/src/main.d.ts.map +1 -0
  70. package/dist/src/types.d.ts +20 -0
  71. package/dist/src/types.d.ts.map +1 -0
  72. package/dist/vite.config.d.ts +3 -0
  73. package/dist/vite.config.d.ts.map +1 -0
  74. package/package.json +64 -0
  75. package/scripts/bump.sh +26 -0
  76. package/src/lib/constants.ts +2 -0
  77. package/src/lib/core.tsx +45 -0
  78. package/src/lib/utils.ts +22 -0
  79. package/src/main.ts +6 -0
  80. package/src/types.ts +19 -0
  81. package/tsconfig.build.json +4 -0
  82. package/tsconfig.json +34 -0
  83. package/tsconfig.node.json +8 -0
  84. package/vite.config.ts +27 -0
@@ -0,0 +1,45 @@
1
+ import { useCallback } from 'react';
2
+ import * as WebBrowser from 'expo-web-browser';
3
+ import { getFlowUrl, buildUrlParams } from './utils';
4
+ import { SOYIO_REDIRECT_URL } from './constants';
5
+
6
+ import type { SoyioWidgetViewPropsType, RegisterParams, AuthenticateParams } from '../types';
7
+
8
+ export const useSoyioAuth = ({ options, onEventChange }: SoyioWidgetViewPropsType) => {
9
+ const webBrowserOptions: WebBrowser.AuthSessionOpenOptions = {
10
+ dismissButtonStyle: 'cancel',
11
+ createTask: false,
12
+ enableBarCollapsing: true,
13
+ showTitle: true,
14
+ };
15
+
16
+ const register = useCallback(async (registerParams: RegisterParams) => {
17
+ const registerBaseUri = getFlowUrl(options, 'register');
18
+ const registerUri = `${registerBaseUri}?${buildUrlParams(options, registerParams)}`;
19
+
20
+ if (onEventChange) onEventChange({ type: 'open register' });
21
+
22
+ const registerResult = await WebBrowser.openAuthSessionAsync(
23
+ registerUri,
24
+ SOYIO_REDIRECT_URL,
25
+ webBrowserOptions,
26
+ );
27
+
28
+ if (onEventChange) onEventChange(registerResult);
29
+ }, [options, onEventChange]);
30
+
31
+ const authenticate = useCallback(async (authenticateParams: AuthenticateParams) => {
32
+ const authenticateBaseUri = getFlowUrl(options, 'authenticate');
33
+ const authenticateUri = `${authenticateBaseUri}?${buildUrlParams(options, authenticateParams)}`;
34
+
35
+ if (onEventChange) onEventChange({ type: 'open authenticate' });
36
+ const authenticateResult = await WebBrowser.openAuthSessionAsync(
37
+ authenticateUri,
38
+ SOYIO_REDIRECT_URL,
39
+ webBrowserOptions,
40
+ );
41
+ if (onEventChange) onEventChange(authenticateResult);
42
+ }, [options, onEventChange]);
43
+
44
+ return { register, authenticate };
45
+ };
@@ -0,0 +1,22 @@
1
+ import { RegisterParams, AuthenticateParams, SoyioWidgetParams } from '../types';
2
+ import { SOYIO_WEBVIEW_BASE_URL } from './constants';
3
+
4
+ export function getFlowUrl(options: SoyioWidgetParams, flow: 'authenticate' | 'register'): string {
5
+ const baseUrl = options.developmentUrl ?? SOYIO_WEBVIEW_BASE_URL;
6
+ return `${baseUrl}/widget/${flow}`;
7
+ }
8
+
9
+ export function buildUrlParams(
10
+ widgetParams: SoyioWidgetParams,
11
+ flowParams: RegisterParams | AuthenticateParams,
12
+ ): string {
13
+ let baseParams = `isMobile=true&companyId=${widgetParams.companyId}`;
14
+ if (widgetParams.userReference) {
15
+ baseParams += `&userReference=${widgetParams.userReference}`;
16
+ }
17
+ const dynamicParams = Object.entries(flowParams)
18
+ .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
19
+ .join('&');
20
+
21
+ return `${baseParams}&${dynamicParams}`;
22
+ }
package/src/main.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { useSoyioAuth } from './lib/core';
2
+
3
+ export type {
4
+ RegisterParams,
5
+ AuthenticateParams,
6
+ } from './types';
package/src/types.ts ADDED
@@ -0,0 +1,19 @@
1
+ export type SoyioWidgetParams = {
2
+ companyId: string
3
+ userReference?: string;
4
+ developmentUrl?: string;
5
+ }
6
+
7
+ export type RegisterParams = {
8
+ flowTemplateId: string;
9
+ userEmail?: string;
10
+ }
11
+
12
+ export type AuthenticateParams = {
13
+ identityId: string;
14
+ }
15
+
16
+ export type SoyioWidgetViewPropsType = {
17
+ options: SoyioWidgetParams
18
+ onEventChange?: (event: { type: string; url?: string }) => void;
19
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["example"]
4
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "esnext",
4
+ "useDefineForClassFields": true,
5
+ "lib": [
6
+ "dom",
7
+ "dom.iterable",
8
+ "esnext"
9
+ ],
10
+ "module": "esnext",
11
+ "moduleResolution": "node",
12
+ "allowJs": false,
13
+ "outDir": "dist",
14
+ "noEmit": false,
15
+ "declaration": true,
16
+ "declarationMap": true,
17
+ "skipLibCheck": true,
18
+ "esModuleInterop": true,
19
+ "strict": true,
20
+ "resolveJsonModule": true,
21
+ "jsx": "react-native"
22
+ },
23
+ "include": [
24
+ "src/**/*.tsx",
25
+ "src/**/*.ts",
26
+ "vite.config.ts"
27
+ ],
28
+ "references": [
29
+ {
30
+ "path": "./tsconfig.node.json"
31
+ }
32
+ ],
33
+ "extends": "expo/tsconfig.base"
34
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": true,
4
+ "module": "esnext",
5
+ "moduleResolution": "node"
6
+ },
7
+ "include": ["vite.config.ts"]
8
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,27 @@
1
+ import { resolve } from 'path';
2
+
3
+ import react from '@vitejs/plugin-react';
4
+ import { defineConfig } from 'vite';
5
+
6
+ // https://vitejs.dev/config/
7
+ export default defineConfig({
8
+ plugins: [react()],
9
+ build: {
10
+ lib: {
11
+ entry: resolve(__dirname, 'src', 'main.ts'),
12
+ name: 'soyio-webview-rn',
13
+ fileName: (format) => `main.${format}.js`,
14
+ },
15
+ sourcemap: true,
16
+ rollupOptions: {
17
+ external: ['react', 'react-native', 'react-native-webview'],
18
+ output: {
19
+ globals: {
20
+ react: 'React',
21
+ 'react-native': 'ReactNative',
22
+ 'react-native-webview': 'ReactNativeWebView',
23
+ },
24
+ },
25
+ },
26
+ },
27
+ });