@imtbl/checkout-widgets 2.24.8 → 2.24.9-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/dist/browser/{AddTokensWidget-BQfrLKCo.js → AddTokensWidget-CAnsz6Ds.js} +24 -297
- package/dist/browser/{BridgeWidget-6KlgTXwZ.js → BridgeWidget-BPonD-21.js} +13 -294
- package/dist/browser/{CommerceWidget-CcCuv661.js → CommerceWidget-BPFWRX2R.js} +17 -47
- package/dist/browser/{FeesBreakdown-DvoQJlP-.js → FeesBreakdown-7fI38j9m.js} +1 -1
- package/dist/browser/{OnRampWidget-DaL34PiA.js → OnRampWidget-BahAHZlJ.js} +5 -80
- package/dist/browser/{SaleWidget-D-IBBRTL.js → SaleWidget-CaNtBz3t.js} +61 -219
- package/dist/browser/{SpendingCapHero-Z5NIcrWw.js → SpendingCapHero-SdeBfZ_3.js} +1 -1
- package/dist/browser/{SwapWidget-C4B2Answ.js → SwapWidget-r9E9O8w8.js} +12 -206
- package/dist/browser/{TokenImage-DucOedrZ.js → TokenImage-Cc4dAr3U.js} +1 -1
- package/dist/browser/{TopUpView-BIvdNYib.js → TopUpView-CKIcuXnF.js} +3 -54
- package/dist/browser/{WalletApproveHero-ge2JSOYk.js → WalletApproveHero-ZZhVhTT2.js} +4 -12
- package/dist/browser/{WalletWidget-hiUotMuQ.js → WalletWidget-Bf6bDJdr.js} +4 -96
- package/dist/browser/{index-2esq4Cem.js → index-Bs2uHEgi.js} +1275 -9717
- package/dist/browser/{index-DWNAmu0n.js → index-Bs7IKKJt.js} +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/{useInterval-1gu4cbu3.js → useInterval-C6NhVtCa.js} +1 -1
- package/dist/types/components/FormComponents/SelectForm/SelectForm.d.ts +1 -5
- package/dist/types/components/FormComponents/SelectInput/SelectInput.d.ts +1 -5
- package/dist/types/components/Transak/TransakIframe.d.ts +0 -1
- package/dist/types/components/Transak/useTransakEvents.d.ts +0 -4
- package/dist/types/components/WalletDrawer/ConnectWalletDrawer.d.ts +1 -2
- package/dist/types/lib/squid/hooks/useExecute.d.ts +1 -2
- package/dist/types/views/top-up/TopUpView.d.ts +1 -5
- package/dist/types/widgets/add-tokens/hooks/useError.d.ts +1 -1
- package/dist/types/widgets/purchase/components/PurchaseConnectWalletDrawer.d.ts +1 -3
- package/dist/types/widgets/sale/hooks/useSaleEvents.d.ts +5 -31
- package/dist/types/widgets/swap/components/Fees.d.ts +1 -1
- package/package.json +7 -9
- package/src/components/ConnectLoader/ConnectLoader.tsx +0 -16
- package/src/components/FormComponents/SelectForm/SelectForm.tsx +2 -18
- package/src/components/FormComponents/SelectInput/SelectInput.tsx +1 -12
- package/src/components/RouteOptionsDrawer/RouteOptionsDrawer.tsx +2 -26
- package/src/components/Transactions/ChangeWallet.tsx +1 -12
- package/src/components/Transactions/ClaimWithdrawalInProgress.tsx +0 -11
- package/src/components/Transactions/NoTransactions.tsx +0 -10
- package/src/components/Transactions/TransactionItemWithdrawPending.tsx +1 -13
- package/src/components/Transactions/Transactions.tsx +2 -28
- package/src/components/Transak/TransakIframe.tsx +0 -6
- package/src/components/Transak/useTransakEvents.ts +1 -70
- package/src/components/WalletDrawer/ConnectWalletDrawer.tsx +2 -35
- package/src/components/WalletDrawer/PayWithWalletDrawer.tsx +0 -1
- package/src/context/view-context/test-components/ViewContextTestComponent.tsx +14 -15
- package/src/lib/squid/hooks/useExecute.ts +5 -18
- package/src/views/top-up/TopUpView.tsx +5 -56
- package/src/widgets/add-tokens/AddTokensRoot.tsx +28 -29
- package/src/widgets/add-tokens/AddTokensWidget.tsx +2 -17
- package/src/widgets/add-tokens/components/TokenDrawerMenu.tsx +2 -18
- package/src/widgets/add-tokens/hooks/useError.tsx +1 -18
- package/src/widgets/add-tokens/hooks/useErrorHandler.ts +2 -12
- package/src/widgets/add-tokens/views/AddTokens.tsx +8 -154
- package/src/widgets/add-tokens/views/Review.tsx +6 -94
- package/src/widgets/bridge/BridgeWidget.tsx +0 -35
- package/src/widgets/bridge/BridgeWidgetRoot.tsx +17 -18
- package/src/widgets/bridge/components/BridgeForm.tsx +0 -20
- package/src/widgets/bridge/components/BridgeReviewSummary.tsx +1 -49
- package/src/widgets/bridge/components/WalletAndNetworkSelector.tsx +3 -122
- package/src/widgets/bridge/views/ApproveTransaction.tsx +1 -15
- package/src/widgets/bridge/views/Bridge.tsx +1 -16
- package/src/widgets/bridge/views/BridgeReview.tsx +1 -12
- package/src/widgets/bridge/views/ClaimWithdrawal.tsx +0 -11
- package/src/widgets/bridge/views/MoveInProgress.tsx +0 -24
- package/src/widgets/bridge/views/WalletNetworkSelectionView.tsx +1 -12
- package/src/widgets/connect/ConnectWidget.tsx +2 -18
- package/src/widgets/connect/ConnectWidgetRoot.tsx +15 -16
- package/src/widgets/connect/components/WalletList.tsx +6 -55
- package/src/widgets/connect/views/ConnectWallet.tsx +1 -12
- package/src/widgets/connect/views/ReadyToConnect.tsx +2 -29
- package/src/widgets/connect/views/SwitchNetworkEth.tsx +3 -22
- package/src/widgets/connect/views/SwitchNetworkZkEVM.tsx +0 -18
- package/src/widgets/immutable-commerce/CommerceWidgetRoot.tsx +17 -19
- package/src/widgets/on-ramp/OnRampWidget.tsx +0 -2
- package/src/widgets/on-ramp/OnRampWidgetRoot.tsx +23 -24
- package/src/widgets/on-ramp/views/OnRampMain.tsx +1 -91
- package/src/widgets/purchase/PurchaseWidgetRoot.tsx +22 -23
- package/src/widgets/purchase/components/PurchaseConnectWalletDrawer.tsx +2 -34
- package/src/widgets/purchase/components/PurchaseDeliverToWalletDrawer.tsx +0 -1
- package/src/widgets/purchase/components/PurchasePayWithWalletDrawer.tsx +0 -2
- package/src/widgets/purchase/components/PurchaseRouteOptionsDrawer/RouteOptionsDrawer.tsx +1 -30
- package/src/widgets/purchase/components/WithCard.tsx +0 -4
- package/src/widgets/purchase/views/Purchase.tsx +1 -2
- package/src/widgets/sale/SaleWidget.tsx +0 -2
- package/src/widgets/sale/SaleWidgetRoot.tsx +32 -33
- package/src/widgets/sale/components/OrderReview.tsx +2 -29
- package/src/widgets/sale/components/WithCard.tsx +0 -2
- package/src/widgets/sale/hooks/useSaleEvents.ts +3 -185
- package/src/widgets/sale/views/OrderSummary.tsx +2 -15
- package/src/widgets/sale/views/PayWithCard.tsx +4 -46
- package/src/widgets/sale/views/PayWithCoins.tsx +4 -9
- package/src/widgets/sale/views/PaymentMethods.tsx +3 -6
- package/src/widgets/sale/views/SaleErrorView.tsx +1 -1
- package/src/widgets/swap/SwapWidget.tsx +0 -24
- package/src/widgets/swap/SwapWidgetRoot.tsx +29 -30
- package/src/widgets/swap/components/Fees.tsx +1 -1
- package/src/widgets/swap/components/SwapForm.tsx +2 -140
- package/src/widgets/swap/views/ApproveERC20Onboarding.tsx +1 -36
- package/src/widgets/swap/views/SwapCoins.tsx +0 -17
- package/src/widgets/swap/views/SwapInProgress.tsx +0 -14
- package/src/widgets/transfer/TransferForm.tsx +3 -25
- package/src/widgets/transfer/TransferWidget.tsx +1 -23
- package/src/widgets/wallet/WalletWidgetRoot.tsx +24 -25
- package/src/widgets/wallet/components/BalanceItem/BalanceItem.tsx +1 -50
- package/src/widgets/wallet/components/NetworkMenu/NetworkMenu.tsx +0 -13
- package/src/widgets/wallet/components/WalletAddress/WalletAddress.tsx +0 -13
- package/src/widgets/wallet/views/CoinInfo.tsx +1 -12
- package/src/widgets/wallet/views/Settings.tsx +1 -15
- package/src/widgets/wallet/views/WalletBalances.tsx +0 -24
- package/tsconfig.json +0 -1
- package/dist/browser/auto-track-C-H4NHVE.js +0 -105
- package/dist/browser/index-CcQ-5rAF.js +0 -446
- package/dist/browser/index-CvpdSuud.js +0 -5634
- package/dist/browser/index-D3m5uC9C.js +0 -60
- package/dist/browser/index-DJEaNohG.js +0 -65
- package/dist/browser/index-DPz4F2rf.js +0 -27
- package/dist/browser/index-DQZhPkHy.js +0 -65
- package/dist/browser/index.umd-brf0Qwxh.js +0 -32
- package/dist/browser/is-plan-event-enabled-mXX0dwl-.js +0 -17
- package/dist/types/context/analytics-provider/CustomAnalyticsProvider.d.ts +0 -7
- package/dist/types/context/analytics-provider/SegmentAnalyticsProvider.d.ts +0 -42
- package/dist/types/context/analytics-provider/SetupAnalytics.d.ts +0 -7
- package/dist/types/lib/analytics/identifyUser.d.ts +0 -8
- package/dist/types/lib/analytics/identifyUser.test.d.ts +0 -1
- package/src/context/analytics-provider/CustomAnalyticsProvider.tsx +0 -22
- package/src/context/analytics-provider/SegmentAnalyticsProvider.ts +0 -41
- package/src/context/analytics-provider/SetupAnalytics.tsx +0 -35
- package/src/lib/analytics/identifyUser.test.ts +0 -44
- package/src/lib/analytics/identifyUser.ts +0 -26
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { er as gracefulDecodeURIComponent, ej as isPlainObject } from './index-2esq4Cem.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Returns an object containing only the properties prefixed by the input
|
|
5
|
-
* string.
|
|
6
|
-
* Ex: prefix('ajs_traits_', { ajs_traits_address: '123 St' })
|
|
7
|
-
* will return { address: '123 St' }
|
|
8
|
-
**/
|
|
9
|
-
function pickPrefix(prefix, object) {
|
|
10
|
-
return Object.keys(object).reduce(function (acc, key) {
|
|
11
|
-
if (key.startsWith(prefix)) {
|
|
12
|
-
var field = key.substr(prefix.length);
|
|
13
|
-
acc[field] = object[key];
|
|
14
|
-
}
|
|
15
|
-
return acc;
|
|
16
|
-
}, {});
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function queryString(analytics, query) {
|
|
20
|
-
var a = document.createElement('a');
|
|
21
|
-
a.href = query;
|
|
22
|
-
var parsed = a.search.slice(1);
|
|
23
|
-
var params = parsed.split('&').reduce(function (acc, str) {
|
|
24
|
-
var _a = str.split('='), k = _a[0], v = _a[1];
|
|
25
|
-
acc[k] = gracefulDecodeURIComponent(v);
|
|
26
|
-
return acc;
|
|
27
|
-
}, {});
|
|
28
|
-
var calls = [];
|
|
29
|
-
var ajs_uid = params.ajs_uid, ajs_event = params.ajs_event, ajs_aid = params.ajs_aid;
|
|
30
|
-
var _a = isPlainObject(analytics.options.useQueryString)
|
|
31
|
-
? analytics.options.useQueryString
|
|
32
|
-
: {}, _b = _a.aid, aidPattern = _b === void 0 ? /.+/ : _b, _c = _a.uid, uidPattern = _c === void 0 ? /.+/ : _c;
|
|
33
|
-
if (ajs_aid) {
|
|
34
|
-
var anonId = Array.isArray(params.ajs_aid)
|
|
35
|
-
? params.ajs_aid[0]
|
|
36
|
-
: params.ajs_aid;
|
|
37
|
-
if (aidPattern.test(anonId)) {
|
|
38
|
-
analytics.setAnonymousId(anonId);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (ajs_uid) {
|
|
42
|
-
var uid = Array.isArray(params.ajs_uid)
|
|
43
|
-
? params.ajs_uid[0]
|
|
44
|
-
: params.ajs_uid;
|
|
45
|
-
if (uidPattern.test(uid)) {
|
|
46
|
-
var traits = pickPrefix('ajs_trait_', params);
|
|
47
|
-
calls.push(analytics.identify(uid, traits));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (ajs_event) {
|
|
51
|
-
var event_1 = Array.isArray(params.ajs_event)
|
|
52
|
-
? params.ajs_event[0]
|
|
53
|
-
: params.ajs_event;
|
|
54
|
-
var props = pickPrefix('ajs_prop_', params);
|
|
55
|
-
calls.push(analytics.track(event_1, props));
|
|
56
|
-
}
|
|
57
|
-
return Promise.all(calls);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export { queryString };
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ed as __assign } from './index-2esq4Cem.js';
|
|
2
|
-
import { i as isPlanEventEnabled } from './is-plan-event-enabled-mXX0dwl-.js';
|
|
3
|
-
|
|
4
|
-
function disabledActionDestinations(plan, settings) {
|
|
5
|
-
var _a, _b;
|
|
6
|
-
if (!plan || !Object.keys(plan)) {
|
|
7
|
-
return {};
|
|
8
|
-
}
|
|
9
|
-
var disabledIntegrations = plan.integrations
|
|
10
|
-
? Object.keys(plan.integrations).filter(function (i) { return plan.integrations[i] === false; })
|
|
11
|
-
: [];
|
|
12
|
-
// This accounts for cases like Fullstory, where the settings.integrations
|
|
13
|
-
// contains a "Fullstory" object but settings.remotePlugins contains "Fullstory (Actions)"
|
|
14
|
-
var disabledRemotePlugins = [];
|
|
15
|
-
((_a = settings.remotePlugins) !== null && _a !== void 0 ? _a : []).forEach(function (p) {
|
|
16
|
-
disabledIntegrations.forEach(function (int) {
|
|
17
|
-
if (p.name.includes(int) || int.includes(p.name)) {
|
|
18
|
-
disabledRemotePlugins.push(p.name);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
return ((_b = settings.remotePlugins) !== null && _b !== void 0 ? _b : []).reduce(function (acc, p) {
|
|
23
|
-
if (p.settings['subscriptions']) {
|
|
24
|
-
if (disabledRemotePlugins.includes(p.name)) {
|
|
25
|
-
// @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject
|
|
26
|
-
p.settings['subscriptions'].forEach(
|
|
27
|
-
// @ts-expect-error parameter 'sub' implicitly has an 'any' type
|
|
28
|
-
function (sub) { return (acc["".concat(p.name, " ").concat(sub.partnerAction)] = false); });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return acc;
|
|
32
|
-
}, {});
|
|
33
|
-
}
|
|
34
|
-
function schemaFilter(track, settings) {
|
|
35
|
-
function filter(ctx) {
|
|
36
|
-
var plan = track;
|
|
37
|
-
var ev = ctx.event.event;
|
|
38
|
-
if (plan && ev) {
|
|
39
|
-
var planEvent = plan[ev];
|
|
40
|
-
if (!isPlanEventEnabled(plan, planEvent)) {
|
|
41
|
-
ctx.updateEvent('integrations', __assign(__assign({}, ctx.event.integrations), { All: false, 'Segment.io': true }));
|
|
42
|
-
return ctx;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
var disabledActions = disabledActionDestinations(planEvent, settings);
|
|
46
|
-
ctx.updateEvent('integrations', __assign(__assign(__assign({}, ctx.event.integrations), planEvent === null || planEvent === void 0 ? void 0 : planEvent.integrations), disabledActions));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return ctx;
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
name: 'Schema Filter',
|
|
53
|
-
version: '0.1.0',
|
|
54
|
-
isLoaded: function () { return true; },
|
|
55
|
-
load: function () { return Promise.resolve(); },
|
|
56
|
-
type: 'before',
|
|
57
|
-
page: filter,
|
|
58
|
-
alias: filter,
|
|
59
|
-
track: filter,
|
|
60
|
-
identify: filter,
|
|
61
|
-
group: filter,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { schemaFilter };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { e6 as __awaiter, e7 as __generator } from './index-2esq4Cem.js';
|
|
2
|
-
|
|
3
|
-
function loadLegacyVideoPlugins(analytics) {
|
|
4
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
5
|
-
var plugins;
|
|
6
|
-
return __generator(this, function (_a) {
|
|
7
|
-
switch (_a.label) {
|
|
8
|
-
case 0: return [4 /*yield*/, import(
|
|
9
|
-
// @ts-expect-error
|
|
10
|
-
'./index.umd-brf0Qwxh.js').then(function (n) { return n.i; })
|
|
11
|
-
// This is super gross, but we need to support the `window.analytics.plugins` namespace
|
|
12
|
-
// that is linked in the segment docs in order to be backwards compatible with ajs-classic
|
|
13
|
-
// @ts-expect-error
|
|
14
|
-
];
|
|
15
|
-
case 1:
|
|
16
|
-
plugins = _a.sent();
|
|
17
|
-
// This is super gross, but we need to support the `window.analytics.plugins` namespace
|
|
18
|
-
// that is linked in the segment docs in order to be backwards compatible with ajs-classic
|
|
19
|
-
// @ts-expect-error
|
|
20
|
-
analytics._plugins = plugins;
|
|
21
|
-
return [2 /*return*/];
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export { loadLegacyVideoPlugins };
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { e6 as __awaiter, e7 as __generator, eh as isServer, e9 as getNextIntegrationsURL, e8 as loadScript } from './index-2esq4Cem.js';
|
|
2
|
-
|
|
3
|
-
function remoteMiddlewares(ctx, settings, obfuscate) {
|
|
4
|
-
var _a;
|
|
5
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
6
|
-
var path, remoteMiddleware, names, scripts, middleware;
|
|
7
|
-
var _this = this;
|
|
8
|
-
return __generator(this, function (_b) {
|
|
9
|
-
switch (_b.label) {
|
|
10
|
-
case 0:
|
|
11
|
-
if (isServer()) {
|
|
12
|
-
return [2 /*return*/, []];
|
|
13
|
-
}
|
|
14
|
-
path = getNextIntegrationsURL();
|
|
15
|
-
remoteMiddleware = (_a = settings.enabledMiddleware) !== null && _a !== void 0 ? _a : {};
|
|
16
|
-
names = Object.entries(remoteMiddleware)
|
|
17
|
-
.filter(function (_a) {
|
|
18
|
-
var enabled = _a[1];
|
|
19
|
-
return enabled;
|
|
20
|
-
})
|
|
21
|
-
.map(function (_a) {
|
|
22
|
-
var name = _a[0];
|
|
23
|
-
return name;
|
|
24
|
-
});
|
|
25
|
-
scripts = names.map(function (name) { return __awaiter(_this, void 0, void 0, function () {
|
|
26
|
-
var nonNamespaced, bundleName, fullPath, error_1;
|
|
27
|
-
return __generator(this, function (_a) {
|
|
28
|
-
switch (_a.label) {
|
|
29
|
-
case 0:
|
|
30
|
-
nonNamespaced = name.replace('@segment/', '');
|
|
31
|
-
bundleName = nonNamespaced;
|
|
32
|
-
if (obfuscate) {
|
|
33
|
-
bundleName = btoa(nonNamespaced).replace(/=/g, '');
|
|
34
|
-
}
|
|
35
|
-
fullPath = "".concat(path, "/middleware/").concat(bundleName, "/latest/").concat(bundleName, ".js.gz");
|
|
36
|
-
_a.label = 1;
|
|
37
|
-
case 1:
|
|
38
|
-
_a.trys.push([1, 3, , 4]);
|
|
39
|
-
return [4 /*yield*/, loadScript(fullPath)
|
|
40
|
-
// @ts-ignore
|
|
41
|
-
];
|
|
42
|
-
case 2:
|
|
43
|
-
_a.sent();
|
|
44
|
-
// @ts-ignore
|
|
45
|
-
return [2 /*return*/, window["".concat(nonNamespaced, "Middleware")]];
|
|
46
|
-
case 3:
|
|
47
|
-
error_1 = _a.sent();
|
|
48
|
-
ctx.log('error', error_1);
|
|
49
|
-
ctx.stats.increment('failed_remote_middleware');
|
|
50
|
-
return [3 /*break*/, 4];
|
|
51
|
-
case 4: return [2 /*return*/];
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}); });
|
|
55
|
-
return [4 /*yield*/, Promise.all(scripts)];
|
|
56
|
-
case 1:
|
|
57
|
-
middleware = _b.sent();
|
|
58
|
-
middleware = middleware.filter(Boolean);
|
|
59
|
-
return [2 /*return*/, middleware];
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { remoteMiddlewares };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ay as getDefaultExportFromCjs } from './index-2esq4Cem.js';
|
|
2
|
-
|
|
3
|
-
function _mergeNamespaces(n, m) {
|
|
4
|
-
m.forEach(function (e) {
|
|
5
|
-
e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
|
|
6
|
-
if (k !== 'default' && !(k in n)) {
|
|
7
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
8
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return e[k]; }
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
return Object.freeze(n);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
var index_umd$2 = {exports: {}};
|
|
19
|
-
|
|
20
|
-
(function (module, exports) {
|
|
21
|
-
!function(e,t){module.exports=t();}(window,(function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)a.d(n,i,function(t){return e[t]}.bind(null,i));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=2)}([function(e,t,a){a.r(t);var n="function"==typeof fetch?fetch.bind():function(e,t){return t=t||{},new Promise((function(a,n){var i=new XMLHttpRequest;for(var r in i.open(t.method||"get",e,!0),t.headers)i.setRequestHeader(r,t.headers[r]);function o(){var e,t=[],a=[],n={};return i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(i,r,o){t.push(r=r.toLowerCase()),a.push([r,o]),e=n[r],n[r]=e?e+","+o:o;})),{ok:2==(i.status/100|0),status:i.status,statusText:i.statusText,url:i.responseURL,clone:o,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},headers:{keys:function(){return t},entries:function(){return a},get:function(e){return n[e.toLowerCase()]},has:function(e){return e.toLowerCase()in n}}}}i.withCredentials="include"==t.credentials,i.onload=function(){a(o());},i.onerror=n,i.send(t.body);}))};t.default=n;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}();var i=function(){function e(t,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.pluginName=t;}return n(e,[{key:"track",value:function(e,t){window.analytics.track(e,t,{integration:{name:this.pluginName}});}}]),e}();t.default=i;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),t.YouTubeAnalytics=t.VimeoAnalytics=void 0;var n=r(a(3)),i=r(a(4));function r(e){return e&&e.__esModule?e:{default:e}}t.VimeoAnalytics=n.default,t.YouTubeAnalytics=i.default;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=r(a(0));function r(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"VimeoAnalytics"));return n.authToken=a,n.player=e,n.metadata={content:{},playback:{videoPlayer:"Vimeo"}},n.mostRecentHeartbeat=0,n.isPaused=!1,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t);}(t,e),n(t,[{key:"initialize",value:function(){var e=this,t={loaded:this.retrieveMetadata,play:this.trackPlay,pause:this.trackPause,ended:this.trackEnded,timeupdate:this.trackHeartbeat};for(var a in t)this.registerHandler(a,t[a]);this.player.getVideoId().then((function(t){e.retrieveMetadata({id:t});})).catch(console.error);}},{key:"registerHandler",value:function(e,t){var a=this;this.player.on(e,(function(e){a.updateMetadata(e),t.call(a,e);}));}},{key:"trackPlay",value:function(){this.isPaused?(this.track("Video Playback Resumed",this.metadata.playback),this.isPaused=!1):(this.track("Video Playback Started",this.metadata.playback),this.track("Video Content Started",this.metadata.content));}},{key:"trackEnded",value:function(){this.track("Video Playback Completed",this.metadata.playback),this.track("Video Content Completed",this.metadata.content);}},{key:"trackHeartbeat",value:function(){var e=this.mostRecentHeartbeat,t=this.metadata.playback.position;t!==e&&t-e>=10&&(this.track("Video Content Playing",this.metadata.content),this.mostRecentHeartbeat=Math.floor(t));}},{key:"trackPause",value:function(){this.isPaused=!0,this.track("Video Playback Paused",this.metadata.playback);}},{key:"retrieveMetadata",value:function(e){var t=this;return new Promise((function(a,n){var r=e.id;(0, i.default)("https://api.vimeo.com/videos/"+r,{headers:{Authorization:"Bearer "+t.authToken}}).then((function(e){return e.ok?e.json():n(e)})).then((function(e){t.metadata.content.title=e.name,t.metadata.content.description=e.description,t.metadata.content.publisher=e.user.name,t.metadata.playback.position=0,t.metadata.playback.totalLength=e.duration;})).catch((function(e){return console.error("Request to Vimeo API Failed with: ",e),n(e)}));}))}},{key:"updateMetadata",value:function(e){var t=this;return new Promise((function(a,n){t.player.getVolume().then((function(n){n&&(t.metadata.playback.sound=100*n),t.metadata.playback.position=e.seconds,a();})).catch(n);}))}}]),t}(r(a(1)).default);t.default=o;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=o(a(0)),r=o(a(1));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"YoutubeAnalytics"));return n.player=e,n.apiKey=a,n.playerLoaded=!1,n.playbackStarted=!1,n.contentStarted=!1,n.isPaused=!1,n.isBuffering=!1,n.isSeeking=!1,n.lastRecordedTime={timeReported:Date.now(),timeElapsed:0},n.metadata=[{playback:{video_player:"youtube"},content:{}}],n.playlistIndex=0,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t);}(t,e),n(t,[{key:"initialize",value:function(){window.segmentYoutubeOnStateChange=this.onPlayerStateChange.bind(this),window.segmentYoutubeOnReady=this.onPlayerReady.bind(this),this.player.addEventListener("onReady","segmentYoutubeOnReady"),this.player.addEventListener("onStateChange","segmentYoutubeOnStateChange");}},{key:"onPlayerReady",value:function(e){this.retrieveMetadata();}},{key:"onPlayerStateChange",value:function(e){var t=this.player.getCurrentTime();switch(this.metadata[this.playlistIndex]&&(this.metadata[this.playlistIndex].playback.position=this.metadata[this.playlistIndex].content.position=t,this.metadata[this.playlistIndex].playback.quality=this.player.getPlaybackQuality(),this.metadata[this.playlistIndex].playback.sound=this.player.isMuted()?0:this.player.getVolume()),e.data){case-1:if(this.playerLoaded)break;this.retrieveMetadata(),this.playerLoaded=!0;break;case YT.PlayerState.BUFFERING:this.handleBuffer();break;case YT.PlayerState.PLAYING:this.handlePlay();break;case YT.PlayerState.PAUSED:this.handlePause();break;case YT.PlayerState.ENDED:this.handleEnd();}this.lastRecordedTime={timeReported:Date.now(),timeElapsed:1e3*this.player.getCurrentTime()};}},{key:"retrieveMetadata",value:function(){var e=this;return new Promise((function(t,a){var n=e.player.getVideoData(),r=e.player.getPlaylist()||[n.video_id],o=r.join();(0, i.default)("https://www.googleapis.com/youtube/v3/videos?id="+o+"&part=snippet,contentDetails&key="+e.apiKey).then((function(e){if(!e.ok){var t=new Error("Segment request to Youtube API failed (likely due to a bad API Key. Events will still be sent but will not contain video metadata)");throw t.response=e,t}return e.json()})).then((function(a){e.metadata=[];for(var n=0,i=0;i<r.length;i++){var o=a.items[i];e.metadata.push({content:{title:o.snippet.title,description:o.snippet.description,keywords:o.snippet.tags,channel:o.snippet.channelTitle,airdate:o.snippet.publishedAt}}),n+=l(o.contentDetails.duration);}for(i=0;i<r.length;i++)e.metadata[i].playback={total_length:n,video_player:"youtube"};t();})).catch((function(t){e.metadata=r.map((function(e){return {playback:{video_player:"youtube"},content:{}}})),a(t);}));}))}},{key:"handleBuffer",value:function(){var e=this.determineSeek();this.playbackStarted||(this.playbackStarted=!0,this.track("Video Playback Started",this.metadata[this.playlistIndex].playback)),e&&!this.isSeeking&&(this.isSeeking=!0,this.track("Video Playback Seek Started",this.metadata[this.playlistIndex].playback)),this.isSeeking&&(this.track("Video Playback Seek Completed",this.metadata[this.playlistIndex].playback),this.isSeeking=!1);var t=this.player.getPlaylist();t&&0===this.player.getCurrentTime()&&this.player.getPlaylistIndex()!==this.playlistIndex&&(this.contentStarted=!1,this.playlistIndex===t.length-1&&0===this.player.getPlaylistIndex()&&(this.track("Video Playback Completed",this.metadata[this.player.getPlaylistIndex()].playback),this.track("Video Playback Started",this.metadata[this.player.getPlaylistIndex()].playback))),this.track("Video Playback Buffer Started",this.metadata[this.playlistIndex].playback),this.isBuffering=!0;}},{key:"handlePlay",value:function(){this.contentStarted||(this.playlistIndex=this.player.getPlaylistIndex(),-1===this.playlistIndex&&(this.playlistIndex=0),this.track("Video Content Started",this.metadata[this.playlistIndex].content),this.contentStarted=!0),this.isBuffering&&(this.track("Video Playback Buffer Completed",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused&&(this.track("Video Playback Resumed",this.metadata[this.playlistIndex].playback),this.isPaused=!1);}},{key:"handlePause",value:function(){var e=this.determineSeek();this.isBuffering&&(this.track("Video Playback Buffer Completed",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused||(e?(this.track("Video Playback Seek Started",this.metadata[this.playlistIndex].playback),this.isSeeking=!0):(this.track("Video Playback Paused",this.metadata[this.playlistIndex].playback),this.isPaused=!0));}},{key:"handleEnd",value:function(){this.track("Video Content Completed",this.metadata[this.playlistIndex].content),this.contentStarted=!1;var e=this.player.getPlaylistIndex(),t=this.player.getPlaylist();(t&&e===t.length-1||-1===e)&&(this.track("Video Playback Completed",this.metadata[this.playlistIndex].playback),this.playbackStarted=!1);}},{key:"determineSeek",value:function(){var e=this.isPaused||this.isBuffering?0:Date.now()-this.lastRecordedTime.timeReported,t=1e3*this.player.getCurrentTime()-this.lastRecordedTime.timeElapsed;return Math.abs(e-t)>2e3}}]),t}(r.default);function l(e){var t=e.match(/PT(\d+H)?(\d+M)?(\d+S)?/);return t=t.slice(1).map((function(e){if(null!=e)return e.replace(/\D/,"")})),3600*(parseInt(t[0])||0)+60*(parseInt(t[1])||0)+(parseInt(t[2])||0)}t.default=s;}])}));
|
|
22
|
-
} (index_umd$2));
|
|
23
|
-
|
|
24
|
-
var index_umdExports = index_umd$2.exports;
|
|
25
|
-
var index_umd = /*@__PURE__*/getDefaultExportFromCjs(index_umdExports);
|
|
26
|
-
|
|
27
|
-
var index_umd$1 = /*#__PURE__*/_mergeNamespaces({
|
|
28
|
-
__proto__: null,
|
|
29
|
-
default: index_umd
|
|
30
|
-
}, [index_umdExports]);
|
|
31
|
-
|
|
32
|
-
export { index_umd$1 as i };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Determines whether a track event is allowed to be sent based on the
|
|
3
|
-
* user's tracking plan.
|
|
4
|
-
* If the user does not have a tracking plan or the event is allowed based
|
|
5
|
-
* on the tracking plan configuration, returns true.
|
|
6
|
-
*/
|
|
7
|
-
function isPlanEventEnabled(plan, planEvent) {
|
|
8
|
-
var _a, _b;
|
|
9
|
-
// Always prioritize the event's `enabled` status
|
|
10
|
-
if (typeof (planEvent === null || planEvent === void 0 ? void 0 : planEvent.enabled) === 'boolean') {
|
|
11
|
-
return planEvent.enabled;
|
|
12
|
-
}
|
|
13
|
-
// Assume absence of a tracking plan means events are enabled
|
|
14
|
-
return (_b = (_a = plan === null || plan === void 0 ? void 0 : plan.__default) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : true;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export { isPlanEventEnabled as i };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Checkout } from '@imtbl/checkout-sdk';
|
|
2
|
-
type CustomAnalyticsProps = {
|
|
3
|
-
children: React.ReactNode;
|
|
4
|
-
checkout: Checkout;
|
|
5
|
-
};
|
|
6
|
-
export declare function CustomAnalyticsProvider({ children, checkout }: CustomAnalyticsProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { StandardAnalyticsControlTypes } from '@imtbl/react-analytics';
|
|
2
|
-
import type { PropsWithChildren, ReactElement } from 'react';
|
|
3
|
-
export declare enum UserJourney {
|
|
4
|
-
CONNECT = "Connect",
|
|
5
|
-
WALLET = "Wallet",
|
|
6
|
-
ON_RAMP = "OnRamp",
|
|
7
|
-
SWAP = "Swap",
|
|
8
|
-
BRIDGE = "Bridge",
|
|
9
|
-
SALE = "PrimarySale",
|
|
10
|
-
ADD_TOKENS = "AddTokens",
|
|
11
|
-
PURCHASE = "Purchase",
|
|
12
|
-
TRANSFER = "Transfer"
|
|
13
|
-
}
|
|
14
|
-
export type AnalyticsControlTypes = StandardAnalyticsControlTypes | 'IframeEvent' | 'Event';
|
|
15
|
-
export declare const AnalyticsProvider: (props: PropsWithChildren) => ReactElement;
|
|
16
|
-
export declare const useAnalytics: () => {
|
|
17
|
-
page: (props: {
|
|
18
|
-
screen: string;
|
|
19
|
-
userJourney: UserJourney;
|
|
20
|
-
action?: import("@imtbl/react-analytics").StandardAnalyticsActions | undefined;
|
|
21
|
-
extras?: Record<string, unknown> | undefined;
|
|
22
|
-
}) => Promise<import("@segment/analytics-next").Context>;
|
|
23
|
-
track: (props: {
|
|
24
|
-
screen: string;
|
|
25
|
-
userJourney: UserJourney;
|
|
26
|
-
extras?: Record<string, unknown> | undefined;
|
|
27
|
-
} & ({
|
|
28
|
-
action: import("@imtbl/react-analytics").StandardAnalyticsActions;
|
|
29
|
-
control?: undefined;
|
|
30
|
-
controlType?: undefined;
|
|
31
|
-
} | {
|
|
32
|
-
control: string;
|
|
33
|
-
controlType: AnalyticsControlTypes;
|
|
34
|
-
action?: import("@imtbl/react-analytics").StandardAnalyticsActions | undefined;
|
|
35
|
-
})) => Promise<import("@segment/analytics-next").Context>;
|
|
36
|
-
identify: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["identify"];
|
|
37
|
-
group(traits: import("@segment/analytics-next").GroupTraits): Promise<import("@segment/analytics-next").Context>;
|
|
38
|
-
alias: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["alias"];
|
|
39
|
-
identifyFromCookie: () => Promise<import("@segment/analytics-next").Context>;
|
|
40
|
-
updateWriteKey: (writeKey: string) => void;
|
|
41
|
-
user: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["user"];
|
|
42
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Checkout } from '@imtbl/checkout-sdk';
|
|
2
|
-
type SetupAnalyticsProps = {
|
|
3
|
-
children: React.ReactNode;
|
|
4
|
-
checkout: Checkout;
|
|
5
|
-
};
|
|
6
|
-
export declare function SetupAnalytics({ children, checkout }: SetupAnalyticsProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
|
|
2
|
-
/**
|
|
3
|
-
* identifyUser - function to identify a user by their wallet address and call the function to raise analytics
|
|
4
|
-
* @param identify - The identify function from the useAnalytics() hook
|
|
5
|
-
* @param provider - the WrappedBrowserProvider used to find the user's walletAddress
|
|
6
|
-
* @param options - additional options to pass to the identify function
|
|
7
|
-
*/
|
|
8
|
-
export declare function identifyUser(identify: (id: string, attributes: Record<string, any>, options?: Record<string, any>) => void, provider: WrappedBrowserProvider, options?: Record<string, any>): Promise<void>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Checkout } from '@imtbl/checkout-sdk';
|
|
2
|
-
import {
|
|
3
|
-
AnalyticsProvider,
|
|
4
|
-
} from './SegmentAnalyticsProvider';
|
|
5
|
-
import { SetupAnalytics } from './SetupAnalytics';
|
|
6
|
-
|
|
7
|
-
type CustomAnalyticsProps = {
|
|
8
|
-
children: React.ReactNode;
|
|
9
|
-
checkout: Checkout;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export function CustomAnalyticsProvider(
|
|
13
|
-
{ children, checkout }: CustomAnalyticsProps,
|
|
14
|
-
) {
|
|
15
|
-
return (
|
|
16
|
-
<AnalyticsProvider>
|
|
17
|
-
<SetupAnalytics checkout={checkout}>
|
|
18
|
-
{children}
|
|
19
|
-
</SetupAnalytics>
|
|
20
|
-
</AnalyticsProvider>
|
|
21
|
-
);
|
|
22
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createAnalytics,
|
|
3
|
-
StandardAnalyticsControlTypes,
|
|
4
|
-
} from '@imtbl/react-analytics';
|
|
5
|
-
import type { PropsWithChildren, ReactElement } from 'react';
|
|
6
|
-
|
|
7
|
-
export enum UserJourney {
|
|
8
|
-
CONNECT = 'Connect',
|
|
9
|
-
WALLET = 'Wallet',
|
|
10
|
-
ON_RAMP = 'OnRamp',
|
|
11
|
-
SWAP = 'Swap',
|
|
12
|
-
BRIDGE = 'Bridge',
|
|
13
|
-
SALE = 'PrimarySale',
|
|
14
|
-
ADD_TOKENS = 'AddTokens',
|
|
15
|
-
PURCHASE = 'Purchase',
|
|
16
|
-
TRANSFER = 'Transfer',
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type AnalyticsControlTypes =
|
|
20
|
-
| StandardAnalyticsControlTypes
|
|
21
|
-
| 'IframeEvent'
|
|
22
|
-
| 'Event';
|
|
23
|
-
|
|
24
|
-
const productName = 'checkout';
|
|
25
|
-
|
|
26
|
-
const analytics = createAnalytics<
|
|
27
|
-
UserJourney,
|
|
28
|
-
string,
|
|
29
|
-
string,
|
|
30
|
-
AnalyticsControlTypes
|
|
31
|
-
>({
|
|
32
|
-
writeKey: '',
|
|
33
|
-
appName: productName,
|
|
34
|
-
storageKeyPrefix: 'checkoutWidgets',
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
// Explicit annotation: createAnalytics returns emotion JSX.Element, which is not portable
|
|
38
|
-
export const AnalyticsProvider = analytics.AnalyticsProvider as (
|
|
39
|
-
props: PropsWithChildren,
|
|
40
|
-
) => ReactElement;
|
|
41
|
-
export const useAnalytics = analytics.useAnalytics;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect } from 'react';
|
|
2
|
-
import { Checkout, TelemetryConfig } from '@imtbl/checkout-sdk';
|
|
3
|
-
import { useAnalytics } from './SegmentAnalyticsProvider';
|
|
4
|
-
|
|
5
|
-
type SetupAnalyticsProps = {
|
|
6
|
-
children: React.ReactNode;
|
|
7
|
-
checkout: Checkout
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export function SetupAnalytics(
|
|
11
|
-
{ children, checkout }: SetupAnalyticsProps,
|
|
12
|
-
) {
|
|
13
|
-
const { updateWriteKey } = useAnalytics();
|
|
14
|
-
|
|
15
|
-
const telemetry = useCallback(async () => {
|
|
16
|
-
try {
|
|
17
|
-
return await checkout?.config?.remote.getConfig('telemetry');
|
|
18
|
-
} catch (err: any) {
|
|
19
|
-
// eslint-disable-next-line no-console
|
|
20
|
-
console.error('unable to fetch telemetry config: ', err);
|
|
21
|
-
}
|
|
22
|
-
return undefined;
|
|
23
|
-
}, [checkout]);
|
|
24
|
-
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
(async () => {
|
|
27
|
-
const config = await telemetry() as TelemetryConfig;
|
|
28
|
-
if (!config) return;
|
|
29
|
-
updateWriteKey(config.segmentPublishableKey);
|
|
30
|
-
})();
|
|
31
|
-
}, [telemetry]);
|
|
32
|
-
|
|
33
|
-
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
34
|
-
return (<>{children}</>);
|
|
35
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
|
|
2
|
-
import { identifyUser } from './identifyUser';
|
|
3
|
-
|
|
4
|
-
describe('identifyUser', () => {
|
|
5
|
-
let provider;
|
|
6
|
-
let identify;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
jest.resetAllMocks();
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
-
identify = jest.fn().mockReturnValue({});
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should identify a user by their wallet address and add properties isMetaMask and isPassportWallet', async () => {
|
|
14
|
-
provider = {
|
|
15
|
-
getSigner: jest.fn().mockReturnValue({
|
|
16
|
-
getAddress: jest.fn().mockResolvedValue('0xtest'),
|
|
17
|
-
}),
|
|
18
|
-
ethereumProvider: {
|
|
19
|
-
isMetaMask: true,
|
|
20
|
-
request: jest.fn(),
|
|
21
|
-
},
|
|
22
|
-
} as any as WrappedBrowserProvider;
|
|
23
|
-
|
|
24
|
-
await identifyUser(identify, provider);
|
|
25
|
-
expect(identify).toBeCalledWith('0xtest', { isMetaMask: true, isPassportWallet: false }, undefined);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('should correctly identify users wallet as Passport', async () => {
|
|
29
|
-
const options = { foo: 'bar' };
|
|
30
|
-
|
|
31
|
-
provider = {
|
|
32
|
-
getSigner: jest.fn().mockReturnValue({
|
|
33
|
-
getAddress: jest.fn().mockResolvedValue('0xtest'),
|
|
34
|
-
}),
|
|
35
|
-
send: jest.fn(),
|
|
36
|
-
ethereumProvider: {
|
|
37
|
-
isPassport: true,
|
|
38
|
-
request: jest.fn(),
|
|
39
|
-
},
|
|
40
|
-
} as any as WrappedBrowserProvider;
|
|
41
|
-
await identifyUser(identify, provider, options);
|
|
42
|
-
expect(identify).toBeCalledWith('0xtest', { isMetaMask: false, isPassportWallet: true }, options);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
|
|
2
|
-
import { isMetaMaskProvider, isPassportProvider } from '../provider';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* identifyUser - function to identify a user by their wallet address and call the function to raise analytics
|
|
6
|
-
* @param identify - The identify function from the useAnalytics() hook
|
|
7
|
-
* @param provider - the WrappedBrowserProvider used to find the user's walletAddress
|
|
8
|
-
* @param options - additional options to pass to the identify function
|
|
9
|
-
*/
|
|
10
|
-
export async function identifyUser(
|
|
11
|
-
identify: (id: string, attributes: Record<string, any>, options?: Record<string, any>) => void,
|
|
12
|
-
provider: WrappedBrowserProvider,
|
|
13
|
-
options?: Record<string, any>,
|
|
14
|
-
) {
|
|
15
|
-
// WT-1698 Analytics - Identify user here then progress to widget
|
|
16
|
-
const walletAddress = (await (await provider.getSigner()).getAddress()).toLowerCase();
|
|
17
|
-
const isMetaMask = isMetaMaskProvider(provider);
|
|
18
|
-
const isPassport = isPassportProvider(provider);
|
|
19
|
-
try {
|
|
20
|
-
identify(walletAddress, {
|
|
21
|
-
isMetaMask,
|
|
22
|
-
isPassportWallet: isPassport,
|
|
23
|
-
}, options);
|
|
24
|
-
// eslint-disable-next-line no-console
|
|
25
|
-
} catch (error: any) { console.error('analytics: unable to identify user: ', error); }
|
|
26
|
-
}
|