@formo/analytics 1.13.4-alpha.2 → 1.13.4-alpha.4

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 (106) hide show
  1. package/package.json +1 -1
  2. package/src/FormoAnalytics.ts +29 -3
  3. package/src/FormoAnalyticsProvider.tsx +1 -1
  4. package/src/types/base.ts +6 -6
  5. package/src/types/provider.ts +19 -7
  6. package/dist/cjs/src/FormoAnalytics.d.ts +0 -167
  7. package/dist/cjs/src/FormoAnalytics.d.ts.map +0 -1
  8. package/dist/cjs/src/FormoAnalytics.js +0 -922
  9. package/dist/cjs/src/FormoAnalytics.js.map +0 -1
  10. package/dist/cjs/src/FormoAnalyticsProvider.d.ts +0 -7
  11. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +0 -1
  12. package/dist/cjs/src/FormoAnalyticsProvider.js +0 -128
  13. package/dist/cjs/src/FormoAnalyticsProvider.js.map +0 -1
  14. package/dist/cjs/src/constants/config.d.ts +0 -602
  15. package/dist/cjs/src/constants/config.d.ts.map +0 -1
  16. package/dist/cjs/src/constants/config.js +0 -657
  17. package/dist/cjs/src/constants/config.js.map +0 -1
  18. package/dist/cjs/src/constants/events.d.ts +0 -10
  19. package/dist/cjs/src/constants/events.d.ts.map +0 -1
  20. package/dist/cjs/src/constants/events.js +0 -14
  21. package/dist/cjs/src/constants/events.js.map +0 -1
  22. package/dist/cjs/src/constants/index.d.ts +0 -3
  23. package/dist/cjs/src/constants/index.d.ts.map +0 -1
  24. package/dist/cjs/src/constants/index.js +0 -19
  25. package/dist/cjs/src/constants/index.js.map +0 -1
  26. package/dist/cjs/src/index.d.ts +0 -4
  27. package/dist/cjs/src/index.d.ts.map +0 -1
  28. package/dist/cjs/src/index.js +0 -20
  29. package/dist/cjs/src/index.js.map +0 -1
  30. package/dist/cjs/src/lib/utils.d.ts +0 -2
  31. package/dist/cjs/src/lib/utils.d.ts.map +0 -1
  32. package/dist/cjs/src/lib/utils.js +0 -31
  33. package/dist/cjs/src/lib/utils.js.map +0 -1
  34. package/dist/cjs/src/types/base.d.ts +0 -16
  35. package/dist/cjs/src/types/base.d.ts.map +0 -1
  36. package/dist/cjs/src/types/base.js +0 -3
  37. package/dist/cjs/src/types/base.js.map +0 -1
  38. package/dist/cjs/src/types/events.d.ts +0 -11
  39. package/dist/cjs/src/types/events.d.ts.map +0 -1
  40. package/dist/cjs/src/types/events.js +0 -16
  41. package/dist/cjs/src/types/events.js.map +0 -1
  42. package/dist/cjs/src/types/index.d.ts +0 -4
  43. package/dist/cjs/src/types/index.d.ts.map +0 -1
  44. package/dist/cjs/src/types/index.js +0 -20
  45. package/dist/cjs/src/types/index.js.map +0 -1
  46. package/dist/cjs/src/types/provider.d.ts +0 -15
  47. package/dist/cjs/src/types/provider.d.ts.map +0 -1
  48. package/dist/cjs/src/types/provider.js +0 -3
  49. package/dist/cjs/src/types/provider.js.map +0 -1
  50. package/dist/cjs/test/lib.spec.d.ts +0 -2
  51. package/dist/cjs/test/lib.spec.d.ts.map +0 -1
  52. package/dist/cjs/test/lib.spec.js +0 -25
  53. package/dist/cjs/test/lib.spec.js.map +0 -1
  54. package/dist/cjs/tsconfig.tsbuildinfo +0 -1
  55. package/dist/esm/src/FormoAnalytics.d.ts +0 -167
  56. package/dist/esm/src/FormoAnalytics.d.ts.map +0 -1
  57. package/dist/esm/src/FormoAnalytics.js +0 -916
  58. package/dist/esm/src/FormoAnalytics.js.map +0 -1
  59. package/dist/esm/src/FormoAnalyticsProvider.d.ts +0 -7
  60. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +0 -1
  61. package/dist/esm/src/FormoAnalyticsProvider.js +0 -123
  62. package/dist/esm/src/FormoAnalyticsProvider.js.map +0 -1
  63. package/dist/esm/src/constants/config.d.ts +0 -602
  64. package/dist/esm/src/constants/config.d.ts.map +0 -1
  65. package/dist/esm/src/constants/config.js +0 -654
  66. package/dist/esm/src/constants/config.js.map +0 -1
  67. package/dist/esm/src/constants/events.d.ts +0 -10
  68. package/dist/esm/src/constants/events.d.ts.map +0 -1
  69. package/dist/esm/src/constants/events.js +0 -11
  70. package/dist/esm/src/constants/events.js.map +0 -1
  71. package/dist/esm/src/constants/index.d.ts +0 -3
  72. package/dist/esm/src/constants/index.d.ts.map +0 -1
  73. package/dist/esm/src/constants/index.js +0 -3
  74. package/dist/esm/src/constants/index.js.map +0 -1
  75. package/dist/esm/src/index.d.ts +0 -4
  76. package/dist/esm/src/index.d.ts.map +0 -1
  77. package/dist/esm/src/index.js +0 -4
  78. package/dist/esm/src/index.js.map +0 -1
  79. package/dist/esm/src/lib/utils.d.ts +0 -2
  80. package/dist/esm/src/lib/utils.d.ts.map +0 -1
  81. package/dist/esm/src/lib/utils.js +0 -28
  82. package/dist/esm/src/lib/utils.js.map +0 -1
  83. package/dist/esm/src/types/base.d.ts +0 -16
  84. package/dist/esm/src/types/base.d.ts.map +0 -1
  85. package/dist/esm/src/types/base.js +0 -2
  86. package/dist/esm/src/types/base.js.map +0 -1
  87. package/dist/esm/src/types/events.d.ts +0 -11
  88. package/dist/esm/src/types/events.d.ts.map +0 -1
  89. package/dist/esm/src/types/events.js +0 -13
  90. package/dist/esm/src/types/events.js.map +0 -1
  91. package/dist/esm/src/types/index.d.ts +0 -4
  92. package/dist/esm/src/types/index.d.ts.map +0 -1
  93. package/dist/esm/src/types/index.js +0 -4
  94. package/dist/esm/src/types/index.js.map +0 -1
  95. package/dist/esm/src/types/provider.d.ts +0 -15
  96. package/dist/esm/src/types/provider.d.ts.map +0 -1
  97. package/dist/esm/src/types/provider.js +0 -2
  98. package/dist/esm/src/types/provider.js.map +0 -1
  99. package/dist/esm/test/lib.spec.d.ts +0 -2
  100. package/dist/esm/test/lib.spec.d.ts.map +0 -1
  101. package/dist/esm/test/lib.spec.js +0 -23
  102. package/dist/esm/test/lib.spec.js.map +0 -1
  103. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  104. package/dist/index.umd.min.js +0 -3
  105. package/dist/index.umd.min.js.LICENSE.txt +0 -19
  106. package/dist/index.umd.min.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formo/analytics",
3
- "version": "1.13.4-alpha.2",
3
+ "version": "1.13.4-alpha.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/getformo/sdk.git"
@@ -61,6 +61,8 @@ interface IFormoAnalytics {
61
61
  export class FormoAnalytics implements IFormoAnalytics {
62
62
  private _provider?: EIP1193Provider;
63
63
  private _providerListeners: Record<string, (...args: unknown[]) => void> = {};
64
+ private identifySent?: boolean;
65
+ readonly identifySentKey = "identifySent";
64
66
 
65
67
  config: Config;
66
68
  currentChainId?: ChainID;
@@ -74,6 +76,15 @@ export class FormoAnalytics implements IFormoAnalytics {
74
76
  apiKey: apiKey,
75
77
  };
76
78
 
79
+ try {
80
+ const isWalletIdentified = JSON.parse(
81
+ sessionStorage.getItem(this.identifySentKey) || "false"
82
+ );
83
+ this.identifySent = isWalletIdentified;
84
+ } catch {
85
+ this.identifySent = false;
86
+ }
87
+
77
88
  // TODO: replace with eip6963
78
89
  const provider = options.provider || window?.ethereum;
79
90
  if (provider) {
@@ -263,7 +274,7 @@ export class FormoAnalytics implements IFormoAnalytics {
263
274
  }
264
275
 
265
276
  /**
266
- * Emits a identify event with current wallet address.
277
+ * Emits an identify event with current wallet address.
267
278
  * @param {Address} params.address
268
279
  * @returns {Promise<void>}
269
280
  */
@@ -276,7 +287,9 @@ export class FormoAnalytics implements IFormoAnalytics {
276
287
  providerName?: string;
277
288
  rdns?: string;
278
289
  }): Promise<void> {
279
- if (address) {
290
+ if (address && this.identifySent === false) {
291
+ this.identifySent = true;
292
+ sessionStorage.setItem(this.identifySentKey, "true");
280
293
  await this.trackEvent(Event.IDENTIFY, {
281
294
  address,
282
295
  providerName,
@@ -641,9 +654,11 @@ export class FormoAnalytics implements IFormoAnalytics {
641
654
  }
642
655
 
643
656
  private async identifyAll(providers: EIP6963ProviderDetail[]): Promise<void> {
657
+ console.log("identifying all => providers", providers);
644
658
  for (const { provider, info } of providers) {
645
659
  try {
646
660
  const accounts = await this.getAccounts(provider);
661
+ console.log("identifying all => accounts", accounts);
647
662
  if (accounts && accounts.length > 0) {
648
663
  for (const address of accounts) {
649
664
  await this.identify({
@@ -653,7 +668,9 @@ export class FormoAnalytics implements IFormoAnalytics {
653
668
  });
654
669
  }
655
670
  }
656
- } catch (err) {}
671
+ } catch (err) {
672
+ console.log("identifying all => err", err);
673
+ }
657
674
  }
658
675
  }
659
676
 
@@ -684,13 +701,21 @@ export class FormoAnalytics implements IFormoAnalytics {
684
701
  provider?: EIP1193Provider
685
702
  ): Promise<Address[] | null> {
686
703
  const p = provider || this.provider;
704
+ console.log(
705
+ "getAccounts => p, provider, this.provider",
706
+ p,
707
+ provider,
708
+ this.provider
709
+ );
687
710
  try {
688
711
  const res: string[] | null | undefined = await p?.request({
689
712
  method: "eth_accounts",
690
713
  });
714
+ console.log("getAccounts => res", res);
691
715
  if (!res || res.length === 0) return null;
692
716
  return res;
693
717
  } catch (err) {
718
+ console.log("getAccounts => err", err);
694
719
  if ((err as any).code !== 4001) {
695
720
  console.log(
696
721
  "FormoAnalytics::getAccounts: eth_accounts threw an error",
@@ -763,6 +788,7 @@ export class FormoAnalytics implements IFormoAnalytics {
763
788
  // common browser properties
764
789
  return {
765
790
  "user-agent": window.navigator.userAgent,
791
+ origin: url.origin,
766
792
  locale: language,
767
793
  location,
768
794
  referrer: document.referrer,
@@ -55,7 +55,7 @@ const InitializedAnalytics = ({
55
55
  if (initializedStartedRef.current) return;
56
56
  initializedStartedRef.current = true;
57
57
 
58
- await initializeFormoAnalytics(apiKey, options);
58
+ await initializeFormoAnalytics(apiKey!, options);
59
59
  };
60
60
 
61
61
  initialize();
package/src/types/base.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { EIP1193Provider } from "./provider";
1
+ import { EIP1193Provider, EIP6369Provider } from "./provider";
2
2
 
3
3
  // Decimal chain ID
4
- export type ChainID = number
4
+ export type ChainID = number;
5
5
 
6
6
  // Address (EVM, Solana, etc.)
7
- export type Address = string
7
+ export type Address = string;
8
8
 
9
9
  export interface Options {
10
- provider?: EIP1193Provider;
10
+ provider?: EIP6369Provider;
11
11
  }
12
12
 
13
13
  export interface FormoAnalyticsProviderProps {
14
- apiKey: string;
14
+ apiKey?: string;
15
15
  options?: Options;
16
16
  disabled?: boolean;
17
17
  children: React.ReactNode;
@@ -19,4 +19,4 @@ export interface FormoAnalyticsProviderProps {
19
19
 
20
20
  export interface Config {
21
21
  apiKey: string;
22
- }
22
+ }
@@ -1,17 +1,29 @@
1
- import EventEmitter from 'events'
1
+ import EventEmitter from "events";
2
2
 
3
3
  export interface RequestArguments {
4
- method: string
5
- params?: unknown[] | Record<string, unknown>
4
+ method: string;
5
+ params?: unknown[] | Record<string, unknown>;
6
6
  }
7
7
 
8
8
  export interface EIP1193Provider extends EventEmitter {
9
- request<T>(args: RequestArguments): Promise<T | null | undefined>
10
- on(eventName: string | symbol, listener: (...args: unknown[]) => void): this
11
- removeListener(eventName: string | symbol, listener: (...args: unknown[]) => void): this
9
+ request<T>(args: RequestArguments): Promise<T | null | undefined>;
10
+ on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
11
+ removeListener(
12
+ eventName: string | symbol,
13
+ listener: (...args: unknown[]) => void
14
+ ): this;
15
+ }
16
+
17
+ export interface EIP6369Provider extends EventEmitter {
18
+ request<T>(args: RequestArguments): Promise<T | null | undefined>;
19
+ on(eventName: string | symbol, listener: (...args: unknown[]) => void): this;
20
+ removeListener(
21
+ eventName: string | symbol,
22
+ listener: (...args: unknown[]) => void
23
+ ): this;
12
24
  }
13
25
 
14
26
  export interface RPCError extends Error {
15
27
  code: number;
16
28
  data?: unknown;
17
- }
29
+ }
@@ -1,167 +0,0 @@
1
- import { ChainID, Address, EIP1193Provider, Options, Config, SignatureStatus, TransactionStatus } from "./types";
2
- interface IFormoAnalytics {
3
- page(): void;
4
- connect(params: {
5
- chainId: ChainID;
6
- address: Address;
7
- }): Promise<void>;
8
- disconnect(params?: {
9
- chainId?: ChainID;
10
- address?: Address;
11
- }): Promise<void>;
12
- chain(params: {
13
- chainId: ChainID;
14
- address?: Address;
15
- }): Promise<void>;
16
- signature({ status, chainId, address, message, signatureHash, }: {
17
- status: SignatureStatus;
18
- chainId?: ChainID;
19
- address: Address;
20
- message: string;
21
- signatureHash?: string;
22
- }): Promise<void>;
23
- transaction({ status, chainId, address, data, to, value, transactionHash, }: {
24
- status: TransactionStatus;
25
- chainId: ChainID;
26
- address: Address;
27
- data?: string;
28
- to?: string;
29
- value?: string;
30
- transactionHash?: string;
31
- }): Promise<void>;
32
- identify(params: {
33
- address: Address;
34
- }): Promise<void>;
35
- track(action: string, payload: Record<string, any>): Promise<void>;
36
- }
37
- export declare class FormoAnalytics implements IFormoAnalytics {
38
- readonly apiKey: string;
39
- options: Options;
40
- private _provider?;
41
- private _providerListeners;
42
- config: Config;
43
- currentChainId?: ChainID;
44
- currentConnectedAddress?: Address;
45
- private constructor();
46
- static init(apiKey: string, options?: Options): Promise<FormoAnalytics>;
47
- /**
48
- * Emits a page visit event with the current URL information, fire on page change.
49
- * @returns {Promise<void>}
50
- */
51
- page(): Promise<void>;
52
- /**
53
- * Emits a wallet connect event.
54
- * @param {ChainID} params.chainId
55
- * @param {Address} params.address
56
- * @throws {Error} If chainId or address is empty
57
- * @returns {Promise<void>}
58
- */
59
- connect({ chainId, address, }: {
60
- chainId: ChainID;
61
- address: Address;
62
- }): Promise<void>;
63
- /**
64
- * Emits a wallet disconnect event.
65
- * @param {ChainID} params.chainId
66
- * @param {Address} params.address
67
- * @returns {Promise<void>}
68
- */
69
- disconnect(params?: {
70
- chainId?: ChainID;
71
- address?: Address;
72
- }): Promise<void>;
73
- /**
74
- * Emits a chain network change event.
75
- * @param {ChainID} params.chainId
76
- * @param {Address} params.address
77
- * @throws {Error} If chainId is empty, zero, or not a valid number
78
- * @throws {Error} If no address is provided and no previous address is recorded
79
- * @returns {Promise<void>}
80
- */
81
- chain({ chainId, address, }: {
82
- chainId: ChainID;
83
- address?: Address;
84
- }): Promise<void>;
85
- /**
86
- * Emits a signature event.
87
- * @param {SignatureStatus} params.status - requested, confirmed, rejected
88
- * @param {ChainID} params.chainId
89
- * @param {Address} params.address
90
- * @param {string} params.message
91
- * @param {string} params.signatureHash - only provided if status is confirmed
92
- * @returns {Promise<void>}
93
- */
94
- signature({ status, chainId, address, message, signatureHash, }: {
95
- status: SignatureStatus;
96
- chainId?: ChainID;
97
- address: Address;
98
- message: string;
99
- signatureHash?: string;
100
- }): Promise<void>;
101
- /**
102
- * Emits a transaction event.
103
- * @param {TransactionStatus} params.status - started, broadcasted, rejected
104
- * @param {ChainID} params.chainId
105
- * @param {Address} params.address
106
- * @param {string} params.data
107
- * @param {string} params.to
108
- * @param {string} params.value
109
- * @param {string} params.transactionHash - only provided if status is broadcasted
110
- * @returns {Promise<void>}
111
- */
112
- transaction({ status, chainId, address, data, to, value, transactionHash, }: {
113
- status: TransactionStatus;
114
- chainId: ChainID;
115
- address: Address;
116
- data?: string;
117
- to?: string;
118
- value?: string;
119
- transactionHash?: string;
120
- }): Promise<void>;
121
- /**
122
- * Emits a identify event with current wallet address.
123
- * @param {Address} params.address
124
- * @returns {Promise<void>}
125
- */
126
- identify({ address, providerName, rdns, }: {
127
- address: Address;
128
- providerName?: string;
129
- rdns?: string;
130
- }): Promise<void>;
131
- /**
132
- * Emits a custom event with custom data.
133
- * @param {string} action
134
- * @param {Record<string, any>} payload
135
- * @returns {Promise<void>}
136
- */
137
- track(action: string, payload: Record<string, any>): Promise<void>;
138
- private trackProvider;
139
- private registerAddressChangedListener;
140
- private registerChainChangedListener;
141
- private registerSignatureListener;
142
- private registerTransactionListener;
143
- private onAddressChanged;
144
- private onAddressConnected;
145
- private handleDisconnect;
146
- private onAddressDisconnected;
147
- private onChainChanged;
148
- private trackFirstPageHit;
149
- private trackPageHits;
150
- private onLocationChange;
151
- private trackPageHit;
152
- private trackEvent;
153
- private getProviders;
154
- private identifyAll;
155
- get provider(): EIP1193Provider | undefined;
156
- private getAddress;
157
- private getAccounts;
158
- private getCurrentChainId;
159
- private getLocation;
160
- private getLanguage;
161
- private buildEventPayload;
162
- private buildSignatureEventPayload;
163
- private buildTransactionEventPayload;
164
- private getActionDescriptor;
165
- }
166
- export {};
167
- //# sourceMappingURL=FormoAnalytics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"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"}