Skip to content

Commit cf631ec

Browse files
authored
Avoid circular dependency on @metamask/utils (#170)
`@metamask/utils` has a development dependency on this package (since we need a way to validate its changelog). So, if this package depends on `@metamask/utils`, then that creates a circular dependency which could potentially cause issues. Since we only use one function from this package, we can just copy it.
1 parent 0116b48 commit cf631ec

File tree

3 files changed

+20
-172
lines changed

3 files changed

+20
-172
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
"changelog": "node dist/cli.js"
3232
},
3333
"dependencies": {
34-
"@metamask/utils": "^8.1.0",
3534
"diff": "^5.0.0",
3635
"execa": "^5.1.1",
3736
"prettier": "^2.8.8",

src/changelog.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { getKnownPropertyNames } from '@metamask/utils';
21
import semver from 'semver';
32

43
import {
@@ -9,6 +8,26 @@ import {
98
} from './constants';
109
import { PackageRename } from './shared-types';
1110

11+
/**
12+
* `Object.getOwnPropertyNames()` is intentionally generic: it returns the
13+
* immediate property names of an object, but it cannot make guarantees about
14+
* the contents of that object, so the type of the property names is merely
15+
* `string[]`. While this is technically accurate, it is also unnecessary if we
16+
* have an object with a type that we own (such as an enum).
17+
*
18+
* IMPORTANT: This is copied from `@metamask/utils` in order to avoid a circular
19+
* dependency between this package and `@metamask/utils`.
20+
*
21+
* @param object - The plain object.
22+
* @returns The own property names of the object which are assigned a type
23+
* derived from the object itself.
24+
*/
25+
export function getKnownPropertyNames<Key extends PropertyKey>(
26+
object: Partial<Record<Key, any>>,
27+
): Key[] {
28+
return Object.getOwnPropertyNames(object) as Key[];
29+
}
30+
1231
const changelogTitle = '# Changelog';
1332
const changelogDescription = `All notable changes to this project will be documented in this file.
1433

yarn.lock

Lines changed: 0 additions & 170 deletions
Original file line numberDiff line numberDiff line change
@@ -451,48 +451,6 @@ __metadata:
451451
languageName: node
452452
linkType: hard
453453

454-
"@ethereumjs/common@npm:^3.2.0":
455-
version: 3.2.0
456-
resolution: "@ethereumjs/common@npm:3.2.0"
457-
dependencies:
458-
"@ethereumjs/util": ^8.1.0
459-
crc-32: ^1.2.0
460-
checksum: cb9cc11f5c868cb577ba611cebf55046e509218bbb89b47ccce010776dafe8256d70f8f43fab238aec74cf71f62601cd5842bc03a83261200802de365732a14b
461-
languageName: node
462-
linkType: hard
463-
464-
"@ethereumjs/rlp@npm:^4.0.1":
465-
version: 4.0.1
466-
resolution: "@ethereumjs/rlp@npm:4.0.1"
467-
bin:
468-
rlp: bin/rlp
469-
checksum: 30db19c78faa2b6ff27275ab767646929207bb207f903f09eb3e4c273ce2738b45f3c82169ddacd67468b4f063d8d96035f2bf36f02b6b7e4d928eefe2e3ecbc
470-
languageName: node
471-
linkType: hard
472-
473-
"@ethereumjs/tx@npm:^4.1.2":
474-
version: 4.2.0
475-
resolution: "@ethereumjs/tx@npm:4.2.0"
476-
dependencies:
477-
"@ethereumjs/common": ^3.2.0
478-
"@ethereumjs/rlp": ^4.0.1
479-
"@ethereumjs/util": ^8.1.0
480-
ethereum-cryptography: ^2.0.0
481-
checksum: 87a3f5f2452cfbf6712f8847525a80c213210ed453c211c793c5df801fe35ecef28bae17fadd222fcbdd94277478a47e52d2b916a90a6b30cda21f1e0cdaee42
482-
languageName: node
483-
linkType: hard
484-
485-
"@ethereumjs/util@npm:^8.1.0":
486-
version: 8.1.0
487-
resolution: "@ethereumjs/util@npm:8.1.0"
488-
dependencies:
489-
"@ethereumjs/rlp": ^4.0.1
490-
ethereum-cryptography: ^2.0.0
491-
micro-ftch: ^0.3.1
492-
checksum: 9ae5dee8f12b0faf81cd83f06a41560e79b0ba96a48262771d897a510ecae605eb6d84f687da001ab8ccffd50f612ae50f988ef76e6312c752897f462f3ac08d
493-
languageName: node
494-
linkType: hard
495-
496454
"@gar/promisify@npm:^1.1.3":
497455
version: 1.1.3
498456
resolution: "@gar/promisify@npm:1.1.3"
@@ -815,7 +773,6 @@ __metadata:
815773
"@metamask/eslint-config-jest": ^11.1.0
816774
"@metamask/eslint-config-nodejs": ^11.1.0
817775
"@metamask/eslint-config-typescript": ^11.1.0
818-
"@metamask/utils": ^8.1.0
819776
"@types/cross-spawn": ^6.0.2
820777
"@types/diff": ^5.0.0
821778
"@types/jest": ^26.0.23
@@ -894,43 +851,6 @@ __metadata:
894851
languageName: node
895852
linkType: hard
896853

897-
"@metamask/utils@npm:^8.1.0":
898-
version: 8.1.0
899-
resolution: "@metamask/utils@npm:8.1.0"
900-
dependencies:
901-
"@ethereumjs/tx": ^4.1.2
902-
"@noble/hashes": ^1.3.1
903-
"@types/debug": ^4.1.7
904-
debug: ^4.3.4
905-
semver: ^7.5.4
906-
superstruct: ^1.0.3
907-
checksum: 4cbee36d0c227f3e528930e83f75a0c6b71b55b332c3e162f0e87f3dd86ae017d0b20405d76ea054ab99e4d924d3d9b8b896ed12a12aae57b090350e5a625999
908-
languageName: node
909-
linkType: hard
910-
911-
"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0":
912-
version: 1.1.0
913-
resolution: "@noble/curves@npm:1.1.0"
914-
dependencies:
915-
"@noble/hashes": 1.3.1
916-
checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5
917-
languageName: node
918-
linkType: hard
919-
920-
"@noble/hashes@npm:1.3.1":
921-
version: 1.3.1
922-
resolution: "@noble/hashes@npm:1.3.1"
923-
checksum: 7fdefc0f7a0c1ec27acc6ff88841793e3f93ec4ce6b8a6a12bfc0dd70ae6b7c4c82fe305fdfeda1735d5ad4a9eebe761e6693b3d355689c559e91242f4bc95b1
924-
languageName: node
925-
linkType: hard
926-
927-
"@noble/hashes@npm:^1.3.1, @noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1":
928-
version: 1.3.2
929-
resolution: "@noble/hashes@npm:1.3.2"
930-
checksum: fe23536b436539d13f90e4b9be843cc63b1b17666a07634a2b1259dded6f490be3d050249e6af98076ea8f2ea0d56f578773c2197f2aa0eeaa5fba5bc18ba474
931-
languageName: node
932-
linkType: hard
933-
934854
"@nodelib/fs.scandir@npm:2.1.5":
935855
version: 2.1.5
936856
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -1007,34 +927,6 @@ __metadata:
1007927
languageName: node
1008928
linkType: hard
1009929

1010-
"@scure/base@npm:~1.1.0":
1011-
version: 1.1.3
1012-
resolution: "@scure/base@npm:1.1.3"
1013-
checksum: 1606ab8a4db898cb3a1ada16c15437c3bce4e25854fadc8eb03ae93cbbbac1ed90655af4b0be3da37e12056fef11c0374499f69b9e658c9e5b7b3e06353c630c
1014-
languageName: node
1015-
linkType: hard
1016-
1017-
"@scure/bip32@npm:1.3.1":
1018-
version: 1.3.1
1019-
resolution: "@scure/bip32@npm:1.3.1"
1020-
dependencies:
1021-
"@noble/curves": ~1.1.0
1022-
"@noble/hashes": ~1.3.1
1023-
"@scure/base": ~1.1.0
1024-
checksum: 394d65f77a40651eba21a5096da0f4233c3b50d422864751d373fcf142eeedb94a1149f9ab1dbb078086dab2d0bc27e2b1afec8321bf22d4403c7df2fea5bfe2
1025-
languageName: node
1026-
linkType: hard
1027-
1028-
"@scure/bip39@npm:1.2.1":
1029-
version: 1.2.1
1030-
resolution: "@scure/bip39@npm:1.2.1"
1031-
dependencies:
1032-
"@noble/hashes": ~1.3.0
1033-
"@scure/base": ~1.1.0
1034-
checksum: c5bd6f1328fdbeae2dcdd891825b1610225310e5e62a4942714db51066866e4f7bef242c7b06a1b9dcc8043a4a13412cf5c5df76d3b10aa9e36b82e9b6e3eeaa
1035-
languageName: node
1036-
linkType: hard
1037-
1038930
"@sinonjs/commons@npm:^1.7.0":
1039931
version: 1.8.1
1040932
resolution: "@sinonjs/commons@npm:1.8.1"
@@ -1117,15 +1009,6 @@ __metadata:
11171009
languageName: node
11181010
linkType: hard
11191011

1120-
"@types/debug@npm:^4.1.7":
1121-
version: 4.1.9
1122-
resolution: "@types/debug@npm:4.1.9"
1123-
dependencies:
1124-
"@types/ms": "*"
1125-
checksum: e88ee8b19d106f33eb0d3bc58bacff9702e98d821fd1ebd1de8942e6b97419e19a1ccf39370f1764a1dc66f79fd4619f3412e1be6eeb9f0b76412f5ffe4ead93
1126-
languageName: node
1127-
linkType: hard
1128-
11291012
"@types/diff@npm:^5.0.0":
11301013
version: 5.0.0
11311014
resolution: "@types/diff@npm:5.0.0"
@@ -1191,13 +1074,6 @@ __metadata:
11911074
languageName: node
11921075
linkType: hard
11931076

1194-
"@types/ms@npm:*":
1195-
version: 0.7.32
1196-
resolution: "@types/ms@npm:0.7.32"
1197-
checksum: 610744605c5924aa2657c8a62d307052af4f0e38e2aa015f154ef03391fabb4fd903f9c9baacb41f6e5798b8697e898463c351e5faf638738603ed29137b5254
1198-
languageName: node
1199-
linkType: hard
1200-
12011077
"@types/node@npm:*":
12021078
version: 20.1.1
12031079
resolution: "@types/node@npm:20.1.1"
@@ -2230,15 +2106,6 @@ __metadata:
22302106
languageName: node
22312107
linkType: hard
22322108

2233-
"crc-32@npm:^1.2.0":
2234-
version: 1.2.2
2235-
resolution: "crc-32@npm:1.2.2"
2236-
bin:
2237-
crc32: bin/crc32.njs
2238-
checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff243
2239-
languageName: node
2240-
linkType: hard
2241-
22422109
"cross-spawn@npm:^6.0.0":
22432110
version: 6.0.5
22442111
resolution: "cross-spawn@npm:6.0.5"
@@ -2944,18 +2811,6 @@ __metadata:
29442811
languageName: node
29452812
linkType: hard
29462813

2947-
"ethereum-cryptography@npm:^2.0.0":
2948-
version: 2.1.2
2949-
resolution: "ethereum-cryptography@npm:2.1.2"
2950-
dependencies:
2951-
"@noble/curves": 1.1.0
2952-
"@noble/hashes": 1.3.1
2953-
"@scure/bip32": 1.3.1
2954-
"@scure/bip39": 1.2.1
2955-
checksum: 2e8f7b8cc90232ae838ab6a8167708e8362621404d26e79b5d9e762c7b53d699f7520aff358d9254de658fcd54d2d0af168ff909943259ed27dc4cef2736410c
2956-
languageName: node
2957-
linkType: hard
2958-
29592814
"exec-sh@npm:^0.3.2":
29602815
version: 0.3.4
29612816
resolution: "exec-sh@npm:0.3.4"
@@ -5094,13 +4949,6 @@ __metadata:
50944949
languageName: node
50954950
linkType: hard
50964951

5097-
"micro-ftch@npm:^0.3.1":
5098-
version: 0.3.1
5099-
resolution: "micro-ftch@npm:0.3.1"
5100-
checksum: 0e496547253a36e98a83fb00c628c53c3fb540fa5aaeaf718438873785afd193244988c09d219bb1802984ff227d04938d9571ef90fe82b48bd282262586aaff
5101-
languageName: node
5102-
linkType: hard
5103-
51044952
"micromatch@npm:^3.1.4":
51054953
version: 3.1.10
51064954
resolution: "micromatch@npm:3.1.10"
@@ -6346,17 +6194,6 @@ __metadata:
63466194
languageName: node
63476195
linkType: hard
63486196

6349-
"semver@npm:^7.5.4":
6350-
version: 7.5.4
6351-
resolution: "semver@npm:7.5.4"
6352-
dependencies:
6353-
lru-cache: ^6.0.0
6354-
bin:
6355-
semver: bin/semver.js
6356-
checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3
6357-
languageName: node
6358-
linkType: hard
6359-
63606197
"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0":
63616198
version: 2.0.0
63626199
resolution: "set-blocking@npm:2.0.0"
@@ -6793,13 +6630,6 @@ __metadata:
67936630
languageName: node
67946631
linkType: hard
67956632

6796-
"superstruct@npm:^1.0.3":
6797-
version: 1.0.3
6798-
resolution: "superstruct@npm:1.0.3"
6799-
checksum: 761790bb111e6e21ddd608299c252f3be35df543263a7ebbc004e840d01fcf8046794c274bcb351bdf3eae4600f79d317d085cdbb19ca05803a4361840cc9bb1
6800-
languageName: node
6801-
linkType: hard
6802-
68036633
"supports-color@npm:^5.3.0":
68046634
version: 5.5.0
68056635
resolution: "supports-color@npm:5.5.0"

0 commit comments

Comments
 (0)