refactor: Split extension registration for runtime and snapshotting (#18095)

This commit splits "<ext_name>::init" functions into "init_ops" and
"init_ops_and_esm". That way we don't have to construct list of
ESM sources on each startup if we're running with a snapshot.

In a follow up commit "deno_core" will be changed to not have a split
between "extensions" and "extensions_with_js" - it will be embedders'
responsibility to pass appropriately configured extensions.

Prerequisite for https://github.com/denoland/deno/pull/18080
This commit is contained in:
Bartek Iwańczuk 2023-03-09 10:56:19 -04:00 committed by GitHub
parent 99da8a69e7
commit 8f207c0f3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 1015 additions and 496 deletions

View file

@ -322,36 +322,40 @@ mod ts {
fn create_cli_snapshot(snapshot_path: PathBuf) {
let extensions: Vec<Extension> = vec![
deno_webidl::init(),
deno_console::init(),
deno_url::init(),
deno_webidl::init_esm(),
deno_console::init_esm(),
deno_url::init_ops_and_esm(),
deno_tls::init(),
deno_web::init::<PermissionsContainer>(
deno_web::init_ops_and_esm::<PermissionsContainer>(
deno_web::BlobStore::default(),
Default::default(),
),
deno_fetch::init::<PermissionsContainer>(Default::default()),
deno_cache::init::<SqliteBackedCache>(None),
deno_websocket::init::<PermissionsContainer>("".to_owned(), None, None),
deno_webstorage::init(None),
deno_crypto::init(None),
deno_webgpu::init(false),
deno_broadcast_channel::init(
deno_fetch::init_ops_and_esm::<PermissionsContainer>(Default::default()),
deno_cache::init_ops_and_esm::<SqliteBackedCache>(None),
deno_websocket::init_ops_and_esm::<PermissionsContainer>(
"".to_owned(),
None,
None,
),
deno_webstorage::init_ops_and_esm(None),
deno_crypto::init_ops_and_esm(None),
deno_webgpu::init_ops_and_esm(false),
deno_broadcast_channel::init_ops_and_esm(
deno_broadcast_channel::InMemoryBroadcastChannel::default(),
false, // No --unstable.
),
deno_io::init(Default::default()),
deno_fs::init::<PermissionsContainer>(false),
deno_node::init::<PermissionsContainer>(None), // No --unstable.
deno_io::init_ops_and_esm(Default::default()),
deno_fs::init_ops_and_esm::<PermissionsContainer>(false),
deno_node::init_ops_and_esm::<PermissionsContainer>(None), // No --unstable.
deno_node::init_polyfill_ops_and_esm(),
deno_ffi::init::<PermissionsContainer>(false),
deno_net::init::<PermissionsContainer>(
deno_ffi::init_ops_and_esm::<PermissionsContainer>(false),
deno_net::init_ops_and_esm::<PermissionsContainer>(
None, false, // No --unstable.
None,
),
deno_napi::init::<PermissionsContainer>(),
deno_http::init(),
deno_flash::init::<PermissionsContainer>(false), // No --unstable
deno_http::init_ops_and_esm(),
deno_flash::init_ops_and_esm::<PermissionsContainer>(false), // No --unstable
];
let mut esm_files = include_js_files!(