@formo/analytics 1.11.5 → 1.11.6-alpha.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.
- package/README.md +10 -18
- package/dist/cjs/src/FormoAnalytics.d.ts +30 -37
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +163 -247
- package/dist/cjs/src/FormoAnalytics.js.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js +3 -3
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/cjs/src/constants/config.d.ts +1 -1
- package/dist/cjs/src/constants/config.d.ts.map +1 -1
- package/dist/cjs/src/constants/config.js +2 -2
- package/dist/cjs/src/constants/config.js.map +1 -1
- package/dist/cjs/src/types/base.d.ts +5 -1
- package/dist/cjs/src/types/base.d.ts.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/FormoAnalytics.d.ts +30 -37
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalytics.js +164 -248
- package/dist/esm/src/FormoAnalytics.js.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.js +3 -3
- package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/esm/src/constants/config.d.ts +1 -1
- package/dist/esm/src/constants/config.d.ts.map +1 -1
- package/dist/esm/src/constants/config.js +1 -1
- package/dist/esm/src/constants/config.js.map +1 -1
- package/dist/esm/src/types/base.d.ts +5 -1
- package/dist/esm/src/types/base.d.ts.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/FormoAnalytics.ts +162 -254
- package/src/FormoAnalyticsProvider.tsx +3 -6
- package/src/constants/config.ts +1 -1
- package/src/types/base.ts +7 -1
- package/dist/cjs/src/utils/index.d.ts +0 -2
- package/dist/cjs/src/utils/index.d.ts.map +0 -1
- package/dist/cjs/src/utils/index.js +0 -18
- package/dist/cjs/src/utils/index.js.map +0 -1
- package/dist/cjs/src/utils/isNotEmptyObject.d.ts +0 -2
- package/dist/cjs/src/utils/isNotEmptyObject.d.ts.map +0 -1
- package/dist/cjs/src/utils/isNotEmptyObject.js +0 -9
- package/dist/cjs/src/utils/isNotEmptyObject.js.map +0 -1
- package/dist/esm/src/utils/index.d.ts +0 -2
- package/dist/esm/src/utils/index.d.ts.map +0 -1
- package/dist/esm/src/utils/index.js +0 -2
- package/dist/esm/src/utils/index.js.map +0 -1
- package/dist/esm/src/utils/isNotEmptyObject.d.ts +0 -2
- package/dist/esm/src/utils/isNotEmptyObject.d.ts.map +0 -1
- package/dist/esm/src/utils/isNotEmptyObject.js +0 -6
- package/dist/esm/src/utils/isNotEmptyObject.js.map +0 -1
- package/src/utils/index.ts +0 -1
- package/src/utils/isNotEmptyObject.ts +0 -5
package/README.md
CHANGED
|
@@ -4,17 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Add the following to your
|
|
7
|
+
Add the following to your page:
|
|
8
8
|
|
|
9
9
|
```html
|
|
10
10
|
<script>
|
|
11
11
|
const script = document.createElement('script');
|
|
12
12
|
const apiKey = 'YOUR_API_KEY';
|
|
13
|
-
const projectId = 'YOUR_PROJECT_ID';
|
|
14
13
|
|
|
15
14
|
script.src = 'https://unpkg.com/@formo/analytics';
|
|
16
15
|
script.onload = function () {
|
|
17
|
-
FormoAnalytics.init(apiKey
|
|
16
|
+
FormoAnalytics.init(apiKey)
|
|
18
17
|
.then((sdkInstance) => {
|
|
19
18
|
window.formo = sdkInstance;
|
|
20
19
|
|
|
@@ -63,18 +62,18 @@ const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
|
|
|
63
62
|
|
|
64
63
|
root.render(
|
|
65
64
|
<React.StrictMode>
|
|
66
|
-
<FormoAnalyticsProvider apiKey="YOUR_API_KEY"
|
|
65
|
+
<FormoAnalyticsProvider apiKey="YOUR_API_KEY">
|
|
67
66
|
<App />
|
|
68
67
|
</FormoAnalyticsProvider>
|
|
69
68
|
</React.StrictMode>
|
|
70
69
|
);
|
|
71
70
|
```
|
|
72
71
|
|
|
73
|
-
**3. Tracking Events
|
|
72
|
+
**3. Tracking Events**
|
|
74
73
|
|
|
75
|
-
You can use the `useFormoAnalytics` hook from the SDK to track user interactions
|
|
74
|
+
You can use the `useFormoAnalytics` hook from the SDK to track user interactions.
|
|
76
75
|
|
|
77
|
-
Example: Tracking a
|
|
76
|
+
Example: Tracking a Custom Event
|
|
78
77
|
|
|
79
78
|
```jsx
|
|
80
79
|
import React, { useEffect } from 'react';
|
|
@@ -84,11 +83,8 @@ const HomePage = () => {
|
|
|
84
83
|
const analytics = useFormoAnalytics();
|
|
85
84
|
|
|
86
85
|
useEffect(() => {
|
|
87
|
-
// Track a page view when the component is mounted
|
|
88
|
-
analytics?.page();
|
|
89
|
-
|
|
90
86
|
// Track a custom event
|
|
91
|
-
analytics
|
|
87
|
+
analytics.track('custom_event', { key: 'value' });
|
|
92
88
|
}, [analytics]);
|
|
93
89
|
|
|
94
90
|
return <div>Welcome to the Home Page!</div>;
|
|
@@ -137,18 +133,16 @@ import React, { FC, useEffect } from 'react';
|
|
|
137
133
|
|
|
138
134
|
type FormoAnalyticsProviderProps = {
|
|
139
135
|
apiKey: string,
|
|
140
|
-
projectId: string,
|
|
141
136
|
children: React.ReactNode,
|
|
142
137
|
};
|
|
143
138
|
|
|
144
139
|
// The provider component
|
|
145
140
|
export const AnalyticsProvider: FC<FormoAnalyticsProviderProps> = ({
|
|
146
141
|
apiKey,
|
|
147
|
-
projectId,
|
|
148
142
|
children,
|
|
149
143
|
}) => {
|
|
150
144
|
return (
|
|
151
|
-
<FormoAnalyticsProvider apiKey={apiKey}
|
|
145
|
+
<FormoAnalyticsProvider apiKey={apiKey}>
|
|
152
146
|
{children}
|
|
153
147
|
</FormoAnalyticsProvider>
|
|
154
148
|
);
|
|
@@ -172,7 +166,7 @@ export default function RootLayout({
|
|
|
172
166
|
return (
|
|
173
167
|
<html lang='en'>
|
|
174
168
|
<body>
|
|
175
|
-
<AnalyticsProvider apiKey='YOUR_API_KEY'
|
|
169
|
+
<AnalyticsProvider apiKey='YOUR_API_KEY'>
|
|
176
170
|
Your Page Content
|
|
177
171
|
</AnalyticsProvider>
|
|
178
172
|
</body>
|
|
@@ -195,11 +189,9 @@ const YourComponent = () => {
|
|
|
195
189
|
useEffect(() => {
|
|
196
190
|
const track = async () => {
|
|
197
191
|
try {
|
|
198
|
-
console.log('Tracking page hit...');
|
|
199
|
-
analytics.page(); // Track the page view
|
|
200
192
|
analytics.track('custom_event', { key: 'value' }); // Track a custom event
|
|
201
193
|
} catch (error) {
|
|
202
|
-
console.error('Failed to track
|
|
194
|
+
console.error('Failed to track event', error);
|
|
203
195
|
}
|
|
204
196
|
};
|
|
205
197
|
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { ChainID, EIP1193Provider } from './types';
|
|
1
|
+
import { ChainID, EIP1193Provider, Options } from './types';
|
|
2
2
|
interface IFormoAnalytics {
|
|
3
3
|
/**
|
|
4
4
|
* Initializes the FormoAnalytics instance with the provided API key and project ID.
|
|
5
5
|
*/
|
|
6
|
-
init(apiKey: string,
|
|
7
|
-
/**
|
|
8
|
-
* Identifies the user with the provided user data.
|
|
9
|
-
*/
|
|
10
|
-
identify(userData: Record<string, any>): void;
|
|
6
|
+
init(apiKey: string, options: Options): Promise<FormoAnalytics>;
|
|
11
7
|
/**
|
|
12
8
|
* Tracks page visit events.
|
|
13
9
|
*/
|
|
@@ -16,59 +12,58 @@ interface IFormoAnalytics {
|
|
|
16
12
|
* Connects to a wallet with the specified chain ID and address.
|
|
17
13
|
*/
|
|
18
14
|
connect(params: {
|
|
19
|
-
account: string;
|
|
20
15
|
chainId: ChainID;
|
|
16
|
+
address: string;
|
|
21
17
|
}): Promise<void>;
|
|
22
18
|
/**
|
|
23
19
|
* Disconnects the current wallet and clears the session information.
|
|
24
20
|
*/
|
|
25
|
-
disconnect(
|
|
26
|
-
account?: string;
|
|
21
|
+
disconnect(params?: {
|
|
27
22
|
chainId?: ChainID;
|
|
23
|
+
address?: string;
|
|
28
24
|
}): void;
|
|
29
25
|
/**
|
|
30
|
-
*
|
|
26
|
+
* Switches the blockchain chain context and optionally logs additional params.
|
|
31
27
|
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Switches the blockchain chain context and optionally logs additional attributes.
|
|
35
|
-
*/
|
|
36
|
-
chain(attributes: {
|
|
28
|
+
chain(params: {
|
|
37
29
|
chainId: ChainID;
|
|
38
|
-
|
|
30
|
+
address?: string;
|
|
39
31
|
}): void;
|
|
32
|
+
/**
|
|
33
|
+
* Tracks a specific event with a name and associated data.
|
|
34
|
+
*/
|
|
35
|
+
track(eventName: string, eventData: Record<string, any>): void;
|
|
40
36
|
}
|
|
41
37
|
export declare class FormoAnalytics implements IFormoAnalytics {
|
|
42
38
|
readonly apiKey: string;
|
|
43
|
-
|
|
39
|
+
options: Options;
|
|
44
40
|
private _provider?;
|
|
45
41
|
private _registeredProviderListeners;
|
|
46
|
-
private
|
|
42
|
+
private walletAddressSessionKey;
|
|
47
43
|
private config;
|
|
48
44
|
private sessionIdKey;
|
|
49
45
|
private timezoneToCountry;
|
|
50
46
|
currentChainId?: string | null;
|
|
51
|
-
|
|
47
|
+
currentConnectedAddress?: string;
|
|
52
48
|
private constructor();
|
|
53
|
-
static init(apiKey: string,
|
|
49
|
+
static init(apiKey: string, options: Options): Promise<FormoAnalytics>;
|
|
54
50
|
get provider(): EIP1193Provider | undefined;
|
|
55
|
-
private identifyUser;
|
|
56
51
|
private getSessionId;
|
|
52
|
+
private getOrigin;
|
|
57
53
|
private setSessionCookie;
|
|
58
54
|
private generateSessionId;
|
|
59
55
|
private getCookieValue;
|
|
60
56
|
private trackEvent;
|
|
61
|
-
private maskSensitiveData;
|
|
62
57
|
private trackPageHit;
|
|
63
58
|
private trackProvider;
|
|
59
|
+
private getCurrentWallet;
|
|
60
|
+
private getCurrentChainId;
|
|
61
|
+
private registerAddressChangedListener;
|
|
64
62
|
private registerChainChangedListener;
|
|
65
|
-
private
|
|
63
|
+
private onAddressChanged;
|
|
64
|
+
private onAddressConnected;
|
|
65
|
+
private onAddressDisconnected;
|
|
66
66
|
private onChainChanged;
|
|
67
|
-
private onAccountsChanged;
|
|
68
|
-
private registerAccountsChangedListener;
|
|
69
|
-
private getCurrentChainId;
|
|
70
|
-
private handleAccountConnected;
|
|
71
|
-
private getCurrentWallet;
|
|
72
67
|
/**
|
|
73
68
|
* Stores the wallet address in session storage when connected.
|
|
74
69
|
* @param address - The wallet address to store.
|
|
@@ -78,21 +73,19 @@ export declare class FormoAnalytics implements IFormoAnalytics {
|
|
|
78
73
|
* Clears the wallet address from session storage when disconnected.
|
|
79
74
|
*/
|
|
80
75
|
private clearWalletAddress;
|
|
81
|
-
|
|
82
|
-
connect({
|
|
83
|
-
account: string;
|
|
76
|
+
init(apiKey: string, options: Options): Promise<FormoAnalytics>;
|
|
77
|
+
connect({ chainId, address }: {
|
|
84
78
|
chainId: ChainID;
|
|
79
|
+
address: string;
|
|
85
80
|
}): Promise<void>;
|
|
86
|
-
disconnect(
|
|
87
|
-
account?: string;
|
|
81
|
+
disconnect(params?: {
|
|
88
82
|
chainId?: ChainID;
|
|
83
|
+
address?: string;
|
|
89
84
|
}): Promise<void> | undefined;
|
|
90
|
-
chain({ chainId,
|
|
85
|
+
chain({ chainId, address }: {
|
|
91
86
|
chainId: ChainID;
|
|
92
|
-
|
|
87
|
+
address?: string;
|
|
93
88
|
}): Promise<void>;
|
|
94
|
-
init(apiKey: string, projectId: string): Promise<FormoAnalytics>;
|
|
95
|
-
identify(userData: any): void;
|
|
96
89
|
page(): void;
|
|
97
90
|
track(eventName: string, eventData: any): void;
|
|
98
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE5D,UAAU,eAAe;IACvB;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhE;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEnE;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAChE;AAID,qBAAa,cAAe,YAAW,eAAe;aAgBlC,MAAM,EAAE,MAAM;IACvB,OAAO,EAAE,OAAO;IAhBzB,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,4BAA4B,CAG7B;IAEP,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,iBAAiB,CAAwC;IAEjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,OAAO;WAeM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAU5E,IAAI,QAAQ,IAAI,eAAe,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;YAUR,UAAU;IA+DxB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,aAAa;YA0BP,gBAAgB;YAwBhB,iBAAiB;IAiB/B,OAAO,CAAC,8BAA8B;IAYtC,OAAO,CAAC,4BAA4B;YAOtB,gBAAgB;YAWhB,kBAAkB;IAchC,OAAO,CAAC,qBAAqB;YAgBf,cAAc;IA4C5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAK/D,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiBnE,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAkB3D,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAuBlE,IAAI;IAIJ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;CAGxC"}
|