diff options
author | Luca Casonato <lucacasonato@yahoo.com> | 2021-01-06 16:57:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-06 16:57:28 +0100 |
commit | 2e18fcebcc2ee931ee952ac2fe2175d6ec7acf69 (patch) | |
tree | 352e53d98cd46604e7661ba26df51dc9c0498b2a /cli | |
parent | 1959aca2a978642b73ea815b9b89dd3219830cef (diff) |
refactor: move WebSocket API to an op_crate (#9026)
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 2 | ||||
-rw-r--r-- | cli/build.rs | 5 | ||||
-rw-r--r-- | cli/dts/lib.deno.shared_globals.d.ts | 107 | ||||
-rw-r--r-- | cli/main.rs | 3 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 1 | ||||
-rw-r--r-- | cli/tsc.rs | 2 |
6 files changed, 12 insertions, 108 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 7c433e514..99760023a 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -23,6 +23,7 @@ path = "./bench/main.rs" deno_core = { path = "../core", version = "0.75.0" } deno_fetch = { path = "../op_crates/fetch", version = "0.18.0" } deno_web = { path = "../op_crates/web", version = "0.26.0" } +deno_websocket = { path = "../op_crates/websocket", version = "0.1.0" } regex = "1.3.9" serde = { version = "1.0.116", features = ["derive"] } @@ -84,7 +85,6 @@ nix = "0.19.0" chrono = "0.4.15" os_pipe = "0.9.2" test_util = { path = "../test_util" } -tokio-tungstenite = "0.11.0" tower-test = "0.3.0" [target.'cfg(unix)'.dev-dependencies] diff --git a/cli/build.rs b/cli/build.rs index 45221281f..71abfbd83 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -57,6 +57,7 @@ fn create_compiler_snapshot( let mut op_crate_libs = HashMap::new(); op_crate_libs.insert("deno.web", deno_web::get_declaration()); op_crate_libs.insert("deno.fetch", deno_fetch::get_declaration()); + op_crate_libs.insert("deno.websocket", deno_websocket::get_declaration()); // ensure we invalidate the build properly. for (_, path) in op_crate_libs.iter() { @@ -245,6 +246,10 @@ fn main() { "cargo:rustc-env=DENO_FETCH_LIB_PATH={}", deno_fetch::get_declaration().display() ); + println!( + "cargo:rustc-env=DENO_WEBSOCKET_LIB_PATH={}", + deno_websocket::get_declaration().display() + ); println!("cargo:rustc-env=TARGET={}", env::var("TARGET").unwrap()); println!("cargo:rustc-env=PROFILE={}", env::var("PROFILE").unwrap()); diff --git a/cli/dts/lib.deno.shared_globals.d.ts b/cli/dts/lib.deno.shared_globals.d.ts index 433e90113..e4d763ec0 100644 --- a/cli/dts/lib.deno.shared_globals.d.ts +++ b/cli/dts/lib.deno.shared_globals.d.ts @@ -7,6 +7,7 @@ /// <reference lib="esnext" /> /// <reference lib="deno.web" /> /// <reference lib="deno.fetch" /> +/// <reference lib="deno.websocket" /> declare namespace WebAssembly { /** @@ -852,109 +853,3 @@ interface ErrorConstructor { // TODO(nayeemrmn): Support `Error.prepareStackTrace()`. We currently use this // internally in a way that makes it unavailable for users. } - -interface CloseEventInit extends EventInit { - code?: number; - reason?: string; - wasClean?: boolean; -} - -declare class CloseEvent extends Event { - constructor(type: string, eventInitDict?: CloseEventInit); - /** - * Returns the WebSocket connection close code provided by the server. - */ - readonly code: number; - /** - * Returns the WebSocket connection close reason provided by the server. - */ - readonly reason: string; - /** - * Returns true if the connection closed cleanly; false otherwise. - */ - readonly wasClean: boolean; -} - -interface WebSocketEventMap { - close: CloseEvent; - error: Event; - message: MessageEvent; - open: Event; -} - -/** Provides the API for creating and managing a WebSocket connection to a server, as well as for sending and receiving data on the connection. */ -declare class WebSocket extends EventTarget { - constructor(url: string, protocols?: string | string[]); - - static readonly CLOSED: number; - static readonly CLOSING: number; - static readonly CONNECTING: number; - static readonly OPEN: number; - - /** - * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts: - * - * Can be set, to change how binary data is returned. The default is "blob". - */ - binaryType: BinaryType; - /** - * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network. - * - * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.) - */ - readonly bufferedAmount: number; - /** - * Returns the extensions selected by the server, if any. - */ - readonly extensions: string; - onclose: ((this: WebSocket, ev: CloseEvent) => any) | null; - onerror: ((this: WebSocket, ev: Event | ErrorEvent) => any) | null; - onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null; - onopen: ((this: WebSocket, ev: Event) => any) | null; - /** - * Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation. - */ - readonly protocol: string; - /** - * Returns the state of the WebSocket object's connection. It can have the values described below. - */ - readonly readyState: number; - /** - * Returns the URL that was used to establish the WebSocket connection. - */ - readonly url: string; - /** - * Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason. - */ - close(code?: number, reason?: string): void; - /** - * Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView. - */ - send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void; - readonly CLOSED: number; - readonly CLOSING: number; - readonly CONNECTING: number; - readonly OPEN: number; - addEventListener<K extends keyof WebSocketEventMap>( - type: K, - listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, - options?: boolean | AddEventListenerOptions, - ): void; - addEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | AddEventListenerOptions, - ): void; - removeEventListener<K extends keyof WebSocketEventMap>( - type: K, - listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, - options?: boolean | EventListenerOptions, - ): void; - removeEventListener( - type: string, - listener: EventListenerOrEventListenerObject, - options?: boolean | EventListenerOptions, - ): void; -} - -type BinaryType = "arraybuffer" | "blob"; diff --git a/cli/main.rs b/cli/main.rs index 7f6a80f30..b622cccf3 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -275,10 +275,11 @@ fn print_cache_info( fn get_types(unstable: bool) -> String { let mut types = format!( - "{}\n{}\n{}\n{}\n{}", + "{}\n{}\n{}\n{}\n{}\n{}", crate::tsc::DENO_NS_LIB, crate::tsc::DENO_WEB_LIB, crate::tsc::DENO_FETCH_LIB, + crate::tsc::DENO_WEBSOCKET_LIB, crate::tsc::SHARED_GLOBALS_LIB, crate::tsc::WINDOW_LIB, ); diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 624f17df1..b42315e1a 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -4,6 +4,7 @@ use deno_core::futures::prelude::*; use deno_core::serde_json; use deno_core::url; use deno_runtime::deno_fetch::reqwest; +use deno_runtime::deno_websocket::tokio_tungstenite; use std::io::{BufRead, Write}; use std::path::Path; use std::path::PathBuf; diff --git a/cli/tsc.rs b/cli/tsc.rs index 29ea45140..558f93a48 100644 --- a/cli/tsc.rs +++ b/cli/tsc.rs @@ -30,6 +30,8 @@ use std::sync::Mutex; pub static DENO_NS_LIB: &str = include_str!("dts/lib.deno.ns.d.ts"); pub static DENO_WEB_LIB: &str = include_str!(env!("DENO_WEB_LIB_PATH")); pub static DENO_FETCH_LIB: &str = include_str!(env!("DENO_FETCH_LIB_PATH")); +pub static DENO_WEBSOCKET_LIB: &str = + include_str!(env!("DENO_WEBSOCKET_LIB_PATH")); pub static SHARED_GLOBALS_LIB: &str = include_str!("dts/lib.deno.shared_globals.d.ts"); pub static WINDOW_LIB: &str = include_str!("dts/lib.deno.window.d.ts"); |