1pub mod arena;
3mod async_cancel;
4mod async_cell;
5pub mod cppgc;
6pub mod error;
7mod error_codes;
8mod extension_set;
9mod extensions;
10mod external;
11mod fast_string;
12mod feature_checker;
13mod flags;
14mod gotham_state;
15mod inspector;
16mod io;
17mod module_specifier;
18mod modules;
19mod normalize_path;
20mod ops;
21mod ops_builtin;
22mod ops_builtin_types;
23mod ops_builtin_v8;
24mod ops_metrics;
25mod path;
26mod runtime;
27mod source_map;
28mod tasks;
29mod web_timeout;
30
31pub use anyhow;
33pub use deno_unsync as unsync;
34pub use futures;
35pub use parking_lot;
36pub use serde;
37pub use serde_json;
38pub use serde_v8;
39pub use serde_v8::ByteString;
40pub use serde_v8::DetachedBuffer;
41pub use serde_v8::JsBuffer;
42pub use serde_v8::StringOrBuffer;
43pub use serde_v8::ToJsBuffer;
44pub use serde_v8::U16String;
45pub use sourcemap;
46pub use url;
47pub use v8;
48
49pub use deno_ops::op2;
50
51pub use crate::async_cancel::CancelFuture;
52pub use crate::async_cancel::CancelHandle;
53pub use crate::async_cancel::CancelTryFuture;
54pub use crate::async_cancel::Cancelable;
55pub use crate::async_cancel::Canceled;
56pub use crate::async_cancel::TryCancelable;
57pub use crate::async_cell::AsyncMut;
58pub use crate::async_cell::AsyncMutFuture;
59pub use crate::async_cell::AsyncRef;
60pub use crate::async_cell::AsyncRefCell;
61pub use crate::async_cell::AsyncRefFuture;
62pub use crate::async_cell::RcLike;
63pub use crate::async_cell::RcRef;
64pub use crate::error::GetErrorClassFn;
65pub use crate::error::JsErrorCreateFn;
66pub use crate::extensions::Extension;
67pub use crate::extensions::ExtensionFileSource;
68pub use crate::extensions::ExtensionFileSourceCode;
69pub use crate::extensions::Op;
70pub use crate::extensions::OpDecl;
71pub use crate::extensions::OpMiddlewareFn;
72pub use crate::external::ExternalDefinition;
73pub use crate::external::ExternalPointer;
74pub use crate::external::Externalizable;
75pub use crate::fast_string::FastStaticString;
76pub use crate::fast_string::FastString;
77pub use crate::feature_checker::FeatureChecker;
78pub use crate::flags::v8_set_flags;
79pub use crate::inspector::InspectorMsg;
80pub use crate::inspector::InspectorMsgKind;
81pub use crate::inspector::InspectorSessionProxy;
82pub use crate::inspector::JsRuntimeInspector;
83pub use crate::inspector::LocalInspectorSession;
84pub use crate::io::AsyncResult;
85pub use crate::io::BufMutView;
86pub use crate::io::BufMutViewWhole;
87pub use crate::io::BufView;
88pub use crate::io::Resource;
89pub use crate::io::ResourceHandle;
90pub use crate::io::ResourceHandleFd;
91pub use crate::io::ResourceHandleSocket;
92pub use crate::io::ResourceId;
93pub use crate::io::ResourceTable;
94pub use crate::io::WriteOutcome;
95pub use crate::module_specifier::resolve_import;
96pub use crate::module_specifier::resolve_path;
97pub use crate::module_specifier::resolve_url;
98pub use crate::module_specifier::resolve_url_or_path;
99pub use crate::module_specifier::ModuleResolutionError;
100pub use crate::module_specifier::ModuleSpecifier;
101pub use crate::modules::CustomModuleEvaluationKind;
102pub use crate::modules::ExtModuleLoaderCb;
103pub use crate::modules::FsModuleLoader;
104pub use crate::modules::ModuleCodeBytes;
105pub use crate::modules::ModuleCodeString;
106pub use crate::modules::ModuleId;
107pub use crate::modules::ModuleLoadResponse;
108pub use crate::modules::ModuleLoader;
109pub use crate::modules::ModuleName;
110pub use crate::modules::ModuleSource;
111pub use crate::modules::ModuleSourceCode;
112pub use crate::modules::ModuleSourceFuture;
113pub use crate::modules::ModuleType;
114pub use crate::modules::NoopModuleLoader;
115pub use crate::modules::RequestedModuleType;
116pub use crate::modules::ResolutionKind;
117pub use crate::modules::StaticModuleLoader;
118pub use crate::modules::ValidateImportAttributesCb;
119pub use crate::normalize_path::normalize_path;
120pub use crate::ops::OpId;
121pub use crate::ops::OpMetadata;
122pub use crate::ops::OpState;
123pub use crate::ops::PromiseId;
124pub use crate::ops_builtin::op_close;
125pub use crate::ops_builtin::op_print;
126pub use crate::ops_builtin::op_resources;
127pub use crate::ops_builtin::op_void_async;
128pub use crate::ops_builtin::op_void_sync;
129pub use crate::ops_metrics::merge_op_metrics;
130pub use crate::ops_metrics::OpMetricsEvent;
131pub use crate::ops_metrics::OpMetricsFactoryFn;
132pub use crate::ops_metrics::OpMetricsFn;
133pub use crate::ops_metrics::OpMetricsSource;
134pub use crate::ops_metrics::OpMetricsSummary;
135pub use crate::ops_metrics::OpMetricsSummaryTracker;
136pub use crate::path::strip_unc_prefix;
137pub use crate::runtime::stats;
138pub use crate::runtime::CompiledWasmModuleStore;
139pub use crate::runtime::CreateRealmOptions;
140pub use crate::runtime::CrossIsolateStore;
141pub use crate::runtime::JsRuntime;
142pub use crate::runtime::JsRuntimeForSnapshot;
143pub use crate::runtime::PollEventLoopOptions;
144pub use crate::runtime::RuntimeOptions;
145pub use crate::runtime::SharedArrayBufferStore;
146pub use crate::runtime::V8_WRAPPER_OBJECT_INDEX;
147pub use crate::runtime::V8_WRAPPER_TYPE_INDEX;
148pub use crate::source_map::SourceMapData;
149pub use crate::source_map::SourceMapGetter;
150pub use crate::tasks::V8CrossThreadTaskSpawner;
151pub use crate::tasks::V8TaskSpawner;
152
153extern crate self as deno_core;
155
156pub fn v8_version() -> &'static str {
157 v8::V8::get_version()
158}
159
160#[doc(hidden)]
162pub mod _ops {
163 pub use super::error::throw_type_error;
164 pub use super::error_codes::get_error_code;
165 pub use super::extensions::Op;
166 pub use super::extensions::OpDecl;
167 #[cfg(debug_assertions)]
168 pub use super::ops::reentrancy_check;
169 pub use super::ops::OpCtx;
170 pub use super::ops_metrics::dispatch_metrics_async;
171 pub use super::ops_metrics::dispatch_metrics_fast;
172 pub use super::ops_metrics::dispatch_metrics_slow;
173 pub use super::ops_metrics::OpMetricsEvent;
174 pub use super::runtime::ops::*;
175 pub use super::runtime::ops_rust_to_v8::*;
176 pub use super::runtime::V8_WRAPPER_OBJECT_INDEX;
177 pub use super::runtime::V8_WRAPPER_TYPE_INDEX;
178}
179
180pub mod snapshot {
181 pub use crate::runtime::create_snapshot;
182 pub use crate::runtime::get_js_files;
183 pub use crate::runtime::CreateSnapshotOptions;
184 pub use crate::runtime::CreateSnapshotOutput;
185 pub use crate::runtime::FilterFn;
186}
187
188#[macro_export]
193macro_rules! located_script_name {
194 () => {
195 concat!(
196 "[ext:",
197 ::std::file!(),
198 ":",
199 ::std::line!(),
200 ":",
201 ::std::column!(),
202 "]"
203 )
204 };
205}
206
207#[cfg(all(test, not(miri)))]
208mod tests {
209 use std::process::Command;
210 use std::process::Stdio;
211
212 use super::*;
213
214 #[test]
215 fn located_script_name() {
216 let name = located_script_name!();
219 let expected = if cfg!(windows) {
220 "[ext:core\\lib.rs:"
221 } else {
222 "[ext:core/lib.rs:"
223 };
224 assert_eq!(&name[..expected.len()], expected);
225 }
226
227 #[test]
228 fn test_v8_version() {
229 assert!(v8_version().len() > 3);
230 }
231
232 #[test]
234 fn test_rebuild_async_stubs() {
235 if let Err(e) = Command::new("deno")
237 .arg("--version")
238 .stderr(Stdio::null())
239 .stdout(Stdio::null())
240 .status()
241 {
242 eprintln!("Ignoring test because we couldn't find deno: {e:?}");
243 }
244 let status = Command::new("deno")
245 .args(["run", "-A", "rebuild_async_stubs.js", "--check"])
246 .stderr(Stdio::null())
247 .stdout(Stdio::null())
248 .status()
249 .unwrap();
250 assert!(status.success(), "Async stubs were not updated, or 'rebuild_async_stubs.js' failed for some other reason");
251 }
252}