* Fix#4706: Comments before a PARAM_START token stay before that token
* Simplify nodes
* Add function-in-function test
* Fix#4706: Comments after class name should go after the identifier that's after `class`, not the variable assigned to
* Fix#4706: Top-level identifiers with trailing comments get wrapped in parentheses (around the comment too) so that Flow doesn't interpret it as a JavaScript label
* Cleanup
* If the source has parentheses wrapping an identifier followed by a block comment, output those parentheses rather than optimizing them away; this is a requirement of Flow, to distinguish from JavaScript labels
* More tests for Flow comments
* For local variables with trailing inline herecomments, output the comments up in the variable declarations line for Flow compatibility
* Fix#4706: Comments before a PARAM_START token stay before that token
* Simplify nodes
* Add function-in-function test
* Fix#4706: Comments after class name should go after the identifier that's after `class`, not the variable assigned to
* Fix#4706: Top-level identifiers with trailing comments get wrapped in parentheses (around the comment too) so that Flow doesn't interpret it as a JavaScript label
* Cleanup
* If the source has parentheses wrapping an identifier followed by a block comment, output those parentheses rather than optimizing them away; this is a requirement of Flow, to distinguish from JavaScript labels
* More tests for Flow comments
The handling of hoisted nodes in class bodies was incorrect, as the node
was being unwrapped *before* checking if it was hoisted, meaning nodes
that should have been hoisted would be output normally.
This affected `PassthroughLiteral`s as they were wrapped in a `Value`.
* Fix#4725: apply transpile option to require’d .coffee files
* Use the current module’s options if it has any, before going searching up the tree
* Don’t mutate passed-in options object
* If the REPL is run with `--transpile`, turn transpilation on for both the current REPL input and any files imported by that input
* Use the command.coffee machinery for parsing arguments
* Fix test for Windows
* Fix#4725: apply transpile option to require’d .coffee files
* Use the current module’s options if it has any, before going searching up the tree
* Don’t mutate passed-in options object
* Show an appropriate error if the user tries to use --transpile via the CLI and babel-core isn’t installed
* Update documentation around global/local
* Fix#4713: Use Babel’s built-in `filename` option to let Babel search for its options, rather than us doing so
* Improve transpilation docs
* Colons are good
* Docs cleanup
* Rewrite transpilation docs
* Better identifier for compiled scripts that didn’t come from files; better resolving of paths
* Fix#4464: backticked expressions in class body should be left in the body, not hoisted
* Fix#4464: backticked expressions in class body should be left in the body, not hoisted
* Simplify fix for #4464
This uses more of the existing machinery for moving class body
expressions into the initializer.
* Clarify the purpose of Class::addInitializerExpression
* Further clarify the purpose of Class::addInitializerExpression
* Add reference to class fields; format
comment wrapping
* Reapply 1d3af8c432, that got lost because of rebase/force-push shenanigans
* Updated output
* Bump version to 2.0.0; bump dependencies versions
* Make v2 docs the primary docs; jettison the v1 docs’ source: whenever the v1 docs need to be rebuild in the future, that can be done on the `1` branch and copied over; simplify folder tree
* Updated v1 docs that reflect that v2 is out and have updated paths to reflect that the v2 docs are now the primary docs, and the v1 docs only live under /v1/
* Add Google Analytics; track navigation, editing code and running code
* 2.0.0 changelog
* Fix link to root docs
* No more @next; installing local copy should be --save-dev
* Analytics on the browser-based tests page should prove fascinating . . .
* Update annotated source
* Add note to changelog clarifying scope
* Upgrade Babeli (now babel-minify) which fixes the bug that was forcing us to run Babel twice for transpilation
* Add --transpile option (WIP)
* Node API always compiles a string, so it doesn’t need the option to pass a path to an options file, it can always just pass an object to `transpile`; get `transpile` working with `eval`
* Not allowing argument to `--transpile` so don’t need to cover so many cases
* Don’t need to worry about `sourceMaps` option to pass to Babel, `inputSourceMap` overrides it
* Rewrite Webpack test to use Node API
* Make the compiler safe again for browsers and Webpack/Browserify
* Node version of CoffeeScript.compile passes reference to Babel if transpile is requested
* Test Node API for transpile option
* Test for merged source maps
* Test for Node API error message
* Only stop searching for Babel options if a package.json has a truthy "babel" key
* Update docs
* Get rid of offcanvas slide-in; fix sidebar
* We need to transpile docs.coffee, since Safari 9 throws an error on it and that’s too new a browser not to support; but this should also speed things up
* Fix some tabs
* Fix scrollbar
* Use Highlight.js to format placeholder code (during compilation, not rendering) before CodeMirror loads; match Highlight.js styles to CodeMirror styles as best we can
* Improve hash management
* Initialize CodeMirror on demand, on mouseover a particular code example, rather than all examples on startup
* Replace highlight.js with Prism for placeholder syntax highlighting
* Scratch Prism, use CodeMirror itself to do Node-based syntax highlighting, so that on CodeMirror initialization there’s no flash from mismatched highlighting
* Update packages; there’s a new version of Jison! (doesn’t change much)
* Fix mobile issues: use SVG play button icon, to avoid iOS blue square play button; make the code editor text 16px size explicit, to avoid unwanted mobile zoom; make the ‘code play’ buttons work even if the code examples are in placeholder (non-editable) mode, in case a user hasn’t moused over/tapped them
* Update docs output
* Whoops, CodeMirror is only a devDependency
* Upgrade docs to Bootstrap 4 beta, including refactoring styles; upgrade docs jQuery and CodeMirror
* Better style the docs for mobile, including Try CoffeeScript
* Fix#4642, erroneous statement about named functions
* Update packages
* 2.0.0-beta5
* Get `coffee` command working again in Node 6, by converting the ‘await’ wrapper in the REPL to use a Promise instead of the ‘await’ keyword; add tests for REPL ‘await’ wrapper, including test to skip async tests if the runtime doesn’t support them
* Code review
* Let's support Node 6+ if we can
* _extends utility instead of Object.assign()
* eqJS test for _extends
* Test that a user-defined function named `_extends` doesn’t conflict with our utility function
* IE8 polyfill note in docs
* Per discussion in #3075: if `sourceFiles` is unspecified, but `filename` is, use `filename`; output null instead of an empty string for `sources` or `sourceRoot`
* Update source map tests to reflect that now we return null instead of empty strings; check generated sources array
* Update source map documentation; still leave more obscure options undocumented
* Follow the TypeScript compiler’s example regarding v3SourceMap, but output empty strings instead of made-up filenames
* Have `sources` default to ‘<anonymous>’
* fix splat error with soak properties or expressions
* Add test based on #4260
* Add test based on #1349
* tests for the leading splat variant
* test for spaced prefix ...
* fixed 'if' statement in parens
* fixed replacing 'void 0' with '[]'
* remove 'void 0' replacement; add Splat::compileNode
* Use LEVEL_OP; follow style better
* Fix#3709: throwing an if, for, switch or while should throw the returned value of the statement/loop
* Fix#3789: don’t throw a throw (unless it’s in a closure)
* LEVEL_LIST works better than a list of node types
* Fix#2870: If --output ends with a filename, and the input is a file and not a path, save as the desired filename
* If an output path ends in a slash, force saving into an output folder even if that folder name would contain a period (e.g. /scripts.js/); if output filename is only periods, treat it as a path
* Restrict exceptions
* Fix#4629: interpolations (whether in strings or CSX tags) that contain nothing but comments should not be optimized out
* Template literals need an expression inside their interpolations, so if we only have a comment to put in there, toss in an empty string as well
* When using --require, check that the variable we’re creating from the required file/module is a valid identifier name before assigning to it; fixes#4209
* We don’t need no stinkin’ regex
* Don't throw an error in the console when loading a try: URL
* Handle the possibility of compiling multiple scripts with the same filename, or multiple anonymous scripts
* Fix#4558: Much more robust caching of sources and source maps, more careful lookup of source maps especially for CoffeeScript code compiled within a Coffee script (. . . within a Coffee script, etc.)
* Reimplement `cake release` to just use the shell to avoid the issues plaguing that command (something to do with module caching perhaps)