diff --git a/cli/build.rs b/cli/build.rs
index edc524bbc4..a54bf962c7 100644
--- a/cli/build.rs
+++ b/cli/build.rs
@@ -8,6 +8,7 @@ use deno_core::serde_json::json;
use deno_core::serde_json::Value;
use deno_core::JsRuntime;
use deno_core::RuntimeOptions;
+use deno_runtime::deno_crypto;
use deno_runtime::deno_fetch;
use deno_runtime::deno_web;
use deno_runtime::deno_websocket;
@@ -62,6 +63,7 @@ fn create_compiler_snapshot(
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());
+ op_crate_libs.insert("deno.crypto", deno_crypto::get_declaration());
// ensure we invalidate the build properly.
for (_, path) in op_crate_libs.iter() {
@@ -262,6 +264,10 @@ fn main() {
"cargo:rustc-env=DENO_WEBSOCKET_LIB_PATH={}",
deno_websocket::get_declaration().display()
);
+ println!(
+ "cargo:rustc-env=DENO_CRYPTO_LIB_PATH={}",
+ deno_crypto::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 9cfe45cfa7..4332b757b1 100644
--- a/cli/dts/lib.deno.shared_globals.d.ts
+++ b/cli/dts/lib.deno.shared_globals.d.ts
@@ -8,6 +8,7 @@
///
///
///
+///
declare namespace WebAssembly {
/**
@@ -343,8 +344,6 @@ interface VoidFunction {
*/
declare function queueMicrotask(func: VoidFunction): void;
-declare var crypto: Crypto;
-
/** Registers an event listener in the global scope, which will be called
* synchronously whenever the event `type` is dispatched.
*
@@ -416,26 +415,6 @@ declare interface Console {
declare var console: Console;
-declare interface Crypto {
- readonly subtle: null;
- getRandomValues<
- T extends
- | Int8Array
- | Int16Array
- | Int32Array
- | Uint8Array
- | Uint16Array
- | Uint32Array
- | Uint8ClampedArray
- | Float32Array
- | Float64Array
- | DataView
- | null,
- >(
- array: T,
- ): T;
-}
-
interface MessageEventInit extends EventInit {
data?: T;
origin?: string;
diff --git a/op_crates/crypto/lib.deno_crypto.d.ts b/op_crates/crypto/lib.deno_crypto.d.ts
new file mode 100644
index 0000000000..a00757e719
--- /dev/null
+++ b/op_crates/crypto/lib.deno_crypto.d.ts
@@ -0,0 +1,26 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+
+///
+///
+
+declare var crypto: Crypto;
+
+declare interface Crypto {
+ readonly subtle: null;
+ getRandomValues<
+ T extends
+ | Int8Array
+ | Int16Array
+ | Int32Array
+ | Uint8Array
+ | Uint16Array
+ | Uint32Array
+ | Uint8ClampedArray
+ | Float32Array
+ | Float64Array
+ | DataView
+ | null,
+ >(
+ array: T,
+ ): T;
+}
diff --git a/op_crates/crypto/lib.rs b/op_crates/crypto/lib.rs
index 61290080d2..b8fe3fefb5 100644
--- a/op_crates/crypto/lib.rs
+++ b/op_crates/crypto/lib.rs
@@ -11,6 +11,7 @@ use deno_core::ZeroCopyBuf;
use rand::rngs::StdRng;
use rand::thread_rng;
use rand::Rng;
+use std::path::PathBuf;
pub use rand; // Re-export rand
@@ -41,3 +42,7 @@ pub fn op_crypto_get_random_values(
Ok(json!({}))
}
+
+pub fn get_declaration() -> PathBuf {
+ PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_crypto.d.ts")
+}