@exodus/analytics-validation 3.0.1 → 3.2.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.2.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/analytics-validation@3.1.0...@exodus/analytics-validation@3.2.0) (2026-07-02)
7
+
8
+ ### Features
9
+
10
+ - **analytics-validation:** add stocks buy funnel telemetry schemas ([#17453](https://github.com/ExodusMovement/exodus-hydra/issues/17453)) ([a9f9a70](https://github.com/ExodusMovement/exodus-hydra/commit/a9f9a7024836bb902ddde52b17f385eafe581495))
11
+
12
+ ## [3.1.0](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/analytics-validation@3.0.1...@exodus/analytics-validation@3.1.0) (2026-06-19)
13
+
14
+ ### Features
15
+
16
+ - **analytics-validation:** add PayDepositBlocked event schema ([#17248](https://github.com/ExodusMovement/exodus-hydra/issues/17248)) ([49e3f14](https://github.com/ExodusMovement/exodus-hydra/commit/49e3f14b9e1c3990840dd13e93ce5455c329d064)), closes [ExodusMovement/exodus-mobile#40803](https://github.com/ExodusMovement/exodus-mobile/issues/40803)
17
+
6
18
  ## [3.0.1](https://github.com/ExodusMovement/exodus-hydra/compare/@exodus/analytics-validation@3.0.0...@exodus/analytics-validation@3.0.1) (2026-06-19)
7
19
 
8
20
  **Note:** Version bump only for package @exodus/analytics-validation
package/lib/events.d.ts CHANGED
@@ -789,6 +789,10 @@ export interface AnalyticsEventMap {
789
789
  amount?: number
790
790
  amountUsd?: number
791
791
  }
792
+ "PayDepositBlocked": {
793
+ depositType?: string
794
+ reason?: string
795
+ }
792
796
  "PayDepositMethodAdd": {
793
797
  depositType?: string
794
798
  }
@@ -1329,18 +1333,68 @@ export interface AnalyticsEventMap {
1329
1333
  "StocksBuy": {
1330
1334
  asset?: string
1331
1335
  amountUsd?: number
1336
+ confirmReadyS?: number
1337
+ timeToConfirmS?: number
1338
+ }
1339
+ "StocksBuyAmountDismissed": {
1340
+ asset?: string
1341
+ amountUsd?: number
1342
+ buttonReady?: boolean
1343
+ errorType?: string
1344
+ balanceUsd?: number
1345
+ durationS?: number
1346
+ }
1347
+ "StocksBuyAmountReady": {
1348
+ asset?: string
1349
+ amountUsd?: number
1350
+ timeToReadyS?: number
1332
1351
  }
1333
1352
  "StocksBuyAmountView": {
1334
1353
  asset?: string
1354
+ balanceUsd?: number
1355
+ }
1356
+ "StocksBuyBlocked": {
1357
+ asset?: string
1358
+ amountUsd?: number
1359
+ errorType?: string
1360
+ balanceUsd?: number
1361
+ }
1362
+ "StocksBuyConfirmBlocked": {
1363
+ asset?: string
1364
+ amountUsd?: number
1365
+ errorType?: string
1366
+ }
1367
+ "StocksBuyConfirmDismissed": {
1368
+ asset?: string
1369
+ amountUsd?: number
1370
+ confirmReady?: boolean
1371
+ durationS?: number
1372
+ }
1373
+ "StocksBuyConfirmReady": {
1374
+ asset?: string
1375
+ amountUsd?: number
1376
+ timeToReadyS?: number
1335
1377
  }
1336
1378
  "StocksBuyConfirmView": {
1337
1379
  asset?: string
1380
+ amountUsd?: number
1381
+ timeToBuyS?: number
1382
+ }
1383
+ "StocksBuyDepositTap": {
1384
+ asset?: string
1385
+ amountUsd?: number
1386
+ balanceUsd?: number
1338
1387
  }
1339
1388
  "StocksBuyError": {
1340
1389
  asset?: string
1341
1390
  errorType?: string
1342
1391
  failureReason?: string
1343
1392
  }
1393
+ "StocksBuySuccess": {
1394
+ asset?: string
1395
+ amountUsd?: number
1396
+ exchangeS?: number
1397
+ }
1344
1398
  "StocksBuyView": {
1345
1399
  asset?: string
1346
1400
  }
@@ -1355,6 +1409,24 @@ export interface AnalyticsEventMap {
1355
1409
  "StocksSell": {
1356
1410
  asset?: string
1357
1411
  amountUsd?: number
1412
+ confirmReadyS?: number
1413
+ timeToConfirmS?: number
1414
+ }
1415
+ "StocksSellConfirmBlocked": {
1416
+ asset?: string
1417
+ amountUsd?: number
1418
+ errorType?: string
1419
+ }
1420
+ "StocksSellConfirmDismissed": {
1421
+ asset?: string
1422
+ amountUsd?: number
1423
+ confirmReady?: boolean
1424
+ durationS?: number
1425
+ }
1426
+ "StocksSellConfirmReady": {
1427
+ asset?: string
1428
+ amountUsd?: number
1429
+ timeToReadyS?: number
1358
1430
  }
1359
1431
  "StocksSellConfirmView": {
1360
1432
  asset?: string
@@ -1364,6 +1436,11 @@ export interface AnalyticsEventMap {
1364
1436
  errorType?: string
1365
1437
  failureReason?: string
1366
1438
  }
1439
+ "StocksSellSuccess": {
1440
+ asset?: string
1441
+ amountUsd?: number
1442
+ exchangeS?: number
1443
+ }
1367
1444
  "StocksSellView": {
1368
1445
  asset?: string
1369
1446
  }
@@ -455,6 +455,9 @@
455
455
  {
456
456
  "$ref": "pay-contacts-sheet-view#"
457
457
  },
458
+ {
459
+ "$ref": "pay-deposit-blocked#"
460
+ },
458
461
  {
459
462
  "$ref": "pay-deposit-method-add#"
460
463
  },
@@ -1046,15 +1049,39 @@
1046
1049
  {
1047
1050
  "$ref": "stocks-asset-detail-view#"
1048
1051
  },
1052
+ {
1053
+ "$ref": "stocks-buy-amount-dismissed#"
1054
+ },
1055
+ {
1056
+ "$ref": "stocks-buy-amount-ready#"
1057
+ },
1049
1058
  {
1050
1059
  "$ref": "stocks-buy-amount-view#"
1051
1060
  },
1061
+ {
1062
+ "$ref": "stocks-buy-blocked#"
1063
+ },
1064
+ {
1065
+ "$ref": "stocks-buy-confirm-blocked#"
1066
+ },
1067
+ {
1068
+ "$ref": "stocks-buy-confirm-dismissed#"
1069
+ },
1070
+ {
1071
+ "$ref": "stocks-buy-confirm-ready#"
1072
+ },
1052
1073
  {
1053
1074
  "$ref": "stocks-buy-confirm-view#"
1054
1075
  },
1076
+ {
1077
+ "$ref": "stocks-buy-deposit-tap#"
1078
+ },
1055
1079
  {
1056
1080
  "$ref": "stocks-buy-error#"
1057
1081
  },
1082
+ {
1083
+ "$ref": "stocks-buy-success#"
1084
+ },
1058
1085
  {
1059
1086
  "$ref": "stocks-buy-view#"
1060
1087
  },
@@ -1079,12 +1106,24 @@
1079
1106
  {
1080
1107
  "$ref": "stocks-portfolio-view#"
1081
1108
  },
1109
+ {
1110
+ "$ref": "stocks-sell-confirm-blocked#"
1111
+ },
1112
+ {
1113
+ "$ref": "stocks-sell-confirm-dismissed#"
1114
+ },
1115
+ {
1116
+ "$ref": "stocks-sell-confirm-ready#"
1117
+ },
1082
1118
  {
1083
1119
  "$ref": "stocks-sell-confirm-view#"
1084
1120
  },
1085
1121
  {
1086
1122
  "$ref": "stocks-sell-error#"
1087
1123
  },
1124
+ {
1125
+ "$ref": "stocks-sell-success#"
1126
+ },
1088
1127
  {
1089
1128
  "$ref": "stocks-sell-view#"
1090
1129
  },
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "PayDepositBlocked"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "deposit_type": {
18
+ "type": "string"
19
+ },
20
+ "reason": {
21
+ "type": "string"
22
+ }
23
+ },
24
+ "unevaluatedProperties": false
25
+ }
26
+ },
27
+ "unevaluatedProperties": false,
28
+ "required": ["event", "properties"]
29
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyAmountDismissed"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "button_ready": {
25
+ "type": "boolean"
26
+ },
27
+ "error_type": {
28
+ "type": "string",
29
+ "format": "any-string"
30
+ },
31
+ "balance_usd": {
32
+ "type": "number"
33
+ },
34
+ "duration_s": {
35
+ "type": "number"
36
+ }
37
+ },
38
+ "unevaluatedProperties": false
39
+ }
40
+ },
41
+ "unevaluatedProperties": false,
42
+ "required": ["event", "properties"]
43
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyAmountReady"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "time_to_ready_s": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -17,6 +17,9 @@
17
17
  "asset": {
18
18
  "type": "string",
19
19
  "format": "any-string"
20
+ },
21
+ "balance_usd": {
22
+ "type": "number"
20
23
  }
21
24
  },
22
25
  "unevaluatedProperties": false
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyBlocked"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "error_type": {
25
+ "type": "string",
26
+ "format": "any-string"
27
+ },
28
+ "balance_usd": {
29
+ "type": "number"
30
+ }
31
+ },
32
+ "unevaluatedProperties": false
33
+ }
34
+ },
35
+ "unevaluatedProperties": false,
36
+ "required": ["event", "properties"]
37
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyConfirmBlocked"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "error_type": {
25
+ "type": "string",
26
+ "format": "any-string"
27
+ }
28
+ },
29
+ "unevaluatedProperties": false
30
+ }
31
+ },
32
+ "unevaluatedProperties": false,
33
+ "required": ["event", "properties"]
34
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyConfirmDismissed"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "confirm_ready": {
25
+ "type": "boolean"
26
+ },
27
+ "duration_s": {
28
+ "type": "number"
29
+ }
30
+ },
31
+ "unevaluatedProperties": false
32
+ }
33
+ },
34
+ "unevaluatedProperties": false,
35
+ "required": ["event", "properties"]
36
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyConfirmReady"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "time_to_ready_s": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -17,6 +17,12 @@
17
17
  "asset": {
18
18
  "type": "string",
19
19
  "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "time_to_buy_s": {
25
+ "type": "number"
20
26
  }
21
27
  },
22
28
  "unevaluatedProperties": false
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuyDepositTap"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "balance_usd": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksBuySuccess"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "exchange_s": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -20,6 +20,12 @@
20
20
  },
21
21
  "amount_usd": {
22
22
  "type": "number"
23
+ },
24
+ "confirm_ready_s": {
25
+ "type": "number"
26
+ },
27
+ "time_to_confirm_s": {
28
+ "type": "number"
23
29
  }
24
30
  },
25
31
  "unevaluatedProperties": false
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksSellConfirmBlocked"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "error_type": {
25
+ "type": "string",
26
+ "format": "any-string"
27
+ }
28
+ },
29
+ "unevaluatedProperties": false
30
+ }
31
+ },
32
+ "unevaluatedProperties": false,
33
+ "required": ["event", "properties"]
34
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksSellConfirmDismissed"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "confirm_ready": {
25
+ "type": "boolean"
26
+ },
27
+ "duration_s": {
28
+ "type": "number"
29
+ }
30
+ },
31
+ "unevaluatedProperties": false
32
+ }
33
+ },
34
+ "unevaluatedProperties": false,
35
+ "required": ["event", "properties"]
36
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksSellConfirmReady"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "time_to_ready_s": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "event": {
6
+ "const": "StocksSellSuccess"
7
+ },
8
+ "properties": {
9
+ "allOf": [
10
+ {
11
+ "$ref": "common-properties#"
12
+ }
13
+ ],
14
+ "type": "object",
15
+ "required": [],
16
+ "properties": {
17
+ "asset": {
18
+ "type": "string",
19
+ "format": "any-string"
20
+ },
21
+ "amount_usd": {
22
+ "type": "number"
23
+ },
24
+ "exchange_s": {
25
+ "type": "number"
26
+ }
27
+ },
28
+ "unevaluatedProperties": false
29
+ }
30
+ },
31
+ "unevaluatedProperties": false,
32
+ "required": ["event", "properties"]
33
+ }
@@ -20,6 +20,12 @@
20
20
  },
21
21
  "amount_usd": {
22
22
  "type": "number"
23
+ },
24
+ "confirm_ready_s": {
25
+ "type": "number"
26
+ },
27
+ "time_to_confirm_s": {
28
+ "type": "number"
23
29
  }
24
30
  },
25
31
  "unevaluatedProperties": false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exodus/analytics-validation",
3
- "version": "3.0.1",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "description": "JSON schemas for analytics events, to prevent sensitive data from being sent up to the infamous cloud",
6
6
  "author": "Exodus Movement, Inc.",
@@ -36,7 +36,7 @@
36
36
  "prepublishOnly": "pnpm -w run build --scope @exodus/analytics-validation",
37
37
  "test": "node scripts/build-schemasafe.mjs && pnpm exec exodus-test --jest --esbuild",
38
38
  "typecheck": "node scripts/build-schemasafe.mjs && pnpm exec tsc --noEmit",
39
- "lint": "pnpm run build:generated && pnpm exec tsc --noEmit && pnpm exec eslint .",
39
+ "lint": "pnpm run build:generated && pnpm exec eslint .",
40
40
  "lint:fix": "pnpm run lint --fix"
41
41
  },
42
42
  "devDependencies": {
@@ -56,5 +56,5 @@
56
56
  "access": "public",
57
57
  "provenance": false
58
58
  },
59
- "gitHead": "ee6464c5bf85444f08089966a7d032e33de4cfc4"
59
+ "gitHead": "c3843a17b8ca28e7b73bacdada4f78b3a7fd1fbe"
60
60
  }
@@ -32,7 +32,6 @@ getSchemas({ schemaDir, schemaNames })
32
32
 
33
33
  // Source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
34
34
  const semVerRegEx =
35
- // eslint-disable-next-line sonarjs/regex-complexity
36
35
  /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*))*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$/u
37
36
  const localeRegEx = /^[A-Za-z]{2,8}([_-][\dA-Za-z]{1,8}){0,2}$/u
38
37
  // NOTE: this is exported so consumers can use the same settings at runtime