@formo/analytics 1.19.10 → 1.21.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 (55) hide show
  1. package/README.md +3 -1
  2. package/dist/cjs/src/FormoAnalytics.d.ts +17 -1
  3. package/dist/cjs/src/FormoAnalytics.js +150 -82
  4. package/dist/cjs/src/FormoAnalyticsProvider.js +5 -1
  5. package/dist/cjs/src/constants/base.d.ts +4 -0
  6. package/dist/cjs/src/constants/base.js +8 -1
  7. package/dist/cjs/src/lib/browser/browsers.d.ts +3 -0
  8. package/dist/cjs/src/lib/browser/browsers.js +132 -0
  9. package/dist/cjs/src/lib/consent.d.ts +35 -0
  10. package/dist/cjs/src/lib/consent.js +102 -0
  11. package/dist/cjs/src/lib/event/EventFactory.d.ts +10 -10
  12. package/dist/cjs/src/lib/event/EventFactory.js +272 -140
  13. package/dist/cjs/src/lib/event/EventManager.d.ts +1 -1
  14. package/dist/cjs/src/lib/event/EventManager.js +62 -9
  15. package/dist/cjs/src/lib/event/type.d.ts +2 -2
  16. package/dist/cjs/src/lib/index.d.ts +1 -0
  17. package/dist/cjs/src/lib/index.js +1 -0
  18. package/dist/cjs/src/lib/storage/built-in/blueprint.js +2 -1
  19. package/dist/cjs/src/lib/version.d.ts +1 -1
  20. package/dist/cjs/src/lib/version.js +1 -1
  21. package/dist/cjs/src/types/base.d.ts +3 -0
  22. package/dist/cjs/src/utils/address.d.ts +7 -0
  23. package/dist/cjs/src/utils/address.js +21 -1
  24. package/dist/cjs/src/utils/hash.d.ts +10 -0
  25. package/dist/cjs/src/utils/hash.js +21 -0
  26. package/dist/cjs/src/utils/index.d.ts +1 -0
  27. package/dist/cjs/src/utils/index.js +1 -0
  28. package/dist/esm/src/FormoAnalytics.d.ts +17 -1
  29. package/dist/esm/src/FormoAnalytics.js +152 -84
  30. package/dist/esm/src/FormoAnalyticsProvider.js +5 -1
  31. package/dist/esm/src/constants/base.d.ts +4 -0
  32. package/dist/esm/src/constants/base.js +7 -0
  33. package/dist/esm/src/lib/browser/browsers.d.ts +3 -0
  34. package/dist/esm/src/lib/browser/browsers.js +129 -0
  35. package/dist/esm/src/lib/consent.d.ts +35 -0
  36. package/dist/esm/src/lib/consent.js +97 -0
  37. package/dist/esm/src/lib/event/EventFactory.d.ts +10 -10
  38. package/dist/esm/src/lib/event/EventFactory.js +272 -140
  39. package/dist/esm/src/lib/event/EventManager.d.ts +1 -1
  40. package/dist/esm/src/lib/event/EventManager.js +62 -9
  41. package/dist/esm/src/lib/event/type.d.ts +2 -2
  42. package/dist/esm/src/lib/index.d.ts +1 -0
  43. package/dist/esm/src/lib/index.js +1 -0
  44. package/dist/esm/src/lib/storage/built-in/blueprint.js +2 -1
  45. package/dist/esm/src/lib/version.d.ts +1 -1
  46. package/dist/esm/src/lib/version.js +1 -1
  47. package/dist/esm/src/types/base.d.ts +3 -0
  48. package/dist/esm/src/utils/address.d.ts +7 -0
  49. package/dist/esm/src/utils/address.js +19 -0
  50. package/dist/esm/src/utils/hash.d.ts +10 -0
  51. package/dist/esm/src/utils/hash.js +18 -0
  52. package/dist/esm/src/utils/index.d.ts +1 -0
  53. package/dist/esm/src/utils/index.js +1 -0
  54. package/dist/index.umd.min.js +1 -1
  55. package/package.json +2 -2
@@ -18,5 +18,12 @@ export declare const isValidAddress: (address: Address | null | undefined) => ad
18
18
  * This function is the preferred way to get a validated, trimmed address for use in your application.
19
19
  */
20
20
  export declare const getValidAddress: (address: Address | null | undefined) => string | null;
21
+ /**
22
+ * Checks if an address is in the blocked list and should not emit events.
23
+ * Blocked addresses include the zero address and dead address which are not normal user addresses.
24
+ * @param address The address to check
25
+ * @returns true if the address is blocked, false otherwise
26
+ */
27
+ export declare const isBlockedAddress: (address: Address | null | undefined) => boolean;
21
28
  export declare const toChecksumAddress: (address: Address) => string;
22
29
  //# sourceMappingURL=address.d.ts.map
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toChecksumAddress = exports.getValidAddress = exports.isValidAddress = void 0;
3
+ exports.toChecksumAddress = exports.isBlockedAddress = exports.getValidAddress = exports.isValidAddress = void 0;
4
4
  var keccak_js_1 = require("ethereum-cryptography/keccak.js");
5
5
  var utils_js_1 = require("ethereum-cryptography/utils.js");
6
6
  var validators_1 = require("../validators");
7
7
  var object_1 = require("../validators/object");
8
+ var constants_1 = require("../constants");
8
9
  /**
9
10
  * Private helper function to validate and trim an address
10
11
  * @param address The address to validate and trim
@@ -41,6 +42,25 @@ var getValidAddress = function (address) {
41
42
  return _validateAndTrimAddress(address);
42
43
  };
43
44
  exports.getValidAddress = getValidAddress;
45
+ /**
46
+ * Checks if an address is in the blocked list and should not emit events.
47
+ * Blocked addresses include the zero address and dead address which are not normal user addresses.
48
+ * @param address The address to check
49
+ * @returns true if the address is blocked, false otherwise
50
+ */
51
+ var isBlockedAddress = function (address) {
52
+ if (!address)
53
+ return false;
54
+ var validAddress = (0, exports.getValidAddress)(address);
55
+ if (!validAddress)
56
+ return false;
57
+ // Normalize to checksum format for comparison
58
+ var checksumAddress = (0, exports.toChecksumAddress)(validAddress);
59
+ return constants_1.BLOCKED_ADDRESSES.some(function (blockedAddr) {
60
+ return (0, exports.toChecksumAddress)(blockedAddr) === checksumAddress;
61
+ });
62
+ };
63
+ exports.isBlockedAddress = isBlockedAddress;
44
64
  var toChecksumAddress = function (address) {
45
65
  if (!(0, validators_1.isAddress)(address, false)) {
46
66
  throw new Error("Invalid address " + address);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hash utilities using ethereum-cryptography for secure, deterministic hashing
3
+ */
4
+ /**
5
+ * Generate a secure hash of a string using SHA-256 for creating short, consistent identifiers
6
+ * @param str - The string to hash
7
+ * @returns Short hash string (first 8 characters of SHA-256 hex)
8
+ */
9
+ export declare function secureHash(str: string): string;
10
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Hash utilities using ethereum-cryptography for secure, deterministic hashing
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.secureHash = secureHash;
7
+ var sha256_1 = require("ethereum-cryptography/sha256");
8
+ var utils_1 = require("ethereum-cryptography/utils");
9
+ /**
10
+ * Generate a secure hash of a string using SHA-256 for creating short, consistent identifiers
11
+ * @param str - The string to hash
12
+ * @returns Short hash string (first 8 characters of SHA-256 hex)
13
+ */
14
+ function secureHash(str) {
15
+ var bytes = (0, utils_1.utf8ToBytes)(str);
16
+ var hashBytes = (0, sha256_1.sha256)(bytes);
17
+ var hashHex = (0, utils_1.bytesToHex)(hashBytes);
18
+ // Return first 8 characters for reasonable cookie name length
19
+ return hashHex.slice(0, 8);
20
+ }
21
+ //# sourceMappingURL=hash.js.map
@@ -2,4 +2,5 @@ export * from "./address";
2
2
  export * from "./base";
3
3
  export * from "./converter";
4
4
  export * from "./generate";
5
+ export * from "./hash";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -18,4 +18,5 @@ __exportStar(require("./address"), exports);
18
18
  __exportStar(require("./base"), exports);
19
19
  __exportStar(require("./converter"), exports);
20
20
  __exportStar(require("./generate"), exports);
21
+ __exportStar(require("./hash"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -177,6 +177,22 @@ export declare class FormoAnalytics implements IFormoAnalytics {
177
177
  * @returns {Promise<void>}
178
178
  */
179
179
  track(event: string, properties?: IFormoEventProperties, context?: IFormoEventContext, callback?: (...args: unknown[]) => void): Promise<void>;
180
+ /**
181
+ * Opt out of tracking.
182
+ * @returns {void}
183
+ */
184
+ optOutTracking(): void;
185
+ /**
186
+ * Opt back into tracking after previously opting out. This will re-enable analytics tracking
187
+ * and switch back to persistent storage.
188
+ * @returns {void}
189
+ */
190
+ optInTracking(): void;
191
+ /**
192
+ * Check if the user has opted out of tracking.
193
+ * @returns {boolean} True if the user has opted out
194
+ */
195
+ hasOptedOutTracking(): boolean;
180
196
  private trackProvider;
181
197
  private trackProviders;
182
198
  private addProviderListener;
@@ -204,7 +220,7 @@ export declare class FormoAnalytics implements IFormoAnalytics {
204
220
  private trackPageHit;
205
221
  private trackEvent;
206
222
  /**
207
- * Determines if tracking should be enabled based on configuration
223
+ * Determines if tracking should be enabled based on configuration and consent
208
224
  * @returns {boolean} True if tracking should be enabled
209
225
  */
210
226
  private shouldTrack;