Commit graph

340 commits

Author SHA1 Message Date
Miikka Koskinen
680414a209 Point each project.clj to the git directory
This way the released JARs should include the git commit they were built
from.
2019-03-01 13:20:43 +02:00
Tommi Reiman
251f547b88 rebase-error-fix 2019-02-28 12:16:51 +02:00
Tommi Reiman
f0a6ceb837 rename internals for clarity 2019-02-28 12:12:28 +02:00
Tommi Reiman
3aae55bd8c Welcome TrieCompiler 2019-02-28 12:12:28 +02:00
Tommi Reiman
778a8b97b9 Review small fixes 2019-02-28 12:12:28 +02:00
Tommi Reiman
d0cfdf304a Polish 2019-02-28 12:12:28 +02:00
Tommi Reiman
e60d176a2d Validate after route conflicts 2019-02-28 12:12:28 +02:00
Tommi Reiman
9422cd28c1 create empty path-parameters at creation time, 266ns->251ns (-6%) 2019-02-28 12:12:28 +02:00
Tommi Reiman
950fef88d2 Use exception/fail! in all creation-time exceptions
... to be companioned with a slick error printer
2019-02-28 12:12:28 +02:00
Tommi Reiman
ad92c437e6 More dead code 2019-02-28 12:11:05 +02:00
Tommi Reiman
d68e1b81fb FIx cljs, welcome reitit.exception! 2019-02-28 12:11:05 +02:00
Tommi Reiman
ae1a8f7919 Fail fast with multiple terminators. 2019-02-28 12:11:05 +02:00
Tommi Reiman
df38a0de05 Test bracket syntax + fix trie conflicting rules 2019-02-28 12:11:05 +02:00
Tommi Reiman
659aac7fd0 Much faster without transients 2019-02-28 12:11:05 +02:00
Tommi Reiman
81b9bdceef Small improvement
* Sort linear routes secondary with static path length
* Unwrap data-matchers from linear-router
* Simplify StaticMatcher impl
2019-02-28 12:11:05 +02:00
Tommi Reiman
c302f795ab Remove dead code 2019-02-28 12:11:05 +02:00
Tommi Reiman
54d5550fae cljs trie 2019-02-28 12:11:05 +02:00
Tommi Reiman
5b9f90d283 ifs -> switch. maybe faster? 2019-02-28 12:11:05 +02:00
Tommi Reiman
2eb4513447 Initial pure-clojure impl 2019-02-28 12:11:05 +02:00
Tommi Reiman
cecd6cf526 Start working on cljs trie 2019-02-28 12:11:05 +02:00
Tommi Reiman
c87bc099b0 char-array is faster, re-run tests 2019-02-28 12:10:01 +02:00
Tommi Reiman
34d8cb0f57 Test with String path 2019-02-28 12:10:01 +02:00
Tommi Reiman
6f902d118a Free from the regex! 2019-02-28 12:10:01 +02:00
Tommi Reiman
8755e19f78 Cleanup 2019-02-28 12:10:01 +02:00
Tommi Reiman
42d6d0c78d Priorize trie based on depth 2019-02-28 12:10:01 +02:00
Tommi Reiman
4c0d2fb285 mega-insert for trie! 2019-02-28 12:10:01 +02:00
Tommi Reiman
8628f0cec6 Remove segment-rouiter code 2019-02-28 12:10:01 +02:00
Tommi Reiman
ce80f83319 :segment-router -> :trie-router 2019-02-28 12:10:01 +02:00
Tommi Reiman
08edbe5b01 . 2019-02-28 12:10:01 +02:00
Tommi Reiman
eaee4ca38d Implement catch-all from trie 2019-02-28 12:10:01 +02:00
Tommi Reiman
fe0ea19e31 Better perf with transient parameters 2019-02-28 12:10:01 +02:00
Tommi Reiman
f2d131a897 wip 2019-02-28 12:10:01 +02:00
Tommi Reiman
b1bef1c1cc Fix #216 2019-02-19 19:40:26 +02:00
Tommi Reiman
16b6b8ad9f
Merge pull request #210 from nilern/toposort
Middleware/interceptor dependency resolution algorithm
2019-02-03 15:05:44 +02:00
Tommi Reiman
d2d5019d0f 0.2.13 2019-01-26 16:20:19 +02:00
Tommi Reiman
b2cd7f37e2 Fix #209 2019-01-26 16:17:13 +02:00
Pauli Jaakkola
b02ccdd53b #33 Add dependency reolution algorithm. 2019-01-25 16:45:46 +02:00
Vincent Cantin
fdf249a959 Apply a change suggested by Miikka Koskinen. 2019-01-22 08:25:58 +08:00
Vincent Cantin
b77115850f Rewrote reitit.core/path-conflicting-routes using transducers. 2019-01-21 23:28:14 +08:00
Tommi Reiman
7ec5c79cad Release 0.2.12 2019-01-18 08:56:23 +02:00
Tommi Reiman
1e7b118ce4 Fix reflection & boxed-math warning, fixes #207 2019-01-18 08:51:43 +02:00
Tommi Reiman
d203832667 0.2.11 2019-01-17 19:43:45 +02:00
Tommi Reiman
ff20260f5f Fix scanner for cljs 2019-01-17 08:18:35 +02:00
Tommi Reiman
95ebdfa6a4 linear-router is backed by a segment-router 2019-01-17 08:13:25 +02:00
Tommi Reiman
b8d8286265 Fixes for the SegmentTrie 2019-01-15 22:13:12 +02:00
Tommi Reiman
5bd933a10c docs 2019-01-15 22:04:50 +02:00
Tommi Reiman
393049a772 Oh My Java: safe guard against index overflows. 2019-01-14 21:08:20 +02:00
Tommi Reiman
ffc6ba8053 Simplied Java, based on review 2019-01-14 16:39:00 +02:00
Tommi Reiman
75065b56e3 Public docs for reitit.segment 2019-01-14 16:38:45 +02:00
Tommi Reiman
406386e0f6 encode -> decode 2019-01-14 10:45:27 +02:00
Tommi Reiman
36f1df3867 Dead code 2019-01-14 10:45:27 +02:00
Tommi Reiman
3168747540 Fix cljs 2019-01-14 10:45:27 +02:00
Tommi Reiman
16499cceb1 Single wild optimization 2019-01-14 10:45:27 +02:00
Tommi Reiman
5079daa8f3 WIP 2019-01-14 10:45:27 +02:00
Tommi Reiman
93bcc5dad8 Trie -> SegmentTrie 2019-01-14 10:45:27 +02:00
Tommi Reiman
54aded4442 Dead code 2019-01-14 10:45:27 +02:00
Tommi Reiman
80dea6cfef Snappier Trie 2019-01-14 10:45:27 +02:00
Tommi Reiman
3f86e24b89 faster split 2019-01-14 10:45:27 +02:00
Tommi Reiman
e1925c8462 . 2019-01-14 10:45:27 +02:00
Tommi Reiman
ae2337621f calf 2019-01-14 10:45:27 +02:00
Tommi Reiman
2a1fea2ccb Initial Java Trie 2019-01-14 10:45:27 +02:00
Tommi Reiman
35ff62a1da Fix expand, fixes #201 2019-01-14 10:07:16 +02:00
Tommi Reiman
408b30eaba Release 0.2.10 2018-12-30 17:48:27 +02:00
Tommi Reiman
2ec29b8f9d Polish docs 2018-12-30 16:53:15 +02:00
Tommi Reiman
7f4aa1bdcc Dev-middleware works with async + polished code 2018-12-22 13:48:47 +02:00
Tommi Reiman
48961c9ed4 quarantine-router 2018-12-22 10:37:18 +02:00
Tommi Reiman
260b167853 Decode path-params on match-by-name, fixes #192 2018-12-21 20:17:46 +02:00
Tommi Reiman
492d5e2f2b Segment-router doesn't allow empty path-parameters 2018-12-10 20:30:58 +02:00
Tommi Reiman
0e73b883ed 0.2.9 2018-11-21 16:03:09 +02:00
Tommi Reiman
883a65acca Document the router options 2018-11-19 21:04:38 +02:00
Tommi Reiman
dd6b07aa0f Release 0.2.8 2018-11-18 22:31:13 +02:00
Tommi Reiman
ffc36fce36 Support composable transformations of mw/interceptor chain
* fixes #167
2018-11-18 22:19:30 +02:00
Tommi Reiman
a205d14afc Update to 0.2.7 with new spec-tools 2018-11-11 22:03:16 +02:00
Tommi Reiman
69592c0f68 Bump up top 0.2.6 2018-11-09 15:41:13 +02:00
Miikka Koskinen
65886c190f Do not use cljs.string/replace-all, it's private
The 1.10.439 release of compiler complains about it. Fixes #169.
2018-11-08 10:00:23 +02:00
Tommi Reiman
1623d001d1 Link to original source files 2018-11-04 20:55:27 +02:00
Tommi Reiman
48318b8793 Fix to if-some as the docs say 2018-11-04 20:54:52 +02:00
Tommi Reiman
9ce898a0b4 3x faster default path-parameter decoding 2018-11-04 09:57:32 +02:00
Tommi Reiman
fdbab455bd 0.2.5 2018-10-30 20:25:14 +02:00
Tommi Reiman
69aeb9adcc Release 0.2.4 2018-10-21 20:37:35 +03:00
Tommi Reiman
5046aebec8 Allow any kind of model 2018-10-16 20:25:43 +03:00
Tommi Reiman
52eeea3c99 Allow any keys in paramters, related to #145 2018-09-26 16:28:26 +03:00
Tommi Reiman
f5ee149929 Release 0.2.3 2018-09-24 20:51:43 +03:00
Tommi Reiman
d81f20ae79 0.2.2 2018-09-09 22:29:00 +03:00
Tommi Reiman
7ecc2178c5 remove :compile key from compiled interceptors 2018-09-07 23:08:22 +03:00
Juho Teperi
98707902ea Add :scm tags for clojars commit link 2018-09-04 19:21:07 +03:00
Tommi Reiman
fa90d12eb8 0.2.1 with updated deps 2018-09-04 18:15:23 +03:00
Tommi Reiman
ac86d550b5 0.2.0 2018-09-03 19:44:59 +03:00
Tommi Reiman
2c51f051de 0.2.0-alpha1 2018-09-02 17:52:19 +03:00
Tommi Reiman
08b2fc7bfd fix docs for coerce! fixes #131 2018-08-31 15:26:17 +03:00
Tommi Reiman
07acbb275f Pedestal-sample 2018-08-31 10:50:00 +03:00
Tommi Reiman
9fc8710cad inline lookup-structs 2018-08-31 10:49:48 +03:00
Tommi Reiman
fd8985fd75 pass-through function interceptors 2018-08-25 13:30:54 +03:00
Tommi Reiman
c1a747857f reitit-sieppari & small fixes 2018-08-25 13:30:54 +03:00
Tommi Reiman
044c0d6163 http-router 2018-08-25 13:28:44 +03:00
Tommi Reiman
5e7be28eb7 fn -> handler in interceptors 2018-08-25 13:28:44 +03:00
Tommi Reiman
59cbb25688 initial http-handler 2018-08-25 13:28:44 +03:00
Matthew Davidson
ec051a0c9d Decode %-encoded URL path params
Also adds utility fn map-kv which is convenient for en/decoding
both maps (like path-params) and vectors (like path parts)

Converts path-params fn to use map-kv
2018-08-07 21:13:40 -04:00
Matthew Davidson
35656c3da6 Extract lookup struct-generating code 2018-08-07 21:10:33 -04:00
Matthew Davidson
c81dad4f94 Merge master into url-decode-path-params 2018-08-05 16:36:23 -04:00
Tommi Reiman
282fa7f012 Read :headers from request :headers. not :header-params 2018-08-05 23:00:59 +03:00
Tommi Reiman
af2d792290 Allows raw specs as parameters 2018-08-05 22:53:43 +03:00
Tommi Reiman
4ea025dc83 more robust apidocs 2018-08-02 16:12:32 +03:00
Tommi Reiman
230717ba65 double fast byte formatting 2018-08-02 16:06:34 +03:00
Tommi Reiman
7389838b59 mention sources 2018-08-01 19:51:54 +03:00
Tommi Reiman
bf3fb64088 query is a form-param 2018-08-01 19:43:58 +03:00
Tommi Reiman
682dd05568 tune perf 2018-08-01 19:28:52 +03:00
Tommi Reiman
6c23a5562a form-encode & form-decode 2018-08-01 18:57:17 +03:00
Tommi Reiman
303b124973 format 2018-08-01 18:56:58 +03:00
Tommi Reiman
0b4d1d2ee1 url-encode & url-decode 2018-08-01 18:08:03 +03:00
Tommi Reiman
bb4f861f00 0.2.0-SNAPSHOT 2018-07-28 12:07:16 +03:00
Tommi Reiman
604291f98e Better interceptor error messages 2018-07-28 12:05:12 +03:00
Tommi Reiman
8321589f04 Polish docs 2018-07-28 12:01:12 +03:00
Tommi Reiman
6c47b5fa94 Welcome Interceptor registry! 2018-07-27 15:14:10 +03:00
Tommi Reiman
94431352b8 Welcome Middleware registry! 2018-07-27 15:14:00 +03:00
Tommi Reiman
bf3007bfe1 Support for sequential child routes 2018-07-26 10:07:49 +03:00
Matthew Davidson
f6054a7c40 Add URL-decoding support
Enables matching URLs with %-encoded chars, and decodes path params.
Currently Reitit cannot handle %-encoded paths, even though they can be
quite common (like `/search/my random search string`)

E.g.:
Successfully match `/space in path` to `/space%20in%20path`
Match `/path/:param1` to `/path/foo%20bar` and see
`:param1` => `"foo bar"` in path params

Does not apply %-decoding to routes, only URLs
Does not guarantee decoding '+' into a space. (Java's URLDecoder
supports it, but it shouldn't for URL path part.)
2018-07-23 00:53:53 -04:00
Tommi Reiman
16856749b1 handle name conflicts in router 2018-07-21 09:48:07 +03:00
Tommi Reiman
d6d2ee478c r/routes & r/compiled-routes 2018-07-18 12:17:16 +03:00
Tommi Reiman
7514d1b263 rename extract-request-format 2018-07-16 16:01:34 +03:00
Juho Teperi
6b8ebdebe6 Fix creating urls with query string when not using fragment 2018-07-12 22:52:41 +03:00
Juho Teperi
264981fd3d Start version 0.1.4 2018-07-12 12:49:14 +03:00
Juho Teperi
434bc25cd6 Format code 2018-07-12 12:49:14 +03:00
Tommi Reiman
79d8e1bb91 0.1.3 2018-06-25 17:50:36 +03:00
Tommi Reiman
18bd2e684f bump up version (all but docs) 2018-06-24 22:32:23 +03:00
Tommi Reiman
f6c460d05c If response body is not defined, response is passed as-is 2018-06-24 18:36:55 +03:00
Tommi Reiman
1923f2d08e handle query-parameters in reverse routing 2018-06-14 17:57:36 +03:00
Tommi Reiman
26be209d3a handle nil with IntoString 2018-06-14 17:50:24 +03:00
Tommi Reiman
771128c281 Support all parameter types 2018-06-14 13:40:32 +03:00
Tommi Reiman
bcc2564498 default coercion format reads from Muuntaja keys 2018-06-11 08:52:53 +03:00
Tommi Reiman
73a5bd2d3d remove dead code 2018-06-11 08:52:03 +03:00
Tommi Reiman
6b95fab88c 0.1.2 2018-06-06 10:43:59 +03:00
Tommi Reiman
f2d3d0a125 if -> when 2018-06-06 10:34:23 +03:00
Tommi Reiman
21de7a038a 0.1.2-SNAPSHOT 2018-06-06 10:34:23 +03:00
Tommi Reiman
7a544cd52d Better handling of nil in routing 2018-06-06 10:34:23 +03:00
Tommi Reiman
d48515e084 Strip nil routes from all positions 2018-06-06 10:34:23 +03:00
Tommi Reiman
fc71947bbb 0.1.1 2018-05-20 21:55:46 +03:00
Tommi Reiman
e137b8baec linear-router serves unnamed catch-all paths 2018-05-14 08:21:03 +03:00
Tommi Reiman
586b02f67d Fix based on Miikka’s comments 2018-03-22 18:57:53 +02:00
Tommi Reiman
b4835a7860 Polish code 2018-03-21 08:15:28 +02:00
Tommi Reiman
f547576a44 Support also booleans, more tests 2018-03-21 07:48:56 +02:00
Tommi Reiman
5ef30443ef Initial take on IntoString 2018-03-20 16:30:53 +02:00
Tommi Reiman
3cc9fedcbf Fixed based on Miikka’s comments 2018-03-18 11:21:49 +02:00
Tommi Reiman
b57d900507 0.1.1-SNAPSHOT 2018-03-17 14:32:51 +02:00
Tommi Reiman
b43c8cfed9 Swagger WIP 2018-03-17 10:53:19 +02:00
Tommi Reiman
d4a4949ad0 0.1.0 2018-02-19 22:03:30 +02:00
Tommi Reiman
32fb3ca294 :responses have :body, not :schema 2018-02-11 21:38:15 +02:00
Tommi Reiman
20b9d3c6c8 :parts => :path-parts 2018-02-01 16:25:04 +02:00
Tommi Reiman
54b24be28e :params => :path-params 2018-02-01 16:23:44 +02:00
Tommi Reiman
fb99b4f9fd Parameter & Response Coercion with specs 2017-12-31 11:34:37 +02:00
Tommi Reiman
07bcd2ea59 Cleanup 2017-12-31 11:34:13 +02:00
Tommi Reiman
9273f99806 Middleware can also contribute to router specs 2017-12-28 22:41:02 +02:00
Tommi Reiman
abb09e2736 Fix -exclude 2017-12-27 21:40:36 +02:00
Tommi Reiman
5c53b6e989 Fix path spec - doesn't have to start with "/" 2017-12-27 20:28:25 +02:00
Tommi Reiman
6321d1e8be Docs for route-data validation 2017-12-27 20:27:51 +02:00
Tommi Reiman
06cb1301cd Support route data validation in router 2017-12-26 22:40:34 +02:00
Tommi Reiman
ce15ae95ec Exclude -lookup (cljs) 2017-12-26 22:39:14 +02:00
Tommi Reiman
ee0c733726 Compile routes already in reitit.core/router 2017-12-26 17:56:46 +02:00
Tommi Reiman
1427f12c53 fix reflection warnings 2017-12-14 11:45:01 +02:00
Tommi Reiman
2dc3636064 Coercion is a reified Protocol, not a Record 2017-12-14 09:16:10 +02:00
Tommi Reiman
fd6a39aefc Implement Interceptors like Middlewar 2017-12-12 22:27:50 +02:00
Tommi Reiman
927d4d4389 Remove middleware/create & polish stuff 2017-12-12 22:27:36 +02:00
Tommi Reiman
2092682d6a interceptors, wip 2017-12-10 18:08:46 +02:00
Tommi Reiman
715968a5d2 Coercion docs 2017-12-10 16:57:09 +02:00
Tommi Reiman
7af3f470d6 Cleanup 2017-12-09 23:46:26 +02:00
Tommi Reiman
dbe40e0145 coerce! with tests 2017-12-09 23:07:33 +02:00
Tommi Reiman
b9f032a5ce Cleanup Coercion 2017-12-09 22:49:32 +02:00
Tommi Reiman
5fdaf609c2 Guard for infinite middleware compilation 2017-12-05 08:52:53 +02:00
Tommi Reiman
259c8e01bb Test for deeply compiled middleware 2017-12-05 08:40:21 +02:00
Tommi Reiman
22bbe38b8c reitit.ring.middleware => reitit.middleware 2017-12-04 23:58:05 +02:00
Tommi Reiman
164473cc75 :gel-wrap => :compile 2017-12-04 22:44:13 +02:00
Tommi Reiman
293274fb68 implement catch-all params for segment-router 2017-11-24 18:58:48 +02:00
Tommi Reiman
e0786b73f0 Remove prefix-tree router as it's broken 2017-11-24 09:45:52 +02:00
Tommi Reiman
4490fc1685 Test the segment-router. prefix-tree fails on complex tests... 2017-11-24 09:42:53 +02:00
Tommi Reiman
5d7670de60 Welcome segment-router! 2017-11-24 09:01:05 +02:00
Tommi Reiman
102fd35f04 Functional segemnt-router 2017-11-24 07:34:14 +02:00
Tommi Reiman
ec35c2ebbf Polish segment-router 2017-11-23 16:01:40 +02:00
Tommi Reiman
636c7ecd24 Clean up internals 2017-11-23 15:52:59 +02:00
Tommi Reiman
8019cebdc7 Segment-router to rule 'em all 2017-11-20 15:17:38 +02:00
Tommi Reiman
607e34c671 Add :type meta to Routers 2017-11-20 15:17:25 +02:00
Tommi Reiman
2dd91d91d6 BREAKING: route :meta => :data 2017-11-18 12:47:16 +02:00
Tommi Reiman
1f27021c29 Tries have a human-readable representation 2017-11-11 16:39:11 +02:00
Tommi Reiman
2f6bfb33f8 Use linear-router always if there are conflicting routes 2017-11-11 16:38:16 +02:00
Tommi Reiman
de993abf62 Move tests 2017-11-10 18:12:00 +00:00
Tommi Reiman
5d7786936c prefix-tree-router! 2017-11-10 18:12:00 +00:00
Tommi Reiman
39bc633576 j.u.HashMap fails with nil 2017-11-10 18:12:00 +00:00
Tommi Reiman
2ae8fd27a8 Replace the version in place 2017-10-30 21:39:35 +02:00
Tommi Reiman
a3ebb04038 Manage dependencies via lein-parent 2017-10-29 09:31:28 +02:00
Tommi Reiman
460ba5ecc0 Fix based on Miikka's comments 2017-10-29 09:31:28 +02:00
Tommi Reiman
4805555417 Initial module split
* metosin/reitit (all)
* metosin/reitit-core (just the router)
* metosin/reitit-ring (the ring stuff)
2017-10-29 09:31:28 +02:00