GithubHelp home page GithubHelp logo

web-schemas's Introduction

Web-schemas

Prismatic Schema extensions for the Web.

Goals

  • symmetric serialization & de-serialization of data types via existing libraries & schema coercion
  • extendable way to add support for new data types (Pattern, DateTime etc.) - for all formats
  • extendable way to add support for new wire formats (JSON, Transit etc.) - for all data types
  • out-of-the-box support for all common data types & wire formats
    • including the Schema-records
  • test suite to verify all data types are supported in all wire formats (no nasty runtime surprises)
  • fast, minimalistic single-sweep coercion without reflection
  • sits on top of schema-tools

Public apis

  • introduce wire formats (serialize & deserialize)
  • link type-based coercion matchers to wire formats
  • serialize and deserialize&coerce based on explicit set of protocols.
  • coercion matcher also for clojure2clojure - to coerce at least numbers and dates.
  • test suite (for custom extension)

Why?

Single responsibility principle: besides the swagger-stuff, ring-swagger also contains symmetric serialization & de-serialization for most data types, but only for JSON & String-based protocols. It's serialization & coercion mechanisms are currenly hard extend. Export all the good stuff here, add more coverage, verify and measure performance, make everything extendable and make ring-swagger depend on this lib.

This lib also will serve the ring-middleware-format, enabling easy support to new wire formats like XML (via wire-format based coercion). We are currently jointly developing r-m-f with Nils Grünwald.

License

Copyright © 2014-2015 Metosin Oy

Distributed under the Eclipse Public License, the same as Clojure.

web-schemas's People

Contributors

ikitommi avatar deraen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.