Ah, one thing I forgot, a short overview of the prototype's directory structure and files.
The root directory contains - the HTML files *index.html* and those that load the three application variants (*app-*.html*) - the linked (minimized) generated JavaScript application files * hello-world-all[.min].js*. - The *README.md* tells you how to re-generate these from the faked compiler output JS files (see below) after changes. - *src *contains the example ActionScript source files, neatly sorted by packages, for reference and for comparison with the faked compiler output JavaScript files. - *requirejs *contains original RequireJS 2.1.2 in a debug (*require.js*) and a minified (*require-min.js*) version. - *amd* contains all JavaScript files to be loaded/linked by RequireJS. It directly contains - the original RequireJS-plugin "shim" (*shim.js*, *shims.js*, * shim-LICENSE.txt*) that takes care of loading... - ...missing ECMAScript 5 functions if the browser does not support them (*Array.*.js*, *Function.prototype.js*, *Object.js*) - the main JavaScript file *hello-world.js* that loads/links the example classes and interfaces and executes some rather random tests on the generated code - *as3*: folder containing implementations of ActionScript operators / functions missing in JavaScript - *as.js* -- the ActionScript "as" operator - *bind.js* -- a caching extension of Function#bind() for AS3 method binding - *cast.js* -- a type cast operator for runtime type checks (currently unused) - *is.js* -- the ActionScript "is" operator (instanceof that also works for interfaces) - *trace-console.js* -- an ActionScript trace() simulation using console.log() - *trace.js* -- an ActionScript trace() simulation rendering to the DOM for demo purposes - *runtime*: folder that contains two small helper functions to ease specifying AS3 class structures in JavaScript - *defineClass.js* -- the central utility function that is used for defining an ActionScript class structure - *defineInterface.js* -- a little bit syntactic sugar to define ActionScript interfaces (almost not worth the effort, but for symmetry...) - *classes*: folder containing the actual "generated" JavaScript code, i.e. the faked FalconJx compiler output. It uses the well-known pattern to define a sub-folder for every package "part". - *com/acme*: sub-sub-folder for the first example package, containing two classes and one interface - *A.js* -- a faked compilation result of the ActionScript class * src/com/acme/A.as* - *B.js* -- a faked compilation result of the ActionScript subclass *src/com/acme/B.as* - *I.js* -- a faked compilation result of the ActionScript interface *src/com/acme/I.as*, implemented by A - *sub*: sub-folder for the second example package, containing two more interfaces - *IOther.js* -- a faked compilation result of the ActionScript interface *src/com/acme/sub/IOther.as*, implemented by B - *ISub.js* -- a faked compilation result of the ActionScript interface *src/com/acme/sub/ISub.as*, also implemented by B The folder *amd/runtime* actually contains a third file * defineClass-initializing-static-fields.js*, which is not yet used; it is an alternative to *defineClass.js* that even takes care of initializing classes when accessing their public static fields, but only works in real ES5-browsers (not IE < 9). You can safely ignore it for now. That's it! -Frank-