Skip to content

Commit

Permalink
fix: separate parsing of requirejs-config.js to enable use in wasm -
Browse files Browse the repository at this point in the history
…fixes #38
  • Loading branch information
shakyShane committed Oct 28, 2018
1 parent 0a4a326 commit 27c59d0
Show file tree
Hide file tree
Showing 20 changed files with 206 additions and 49 deletions.
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ clap = "2.32.0"
http = "0.1.10"

serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
serde_yaml = "0.8"

serde_derive = "1.0"
serde_json = "1.0"
ratel = "0.7.0"

tempdir = "0.3.7"
reqwest = "0.9.2"
rjs = { path = "rjs-parse" }
4 changes: 4 additions & 0 deletions rjs-parse/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/target
**/*.rs.bk
.idea
node_modules
91 changes: 91 additions & 0 deletions rjs-parse/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions rjs-parse/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "rjs"
version = "0.1.0"
authors = ["Shane Osbourne <shane.osbourne8@gmail.com>"]
edition = "2018"

[dependencies]
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
ratel = "0.7.0"

[lib]
name = "rjs"
path = "src/lib.rs"
58 changes: 38 additions & 20 deletions src/lib/presets/m2/requirejs_config.rs → rjs-parse/src/config.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
use from_file::FromFile;
use presets::m2::bundle_config::Module;
use presets::m2::module_meta_data::ModuleData;
use presets::m2::parse::OutputError;
use presets::m2::parse::ParsedConfig;
use serde_json;
use std::collections::HashMap;
use std::sync::{Arc, Mutex};
use crate::parse::OutputError;
use crate::parse::ParsedConfig;

type ModuleId = String;

Expand All @@ -20,6 +16,14 @@ pub struct RequireJsClientConfig {
pub paths: HashMap<String, String>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Module {
pub name: String,
pub include: Vec<String>,
pub exclude: Vec<String>,
pub create: bool,
}

impl RequireJsClientConfig {
pub fn from_generated_string(
input: impl Into<String>,
Expand All @@ -30,6 +34,12 @@ impl RequireJsClientConfig {
serde_json::from_value(as_serde).map_err(|_e| OutputError::Conversion)?;
Ok(as_rjs)
}
pub fn to_string(&self) -> Result<String, String> {
match serde_json::to_string_pretty(&self) {
Ok(s) => Ok(s),
Err(e) => Err(e.to_string())
}
}
pub fn update_in_place(
input: impl Into<String>,
item: Arc<Mutex<RequireJsClientConfig>>,
Expand Down Expand Up @@ -88,32 +98,42 @@ pub struct RequireJsBuildConfig {
}

impl RequireJsBuildConfig {
pub fn from_generated_string(
input: impl Into<String>,
) -> Result<RequireJsBuildConfig, OutputError> {
let output = ParsedConfig::from_str(input)?;
let as_serde = serde_json::to_value(&output).map_err(|_e| OutputError::Serialize)?;
let mut as_rjs: RequireJsBuildConfig = serde_json::from_value(as_serde).map_err(|_e| OutputError::Conversion)?;
as_rjs.paths = RequireJsBuildConfig::strip_paths(&as_rjs.paths);
as_rjs.modules = Some(vec![Module {
name: "requirejs/require".into(),
include: vec![],
exclude: vec![],
create: false,
}]);
Ok(as_rjs)
}
pub fn strip_paths(paths: &HashMap<String, String>) -> HashMap<String, String> {
let mut hm: HashMap<String, String> = HashMap::new();

for (key, value) in paths.iter() {
if value.starts_with("http://")
|| value.starts_with("https://")
|| value.starts_with("//")
{
hm.insert(key.clone(), "empty:".to_string());
} else {
{
hm.insert(key.clone(), "empty:".to_string());
} else {
hm.insert(key.clone(), value.clone());
}
}

hm
}
pub fn drop_blacklisted(modules: &Vec<ModuleData>, blacklist: &Vec<String>) -> Vec<ModuleData> {
let mut output = vec![];

for m in modules.iter() {
if !blacklist.contains(&m.id) {
output.push(m.clone());
}
pub fn to_string(&self) -> Result<String, String> {
match serde_json::to_string_pretty(&self) {
Ok(s) => Ok(s),
Err(e) => Err(e.to_string())
}

output
}
}

Expand Down Expand Up @@ -148,8 +168,6 @@ impl Default for RequireJsBuildConfig {
}
}

impl FromFile for RequireJsClientConfig {}

impl RequireJsClientConfig {
pub fn mixins(val: &serde_json::Value) -> Vec<String> {
match *val {
Expand Down
15 changes: 15 additions & 0 deletions rjs-parse/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
extern crate ratel;
extern crate serde;

#[macro_use]
extern crate serde_derive;

#[macro_use]
extern crate serde_json;

pub mod parse;
pub mod config;

pub use crate::config::RequireJsClientConfig;
pub use crate::config::RequireJsBuildConfig;
pub use crate::config::Module;
2 changes: 1 addition & 1 deletion src/lib/presets/m2/parse.rs → rjs-parse/src/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ fn filter_items(x: &ObjectMember, name: &str) -> bool {
#[cfg(test)]
mod tests {
use super::*;
use presets::m2::requirejs_config::RequireJsClientConfig;
use crate::RequireJsClientConfig;

#[test]
fn test_parse_all() {
Expand Down
2 changes: 1 addition & 1 deletion src/lib/app_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ use config::ProgramConfig;
use options::ProgramOptions;
use preset::RewriteFns;
use presets::m2::module_meta_data::ModuleData;
use presets::m2::requirejs_config::RequireJsClientConfig;
use std::fmt;
use std::sync::{Arc, Mutex};
use rjs::RequireJsClientConfig;

pub struct AppState {
pub program_config: ProgramConfig,
Expand Down
2 changes: 2 additions & 0 deletions src/lib/bs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ extern crate serde_derive;
extern crate serde_json;
extern crate tempdir;

extern crate rjs;

pub mod app_state;
pub mod config;
pub mod from_file;
Expand Down
13 changes: 0 additions & 13 deletions src/lib/presets/m2/bundle_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,3 @@ impl<'a> Into<BundleConfig> for &'a str {
items
}
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Outgoing {
pub bundles: Vec<Module>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Module {
pub name: String,
pub include: Vec<String>,
pub exclude: Vec<String>,
pub create: bool,
}
3 changes: 2 additions & 1 deletion src/lib/presets/m2/config_gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@
extern crate serde_json;

use from_file::FromFile;
use presets::m2::bundle_config::{BundleConfig, ConfigItem, Module};
use presets::m2::bundle_config::{BundleConfig, ConfigItem};
use presets::m2::module_meta_data::ModuleData;
use serde_json::Error;
use std::collections::HashMap;
use std::path::PathBuf;
use std::str::FromStr;
use rjs::Module;

pub type Items = Vec<ModuleData>;

Expand Down
2 changes: 1 addition & 1 deletion src/lib/presets/m2/handlers/config_capture.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use actix_web::HttpRequest;
use app_state::AppState;
use presets::m2::preset_m2::FutResp;
use presets::m2::requirejs_config::RequireJsClientConfig;
use proxy_utils::apply_to_proxy_body;
use rjs::RequireJsClientConfig;

///
/// This handler will record the incoming string from the Magento-generated
Expand Down
2 changes: 1 addition & 1 deletion src/lib/presets/m2/handlers/config_post.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ use actix_web::{HttpRequest, HttpResponse};
use app_state::AppState;
use futures::{Future, Stream};
use presets::m2::preset_m2::FutResp;
use presets::m2::requirejs_config::RequireJsClientConfig;
use std;
use rjs::RequireJsClientConfig;

///
/// This handler accepts the incoming RequireJS merged
Expand Down
2 changes: 1 addition & 1 deletion src/lib/presets/m2/handlers/loaders.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use actix_web::HttpRequest;
use actix_web::HttpResponse;
use app_state::AppState;

use presets::m2::requirejs_config::RequireJsClientConfig;
use presets::m2::state::gather_state;
use rjs::RequireJsClientConfig;

///
/// This handler will serve a plain text string (should be JS?)
Expand Down
2 changes: 0 additions & 2 deletions src/lib/presets/m2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ pub mod config_gen;
pub mod handlers;
pub mod module_meta_data;
pub mod opts;
pub mod parse;
pub mod preset_m2;
pub mod replace_cookie_domain;
pub mod requirejs_config;
pub mod seed;
pub mod state;
2 changes: 1 addition & 1 deletion src/lib/presets/m2/seed.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use from_file::FromFile;
use presets::m2::module_meta_data::ModuleData;
use presets::m2::requirejs_config::RequireJsClientConfig;
use rjs::RequireJsClientConfig;

#[derive(Serialize, Deserialize, Default)]
pub struct SeedData {
Expand Down

0 comments on commit 27c59d0

Please sign in to comment.