mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
feat(runtime): allow passing extensions via Worker options (#12362)
This commit is contained in:
parent
5f405bf114
commit
6b43e862fd
5 changed files with 12 additions and 3 deletions
|
@ -127,6 +127,7 @@ fn create_web_worker_callback(ps: ProcState) -> Arc<CreateWebWorkerCb> {
|
|||
ts_version: version::TYPESCRIPT.to_string(),
|
||||
unstable: ps.flags.unstable,
|
||||
},
|
||||
extensions: vec![],
|
||||
unsafely_ignore_certificate_errors: ps
|
||||
.flags
|
||||
.unsafely_ignore_certificate_errors
|
||||
|
@ -216,6 +217,7 @@ pub fn create_main_worker(
|
|||
ts_version: version::TYPESCRIPT.to_string(),
|
||||
unstable: ps.flags.unstable,
|
||||
},
|
||||
extensions: vec![],
|
||||
unsafely_ignore_certificate_errors: ps
|
||||
.flags
|
||||
.unsafely_ignore_certificate_errors
|
||||
|
|
|
@ -241,6 +241,7 @@ pub async fn run(
|
|||
ts_version: version::TYPESCRIPT.to_string(),
|
||||
unstable: metadata.unstable,
|
||||
},
|
||||
extensions: vec![],
|
||||
user_agent: version::get_user_agent(),
|
||||
unsafely_ignore_certificate_errors: metadata
|
||||
.unsafely_ignore_certificate_errors,
|
||||
|
|
|
@ -36,6 +36,7 @@ async fn main() -> Result<(), AnyError> {
|
|||
ts_version: "x".to_string(),
|
||||
unstable: false,
|
||||
},
|
||||
extensions: vec![],
|
||||
unsafely_ignore_certificate_errors: None,
|
||||
root_cert_store: None,
|
||||
user_agent: "hello_runtime".to_string(),
|
||||
|
|
|
@ -260,6 +260,7 @@ pub struct WebWorker {
|
|||
|
||||
pub struct WebWorkerOptions {
|
||||
pub bootstrap: BootstrapOptions,
|
||||
pub extensions: Vec<Extension>,
|
||||
pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
|
||||
pub root_cert_store: Option<RootCertStore>,
|
||||
pub user_agent: String,
|
||||
|
@ -297,7 +298,7 @@ impl WebWorker {
|
|||
permissions: Permissions,
|
||||
main_module: ModuleSpecifier,
|
||||
worker_id: WorkerId,
|
||||
options: WebWorkerOptions,
|
||||
mut options: WebWorkerOptions,
|
||||
) -> (Self, SendableWebWorkerHandle) {
|
||||
// Permissions: many ops depend on this
|
||||
let unstable = options.bootstrap.unstable;
|
||||
|
@ -377,6 +378,7 @@ impl WebWorker {
|
|||
// Append exts
|
||||
extensions.extend(runtime_exts);
|
||||
extensions.extend(deno_ns_exts); // May be empty
|
||||
extensions.extend(std::mem::take(&mut options.extensions));
|
||||
|
||||
let mut js_runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(options.module_loader.clone()),
|
||||
|
|
|
@ -44,6 +44,7 @@ pub struct MainWorker {
|
|||
|
||||
pub struct WorkerOptions {
|
||||
pub bootstrap: BootstrapOptions,
|
||||
pub extensions: Vec<Extension>,
|
||||
pub unsafely_ignore_certificate_errors: Option<Vec<String>>,
|
||||
pub root_cert_store: Option<RootCertStore>,
|
||||
pub user_agent: String,
|
||||
|
@ -77,7 +78,7 @@ impl MainWorker {
|
|||
pub fn from_options(
|
||||
main_module: ModuleSpecifier,
|
||||
permissions: Permissions,
|
||||
options: WorkerOptions,
|
||||
mut options: WorkerOptions,
|
||||
) -> Self {
|
||||
// Permissions: many ops depend on this
|
||||
let unstable = options.bootstrap.unstable;
|
||||
|
@ -92,7 +93,7 @@ impl MainWorker {
|
|||
.build();
|
||||
|
||||
// Internal modules
|
||||
let extensions: Vec<Extension> = vec![
|
||||
let mut extensions: Vec<Extension> = vec![
|
||||
// Web APIs
|
||||
deno_webidl::init(),
|
||||
deno_console::init(),
|
||||
|
@ -146,6 +147,7 @@ impl MainWorker {
|
|||
// Permissions ext (worker specific state)
|
||||
perm_ext,
|
||||
];
|
||||
extensions.extend(std::mem::take(&mut options.extensions));
|
||||
|
||||
let mut js_runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(options.module_loader.clone()),
|
||||
|
@ -313,6 +315,7 @@ mod tests {
|
|||
ts_version: "x".to_string(),
|
||||
unstable: false,
|
||||
},
|
||||
extensions: vec![],
|
||||
user_agent: "x".to_string(),
|
||||
unsafely_ignore_certificate_errors: None,
|
||||
root_cert_store: None,
|
||||
|
|
Loading…
Reference in a new issue