@exodus/analytics-validation 3.1.0 → 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,12 @@
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
+
6
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)
7
13
 
8
14
  ### Features
package/lib/events.d.ts CHANGED
@@ -1333,18 +1333,68 @@ export interface AnalyticsEventMap {
1333
1333
  "StocksBuy": {
1334
1334
  asset?: string
1335
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
1336
1351
  }
1337
1352
  "StocksBuyAmountView": {
1338
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
1339
1377
  }
1340
1378
  "StocksBuyConfirmView": {
1341
1379
  asset?: string
1380
+ amountUsd?: number
1381
+ timeToBuyS?: number
1382
+ }
1383
+ "StocksBuyDepositTap": {
1384
+ asset?: string
1385
+ amountUsd?: number
1386
+ balanceUsd?: number
1342
1387
  }
1343
1388
  "StocksBuyError": {
1344
1389
  asset?: string
1345
1390
  errorType?: string
1346
1391
  failureReason?: string
1347
1392
  }
1393
+ "StocksBuySuccess": {
1394
+ asset?: string
1395
+ amountUsd?: number
1396
+ exchangeS?: number
1397
+ }
1348
1398
  "StocksBuyView": {
1349
1399
  asset?: string
1350
1400
  }
@@ -1359,6 +1409,24 @@ export interface AnalyticsEventMap {
1359
1409
  "StocksSell": {
1360
1410
  asset?: string
1361
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
1362
1430
  }
1363
1431
  "StocksSellConfirmView": {
1364
1432
  asset?: string
@@ -1368,6 +1436,11 @@ export interface AnalyticsEventMap {
1368
1436
  errorType?: string
1369
1437
  failureReason?: string
1370
1438
  }
1439
+ "StocksSellSuccess": {
1440
+ asset?: string
1441
+ amountUsd?: number
1442
+ exchangeS?: number
1443
+ }
1371
1444
  "StocksSellView": {
1372
1445
  asset?: string
1373
1446
  }
@@ -1049,15 +1049,39 @@
1049
1049
  {
1050
1050
  "$ref": "stocks-asset-detail-view#"
1051
1051
  },
1052
+ {
1053
+ "$ref": "stocks-buy-amount-dismissed#"
1054
+ },
1055
+ {
1056
+ "$ref": "stocks-buy-amount-ready#"
1057
+ },
1052
1058
  {
1053
1059
  "$ref": "stocks-buy-amount-view#"
1054
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
+ },
1055
1073
  {
1056
1074
  "$ref": "stocks-buy-confirm-view#"
1057
1075
  },
1076
+ {
1077
+ "$ref": "stocks-buy-deposit-tap#"
1078
+ },
1058
1079
  {
1059
1080
  "$ref": "stocks-buy-error#"
1060
1081
  },
1082
+ {
1083
+ "$ref": "stocks-buy-success#"
1084
+ },
1061
1085
  {
1062
1086
  "$ref": "stocks-buy-view#"
1063
1087
  },
@@ -1082,12 +1106,24 @@
1082
1106
  {
1083
1107
  "$ref": "stocks-portfolio-view#"
1084
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
+ },
1085
1118
  {
1086
1119
  "$ref": "stocks-sell-confirm-view#"
1087
1120
  },
1088
1121
  {
1089
1122
  "$ref": "stocks-sell-error#"
1090
1123
  },
1124
+ {
1125
+ "$ref": "stocks-sell-success#"
1126
+ },
1091
1127
  {
1092
1128
  "$ref": "stocks-sell-view#"
1093
1129
  },
@@ -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.1.0",
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": "dbc63bae98d64eefc45cbe78bb83f0ca673ec6bc"
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