diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-02-08 00:21:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-08 00:21:43 +0100 |
commit | 161a4fea47d134fa6077910b794883ffb6e9b0c5 (patch) | |
tree | 75695746075b4e19221fa9d2d33f9bb8eb29467f /core/extensions.rs | |
parent | 49af1ab18da02f09e65506c873526c40d005c4ed (diff) |
refactor(core): change SourcePair to ExtensionFileSource (#17686)
Diffstat (limited to 'core/extensions.rs')
-rw-r--r-- | core/extensions.rs | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/core/extensions.rs b/core/extensions.rs index ba7bdb18a..e08e8c566 100644 --- a/core/extensions.rs +++ b/core/extensions.rs @@ -6,7 +6,10 @@ use std::rc::Rc; use std::task::Context; use v8::fast_api::FastFunction; -pub type SourcePair = (String, &'static str); +pub struct ExtensionFileSource { + pub specifier: String, + pub code: &'static str, +} pub type OpFnRef = v8::FunctionCallback; pub type OpMiddlewareFn = dyn Fn(OpDecl) -> OpDecl; pub type OpStateFn = dyn Fn(&mut OpState) -> Result<(), Error>; @@ -37,8 +40,8 @@ impl OpDecl { #[derive(Default)] pub struct Extension { - js_files: Option<Vec<SourcePair>>, - esm_files: Option<Vec<SourcePair>>, + js_files: Option<Vec<ExtensionFileSource>>, + esm_files: Option<Vec<ExtensionFileSource>>, ops: Option<Vec<OpDecl>>, opstate_fn: Option<Box<OpStateFn>>, middleware_fn: Option<Box<OpMiddlewareFn>>, @@ -82,14 +85,14 @@ impl Extension { /// returns JS source code to be loaded into the isolate (either at snapshotting, /// or at startup). as a vector of a tuple of the file name, and the source code. - pub fn get_js_sources(&self) -> &[SourcePair] { + pub fn get_js_sources(&self) -> &[ExtensionFileSource] { match &self.js_files { Some(files) => files, None => &[], } } - pub fn get_esm_sources(&self) -> &[SourcePair] { + pub fn get_esm_sources(&self) -> &[ExtensionFileSource] { match &self.esm_files { Some(files) => files, None => &[], @@ -152,8 +155,8 @@ impl Extension { // Provides a convenient builder pattern to declare Extensions #[derive(Default)] pub struct ExtensionBuilder { - js: Vec<SourcePair>, - esm: Vec<SourcePair>, + js: Vec<ExtensionFileSource>, + esm: Vec<ExtensionFileSource>, ops: Vec<OpDecl>, state: Option<Box<OpStateFn>>, middleware: Option<Box<OpMiddlewareFn>>, @@ -168,26 +171,27 @@ impl ExtensionBuilder { self } - pub fn js( - &mut self, - js_files: Vec<(&'static str, &'static str)>, - ) -> &mut Self { - let js_files = js_files.into_iter().map(|source_pair| { - let name = format!("internal:{}/{}", self.name, source_pair.0); - (name, source_pair.1) - }); + pub fn js(&mut self, js_files: Vec<ExtensionFileSource>) -> &mut Self { + let js_files = + js_files.into_iter().map(|file_source| ExtensionFileSource { + specifier: format!("internal:{}/{}", self.name, file_source.specifier), + code: file_source.code, + }); self.js.extend(js_files); self } - pub fn esm( - &mut self, - esm_files: Vec<(&'static str, &'static str)>, - ) -> &mut Self { - let esm_files = esm_files.into_iter().map(|source_pair| { - let name = format!("internal:{}/{}", self.name, source_pair.0); - (name, source_pair.1) - }); + pub fn esm(&mut self, esm_files: Vec<ExtensionFileSource>) -> &mut Self { + let esm_files = + esm_files + .into_iter() + .map(|file_source| ExtensionFileSource { + specifier: format!( + "internal:{}/{}", + self.name, file_source.specifier + ), + code: file_source.code, + }); self.esm.extend(esm_files); self } @@ -254,10 +258,10 @@ impl ExtensionBuilder { macro_rules! include_js_files { ($($file:literal,)+) => { vec![ - $(( - $file, - include_str!($file), - ),)+ + $($crate::ExtensionFileSource { + specifier: $file.to_string(), + code: include_str!($file), + },)+ ] }; } |