airframe
airframe copied to clipboard
Milestone: Airframe 21
2020 Development plan of Airframe
- Airframe 20 Milestone: #839
- Airframe 19 Milestone: #528
Documentation
airframe-http-rx
- [ ] Add demo code with documentation
- Basic RxElement rendering
- [ ] nesting & composing
- [ ] set (->) and add (+=) attributes
- [ ] Setting CSS stlyles
- [ ] Use
.map[RxElement]for conditional rendering - [ ] RxComponent
- [ ] adding elements
- [ ] disabled.when(true)
- [ ] How to access DOM elements (Actually it can't so we need to register event handlers)
- [x] Reactive processing using Rx
- [ ] Composing elements using Airframe DI
airframe-rpc
- [x] Defining RPC interfaces
- [x] Generating Scala.js client with sbt-airframe
- [x] Creating RPC servers
- [x] RPC response handling
- [ ] Versioning RPC services. Similar https://docs.microsoft.com/en-us/aspnet/core/grpc/versioning?view=aspnetcore-3.1
- [x] Internal protocol. Related https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md
Dotty (Scala 3) support
- #1077
airframe-msgpack
- [ ] Nested cursor support for the better error handling
- [ ] Use InfiniteCanvas #386 as a backend buffer
- [ ] Support InputStream/OutputStream
- [ ] Handle EOF without using EOFException for stream RPC support
- [ ] Guess a schema of msgpack data #516
airframe-codec
- [ ] Clarify error handling of MessageCodec.unpack #1162
- Adding an error handling option in MessageContext?
- [ ] Performance improvement by switching to pure-Scala msgpack. 10%~20% performance improvement can be achieved compared to the current version
- [ ] Switch json -> msgpack conversion algorithms depending on data size #741
- [ ] Optimize the pack/unpack performance when input/output types are known
- [ ] Check the presence of non-serializable types #836
- [ ] toJson - unquoted string #1084
- [ ] PackSupport/UnpackSupport #511
- [ ] Type specialization #288
airframe-control
- [ ] RateControl (e.g., leaky bucket) with retry budget #1078
- [ ] Retry throttling #1027
- [ ] copy between streams #396
- [ ] Cache (e.g., https://github.com/ben-manes/caffeine)
- [ ] I/O utility methods #346
airframe-di
- [ ] bindConfig { (D1, D2, ...) => C } #650
- [x] constructor injection bug fix #586
- [x] cyclic dependency #582
- [ ] Improve the error message for missing dependency for abstract types #554
- [ ] Logger injection #190
airframe-http
- [x] HttpMessage.Request/Response filter #1133
- [x] Use RetryContext filter for client configurations #1135
- [x] Add circuit breaker to http client #874
- [ ] Input object validation #978
- [ ] ETag support #1041
- [x] airframe-http: Add / (slash) to client request if missing #1354
- [x] Http.client.get/post/put #1355
- [ ] Rx[X] response type #1240
- [ ] Support stream response in StaticContent #1208
- [x] Remove redundant import statements #1176
- [ ] Client-side logging
- [ ] Codec for Router #987
- [x] Custom error response #697
- [ ] shutdown order #693
airframe-rpc
- [ ] Add standard error objects #1211
- [x] gRPC access logging #1444
- [x] gRPC metadata access example
- [ ] gRPC reflection #1420
- [ ] RPC test helper #1130
airframe-surface
- [ ] Support refined types #1046
- [ ] Show warnings when ClassNotFound error occurred #923
sbt-airframe
- [ ] Generate server stub #1026
- [x] ~Generate clients for test scope #1253~
- [x] Remove redundant import #1176
airframe-http-recorder
- [ ] Recording snapshots in YAML or JSON local files for human-readability #1071
- [ ] chunked response #1169
- [ ] big-data backend #1199
- [ ] custom matching rule #1466 #618
airframe-jdbc
- [ ] Support inserting case class instances as table records #1132
- [ ] Lazy connection creation #454
airframe-jmx
- [ ] json output for complex types #462
- [ ] remote method call #463
airframe-launcher
- [ ] Allow passing global option objects to child command #309
- [ ] before/afterCommand hooks #1043
- [ ] Creating launcher without using annotations
- [ ] Include -h by default #298
airframe-sql
- [ ] SQL filter evaluation for msgpack stream
- SQL support
- [ ] SQL decomposer
- SQL processing code generator
- [ ] Scala target
airframe-http-rx
- [x] Rerendering upon attribute value update #1341
- [ ] CSS tags #1062
- [ ] onUpdate #1050
- [x] Add Monaco facade #1058
airspec
- [ ] Full-fledged launcher command-line interface #1352
- [ ] Power assertion for test failures (e.g., show the condition expression and data differences)
- [ ] Use function return values to record test results. There might be more meaningful usage of function return values (e.g., storing test data to DB, sending metrics to fluentd, etc.)
- [ ] Asynchronous tests, returning Future type for Scala.js
- [ ] IntelliJ plugin #646
- Applications to runtime testing
- [ ] smoke testing
- [ ] active monitoring