Roughly in order of importance. Done items are prepended with "✓".
- Do an experiment with React reacting off changes in visualized JSON, while keeping edit state.
- Introduce semantics types for:
- Defining an immutable value.
- Defining a mutable value.
- Aggregating JSON contents from resource (as mutable value).
- Changing some aggregated JSON in some way (e.g. using a JSON Patch-like expression) - for using in an action.
- Defining types (through e.g. type class with a property name associated for type discrimination) and interpreters on them.
- Doing ES6-style imports that actually execute a
require
(of something that can receive a version specification). To execute such programs we need some way of dynamically callingnpm install
and loading the result - see this StackoverFlow answer. Having this capability and the previous one, enables us to tap into the rich JavaScript ecology. - A way to keep the interpretation from finishing, to be able to define servers.
- Extend visualizer with selecting and editing (and folding) capabilities:
- Implement a type checker.
- Extend IDE with instant type checking of source.
- Implement Lisp-style macro's.
- Provide evaluator/interpreter with an environment.
- ✓ Come up with a sensible interface for an environment.
- ✓ Put resource states in the environment.
- ✓ Provide some sensible implementations of resource states (disk/local storage-based, etc.).
- ✓ Implement HTML bindings which maps to React.
- ✓ Implement semantics types that make use of this environment.
- Extend visualizer with selecting and editing (and folding) capabilities:
- ✓ Be able to select rendered components.
- ✓ Provide generic "add something" component. ( For this, look at: react-json. Effectively, we need first to be able to edit (as) plain JSON. )
- ✓ Have editor and evaluation panes next to each other.
- ✓ Provide edit mode for every component (JSON widgets first).
- Provide sensible edit icons and some reflective info.
- ✓ Deletion.
- ✓ Change type (includes verbosity of current type).
- Introduce semantics types for:
- ✓ Indicating that some stuff is to be rendered as HTML/React component.
- ✓ Calling functions in JavaScript space.
- ✓ Move to Browserify over WebPack - see e.g. the
tsify
plugin for compiling TS in Browserify. - Small things:
- ✓ Commit TSD typings to repo as the
tsd
module takes 21M. Also: factor typings better by distinguishing Node.js vs. Browserify usage. - ✓ Don't use
nscript
(whose installation is kinda heavy) unless actually convenient. - ✓ Replace various CLI dependencies with
npm
-able, OS-independent alternatives:rimraf
. Can we also replacemkdir -p
anddiff
with NPM alternatives? - ✓ Upgrade to TypeScript 2.0.x and make use of tagged unions for
ISemanticsTyped.$sType
. - ✓ Make use of a DI'able class for the meta model, so we're relying less on absolute paths.
- ✓ Replace use of
core/mapper.ts
with use of explicitswitch
and TS 2.0 tagged unions.
- ✓ Commit TSD typings to repo as the
- Implement watching (✓) or even hot reload - see e.g. this GitHub repo.