1
1
import basex from '../../vendor/base-x.js'
2
2
import { coerce } from '../bytes.js'
3
-
4
- /**
5
- * @typedef {import('./interface').BaseEncoder } BaseEncoder
6
- * @typedef {import('./interface').BaseDecoder } BaseDecoder
7
- * @typedef {import('./interface').BaseCodec } BaseCodec
8
- */
9
-
10
- /**
11
- * @template {string} T
12
- * @typedef {import('./interface').Multibase<T> } Multibase
13
- */
14
- /**
15
- * @template {string} T
16
- * @typedef {import('./interface').MultibaseEncoder<T> } MultibaseEncoder
17
- */
3
+ // Linter can't see that API is used in types.
4
+ // eslint-disable-next-line
5
+ import * as API from './interface.js'
18
6
19
7
/**
20
8
* Class represents both BaseEncoder and MultibaseEncoder meaning it
@@ -23,8 +11,8 @@ import { coerce } from '../bytes.js'
23
11
* @class
24
12
* @template {string} Base
25
13
* @template {string} Prefix
26
- * @implements {MultibaseEncoder<Prefix>}
27
- * @implements {BaseEncoder}
14
+ * @implements {API. MultibaseEncoder<Prefix>}
15
+ * @implements {API. BaseEncoder}
28
16
*/
29
17
class Encoder {
30
18
/**
@@ -40,7 +28,7 @@ class Encoder {
40
28
41
29
/**
42
30
* @param {Uint8Array } bytes
43
- * @returns {Multibase<Prefix> }
31
+ * @returns {API. Multibase<Prefix> }
44
32
*/
45
33
encode ( bytes ) {
46
34
if ( bytes instanceof Uint8Array ) {
@@ -51,29 +39,18 @@ class Encoder {
51
39
}
52
40
}
53
41
54
- /**
55
- * @template {string} Prefix
56
- * @typedef {import('./interface').MultibaseDecoder<Prefix> } MultibaseDecoder
57
- */
58
-
59
- /**
60
- * @template {string} Prefix
61
- * @typedef {import('./interface').UnibaseDecoder<Prefix> } UnibaseDecoder
62
- */
63
-
64
42
/**
65
43
* @template {string} Prefix
66
44
*/
67
45
/**
68
46
* Class represents both BaseDecoder and MultibaseDecoder so it could be used
69
47
* to decode multibases (with matching prefix) or just base decode strings
70
48
* with corresponding base encoding.
71
- * @class
72
49
* @template {string} Base
73
50
* @template {string} Prefix
74
- * @implements {MultibaseDecoder<Prefix>}
75
- * @implements {UnibaseDecoder<Prefix>}
76
- * @implements {BaseDecoder}
51
+ * @implements {API. MultibaseDecoder<Prefix>}
52
+ * @implements {API. UnibaseDecoder<Prefix>}
53
+ * @implements {API. BaseDecoder}
77
54
*/
78
55
class Decoder {
79
56
/**
@@ -109,7 +86,7 @@ class Decoder {
109
86
110
87
/**
111
88
* @template {string} OtherPrefix
112
- * @param {UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix> } decoder
89
+ * @param {API. UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix> } decoder
113
90
* @returns {ComposedDecoder<Prefix|OtherPrefix> }
114
91
*/
115
92
or ( decoder ) {
@@ -119,30 +96,25 @@ class Decoder {
119
96
120
97
/**
121
98
* @template {string} Prefix
122
- * @typedef {import('./interface').CombobaseDecoder<Prefix> } CombobaseDecoder
123
- */
124
-
125
- /**
126
- * @template {string} Prefix
127
- * @typedef {Record<Prefix, UnibaseDecoder<Prefix>> } Decoders
99
+ * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>> } Decoders
128
100
*/
129
101
130
102
/**
131
103
* @template {string} Prefix
132
- * @implements {MultibaseDecoder<Prefix>}
133
- * @implements {CombobaseDecoder<Prefix>}
104
+ * @implements {API. MultibaseDecoder<Prefix>}
105
+ * @implements {API. CombobaseDecoder<Prefix>}
134
106
*/
135
107
class ComposedDecoder {
136
108
/**
137
- * @param {Record <Prefix, UnibaseDecoder<Prefix> > } decoders
109
+ * @param {Decoders <Prefix> } decoders
138
110
*/
139
111
constructor ( decoders ) {
140
112
this . decoders = decoders
141
113
}
142
114
143
115
/**
144
116
* @template {string} OtherPrefix
145
- * @param {UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix> } decoder
117
+ * @param {API. UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix> } decoder
146
118
* @returns {ComposedDecoder<Prefix|OtherPrefix> }
147
119
*/
148
120
or ( decoder ) {
@@ -167,30 +139,25 @@ class ComposedDecoder {
167
139
/**
168
140
* @template {string} L
169
141
* @template {string} R
170
- * @param {UnibaseDecoder<L>|CombobaseDecoder<L> } left
171
- * @param {UnibaseDecoder<R>|CombobaseDecoder<R> } right
142
+ * @param {API. UnibaseDecoder<L>|API. CombobaseDecoder<L> } left
143
+ * @param {API. UnibaseDecoder<R>|API. CombobaseDecoder<R> } right
172
144
* @returns {ComposedDecoder<L|R> }
173
145
*/
174
146
export const or = ( left , right ) => new ComposedDecoder ( /** @type {Decoders<L|R> } */ ( {
175
- ...( left . decoders || { [ /** @type UnibaseDecoder<L> */ ( left ) . prefix ] : left } ) ,
176
- ...( right . decoders || { [ /** @type UnibaseDecoder<R> */ ( right ) . prefix ] : right } )
147
+ ...( left . decoders || { [ /** @type API. UnibaseDecoder<L> */ ( left ) . prefix ] : left } ) ,
148
+ ...( right . decoders || { [ /** @type API. UnibaseDecoder<R> */ ( right ) . prefix ] : right } )
177
149
} ) )
178
150
179
- /**
180
- * @template T
181
- * @typedef {import('./interface').MultibaseCodec<T> } MultibaseCodec
182
- */
183
-
184
151
/**
185
152
* @class
186
153
* @template {string} Base
187
154
* @template {string} Prefix
188
- * @implements {MultibaseCodec<Prefix>}
189
- * @implements {MultibaseEncoder<Prefix>}
190
- * @implements {MultibaseDecoder<Prefix>}
191
- * @implements {BaseCodec}
192
- * @implements {BaseEncoder}
193
- * @implements {BaseDecoder}
155
+ * @implements {API. MultibaseCodec<Prefix>}
156
+ * @implements {API. MultibaseEncoder<Prefix>}
157
+ * @implements {API. MultibaseDecoder<Prefix>}
158
+ * @implements {API. BaseCodec}
159
+ * @implements {API. BaseEncoder}
160
+ * @implements {API. BaseDecoder}
194
161
*/
195
162
export class Codec {
196
163
/**
0 commit comments