From 8f207c0f3f3a43d77e0c88cfdc840b4b742b9708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 9 Mar 2023 10:56:19 -0400 Subject: refactor: Split extension registration for runtime and snapshotting (#18095) This commit splits "::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 --- ext/webstorage/lib.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'ext/webstorage/lib.rs') diff --git a/ext/webstorage/lib.rs b/ext/webstorage/lib.rs index ca96b01bc..f3caddbaf 100644 --- a/ext/webstorage/lib.rs +++ b/ext/webstorage/lib.rs @@ -9,6 +9,7 @@ use deno_core::error::AnyError; use deno_core::include_js_files; use deno_core::op; use deno_core::Extension; +use deno_core::ExtensionBuilder; use deno_core::OpState; use rusqlite::params; use rusqlite::Connection; @@ -21,9 +22,15 @@ struct OriginStorageDir(PathBuf); const MAX_STORAGE_BYTES: usize = 10 * 1024 * 1024; -pub fn init(origin_storage_dir: Option) -> Extension { +fn ext() -> ExtensionBuilder { Extension::builder_with_deps(env!("CARGO_PKG_NAME"), &["deno_webidl"]) - .esm(include_js_files!("01_webstorage.js",)) +} + +fn ops( + ext: &mut ExtensionBuilder, + origin_storage_dir: Option, +) -> &mut ExtensionBuilder { + ext .ops(vec![ op_webstorage_length::decl(), op_webstorage_key::decl(), @@ -38,9 +45,18 @@ pub fn init(origin_storage_dir: Option) -> Extension { state.put(OriginStorageDir(origin_storage_dir.clone())); } }) +} + +pub fn init_ops_and_esm(origin_storage_dir: Option) -> Extension { + ops(&mut ext(), origin_storage_dir) + .esm(include_js_files!("01_webstorage.js",)) .build() } +pub fn init_ops(origin_storage_dir: Option) -> Extension { + ops(&mut ext(), origin_storage_dir).build() +} + pub fn get_declaration() -> PathBuf { PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("lib.deno_webstorage.d.ts") } -- cgit v1.2.3