Skip to content

xh4/web-toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lisp Web Toolkit

lisp-web-toolkit.com

Object-Oriented Reactive Lisp Systems for Rapid Web Application Development

Status

Layer 1: (Work in Progress) Rich set of features for fundamental Web-related technologies

HTTP, WebSocket, URI, JSON, DOM, HTML, CSS, JavaScript

Layer 2: (Experimeltal) Component abstraction and reactive behavior

Component, Live

Layer 3: (Planning) Integration with enterprise-class vendor libraries

Ant Design, Ant Vision, ...

Systems

WT.HTTP provides HTTP functionality based on RFC 7231 Hypertext Transfer Protocol (HTTP/1.1), together with implementation of server and client.

WT.WEBSOCKET provides WebSocket functionality based on RFC 6455 The WebSocket Protocol, with interface inspired by JSR 356, Java API for WebSocket. The system is tested against the Autobahn WebSocket Testsuite.

WT.HTML implements HTML constructor, parser and serializer. The parser is designed to conform to the WHATWG HTML Specification, as is implemented by all major web browsers. It uses the Document Object Model (DOM) provided by WT.DOM.

WT.JSON implements JSON encoder and decoder based on ECMA-404 The JSON Data Interchange Standard. It distinguishes null, false and [] from Lisp's NIL thus supports identical transformation between JSON values. It provides object constructor and accessor to build and access nesting JSON objects. The system is tested against JSONTestSuite.

WT.URI provides URI parser, render and constructor with support for UTF-8 characters, IPv6 addresses and query parameters handling. It utilizes recursive descent parser combinators to provide a concise implementation that is close to the definition in RFC 3986 Uniform Resource Identifier (URI): Generic Syntax.

WT.CSS implements CSS constructor, parser and serializer based on specifications introduced in CSS Snapshot 2018.

WT.JAVASCRIPT implements JavaScript parser and serializer based on ECMAScript 2016 Language Specification (ECMA-262 7th Edition) with support for JSX syntax extension. It utilizes syntax tree components from the ESTree project.

WT.DOM implements Document Object Model (DOM) based on recent version of DOM Living Standard, it covers chapters on Nodes and Traversal.

WT.COMPONENT provices component abstraction, it combines Web Components style strong encapsulation and React style declarative DOM synchronization.

Roadmap

  • Overall
    • Use in production environments
    • Write documentation
    • Carefully design conditions and errors
    • Write more tests
    • Add project build status graph
    • Add code coverage informataion
  • HTTP
    • Use Asynchronous I/O in LispWorks
    • Use Recursive Event Dispatching (SERVE-EVENT) in SBCL
    • Abandon usocket & bordeaux-threads, write implementation-dependent code
    • Implement server statistics and metrics monitoring
    • Implement traffic throttling and message size limiting
    • Implement authentication, authorization and access control
    • Implement static file serving
    • Implement cache control
    • Implement compression
    • Implement logging
    • Implement HTTP/2
    • Implement common handlers
    • Implement virtual host
    • (Client) Support HTTPS
    • (Client) Support compression and decompression
    • (Client) Support HTTP Proxy
    • (Client) Support SOCKS Proxy
    • (Client) Support Basic Auth
    • (Client) Implement Cookie store
    • (Client) Support caching
  • WebSocket
  • URI
  • HTML
    • Implement parser
    • Implement pretty print(?) (NO)
    • Refine element constractor error report
    • Implement DOM, abandon CXML's DOM implementation
    • Test against Web Platform Tests
  • JSON
    • Test against JSONTestSuite
    • Implement accessors for object
    • Implement identical transformation for JSON values (null, false, [])
  • DOM
    • Implement common used functions
    • Implement namespace
    • Implement XPath
  • JavaScript
    • Implement JavaScript <=> S-expression code transformer
  • CSS
    • Parse common used property values and implement CSSOM

Author

Xiangyu He <xh@coobii.com>

License

Copyright 2018-2020 Xiangyu He. Released under the 3-Clause BSD License.