spikard 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +659 -659
- data/ext/spikard_rb/Cargo.toml +17 -17
- data/ext/spikard_rb/extconf.rb +10 -10
- data/ext/spikard_rb/src/lib.rs +6 -6
- data/lib/spikard/app.rb +386 -386
- data/lib/spikard/background.rb +27 -27
- data/lib/spikard/config.rb +396 -396
- data/lib/spikard/converters.rb +13 -13
- data/lib/spikard/handler_wrapper.rb +113 -113
- data/lib/spikard/provide.rb +214 -214
- data/lib/spikard/response.rb +173 -173
- data/lib/spikard/schema.rb +243 -243
- data/lib/spikard/sse.rb +111 -111
- data/lib/spikard/streaming_response.rb +44 -44
- data/lib/spikard/testing.rb +221 -221
- data/lib/spikard/upload_file.rb +131 -131
- data/lib/spikard/version.rb +5 -5
- data/lib/spikard/websocket.rb +59 -59
- data/lib/spikard.rb +43 -43
- data/sig/spikard.rbs +366 -360
- data/vendor/crates/spikard-core/Cargo.toml +40 -40
- data/vendor/crates/spikard-core/src/bindings/mod.rs +3 -3
- data/vendor/crates/spikard-core/src/bindings/response.rs +133 -133
- data/vendor/crates/spikard-core/src/debug.rs +63 -63
- data/vendor/crates/spikard-core/src/di/container.rs +726 -726
- data/vendor/crates/spikard-core/src/di/dependency.rs +273 -273
- data/vendor/crates/spikard-core/src/di/error.rs +118 -118
- data/vendor/crates/spikard-core/src/di/factory.rs +538 -538
- data/vendor/crates/spikard-core/src/di/graph.rs +545 -545
- data/vendor/crates/spikard-core/src/di/mod.rs +192 -192
- data/vendor/crates/spikard-core/src/di/resolved.rs +411 -411
- data/vendor/crates/spikard-core/src/di/value.rs +283 -283
- data/vendor/crates/spikard-core/src/errors.rs +39 -39
- data/vendor/crates/spikard-core/src/http.rs +153 -153
- data/vendor/crates/spikard-core/src/lib.rs +29 -29
- data/vendor/crates/spikard-core/src/lifecycle.rs +422 -422
- data/vendor/crates/spikard-core/src/parameters.rs +722 -722
- data/vendor/crates/spikard-core/src/problem.rs +310 -310
- data/vendor/crates/spikard-core/src/request_data.rs +189 -189
- data/vendor/crates/spikard-core/src/router.rs +249 -249
- data/vendor/crates/spikard-core/src/schema_registry.rs +183 -183
- data/vendor/crates/spikard-core/src/type_hints.rs +304 -304
- data/vendor/crates/spikard-core/src/validation.rs +699 -699
- data/vendor/crates/spikard-http/Cargo.toml +68 -58
- data/vendor/crates/spikard-http/src/auth.rs +247 -247
- data/vendor/crates/spikard-http/src/background.rs +249 -249
- data/vendor/crates/spikard-http/src/bindings/mod.rs +3 -3
- data/vendor/crates/spikard-http/src/bindings/response.rs +1 -1
- data/vendor/crates/spikard-http/src/body_metadata.rs +8 -8
- data/vendor/crates/spikard-http/src/cors.rs +490 -490
- data/vendor/crates/spikard-http/src/debug.rs +63 -63
- data/vendor/crates/spikard-http/src/di_handler.rs +423 -423
- data/vendor/crates/spikard-http/src/handler_response.rs +190 -190
- data/vendor/crates/spikard-http/src/handler_trait.rs +228 -228
- data/vendor/crates/spikard-http/src/handler_trait_tests.rs +284 -284
- data/vendor/crates/spikard-http/src/lib.rs +529 -529
- data/vendor/crates/spikard-http/src/lifecycle/adapter.rs +149 -149
- data/vendor/crates/spikard-http/src/lifecycle.rs +428 -428
- data/vendor/crates/spikard-http/src/middleware/mod.rs +285 -285
- data/vendor/crates/spikard-http/src/middleware/multipart.rs +86 -86
- data/vendor/crates/spikard-http/src/middleware/urlencoded.rs +147 -147
- data/vendor/crates/spikard-http/src/middleware/validation.rs +287 -287
- data/vendor/crates/spikard-http/src/openapi/mod.rs +309 -309
- data/vendor/crates/spikard-http/src/openapi/parameter_extraction.rs +190 -190
- data/vendor/crates/spikard-http/src/openapi/schema_conversion.rs +308 -308
- data/vendor/crates/spikard-http/src/openapi/spec_generation.rs +195 -195
- data/vendor/crates/spikard-http/src/parameters.rs +1 -1
- data/vendor/crates/spikard-http/src/problem.rs +1 -1
- data/vendor/crates/spikard-http/src/query_parser.rs +369 -369
- data/vendor/crates/spikard-http/src/response.rs +399 -399
- data/vendor/crates/spikard-http/src/router.rs +1 -1
- data/vendor/crates/spikard-http/src/schema_registry.rs +1 -1
- data/vendor/crates/spikard-http/src/server/handler.rs +87 -87
- data/vendor/crates/spikard-http/src/server/lifecycle_execution.rs +98 -98
- data/vendor/crates/spikard-http/src/server/mod.rs +805 -805
- data/vendor/crates/spikard-http/src/server/request_extraction.rs +119 -119
- data/vendor/crates/spikard-http/src/sse.rs +447 -447
- data/vendor/crates/spikard-http/src/testing/form.rs +14 -14
- data/vendor/crates/spikard-http/src/testing/multipart.rs +60 -60
- data/vendor/crates/spikard-http/src/testing/test_client.rs +285 -285
- data/vendor/crates/spikard-http/src/testing.rs +377 -377
- data/vendor/crates/spikard-http/src/type_hints.rs +1 -1
- data/vendor/crates/spikard-http/src/validation.rs +1 -1
- data/vendor/crates/spikard-http/src/websocket.rs +324 -324
- data/vendor/crates/spikard-rb/Cargo.toml +42 -42
- data/vendor/crates/spikard-rb/build.rs +8 -8
- data/vendor/crates/spikard-rb/src/background.rs +63 -63
- data/vendor/crates/spikard-rb/src/config.rs +294 -294
- data/vendor/crates/spikard-rb/src/conversion.rs +453 -453
- data/vendor/crates/spikard-rb/src/di.rs +409 -409
- data/vendor/crates/spikard-rb/src/handler.rs +625 -625
- data/vendor/crates/spikard-rb/src/lib.rs +2771 -2771
- data/vendor/crates/spikard-rb/src/lifecycle.rs +274 -274
- data/vendor/crates/spikard-rb/src/server.rs +283 -283
- data/vendor/crates/spikard-rb/src/sse.rs +231 -231
- data/vendor/crates/spikard-rb/src/test_client.rs +404 -404
- data/vendor/crates/spikard-rb/src/test_sse.rs +143 -143
- data/vendor/crates/spikard-rb/src/test_websocket.rs +221 -221
- data/vendor/crates/spikard-rb/src/websocket.rs +233 -233
- metadata +1 -79
- data/vendor/spikard-core/Cargo.toml +0 -40
- data/vendor/spikard-core/src/bindings/mod.rs +0 -3
- data/vendor/spikard-core/src/bindings/response.rs +0 -133
- data/vendor/spikard-core/src/debug.rs +0 -63
- data/vendor/spikard-core/src/di/container.rs +0 -726
- data/vendor/spikard-core/src/di/dependency.rs +0 -273
- data/vendor/spikard-core/src/di/error.rs +0 -118
- data/vendor/spikard-core/src/di/factory.rs +0 -538
- data/vendor/spikard-core/src/di/graph.rs +0 -545
- data/vendor/spikard-core/src/di/mod.rs +0 -192
- data/vendor/spikard-core/src/di/resolved.rs +0 -411
- data/vendor/spikard-core/src/di/value.rs +0 -283
- data/vendor/spikard-core/src/http.rs +0 -153
- data/vendor/spikard-core/src/lib.rs +0 -28
- data/vendor/spikard-core/src/lifecycle.rs +0 -422
- data/vendor/spikard-core/src/parameters.rs +0 -719
- data/vendor/spikard-core/src/problem.rs +0 -310
- data/vendor/spikard-core/src/request_data.rs +0 -189
- data/vendor/spikard-core/src/router.rs +0 -249
- data/vendor/spikard-core/src/schema_registry.rs +0 -183
- data/vendor/spikard-core/src/type_hints.rs +0 -304
- data/vendor/spikard-core/src/validation.rs +0 -699
- data/vendor/spikard-http/Cargo.toml +0 -58
- data/vendor/spikard-http/src/auth.rs +0 -247
- data/vendor/spikard-http/src/background.rs +0 -249
- data/vendor/spikard-http/src/bindings/mod.rs +0 -3
- data/vendor/spikard-http/src/bindings/response.rs +0 -1
- data/vendor/spikard-http/src/body_metadata.rs +0 -8
- data/vendor/spikard-http/src/cors.rs +0 -490
- data/vendor/spikard-http/src/debug.rs +0 -63
- data/vendor/spikard-http/src/di_handler.rs +0 -423
- data/vendor/spikard-http/src/handler_response.rs +0 -190
- data/vendor/spikard-http/src/handler_trait.rs +0 -228
- data/vendor/spikard-http/src/handler_trait_tests.rs +0 -284
- data/vendor/spikard-http/src/lib.rs +0 -529
- data/vendor/spikard-http/src/lifecycle/adapter.rs +0 -149
- data/vendor/spikard-http/src/lifecycle.rs +0 -428
- data/vendor/spikard-http/src/middleware/mod.rs +0 -285
- data/vendor/spikard-http/src/middleware/multipart.rs +0 -86
- data/vendor/spikard-http/src/middleware/urlencoded.rs +0 -147
- data/vendor/spikard-http/src/middleware/validation.rs +0 -287
- data/vendor/spikard-http/src/openapi/mod.rs +0 -309
- data/vendor/spikard-http/src/openapi/parameter_extraction.rs +0 -190
- data/vendor/spikard-http/src/openapi/schema_conversion.rs +0 -308
- data/vendor/spikard-http/src/openapi/spec_generation.rs +0 -195
- data/vendor/spikard-http/src/parameters.rs +0 -1
- data/vendor/spikard-http/src/problem.rs +0 -1
- data/vendor/spikard-http/src/query_parser.rs +0 -369
- data/vendor/spikard-http/src/response.rs +0 -399
- data/vendor/spikard-http/src/router.rs +0 -1
- data/vendor/spikard-http/src/schema_registry.rs +0 -1
- data/vendor/spikard-http/src/server/handler.rs +0 -80
- data/vendor/spikard-http/src/server/lifecycle_execution.rs +0 -98
- data/vendor/spikard-http/src/server/mod.rs +0 -805
- data/vendor/spikard-http/src/server/request_extraction.rs +0 -119
- data/vendor/spikard-http/src/sse.rs +0 -447
- data/vendor/spikard-http/src/testing/form.rs +0 -14
- data/vendor/spikard-http/src/testing/multipart.rs +0 -60
- data/vendor/spikard-http/src/testing/test_client.rs +0 -285
- data/vendor/spikard-http/src/testing.rs +0 -377
- data/vendor/spikard-http/src/type_hints.rs +0 -1
- data/vendor/spikard-http/src/validation.rs +0 -1
- data/vendor/spikard-http/src/websocket.rs +0 -324
- data/vendor/spikard-rb/Cargo.toml +0 -42
- data/vendor/spikard-rb/build.rs +0 -8
- data/vendor/spikard-rb/src/background.rs +0 -63
- data/vendor/spikard-rb/src/config.rs +0 -294
- data/vendor/spikard-rb/src/conversion.rs +0 -392
- data/vendor/spikard-rb/src/di.rs +0 -409
- data/vendor/spikard-rb/src/handler.rs +0 -534
- data/vendor/spikard-rb/src/lib.rs +0 -2020
- data/vendor/spikard-rb/src/lifecycle.rs +0 -267
- data/vendor/spikard-rb/src/server.rs +0 -283
- data/vendor/spikard-rb/src/sse.rs +0 -231
- data/vendor/spikard-rb/src/test_client.rs +0 -404
- data/vendor/spikard-rb/src/test_sse.rs +0 -143
- data/vendor/spikard-rb/src/test_websocket.rs +0 -221
- data/vendor/spikard-rb/src/websocket.rs +0 -233
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
//! Dependency injection error types
|
|
2
|
-
//!
|
|
3
|
-
//! This module defines all error types that can occur during dependency registration
|
|
4
|
-
//! and resolution in the DI container.
|
|
5
|
-
|
|
6
|
-
/// Errors that can occur during dependency injection operations
|
|
7
|
-
///
|
|
8
|
-
/// # Examples
|
|
9
|
-
///
|
|
10
|
-
/// ```ignore
|
|
11
|
-
/// use spikard_core::di::DependencyError;
|
|
12
|
-
///
|
|
13
|
-
/// let error = DependencyError::NotFound {
|
|
14
|
-
/// key: "database".to_string(),
|
|
15
|
-
/// };
|
|
16
|
-
/// assert_eq!(error.to_string(), "Dependency not found: database");
|
|
17
|
-
/// ```
|
|
18
|
-
#[derive(thiserror::Error, Debug)]
|
|
19
|
-
pub enum DependencyError {
|
|
20
|
-
/// A circular dependency was detected during registration or resolution
|
|
21
|
-
///
|
|
22
|
-
/// Contains the cycle as a vector of dependency keys in the order they were encountered.
|
|
23
|
-
///
|
|
24
|
-
/// # Example
|
|
25
|
-
///
|
|
26
|
-
/// ```ignore
|
|
27
|
-
/// use spikard_core::di::DependencyError;
|
|
28
|
-
///
|
|
29
|
-
/// let error = DependencyError::CircularDependency {
|
|
30
|
-
/// cycle: vec!["A".to_string(), "B".to_string(), "A".to_string()],
|
|
31
|
-
/// };
|
|
32
|
-
/// println!("{}", error); // "Circular dependency detected: ["A", "B", "A"]"
|
|
33
|
-
/// ```
|
|
34
|
-
#[error("Circular dependency detected: {cycle:?}")]
|
|
35
|
-
CircularDependency {
|
|
36
|
-
/// The cycle of dependencies (e.g., ["A", "B", "C", "A"])
|
|
37
|
-
cycle: Vec<String>,
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
/// A requested dependency was not found in the container
|
|
41
|
-
///
|
|
42
|
-
/// # Example
|
|
43
|
-
///
|
|
44
|
-
/// ```ignore
|
|
45
|
-
/// use spikard_core::di::DependencyError;
|
|
46
|
-
///
|
|
47
|
-
/// let error = DependencyError::NotFound {
|
|
48
|
-
/// key: "cache".to_string(),
|
|
49
|
-
/// };
|
|
50
|
-
/// assert!(error.to_string().contains("cache"));
|
|
51
|
-
/// ```
|
|
52
|
-
#[error("Dependency not found: {key}")]
|
|
53
|
-
NotFound {
|
|
54
|
-
/// The key of the missing dependency
|
|
55
|
-
key: String,
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
/// Type mismatch when attempting to downcast a dependency to a concrete type
|
|
59
|
-
///
|
|
60
|
-
/// This occurs when calling `ResolvedDependencies::get<T>()` with the wrong type.
|
|
61
|
-
///
|
|
62
|
-
/// # Example
|
|
63
|
-
///
|
|
64
|
-
/// ```ignore
|
|
65
|
-
/// use spikard_core::di::DependencyError;
|
|
66
|
-
///
|
|
67
|
-
/// let error = DependencyError::TypeMismatch {
|
|
68
|
-
/// key: "config".to_string(),
|
|
69
|
-
/// };
|
|
70
|
-
/// println!("{}", error); // "Type mismatch for dependency: config"
|
|
71
|
-
/// ```
|
|
72
|
-
#[error("Type mismatch for dependency: {key}")]
|
|
73
|
-
TypeMismatch {
|
|
74
|
-
/// The key of the dependency with the type mismatch
|
|
75
|
-
key: String,
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
/// A dependency failed to resolve
|
|
79
|
-
///
|
|
80
|
-
/// This is a catch-all for any errors that occur during the resolution process,
|
|
81
|
-
/// such as factory function failures or async resolution errors.
|
|
82
|
-
///
|
|
83
|
-
/// # Example
|
|
84
|
-
///
|
|
85
|
-
/// ```ignore
|
|
86
|
-
/// use spikard_core::di::DependencyError;
|
|
87
|
-
///
|
|
88
|
-
/// let error = DependencyError::ResolutionFailed {
|
|
89
|
-
/// message: "Database connection failed".to_string(),
|
|
90
|
-
/// };
|
|
91
|
-
/// assert!(error.to_string().contains("Database connection"));
|
|
92
|
-
/// ```
|
|
93
|
-
#[error("Resolution failed: {message}")]
|
|
94
|
-
ResolutionFailed {
|
|
95
|
-
/// Description of the resolution failure
|
|
96
|
-
message: String,
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
/// A duplicate dependency key was registered
|
|
100
|
-
///
|
|
101
|
-
/// The DI container does not allow multiple dependencies with the same key.
|
|
102
|
-
///
|
|
103
|
-
/// # Example
|
|
104
|
-
///
|
|
105
|
-
/// ```ignore
|
|
106
|
-
/// use spikard_core::di::DependencyError;
|
|
107
|
-
///
|
|
108
|
-
/// let error = DependencyError::DuplicateKey {
|
|
109
|
-
/// key: "logger".to_string(),
|
|
110
|
-
/// };
|
|
111
|
-
/// println!("{}", error); // "Duplicate dependency key: logger"
|
|
112
|
-
/// ```
|
|
113
|
-
#[error("Duplicate dependency key: {key}")]
|
|
114
|
-
DuplicateKey {
|
|
115
|
-
/// The duplicate key
|
|
116
|
-
key: String,
|
|
117
|
-
},
|
|
118
|
-
}
|
|
1
|
+
//! Dependency injection error types
|
|
2
|
+
//!
|
|
3
|
+
//! This module defines all error types that can occur during dependency registration
|
|
4
|
+
//! and resolution in the DI container.
|
|
5
|
+
|
|
6
|
+
/// Errors that can occur during dependency injection operations
|
|
7
|
+
///
|
|
8
|
+
/// # Examples
|
|
9
|
+
///
|
|
10
|
+
/// ```ignore
|
|
11
|
+
/// use spikard_core::di::DependencyError;
|
|
12
|
+
///
|
|
13
|
+
/// let error = DependencyError::NotFound {
|
|
14
|
+
/// key: "database".to_string(),
|
|
15
|
+
/// };
|
|
16
|
+
/// assert_eq!(error.to_string(), "Dependency not found: database");
|
|
17
|
+
/// ```
|
|
18
|
+
#[derive(thiserror::Error, Debug)]
|
|
19
|
+
pub enum DependencyError {
|
|
20
|
+
/// A circular dependency was detected during registration or resolution
|
|
21
|
+
///
|
|
22
|
+
/// Contains the cycle as a vector of dependency keys in the order they were encountered.
|
|
23
|
+
///
|
|
24
|
+
/// # Example
|
|
25
|
+
///
|
|
26
|
+
/// ```ignore
|
|
27
|
+
/// use spikard_core::di::DependencyError;
|
|
28
|
+
///
|
|
29
|
+
/// let error = DependencyError::CircularDependency {
|
|
30
|
+
/// cycle: vec!["A".to_string(), "B".to_string(), "A".to_string()],
|
|
31
|
+
/// };
|
|
32
|
+
/// println!("{}", error); // "Circular dependency detected: ["A", "B", "A"]"
|
|
33
|
+
/// ```
|
|
34
|
+
#[error("Circular dependency detected: {cycle:?}")]
|
|
35
|
+
CircularDependency {
|
|
36
|
+
/// The cycle of dependencies (e.g., ["A", "B", "C", "A"])
|
|
37
|
+
cycle: Vec<String>,
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
/// A requested dependency was not found in the container
|
|
41
|
+
///
|
|
42
|
+
/// # Example
|
|
43
|
+
///
|
|
44
|
+
/// ```ignore
|
|
45
|
+
/// use spikard_core::di::DependencyError;
|
|
46
|
+
///
|
|
47
|
+
/// let error = DependencyError::NotFound {
|
|
48
|
+
/// key: "cache".to_string(),
|
|
49
|
+
/// };
|
|
50
|
+
/// assert!(error.to_string().contains("cache"));
|
|
51
|
+
/// ```
|
|
52
|
+
#[error("Dependency not found: {key}")]
|
|
53
|
+
NotFound {
|
|
54
|
+
/// The key of the missing dependency
|
|
55
|
+
key: String,
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
/// Type mismatch when attempting to downcast a dependency to a concrete type
|
|
59
|
+
///
|
|
60
|
+
/// This occurs when calling `ResolvedDependencies::get<T>()` with the wrong type.
|
|
61
|
+
///
|
|
62
|
+
/// # Example
|
|
63
|
+
///
|
|
64
|
+
/// ```ignore
|
|
65
|
+
/// use spikard_core::di::DependencyError;
|
|
66
|
+
///
|
|
67
|
+
/// let error = DependencyError::TypeMismatch {
|
|
68
|
+
/// key: "config".to_string(),
|
|
69
|
+
/// };
|
|
70
|
+
/// println!("{}", error); // "Type mismatch for dependency: config"
|
|
71
|
+
/// ```
|
|
72
|
+
#[error("Type mismatch for dependency: {key}")]
|
|
73
|
+
TypeMismatch {
|
|
74
|
+
/// The key of the dependency with the type mismatch
|
|
75
|
+
key: String,
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
/// A dependency failed to resolve
|
|
79
|
+
///
|
|
80
|
+
/// This is a catch-all for any errors that occur during the resolution process,
|
|
81
|
+
/// such as factory function failures or async resolution errors.
|
|
82
|
+
///
|
|
83
|
+
/// # Example
|
|
84
|
+
///
|
|
85
|
+
/// ```ignore
|
|
86
|
+
/// use spikard_core::di::DependencyError;
|
|
87
|
+
///
|
|
88
|
+
/// let error = DependencyError::ResolutionFailed {
|
|
89
|
+
/// message: "Database connection failed".to_string(),
|
|
90
|
+
/// };
|
|
91
|
+
/// assert!(error.to_string().contains("Database connection"));
|
|
92
|
+
/// ```
|
|
93
|
+
#[error("Resolution failed: {message}")]
|
|
94
|
+
ResolutionFailed {
|
|
95
|
+
/// Description of the resolution failure
|
|
96
|
+
message: String,
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
/// A duplicate dependency key was registered
|
|
100
|
+
///
|
|
101
|
+
/// The DI container does not allow multiple dependencies with the same key.
|
|
102
|
+
///
|
|
103
|
+
/// # Example
|
|
104
|
+
///
|
|
105
|
+
/// ```ignore
|
|
106
|
+
/// use spikard_core::di::DependencyError;
|
|
107
|
+
///
|
|
108
|
+
/// let error = DependencyError::DuplicateKey {
|
|
109
|
+
/// key: "logger".to_string(),
|
|
110
|
+
/// };
|
|
111
|
+
/// println!("{}", error); // "Duplicate dependency key: logger"
|
|
112
|
+
/// ```
|
|
113
|
+
#[error("Duplicate dependency key: {key}")]
|
|
114
|
+
DuplicateKey {
|
|
115
|
+
/// The duplicate key
|
|
116
|
+
key: String,
|
|
117
|
+
},
|
|
118
|
+
}
|