@tap-payments/connect 2.6.75-test → 2.6.77-test
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/README.md +32 -30
- package/build/@types/index.d.ts +3 -0
- package/build/constants/index.d.ts +1 -1
- package/build/constants/index.js +1 -1
- package/build/features/Connect/ConnectBoard.d.ts +7 -0
- package/build/features/Connect/ConnectBoard.js +114 -0
- package/build/features/Connect/index.d.ts +3 -2
- package/build/features/Connect/index.js +2 -1
- package/build/index.d.ts +3 -3
- package/build/index.js +4 -3
- package/build/utils/validation.d.ts +1 -0
- package/build/utils/validation.js +39 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -137,33 +137,35 @@ const ConnectComponent = () => {
|
|
|
137
137
|
|
|
138
138
|
## Properties
|
|
139
139
|
|
|
140
|
-
| name | type | description
|
|
141
|
-
| ---------------------------------- | ----------------------------- |
|
|
142
|
-
| publicKey `required` | `string` | Public key of the merchant account provided by Tap Payments
|
|
143
|
-
| domain `required` | `string` | Domain of the merchant
|
|
144
|
-
| language `required` | `Languages` | language flag to control the language of the connect element and only accept [ar,en]
|
|
145
|
-
| country `required` | `string` | Country ISO2 of the merchant
|
|
146
|
-
| scope `required` | `string` | the scope of the merchant available values [merchant, auth]
|
|
147
|
-
| data `optional` | `Array<string>` | Merchant data array `ex: [operator]`
|
|
148
|
-
| lead `optional` | `string` | Lead Id can be passed in case of you already created a lead using our API
|
|
149
|
-
| mode `required` | `string` | Decide to show connect as a `popup` or `page` to our connect domain. Default value is `popup`
|
|
150
|
-
| mature `required` | `boolean` | Decide the mode of connect `normal` or `express`
|
|
151
|
-
| board `optional` | `string` | Show/Hide board screens
|
|
152
|
-
| open `required` | `boolean` | Open/Close the connect library
|
|
153
|
-
| hideOverlay `optional` | `boolean` | Used to disable the **auth** background color and it can be used only for auth kit
|
|
154
|
-
| hideLoaderOverlay `optional` | `boolean` | Used to disable the **auth** loader background color and it can be used only for auth kit
|
|
155
|
-
| openAnimationDirection `optional` | `left or right or up or down` | Used to handle **auth** slide animation direction when open popup for auth kit
|
|
156
|
-
| closeAnimationDirection `optional` | `left or right or up or down` | Used to handle **auth** slide animation direction when close popup for auth kit
|
|
157
|
-
| hideMerchantLogo `optional` | `boolean` | Used to hide the **auth** merchant logo and it can be used only for auth kit
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
| | |
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
140
|
+
| name | type | description |
|
|
141
|
+
| ---------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
142
|
+
| publicKey `required` | `string` | Public key of the merchant account provided by Tap Payments |
|
|
143
|
+
| domain `required` | `string` | Domain of the merchant |
|
|
144
|
+
| language `required` | `Languages` | language flag to control the language of the connect element and only accept [ar,en] |
|
|
145
|
+
| country `required` | `string` | Country ISO2 of the merchant |
|
|
146
|
+
| scope `required` | `string` | the scope of the merchant available values [merchant, auth] |
|
|
147
|
+
| data `optional` | `Array<string>` | Merchant data array `ex: [operator]` |
|
|
148
|
+
| lead `optional` | `string` | Lead Id can be passed in case of you already created a lead using our API |
|
|
149
|
+
| mode `required` | `string` | Decide to show connect as a `popup` or `page` to our connect domain. Default value is `popup` |
|
|
150
|
+
| mature `required` | `boolean` | Decide the mode of connect `normal` or `express` |
|
|
151
|
+
| board `optional` | `string` | Show/Hide board screens |
|
|
152
|
+
| open `required` | `boolean` | Open/Close the connect library |
|
|
153
|
+
| hideOverlay `optional` | `boolean` | Used to disable the **auth** background color and it can be used only for auth kit |
|
|
154
|
+
| hideLoaderOverlay `optional` | `boolean` | Used to disable the **auth** loader background color and it can be used only for auth kit |
|
|
155
|
+
| openAnimationDirection `optional` | `left or right or up or down` | Used to handle **auth** slide animation direction when open popup for auth kit |
|
|
156
|
+
| closeAnimationDirection `optional` | `left or right or up or down` | Used to handle **auth** slide animation direction when close popup for auth kit |
|
|
157
|
+
| hideMerchantLogo `optional` | `boolean` | Used to hide the **auth** merchant logo and it can be used only for auth kit |
|
|
158
|
+
| loaderColor `optional` | `string` | Used to change loader color and it can be used only for board kit |
|
|
159
|
+
| showAsContent `optional` | `boolean` | Used to show board kit as content with out any animation and it can be used only for board kit |
|
|
160
|
+
| boardMaturity `optional` | `boolean` | Decide the board maturity |
|
|
161
|
+
| postURL `optional` | `string` | The POST Method URL used to push te data from our server to the merchant server and |
|
|
162
|
+
| | | it's required only if `mature` is `false` |
|
|
163
|
+
| redirectUrl `optional` | `string` | This redirect url after verify authentication go to merchant website |
|
|
164
|
+
| | | It is `required` if scope is `auth` and mode is `page` |
|
|
165
|
+
| onReady `optional` | `function` | Callback function to handle the ready state of the `TapConnect` |
|
|
166
|
+
| onCreated `optional` | `function` | Callback function to called the the account created successfully |
|
|
167
|
+
| | | it calls only if `mature` is `false` |
|
|
168
|
+
| onSuccess `optional` | `function` | Callback function to handle the success response, it will run after the user finish the flow |
|
|
169
|
+
| onError `optional` | `function` | Callback function to handle the error response, it will run if the user face any error |
|
|
170
|
+
| onClose `optional` | `function` | Callback function to called when `TapConnect` get close |
|
|
171
|
+
| onBoardCompleted `optional` | `function` | Callback function to called when you complete all flows |
|
package/build/@types/index.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export interface ConnectProps {
|
|
|
16
16
|
hideMerchantLogo?: boolean;
|
|
17
17
|
openAnimationDirection?: 'left' | 'right' | 'up' | 'down';
|
|
18
18
|
closeAnimationDirection?: 'left' | 'right' | 'up' | 'down';
|
|
19
|
+
showAsContent?: boolean;
|
|
20
|
+
loaderColor?: string;
|
|
21
|
+
boardId?: string;
|
|
19
22
|
open: boolean;
|
|
20
23
|
postURL?: string;
|
|
21
24
|
redirectUrl?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const CDN_LIBRARY_BASE_URL = "https://auth-jsconnect.b-cdn.net/build-2.6.
|
|
1
|
+
export declare const CDN_LIBRARY_BASE_URL = "https://auth-jsconnect.b-cdn.net/build-2.6.76-test/";
|
|
2
2
|
export declare const Maturity: {
|
|
3
3
|
readonly FULL: "full";
|
|
4
4
|
readonly EXPRESS: "express";
|
package/build/constants/index.js
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ConnectProps as ConnectAttrs } from '../../@types';
|
|
3
|
+
export type TapBoardProps = Pick<ConnectAttrs, 'open' | 'domain' | 'publicKey' | 'postURL' | 'country' | 'language' | 'onSuccess' | 'onError' | 'onReady' | 'onClose' | 'showAsContent' | 'loaderColor' | 'boardId'>;
|
|
4
|
+
export declare const TapBoard: React.MemoExoticComponent<(props: TapBoardProps & {
|
|
5
|
+
id?: string;
|
|
6
|
+
}) => import("react/jsx-runtime").JSX.Element>;
|
|
7
|
+
export declare const renderTapBoard: (props: TapBoardProps, elementId: string) => Promise<any>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
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;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
49
|
+
import * as React from 'react';
|
|
50
|
+
import { createRoot } from 'react-dom/client';
|
|
51
|
+
import { findOrCreateElementAndInject, validateBoardProps } from '../../utils';
|
|
52
|
+
import { useScript, useStyle } from '../../hooks';
|
|
53
|
+
import { CDN_LIBRARY_BASE_URL } from '../../constants';
|
|
54
|
+
var Board = function (props) {
|
|
55
|
+
useStyle("".concat(CDN_LIBRARY_BASE_URL, "/main.css"));
|
|
56
|
+
var status = useScript("".concat(CDN_LIBRARY_BASE_URL, "/main.js"));
|
|
57
|
+
React.useEffect(function () {
|
|
58
|
+
if (status === 'ready')
|
|
59
|
+
console.info('connect-board-js is ready!');
|
|
60
|
+
if (status === 'error')
|
|
61
|
+
console.error('connect-board-js failed to load!');
|
|
62
|
+
}, [status]);
|
|
63
|
+
React.useEffect(function () {
|
|
64
|
+
var _a;
|
|
65
|
+
if (status !== 'ready')
|
|
66
|
+
return;
|
|
67
|
+
var renderBoardLib = window['TapAuth'].renderBoardLib;
|
|
68
|
+
var unmount = renderBoardLib({
|
|
69
|
+
open: props.open,
|
|
70
|
+
mode: 'popup',
|
|
71
|
+
scope: 'auth',
|
|
72
|
+
merchantDomain: props.domain,
|
|
73
|
+
publicKey: props.publicKey,
|
|
74
|
+
postURL: props.postURL,
|
|
75
|
+
appInfo: {
|
|
76
|
+
name: window.location.hostname || window.location.origin
|
|
77
|
+
},
|
|
78
|
+
businessCountryCode: props.country,
|
|
79
|
+
language: props.language,
|
|
80
|
+
onFlowCompleted: props.onSuccess,
|
|
81
|
+
onError: props.onError,
|
|
82
|
+
onReady: props.onReady,
|
|
83
|
+
onClose: props.onClose,
|
|
84
|
+
showAsContent: props.showAsContent,
|
|
85
|
+
loaderColor: props.loaderColor,
|
|
86
|
+
boardId: props.boardId
|
|
87
|
+
}, (_a = props.id) !== null && _a !== void 0 ? _a : 'tap-connect-board-lib-id').unmount;
|
|
88
|
+
return function () {
|
|
89
|
+
unmount();
|
|
90
|
+
};
|
|
91
|
+
}, [status]);
|
|
92
|
+
if (status !== 'ready')
|
|
93
|
+
return null;
|
|
94
|
+
return _jsx("div", { id: 'tap-connect-board-lib-id' });
|
|
95
|
+
};
|
|
96
|
+
export var TapBoard = React.memo(function (props) {
|
|
97
|
+
validateBoardProps(props);
|
|
98
|
+
return _jsx(Board, __assign({}, props));
|
|
99
|
+
});
|
|
100
|
+
var tapConnectInstance = null;
|
|
101
|
+
export var renderTapBoard = function (props, elementId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
102
|
+
var el, root, unmount;
|
|
103
|
+
return __generator(this, function (_a) {
|
|
104
|
+
el = findOrCreateElementAndInject(elementId);
|
|
105
|
+
root = createRoot(el);
|
|
106
|
+
root.render(_jsx(TapBoard, __assign({}, props)));
|
|
107
|
+
unmount = function () {
|
|
108
|
+
root.unmount();
|
|
109
|
+
tapConnectInstance = null;
|
|
110
|
+
};
|
|
111
|
+
tapConnectInstance = { unmount: unmount };
|
|
112
|
+
return [2, tapConnectInstance];
|
|
113
|
+
});
|
|
114
|
+
}); };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TapConnect, ConnectProps as TapConnectProps, renderTapConnect } from './Connect';
|
|
2
2
|
import { ConnectAuthProps, TapConnectAuth, renderTapConnectAuth } from './ConnectAuth';
|
|
3
|
-
|
|
4
|
-
export {
|
|
3
|
+
import { TapBoardProps, TapBoard, renderTapBoard } from './ConnectBoard';
|
|
4
|
+
export type { TapConnectProps, ConnectAuthProps, TapBoardProps };
|
|
5
|
+
export { TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth, TapBoard, renderTapBoard };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { TapConnect, renderTapConnect } from './Connect';
|
|
2
2
|
import { TapConnectAuth, renderTapConnectAuth } from './ConnectAuth';
|
|
3
|
-
|
|
3
|
+
import { TapBoard, renderTapBoard } from './ConnectBoard';
|
|
4
|
+
export { TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth, TapBoard, renderTapBoard };
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TapConnect, TapConnectProps, renderTapConnect, ConnectAuthProps, TapConnectAuth, renderTapConnectAuth } from './features/Connect';
|
|
1
|
+
import { TapConnect, TapConnectProps, renderTapConnect, ConnectAuthProps, TapConnectAuth, renderTapConnectAuth, renderTapBoard, TapBoardProps, TapBoard } from './features/Connect';
|
|
2
2
|
import { Language } from './constants';
|
|
3
|
-
export type { TapConnectProps, ConnectAuthProps };
|
|
4
|
-
export { Language, TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth };
|
|
3
|
+
export type { TapConnectProps, ConnectAuthProps, TapBoardProps };
|
|
4
|
+
export { Language, TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth, TapBoard, renderTapBoard };
|
package/build/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth } from './features/Connect';
|
|
1
|
+
import { TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth, renderTapBoard, TapBoard } from './features/Connect';
|
|
2
2
|
import { Language } from './constants';
|
|
3
|
-
export { Language, TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth };
|
|
3
|
+
export { Language, TapConnect, renderTapConnect, TapConnectAuth, renderTapConnectAuth, TapBoard, renderTapBoard };
|
|
4
4
|
window['TapPayments'] = {
|
|
5
5
|
renderTapConnect: renderTapConnect,
|
|
6
6
|
Language: Language,
|
|
7
|
-
renderTapConnectAuth: renderTapConnectAuth
|
|
7
|
+
renderTapConnectAuth: renderTapConnectAuth,
|
|
8
|
+
renderTapBoard: renderTapBoard
|
|
8
9
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { ConnectProps } from '../@types';
|
|
2
2
|
export declare const validateConnectProps: (props: ConnectProps) => void;
|
|
3
3
|
export declare const validateConnectAuthProps: (props: Pick<ConnectProps, 'open' | 'domain' | 'publicKey' | 'redirectUrl' | 'data' | 'postURL' | 'lead' | 'country' | 'language' | 'onSuccess' | 'onError' | 'onReady' | 'onClose'>) => void;
|
|
4
|
+
export declare const validateBoardProps: (props: Pick<ConnectProps, 'open' | 'domain' | 'publicKey' | 'postURL' | 'country' | 'language' | 'onSuccess' | 'onError' | 'onReady' | 'onClose' | 'boardId'>) => void;
|
|
@@ -104,3 +104,42 @@ export var validateConnectAuthProps = function (props) {
|
|
|
104
104
|
throw new Error('onSuccess must be a function');
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
|
+
export var validateBoardProps = function (props) {
|
|
108
|
+
var publicKey = props.publicKey, country = props.country, language = props.language, open = props.open, domain = props.domain, onClose = props.onClose, onError = props.onError, onReady = props.onReady, onSuccess = props.onSuccess, postURL = props.postURL, boardId = props.boardId;
|
|
109
|
+
if (!publicKey) {
|
|
110
|
+
throw new Error('publicKey is required');
|
|
111
|
+
}
|
|
112
|
+
if (typeof country !== 'string') {
|
|
113
|
+
throw new Error('country should be from type string');
|
|
114
|
+
}
|
|
115
|
+
if (!language) {
|
|
116
|
+
throw new Error('language is required');
|
|
117
|
+
}
|
|
118
|
+
if (![Language.AR, Language.EN].includes(language)) {
|
|
119
|
+
throw new Error('you can only use AR or EN for language');
|
|
120
|
+
}
|
|
121
|
+
if (!domain) {
|
|
122
|
+
throw new Error('domain is required');
|
|
123
|
+
}
|
|
124
|
+
if (!boardId) {
|
|
125
|
+
throw new Error('board id is required');
|
|
126
|
+
}
|
|
127
|
+
if (typeof open !== 'boolean') {
|
|
128
|
+
throw new Error('open is required, and must be a boolean');
|
|
129
|
+
}
|
|
130
|
+
if (typeof postURL !== 'undefined' && typeof postURL !== 'string') {
|
|
131
|
+
throw new Error('postURL must be a string');
|
|
132
|
+
}
|
|
133
|
+
if (typeof onClose !== 'undefined' && typeof onClose !== 'function') {
|
|
134
|
+
throw new Error('onClose must be a function');
|
|
135
|
+
}
|
|
136
|
+
if (typeof onError !== 'undefined' && typeof onError !== 'function') {
|
|
137
|
+
throw new Error('onError must be a function');
|
|
138
|
+
}
|
|
139
|
+
if (typeof onReady !== 'undefined' && typeof onReady !== 'function') {
|
|
140
|
+
throw new Error('onReady must be a function');
|
|
141
|
+
}
|
|
142
|
+
if (typeof onSuccess !== 'undefined' && typeof onSuccess !== 'function') {
|
|
143
|
+
throw new Error('onSuccess must be a function');
|
|
144
|
+
}
|
|
145
|
+
};
|