1
1
'use strict'
2
2
3
3
const { struct, superstruct } = require ( 'superstruct' )
4
- const kind = require ( 'kind-of' )
5
4
const { optional, list } = struct
6
5
7
- const transports = [ 'tcp' , 'utp' , 'webrtcstar' , 'webrtcdirect' , 'websockets' , 'websocketstar' ]
8
6
// Define custom types
9
- const s = superstruct ( {
10
- types : {
11
- tcp : v => kind ( v ) === 'tcp' ,
12
- utp : v => kind ( v ) === 'utp' ,
13
- webrtcstar : v => kind ( v ) === 'webrtcstar' ,
14
- webrtcdirect : v => kind ( v ) === 'webrtcdirect' ,
15
- websockets : v => kind ( v ) === 'websockets' ,
16
- websocketstar : v => kind ( v ) === 'websocketstar' ,
17
- transport : value => {
18
- const [ error ] = list ( [ s . union ( [ ...transports , 'function' ] ) ] ) . validate ( value )
19
- if ( error ) return error . message
20
-
21
- return value . length > 0
22
- ? true
23
- : 'You need to provide at least one transport.'
24
- }
25
- }
26
- } )
7
+ const s = superstruct ( )
8
+ const transport = s . union ( [
9
+ s . interface ( {
10
+ createListener : 'function' ,
11
+ dial : 'function'
12
+ } ) ,
13
+ 'function'
14
+ ] )
27
15
28
16
const optionsSchema = s (
29
17
{
@@ -41,7 +29,7 @@ const optionsSchema = s(
41
29
peerDiscovery : optional ( list ( [ s ( 'object|function' ) ] ) ) ,
42
30
peerRouting : optional ( list ( [ 'object' ] ) ) ,
43
31
streamMuxer : optional ( list ( [ s ( 'object|function' ) ] ) ) ,
44
- transport : ' transport'
32
+ transport : list ( [ transport ] )
45
33
} ) ,
46
34
config : s ( {
47
35
peerDiscovery : 'object?' ,
0 commit comments