diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6180abd4..07af7b27 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,16 @@ updates: # kodiak `merge.automerge_label` - "automerge" + - package-ecosystem: npm + directory: "/flipt-client-browser" + schedule: + interval: weekly + open-pull-requests-limit: 5 + labels: + - "dependencies" + # kodiak `merge.automerge_label` + - "automerge" + - package-ecosystem: npm directory: "/flipt-client-node" schedule: @@ -61,7 +71,7 @@ updates: - "automerge" - package-ecosystem: "cargo" - directory: "/flipt-client-browser" + directory: "/flipt-engine-wasm" schedule: interval: "weekly" open-pull-requests-limit: 5 diff --git a/flipt-engine-ffi/Cargo.toml b/flipt-engine-ffi/Cargo.toml index 37340735..676309a5 100644 --- a/flipt-engine-ffi/Cargo.toml +++ b/flipt-engine-ffi/Cargo.toml @@ -15,6 +15,7 @@ reqwest = { version = "0.12.2", features = ["json", "blocking"] } tokio = { version = "1.33.0", features = ["full"] } futures = "0.3" openssl = { version = "0.10", features = ["vendored"] } +thiserror = "1.0.63" [dependencies.flipt-evaluation] path = "../flipt-evaluation" diff --git a/flipt-engine-ffi/examples/evaluation.rs b/flipt-engine-ffi/examples/evaluation.rs index fe80127a..86971703 100644 --- a/flipt-engine-ffi/examples/evaluation.rs +++ b/flipt-engine-ffi/examples/evaluation.rs @@ -2,7 +2,7 @@ use fliptengine::{ evaluator::Evaluator, - parser::http::{Authentication, HTTPParserBuilder}, + http::{Authentication, HTTPParserBuilder}, }; use fliptevaluation::EvaluationRequest; use std::collections::HashMap; diff --git a/flipt-engine-ffi/src/evaluator/mod.rs b/flipt-engine-ffi/src/evaluator.rs similarity index 97% rename from flipt-engine-ffi/src/evaluator/mod.rs rename to flipt-engine-ffi/src/evaluator.rs index 0244cfea..171fbdfa 100644 --- a/flipt-engine-ffi/src/evaluator/mod.rs +++ b/flipt-engine-ffi/src/evaluator.rs @@ -3,7 +3,7 @@ use std::sync::{Arc, RwLock}; use fliptevaluation::{ batch_evaluation, boolean_evaluation, error::Error, - models::{flipt, source::Document}, + models::{flipt, source}, parser::Parser, store::{Snapshot, Store}, variant_evaluation, BatchEvaluationResponse, BooleanEvaluationResponse, EvaluationRequest, @@ -27,7 +27,7 @@ where P: Parser + Send, { pub fn new_snapshot_evaluator(namespace: &str, parser: P) -> Result { - let snap = Snapshot::build(namespace, Document::default())?; + let snap = Snapshot::build(namespace, source::Document::default())?; let mut e = Evaluator::new(namespace, parser, snap); e.replace_snapshot(); Ok(e) @@ -190,7 +190,7 @@ mod tests { let mut parser = MockParser::new(); parser .expect_parse() - .returning(|_| Ok(Some(Document::default()))); + .returning(|_| Ok(Some(source::Document::default()))); let evaluator = Evaluator::new_snapshot_evaluator("namespace", parser).expect("expect valid evaluator"); @@ -242,7 +242,7 @@ mod tests { let mut parser = MockParser::new(); parser .expect_parse() - .returning(|_| Ok(Some(Document::default()))); + .returning(|_| Ok(Some(source::Document::default()))); let mut evaluator = Evaluator::new_snapshot_evaluator("namespace", parser).expect("expect valid evaluator"); evaluator.replace_store(Snapshot::empty("other"), None); diff --git a/flipt-engine-ffi/src/parser/http.rs b/flipt-engine-ffi/src/http.rs similarity index 99% rename from flipt-engine-ffi/src/parser/http.rs rename to flipt-engine-ffi/src/http.rs index c6865a1e..01ff06c9 100644 --- a/flipt-engine-ffi/src/parser/http.rs +++ b/flipt-engine-ffi/src/http.rs @@ -186,8 +186,8 @@ impl Parser for HTTPParser { #[cfg(test)] mod tests { - use crate::parser::http::Authentication; - use crate::parser::http::HTTPParserBuilder; + use crate::http::Authentication; + use crate::http::HTTPParserBuilder; use fliptevaluation::parser::Parser; #[test] diff --git a/flipt-engine-ffi/src/lib.rs b/flipt-engine-ffi/src/lib.rs index 4cd4f327..975311e1 100644 --- a/flipt-engine-ffi/src/lib.rs +++ b/flipt-engine-ffi/src/lib.rs @@ -1,8 +1,8 @@ pub mod evaluator; -pub mod parser; +pub mod http; use evaluator::Evaluator; -use parser::http::{Authentication, HTTPParser, HTTPParserBuilder}; +use http::{Authentication, HTTPParser, HTTPParserBuilder}; use fliptevaluation::error::Error; use fliptevaluation::models::flipt; @@ -18,6 +18,7 @@ use std::collections::HashMap; use std::ffi::{CStr, CString}; use std::os::raw::c_char; use std::sync::{Arc, Mutex}; +use thiserror::Error; #[derive(Deserialize)] struct FFIEvaluationRequest { @@ -44,6 +45,12 @@ enum Status { Failure, } +#[derive(Error, Debug, Clone)] +enum FFIError { + #[error("error engine null pointer")] + NullPointer, +} + impl From> for FFIResponse where T: Serialize, @@ -159,9 +166,9 @@ impl Engine { /// /// This function should not be called unless an Engine is initiated. It provides a helper /// utility to retrieve an Engine instance for evaluation use. -unsafe fn get_engine<'a>(engine_ptr: *mut c_void) -> Result<&'a mut Engine, Error> { +unsafe fn get_engine<'a>(engine_ptr: *mut c_void) -> Result<&'a mut Engine, FFIError> { if engine_ptr.is_null() { - Err(Error::NullPointer) + Err(FFIError::NullPointer) } else { Ok(unsafe { &mut *(engine_ptr as *mut Engine) }) } diff --git a/flipt-engine-ffi/src/parser/mod.rs b/flipt-engine-ffi/src/parser/mod.rs deleted file mode 100644 index 3883215f..00000000 --- a/flipt-engine-ffi/src/parser/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod http; diff --git a/flipt-evaluation/src/error/mod.rs b/flipt-evaluation/src/error.rs similarity index 84% rename from flipt-evaluation/src/error/mod.rs rename to flipt-evaluation/src/error.rs index a6658c3d..082b001d 100644 --- a/flipt-evaluation/src/error/mod.rs +++ b/flipt-evaluation/src/error.rs @@ -2,8 +2,6 @@ use thiserror::Error; #[derive(Error, Debug, Clone)] pub enum Error { - #[error("error engine null pointer")] - NullPointer, #[error("error parsing json: {0}")] InvalidJSON(String), #[error("invalid request: {0}")] diff --git a/flipt-evaluation/src/parser/mod.rs b/flipt-evaluation/src/parser.rs similarity index 100% rename from flipt-evaluation/src/parser/mod.rs rename to flipt-evaluation/src/parser.rs diff --git a/flipt-evaluation/src/store/mod.rs b/flipt-evaluation/src/store.rs similarity index 100% rename from flipt-evaluation/src/store/mod.rs rename to flipt-evaluation/src/store.rs