@formo/analytics 1.16.8 → 1.16.9
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/cjs/src/FormoAnalytics.d.ts +4 -1
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +90 -37
- package/dist/cjs/src/FormoAnalytics.js.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/cjs/src/constants/config.d.ts.map +1 -1
- package/dist/cjs/src/lib/event/utils.d.ts.map +1 -1
- package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts.map +1 -1
- package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts.map +1 -1
- package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts.map +1 -1
- package/dist/cjs/src/lib/version.d.ts +1 -1
- package/dist/cjs/src/lib/version.js +1 -1
- package/dist/cjs/src/utils/address.d.ts.map +1 -1
- package/dist/cjs/src/utils/base.d.ts.map +1 -1
- package/dist/cjs/src/utils/converter.d.ts.map +1 -1
- package/dist/cjs/src/utils/timestamp.d.ts.map +1 -1
- package/dist/cjs/src/validators/address.d.ts.map +1 -1
- package/dist/cjs/src/validators/checks.d.ts.map +1 -1
- package/dist/cjs/src/validators/object.d.ts.map +1 -1
- package/dist/cjs/src/validators/string.d.ts.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/FormoAnalytics.d.ts +4 -1
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalytics.js +90 -37
- package/dist/esm/src/FormoAnalytics.js.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/esm/src/constants/config.d.ts.map +1 -1
- package/dist/esm/src/lib/event/utils.d.ts.map +1 -1
- package/dist/esm/src/lib/ramda/internal/_curry1.d.ts.map +1 -1
- package/dist/esm/src/lib/ramda/internal/_curry2.d.ts.map +1 -1
- package/dist/esm/src/lib/ramda/internal/_curry3.d.ts.map +1 -1
- package/dist/esm/src/lib/version.d.ts +1 -1
- package/dist/esm/src/lib/version.js +1 -1
- package/dist/esm/src/utils/address.d.ts.map +1 -1
- package/dist/esm/src/utils/base.d.ts.map +1 -1
- package/dist/esm/src/utils/converter.d.ts.map +1 -1
- package/dist/esm/src/utils/timestamp.d.ts.map +1 -1
- package/dist/esm/src/validators/address.d.ts.map +1 -1
- package/dist/esm/src/validators/checks.d.ts.map +1 -1
- package/dist/esm/src/validators/object.d.ts.map +1 -1
- package/dist/esm/src/validators/string.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 +2 -2
- package/src/FormoAnalytics.ts +43 -10
- package/src/lib/version.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formo/analytics",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.9",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/getformo/sdk.git"
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"size-limit": [
|
|
88
88
|
{
|
|
89
89
|
"path": "dist/index.umd.min.js",
|
|
90
|
-
"limit": "
|
|
90
|
+
"limit": "26 KB"
|
|
91
91
|
}
|
|
92
92
|
],
|
|
93
93
|
"peerDependencies": {
|
package/src/FormoAnalytics.ts
CHANGED
|
@@ -41,6 +41,7 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
41
41
|
private session: FormoAnalyticsSession;
|
|
42
42
|
private eventManager: IEventManager;
|
|
43
43
|
private storageKeyManager: IStorageKeyManager;
|
|
44
|
+
private _providers: readonly EIP6963ProviderDetail[] = [];
|
|
44
45
|
|
|
45
46
|
config: Config;
|
|
46
47
|
currentChainId?: ChainID;
|
|
@@ -107,8 +108,8 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
107
108
|
const analytics = new FormoAnalytics(writeKey, options);
|
|
108
109
|
|
|
109
110
|
// Auto-detect wallet provider
|
|
110
|
-
|
|
111
|
-
await analytics.detectWallets(
|
|
111
|
+
analytics._providers = await analytics.getProviders();
|
|
112
|
+
await analytics.detectWallets(analytics._providers);
|
|
112
113
|
|
|
113
114
|
return analytics;
|
|
114
115
|
}
|
|
@@ -379,7 +380,7 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
379
380
|
* @returns {Promise<void>}
|
|
380
381
|
*/
|
|
381
382
|
async identify(
|
|
382
|
-
params
|
|
383
|
+
params?: {
|
|
383
384
|
address?: Address;
|
|
384
385
|
providerName?: string;
|
|
385
386
|
userId?: string;
|
|
@@ -390,6 +391,29 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
390
391
|
callback?: (...args: unknown[]) => void
|
|
391
392
|
): Promise<void> {
|
|
392
393
|
try {
|
|
394
|
+
if (!params) { // If no params provided, auto-identify
|
|
395
|
+
for (const providerDetail of this._providers) {
|
|
396
|
+
const provider = providerDetail.provider;
|
|
397
|
+
if (!provider) continue;
|
|
398
|
+
|
|
399
|
+
try {
|
|
400
|
+
const address = await this.getAddress(provider);
|
|
401
|
+
if (address) {
|
|
402
|
+
// NOTE: do not set this.currentAddress without explicit connect or identify
|
|
403
|
+
await this.identify({
|
|
404
|
+
address,
|
|
405
|
+
providerName: providerDetail.info.name,
|
|
406
|
+
rdns: providerDetail.info.rdns,
|
|
407
|
+
}, properties, context, callback);
|
|
408
|
+
}
|
|
409
|
+
} catch (err) {
|
|
410
|
+
logger.error(`Failed to identify provider ${providerDetail.info.name}:`, err);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Explicit identify
|
|
393
417
|
const { userId, address, providerName, rdns } = params;
|
|
394
418
|
if (address) this.currentAddress = address;
|
|
395
419
|
if (userId) {
|
|
@@ -410,7 +434,7 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
410
434
|
callback
|
|
411
435
|
);
|
|
412
436
|
} catch (e) {
|
|
413
|
-
|
|
437
|
+
logger.log("identify error", e);
|
|
414
438
|
}
|
|
415
439
|
}
|
|
416
440
|
|
|
@@ -830,16 +854,24 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
830
854
|
private async getProviders(): Promise<readonly EIP6963ProviderDetail[]> {
|
|
831
855
|
const store = createStore();
|
|
832
856
|
let providers = store.getProviders();
|
|
833
|
-
|
|
834
|
-
|
|
857
|
+
store.subscribe((providerDetails) => {
|
|
858
|
+
providers = providerDetails;
|
|
859
|
+
this._providers = providers;
|
|
860
|
+
});
|
|
835
861
|
|
|
836
862
|
// Fallback to injected provider if no providers are found
|
|
837
863
|
if (providers.length === 0) {
|
|
838
|
-
|
|
864
|
+
this._providers = window?.ethereum ? [window.ethereum] : [];
|
|
865
|
+
return this._providers;
|
|
839
866
|
}
|
|
867
|
+
this._providers = providers;
|
|
840
868
|
return providers;
|
|
841
869
|
}
|
|
842
870
|
|
|
871
|
+
get providers(): readonly EIP6963ProviderDetail[] {
|
|
872
|
+
return this._providers;
|
|
873
|
+
}
|
|
874
|
+
|
|
843
875
|
private async detectWallets(
|
|
844
876
|
providers: readonly EIP6963ProviderDetail[]
|
|
845
877
|
): Promise<void> {
|
|
@@ -859,15 +891,16 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
859
891
|
return this._provider;
|
|
860
892
|
}
|
|
861
893
|
|
|
862
|
-
private async getAddress(): Promise<Address | null> {
|
|
894
|
+
private async getAddress(provider?: EIP1193Provider): Promise<Address | null> {
|
|
863
895
|
if (this.currentAddress) return this.currentAddress;
|
|
864
|
-
|
|
896
|
+
const p = provider || this.provider;
|
|
897
|
+
if (!p) {
|
|
865
898
|
logger.info("The provider is not set");
|
|
866
899
|
return null;
|
|
867
900
|
}
|
|
868
901
|
|
|
869
902
|
try {
|
|
870
|
-
const accounts = await this.getAccounts();
|
|
903
|
+
const accounts = await this.getAccounts(p);
|
|
871
904
|
if (accounts && accounts.length > 0) {
|
|
872
905
|
if (isAddress(accounts[0])) {
|
|
873
906
|
return accounts[0];
|
package/src/lib/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '1.16.
|
|
2
|
+
export const version = '1.16.9';
|