Elixirscript Versions Save

Converts Elixir to JavaScript

v0.32.1

6 years ago

v0.28.0

6 years ago

v0.27.0

7 years ago

[0.27.0] - 2017-03-17

Added

  • super
  • defoverridable
  • IO.inspect\1, IO.puts\1, IO.puts\2, IO.warn\1
  • Elixir.load for loading generated JavaScript modules in bundled output. Unlike Elixir.start, this will only call __load on the module and return the functions on it
const exports = Elixir.load(Elixir.MyApp);
exports.hello();

Changed

  • -ex alias is now -e
  • A filename can be specified for output
  • To access global JavaScript functions, modules, and properties, use the JS module
JS.length # translates to 'length'
JS.alert() # translates to 'alert()'
JS.String.raw("hi") # translate to String.raw('hi')
JS.console.log("hi") # translates to console.log('hi')

Fixed

  • Make sure mix compiler works in umbrella apps

v0.26.1

7 years ago

[0.26.1] - 2017-02-27

Fixed

  • Fixed for translation
  • Updated documentation

v0.26.0

7 years ago

[0.26.0] - 2017-02-27

Added

  • Multiple when clauses in guards

  • Kernel.defdelegate/2

  • js_modules configuration option has been added. This is a keyword list of JavaScript modules that will be used.

          js_modules: [
            {React, "react"},
            {ReactDOM, "react-dom"}
          ]
    
  • js-module flag has been added to the CLI in order to pass js modules.

elixirscript "app/elixirscript" -o dist --js-module React:react --js-module ReactDOM:react-dom

Removed

  • @on_js_load has been removed in favor of having a start/2 function defined. More info below
  • JS.import has been removed in favor of defining JavaScript modules used in configuration

Changed

  • Now bundles all output, including the boostrap code. The exported object has Elixir modules in JavaScript namespaces that are lazily loaded when called.

    To start your application import the bundle according to whichever module format was selected and then call start giving it the module and the initial args

    //ES module example
    import Elixir from './Elixir.App'
    Elixir.start(Elixir.App, [])
    

    The start function will look for a start/2 function there. This is analogous to a Application module callback

v0.25.0

7 years ago

[0.25.0] - 2017-02-19

Added

  • Updated elixir_script mix compiler to support compiling elixir_script paths in dependencies if dependency has mix compiler defined as well
  • Add Collectable protocol implementations
  • Updated for implementation to use Collectable
  • format option. Can now specify the module format of output. Choices are: * :es (default) for ES Modules * :umd for UMD * :common for CommonJS
  • Default input, output and format for elixirscript mix compiler. In a mix project by default the elixirscript compiler will look in lib/elixirscript and input and place output in priv/elixirscript. The default format is :es

Removed

  • receive
  • Process module

Fixed

  • JS module functions not translated properly when imported
  • Update fs dependency to 2.12
  • Incorrect handling of function heads with guards

v0.24.0

7 years ago

v0.23.3

7 years ago

[0.23.3] - 2016-11-18

Added

  • @load_only: lets the compiler know to load in the module, but not to compile it

v0.23.2

7 years ago

[0.23.2] - 2016-11-17

Fixed

  • Agent not functioning properly. Now uses internal store instead of making a process and using that to put data in store
  • Protocol incorrectly handling strings
  • defgen and defgenp functions not being recognized by Elixir compiler.

v0.23.1

7 years ago

[0.23.1] - 2016-11-16

Fixed

  • Incorrectly sending standard lib when using compile or compile_path by default