@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.
- package/package.json +1 -1
- package/src/FormoAnalytics.ts +29 -3
- package/src/FormoAnalyticsProvider.tsx +1 -1
- package/src/types/base.ts +6 -6
- package/src/types/provider.ts +19 -7
- package/dist/cjs/src/FormoAnalytics.d.ts +0 -167
- package/dist/cjs/src/FormoAnalytics.d.ts.map +0 -1
- package/dist/cjs/src/FormoAnalytics.js +0 -922
- package/dist/cjs/src/FormoAnalytics.js.map +0 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts +0 -7
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +0 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js +0 -128
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +0 -1
- package/dist/cjs/src/constants/config.d.ts +0 -602
- package/dist/cjs/src/constants/config.d.ts.map +0 -1
- package/dist/cjs/src/constants/config.js +0 -657
- package/dist/cjs/src/constants/config.js.map +0 -1
- package/dist/cjs/src/constants/events.d.ts +0 -10
- package/dist/cjs/src/constants/events.d.ts.map +0 -1
- package/dist/cjs/src/constants/events.js +0 -14
- package/dist/cjs/src/constants/events.js.map +0 -1
- package/dist/cjs/src/constants/index.d.ts +0 -3
- package/dist/cjs/src/constants/index.d.ts.map +0 -1
- package/dist/cjs/src/constants/index.js +0 -19
- package/dist/cjs/src/constants/index.js.map +0 -1
- package/dist/cjs/src/index.d.ts +0 -4
- package/dist/cjs/src/index.d.ts.map +0 -1
- package/dist/cjs/src/index.js +0 -20
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/lib/utils.d.ts +0 -2
- package/dist/cjs/src/lib/utils.d.ts.map +0 -1
- package/dist/cjs/src/lib/utils.js +0 -31
- package/dist/cjs/src/lib/utils.js.map +0 -1
- package/dist/cjs/src/types/base.d.ts +0 -16
- package/dist/cjs/src/types/base.d.ts.map +0 -1
- package/dist/cjs/src/types/base.js +0 -3
- package/dist/cjs/src/types/base.js.map +0 -1
- package/dist/cjs/src/types/events.d.ts +0 -11
- package/dist/cjs/src/types/events.d.ts.map +0 -1
- package/dist/cjs/src/types/events.js +0 -16
- package/dist/cjs/src/types/events.js.map +0 -1
- package/dist/cjs/src/types/index.d.ts +0 -4
- package/dist/cjs/src/types/index.d.ts.map +0 -1
- package/dist/cjs/src/types/index.js +0 -20
- package/dist/cjs/src/types/index.js.map +0 -1
- package/dist/cjs/src/types/provider.d.ts +0 -15
- package/dist/cjs/src/types/provider.d.ts.map +0 -1
- package/dist/cjs/src/types/provider.js +0 -3
- package/dist/cjs/src/types/provider.js.map +0 -1
- package/dist/cjs/test/lib.spec.d.ts +0 -2
- package/dist/cjs/test/lib.spec.d.ts.map +0 -1
- package/dist/cjs/test/lib.spec.js +0 -25
- package/dist/cjs/test/lib.spec.js.map +0 -1
- package/dist/cjs/tsconfig.tsbuildinfo +0 -1
- package/dist/esm/src/FormoAnalytics.d.ts +0 -167
- package/dist/esm/src/FormoAnalytics.d.ts.map +0 -1
- package/dist/esm/src/FormoAnalytics.js +0 -916
- package/dist/esm/src/FormoAnalytics.js.map +0 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts +0 -7
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +0 -1
- package/dist/esm/src/FormoAnalyticsProvider.js +0 -123
- package/dist/esm/src/FormoAnalyticsProvider.js.map +0 -1
- package/dist/esm/src/constants/config.d.ts +0 -602
- package/dist/esm/src/constants/config.d.ts.map +0 -1
- package/dist/esm/src/constants/config.js +0 -654
- package/dist/esm/src/constants/config.js.map +0 -1
- package/dist/esm/src/constants/events.d.ts +0 -10
- package/dist/esm/src/constants/events.d.ts.map +0 -1
- package/dist/esm/src/constants/events.js +0 -11
- package/dist/esm/src/constants/events.js.map +0 -1
- package/dist/esm/src/constants/index.d.ts +0 -3
- package/dist/esm/src/constants/index.d.ts.map +0 -1
- package/dist/esm/src/constants/index.js +0 -3
- package/dist/esm/src/constants/index.js.map +0 -1
- package/dist/esm/src/index.d.ts +0 -4
- package/dist/esm/src/index.d.ts.map +0 -1
- package/dist/esm/src/index.js +0 -4
- package/dist/esm/src/index.js.map +0 -1
- package/dist/esm/src/lib/utils.d.ts +0 -2
- package/dist/esm/src/lib/utils.d.ts.map +0 -1
- package/dist/esm/src/lib/utils.js +0 -28
- package/dist/esm/src/lib/utils.js.map +0 -1
- package/dist/esm/src/types/base.d.ts +0 -16
- package/dist/esm/src/types/base.d.ts.map +0 -1
- package/dist/esm/src/types/base.js +0 -2
- package/dist/esm/src/types/base.js.map +0 -1
- package/dist/esm/src/types/events.d.ts +0 -11
- package/dist/esm/src/types/events.d.ts.map +0 -1
- package/dist/esm/src/types/events.js +0 -13
- package/dist/esm/src/types/events.js.map +0 -1
- package/dist/esm/src/types/index.d.ts +0 -4
- package/dist/esm/src/types/index.d.ts.map +0 -1
- package/dist/esm/src/types/index.js +0 -4
- package/dist/esm/src/types/index.js.map +0 -1
- package/dist/esm/src/types/provider.d.ts +0 -15
- package/dist/esm/src/types/provider.d.ts.map +0 -1
- package/dist/esm/src/types/provider.js +0 -2
- package/dist/esm/src/types/provider.js.map +0 -1
- package/dist/esm/test/lib.spec.d.ts +0 -2
- package/dist/esm/test/lib.spec.d.ts.map +0 -1
- package/dist/esm/test/lib.spec.js +0 -23
- package/dist/esm/test/lib.spec.js.map +0 -1
- package/dist/esm/tsconfig.tsbuildinfo +0 -1
- package/dist/index.umd.min.js +0 -3
- package/dist/index.umd.min.js.LICENSE.txt +0 -19
- package/dist/index.umd.min.js.map +0 -1
package/package.json
CHANGED
package/src/FormoAnalytics.ts
CHANGED
|
@@ -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
|
|
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,
|
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?:
|
|
10
|
+
provider?: EIP6369Provider;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export interface FormoAnalyticsProviderProps {
|
|
14
|
-
apiKey
|
|
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
|
+
}
|
package/src/types/provider.ts
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
|
-
import EventEmitter from
|
|
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(
|
|
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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"}
|