spikard 0.15.6.pre.rc.21 → 0.16.0.pre.rc.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00ccaba15c8f0e48eb05d1a6b39d7604557e42f7a8320522f9486593861ce2f2
4
- data.tar.gz: ade154388148527917d0a47f7443ed23b404dd51c79463c7b0c7674d05155568
3
+ metadata.gz: 9f3ae988335cf6e0736d458487cd59591cdd323f570b0422292bb0e618536812
4
+ data.tar.gz: 3b3ecc8938f95baa81f5fa5d28dd3ae084f744375622750c0dea5f73cfa66abc
5
5
  SHA512:
6
- metadata.gz: cafdd92912932f93b0475b911c6ca2900e06a69f28233bdcb8e26bd0bd337420c38808731ada8723fd77d022eb132a34c36eb0885da2dfd549166e8160672e80
7
- data.tar.gz: 4ba962cf2bdcf6e6358bfcfb727af07f138d5999843dfecafdab82ffc5f8eb8ec7ca87a11263b842ccbad4cd5b8e03722ca7a1c2cdb9697277dc991440d8ccc8
6
+ metadata.gz: 184fb1d807ed4f38236c2321aacf187230512e115248610b8bcec31ca8a704adf4405d7417e301a13072443f0a761813a4dde9189b4761a961ac3ca4f72fb0ac
7
+ data.tar.gz: 4f90ffbffcf6a9ae1ce71de1477d5dd4d0fa09a0017e0bcedc679ea0aa2cb69bd2123667dc6045a6a276deb2143121bb355086729a9644d82475b75f5c636111
@@ -45,9 +45,9 @@ checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
45
45
 
46
46
  [[package]]
47
47
  name = "alloc-stdlib"
48
- version = "0.2.2"
48
+ version = "0.2.4"
49
49
  source = "registry+https://github.com/rust-lang/crates.io-index"
50
- checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
50
+ checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195"
51
51
  dependencies = [
52
52
  "alloc-no-stdlib",
53
53
  ]
@@ -398,9 +398,9 @@ checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c"
398
398
 
399
399
  [[package]]
400
400
  name = "brotli"
401
- version = "8.0.3"
401
+ version = "8.0.4"
402
402
  source = "registry+https://github.com/rust-lang/crates.io-index"
403
- checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610"
403
+ checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3"
404
404
  dependencies = [
405
405
  "alloc-no-stdlib",
406
406
  "alloc-stdlib",
@@ -409,9 +409,9 @@ dependencies = [
409
409
 
410
410
  [[package]]
411
411
  name = "brotli-decompressor"
412
- version = "5.0.1"
412
+ version = "5.0.3"
413
413
  source = "registry+https://github.com/rust-lang/crates.io-index"
414
- checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924"
414
+ checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583"
415
415
  dependencies = [
416
416
  "alloc-no-stdlib",
417
417
  "alloc-stdlib",
@@ -446,9 +446,9 @@ checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3"
446
446
 
447
447
  [[package]]
448
448
  name = "cc"
449
- version = "1.2.63"
449
+ version = "1.2.64"
450
450
  source = "registry+https://github.com/rust-lang/crates.io-index"
451
- checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
451
+ checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
452
452
  dependencies = [
453
453
  "find-msvc-tools",
454
454
  "shlex 2.0.1",
@@ -1708,9 +1708,9 @@ dependencies = [
1708
1708
 
1709
1709
  [[package]]
1710
1710
  name = "js-sys"
1711
- version = "0.3.100"
1711
+ version = "0.3.102"
1712
1712
  source = "registry+https://github.com/rust-lang/crates.io-index"
1713
- checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162"
1713
+ checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
1714
1714
  dependencies = [
1715
1715
  "cfg-if",
1716
1716
  "futures-util",
@@ -1881,9 +1881,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
1881
1881
 
1882
1882
  [[package]]
1883
1883
  name = "memchr"
1884
- version = "2.8.1"
1884
+ version = "2.8.2"
1885
1885
  source = "registry+https://github.com/rust-lang/crates.io-index"
1886
- checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
1886
+ checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
1887
1887
 
1888
1888
  [[package]]
1889
1889
  name = "micromap"
@@ -2065,9 +2065,9 @@ dependencies = [
2065
2065
 
2066
2066
  [[package]]
2067
2067
  name = "num-modular"
2068
- version = "0.6.2"
2068
+ version = "0.6.3"
2069
2069
  source = "registry+https://github.com/rust-lang/crates.io-index"
2070
- checksum = "9545315a0c41a7a32c6694f73ad2e927b8caf67180314d659bcba180a4daaa19"
2070
+ checksum = "b8d1aedba5cebbd8d4e97e7e71409b00c11e277e754d1a6701695e23ef6775d7"
2071
2071
 
2072
2072
  [[package]]
2073
2073
  name = "num-order"
@@ -2610,9 +2610,9 @@ dependencies = [
2610
2610
 
2611
2611
  [[package]]
2612
2612
  name = "regex"
2613
- version = "1.12.3"
2613
+ version = "1.12.4"
2614
2614
  source = "registry+https://github.com/rust-lang/crates.io-index"
2615
- checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
2615
+ checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
2616
2616
  dependencies = [
2617
2617
  "aho-corasick",
2618
2618
  "memchr",
@@ -2633,9 +2633,9 @@ dependencies = [
2633
2633
 
2634
2634
  [[package]]
2635
2635
  name = "regex-syntax"
2636
- version = "0.8.10"
2636
+ version = "0.8.11"
2637
2637
  source = "registry+https://github.com/rust-lang/crates.io-index"
2638
- checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
2638
+ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
2639
2639
 
2640
2640
  [[package]]
2641
2641
  name = "reserve-port"
@@ -3015,9 +3015,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
3015
3015
 
3016
3016
  [[package]]
3017
3017
  name = "smallvec"
3018
- version = "1.15.1"
3018
+ version = "1.15.2"
3019
3019
  source = "registry+https://github.com/rust-lang/crates.io-index"
3020
- checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
3020
+ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
3021
3021
 
3022
3022
  [[package]]
3023
3023
  name = "socket2"
@@ -3031,9 +3031,9 @@ dependencies = [
3031
3031
 
3032
3032
  [[package]]
3033
3033
  name = "spikard"
3034
- version = "0.15.6-rc.21"
3034
+ version = "0.16.0-rc.1"
3035
3035
  source = "registry+https://github.com/rust-lang/crates.io-index"
3036
- checksum = "2281d0a72d5365d26557b482ab0838013e677979239fa7aea0d3371caf4580ad"
3036
+ checksum = "fe2add8e4238b28e6ba040c1e33cd65cc7ddc7f02939a49bbdadad45732ea380"
3037
3037
  dependencies = [
3038
3038
  "anyhow",
3039
3039
  "axum",
@@ -3051,9 +3051,9 @@ dependencies = [
3051
3051
 
3052
3052
  [[package]]
3053
3053
  name = "spikard-core"
3054
- version = "0.15.6-rc.21"
3054
+ version = "0.16.0-rc.1"
3055
3055
  source = "registry+https://github.com/rust-lang/crates.io-index"
3056
- checksum = "dbd0fdde59431157cd6e5b6e0741a1c5bfb1ea26fbe785ace47bf2a839b2e116"
3056
+ checksum = "4ff23e8bc754a81e606aed0fcb8eac3696c95c2b909996745a5bc080c3d28dc3"
3057
3057
  dependencies = [
3058
3058
  "anyhow",
3059
3059
  "base64",
@@ -3077,9 +3077,9 @@ dependencies = [
3077
3077
 
3078
3078
  [[package]]
3079
3079
  name = "spikard-graphql"
3080
- version = "0.15.6-rc.21"
3080
+ version = "0.16.0-rc.1"
3081
3081
  source = "registry+https://github.com/rust-lang/crates.io-index"
3082
- checksum = "60ff52adb421a983e521b05fb15dbfb158afe7252b185bc5944f62e489f53eee"
3082
+ checksum = "03fd3346fb1ae41953b764bc17fba7224c5b3c5ecec4151fb4f4ca3598c04ccd"
3083
3083
  dependencies = [
3084
3084
  "async-graphql",
3085
3085
  "axum",
@@ -3098,9 +3098,9 @@ dependencies = [
3098
3098
 
3099
3099
  [[package]]
3100
3100
  name = "spikard-http"
3101
- version = "0.15.6-rc.21"
3101
+ version = "0.16.0-rc.1"
3102
3102
  source = "registry+https://github.com/rust-lang/crates.io-index"
3103
- checksum = "fec692b910db3e0be2251d7fd4e7983b5d30d17c90cfd107ad1218ee818acb95"
3103
+ checksum = "699167bfdceaae80a2938639b4662732f2de1af5717694ac28a08098a0d1a624"
3104
3104
  dependencies = [
3105
3105
  "ahash",
3106
3106
  "anyhow",
@@ -3153,7 +3153,7 @@ dependencies = [
3153
3153
 
3154
3154
  [[package]]
3155
3155
  name = "spikard-rb"
3156
- version = "0.15.6-rc.21"
3156
+ version = "0.16.0-rc.1"
3157
3157
  dependencies = [
3158
3158
  "magnus",
3159
3159
  "rb-sys",
@@ -3512,9 +3512,9 @@ dependencies = [
3512
3512
 
3513
3513
  [[package]]
3514
3514
  name = "tower-http"
3515
- version = "0.6.11"
3515
+ version = "0.7.0"
3516
3516
  source = "registry+https://github.com/rust-lang/crates.io-index"
3517
- checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
3517
+ checksum = "b11f75e912b0c2be01b63d8cf8057b8c3f97cf34abb3d431a3a4c8675498e233"
3518
3518
  dependencies = [
3519
3519
  "async-compression",
3520
3520
  "bitflags",
@@ -3870,9 +3870,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
3870
3870
 
3871
3871
  [[package]]
3872
3872
  name = "wasip2"
3873
- version = "1.0.3+wasi-0.2.9"
3873
+ version = "1.0.4+wasi-0.2.12"
3874
3874
  source = "registry+https://github.com/rust-lang/crates.io-index"
3875
- checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
3875
+ checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
3876
3876
  dependencies = [
3877
3877
  "wit-bindgen 0.57.1",
3878
3878
  ]
@@ -3888,9 +3888,9 @@ dependencies = [
3888
3888
 
3889
3889
  [[package]]
3890
3890
  name = "wasm-bindgen"
3891
- version = "0.2.123"
3891
+ version = "0.2.125"
3892
3892
  source = "registry+https://github.com/rust-lang/crates.io-index"
3893
- checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563"
3893
+ checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
3894
3894
  dependencies = [
3895
3895
  "cfg-if",
3896
3896
  "once_cell",
@@ -3901,9 +3901,9 @@ dependencies = [
3901
3901
 
3902
3902
  [[package]]
3903
3903
  name = "wasm-bindgen-macro"
3904
- version = "0.2.123"
3904
+ version = "0.2.125"
3905
3905
  source = "registry+https://github.com/rust-lang/crates.io-index"
3906
- checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc"
3906
+ checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
3907
3907
  dependencies = [
3908
3908
  "quote",
3909
3909
  "wasm-bindgen-macro-support",
@@ -3911,9 +3911,9 @@ dependencies = [
3911
3911
 
3912
3912
  [[package]]
3913
3913
  name = "wasm-bindgen-macro-support"
3914
- version = "0.2.123"
3914
+ version = "0.2.125"
3915
3915
  source = "registry+https://github.com/rust-lang/crates.io-index"
3916
- checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b"
3916
+ checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
3917
3917
  dependencies = [
3918
3918
  "bumpalo",
3919
3919
  "proc-macro2",
@@ -3924,9 +3924,9 @@ dependencies = [
3924
3924
 
3925
3925
  [[package]]
3926
3926
  name = "wasm-bindgen-shared"
3927
- version = "0.2.123"
3927
+ version = "0.2.125"
3928
3928
  source = "registry+https://github.com/rust-lang/crates.io-index"
3929
- checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92"
3929
+ checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
3930
3930
  dependencies = [
3931
3931
  "unicode-ident",
3932
3932
  ]
@@ -3967,9 +3967,9 @@ dependencies = [
3967
3967
 
3968
3968
  [[package]]
3969
3969
  name = "web-sys"
3970
- version = "0.3.100"
3970
+ version = "0.3.102"
3971
3971
  source = "registry+https://github.com/rust-lang/crates.io-index"
3972
- checksum = "6e0871acf327f283dc6da28a1696cdc64fb355ba9f935d052021fa77f35cce69"
3972
+ checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
3973
3973
  dependencies = [
3974
3974
  "js-sys",
3975
3975
  "wasm-bindgen",
@@ -4224,18 +4224,18 @@ dependencies = [
4224
4224
 
4225
4225
  [[package]]
4226
4226
  name = "zerocopy"
4227
- version = "0.8.50"
4227
+ version = "0.8.52"
4228
4228
  source = "registry+https://github.com/rust-lang/crates.io-index"
4229
- checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
4229
+ checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
4230
4230
  dependencies = [
4231
4231
  "zerocopy-derive",
4232
4232
  ]
4233
4233
 
4234
4234
  [[package]]
4235
4235
  name = "zerocopy-derive"
4236
- version = "0.8.50"
4236
+ version = "0.8.52"
4237
4237
  source = "registry+https://github.com/rust-lang/crates.io-index"
4238
- checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
4238
+ checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
4239
4239
  dependencies = [
4240
4240
  "proc-macro2",
4241
4241
  "quote",
@@ -4265,18 +4265,18 @@ dependencies = [
4265
4265
 
4266
4266
  [[package]]
4267
4267
  name = "zeroize"
4268
- version = "1.8.2"
4268
+ version = "1.9.0"
4269
4269
  source = "registry+https://github.com/rust-lang/crates.io-index"
4270
- checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
4270
+ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
4271
4271
  dependencies = [
4272
4272
  "zeroize_derive",
4273
4273
  ]
4274
4274
 
4275
4275
  [[package]]
4276
4276
  name = "zeroize_derive"
4277
- version = "1.4.3"
4277
+ version = "1.5.0"
4278
4278
  source = "registry+https://github.com/rust-lang/crates.io-index"
4279
- checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e"
4279
+ checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328"
4280
4280
  dependencies = [
4281
4281
  "proc-macro2",
4282
4282
  "quote",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "spikard-rb"
3
- version = "0.15.6-rc.21"
3
+ version = "0.16.0-rc.1"
4
4
  edition = "2024"
5
5
  license = "MIT"
6
6
  description = "Rust-centric multi-language HTTP framework with polyglot bindings"
@@ -16,13 +16,17 @@ name = "spikard_rb"
16
16
  path = "../src/lib.rs"
17
17
  crate-type = ["cdylib"]
18
18
 
19
+ [features]
20
+ default = ["di"]
21
+ di = ["spikard/di"]
22
+
19
23
  [dependencies]
20
24
  magnus = "0.8"
21
25
  rb-sys = ">=0.9, <0.9.128"
22
26
  serde = { version = "1", features = ["derive"] }
23
27
  serde_json = "1"
24
- spikard = { version = "0.15.6-rc.21", features = ["di"] }
25
- spikard-core = { version = "0.15.6-rc.21" }
26
- spikard-graphql = { version = "0.15.6-rc.21" }
27
- spikard-http = { version = "0.15.6-rc.21" }
28
+ spikard = { version = "0.16.0-rc.1", features = ["di"] }
29
+ spikard-core = { version = "0.16.0-rc.1" }
30
+ spikard-graphql = { version = "0.16.0-rc.1" }
31
+ spikard-http = { version = "0.16.0-rc.1" }
28
32
  tokio = { version = "1", features = ["rt-multi-thread"] }
@@ -1,5 +1,5 @@
1
1
  // This file is auto-generated by alef. DO NOT EDIT.
2
- // alef:hash:79ee9d39feb7fdf8fb1fe348152584f41c8b167115f9d2c55fa1c1750f63e36e
2
+ // alef:hash:cf857583778b9d5bbe16fefe79335d73e515a83164b74450a664caec59e9f7e6
3
3
  // Re-generate with: alef generate
4
4
  #![allow(dead_code, unused_imports, unused_variables)]
5
5
  #![allow(
@@ -831,8 +831,7 @@ impl CorsConfig {
831
831
 
832
832
  allow_credentials: self.allow_credentials,
833
833
 
834
- methods_joined_cache: Default::default(),
835
- headers_joined_cache: Default::default(),
834
+ ..Default::default()
836
835
  };
837
836
  core_self.allowed_methods_joined().into()
838
837
  }
@@ -851,8 +850,7 @@ impl CorsConfig {
851
850
 
852
851
  allow_credentials: self.allow_credentials,
853
852
 
854
- methods_joined_cache: Default::default(),
855
- headers_joined_cache: Default::default(),
853
+ ..Default::default()
856
854
  };
857
855
  core_self.allowed_headers_joined().into()
858
856
  }
@@ -871,8 +869,7 @@ impl CorsConfig {
871
869
 
872
870
  allow_credentials: self.allow_credentials,
873
871
 
874
- methods_joined_cache: Default::default(),
875
- headers_joined_cache: Default::default(),
872
+ ..Default::default()
876
873
  };
877
874
  core_self.is_origin_allowed(&origin)
878
875
  }
@@ -891,8 +888,7 @@ impl CorsConfig {
891
888
 
892
889
  allow_credentials: self.allow_credentials,
893
890
 
894
- methods_joined_cache: Default::default(),
895
- headers_joined_cache: Default::default(),
891
+ ..Default::default()
896
892
  };
897
893
  core_self.is_method_allowed(&method)
898
894
  }
@@ -4114,6 +4110,7 @@ impl From<spikard::BackgroundJobMetadata> for BackgroundJobMetadata {
4114
4110
  }
4115
4111
  }
4116
4112
 
4113
+ #[allow(clippy::needless_update)]
4117
4114
  #[allow(clippy::redundant_closure, clippy::useless_conversion)]
4118
4115
  impl From<CorsConfig> for spikard::CorsConfig {
4119
4116
  fn from(val: CorsConfig) -> Self {
@@ -4124,8 +4121,7 @@ impl From<CorsConfig> for spikard::CorsConfig {
4124
4121
  expose_headers: val.expose_headers.map(|v| v.into_iter().collect()),
4125
4122
  max_age: val.max_age,
4126
4123
  allow_credentials: val.allow_credentials,
4127
- methods_joined_cache: Default::default(),
4128
- headers_joined_cache: Default::default(),
4124
+ ..Default::default()
4129
4125
  }
4130
4126
  }
4131
4127
  }
@@ -4428,7 +4424,6 @@ impl From<ServerConfig> for spikard::ServerConfig {
4428
4424
  openapi: val.openapi.map(Into::into),
4429
4425
  jsonrpc: val.jsonrpc.map(Into::into),
4430
4426
  grpc: val.grpc.map(Into::into),
4431
- lifecycle_hooks: Default::default(),
4432
4427
  background_tasks: val.background_tasks.into(),
4433
4428
  enable_http_trace: val.enable_http_trace,
4434
4429
  ..Default::default()
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spikard
4
+ module Errors
5
+ class Error < StandardError
6
+ attr_reader :status_code, :problem_details_type
7
+
8
+ def initialize(message = nil, status_code: nil, problem_details_type: nil)
9
+ super(message)
10
+ @status_code = status_code
11
+ @problem_details_type = problem_details_type
12
+ end
13
+
14
+ def to_problem_details
15
+ {
16
+ type: @problem_details_type || "about:blank",
17
+ title: self.class.name.split("::").last,
18
+ status: @status_code || 500,
19
+ detail: message
20
+ }
21
+ end
22
+ end
23
+
24
+ class NotFoundError < Error
25
+ # Raised when the requested resource does not exist.
26
+ def initialize(message = nil)
27
+ super(message, status_code: 404, problem_details_type: nil)
28
+ end
29
+ end
30
+
31
+ class ValidationError < Error
32
+ # Raised when input validation fails. Carries a list of field errors per RFC 9457.
33
+ def initialize(message = nil)
34
+ super(message, status_code: 422, problem_details_type: nil)
35
+ end
36
+ end
37
+
38
+ class UnauthorizedError < Error
39
+ # Raised when the request lacks valid authentication credentials.
40
+ def initialize(message = nil)
41
+ super(message, status_code: 401, problem_details_type: nil)
42
+ end
43
+ end
44
+
45
+ class ForbiddenError < Error
46
+ # Raised when the authenticated user lacks permission for the requested action.
47
+ def initialize(message = nil)
48
+ super(message, status_code: 403, problem_details_type: nil)
49
+ end
50
+ end
51
+
52
+ class RateLimitedError < Error
53
+ # Raised when the client exceeds the configured request rate limit.
54
+ def initialize(message = nil)
55
+ super(message, status_code: 429, problem_details_type: nil)
56
+ end
57
+ end
58
+
59
+ class ConflictError < Error
60
+ # Raised when the request conflicts with the current state of the resource.
61
+ def initialize(message = nil)
62
+ super(message, status_code: 409, problem_details_type: nil)
63
+ end
64
+ end
65
+
66
+ class InternalError < Error
67
+ # Raised when the server encounters an unexpected failure.
68
+ def initialize(message = nil)
69
+ super(message, status_code: 500, problem_details_type: nil)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:79ee9d39feb7fdf8fb1fe348152584f41c8b167115f9d2c55fa1c1750f63e36e
2
+ # alef:hash:cf857583778b9d5bbe16fefe79335d73e515a83164b74450a664caec59e9f7e6
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify --exit-code
5
5
  # frozen_string_literal: true
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "spikard"
4
-
5
4
  module Spikard
6
5
  # Spikard application builder.
7
6
  class App
@@ -0,0 +1,35 @@
1
+ def on_request(&block)
2
+ # Called before any other processing for each inbound request.
3
+ @lifecycle_hooks.push(["on_request", block])
4
+ self
5
+ end
6
+ def pre_validation(&block)
7
+ # Called after parsing but before parameter validation.
8
+ @lifecycle_hooks.push(["pre_validation", block])
9
+ self
10
+ end
11
+ def pre_handler(&block)
12
+ # Called after validation but before invoking the route handler.
13
+ @lifecycle_hooks.push(["pre_handler", block])
14
+ self
15
+ end
16
+ def on_response(&block)
17
+ # Called after the handler returns but before the response is serialized.
18
+ @lifecycle_hooks.push(["on_response", block])
19
+ self
20
+ end
21
+ def on_error(&block)
22
+ # Called when a handler returns an error.
23
+ @lifecycle_hooks.push(["on_error", block])
24
+ self
25
+ end
26
+ def websocket(path, &block)
27
+ # Register a WebSocket upgrade handler at the given path.
28
+ @registrations.push(["websocket", [path], block])
29
+ self
30
+ end
31
+ def sse(path, &block)
32
+ # Register an SSE event producer at the given path.
33
+ @registrations.push(["sse", [path], block])
34
+ self
35
+ end
@@ -1,10 +1,10 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:79ee9d39feb7fdf8fb1fe348152584f41c8b167115f9d2c55fa1c1750f63e36e
2
+ # alef:hash:cf857583778b9d5bbe16fefe79335d73e515a83164b74450a664caec59e9f7e6
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify --exit-code
5
5
  # frozen_string_literal: true
6
6
 
7
7
  module Spikard
8
8
  ## The version string for this package.
9
- VERSION = "0.15.6.pre.rc.21"
9
+ VERSION = "0.16.0.pre.rc.1"
10
10
  end
data/lib/spikard.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:79ee9d39feb7fdf8fb1fe348152584f41c8b167115f9d2c55fa1c1750f63e36e
2
+ # alef:hash:cf857583778b9d5bbe16fefe79335d73e515a83164b74450a664caec59e9f7e6
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify --exit-code
5
5
  # frozen_string_literal: true
data/lib/spikard_rb.so CHANGED
Binary file
data/sig/types.rbs CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated by alef — DO NOT EDIT.
2
- # alef:hash:79ee9d39feb7fdf8fb1fe348152584f41c8b167115f9d2c55fa1c1750f63e36e
2
+ # alef:hash:cf857583778b9d5bbe16fefe79335d73e515a83164b74450a664caec59e9f7e6
3
3
  # To regenerate: alef generate
4
4
  # To verify freshness: alef verify --exit-code
5
5
 
@@ -239,6 +239,11 @@ module Spikard
239
239
  end
240
240
 
241
241
  class App
242
+ def on_request: (String hook) -> App
243
+ def pre_validation: (String hook) -> App
244
+ def pre_handler: (String hook) -> App
245
+ def on_response: (String hook) -> App
246
+ def on_error: (String hook) -> App
242
247
  def merge_axum_router: (String router) -> App
243
248
  def attach_axum_router: (String router) -> App
244
249
  def into_router: () -> String
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spikard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.6.pre.rc.21
4
+ version: 0.16.0.pre.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Na'aman Hirschfeld <nhirschfeld@gmail.com>
@@ -59,8 +59,10 @@ files:
59
59
  - ext/spikard_rb/src/lib.rs
60
60
  - ext/spikard_rb/src/service.rs
61
61
  - lib/spikard.rb
62
+ - lib/spikard/errors.rb
62
63
  - lib/spikard/native.rb
63
64
  - lib/spikard/service.rb
65
+ - lib/spikard/service_http_additions.rb
64
66
  - lib/spikard/version.rb
65
67
  - lib/spikard_rb.so
66
68
  - sig/service.rb
@@ -79,6 +81,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
79
81
  - - ">="
80
82
  - !ruby/object:Gem::Version
81
83
  version: 3.2.0
84
+ - - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: '4.0'
82
87
  required_rubygems_version: !ruby/object:Gem::Requirement
83
88
  requirements:
84
89
  - - ">="