# TODOs for ease.js # # This is by no means a complete list. Misc - Deep cloning level for util.clone() - Optional preprocessing support - Ability to disable features that wouldn't impact base functionality - For example, one may wish to have type checking enabled for development but may not want the performance hit for their production code. Disabling type checking, as long as the proper types are passed to the functions, will not impact function logic. - Should be able to run source file without preprocessing, so C-style macros cannot be used (# is not a valid token) Property Keywords - Restrictions; throw exceptions when unknown keywords are used - public (default) - protected; 'this' will contain protected members of self and parents - private; 'this' will contain private members of self, but not private members of parents - const; immutable properties - final; methods cannot be overridden by subtypes - static; method/property accessible via class definition - event; designates a supported event Typing - Support JSDoc-style type definitions for parameters - Syntax: [ 'string', 'number', function( name, age ) {} ] - Optional; if a function is simply provided, rather than an array, no type checking will be performed - For abstract methods, simply leave the function off (last index) - Provide option to throw errors on any type mismatch - Auto-cast, unless casting is impossible, then throw error Documentation - Ensure all docblocks contain only valid JSDoc tags - Generate documentation - Add to Makefile - Begin technical documentation for developers - Include designs and project decisions - Wiki, LaTeX, Texinfo? - API documentation - Wiki, LaTeX, Texinfo? Client-Side - implement assert.deepEqual()