Skip to content

Commit 168a848

Browse files
committed
Fix typings of at methods
1 parent e38beb9 commit 168a848

File tree

2 files changed

+41
-12
lines changed

2 files changed

+41
-12
lines changed

lib/database.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,28 @@ export default class Database<KeyIn = NativeValue, KeyOut = Buffer, ValIn = Nati
4343
// convenience and backwards compatibility.
4444
/** Create a shallow reference to the database at a specified subspace */
4545
at<CKI, CKO, CVI, CVO>(hasSubspace: GetSubspace<CKI, CKO, CVI, CVO>): Database<CKI, CKO, CVI, CVO>
46-
/** Create a shallow reference to the database at the subspace of another database reference */
47-
// at<CKI = KeyIn, CKO = KeyOut, CVI = ValIn, CVO = ValOut>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>): Database<CKI, CKO, CVI, CVO>
48-
49-
at(prefix: KeyIn | null): Database<KeyIn, KeyOut, ValIn, ValOut>;
50-
at<CKI, CKO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>): Database<CKI, CKO, ValIn, ValOut>;
46+
at(prefix: KeyIn | null, keyXf?: undefined, valueXf?: undefined): Database<KeyIn, KeyOut, ValIn, ValOut>;
47+
at<CKI, CKO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf?: undefined): Database<CKI, CKO, ValIn, ValOut>;
5148
at<CVI, CVO>(prefix: KeyIn | null, keyXf: undefined, valueXf: Transformer<CVI, CVO>): Database<KeyIn, KeyOut, CVI, CVO>;
5249
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf: Transformer<CVI, CVO>): Database<CKI, CKO, CVI, CVO>;
53-
54-
at<CKI, CKO, CVI, CVO>(prefixOrSubspace: GetSubspace<CKI, CKO, CVI, CVO> | KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>): Database<CKI, CKO, CVI, CVO> {
50+
at<CKI, CKO>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: undefined):
51+
| Database<KeyIn, KeyOut, ValIn, ValOut>
52+
| Database<CKI, CKO, ValIn, ValOut>;
53+
at<CVI, CVO>(prefix: KeyIn | null, keyXf: undefined, valueXf?: Transformer<CVI, CVO>):
54+
| Database<KeyIn, KeyOut, ValIn, ValOut>
55+
| Database<KeyIn, KeyOut, CVI, CVO>;
56+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO> | undefined, valueXf: Transformer<CVI, CVO>):
57+
| Database<KeyIn, KeyOut, CVI, CVO>
58+
| Database<CKI, CKO, CVI, CVO>;
59+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>):
60+
| Database<CKI, CKO, ValIn, ValOut>
61+
| Database<CKI, CKO, CVI, CVO>;
62+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>):
63+
| Database<KeyIn, KeyOut, ValIn, ValOut>
64+
| Database<CKI, CKO, ValIn, ValOut>
65+
| Database<KeyIn, KeyOut, CVI, CVO>
66+
| Database<CKI, CKO, CVI, CVO>;
67+
at<CKI, CKO, CVI, CVO>(prefixOrSubspace: GetSubspace<CKI, CKO, CVI, CVO> | KeyIn | null, keyXf?: Transformer<unknown, unknown>, valueXf?: Transformer<unknown, unknown>) {
5568
if (isGetSubspace(prefixOrSubspace)) return new Database(this._db, prefixOrSubspace.getSubspace())
5669
else return new Database(this._db, this.subspace.at(prefixOrSubspace, keyXf, valueXf))
5770
}

lib/subspace.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,28 @@ export default class Subspace<KeyIn = NativeValue, KeyOut = Buffer, ValIn = Nati
4141
// legit all the variants. Typescript can probably infer using less than this,
4242
// but I honestly don't trust it not to land with any or unknown or something
4343
// in some of the derived types
44-
at(prefix: KeyIn | null): Subspace<KeyIn, KeyOut, ValIn, ValOut>;
45-
at<CKI, CKO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>): Subspace<CKI, CKO, ValIn, ValOut>;
44+
at(prefix: KeyIn | null, keyXf?: undefined, valueXf?: undefined): Subspace<KeyIn, KeyOut, ValIn, ValOut>;
45+
at<CKI, CKO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf?: undefined): Subspace<CKI, CKO, ValIn, ValOut>;
4646
at<CVI, CVO>(prefix: KeyIn | null, keyXf: undefined, valueXf: Transformer<CVI, CVO>): Subspace<KeyIn, KeyOut, CVI, CVO>;
47-
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>): Subspace<CKI, CKO, CVI, CVO>;
48-
// ***
49-
at(prefix: KeyIn | null, keyXf: Transformer<any, any> = this.keyXf, valueXf: Transformer<any, any> = this.valueXf) {
47+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf: Transformer<CVI, CVO>): Subspace<CKI, CKO, CVI, CVO>;
48+
at<CKI, CKO>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: undefined):
49+
| Subspace<KeyIn, KeyOut, ValIn, ValOut>
50+
| Subspace<CKI, CKO, ValIn, ValOut>;
51+
at<CVI, CVO>(prefix: KeyIn | null, keyXf: undefined, valueXf?: Transformer<CVI, CVO>):
52+
| Subspace<KeyIn, KeyOut, ValIn, ValOut>
53+
| Subspace<KeyIn, KeyOut, CVI, CVO>;
54+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO> | undefined, valueXf: Transformer<CVI, CVO>):
55+
| Subspace<KeyIn, KeyOut, CVI, CVO>
56+
| Subspace<CKI, CKO, CVI, CVO>;
57+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>):
58+
| Subspace<CKI, CKO, ValIn, ValOut>
59+
| Subspace<CKI, CKO, CVI, CVO>;
60+
at<CKI, CKO, CVI, CVO>(prefix: KeyIn | null, keyXf?: Transformer<CKI, CKO>, valueXf?: Transformer<CVI, CVO>):
61+
| Subspace<KeyIn, KeyOut, ValIn, ValOut>
62+
| Subspace<CKI, CKO, ValIn, ValOut>
63+
| Subspace<KeyIn, KeyOut, CVI, CVO>
64+
| Subspace<CKI, CKO, CVI, CVO>;
65+
at(prefix: KeyIn | null, keyXf: Transformer<unknown, unknown> = this.keyXf, valueXf: Transformer<unknown, unknown> = this.valueXf) {
5066
const _prefix = prefix == null ? null : this.keyXf.pack(prefix)
5167
return new Subspace(concatPrefix(this.prefix, _prefix), keyXf, valueXf)
5268
}

0 commit comments

Comments
 (0)