@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.
Files changed (47) hide show
  1. package/dist/cjs/src/FormoAnalytics.d.ts +4 -1
  2. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  3. package/dist/cjs/src/FormoAnalytics.js +90 -37
  4. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  5. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
  6. package/dist/cjs/src/constants/config.d.ts.map +1 -1
  7. package/dist/cjs/src/lib/event/utils.d.ts.map +1 -1
  8. package/dist/cjs/src/lib/ramda/internal/_curry1.d.ts.map +1 -1
  9. package/dist/cjs/src/lib/ramda/internal/_curry2.d.ts.map +1 -1
  10. package/dist/cjs/src/lib/ramda/internal/_curry3.d.ts.map +1 -1
  11. package/dist/cjs/src/lib/version.d.ts +1 -1
  12. package/dist/cjs/src/lib/version.js +1 -1
  13. package/dist/cjs/src/utils/address.d.ts.map +1 -1
  14. package/dist/cjs/src/utils/base.d.ts.map +1 -1
  15. package/dist/cjs/src/utils/converter.d.ts.map +1 -1
  16. package/dist/cjs/src/utils/timestamp.d.ts.map +1 -1
  17. package/dist/cjs/src/validators/address.d.ts.map +1 -1
  18. package/dist/cjs/src/validators/checks.d.ts.map +1 -1
  19. package/dist/cjs/src/validators/object.d.ts.map +1 -1
  20. package/dist/cjs/src/validators/string.d.ts.map +1 -1
  21. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  22. package/dist/esm/src/FormoAnalytics.d.ts +4 -1
  23. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  24. package/dist/esm/src/FormoAnalytics.js +90 -37
  25. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  26. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
  27. package/dist/esm/src/constants/config.d.ts.map +1 -1
  28. package/dist/esm/src/lib/event/utils.d.ts.map +1 -1
  29. package/dist/esm/src/lib/ramda/internal/_curry1.d.ts.map +1 -1
  30. package/dist/esm/src/lib/ramda/internal/_curry2.d.ts.map +1 -1
  31. package/dist/esm/src/lib/ramda/internal/_curry3.d.ts.map +1 -1
  32. package/dist/esm/src/lib/version.d.ts +1 -1
  33. package/dist/esm/src/lib/version.js +1 -1
  34. package/dist/esm/src/utils/address.d.ts.map +1 -1
  35. package/dist/esm/src/utils/base.d.ts.map +1 -1
  36. package/dist/esm/src/utils/converter.d.ts.map +1 -1
  37. package/dist/esm/src/utils/timestamp.d.ts.map +1 -1
  38. package/dist/esm/src/validators/address.d.ts.map +1 -1
  39. package/dist/esm/src/validators/checks.d.ts.map +1 -1
  40. package/dist/esm/src/validators/object.d.ts.map +1 -1
  41. package/dist/esm/src/validators/string.d.ts.map +1 -1
  42. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  43. package/dist/index.umd.min.js +1 -1
  44. package/dist/index.umd.min.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/FormoAnalytics.ts +43 -10
  47. 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.8",
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": "25 KB"
90
+ "limit": "26 KB"
91
91
  }
92
92
  ],
93
93
  "peerDependencies": {
@@ -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
- const providers = await analytics.getProviders();
111
- await analytics.detectWallets(providers);
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
- console.log("eeeee", e);
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
- // TODO: consider using store.subscribe to detect changes to providers list
834
- store.subscribe((providerDetails) => (providers = providerDetails));
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
- return window?.ethereum ? [window.ethereum] : [];
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
- if (!this?.provider) {
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];
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '1.16.8';
2
+ export const version = '1.16.9';