Skip to content

Commit 824e7aa

Browse files
committed
feat(util): typescript DeepPartial utility type
1 parent c96e4a6 commit 824e7aa

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

Diff for: packages/util/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"shx": "^0.3.3",
6060
"ts-custom-error": "^3.2.0",
6161
"ts-jest": "^28.0.7",
62+
"type-fest": "^2.19.0",
6263
"typescript": "^4.7.4"
6364
},
6465
"dependencies": {

Diff for: packages/util/src/types.ts

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
1+
import { Primitive } from 'type-fest';
2+
13
export interface Shutdown {
24
shutdown(): void;
35
}
46

57
export type Awaited<T> = T extends PromiseLike<infer U> ? U : T;
8+
9+
/**
10+
* Recursively make all properties optional
11+
* Do not recurse into O types
12+
*/
13+
export type DeepPartial<T, O = never> = T extends O | Primitive
14+
? T
15+
: {
16+
[P in keyof T]?: DeepPartial<T[P], O>;
17+
};

Diff for: yarn-project.nix

+4-2
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,10 @@ cacheEntries = {
127127
"@types/lodash@npm:4.14.182" = { filename = "@types-lodash-npm-4.14.182-1073aac722-7dd137aa9d.zip"; sha512 = "7dd137aa9dbabd632408bd37009d984655164fa1ecc3f2b6eb94afe35bf0a5852cbab6183148d883e9c73a958b7fec9a9bcf7c8e45d41195add6a18c34958209"; };
128128
"@types/node@npm:14.18.12" = { filename = "@types-node-npm-14.18.12-61f7082f71-8a0273caa0.zip"; sha512 = "8a0273caa0584020adb8802784fc7d4f18f05e6c205335b7f3818a91d6b0c22736b9f51da3428d5bc54076ad47f1a4d6d57990a3ce8489a520ac66b2b3ff24bc"; };
129129
"ts-custom-error@npm:3.2.0" = { filename = "ts-custom-error-npm-3.2.0-7ef8105f26-b1d2016de8.zip"; sha512 = "b1d2016de891cecea46a70c4adbaf1e6f7c6178994f72070ee3c218cc1a9e2b12c3011defb8385f15dc03ddfafd8d88ef2c9217e23700fb6e537755f33b9c801"; };
130-
"serialize-error@npm:8.1.0" = { filename = "serialize-error-npm-8.1.0-a3c5bcc96c-2eef236d50.zip"; sha512 = "2eef236d50edd2d7926e602c14fb500dc3a125ee52e9f08f67033181b8e0be5d1122498bdf7c23c80683cddcad083a27974e9e7111ce23165f4d3bcdd6d65102"; };
130+
"type-fest@npm:2.19.0" = { filename = "type-fest-npm-2.19.0-918b953248-a4ef07ece2.zip"; sha512 = "a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278"; };
131131
"jest@npm:28.1.3" = { filename = "jest-npm-28.1.3-207c50e059-b9dcb542eb.zip"; sha512 = "b9dcb542eb7c16261c281cdc2bf37155dbb3f1205bae0b567f05051db362c85ddd4b765f126591efb88f6d298eb10336d0aa6c7d5373b4d53f918137a9a70182"; };
132132
"ws@npm:8.5.0" = { filename = "ws-npm-8.5.0-8e99728c84-76f2f90e40.zip"; sha512 = "76f2f90e40344bf18fd544194e7067812fb1372b2a37865678d8f12afe4b478ff2ebc0c7c0aff82cd5e6b66fc43d889eec0f1865c2365d8f7a66d92da7744a77"; };
133+
"serialize-error@npm:8.1.0" = { filename = "serialize-error-npm-8.1.0-a3c5bcc96c-2eef236d50.zip"; sha512 = "2eef236d50edd2d7926e602c14fb500dc3a125ee52e9f08f67033181b8e0be5d1122498bdf7c23c80683cddcad083a27974e9e7111ce23165f4d3bcdd6d65102"; };
133134
"delay@npm:5.0.0" = { filename = "delay-npm-5.0.0-1d1c758b46-62f151151e.zip"; sha512 = "62f151151ecfde0d9afbb8a6be37a6d103c4cb24f35a20ef3fe56f920b0d0d0bb02bc9c0a3084d0179ef669ca332b91155f2ee4d9854622cd2cdba5fc95285f9"; };
134135
"tslib@npm:2.3.1" = { filename = "tslib-npm-2.3.1-0e21e18015-de17a98d46.zip"; sha512 = "de17a98d4614481f7fcb5cd53ffc1aaf8654313be0291e1bfaee4b4bb31a20494b7d218ff2e15017883e8ea9626599b3b0e0229c18383ba9dce89da2adf15cb9"; };
135136
"fast-check@npm:2.24.0" = { filename = "fast-check-npm-2.24.0-9261e2c681-8f1e590768.zip"; sha512 = "8f1e590768379c2831bfc70e38c3eb545f82c706eaa316664226bd46956a1e52b644d665d9b31ebeca1e86477b054232f1159841b41c065ec8e4c24295da1c05"; };
@@ -142,13 +143,13 @@ cacheEntries = {
142143
"webextension-polyfill@npm:0.8.0" = { filename = "webextension-polyfill-npm-0.8.0-eab1744c30-56286e6216.zip"; sha512 = "56286e6216e15834fdcdc3dcf611000d96b49c9d925de3d657eb5f1e294074180dd3efe78a0966223eb311ac3a0ac5fdf71d324b836bf05724455ffd6c7c98c3"; };
143144
"buffer@npm:5.7.1" = { filename = "buffer-npm-5.7.1-513ef8259e-e2cf8429e1.zip"; sha512 = "e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84"; };
144145
"@types/jest@npm:26.0.24" = { filename = "@types-jest-npm-26.0.24-47c570294f-ae39675412.zip"; sha512 = "ae39675412f08d884926254e9b12bfd2b5a4e4d204c94d3148cb942174a474930d0c60540133c968f22241d4712b7940c96cbc883096eb326a4d5b206fb78bd0"; };
145-
"type-fest@npm:0.20.2" = { filename = "type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip"; sha512 = "4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73"; };
146146
"ts-jest@npm:28.0.7" = { filename = "ts-jest-npm-28.0.7-5e5007d2e9-be6ad6382e.zip"; sha512 = "be6ad6382e3b2e7b0c45d06616a4a02aeb6815bad2026fe8eeb4e0941205faa50ac3f5930adb7ba2fda5fea6a5739bfa507e2eac8764d2c729ddc8010681707a"; };
147147
"@types/validator@npm:13.7.2" = { filename = "@types-validator-npm-13.7.2-a51e56b9bb-e679261dd5.zip"; sha512 = "e679261dd5392adfeb9b20ba2eaf7d668049ad03b24409a6921bb6a3ee4c3135d46cc536a0eafbbda7f642b196696a6e3e1e615b2d1194330d49b22f1f0acb59"; };
148148
"mock-browser@npm:0.92.14" = { filename = "mock-browser-npm-0.92.14-e40c5ec948-1f648bce3b.zip"; sha512 = "1f648bce3b9ac70f27b7a64c55d8b7b05808524e7f65b4bdb4b4e9f10091f91ae9b90911d51f6ebeeb0565c8ed8cb48277790ff5744a7202e51dcb6ddc08aa34"; };
149149
"@emurgo/cardano-serialization-lib-browser@npm:11.0.0-rc.6" = { filename = "@emurgo-cardano-serialization-lib-browser-npm-11.0.0-rc.6-f8fcee633c-a5f154735a.zip"; sha512 = "a5f154735a0a4bc9a608bd7dcd431050819dda200ad8824bffb2a49342a83abb0048b5b453ea7090e603df0f883692015eec274921702e4c10e2714f06db363c"; };
150150
"@emurgo/cardano-serialization-lib-nodejs@npm:11.0.0-rc.6" = { filename = "@emurgo-cardano-serialization-lib-nodejs-npm-11.0.0-rc.6-41e5ab1765-16f1fda789.zip"; sha512 = "16f1fda7896b9a26a0a450db0e121b99ec7a61c65d8ade998d9082a5aeb0517fb12dade2439321659b62ffe87d15796eee1654080336a5bda79537d623007ab6"; };
151151
"bech32@npm:2.0.0" = { filename = "bech32-npm-2.0.0-ad98b7dd79-fa15acb270.zip"; sha512 = "fa15acb270b59aa496734a01f9155677b478987b773bf701f465858bf1606c6a970085babd43d71ce61895f1baa594cb41a2cd1394bd2c6698f03cc2d811300e"; };
152+
"type-fest@npm:0.20.2" = { filename = "type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip"; sha512 = "4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73"; };
152153
"npm-run-all@npm:4.1.5" = { filename = "npm-run-all-npm-4.1.5-3281f1c563-373b72c6a3.zip"; sha512 = "373b72c6a36564da13c1642c1fd9bb4dcc756bce7a3648f883772f02661095319820834ff813762d2fee403e9b40c1cd27c8685807c107440f10eb19c006d4a0"; };
153154
"shelljs@npm:0.8.5" = { filename = "shelljs-npm-0.8.5-44be43f84a-7babc46f73.zip"; sha512 = "7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748"; };
154155
"blockfrost-js-ratelimited@npm:2.0.4" = { filename = "blockfrost-js-ratelimited-npm-2.0.4-e86eca2261-3ca5e14db3.zip"; sha512 = "3ca5e14db30abe7ef708970d04f37be407b53de5f41877a19b2252052afdcd8b39638036583a511bda3869d9b0504d33f4aeaa963d181590e962cef2f76c59c2"; };
@@ -1245,6 +1246,7 @@ cacheEntries = {
12451246
"@lerna/symlink-dependencies@npm:5.2.0" = { filename = "@lerna-symlink-dependencies-npm-5.2.0-a6aa998578-4a00e85ac8.zip"; sha512 = "4a00e85ac8bd63896834978cd6d380fecb4093098f09e7d53112b4543ea3ab70b563c24467748c6a4d1e77a25cb0a463f2a3284339bf7366eacff9f1d2ca6593"; };
12461247
"slice-ansi@npm:3.0.0" = { filename = "slice-ansi-npm-3.0.0-d9999864af-5ec6d022d1.zip"; sha512 = "5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24"; };
12471248
"minipass-fetch@npm:2.1.0" = { filename = "minipass-fetch-npm-2.1.0-300ce55188-1334732859.zip"; sha512 = "1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f"; };
1249+
"fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7" = { filename = "fsevents-patch-3340e2eb10-8.zip"; sha512 = "edbd0fd80be379c14409605f77e52fdc78a119e17f875e8b90a220c3e5b29e54a1477c21d91fd30b957ea4866406dc3ff87b61432d2840ff8866b309e5866140"; };
12481250
"toidentifier@npm:1.0.1" = { filename = "toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip"; sha512 = "952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45"; };
12491251
"har-schema@npm:2.0.0" = { filename = "har-schema-npm-2.0.0-3a318c0ca5-d8946348f3.zip"; sha512 = "d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b"; };
12501252
"@wdio/local-runner@npm:7.19.5" = { filename = "@wdio-local-runner-npm-7.19.5-e561c77e24-cc5c8fa516.zip"; sha512 = "cc5c8fa516cf5ac3ef21567e4d554dea4374ad9cdb040cdc69eee2004c14b71a8abc88f5b8e232da8f3d0c9238d0bc4653ef4f4e79d23dc15488ff5b16760ebc"; };

Diff for: yarn.lock

+8
Original file line numberDiff line numberDiff line change
@@ -2032,6 +2032,7 @@ __metadata:
20322032
shx: ^0.3.3
20332033
ts-custom-error: ^3.2.0
20342034
ts-jest: ^28.0.7
2035+
type-fest: ^2.19.0
20352036
typescript: ^4.7.4
20362037
languageName: unknown
20372038
linkType: soft
@@ -19287,6 +19288,13 @@ __metadata:
1928719288
languageName: node
1928819289
linkType: hard
1928919290

19291+
"type-fest@npm:^2.19.0":
19292+
version: 2.19.0
19293+
resolution: "type-fest@npm:2.19.0"
19294+
checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278
19295+
languageName: node
19296+
linkType: hard
19297+
1929019298
"type-is@npm:^1.6.4, type-is@npm:~1.6.18":
1929119299
version: 1.6.18
1929219300
resolution: "type-is@npm:1.6.18"

0 commit comments

Comments
 (0)