@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.
Files changed (56) hide show
  1. package/README.md +10 -18
  2. package/dist/cjs/src/FormoAnalytics.d.ts +30 -37
  3. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  4. package/dist/cjs/src/FormoAnalytics.js +163 -247
  5. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  6. package/dist/cjs/src/FormoAnalyticsProvider.d.ts +1 -1
  7. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
  8. package/dist/cjs/src/FormoAnalyticsProvider.js +3 -3
  9. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
  10. package/dist/cjs/src/constants/config.d.ts +1 -1
  11. package/dist/cjs/src/constants/config.d.ts.map +1 -1
  12. package/dist/cjs/src/constants/config.js +2 -2
  13. package/dist/cjs/src/constants/config.js.map +1 -1
  14. package/dist/cjs/src/types/base.d.ts +5 -1
  15. package/dist/cjs/src/types/base.d.ts.map +1 -1
  16. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  17. package/dist/esm/src/FormoAnalytics.d.ts +30 -37
  18. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  19. package/dist/esm/src/FormoAnalytics.js +164 -248
  20. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  21. package/dist/esm/src/FormoAnalyticsProvider.d.ts +1 -1
  22. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
  23. package/dist/esm/src/FormoAnalyticsProvider.js +3 -3
  24. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
  25. package/dist/esm/src/constants/config.d.ts +1 -1
  26. package/dist/esm/src/constants/config.d.ts.map +1 -1
  27. package/dist/esm/src/constants/config.js +1 -1
  28. package/dist/esm/src/constants/config.js.map +1 -1
  29. package/dist/esm/src/types/base.d.ts +5 -1
  30. package/dist/esm/src/types/base.d.ts.map +1 -1
  31. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  32. package/dist/index.umd.min.js +1 -1
  33. package/dist/index.umd.min.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/FormoAnalytics.ts +162 -254
  36. package/src/FormoAnalyticsProvider.tsx +3 -6
  37. package/src/constants/config.ts +1 -1
  38. package/src/types/base.ts +7 -1
  39. package/dist/cjs/src/utils/index.d.ts +0 -2
  40. package/dist/cjs/src/utils/index.d.ts.map +0 -1
  41. package/dist/cjs/src/utils/index.js +0 -18
  42. package/dist/cjs/src/utils/index.js.map +0 -1
  43. package/dist/cjs/src/utils/isNotEmptyObject.d.ts +0 -2
  44. package/dist/cjs/src/utils/isNotEmptyObject.d.ts.map +0 -1
  45. package/dist/cjs/src/utils/isNotEmptyObject.js +0 -9
  46. package/dist/cjs/src/utils/isNotEmptyObject.js.map +0 -1
  47. package/dist/esm/src/utils/index.d.ts +0 -2
  48. package/dist/esm/src/utils/index.d.ts.map +0 -1
  49. package/dist/esm/src/utils/index.js +0 -2
  50. package/dist/esm/src/utils/index.js.map +0 -1
  51. package/dist/esm/src/utils/isNotEmptyObject.d.ts +0 -2
  52. package/dist/esm/src/utils/isNotEmptyObject.d.ts.map +0 -1
  53. package/dist/esm/src/utils/isNotEmptyObject.js +0 -6
  54. package/dist/esm/src/utils/isNotEmptyObject.js.map +0 -1
  55. package/src/utils/index.ts +0 -1
  56. 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 `index.html`:
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, projectId)
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" projectId="YOUR_PROJECT_ID">
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 and Page Views**
72
+ **3. Tracking Events**
74
73
 
75
- You can use the `useFormoAnalytics` hook from the SDK to track user interactions and page views.
74
+ You can use the `useFormoAnalytics` hook from the SDK to track user interactions.
76
75
 
77
- Example: Tracking a Page View and Custom Event
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?.track('custom_event', { key: 'value' });
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} projectId={projectId}>
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' projectId='YOUR_PROJECT_ID'>
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 page hit', error);
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, projectId: string): Promise<FormoAnalytics>;
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(attributes?: {
26
- account?: string;
21
+ disconnect(params?: {
27
22
  chainId?: ChainID;
23
+ address?: string;
28
24
  }): void;
29
25
  /**
30
- * Tracks a specific event with a name and associated data.
26
+ * Switches the blockchain chain context and optionally logs additional params.
31
27
  */
32
- track(eventName: string, eventData: Record<string, any>): void;
33
- /**
34
- * Switches the blockchain chain context and optionally logs additional attributes.
35
- */
36
- chain(attributes: {
28
+ chain(params: {
37
29
  chainId: ChainID;
38
- account?: string;
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
- projectId: string;
39
+ options: Options;
44
40
  private _provider?;
45
41
  private _registeredProviderListeners;
46
- private sessionKey;
42
+ private walletAddressSessionKey;
47
43
  private config;
48
44
  private sessionIdKey;
49
45
  private timezoneToCountry;
50
46
  currentChainId?: string | null;
51
- currentConnectedAccount?: string;
47
+ currentConnectedAddress?: string;
52
48
  private constructor();
53
- static init(apiKey: string, projectId: string): Promise<FormoAnalytics>;
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 handleAccountDisconnected;
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
- private buildApiUrl;
82
- connect({ account, chainId }: {
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(attributes?: {
87
- account?: string;
81
+ disconnect(params?: {
88
82
  chainId?: ChainID;
83
+ address?: string;
89
84
  }): Promise<void> | undefined;
90
- chain({ chainId, account }: {
85
+ chain({ chainId, address }: {
91
86
  chainId: ChainID;
92
- account?: string;
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":"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"}
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"}