Skip to content

Commit 74fbc7d

Browse files
Merge pull request #885 from Iterable/feature/SDK-133-check-for-circular-dependencies
[SDK-133] Add circular dependency checks in CI and pre-commit
2 parents 016561d + 16ecb65 commit 74fbc7d

4 files changed

Lines changed: 182 additions & 5 deletions

File tree

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ jobs:
2626
- name: Typecheck files
2727
run: yarn typecheck
2828

29+
- name: Check circular dependencies
30+
run: yarn check:circular
31+
2932
test:
3033
runs-on: ubuntu-latest
3134
steps:

lefthook.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ pre-commit:
77
types:
88
glob: "*.{js,ts,jsx,tsx}"
99
run: npx tsc
10+
circular:
11+
glob: "src/**/*.{ts,tsx}"
12+
run: yarn check:circular
1013
# version-check:
1114
# glob: "package.json"
1215
# run: node scripts/checkVersionAndUpdateBuildInfo.js

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"test:coverage": "jest --coverage",
4242
"typecheck": "tsc",
4343
"lint": "eslint \"**/*.{js,ts,tsx}\"",
44+
"check:circular": "dpdm --no-warning --no-tree -T --circular --exit-code circular:1 src/index.tsx",
4445
"docs": "typedoc",
4546
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
4647
"prebuild": "yarn add_build_info",
@@ -87,6 +88,7 @@
8788
"baseline-browser-mapping": "^2.10.29",
8889
"commitlint": "^19.6.1",
8990
"del-cli": "^5.1.0",
91+
"dpdm": "^4.2.0",
9092
"eslint": "^8.51.0",
9193
"eslint-config-prettier": "^10.1.8",
9294
"eslint-plugin-jest": "^28.9.0",

yarn.lock

Lines changed: 174 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2169,6 +2169,7 @@ __metadata:
21692169
baseline-browser-mapping: ^2.10.29
21702170
commitlint: ^19.6.1
21712171
del-cli: ^5.1.0
2172+
dpdm: ^4.2.0
21722173
eslint: ^8.51.0
21732174
eslint-config-prettier: ^10.1.8
21742175
eslint-plugin-jest: ^28.9.0
@@ -4202,7 +4203,7 @@ __metadata:
42024203
languageName: node
42034204
linkType: hard
42044205

4205-
"ansi-regex@npm:^6.0.1":
4206+
"ansi-regex@npm:^6.0.1, ansi-regex@npm:^6.2.2":
42064207
version: 6.2.2
42074208
resolution: "ansi-regex@npm:6.2.2"
42084209
checksum: 9b17ce2c6daecc75bcd5966b9ad672c23b184dc3ed9bf3c98a0702f0d2f736c15c10d461913568f2cf527a5e64291c7473358885dd493305c84a1cfed66ba94f
@@ -4980,7 +4981,7 @@ __metadata:
49804981
languageName: node
49814982
linkType: hard
49824983

4983-
"chalk@npm:^5.3.0":
4984+
"chalk@npm:^5.3.0, chalk@npm:^5.6.2":
49844985
version: 5.6.2
49854986
resolution: "chalk@npm:5.6.2"
49864987
checksum: 4ee2d47a626d79ca27cb5299ecdcce840ef5755e287412536522344db0fc51ca0f6d6433202332c29e2288c6a90a2b31f3bd626bc8c14743b6b6ee28abd3b796
@@ -5111,6 +5112,13 @@ __metadata:
51115112
languageName: node
51125113
linkType: hard
51135114

5115+
"cli-spinners@npm:^3.2.0":
5116+
version: 3.4.0
5117+
resolution: "cli-spinners@npm:3.4.0"
5118+
checksum: 94de52a1c647fbf75a374c2c89eb2ca6a26bb950bd571734850dc26d2c13eea9f81dddb3acd423a329c24849f090f9032cf5a3cf20a84b7992d39544a72c715e
5119+
languageName: node
5120+
linkType: hard
5121+
51145122
"cli-width@npm:^4.1.0":
51155123
version: 4.1.0
51165124
resolution: "cli-width@npm:4.1.0"
@@ -5140,6 +5148,17 @@ __metadata:
51405148
languageName: node
51415149
linkType: hard
51425150

5151+
"cliui@npm:^9.0.1":
5152+
version: 9.0.1
5153+
resolution: "cliui@npm:9.0.1"
5154+
dependencies:
5155+
string-width: ^7.2.0
5156+
strip-ansi: ^7.1.0
5157+
wrap-ansi: ^9.0.0
5158+
checksum: 143879ae462bf76822f341bf40979f0225fdba8dde6dfe429018b13396fd0532752cc2a809ac48cecc0ea189406184ad7568c0af44eea73d2ac3b432c4c6431f
5159+
languageName: node
5160+
linkType: hard
5161+
51435162
"clone@npm:^1.0.2":
51445163
version: 1.0.4
51455164
resolution: "clone@npm:1.0.4"
@@ -6011,6 +6030,23 @@ __metadata:
60116030
languageName: node
60126031
linkType: hard
60136032

6033+
"dpdm@npm:^4.2.0":
6034+
version: 4.2.0
6035+
resolution: "dpdm@npm:4.2.0"
6036+
dependencies:
6037+
chalk: ^5.6.2
6038+
fs-extra: ^11.3.3
6039+
glob: ^13.0.0
6040+
ora: ^9.1.0
6041+
tslib: ^2.8.1
6042+
typescript: ^5.9.3
6043+
yargs: ^18.0.0
6044+
bin:
6045+
dpdm: lib/bin/dpdm.js
6046+
checksum: 67fd5107fddfd0aae25d2339086d1c41097e4d26793833ab921823cfe58ab48b1ba37d59e1e2d3aa7f6f7d1b3b059161487fd30a49dadf5a5aacd667b38ef3c6
6047+
languageName: node
6048+
linkType: hard
6049+
60146050
"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1":
60156051
version: 1.0.1
60166052
resolution: "dunder-proto@npm:1.0.1"
@@ -7061,6 +7097,17 @@ __metadata:
70617097
languageName: node
70627098
linkType: hard
70637099

7100+
"fs-extra@npm:^11.3.3":
7101+
version: 11.3.6
7102+
resolution: "fs-extra@npm:11.3.6"
7103+
dependencies:
7104+
graceful-fs: ^4.2.0
7105+
jsonfile: ^6.0.1
7106+
universalify: ^2.0.0
7107+
checksum: 232512d655150c44c7c9a5708cd68dde38e9c782aecaf66a975da36784c12ca18df8834ac04368abf4d055956b78ab81a3f02531e200d8baa121922d76a58fc2
7108+
languageName: node
7109+
linkType: hard
7110+
70647111
"fs-extra@npm:^8.1.0":
70657112
version: 8.1.0
70667113
resolution: "fs-extra@npm:8.1.0"
@@ -7163,6 +7210,13 @@ __metadata:
71637210
languageName: node
71647211
linkType: hard
71657212

7213+
"get-east-asian-width@npm:^1.5.0":
7214+
version: 1.6.0
7215+
resolution: "get-east-asian-width@npm:1.6.0"
7216+
checksum: 88faf98aaade2b24ad260be369b026d979ff4d0e6201bfd991654da17f2aa720bbddb812ce5612110eef6b469d8370c863f69a2f9818d61733f1eb2a83d779b8
7217+
languageName: node
7218+
linkType: hard
7219+
71667220
"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0":
71677221
version: 1.3.1
71687222
resolution: "get-intrinsic@npm:1.3.1"
@@ -7336,6 +7390,17 @@ __metadata:
73367390
languageName: node
73377391
linkType: hard
73387392

7393+
"glob@npm:^13.0.0":
7394+
version: 13.0.6
7395+
resolution: "glob@npm:13.0.6"
7396+
dependencies:
7397+
minimatch: ^10.2.2
7398+
minipass: ^7.1.3
7399+
path-scurry: ^2.0.2
7400+
checksum: 1eb421c696c66af3c26e4845dbdd222d3b982ede17448456b49272722d872e9a91741b50e4e827370c57d17a39a69790061f45033523f085c076d8fcc0f69d2b
7401+
languageName: node
7402+
linkType: hard
7403+
73397404
"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4":
73407405
version: 7.2.3
73417406
resolution: "glob@npm:7.2.3"
@@ -8408,7 +8473,7 @@ __metadata:
84088473
languageName: node
84098474
linkType: hard
84108475

8411-
"is-unicode-supported@npm:^2.0.0":
8476+
"is-unicode-supported@npm:^2.0.0, is-unicode-supported@npm:^2.1.0":
84128477
version: 2.1.0
84138478
resolution: "is-unicode-supported@npm:2.1.0"
84148479
checksum: f254e3da6b0ab1a57a94f7273a7798dd35d1d45b227759f600d0fa9d5649f9c07fa8d3c8a6360b0e376adf916d151ec24fc9a50c5295c58bae7ca54a76a063f9
@@ -9507,6 +9572,16 @@ __metadata:
95079572
languageName: node
95089573
linkType: hard
95099574

9575+
"log-symbols@npm:^7.0.1":
9576+
version: 7.0.1
9577+
resolution: "log-symbols@npm:7.0.1"
9578+
dependencies:
9579+
is-unicode-supported: ^2.0.0
9580+
yoctocolors: ^2.1.1
9581+
checksum: 0862313d84826b551582e39659b8586c56b65130c5f4f976420e2c23985228334f2a26fc4251ac22bf0a5b415d9430e86bf332557d934c10b036f9a549d63a09
9582+
languageName: node
9583+
linkType: hard
9584+
95109585
"logkitty@npm:^0.7.1":
95119586
version: 0.7.1
95129587
resolution: "logkitty@npm:0.7.1"
@@ -9555,6 +9630,13 @@ __metadata:
95559630
languageName: node
95569631
linkType: hard
95579632

9633+
"lru-cache@npm:^11.0.0":
9634+
version: 11.5.2
9635+
resolution: "lru-cache@npm:11.5.2"
9636+
checksum: ea040bdd8255384d1965c09983e1357ef6eca044747917c2f9db610f3fc773a518ea86bbcffb3b376f793ed61729f240c69cc5593ec89062d64e31c50973f3c0
9637+
languageName: node
9638+
linkType: hard
9639+
95589640
"lru-cache@npm:^5.1.1":
95599641
version: 5.1.1
95609642
resolution: "lru-cache@npm:5.1.1"
@@ -10434,6 +10516,13 @@ __metadata:
1043410516
languageName: node
1043510517
linkType: hard
1043610518

10519+
"minipass@npm:^7.1.3":
10520+
version: 7.1.3
10521+
resolution: "minipass@npm:7.1.3"
10522+
checksum: 2ede17c0bf8fec499be3360fd07f0ec7666189e3907320a9b653f1530cf84af98928c5b12d80bfb75f321833bf2e97785b940540213ebdafe97a5f10327e664d
10523+
languageName: node
10524+
linkType: hard
10525+
1043710526
"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0":
1043810527
version: 3.1.0
1043910528
resolution: "minizlib@npm:3.1.0"
@@ -10883,6 +10972,22 @@ __metadata:
1088310972
languageName: node
1088410973
linkType: hard
1088510974

10975+
"ora@npm:^9.1.0":
10976+
version: 9.4.1
10977+
resolution: "ora@npm:9.4.1"
10978+
dependencies:
10979+
chalk: ^5.6.2
10980+
cli-cursor: ^5.0.0
10981+
cli-spinners: ^3.2.0
10982+
is-interactive: ^2.0.0
10983+
is-unicode-supported: ^2.1.0
10984+
log-symbols: ^7.0.1
10985+
stdin-discarder: ^0.3.2
10986+
string-width: ^8.1.0
10987+
checksum: cf94f36f1d424259864f4c85a7a9e633c3cb7583c6fd7c2e9fec7b78e7211869d764c29942b6656d359c9901dc4bf601942e28b75bb988802e8f0bef0da23101
10988+
languageName: node
10989+
linkType: hard
10990+
1088610991
"os-name@npm:5.1.0":
1088710992
version: 5.1.0
1088810993
resolution: "os-name@npm:5.1.0"
@@ -11177,6 +11282,16 @@ __metadata:
1117711282
languageName: node
1117811283
linkType: hard
1117911284

11285+
"path-scurry@npm:^2.0.2":
11286+
version: 2.0.2
11287+
resolution: "path-scurry@npm:2.0.2"
11288+
dependencies:
11289+
lru-cache: ^11.0.0
11290+
minipass: ^7.1.2
11291+
checksum: a723afe86e342e19dd1b49ce4f5b64a9a84b1e2e07ffc62f051c11623ecd461b1bf1599eee1ecacfce03dda8b6bb866a5df80c0ded45375d258ff22f631920a7
11292+
languageName: node
11293+
linkType: hard
11294+
1118011295
"path-type@npm:^4.0.0":
1118111296
version: 4.0.0
1118211297
resolution: "path-type@npm:4.0.0"
@@ -12748,6 +12863,13 @@ __metadata:
1274812863
languageName: node
1274912864
linkType: hard
1275012865

12866+
"stdin-discarder@npm:^0.3.2":
12867+
version: 0.3.2
12868+
resolution: "stdin-discarder@npm:0.3.2"
12869+
checksum: 07b3edbe4fb26f6d744e730069f6a5f26b0b2d1638bfc495529025077e867982a28f3f6862f0ecd10c9fe70a2dc19ca60d39b89f5cf53c28d5791a379f348481
12870+
languageName: node
12871+
linkType: hard
12872+
1275112873
"stop-iteration-iterator@npm:^1.1.0":
1275212874
version: 1.1.0
1275312875
resolution: "stop-iteration-iterator@npm:1.1.0"
@@ -12815,6 +12937,16 @@ __metadata:
1281512937
languageName: node
1281612938
linkType: hard
1281712939

12940+
"string-width@npm:^8.1.0":
12941+
version: 8.2.2
12942+
resolution: "string-width@npm:8.2.2"
12943+
dependencies:
12944+
get-east-asian-width: ^1.5.0
12945+
strip-ansi: ^7.1.2
12946+
checksum: 37fc1e2bdb488404118b1a07747cf9bb1f5fddfe6f850ba4b1451d118d09fb03ca5948cc69740fec5c54bce384232bcc74e181e8bedf39b5d385e9565df1270e
12947+
languageName: node
12948+
linkType: hard
12949+
1281812950
"string.prototype.matchall@npm:^4.0.12":
1281912951
version: 4.0.12
1282012952
resolution: "string.prototype.matchall@npm:4.0.12"
@@ -12938,6 +13070,15 @@ __metadata:
1293813070
languageName: node
1293913071
linkType: hard
1294013072

13073+
"strip-ansi@npm:^7.1.2":
13074+
version: 7.2.0
13075+
resolution: "strip-ansi@npm:7.2.0"
13076+
dependencies:
13077+
ansi-regex: ^6.2.2
13078+
checksum: 96da3bc6d73cfba1218625a3d66cf7d37a69bf0920d8735b28f9eeaafcdb6c1fe8440e1ae9eb1ba0ca355dbe8702da872e105e2e939fa93e7851b3cb5dd7d316
13079+
languageName: node
13080+
linkType: hard
13081+
1294113082
"strip-bom@npm:^4.0.0":
1294213083
version: 4.0.0
1294313084
resolution: "strip-bom@npm:4.0.0"
@@ -13456,7 +13597,7 @@ __metadata:
1345613597
languageName: node
1345713598
linkType: hard
1345813599

13459-
"typescript@npm:^5.8.3":
13600+
"typescript@npm:^5.8.3, typescript@npm:^5.9.3":
1346013601
version: 5.9.3
1346113602
resolution: "typescript@npm:5.9.3"
1346213603
bin:
@@ -13466,7 +13607,7 @@ __metadata:
1346613607
languageName: node
1346713608
linkType: hard
1346813609

13469-
"typescript@patch:typescript@^5.8.3#~builtin<compat/typescript>":
13610+
"typescript@patch:typescript@^5.8.3#~builtin<compat/typescript>, typescript@patch:typescript@^5.9.3#~builtin<compat/typescript>":
1347013611
version: 5.9.3
1347113612
resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin<compat/typescript>::version=5.9.3&hash=14eedb"
1347213613
bin:
@@ -14078,6 +14219,13 @@ __metadata:
1407814219
languageName: node
1407914220
linkType: hard
1408014221

14222+
"yargs-parser@npm:^22.0.0":
14223+
version: 22.0.0
14224+
resolution: "yargs-parser@npm:22.0.0"
14225+
checksum: 55df0d94f3f9f933f1349f244ddf72a6978a9d5a972b69332965cdfd5ec849ff26386965512f4179065b0573cc6e8df33ca44334958a892c47fedae08a967c99
14226+
languageName: node
14227+
linkType: hard
14228+
1408114229
"yargs@npm:^15.1.0":
1408214230
version: 15.4.1
1408314231
resolution: "yargs@npm:15.4.1"
@@ -14112,6 +14260,20 @@ __metadata:
1411214260
languageName: node
1411314261
linkType: hard
1411414262

14263+
"yargs@npm:^18.0.0":
14264+
version: 18.0.0
14265+
resolution: "yargs@npm:18.0.0"
14266+
dependencies:
14267+
cliui: ^9.0.1
14268+
escalade: ^3.1.1
14269+
get-caller-file: ^2.0.5
14270+
string-width: ^7.2.0
14271+
y18n: ^5.0.5
14272+
yargs-parser: ^22.0.0
14273+
checksum: a7cf1b97cb4e81c059f78fd32a4160505d421ecdce5409f5e3840fdcc4c982885fc645b44af961eab94d673cb46f81207d831aa87862246907ffacf45884976a
14274+
languageName: node
14275+
linkType: hard
14276+
1411514277
"yocto-queue@npm:^0.1.0":
1411614278
version: 0.1.0
1411714279
resolution: "yocto-queue@npm:0.1.0"
@@ -14133,6 +14295,13 @@ __metadata:
1413314295
languageName: node
1413414296
linkType: hard
1413514297

14298+
"yoctocolors@npm:^2.1.1":
14299+
version: 2.1.2
14300+
resolution: "yoctocolors@npm:2.1.2"
14301+
checksum: 6ee42d665a4cc161c7de3f015b2a65d6c65d2808bfe3b99e228bd2b1b784ef1e54d1907415c025fc12b400f26f372bfc1b71966c6c738d998325ca422eb39363
14302+
languageName: node
14303+
linkType: hard
14304+
1413614305
"zod-validation-error@npm:^3.5.0 || ^4.0.0":
1413714306
version: 4.0.2
1413814307
resolution: "zod-validation-error@npm:4.0.2"

0 commit comments

Comments
 (0)