Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 3bb5562

Browse files
author
exoego
committed
wip http2
1 parent 61719c6 commit 3bb5562

29 files changed

+519
-1
lines changed

app/current/src/main/scala/io/scalajs/nodejs/http/ConnectionOptions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class ConnectionOptions(
1515
var lookup: js.UndefOr[js.Function1[String, Any]] = js.undefined,
1616
var onread: js.UndefOr[OnreadObject] = js.undefined,
1717
// for IPC connections
18-
var path: js.UndefOr[String],
18+
var path: js.UndefOr[String] = js.undefined,
1919
// for new Socket(option)
2020
var fd: js.UndefOr[Int] = js.undefined,
2121
var allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
@js.native
6+
trait ClientHttp2Session extends Http2Session {
7+
8+
def request(headers: Http2Headers, options: Http2RequestOptions = js.native): ClientHttp2Stream = js.native
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
@js.native
6+
trait ClientHttp2Stream extends Http2Stream
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
trait HasOrigin extends js.Object {
6+
def origin: String
7+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.url.URL
4+
5+
import scala.scalajs.js
6+
import scala.scalajs.js.annotation.JSImport
7+
import scala.scalajs.js.|
8+
9+
@js.native
10+
trait Http2 extends js.Object {
11+
def createServer(
12+
options: Http2ServerOptions,
13+
onRequestHandler: js.Function2[Http2ServerRequest, Http2ServerResponse, Any] = js.native
14+
): Http2Server = js.native
15+
16+
def createSecureServer(
17+
options: Http2SecureServerOptions,
18+
onRequestHandler: js.Function2[Http2ServerRequest, Http2ServerResponse, Any] = js.native
19+
): Http2SecureServer = js.native
20+
21+
def connect(authority: String | URL, options: Http2ConnectOptions, listener: js.Function): ClientHttp2Session =
22+
js.native
23+
//TODO
24+
// def constants: Http2Constants = js.native
25+
}
26+
27+
@js.native
28+
@JSImport("http2", JSImport.Namespace)
29+
object Http2 extends Http2
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.buffer.Buffer
4+
import io.scalajs.nodejs.http.OnreadObject
5+
import io.scalajs.nodejs.{net, stream}
6+
import io.scalajs.nodejs.tls.{ALPNProtocols, SecureContext, TLSCertificate}
7+
import io.scalajs.nodejs.url.URL
8+
9+
import scala.scalajs.js
10+
11+
class Http2ConnectOptions(
12+
var maxDeflateDynamicTableSize: js.UndefOr[Int] = js.undefined,
13+
var maxSessionMemory: js.UndefOr[Int] = js.undefined,
14+
var maxHeaderListPairs: js.UndefOr[Int] = js.undefined,
15+
var maxOutstandingPings: js.UndefOr[Int] = js.undefined,
16+
var maxSendHeaderBlockLength: js.UndefOr[Int] = js.undefined,
17+
var paddingStrategy: js.UndefOr[Int] = js.undefined,
18+
var peerMaxConcurrentStreams: js.UndefOr[Int] = js.undefined,
19+
var selectPadding: js.UndefOr[js.Function2[Int, Int, Int]] = js.undefined,
20+
var settings: js.UndefOr[Http2Settings] = js.undefined,
21+
// specific to connect
22+
var maxReservedRemoteStreams: js.UndefOr[Int] = js.undefined,
23+
var createConnection: js.UndefOr[js.Function2[URL, Http2ConnectOptions, stream.IDuplex]],
24+
// From net.connect
25+
// for socket.connect(option)
26+
var port: js.UndefOr[Int] = js.undefined,
27+
var host: js.UndefOr[String] = js.undefined,
28+
var localAddress: js.UndefOr[String] = js.undefined,
29+
var localPort: js.UndefOr[Int] = js.undefined,
30+
var family: js.UndefOr[Int] = js.undefined,
31+
var hints: js.UndefOr[Int] = js.undefined,
32+
var lookup: js.UndefOr[js.Function1[String, Any]] = js.undefined,
33+
var onread: js.UndefOr[OnreadObject] = js.undefined,
34+
// for IPC connections
35+
var path: js.UndefOr[String] = js.undefined,
36+
// for new Socket(option)
37+
var fd: js.UndefOr[Int] = js.undefined,
38+
var allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
39+
var readable: js.UndefOr[Boolean] = js.undefined,
40+
var writable: js.UndefOr[Int] = js.undefined,
41+
// From tls.connect
42+
var socket: js.UndefOr[stream.IDuplex] = js.undefined,
43+
var servername: js.UndefOr[String] = js.undefined,
44+
var checkServerIdentity: js.UndefOr[js.Function2[String, TLSCertificate, Any]] = js.undefined,
45+
var minDHSize: js.UndefOr[Int] = js.undefined,
46+
// TLSSocketOptions
47+
var enableTrace: js.UndefOr[Boolean] = js.undefined,
48+
var isServer: js.UndefOr[Boolean] = js.undefined,
49+
var server: js.UndefOr[net.Server] = js.undefined,
50+
var requestCert: js.UndefOr[Boolean] = js.undefined,
51+
var rejectUnauthorized: js.UndefOr[Boolean] = js.undefined,
52+
var NPNProtocols: js.UndefOr[Boolean] = js.undefined,
53+
var ALPNProtocols: js.UndefOr[ALPNProtocols] = js.undefined,
54+
var SNICallback: js.UndefOr[js.Function2[String, js.Function, Any]] = js.undefined,
55+
var session: js.UndefOr[Buffer] = js.undefined,
56+
var requestOCSP: js.UndefOr[Boolean] = js.undefined,
57+
var secureContext: js.UndefOr[SecureContext] = js.undefined
58+
) extends js.Object
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
@js.native
6+
trait Http2Constants extends js.Object
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package io.scalajs.nodejs.http2
2+
3+
class Http2Headers {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2Priority(
6+
var exclusive: js.UndefOr[Boolean],
7+
var parent: js.UndefOr[Int],
8+
var weight: js.UndefOr[Int],
9+
var silent: js.UndefOr[Boolean]
10+
) extends js.Object
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2PushStreamOptions(
6+
var exclusive: js.UndefOr[Boolean],
7+
var parent: js.UndefOr[Int]
8+
) extends js.Object
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2RequestOptions(
6+
var endStream: js.UndefOr[Boolean] = js.undefined,
7+
var exclusive: js.UndefOr[Boolean] = js.undefined,
8+
var parent: js.UndefOr[Int] = js.undefined,
9+
var weight: js.UndefOr[Int] = js.undefined,
10+
var waitForTrailers: js.UndefOr[Boolean] = js.undefined
11+
) extends js.Object
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2RespondWithFDOptions(
6+
var statCheck: js.UndefOr[js.Function] = js.undefined,
7+
var waitForTrailers: js.UndefOr[Boolean] = js.undefined,
8+
var offset: js.UndefOr[Int] = js.undefined,
9+
var length: js.UndefOr[Int] = js.undefined
10+
) extends js.Object
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2RespondWithFileOptions(
6+
var statCheck: js.UndefOr[js.Function] = js.undefined,
7+
var onError: js.UndefOr[js.Function] = js.undefined,
8+
var waitForTrailers: js.UndefOr[Boolean] = js.undefined,
9+
var offset: js.UndefOr[Int] = js.undefined,
10+
var length: js.UndefOr[Int] = js.undefined
11+
) extends js.Object
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
5+
class Http2ResponseOptions(
6+
var endStream: js.UndefOr[Boolean] = js.undefined,
7+
var waitForTrailers: js.UndefOr[Boolean] = js.undefined
8+
) extends js.Object
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.tls
4+
5+
import scala.scalajs.js
6+
7+
@js.native
8+
trait Http2SecureServer extends tls.Server with Http2ServerOps
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.buffer.Buffer
4+
import io.scalajs.nodejs.tls.{SecureContext, SecureData, SecureDataObjectForm}
5+
6+
import scala.scalajs.js
7+
import scala.scalajs.js.typedarray.{DataView, TypedArray}
8+
import scala.scalajs.js.|
9+
10+
class Http2SecureServerOptions(
11+
var allowHTTP1: js.UndefOr[Boolean] = js.undefined,
12+
var maxDeflateDynamicTableSize: js.UndefOr[Int] = js.undefined,
13+
var maxSessionMemory: js.UndefOr[Int] = js.undefined,
14+
var maxHeaderListPairs: js.UndefOr[Int] = js.undefined,
15+
var maxOutstandingPings: js.UndefOr[Int] = js.undefined,
16+
var maxSendHeaderBlockLength: js.UndefOr[Int] = js.undefined,
17+
var paddingStrategy: js.UndefOr[Int] = js.undefined,
18+
var peerMaxConcurrentStreams: js.UndefOr[Int] = js.undefined,
19+
var selectPadding: js.UndefOr[js.Function2[Int, Int, Int]] = js.undefined,
20+
var settings: js.UndefOr[Http2Settings] = js.undefined,
21+
var options: js.UndefOr[js.Array[String]] = js.undefined,
22+
var ALPNProtocols: js.UndefOr[
23+
js.Array[String] | js.Array[TypedArray[_, _]] | js.Array[DataView] | TypedArray[_, _] | DataView
24+
] = js.undefined,
25+
var enableTrace: js.UndefOr[Boolean] = js.undefined,
26+
var handshakeTimeout: js.UndefOr[Int] = js.undefined,
27+
var rejectUnauthorized: js.UndefOr[Boolean] = js.undefined,
28+
var requestCert: js.UndefOr[Boolean] = js.undefined,
29+
var sessionTimeout: js.UndefOr[Int] = js.undefined,
30+
var SNICallback: js.UndefOr[js.Function2[String, js.Function2[io.scalajs.nodejs.Error, SecureContext, Any], Any]],
31+
var ticketKeys: js.UndefOr[Buffer] = js.undefined,
32+
// Options for net.createServers
33+
val allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
34+
val pauseOnConnect: js.UndefOr[Boolean] = js.undefined,
35+
// Options for tls.createSecureContext
36+
var ca: js.UndefOr[SecureData] = js.undefined,
37+
var cert: js.UndefOr[SecureData] = js.undefined,
38+
var sigalgs: js.UndefOr[String] = js.undefined,
39+
var ciphers: js.UndefOr[String] = js.undefined,
40+
var clientCertEngine: js.UndefOr[String] = js.undefined,
41+
var crl: js.UndefOr[SecureData] = js.undefined,
42+
var dphram: js.UndefOr[String | Buffer] = js.undefined,
43+
var ecdhCurve: js.UndefOr[String] = js.undefined,
44+
var honorCipherOrder: js.UndefOr[Boolean] = js.undefined,
45+
var key: js.UndefOr[SecureData] = js.undefined,
46+
var maxVersion: js.UndefOr[String] = js.undefined,
47+
var minVersion: js.UndefOr[String] = js.undefined,
48+
var passphrase: js.UndefOr[String] = js.undefined,
49+
var pfx: js.UndefOr[SecureData | js.Array[SecureDataObjectForm]] = js.undefined,
50+
var secureOptions: js.UndefOr[Int] = js.undefined,
51+
var secureProtocol: js.UndefOr[String] = js.undefined,
52+
var sessionIdContext: js.UndefOr[String] = js.undefined
53+
) extends js.Object
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.net
4+
5+
import scala.scalajs.js
6+
7+
@js.native
8+
trait Http2Server extends net.Server with Http2ServerOps
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
@js.native
5+
trait Http2ServerOps extends js.Object {
6+
def setTimeout(msecs: Int, callback: js.Function): this.type = js.native
7+
def setTimeout(msecs: Int): this.type = js.native
8+
def setTimeout(callback: js.Function): this.type = js.native
9+
def setTimeout(): this.type = js.native
10+
11+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import io.scalajs.nodejs.http
4+
5+
import scala.scalajs.js
6+
7+
class Http2ServerOptions(
8+
var maxDeflateDynamicTableSize: js.UndefOr[Int] = js.undefined,
9+
var maxSessionMemory: js.UndefOr[Int] = js.undefined,
10+
var maxHeaderListPairs: js.UndefOr[Int] = js.undefined,
11+
var maxOutstandingPings: js.UndefOr[Int] = js.undefined,
12+
var maxSendHeaderBlockLength: js.UndefOr[Int] = js.undefined,
13+
var paddingStrategy: js.UndefOr[Int] = js.undefined,
14+
var peerMaxConcurrentStreams: js.UndefOr[Int] = js.undefined,
15+
var selectPadding: js.UndefOr[js.Function2[Int, Int, Int]] = js.undefined,
16+
var settings: js.UndefOr[Http2Settings] = js.undefined,
17+
var Http1IncomingMessage: js.UndefOr[js.ConstructorTag[http.IncomingMessage]] = js.undefined,
18+
var Http1ServerResponse: js.UndefOr[js.ConstructorTag[http.ServerResponse]] = js.undefined,
19+
var Http2ServerRequest: js.UndefOr[js.ConstructorTag[Http2ServerRequest]] = js.undefined,
20+
var Http2ServerResponse: js.UndefOr[js.ConstructorTag[Http2ServerResponse]] = js.undefined,
21+
val allowHalfOpen: js.UndefOr[Boolean] = js.undefined,
22+
val pauseOnConnect: js.UndefOr[Boolean] = js.undefined
23+
) extends js.Object
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
import scala.scalajs.js.annotation.JSImport
5+
6+
@js.native
7+
@JSImport("http2", "Http2ServerRequest")
8+
class Http2ServerRequest extends js.Object {
9+
// TODO:
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.scalajs.nodejs.http2
2+
3+
import scala.scalajs.js
4+
import scala.scalajs.js.annotation.JSImport
5+
6+
@js.native
7+
@JSImport("http2", "Http2ServerResponse")
8+
class Http2ServerResponse extends js.Object {
9+
// TODO:
10+
}

0 commit comments

Comments
 (0)