Moon Versions Save

🌙 The minimal & fast library for functional user interfaces

v1.0.0-beta.7

4 years ago
  • d372611f73ad9ae1af53d51c23b34a117e8bedcf: v1.0.0-beta.7
  • 48a8018fb24a0919d66a754fd0f137935a1c3779: update run error messages
  • de121d8f212ee3543aca4547e1b7d6127275c95f: update test for new error message in node
  • 2056f4a5ae9d73d00ec44efb69a098ca88ba2dc8: inline whitespace grammar
  • c4a2493541bdf200e0100bf5165d307c8961e135: 2020 headers

v1.0.0-beta.5

4 years ago
  • 5ccfee4b109265577fe66a497183b2235bf021ae: v1.0.0-beta.5

  • e44f47512ed63663247c9807189214c248aa4f82: update links

  • 377ae058e179b45f1111cfebab66608aa1c5b7d1: use cached storage

  • 2ee7ae954b0c7d2d70e6a7723965b4b05627a11b: add storage driver

  • 4bdd7b1ce06d9eea2f7f861c3512ae9df9f0d9d3: no comma dangle

  • e8d6cb75088bc6ae11ffd5a665613b1cae52fad5: explain parser and add test case for escaped comment delimiter

  • dd8fa7fc27e34c943335e6259b848a4b7b7f7a95: new syntax for nodes and comments

  • 1713d3a15ee6d730f1b802be855b41d03319bfe8: new license link

  • 49d38ac77164792cae6ee1faf4f14cdb0452fff2: add route tests

    100% coverage!

  • a9d5cce70d0f6639aee7056737a374543609f637: refactor browser

  • 5c8189fbf62f497469d8e730f678109ab227c431: revamp parser & generator

  • a32f80f395ea53bc4a3d608b7158605c084e115c: add test for failed cleanup

  • b94ea11501a9e4ce8dfda6613f6b15bfc37278b4: add test for failed child process execution

  • e01b9a6b7a4753cd317b2de62d86f808628fa3b5: add test for failed download in cli

  • cf8488b1417db6a3fba9d57f3dc677e63ad6e6a8: add tests for failed http request in cli

  • 9be5cc445dba78096366a0804e4f2fc2e09d6402: add tests for invalid http status codes and fix error messages

  • 8ca450588f3b5319ccff498db66204981798058e: add cli tests for basic errors

  • 50dcfc90cb640a36e8c2a1164c5f304d69596b47: update comment on how view driver works

  • 67a08cf27a60dc15d5686bbf122545cf1b6336e8: replace ariaset & dataset with attributes

  • 1eace0892cfc14b0850e4712d58fdc3f0c55d6fa: use pad instead of repeat in cli help table

  • 06521d673241d8664dff76224ae22b329c010f7a: refactor main build script

  • 4af1e8cb27254e0b5c98533b1288e08b368a11f7: refactor release scripts

  • 834d64b26ceec9fc6699c44c0a315da98e176dcd: use stat over lstat

  • 0bb77dd5a51aa4dabd1a63997e4618d431d8bac8: add cli tests for create command

  • b04209566ae0560f501a22069d869c03355d5dc9: update file size

  • 2c97a773fb53a92e4f53a897aaaf915f4ae2a11b: add basic cli tests and remove perf tests

  • 7f44befa982362935135df79ff91915ab8c9e8f0: match package readme to descriptions

  • a04365c03283ba2718c19311fb2b65c02a622329: remove mvl

  • b030ccbf71ee142416fd52ef555b7cdebeb43f09: add version property to all modules

  • a8b1c9672740b38759b593abdbd73301fbb26cc0: change order of gitignore

  • 018cd3e96409dd5faa428f4957a16ac52a869449: update descriptions and keywords

  • 0851dd3935664a2184b811ae920f16eb3c256512: consistent spacing in switch statements

  • 6cc066bc251fbc3ff26929156cf34d678f07f598: consistent error messages: failure of -> failed

  • 253e22d389eda91a1bdfcde720d1a3c405eed523: handle filesystem errors in cli

  • 6170ffcb8c82918d3024c5b0f3802e8fbccc0735: handle all http errors in cli

  • c43353b4e3679e558b2f96b71e99eaa53f809e83: refactor router

  • 989e74957cc93565a49bdb0701956fda89df4d7c: route driver

  • b842b292e1f8a0894b9bb9864d6d34564dd3f1e1: refactor moon cli

  • 7b391f8e8cb50fb4240daa3f4346637446e5987a: style attributes -> style properties

  • 8f528afc9d77df7977d3e4f3b1a4204912886416: hoist value when creating nodes and blur without check when removing focus

  • e7a7cd9ab427be89cb7efee70df86dfe0401d770: new view patch children storage

    Children are stored in Node.MoonChildren in order to optimize access of the DOM (such as childNodes or firstChild/nextSibling).

  • a2ffd83075ee21b3574fdeb52ff6747b11ba149c: move diff equality checks to children

  • 8a63274d05af0f23b62551029702de241ad98f9e: remove extra check from view driver and use terser

  • 1e65d811b8d3685aa935a44771966701db1383e7: escape unescaped string characters in text correctly

  • af10f7d57b4cfd27809c10ec7ee51df0c7e59410: remove special diff case for text

  • 06b5d0f2fdd733b4bd3ed00567584972e9f90b7c: generate node creation functions in a loop

  • 8bb1eb2d55ca760ce25accf0a14121ed2abf2299: update perf test

  • 1d453bbedf47bc2d82bcef18cbeea7735d448df2: declare all view functions manually

  • 3cddda08709bda8f090ffa8b02ae1ebcd1ef093e: allow escapes in text and optimize whitespace

  • a112d53ae9261feb91499b5253a104513fc5e7ad: refactor generator

    Some things can be assumed by looking at the grammar. Blocks can be expected in node children and node data as an expression. In these cases, it is now assumed that they are blocks, and they are generated without surrounding parentheses.

  • 981c575d68c03b21f6128e9c085573436b9bdc4c: new MVL, compiler, and router

    First, this change involves a refactor of some of the module structure of the code to be consistent.

    Next, there is a new Moon View Language (MVL). It has three types of nodes:

    • Node: A node that is equivalent to the contents of the expression within it, analogous to a variable reference.
      • <{node}#>
    • Data Node: A node that is equivalent to a function call that can call a function with an expression directly or attributes to represent an object.
      • <{node} {data}/>
      • <{node} foo="bar" bar="baz"/>
    • Data & Children Node: A node that is equivalent to a function call with attributes representing an object along with support for children, which can include text, dynamic text blocks, and other nodes.
      • <{node} foo="bar" bar="baz">Text {dynamic} <node#></>
      • <p>Hello Moon!</p>

    This means that all nodes must now be functions, so Moon.view.m is now an object with keys being HTML elements and a special text element which takes a value data property. All elements must then usually be imported or declared at the top of files.

    The new parser uses parser combinators and comes with better error reporting that displays the line of the error, the surrounding lines, and the exact position where something was expected. It also supports full JavaScript syntax along with MVL, without needing parentheses around nodes.

    The new generator is much simpler and only generates function calls or variable references as appropriate for the node type in question. It doesn't do any static function call optimization as the nodes can be dynamic at any time. This can easily be done by the developer and included with a reference using a normal variable reference node.

    Lastly, work on the router has started. There is a simple file structure set up, a basic driver that changes the route using the history API, and a basic Link component that creates a elements with the data provided. Nothing fancy for now.

  • b56a09ef7523122aa5638dfa025f6b7a687e9dcc: fix options terminal highlighting in CLI

    The options regular expression matched anything starting with a dash. This makes it so that a word must start with one or two dashes and a word must start with an opening bracket. There must be whitespace separating them.

  • b055b9af0d7f177522c4261e89279e3605b16cdf: remove extra break

  • 71c13a67f63379d17b5077a9d7400eb168eda43b: improve CLI UX

    Adds CLI commands, including a help command capable of displaying help messages for individual commands. This will make it easier for people to directly install moon-cli and work with it without having to reference the documentation for the previous simple but obscure behavior. There are now three commands, moon version, moon help, and moon create. They all have error messages and help messages to guide users through the process of using them. moon create now accepts the template as an option rather than a positional argument, using the -t or --template option instead.

  • d9cb7a7b699ffbcf417fe23d31c050b88faafbd9: add tests for multiple HTTP requests

    The HTTP driver can send multiple concurrent requests, but can only receive one at a time. If JavaScript were ever to get true parallelism, one could use multiple HTTP drivers to account for multiple physical network ports that could receive complete HTTP requests at the same time. This adds tests for sending multiple requests and receiving them individually.

  • 6eb90108a1a7315af38e3b5da21da386b39a9ace: make HTTP request headers optional (#260)

    Extra HTTP request headers are usually not required. This change makes them optional and makes it so that the HTTP driver only requires the url field to perform a request. This also adds tests for using default HTTP requests that are both successful and result in an error.

  • 98389563bac4ed2902adca3ccceff4166eb5faf6: make HTTP request headers optional

    Extra HTTP request headers are usually not required. This change makes them optional and makes it so that the HTTP driver only requires the url field to perform a request. This also adds tests for using default HTTP requests that are both successful and result in an error.

  • 3d7174ef65a7904f3b50cc5de6a6353cfa391547: use consistent event for moon browser XHR (#259)

    In the HTTP driver, the onload event is used rather than addEventListener. This PR refactors Moon Browser to use the same method by using onload along with an arrow function to clean up the event handling code that adds the listener.

  • aab846f61f39f11553acab1954c57ae9ef505898: use consistent event for moon browser XHR

    In the HTTP driver, the onload event is used rather than addEventListener. This PR refactors Moon Browser to use the same method by using onload along with an arrow function to clean up the event handling code that adds the listener.

  • 855db29282ead7b0376c82e0abd056bc1729a73e: add basic http tests

    This includes tests for a successful load event and an error event. It currently provides every single parameter, including optional ones. However, it does test that the request/response headers and body are sent properly using a mock XHR implementation.

  • b13176af6d9acd20bb5ea73bbdbbfdf9720f143b: add basic http tests

    This includes tests for a successful load event and an error event. It currently provides every single parameter, including optional ones. However, it does test that the request/response headers and body are sent properly using a mock XHR implementation.

  • 1797a44ac8d538a66bd5d3e50ae60112df33261e: http driver

  • 3bdb6cfafb181cb8669731a1919e373654f46ff8: add tests for browser

  • 36108566b3fa4a0d7ae6b3830dd525bbb3cc045b: remove initial data option from data driver

    This is a change to make drivers consistent. They should only be an interface between an application and the browser. In this case, the browser would have a way of storing things in memory (a variable), and the data driver provides an interface to changing it. This means there should not be an initial data option.

  • 8cd670ecb04e51225345ad9a8083d85ce2ebdeb8: add tests for focus

  • 3a71f9f239ab199bbb12b8b18683fad790169745: add focus attribute

  • 6597ae0823fffab999737d832c8449f7ee3269d7: use switch statement for setting properties

  • 192e96da91050930c677c1dae775867ff735748f: allow components to have uppercase letter anywhere

  • 9eb9e171d2f0ba7a94f6022b64785bd9a212bcf2: add time driver

v1.0.0-beta.4

4 years ago
  • b33d88201746d9127a00ce352cefeea3e406a14d: v1.0.0-beta.4
  • 2f5944bd1c2fefbf67a92c78893087e47c83d2a7: bump version
  • 93196e7b99105c87f4bf46eb980c7ab421125527: replace name within buffer in CLI
  • 10339008a74b807c59a45269680bbefeb884dd8c: update readme info

v1.0.0-beta.3

4 years ago
  • d2d94fba067ddd4f42f0c18c39f722602618e0fc: v1.0.0-beta.3

  • 623adb62fe4c2cd6046c449654738f70ab6e9658: print test results prior to release

  • 5fabdcb093482bd0bf6b1d548e00a718c10d2ff1: update cli logs

  • a42150c98c1538f7022246bb57e4c7d78422df58: preserve lines

  • 068479a3d27fa45dcb5233e572b3d47dea2af840: end sourcemap

  • 69dca4684c49046ff0f96706967e1b09b2a6b9d5: begin sourcemap

  • ad18b76dd526128cb5ce1319013f542ac01feeb6: remove type field from view nodes

    This removes the type field from view nodes and removes normalization from nodes during compilation. It prevents inconsistencies when using data fields in default components because they won't support the "class" -> "className" or "for" -> "htmlFor" transformation. Instead of that, the whole concept of types was removed because it was mainly to distinguish between components and nodes, but now it isn't needed. Instead, the type field is gone and the patch checks for name === "text" instead. Also, there are individual checks for "class" and "for" that set, update, or remove their corresponding properties.

  • 8165998c187b88f554de82772a47afdb7885db11: consistent modules

  • c7f2afc344dfc1f3127fcf2f0f304e3d9d670b94: simplify API and file structure

  • 3417a73fa679b98ee81f33e6d3bcf016110ff03b: update comment wording

  • b9ac3efb23402212c27eceb1395166c8405ef4f3: optimize static expressions

  • 20a507667fb11cac54762f0989083e6c58a9e3a7: allow whitespace in parens for views

  • 4dc96309856baba41b33cfba9aa41219eb2a1fb8: allow views in nested parens

  • 392dc0df15571f81408c8159cbb502ee6bf832d1: add quote type

  • 21120f6c5b80c4125bf7f262fa21cc73f1151339: load all scripts in order

  • fcee45fdaadf3b03e9846874cb0358b05554619c: update package READMEs

  • 16a7af7e672718fa377c6d2eb8803671fb290161: fix version in builds

  • 265252ed8145ffc75c227ca3232ce1b0074fcfbc: functional driver-based design

  • 88a997e119ae1faadffa3d7db810959700bf25a8: add node constructor in perf test

  • b1dc9c81da08cc396b73b8176da2fd33f1e183de: update comment

  • f9137b1419d048526e13f093b49c90ddf8091e6c: one-phase executor w/ event batching

  • fe4bc0ae7860deed60a6c128365fe643a06127c3: make component execution preserve immutability

  • a5bcd3b0f23970db752c91f99e5a940c254befcf: test locals against globals and existing locals

  • b9a219d02b0723fa3dfebcbe63b61e5a0234b46c: use child function for loops

  • 6c7dd9a45208dcd8f8bee3e0fdbd919418c0399b: keep track of locals and remove need for $ sigil

  • ea86567aa7cfadf7c3037892b4239ece32d09b62: make function global

  • e5583f09b3ba8180bb070775b78a5577ed078647: lex names manually and fix extra increment

  • 87e22227e2b318b15c8ad3954754d3d9d6f5364c: store DOM node in remove property cache

  • 2dabfc1515cc9f6d30cf52d766130befbd5a5377: exclude wrapper from coverage

  • ddc200767815a4b7efe2b624468b45221c260cdc: fix static children skip & add time slicing tests

  • 0ab04ab9f274b7daf33b3be726cf4e101e997610: remove unneeded id

  • 6d63f65bbb0e882751cec8174bd1885d3b6336e8: add index tests

  • 8fbc9f78e2fd758eed410ebe6539f66ff0cf89ea: clean up for element generator

  • 47a9c7d8575686ec970bb9e4810b659e66b76a90: executor fuzz tests

  • 124671c20244ebd1621848196426ae86704d5d91: prefer 'in' check vs undefined

  • a76be1e07e1575a4f04a9ff8d0547dff1634acf9: build

  • c299d0310a5abfe016f40552c39843bcdeb01290: remove data property by setting to default value

  • 4945a16dcdad9b2fdb91f819f8dd513e95de637d: fix replaceChild & removeDataSet

  • c6b5e19e3de7d2ec87d94fe7b9f5045ffcca6eda: finish assertions for executor tests

  • a5fc4cfc1c9acac20f4950bdf66d2e3c35683574: executor test suite

  • 1354e5e46a2448bc8405c0813657722695e34e29: allow using children data and attribute

  • 99b1e6f2a6db620b77cbb5118257310087270dac: execute created components, format with tabs, and use const

  • 5cc1f99c8935e8ff5cbaff05178a024a939b8422: reuse static nodes

  • df0df7a745ac32041732e0bed73279fc2b65a668: static element nodes + generator tests

  • 3ed1572f13a19eda669e66e9376c1d14b104fee1: update contributing guide

  • 6b49118fc2f39061dd78eea967396fd965b7b519: don't merge default data on root components

  • 889a778014200be0e4860536a76036bf31265b8e: update summary

  • 00a2e6e654a3243e873b6ad3f2f8e01aaef69b62: diff-patch executor

  • ee07a2129fbc2599f46135d675d46ae834721f73: fix executor queue

  • 9e3d9c8ec41dbf61e1b239ed2e100836cd8dcc98: larger logo

  • b29c2b2c464be43d919c2fcc8d48f9981cfcbfba: clean up readme

  • e009757bf1d92ad5eca9c69aaeb461331b8c7a9e: only require static children to prevent double optimization

  • 87fa3a31c6d55474a76649c16533f582fdb2c337: consistent ordering

  • c260207545d32ad609aeebedb68384ac5630b8ab: add moon DOM properties to node prototype

  • b746b3a7bcfa8de78d1753e23d6b18b09875a84c: eager remove data from queue

  • 6069201ab0daabb7957e04b5e96dd922185aefb2: remove source from perf

  • d600a18bc85ad611254e0a2ef775f41f43dd2660: remove view current

  • b3af5f2769a56f62cb9fda9131f186c2bff6555d: update jsdoc comment

  • e9a7ec46d06d667aa8de84d1013d955ea15bfb65: append performance

  • 749adf329b928e7ec414ad19702de0e224ede97b: remove wrong map in empty loop

  • dd31f99cbae6b264c416536e1e37632400d43f6e: use generator variable for loop iterator

  • 24c2e812cd080de3b6c8cc7db4d18d2c93ec970a: optimize object lookup

  • 8608982070db336c78541be74ab5b9e7dbfc69e5: consistent comments

  • 0819ef26f2a710c16033e60288ce6278282925c7: view = component(data, children)

  • 816f1bf5d64e8486a7032440169f9cf1b86f5a4f: use constructors for nodes

  • 808ff5067dd5bb8b59860b1a4e49ec8cf9564ea1: view-patch executor

  • 0c3a1a893ad3e16740a70ef4f1fc2e4cc3962fd5: update with default data

  • 16cbc7c9aee83690c595168bab4839b8bfe97dbe: cleaner API

  • 7c1ae49f77a65c25c419cf9d20b8550c93d0ee1a: inline defaultObject

  • a6689e82be52c65216242ee4b54c1a15d616713e: add event listeners when needed

  • 8dca414c93b2e0c7f5a8b80096be095eea830081: compare type and name for replace node

  • 03ced07231899f06945b5f5ca48dc82356070ec8: two phase executor

  • c61e423649b631c826c4afbc8b2beda607da14bc: optimize default object

  • 1a75f8aa4fe04ac87df47eec987e1e24829d2ad9: customize wrapper in & refactor lexer

  • 26ce80d98004ca7632eae1c80c8eecceba8893e0: refactor set attribute updates

  • a8ff72514ede8318c5881e73388afa8633aeb6e7: state based attribute lexer

  • af0a86e50be45d0862e7851c598afc61376a3b81: allow nested text expressions

  • 45ad76fef9b8567a31b05b01308d8c57dddd9530: allow nested objects in attributes

  • 9ab1f3c4ff487c95cbce77a2c49e75701193898d: support ariaset, dataset, and style attributes

  • c27bac38987c656582ab2193ab4b04f1deedb356: remove *bind

  • a4a21b4dda34f46fdcddda31cb76494ef38823b3: refactor lexer attribute conditions

  • 39af32c60bd870e4bbe36c465f256bbbdd244ebb: add *bind syntax

  • 1bf16e8105336e29a90dd79ea5f4cafc2bb46dca: consistent check for events

  • 96280adc512a71016c6d334e7b21e46e0963759e: use className in MVL

  • c206837d6b3b1bf620b801e0c025e1171e5aafc1: prefer to use DOM properties

  • 7e4ea03ebb4a9bc49b4a40c27cede1b146e6a013: optimize event attribute check

  • 9d40f81cb472ea3ed2b2d81f60e5733252b166a2: require event handler name and call with (event, data)

  • 5d5b8893d130fe6634258a2ae5b4ece30d93787d: use an object instead of an array for static nodes

  • 06cc9e38c90ec0fa628d09bd0f69f28df812970e: use data instead of textContent

  • 3bacbfd9d5931cbc98e72a9c9b35ff9eccf56545: start renderer with old attributes

  • 4d0e4b318e23692576c799170ede26f955740673: allow for more flexible mvl with space attributes

  • 38ea007e8c112fc38bbbcbc2820d064aac9fcbb2: refactor variable

  • f17f8c8a64f444a8d71238a12f12d1bde34d0a6a: use new attribute shape in mvl

  • af9c57d713fbd8a73db4e5b5752d37627bd97bb4: fix if clause condition duplicate bug

  • 9b4d6083463ac0f048e9d12af2588b7b77ad3b08: identify static attributes correctly

  • 1b21a0fc26394a3496c451bb19b8294c94108e55: add Moon.get

  • 7f9e660d120ccff511970ec6f7cb60310a8493e7: remove old attributes

  • 65eaffec4d6178bf6b6fc85c4d31e2f3cfe443a1: only update text if changed

  • 7b0542dbc546edb40e70513e79e6eb6a2c8a597d: escape text in lexer

  • 68925af984c109b779723aed4f8936d897c3464d: refactor error

  • f21f30f3401f67be3046cf05cf32aa2335852a75: require the root option if the component is "Root"

  • 099e60f25f8a43eae2e6dabe16f7b2037781eb89: use development Moon for MVL compiler

  • 69e6eec2eb19ce2702dfc458503a6bb0363d015f: don't add classes to components

  • 6c320cdb76f3dc76b7ccaddf02c358be32517e1e: enforce dot notation

  • ae20fdb4d94d01e9d91278aa60150fd1f302c453: use dot notation

  • 421a473b522237e3da703fdb243ffa4504fc3a8f: consistent naming from type -> name

  • 6b46e79de53ce219593f4686d40476213dced463: update events

  • 5c90cc536d1c5efde9a1318a68bd5a47c1643372: local static nodes for each component

  • 426714c73c3576542b2c0281c2cdbb0d30842806: custom hot reloading no longer required

  • fb3098df13f7c4ce578d39921d70bc5d6c641ae0: correct hot module reloading code

  • 4f643dcae22ee41bcaa5fb7870f4c1b72ead7bb2: lex before parse and use correct addClass reference

  • d09376d7ef7fcbe72387af410011638b0647189d: executable comment build

  • 9ccab573edf625b0656d1f5b30297070270c3cd4: allow executable packages

  • 7cdab52265e882301011199ae546860420edcd22: use cjs for mvl

  • ed927216d6674982e1ebb83f8baae4aa26268f04: build transforms

  • 66dadb6c9d491b6822e4a9fb335f82a7454a551c: use modules for moon MVL

  • 72c9bdcb21b3bd572ef0ffe8f0982a758b2a8423: update MVL compiler for new Moon

  • 2dac09053345c1e53095dd23f10c494db1e6425e: use convention for moon cli

  • ae0fdb077fb259a46ae15dcebcd6e00f37e71a66: add object shorthand eslint option

  • 0cd9a4a82f026ab276360068134ab40de04b28d0: use hoist optimization in diff phase

  • cd5eb0db7070d3f3863288f5148d7053b3fba7e5: add parser test for invalid children

  • dd0ced2383206f41ce1fb8d90a53137561345fbb: add lexer event tests

  • 1fff58789e26b6990ea4a3881272286281ea9291: fix tests

  • 27f93c858cb13393a1badfcbf8ce41b8a9f0d589: prefix default array loop iterator

  • 287aa85b33059ea539cf2712c667d6d8fc41a51f: hoist static nodes

  • acd98dc9e7a5224f72185f03d3a5c0d1611c39f6: add support for boolean attributes (fixes #238)

  • a51aced39c80f98284d4de1daa5b591734cf8692: allow key/value options in for element

  • dc07891c9bd2dbab2bfd7da0b7664d70132a29fb: add support for empty attribute values

  • 66a82f4a6e177abb3be24a448c932fb9cc8cebbe: use $event local

  • b823ad53690b3f55b0ada54245b66d7720c98f4e: iterate through if siblings correctly and fix empty else clause text content

  • e74b36d79bb0ea1f7efdc1b66020e59a2a740eb9: add for element

  • f071af6bf6a5fb73934fa1c12a553db75f0de981: remove fragments because they have no parent node

  • 61da3cfc63f1ff133f84dc35e5b36d5744100fbe: add if/else-if/else elements

  • 4c289003f99c8487ec15f8f1e09e87ba040da39f: new convention for loops and string concat

  • e2c1ebecc8912e5a2edf96f02d56b3df1950ea57: add fragments and children property

  • 844ff1a6f21c3e0d00cf880ef160738990077ac4: add events

  • 4008d25fc99107cffbeaae9db3ba2d936fc0bba8: scope attribute and text expressions

  • 9e5f907fcf3aee97f9af678a63e853b4f0294191: keep relative start time when executing and async execute on first render

  • fcebc0979459f8bcaec68e411349ac01b625f229: async execution of next set of phases

  • 0af617500ab9595909bddddc993657a6452e4eae: add expression scoping to data

  • ef8ecc960e95d22bb44bb3143eccdedaae9fee42: 16ms frame duration

  • 1a5ccc7c780053fe5a216f7f216d3d5c2248d502: 12ms frames

  • e980c3a2bb6cc36d17e191254de90865cf09362d: add global execution queue

  • b3caaf6f1d9fc49ab1ca5e47689fa07637554834: simplify component view executor

  • 78c0a58f722478f516e1c87652a1067c0e59859e: correctly cancel animation frame

  • b0fa4a54691681057bd9c1baee0bcce78516bad0: allow interruptible updates, and use shallow data merge

  • 7e6c93803b39885ceb8dbc6ad5f7341545f5da7e: complete async executor implementation

  • d9789ade110650c9e5f2a17d6bf2a41ce7832121: dont set children attribute

  • e1a0c21cdee631f1e45355a8dacae4f92504c99a: diff & patch phases

  • 51af06d5a630a89993b7eb5243a90316db4a9202: basic generator

  • 50d16b21286cf1c56149ca35b0c1b26ed579dd24: don't check loops for constant conditions

  • 0f8880203a3330da2a41c92b3a4979f3670fc527: begin first phase of three phase executor

  • f438d36193a8eb1c3cebe89e3734ce0e139f3abb: introduce a functional API

  • b61a20291634e124f55ea444728c515b863c71d0: async executor

  • eb32ee6a6e80c99aeb013602c8b7c78527ea4e19: basic working executor

  • cde0298e88a5b174df955e7b2995d3846f4ce48f: begin bytecode generator

  • 254411badfefc8436073605afa68e94df5c758a9: fix comment

  • dfe48dc2b3ebeedb9b7de5836f70b3101a1ad9cc: remove transform system

  • 9b50397b6692a5b6a0ca2dca796d1807883c22d4: add basic transform with time slicing

  • e0aa8ea8f87a3ce3f84553d884e89f7400a49586: correct type for view

  • bacde1e38b68d1704fe5496a15a878a078753fb5: document onTransform

  • 8bee151d734924956cea6611aaacccc87075e94d: begin work on instance methods

  • c4827e765e15ff6a497f2a276327a814edeab2ef: accurate error messages and tests

  • e3b9b042d739ce37c5435ceb6a02a336a5e61bac: add lexer error for invalid tags

  • f29859fac4f9c301365b60eabf295be011123ef7: cleaner tests for errors

  • aa6c5a79e188284ba02ee533b382c08e421f33b4: cleanup env checks

  • 64a02fe334d120c93cd9b75d83971971c6a95282: remove development checks in production

  • d73333fc7b89b99333b162d7a1bbb8744167d98d: add lexer errors and remove extra babel configuration

  • 154e80491b4dfdf943e30ac2d31adcbf8ed36177: revert changes

  • dd9d521f6b1a6182186d42cfeb87f10be81560d9: tokenString -> stringToken

  • b15297b1de587233a9dd4d724c016ff4db82e94d: more consistent variable names

  • 6bddb8eff75b3da3f2589fcb38204c26c3a627b9: consistent variable names

  • 1900dfad5ad5d5bead613313c90b64edb72fd3c2: add basic Moon instance tests

  • dc94f82b2cf2b03129d0bdd3a40193f73926bd9c: remove testing race condition

  • 4a3ac07c4c7d4d8196345f2f1080e2da3c3bd118: test in development and production

  • 3de8dafe793b1d0c835b4c579a45ef49a33c6aa7: remove errors from production build

  • fe8149ec93a18b59df89d234a60532aee5948a15: add lexer tests

  • 7d93cef43d768d2a68614b943dca70681b4ad211: update tests for parse errors

  • adf54c69aaae9f1855c7e3bac61da9aca035b8e0: remove marks due to complexity of newlines

  • 459389aa02ddcdccb06ace67a67ccfc2b70b47c6: correctly format text and attribute tokens

  • 3f5e63aee2aad8ef3c1e5b8a10398bee3a3e34df: add note about parse errors

  • 4446e0d6f86eb19c28253d885ba0e4f5b139d506: add parse errors

  • a24b21b57493a12756062c158b137ff85a640377: setup parser structure for errors

  • 6511d42403d6ce288025225a85223ec06a050030: remove useless header comment

  • 3257d9201ad68f3755c6954f1244d9dbad9dd0a6: clarify return logic

  • a477ef312c2eac30a48ac219c07b04a28a1c7b8c: update information on Moon

  • 464223507010a7bf1c98f55fd105c60772e0747d: rewrite Moon instance logic

  • 9d5a3f3eacece00ef913d836768961426854af5f: use correct comment formatting

  • 68dbca3c7111fc8a849a999729d7365a778f6e89: explain the parser

  • f3cbbe59529d2975b14617b8efb3ee6516c3e0a6: build with new lexer

  • 39d423abb939b908dc47cd13a764a9157b5508de: comment the lexer

  • dbd5e0065bf373641aa5d6935af6d5cfe4bdf8cc: remove uglify unicode output

  • 80480ece312cca2f69da205151b6d97f4ade0d79: fix release paths

  • 1d04a8f8699506df671401da499272dfb0208e2c: update release paths

  • f59e6509aaa192db85f127c9767157b0c81d8958: use latest node version for travis

  • 81dff6652fd046469ed61c70cc4ee6cc8d474b7e: code coverage

  • db03f20be1095abc627ae01531813a2edf2da630: correct minified versions

  • 1ebd492b6b2a6981fdd5cff4bdd44c441f9e6f41: 2019

  • 5e22c8016d2dc91126d1d15f1c0b5457989596ec: modular build and test

  • ef3d5042aabb5364e484ec71104f977ab5594e92: fix travis with valid YAML

  • b64619926418a8e69895e1a821485df2b4bf7059: hopefully fix travis config

  • e699901b8828189e30b97429d83209fcc6233acc: fix indentation

  • b50df57eee6e8a8d33125b50f28b06f9689c783a: fix travis config

  • 73faaf73e717295097b6e84d82a01de54e45d012: new infrastructure, rewrite lexer and parser

  • 322d1bdb375ecf2651d1bd2b31434c5e01dfd805: remove data function from mvl

  • 93426026625058a47421abdc3fe66a62b6c07366: require data

  • 67b32ae39283d7ba6f1b897e8ea9d6c846f52f5f: component init

  • 901f872260e83705a6dac122ed7339e347341c22: split up download instructions

  • eae52cfb51b0ede258d857cf0728b8ff42230089: update npm build

v1.0.0-beta.2

5 years ago
  • acda7ba5850841eff1802e1b945442751e934c95: v1.0.0-beta.2
  • 7f713909658598520cb96913f0c72c43c1f6cb68: update release process
  • 81ca958cec29c483ca1146fdb76eedb18367f6e9: single-file component support
  • 558c471faec75cdea1e34eb099d12f4d8ae7a84a: update slash
  • dfc81f5e8d5ffadef1a1e59733951984df500672: use filename correctly
  • 5ffdd64f2cb7de3d73aa27c1e8185cf082797556: remove filesystem dependencies

v1.0.0-beta.1

5 years ago
  • fe7cfac3a315d0c397cc0c5410e5864bfc4b6f72: v1.0.0-beta.1

  • 300d9bbdd842809ed42f742aa93413b1b99f1eba: prerelease

  • 3601e1818e53fe180f44067ad4e2082ccd156185: correct commit release

  • c79591803010c69ca95a034d360f9c75cff4fab9: 1.0.0-beta.1

  • 12b4140cbb936a2e62082cd74a264a3e710b2f53: 1.0.0-alpha

  • 760d774cb0c3f3870a6e08b49c61c4e6646a4426: remove tag

  • 7cca02bd59053610450013ce5c6f91544fb2daf5: push tags

  • 630df3c6eb4212cabe54557180e278b9d7b4bc45: 1.0.0-beta.1

  • ef0807c3cbdda6c344a01c1d3fd5d059d2b6a9fe: 1.0.0-alpha

  • 1207ad84597848fdfa8212fd398d840ca068b583: stringify log

  • 83eac6fb2916ebc26d12e532f594f17a5870c33e: remove web from master

  • 45130c40d11de19d77d7a75e97bc5bbb0f552935: push after build

  • 2b1b1e57f70a65403c4a9a8e1c501c52a9bbd89f: Moon v1

  • 806aef1999d6202282c407e7a1a918340f34a5e5: tab

  • 7587745802f403c0d32cccc7a4f7ec1c60b173b0: Merge branch 'master' into rewrite

  • 3d3bbe6886022d255cb53b3a9ee7ebd51c56c427: add build scripts

  • a1cd9c54d07bb0252b08f10d679e8ab12b2e89db: release script

  • 8db839f11bbcaa7e68586926c9cf7d4abf8789de: update css re

  • aea1806be7a3a6a878291d5947c679c74c54d96d: remove unused file

  • 4c48829386d43c7b74141948a1521541e7e1a791: new hot API

  • 1de8c9b327cdf3d5c65e2d4bd0b5018e70c2b224: add hot utilities

  • f61723da6b42243593503ff721edc9656991386f: use scope css

  • b98736086e5e202ebcd4ded692db511435cabbf9: export css scoper

  • bca589226eda7f30c7543db32f14f3e649fa7e9d: export css

  • e293cf1f609f807276871efc3db1d7a37182c3c5: export file info

  • 6e73fbb269d2803d878400d4e320e3d3a6d68e02: export libraries

  • 5491005af8c0f8a95a0246188ed7897a533f5a1e: remove deps

  • 06d37ade486bb1cdbd182cb8349ebf111b692e01: add css rule when scoping

  • 21683b380c49c118f9b9be8ef0dd28c3b3013420: require correctly, compile correctly

  • e6fccfbe5a73ae429cf18fe3dc85a77716d8e0b8: fix syntax

  • 2a75c5d05908fa3780eeb932f8e79101652b53b1: require correctly

  • eaeb87365074dd194a36ed5db4bb9bc03716b9e0: add css scoper

  • d6201efa7cc26f1e44f9c14fd77845218be18c35: work on css mvl

  • 4960970b1f9d434740316b46c2379ec9a2044e9e: export parser and generator

  • 7c7bef3b0559817438f03e850dacc108f5413ac5: use contents

  • 4b871c97fa9afca5d428e4a1a3a1ffc4d30405f1: add start instruction

  • 2868428165d0dda2963caf133c5f972b407a4183: compile created files

  • a206f796c69a2a0e81eb2f8b37092e9624ce5eda: consistent descriptions

  • c6afd1063e0074e3e532acff2e0f5bd86af669bb: moon-cli

  • 792803678333861d830d1f4ab7b582daf705eaf7: deps

  • a9122a3bc6fdb572e376b8191e5209d53a451d4a: add readme for moon-mvl

  • f1630ece082817a3a95d8fd4cc1232ba3e92e03d: add mvl

  • 01063d90ce7b4e5e886e512921678196b87ed13b: move release script

  • 60ef57abd860cd7a3e83c406b26bddf58183208a: scripts

  • 25da18214982b9c6a09edebe67f55b6345556690: infrastructure

  • 9c99ab180f9cf05e378b783f9e9e99c58a4ab69d: finish up guide

  • d393cfe3cc2ee8cd4c6e9f5ac6f91cc573cce67a: begin guide

  • ec62a881cc20356fb0e31958215b04387ef4d8dc: add coming soon

  • 9661801931beb825be1d9aaf55e68d7584e4d1c4: add examples section

  • fa17f7e55bd41148ed3133a5b29ba510ddd9c2c5: finish up component docs for now

  • c79eb0a93134d6f16ee0170a6c7a8d90afe5f358: add component arguments section

  • cbdcaebe30db3d6b83a5d59a82b94b1f4741817f: update button styles

  • 0f2059c17e773547aaf9b43167bf3d9dfd762810: add component definition doc

  • c4fe44de3efe796dce9b59ba5e7e04abbf246c07: write about alternate syntax

  • 8380f6c3eea82bcdd0fd0d9d3064e5951b7c73b1: add runnable examples and loops

  • fd983fd3874344344125c0eda292920395a0f542: finish up view events

  • dedc90a7c70489cecb2ef9d95dda35702172c52b: add more data docs

  • bbffecbab71a5c325a8613eac81c81a752f8875c: add data

  • f0c96cb5324dc4438a6e328c2787e3b853c9989d: add events

  • 69cdf35b345ca362f99f72ab4b0e8c508df31c9d: organize

  • 941dc5ce56c84c4c49c21dc790fe1ff3e35d6abc: remove local

  • 7d009a74388c48d6fed3345eb8324b89cdc03fa4: fix syntax highlighting and begin view section

  • 83783055e1e6200b3091dfce490bca4198e575ca: add about

  • 661631e161cca3b2e4881fcd9acd24799d033d58: basic structure

  • 40fbdb4ce685ccf5a80cef6afc025ef9fc21c85a: start guide

  • 61d0eed716517ff13e93aaeea7c8745d1544c513: slight redesign

  • 378cfe07f7f828b0496370a070a97c8843b135c4: spacing in fast example

  • 132019085b3c1a3828658bf44e0e9e6912c916a3: update fast compiled result

  • 37f305105045e4393b3410fca2be81ee62ae94cd: update cta links

  • c0af2f6a9e5e8401d4c02bcaeb08f59b8cb3595e: update fast example

  • 4a76c41cb497e4e67c3b5ea090fda4b0ae28f71e: add nav

  • 67de7da665c41d1f52d391f7495f3a2fa74b7293: update header styles

  • 93a3bfdcb5f55ba60bb4d41e286cd7f9e152c129: update example style

  • 878d64cd1bdf6e1b0915a2923510748d6c34305b: update website

  • e4b97d73ecc108e80f9fbd5f61ab943ea7679bff: update code colors

  • b5c71406a270899e1d12a9a27cfd691f6e2803fe: update logo & colors

  • 3151bab94632bca8766a26bf162536b5e0cb0d21: update todo

  • b8b70d7567535a442c715b32ea3e7e08fd4e67bb: fix component initial update

  • d6200cc9c8ce5e25a60fe0a39e793c58cba64671: add basic components

  • 1305a50b87ae73a82d288c37a27d3b39d6573fdd: reorganize directive runtimes

  • 3562b2c1c29aa0b03b4dab7e53bc01a44e5e9cc2: use correct view create API

  • 3cc843c805d4e8f307eb8bdb3b7bdd6bb80b9193: remove reference from API

  • d7749e22f48dc1f4987b8a242f63231ac015f6cd: create using root and reference

  • 446d549a6cc95b1eedd1d2f1073c0bb872312b41: allow precompiled views

  • a7d6267b322339ee37cd5149481ebbbbf5d4fe71: update todo example

  • 871e5984e668d05a03b1ae5a208f091511e739cc: optimize events and create bind event

  • b7fc498c01cfa2964fcb35a378a1c6f88b45e40b: update example

  • ac2cc373ae11793fe3a3885132b0393a45e412e7: fix #for/@event locals

  • f0614751295ea1d2906e4b49c6c78d1d123a1d46: add variable support to #for

  • aebb99ed61a151a7f63880d2bcef176bf1f57085: add basic #for

  • ad94c7aa7037021cc18479ed6ae686280d3d764e: spacing

  • 0b19e6c18dea481ad3d840d364892f45a91a1eae: build

  • 24053df9c175caf10e6b2977565b4d1b7e33706c: update option shape and correctly implement directives

  • 42b41573f8ae676e0089cbb8b43bd3672d410c2a: use variable based compiler

  • bb448e86ffb94e03743d6de5c8ffdd9283860f01: consistent colors

  • fdfc6cc7d604bd57804b79546f701b4a076b313f: make button brighter

  • 506cd379efcf06a2007423f762f770572afad767: add #elseif, make attribute values selfish, and fix attribute with value bug

  • bb2265c694c89f38083b18b92e1a3fc69000dec2: update spacing

  • 127ef76615bdd12aeebacc6b3a2eceacae327278: update landing

  • 6d4ea3e2e507ceff207ff1e65ba5bae6154c5151: add web section

  • c8b174bb206a5d04f5b12c19972d70a3a878c469: add basic landing page

  • 83b18232876ee59aa8b62b2c0ca4450d45e3c345: add events system + #if/#else

  • e171bf501187d4724097588fa5b9b3422436feda: update website

  • 5b08686eb3b429500b2616442f97d1c73b5eec59: add #if

  • b55f09fcf9f1af090896e5011b997543379cccdf: clean up conditional implementation

  • f2e8484125ef6f867edf66f2aa34ab4d2966a7f4: set -> update

  • 047ac2e2c7e00a57f95f5a53f1ae0857705f89d8: add #if, #elseif, and #else create

  • 17c25441749de0e61c439f7ed09fc2edd3eeba53: add #if #else

  • de6c133c3d851151950d080e1fe3f8418ff7d15d: new syntax: events -> attributes & directive -> elements/attributes

  • 24c9e4e8a729bf0f6922f8bcdc48691e9a68caa1: add destroy directives and user-defined m-text & m-comment

  • 878ec4f31d37aff3a50e2a725a01fef0551a353f: new directive system and create/update/destroy

  • afaecd9411bb2bb0f35f178ab33f39e0904f9dcb: new directive system + destroy

  • 16271e867262d4f84c48710715bf39fb10b1387b: add m-root, locals with $, and change directive system

  • ca1b73f520823f8ebc4be7539a3cd1118e0d7bba: ignore whitespace-only nodes

  • cc3070fe9df92d11ddcb76c2fa01185a984df3a2: update component API and add mount in create

  • 9762139f072706b52b976219b84ad1c1fe4ffd1d: use m.cae

  • 7c6ae4863017b84762e01ed8bc8cb25516988642: don't update directive in create

  • bca8d2030135a4f13b75fb726b90e5283944e0ad: update directive system and change locals & structure

  • c099ac3634092d760722c4fc6a09e7a5dd5188b3: cleaner implementation of directives

  • 1755adbabc0019cbfb28301e1b4e42ceb3dd1e0e: add updated hook

  • 544ce31b0c19c8b5a5049ac3c29daec13327bb5f: remove mount and add created hook

  • 7b3fa8ee2db25bf0f5d32557c6f22c9d2c51e661: add events

  • ef28850466b432d38abf3fde86906a6c7d048a2e: change API for options object, view array, and actions

  • d2a92b7342d6933323b473d467b73e7615138553: update attributes, add m-on attribute

  • c1235821fc22aa7b9ec5b1ccebdba08f4b52cd64: compile arguments & events, consistent formatting

  • 8118cad352238516fbf06e6e6a7e7c3bc5705b87: update dynamic expressions and attribute expressions

  • 4b41d731fad61d772df9ab9ce241c50246d8e172: concise code for creating attributes

  • 2ee4e9edb9879c1dacfffe4fc6927a1b22722ffe: correctly mark attribute as dynamic

  • 72aca99405d5da5adb36a99a60fe649415ee39cb: correctly mark attributes as expressions and dynamic

  • 347af976fb01938a0a52f1755627fca9e5fb5fac: create attributes, fix generated code formatting, and create case for no attributes

  • f2ee4dd7f586323b30db0a4a3781cda07bc0e618: parse attributes

  • f3692d5eedea58f10c3bbcaab69056215731a712: add global components

  • a260014c3ba4ba27582227544d7a6ba3a0a85cb0: remove m from locals

  • b859484384c3cc46adc804d084d5a06be6675ba2: create component constructor

  • 60c2c603900e80a0ecfa06c26ea3249e3ddf93d3: remove unnecessary exports

  • a446ca4484849aa682c425ad093929af2fc98251: create with dynamic content

  • 1369fd243d27f53faf269c25b05f787e3110f263: split up generator

  • 03a05909c00bb2b1842e18d6a0a051ce6a63563b: split up parser

  • 612b95a8eacbe4dbd4fc874cb0109a39fe141e2a: add eslint

  • 455d5705d9138ec325086f7792a7b35c1f1f7b43: remove gulp

  • b35fe7e70d35ba2eeeeebd811ae91d4fe5d809cf: add default data and data in root

  • 588d008ec7673112dabaeeaaa6cde365edd276e9: correct dependency path

  • 3ed828bded01067d499e6343085b4c9b8c1aebcd: build

  • 4fd3e6bb72435c9c860888517c871bcb14a3925a: use mapReduce & DOM utilities, correctly mount fragment

  • 4d53a3c61e41029307def97f73bc289df8d2d083: add DOM utilities and initial update

  • f05b0281ff41e470097452644abf6cb0110796b2: add mapReduce to utilities

  • 463b553dfd3565df386b3d0974280ae2ac21d00b: add update

  • 6def4af80c2e8ab222c26027e3d4942264d7e9d5: generate create + mount for expressions and generate dependencies

  • 9ab89e5c5d30f8bf2695305c6af43a3b142f395a: remove instance from locals

  • 91238d885e5bceb53206da7c0553f958e3b7d731: generate fragments

  • c1e5a81b34af15e8c5cc8b52e39cc500054a8156: add fragments in parser

  • c438218c55c4b36a1acc7eceab57c81c3cd4c922: parse expressions

  • 1da4378a753d9e8c06907a5d8fe1b8ce959fa70d: remove unused regex

  • 01367160a1326485b219a1da6b47b1fc5e6f5225: parse comments

  • 6eb47d2c9948b7e56e3f0632239eb2c92dbf6bc6: add escapes

  • 71f14723bbee06ddcb560f67a4fabf521cd2f5c0: build

  • ebe2a2f7e07095236cf10906a6d730296d96b708: better error message

  • a00d869a23d6bfe0b31019610511831effaa69eb: add text content

  • 1f0857df3f43a00c79b58fb6908fe44694c3591b: correctly mount to root

  • 1e4114a50df00041fa6e7b6ab1b4a1909bba9e0b: add mount

  • 4807076a2561b6dd5122d8df6db370ea9c903d57: generator for creation

  • e20a58b565f367ba7b34fa0b8f03951ba0329761: add root instance

  • 74bf27ddba04d7a59374efd07c4000968e0d905d: add create, mount, and update

  • 9392d5f483b02341ad1c6972faaa8b7a1148709c: m-fragment -> array

  • 462b86e1ad71eb49a8d74e6a284a73bdbce3c3de: build

  • 69fdd4266d5ccc591ed1bc04516431a638c4454e: add basic incomplete generator

  • 5c069211a31434fe52a72d2f5776fe87994ec250: add parse index to parse elements

  • a8a52fcceaf2d0c7045efca5aebb782591441318: add component and root instance constructor

  • 7189dca04d4532bae9db634dcde3820b1b8b77bf: add sizes to build

  • 107c1e54ec43d18398cb287faa4203acaff7ae73: remove global

  • f86bc7aa479fc97674bbd7ae5789a29139e14856: update structure

  • ca49d0f4d699555069652885f4372735aa664904: remove file names from imports

  • 1470b533387a680f6ff7151b05831ad1031e63c4: add compiler shell

  • 0e080bc8993880ebdaec0909b0450a3e03365927: export parser

  • adde9e421ea838a59d79607e082f6225e2b77ffd: correct error message for unclosed tag

  • c621cce98c4803cbce9f73ce0196b963baf28180: use config in util

  • 946b5a51ad0f7e2bbf19868d29afbc2250a2745d: install global API

  • c13ac49fe6d28b9a2d039cc128b80ed596fdcf47: basic Moon template parser

  • 57f89a4bad6e72bb5311b8facad9ff461718cc5b: add error utility

  • 50d19e10ad3f16ef0d23dfc4c3515d52e3b9de59: add Moon configuration

  • 5285c631717ba99e52f454fb3a820ff15c84558f: use env variable MOON_ENV

  • e3b28565f470b8239730b2fccc7ffca098c39f8c: add plugins and env

  • a95445827ac429389dfb2fb023d4c5db80da691a: improve style

  • 166dc848ad9f50b91ef2bf712c2dcf0e6897531c: remove current Moon API from tests

  • 2ec94b4b21efa2c4bf087254f2b7f27bff331262: stop saucelabs for rewrite

  • a0f4eedd9e83332da2ba9c6799a116f9b82b34ad: update browser support table

  • 1299977884459933cb4a0bf50d8e5a9f1db61399: refactor index code

  • bfb231e3b86def95d7a702f9b609949b51c4c3ef: development + production build system

  • 8a43b17913f5f34583055f4a2647c7228a0aeb85: update build system

  • a81a4561ae2a6dc68e53ec6a0677941ff9d143b9: remove old build scripts

  • 02ff14fa82cfb8279240d2f59f4bfd2bfde8801c: update karma configs

  • c501192536e6f58817565a85a5a34f406c7439f7: update travis scripts

  • 413bedc4f47e9915b469f6e83496761a169289d5: rewrite build scripts

  • 8f0ec5ea46fbc5546977e5a67f34c0cad35378b1: remove benchmarks

  • 2a493ce349e0c67c4bdbd7985ab276d59621386a: rewrite source

  • 10d3791a469a8c388e22c6a92f0cbcb90036e600: rewrite test structure

  • f3b700d3ceffff21501a5c9a79df2819d9810c34: rewrite package details

  • 029aae61924935a3b82e163d204ed512d9aebc1a: remove file structure for now

  • e7776767f494a76ae8d72e49d4048f2eb56c7b36: wording in description

  • babbf8b1c02342af944ea547c8d9cf5a2867fd6f: see documentation

  • 16abac3c5aaae8301381185faeefdad3e24a4bbf: update website (fixes #219)

  • c910a5aa8fce730727fd0a9a4ed093d6cdcf638b: update website URL (#218)

  • 3365188de2791a3373e9d0ab03ee5ef12c67778a: 2018 in license

  • 7a1eafaef80e5c46288410f2f0df7a9fd86d4977: 2018

  • 76651e4abaa775c60a08469fff243783699b79d6: consistent spacing

  • 02e22ad554fb1f59a5e854288180376093c4b113: simpler subheading

  • aac29ee5e03ed3c7e305e02b9320ae6b2951337a: refactor: use convention for chars

  • e6208979ff29f45584c92238871b8123c1bf26f8: feat: static flags & m-dom directive

    • Compiler
      • m is now a global variable
      • Lexer
        • attributes is an array
      • Parser
        • Every node has data with no flags
      • Generator
        • generateNodeState
          • Compiles text values
          • Compiles inserts
          • Compiles attributes
          • Compiles directives
          • Compiles before + during special directives
          • Creates a list of after special directives
          • Compiles child states and adds static flags
        • generateNode
          • Converts compiled nodes into function calls
          • Calls special directives after
          • Returns static node if static flag is present
        • generate
          • Marks tree as static if state is static
          • Uses generateNodeState and generateNode
    • Directives
      • m-if/m-else
        • Only generates output for m-else
        • Outer if/else nodes are always dynamic
      • m-for
        • Always dynamic
        • Allows generateNodeState to restore locals
      • m-on + m-bind
        • Uses new naming conventions
      • m-dom
        • Adds dom property
        • Replacement for m-literal:prop.dom="value"
      • m-literal
        • Only for literal attributes
    • Virtual DOM
      • HyperMoon for text nodes requires
        • type -> type of node ("#text")
        • data -> data of node (only flags)
        • value -> value of node (text content)
  • f6adec5bd5170860fd7446f75c0c366226a1a0ec: fix: change flag values

  • a5192d8164097ee1ddc16154bf84ed759afcb25c: refactor: order constants

  • 64fb32d08539cdc08faa661854fd2c1202dfdc1d: fix markup

  • 51b3ae4617aab2f37e35ae78a96909bec7446e19: comparison to other libraries

  • b50906d0fd287b5ac6ba587fe4ed7dcbade065af: change description for CLI

  • 597756c967fdb2dc99941dcf4b752f6c7953834f: refactor: add flags correctly

  • 5dccf1d764e9b5fed60a33da24c4833b0150c6d8: refactor: vnode data flags

  • d459e2dc234ee546b2f1d338cc7123ed875646d7: perf: remove replace for static nodes

  • 33555213a687b211c7cb6999f69aef9979c25337: add virtual DOM hoisting tests

  • fe3f4eeb43638d02b80445ccfe9512fad6351ea5: wording for virtual dom trees

  • 37b0513cbae00cda15e05842931a9566def77041: explain uses

  • 17b3b442567d73217450e09c10b1ada2c359d848: update explanation

  • 1ddb983e8a0b83b607475f3fda8ce5e56115fa32: change explanation for another library

  • d63c607e63b1da3d60bdf70f241c006dd1737cea: correct comment

  • 18514af87879b471b73c9b8f7294f5473a009902: change description for router

  • c135b3fad1e16572a41b3ad3d76e5ac924c977fe: fix test quotes

  • 9ae71c40a8d63a3b670bd6508f77000e6723f803: fix: allow whitespace between aliases in for

  • b5664511157b09887a0b40392fb9097021ae27f3: refactor: Consistent Naming for hydrate & patch

  • 451aad12f77fe810825e79eec9930ef7dbb542d3: refactor: Functions & Consistent Naming

    • patchChildren -> patches children
    • operationNode & operationVNode
      • operationNode -> handles low-level DOM operation
      • operationVNode -> handles mounting/destroying components along with DOM
    • consistent naming -> root path + properties in camel case
  • 74ed50ce8c3846c4083d38043d69ddfb13b9bce4: fix: escape non-breaking spaces (fixes #190)

  • 7cefee2b604bd351fd51646119d47a48eaf17bc9: Add Support Section

  • ac315d3ed14eddfa045a2658ab2e05a250f10e66: Revert "add patreon link"

    This reverts commit bd6dc53b784035dfd956ca287837c883bee3636c.

  • bd6dc53b784035dfd956ca287837c883bee3636c: add patreon link

  • 48e450edc1cc9a8cb78c62ebc26ba0792c49886e: fix: create static empty node for (fixes #179)

  • 5b305a6b6e426692c6ca2c639f2b3ed768974b09: Optimize loop benchmark

  • dc360377a5a4081bf38e2409c161b81ef5c89470: breaking: Template Compilation

    • generator state
      • staticNodes -> static node code
      • dependencies -> method and prop dependencies
      • exclude -> global variables and keywords
      • locals -> local variables
    • on directive
      • event variable is available, but not by default
  • 99d361bcdbcd76b0ac9aedd02f2192747356441e: fix: compile DOM props once

  • 40d27744823164555d6163854924eea4482623e8: fix: deoptimize dynamic DOM props

  • f2b68c7e917c843533c84fd57b8b7954a6fcc6c5: improve dbMon implementation

  • 04482efe65018d645458a983bf917191f3e082d4: breaking: Rewrite Generator and Optimizer (fixes #146)

    • Compiler
      • template
        • fix bug and mark as dynamic even if referring to a prop that has been referenced before
      • lexer
        • store argument in arg
      • parser
        • parse text nodes with a type of #text
        • store index in node
      • generator
        • rewritten
        • attrs can be undefined
        • hoist static nodes (#146)
          • generates all children and becomes dynamic if a child is dynamic
          • if dynamic then hoist static children
          • if static then return as usual to let caller handle it
          • stores static nodes in instance.compiledRender.staticNodes and initializes them at runtime
        • optimize by joining with a separator instead of substrings
        • returns output and boolean representing if the node is dynamic
      • directives
        • before special directives are expected to return a boolean representing if the element is dynamic or not
        • during special directives are expected to return an object containing the output and a boolean representing if the element is dynamic or not
        • if/else
          • if the condition is static
            • it will be evaluated once
            • no optimization will be done directly to the nodes so that the parent can handle it
          • if the condition is dynamic
            • if either the if or else node is static, then it will be optimized and hoisted
        • for, on, bind, literal
          • use new API
        • remove m-show
    • Virtual DOM
      • patch props
        • if vnode attributes are undefined
          • if node attributes aren't undefined, remove all of them
        • if vnode attributes are defined
          • if node attributes are undefined
            • add all attributes
          • if node attributes are defined
            • add non false vnode attributes that have changed or need to be added
            • remove false vnode attributes along with vnode attributes that no longer exist
        • execute directives
        • add/update DOM props
    • Tests
      • update all tests for new API
  • 373c098754c8732ffe4466a8467698cf7d00b305: add tests for having multiple dependencies

  • ef7fae8fddd6fe845eed343e2be1625123930bb5: add tests for static directive

  • 3ab98797c30e50746bec44bab6ee54026f634739: add tests for computed property cache

  • c3c45070de96a7b2bddebd1b8383172fcfeded46: fix: warn when root element is text

  • 517f30d655ed20d5357fc9463ac1c247a7ede8d4: add tests for updating the default insertion

  • cb518d13c933c00bb66426514fdaa6411f85fbf8: add utility to capture errors when testing, and add tests for unknown directives

  • 031cfc00c3396de7695b176583a8960d67b3ab4e: simplify intuitive API feature

  • af0ce48c674e2b7a14b05625bbbcb890a3ec8b35: add Slack badge to README

  • f8887635cb8aa67843477dd6ae5a70d7fda4d2f5: add tests for errors when data isn't a function in components

  • 85d155e25bf05c1ae18fdf6df858c9105a981ebf: add tests for removing events for a type, and referencing undefined values

  • 591149457e57c1f1daebc0fb53dcf850bdcc5301: add tests for invalid expressions

  • 64438cdcd05cb552935f160fb4789ea6f0f6ff1e: add tests for empty attributes

  • 554f003721f260719209ebd0564b96944164d3a9: test unclosed mustaches

  • a05cc3bf77d50d3674d5f6937ad69c2e6f4c836d: mute logs in tests

  • 250a30b40453ac781dcac5a3229ae139ec3ed0ad: refactor: tests for self closing elements

  • 3e931b515c5bcb278d499babacb7fb4f6c3a56c2: fix: remove "m-else" from directives list when compiling

    • "m-if" already handles "m-else"
  • 74fbbea12a6bd96fe7e69f4ad9603700549b9a0f: add tests for destroying components by replacing and removing

  • 68bcfad6779e261cfd5f8ee67f25eedde1c3f72a: add tests for xlink:href

  • f7a9ee44f2b8b34d48c9a5d620f2fd589216e97b: add tests for removing items from a list

  • 3305b1d24b2b7bbeaeebabd5e294c61912f8dc68: refactor: rename delimiter to separator

  • 2ac841d84fdbaaa2c0d2c204020d3e4182761664: improve test suite output

  • a5d2b8905a98f0a3c93006a6d608719bdd1a6500: fix: don't check for different root when building (root element can only change during hydration due to component mounting)

  • 18ffb75ed7286409f8d730785be8550d191a3da6: breaking: simplify event emitter payload system (fixes #153)

    • payload does not need to be an object
    • normal event handlers are passed with the payload as the only parameter
    • global event handlers are passed with the type of event and the payload
  • 9136b0b60e92d364c965d00418a160ba02157996: refactor: remove jsdoc comments from global API

  • 50c91f55bb218adb872dc9b936cfe1d1f6d9a67a: breaking: Rewrite Virtual DOM Engine (fixes #158)

    • Root
      • any root element doesn't have "moon" with a reference to the instance anymore
    • VNode:
      • "meta" has been renamed to "data"
      • "eventListeners" has been renamed to "events"
    • Hydrate:
      • hydrates children, and does work in loop
      • uses inline DOM utilities
    • Patch:
      • rewritten
      • uses inline DOM utilities
      • doesn't use "dynamic" in favor of VNode reference check (#146)
      • components
        • if the component has props, it is a deoptimization and the component will be updated (#158)
        • patches events (in case they changed)
    • Components:
      • if creating a component using the constructor, the following options are available
        • required options
          • "props" - values of props to merge with data
          • "events" - default events
          • "insert" - the default insert
        • optional options
          • "root" - root element to mount component to
      • all components are expected to be pure, meaning that the output depends on the props and state only. the component won't be updated if none of these aspects are dynamic
      • functional components are removed
    • Compiler:
      • Parser:
        • will no longer deoptimize if an HTML element is custom (components are expected to be pure, so they are optimized depending on if the props and inserts are dynamic)
  • d50505e83619a25e85550731c203230de62bc99d: refactor: add note about parser stack for non void elements

  • 8aa0f8fc9024cdcfb356dd3924bdc09abad778fd: fix: allow empty attributes (closes #157)

  • 6f5acef24bfb5877bf7d22a98daa71f6bdd12fe7: add more details about the 'util' folder

  • 8d1a65e9955c8f318c1d0b90add718799b43b7a2: fix: don't run browser support tests on PR's (fixes #156)

  • a19acffb50ceb96f47a0ea93e9debb5cd9bd24da: refactor: move hydration to mount

  • 959830911b9b431cba797cc75ea7f279a89f5981: refactor: consistent naming when diffing props

  • bff7b0985fa883801250e6d2862390eb710ea694: fix: edge cases for diffing engine

    • update DOM props and directives
    • always diff children, even if innerHTML or textContent DOM property was set
  • 342f08093be445def80882efd125fb75b9c570c4: feat: efficient component mounting (fixes #150)

    • component constructor can take "events" to add before "init"
    • "init" is called before "mounted"
    • props, events, and inserts are available in "init"
  • 7022c3effae25f7b5d01da4652cb9230c8913d57: update variable order in release script

  • 37e696c4d773f9cdf01c6697a444816ba29a6085: refactor: beautiful changelog generator

  • 71ee4fbc9ac261dedeff64a251491c4b331da3f0: refactor: add implementation details about parser

  • a902ea23b11e487e42220d6fdc088c197700eacf: refactor: compiler and generator

  • dba4241eacca54d66ac8cdb6005b13eaa42430e8: fix: make compiler output cleaner (#144)

    • only concat when needed
    • no inefficient checks for dynamic nodes, template compiler returns dynamic state
  • 663709095bc4f315097cc5926b3b666f42807885: breaking: remove event modifiers

    • simplifies "m-on"
    • can easily be added in event listener code
    • keeps core minimal
  • a83fd4e129bb7c51ca2e5ea646a59e6f07ad1e13: breaking: New Method API (fixes #141)

    • methods are stored in "instance.methods" and are callable (the context is changed)
    • methods are constants and cannot change
      • "m-on" will optimize all method calls unless they pass a dynamic property as a parameter
    • methods and data can have the same name, but it is considered a bad practice
  • cf276f7c0da2044cba5b63058914a9401183dc76: use es5 tests

  • 4d10341cabe2c9a1d14c961da3a8bf3e63d78fae: make tests IE compatible

  • 66f9d09f9b68b5023ad4ce077d7e762782088fcb: fix: correctly parse multiple void elements

    • tags are now case-sensitive
  • a1a8994e5ada32451e014a54a9bd336e2c15c4bf: breaking: Rewrite Moon (fixes #127, fixes #132)

    • compiler
      • lexer
        • rewritten
        • ignores whitespace-only text nodes
        • can handle any whitespace (#127)
      • parser
        • rewritten
        • uses a stack to keep track of nodes
        • doesn't warn about extra closing tags
      • generator
        • cleaner implementation
        • cleaner specification for state and special directives
      • template compiler
        • rewritten
        • uses a single pass and eats leading/trailing whitespace
    • directives
      • fix edge cases
      • beautify code more
    • global API
      • remove "Moon.util.extend" (not used in core)
      • make component creation faster
    • instance methods
      • event system
        • refactor ".on"
        • refactor ".emit"
      • mount
        • refactor
        • increase performance by caching
      • build
        • removed "patch" in favor of "build"
        • handles hydration, diffing, and replacing the root element
    • observer
      • refactor
        • remove unused code
        • remove unused methods
      • computed properties
        • simpler caching system
          • when requested:
            • if cache is cleared:
              • captures dependencies for property
              • any ".get" will add the property as a dependency of the key
            • if not, use cached value
          • any ".set" notification will clear the cache for a key if it is not already cleared
      • methods
        • refactor loop
    • DOM utilities
      • "appendChild" and "replaceChild" accept a vnode instead of a node to check for components in an efficient way (#132, #120)
        • "appendChild"
          • if component is found, create a dummy node and mount it
        • "replaceChild"
          • if component is found, mount it on the replacing node (will diff itself)
    • utilities
      • remove "extend"
    • virtual DOM
      • refactor
        • remove unused runtime utility
        • change code style
        • warn on missing directive
        • remove TEXT_TYPE constant
      • hydrate
        • efficiently hydrate children
      • diff
        • fix optimization case
      • use "dynamic" property to indicate deoptimization
      • replace "isSVG" with "SVG" meta property
  • 010a11b9372e7365e8d42cc78387a930ac6b5d16: fix: use 'meta.node' when removing an extra child when diffing (fixes #126)

  • 39b654a50e9e9fd9128a1446a508f191ff383de4: breaking: remove 'instance.callMethod' in favor of 'instance.get(method)()'

    • cleaner m-on code
    • warnings when method is undefined in templates
  • f89d24e0701347e1b00ee14771b20296a981f711: fix: edge cases for mounting components (fixes #122, closes #120)

    • appendChild
      • if a component is present, it mounts the component onto a created DOM node with no event listeners or props (no call to 'createNode')
      • if a component is not present, it will append a created node as usual
    • replaceChild
      • if a component is present, it will mount the component onto the node to be replaced, and the component's diff will take care of the rest
      • if a component is not present, it will replace a child with a created node as usual
    • tests
      • add tests for append/replace component mounts
  • 56d0bb4dbe23b29defaf13340317f56dd688b0c2: update tests to use m-bind

  • 289a5321a6a72991db414245124469b60e0eea08: breaking: use 'bind' instead of 'model'

  • a67e761729db3900099ee57009b047d74aeaeb1b: breaking: use 'Moon.extend' for creating components

  • 3fc782ce16f060c00b1fd048d2df0cad421fdbdd: perf: advanced compiler optimizations for special directives

    • special directives do not deoptimize by default
      • it is up to the special directive to decide
      • this is made possible by the hydration engine, which handles the initial render regardless of optimization
      • compileTemplateExpression returns a boolean showing if the template was static or dynamic
      • deoptimization is only done if the element must be diffed every time (m-if, m-for, m-model)
    • m-if, m-for, and m-model deoptimize
    • m-on deoptimizes only if dynamic parameters are involved
    • m-literal only deoptimizes if a dynamic property is being set
    • add dbmon repaint rate
  • f3fa265b4a753abe6a95124408db173f280b2707: refactor: double quotes for strings, and single quotes for characters

  • d26dd245169511256c9992a71566ea723180ad12: fix: optimize on m-ifs next to each other

    • they will both be replaced by text, not each other (like m-else, which needs to be deoptimized)
  • c23e57790cfcc1ea03accb80693fc189ff3c5087: refactor: remove unnecessary code (#117)

  • 81fd585816ebe13a2499254e3bf3fac8438bbda8: refactor: remove unused variables and const for in

  • a28ac72dbf523383ec87b64dc8566e614c67124f: add tests for merging w/ existing events

  • 5b24e1e23c1a9781977af52a21215a5caeae2fd2: fix: merge events for parent-child components correctly (#120)

  • 5bc255b31fc2e4da7684020aa368730a87d22844: refactor: don't initialize counter

  • 4a42985da8ee9e108f65d1b666347f19cf7cdd2d: breaking: remove support for custom keycodes

  • de6471e919d08f9f24f8d0fa5eb3a06bcfef4955: fix: optimization for m-if/m-else, implementation of m-for, add m-static, and introduce data storage for special directives

    • m-if/m-else
      • doesn't use a stack
      • two m-ifs next to each other (seperated by text) are deoptimized, and so is any m-if/m-else pair
      • an m-ifs seperated by an element are optimized
      • works by setting a property in the data on the most outer deoptimized m-if/m-else, and re setting the 'dynamic' property when done processing
        • in case of two or more m-ifs, the last m-if will reset the 'dynamic' property, while all of them are deoptimized
    • m-for
      • doesn't use a static
      • stores data in 'prop.data.forInfo'
    • m-static
      • used to manually override all deoptimizations for an element
      • sets 'static' property of state
      • resets 'static' property of state when most outer m-static is done processing (done by storing 'prop.data.staticSet')
    • data storage for special directives
      • introduced above, special directives can have a shared state throughout each state (beforeGenerate, duringPropGenerate, afterGenerate)
  • 401fb4488eab9dc1856f165e4fba92f505741112: change wording

  • 53881ab2f70b424573899bee8e2bf889763f1768: refactor: make parser conditions more specific, remove dynamic input tests for m-model (for now)

  • 563313b441f1149726df8d3379343703f43946eb: refactor: rewrite m-model to work with new 'set' method

    • if key is dynamic
      • creates temporary 'modelValue' variable to hold value of base
      • sets keypath of 'modelValue'
      • calls 'set' on base and 'modelValue'
    • if key is static
      • calls 'set' on base and input value depending on input type
  • 455a945b30882e0bb16c42ae0d6f2e5f4f0f39fa: refactor: refer to generation nodes as 'node' instead of 'vnode'

  • df11ccc72e7049069f610986fd76326846e5ab62: refactor: remove string conversion

  • 9ae5922fa2e2a0aa4f47aeaf324bfe56aa3583b1: refactor: remove unused variable in 'm-if'

  • 878b4baef3a90e05e8e1500d296433012c27b61c: feat: allow 'root' to be specified when creating a component constructor

    • if specified, component will be mounted after init
    • add tests
  • 7966be9644855787fb50184bb3e36b8b652755ea: refactor: diff props

    • only remove/not set props if they are 'false'
  • 7364d5d4247e2aacac89001d127c806e0f9b58ed: refactor: remove shared state 'output' from template compiler

  • 19360fe69f7c2aa46fdbcfdbddc421f0f32d9a6f: refactor: inline extractAttrs

  • 4638a89c38c255d377e25287fb2a99e6a2df877a: fix: add tests for 'set' with object syntax

  • 191b81d69e4272c4186dbcc062308a65746fd1e5: fix: warn when method has same key as a data property (fixes #115)

  • 2a0f7cc96a66e987f832a0237efd143a02d31827: refactor: make error message for referencing undefined value more clear

  • 02c7d2a004bce4747148b6873de1db4ddb37abc8: breaking: remove m-html in favor of m-literal:innerHTML.dom

    • refactor setting DOM properties
  • 3d668324082c48e852c0201814713ddc3f7a159f: refactor: generator and formalize directive spec

    • state has structure of:

      {
        index: 0, // index of current node being processed
        dynamic: false, // value to override optimization
        exclude: [], // global variables to exclude from generator
        dependencies: [] // all state dependencies
      }
      
    • use stack for m-for to track iteratable, aliases, and exclude

    • make "event" a global exclude

    • remove escaped double quotes

  • fef152501c082829c927733e0b02b3e71d238c0a: add information about new categories in CONTRIBUTING guide

  • 6114798ea52eab816149bbda99d1925b348f9d18: update release script for docs and refactor categories

  • 84234ee197e5b9ee85f3ffa5b587ae7ee474638e: temporarily remove model dynamic tests

  • d81083c0f1e667f903f6ad23bc4b7827d6c7c967: feat: allow objects in 'set' instead of keypaths

    • shallow merge
    • works with observer
    • works with computed properties
  • dc2596f07ca07f65b4dad3ac722db0d1e90d9db9: fix: cache 'component'

  • a94c626958e660dc1efce6c7d3031493d01f8d88: fix: refactor virtual DOM engine and make creating components from instances simpler

    • virtual DOM 'patch'
      • replaces root element of when hydrating and diffing
    • virtual DOM 'hydrate'
      • no return value
      • assume component creation
      • doesn't handle 'null'
    • DOM utilities
      • 'replaceChild' and 'appendChild'
        • correctly check for components
    • instance 'destroy'
      • correctly removes 'moon' from bound DOM node
  • e2f51665f82fea0aebc57056b09cd206fe935610: compile m-model correctly

  • 15fccbec3c2399e6a896a9e7ea33e68038816bba: fix: refactor everything to declare variables in correct block scoping

  • aebc0e146068f491db958140268494b47208a91b: rename el to root for benchmarks (#109)

  • c9f837f644faed72177f50fd701168ee0559e3da: README: Fix capitalization for 'JavaScript' (#112)

  • 585dbfb4ae2bb72fc86a41d707f88ddefa113e78: breaking: replace slots with insertion system

    • component will render default insert
  • 444e0093292758129ca2f35d34b07eed95dcd1fe: fix: warn on unknown directive

  • 5639021ccb7107020a8a2722f3d48e58ae17edd6: fix: change shape of vnodes to be more memory efficient

    • text nodes only have meta and value
    • normal nodes don't have a value
    • isSVG is 'undefined' or 1
  • 86532b0108b41860d80729ae3464e221de45dbc4: breaking: rename 'el' to 'root' and remove 'props' in favor of 'options.props'

    • more descriptive name
    • no need for user to access props on instance
  • f62b63e676b68a159d25eb27cffc4456de6ac356: fix: remove double assignments

  • f6abebe687b09b5b4e4302e53d8a94491ca35c80: fix: optimization technique for m-if/m-else

    • any m-if's with the same parent seperated by text (or nothing) will be deoptimized
    • any m-else will be deoptimized
    • any m-if's with the same parent seperated by an element will be optimized
  • 500bfbe1e6ab337478d4833f2475e6f3cb3a1da4: fix: meta.shouldRender can be '1' or 'undefined'

    • makes render functions much smaller
  • b6155824d1f1179b2edaf78f0cbeff60d33a79b9: feat: add 'm-else', and fix optimizer edge case

    • two m-if's inside of the same element (next to each other or seperated by only text), or an m-else will be deoptimized as an element can replace another at anytime, and can sometimes be skipped
    • an m-if by itself, or an m-if seperated by an element (other than text) will be optimized
    • m-else will act as an 'else' statement for any previous 'm-if'. the only allowed seperator between any 'm-if' and 'm-else' is text (including whitespace and line breaks)
  • 85008bf4d43a1802c16eec0b7824e733a437cbc4: clean up wording in readme

  • d01cc664a5318c7dd5b971160274ef2b7f6ea6ba: feat: add .dom modifier for m-literal to set a property on a DOM element instead of an attribute

  • cd105b9d7c08e681ecc7fda404f8c33c77538f5e: fix: call computed setter in right context

  • f53cb7b4d381ac7d8a77dea2433e39645746a1b5: breaking: remove '$' prefix from all properties

  • 6cdbadf0888f21227284d08c588ed2c747d36c2c: fix: update username when referring to voke

  • 23d2b399a432e53051dd8b956dfae573a8235650: fix: use block scoping

  • 2ee78dc23c4dfbdc2f9b6cab7a2292ad971dfdd5: fix: cache options when rendering a functional component

  • c4aa2e838410f159d4f0dc1111de8400fb961e5d: fix: require data to be a function for functional components

  • eeb2d226a32ecfce2b4df16ba60ab9708da5ac2d: update browser support matrix

  • 136a1db042a4c87d45067d07a027075e11bb91a3: update username for npm

  • 856f90171bc76d5defc28bf08443085aa32b0eb5: update new username

  • 8409b5e592dee7f4609227b5551e833594e61bea: fix: replace lookup and copy for a single lookup

  • 1facdc16e4a5e5164021d53d47bdfb8893dce220: add svg compiler tests

  • 25f32f3f34a9df571652fe17b626d4e068245dc9: add tests for deoptimizing on unknown html

  • 651d29a393c7d2b77ba2d1d1338210f0db81dcb7: better minification

  • 850095a757a5c6bec2f72293752a74c56a2a95bd: fix: set svg elements correctly and deoptimize on components

  • ae84cfbbeae3e37feb40e87cd1cf0c8366a0c57b: fix: add a new event handler when a new one is present when diffing event listeners

  • d845a6321f9c7293af64b641578f1c63fceae108: fix: call updated hook when updated, not when mounted

  • 48c6b5b4312d8e911d6517302103e9e2c28ba1eb: fix: correctly exclude items from scope throughout compilation process

  • 8fc8c8613d382031af530c2ede81aa98297557c9: fix: spaces > tabs

  • 0afedf9f3493eab6195bb4b6142e75b781220006: fix: remove unused variables in lexer

  • a72ec6c1397bbdb71f90583065cc81b3b5d30c71: fix: remove unused variable when scanning template state until condition

  • 5b5411f901cd4e140d7b7e41a9c5c56487bee346: fix: remove unused regular expressions

  • 704f3850eebfa6d353683982ec7ad13b67052a90: fix: remove unused argument in notify

  • 8637d66603395769782c2f775e9127896a0723b4: fix: correctly exclude aliases from scope in m-for

  • ed26a5b1cf813220dfed65473595fa10e8642db7: fix: exclude special custom parameters from scope (fixes #92)

  • afacfbfb575bfa16eb918109bf323d4cf0e5d492: fix: call updated hook when built (including mount), and remove destroyed state and replace with queue

  • 404ea12e67aef08a5d7953659528c54908140973: fix formatting

  • 7981cc2f016c7c075677f728fef76661f1a7f4cd: fix: assume attrs if special directive generates during prop generation

  • f4ba9eefe0af8a33346acf392cc95827d7819fd9: fix: avoid string conversion in dom props when using html directive

  • 965c7e7767b3eb17af532c949e457a70011678bc: fix: remove isString param from template compiler

  • 498efdeb398aee2f821322d1f0e4fa1a8394500e: fix: remove unused regex

  • 290fc93f8f68a7df631e15cf65ad17178631557d: fix: add runtime helpers in HyperMoon (fixes #89)

  • 98637209b8ac12d6c9ea28799e2e8e239ba9f35d: fix: fix typo in diffing when appending children

  • 7f6168a08f44e1d07f6954e83a2f383a749c5f1a: perf: optimize adding children to the end of a list when diffing

  • 030d44e8dafe546152f2ca059ab6931c48e35a45: perf: improve performance of removing children at the end of a list when diffing

  • 5c66f8cc49cdbcd0d8871d9fe4cfa12b5eca7cf3: perf: optimize hydration to use less loops

  • e0690f4a85e29e296f5ec7c662482a2bd63e5490: perf: cache oldChildren when appending

  • 75d8370238b1feca243e36f0f3c7ce910b88324e: fix return types for diff

  • f00bca3075ec019bad0f984ddab171eeafd2dbb6: fix: correctly update reference to children when appending items to the end of a list

  • b99f926c8fa7fea3198e8cddb467b015fd7b91fa: build

  • 2597831a6de704bb322d8297893cdb29bcf2c067: fix: update children when adding items to end of a list when diffing

  • e94948f876d1abfbc69b36a055d83e0962ca619f: perf: improve hydration engine performance by adding fast cases

  • b9fc46b9f9a6179a0b37010359cc1b9a8ab8b254: perf: rewrite diffing engine improve performance by diffing children faster, and improve performance when creating children by caching common values

v0.11.0

6 years ago

Minor Changes

  • Add support for different input types in 'm-model' (fixes #52): e66280c9c0bbd668710d041a644dbdf1dc9731d9
  • Allow and enforce data to be a function in components: 640b40740152d500c58042ebb7d26a9fb12ee153
  • Change naming of component cache: 63ec30e1a92e88dd0bf1b0b67e0465466e928119
  • Support dynamic values for m-model with radio buttons: e755dd4622382857b0c242b1def76b16acdc2166
  • Begin adding support for dynamic event listeners, add support for arrays, objects, and numbers for 'm-for' (fixes #62): 0093de7a35b5a1688b6fedd6ce1d9f2efe126987
  • Make eventListeners dynamic (added if needed), and add advanced optimizations :zap:: aee07e33e410ba370cf574fe20bd0f99b37eb219
  • Breaking: remove custom delimiters: b12b904cd2480053e31a6c3a020530bbcd87ff40
  • Use custom vdom 'm' instead of hyperscript: 8dec037c9bef5a17ecd4e8cc9eb2ca18eb52ab3e
  • Remove merge utility: fd8aae03de8cfbd8a76bf6b316cc2d600d266322
  • Add support for parent-child communication through custom events: 6f88c832191701d87ce3d46e4e6bc370d6be3c2b

Patches

  • Avoid many lookups in lexer: c5805ba3de12f60235a28e4b2e6ffc434d653bee
  • Make lexer more flexible and allow '<' in html: fd7c4efe5e8a5692b84ee21e2c40f147d7999456
  • Add license (fixes #50): da9b6fa57a85df487cacb673af37bafd85db5b13
  • Fix emit: 3c870ee02cb4d268bf91b1d14ae68cb7ff0af465
  • Cache attributes in codegen for model: fa902106b7f2713e2c8865bfed88d1a82fb824fe
  • Faster way of computing dependencies for 'm-model': 1002f791a4a781c414ce5d0dbd4e14ce69dec0e3
  • Support dynamic paths in model much faster: 0f4a66940b0b504ad2fe82d829ec16edf10f9b5b
  • Correctly extract dynamic path: f05e97ff356bb47bc520511520a2722aa4545cbb
  • Optimize lookups when adding event listeners: 2509ffd74a719677f0ebd723dcecbf8642a41fe5
  • Add more reserved globals: 0299ec74e3dc5544cc7c2a32fe2c577a3757b3fc
  • Correctly have current position in state be tracked in lexer: ed10e158020a36c9e4129e65895c04565a88d25f
  • Lex attributes faster: 167c47879bf9ea340930c944592729a03c9cae99
  • Check if element has attributes correctly (fixes #59): 93d9f145baa883467c8739e0d4a00868d8378bb9
  • Fix spacing in generated dependency code: ebd43c24e99d37fe84cfc8b6abf3ead75fc7b713
  • Faster unmount component when replacing node: b133e86671aac577c7bc6e62d0f8e182d693db4f
  • Optimize prop merger for functional components, add all props by default: 2fae857440231bcb10b867c64593a716b7471966
  • Allow renderloop to have a number: c8bee28b3c3d8fb40c07a0988657e1fe8997392f
  • Allow custom keycodes to be evaluated at runtime (fixes #55): fd35e0d7f714d960f1575f4684f5c226b6d0d46d
  • Improve memory by defining runtime helpers once: 9fec38ea4bdde246af419d7cccbeeefc5c1cbc0d
  • Improve performance by reusing counter: 0c704063c18ccfa0445afc6dbbe3a5b4000a2940
  • Make some improvements to generator rewrite: 80db68357bc4d2100eac8be70a1a657adf2e64d4
  • Optimize optimizer, and deoptimize if there is a special directive present: b7d419e942035475de27e1da5dd22f194e7f4abe
  • Deoptimize on directives: 1710b850a13a66efb5d317540ab57d9842c2368c
  • Generate event listener code correctly: 4ca98f718146ec426660d93426bad56f935cb920
  • Add support for special directives that implement code generation for an individual property: c95d12db4bb1a08cd7583fdfa99a3b1bcc8ad736
  • Return output of method from callMethod, recommended by @shellvip (closes #69): ef901044b26aa7874dd3e076b6565423efdc6433
  • Remove unused function from generator: 30aa9c74614c37eee3e8c51d00a111a8335fff91
  • Ensure special directives that generate code after children don't invoke during the childrens' code generation time: d0eeaa929fb05b383024b9a479910ce15806a6e2
  • Fix mount: 39bc5391a20409496680a87e30a5900ce1f6b002
  • Optimize adding events when parent listens to child component events: e27c52070256df12a384b4eb31b86a25e2d0ac97
  • Update initMethods: 736bc17066e1cead7ecaa63aca58c8058d8ffbf2
  • Account for literal values as well as normal values when using 'm-model' with literal values (fixes #60): 11ff0de06898d4423446ecc0fcfeeba8a2c1f3ea
  • Allow attributes to be set conditionally (fixes #25): 5e1dc22f41a3207227a9cc789e3cf172589f9bae
  • Escape HTML correctly and efficiently (fixes #83): 63a54419f7e91aa4791d0596fec30a18f218cf45
  • Allow for backslashes in templates: 48791e0444b0ce9dd437a87f70b004410c57776a
  • Perf: don't use bind: 827118271edfadd55660e1fd3519b2ac5ac5925c

v0.10.0

6 years ago

Minor Changes

  • Remove custom prefix configuration option + make directive generation faster: 1ba2ec59259c77e0179cf72141d5f96b8949deb9
  • Improve parser by allowing custom elements that self close, but throw if there is no slash to indicate it: a645d40bb068b84336e420d1533543cef758adfb
  • M-if now uses an empty text node: a8056b226d8b8fc8304801d28dc84bc2af8f8b63
  • Make mustache tags run first with precedence: d4906cc6b461ccfe487f2f4d10d4eb8c8802cc85
  • Allow scoping and javascript expressions within mustaches: b3966b02d3c0381cfe9c23b88b5820d3c8c81c2c
  • Add a dependency system for directives and special directives, to avoid calling a getter multiple times: 147ab02c272d2c9d4029735b7149ecee7bd20df3
  • Change all scoping inside of directives to be literal by default, without mustaches: 84c627ccf083898d3a8f9e433960a75a42abe84d

Patches

  • Allow lexer to handle unclosed elements (fixes #35): 5c08af71bc1c5134b0f83da82dd828112b434ab6
  • Allow 'el' to be a DOM element (fixes #34): 2f70afc270f4c1a33938971e9d3e2cd2854542ba
  • Fix string escaper: ef5ffeae402df28ca9a38bbf0dc9974ab3e281ae
  • Add warning for undefined values in development mode: 93334168ee6456dea50533fc7e89799968a9d14d
  • Allow support for booleans and object properties in mustaches: 00f33de9d3bf38909ad6c543bd79ce347a9a23b5
  • Make mask a special directive: 0430b54e39aca5b4b11808fa3f04fd036256860a
  • Remove m-literal on directives (already literal by default): c40813244feac0cacced0d3faf4fb59d23710210
  • Diff event listeners (fixes #38)": 50b989f94ae1caa6b0b9a034a0acb788130f80ba
  • Allow text to contain comments: d888a48e1079259060ee84977ae393e54e6e7e4b
  • Global variables: b3bf117359b836fc086c180a771a18abef524e97
  • Faster way of checking for globals: 04b37daaa9d5b8881e539658c43259489c757a6d
  • Allow options in plugins: d2b118260348ebf407050bf56f25e79e29fe9152
  • Format browser support table: 35e2a2e9bfbb65bc8e5fc24371c8bd6200994f9e
  • Clean up code generator: 208808146dbbe4ef3c4e2ed8a86d4397a7605b99
  • Generate children faster: 98ac03734506e7d13a35f96a8a95d88e5ea69e70
  • Faster code generation for m-for: 353dc8c83a67a0678ffb91070fc70998b972a4cc
  • Faster code generation for m-on: d440470cab0bf5de07e84fccf88885710eaec15d
  • Faster code generation for m-on and m-model: ab73cabead7a524d3d31e2108c014d41c88e6b12
  • Faster code generation for directives: 2b6415ba96b911ce25f5908dbb7ed8b156c81241
  • Make dom props faster: e6dae963b57d9bd9e79a094d60ed7097e7f91895
  • Diff a component faster: e528aebce8a83f6151dae0cc3dc31c28d18ea65e
  • Correctly add variables to scope in m-for: 4c05b2f401860554ee28f834620790cea132760c
  • Scope dynamic keypaths in m-model correctly: f53c23635b8ee4cbba183da0e5ffb967dff8570f
  • Remove unused regex: ac8fa56aeda277226005f3996e3790b36c1246b6
  • Speed up child lookup: abd312d5af5686288e0d42c3f2a9726cf428d4c2
  • Correctly diff removing children by using a seperate counter for old children: 4b919af3694f530b8e6c1070aa9847d9588da118
  • Specific case for logging/error when silent: d533fc9ee2ed9f107fdd4e22764b0da6c7ac3930
  • Faster replace: 7d2f9ac27517b96c22583dfff532b0ef0238543a
  • Keep same regex for functions: 52dfa5c3b7da8d55ff6e2ab5c08d0506ddd03b71
  • Warn at closing element with no matching tag: c8224d85c1fdf1883edd20f368212d6472d344c0
  • Change name of parse tree walker: b692c13cdcff9d1ce1aea6e0cc02ef1261b50f80
  • Better message for ignored closing tag: 3def907ef4178e1b976d5296b6628edc71b48f62
  • Simplify createNodeFromVNode by using existing appendChild utility: f441791324268dcf4fd15022b7ca760d0abd5b49
  • Handle null children when creating nodes from vnodes: 4101a47cf0c73fabd8e12f52a8b6dc53ed7f4646
  • Avoid many lookups into objects (perf boost): 2f6145164228fbf4daaed2fb281bb309b827739a
  • Faster for loop when resolving keypath: 248781de82ad0d383f7d334f1ca56769bb8e80ee
  • Specific case for traversing children in hydration: d9d880df164e7c93f1a32a08fc940b1b6346e0d6
  • Set children when clearing in optimization by reference to retain for next diff: 858e8069ab8b7acb3609eba444d66b0652793d2c

v0.9.0

6 years ago

Minor Changes

  • :zap: much better detection of static nodes: 6b1d0ef480b6032a0631d51fcf1d8347cc8afffd
  • Allow () in template modifiers: 612527a51a2f953048850920d9dab258920b5f6b
  • Throw error if no closing delimiter for template is given: 530e142be3480cbb492ee5b43e012f991c01e6d2
  • Remove the pre directive completely: af6a528dcdeb1dbc20fc1072b1e899568dda11ed
  • Don't rely on shouldRender to update text during hydration and diff: f1ccd8096978eced7071f5f07d1369b85c4948ac
  • Remove m-once: d503f6746e7547926fb00eebeb5d98c1706cbbb3
  • Simplify h function and do more work during codegen instead: fa179630c5ad0d583394e2a40f1da22400299868
  • Flatten children during render: f5483efb7e59182b086358b82363877b1c9905e1
  • Generate code that flattens shallow arrays instead of doing it during runtime: 7f19adec990bd4bf3e0687395ee10004493fa290
  • Treat vnode as source of truth for directives when diffing props: 45bcc7b442a4a8d821f5cca1140cd477e5c9158d
  • Remove text directive (pretty useless): b18b578de4b970ff931202831fccf8515bce7009
  • New header: c6b2ac05ab2b35b55667dd74b314261e189f8127
  • Make compiler independent (not needing instance): d93a353530dd5ce59de6647e11268d9e5574926d
  • Remove initialRender property (useless): 3457f0b317d3bcd45a6381a76bbc9236e41f4592
  • By default, instance is destroyed (until mount): 50c58f7136d6871371188a01650d8051ac317261
  • :zap: parser can now handle weird HTML: 4c07f7019d1c177097bb6e016dc5cb789b36116c
  • Make lexer flexible, allowing unescaped HTML: e72d67c9db64ca73b85d7be4dcdf5a10c4b4e067
  • Add support for custom delimiters (fixes #29): c82ac631ccca9a319bb9fd7f8829e7155dddfebe
  • Merge methods with data: 416c10a25c8b05bd50c7864cccddbdec9dd710d6
  • Bind all methods during initialization: fc89920ad3aed2d043c7f5e32bbe8055225881e0
  • Allow directive to be added by m-literal: 9eaf4bca3ef9f7e250a4db11ad93cb436f1093d0
  • M-if now generates an empty text node: 454e04f6404f6909b5c6691383c86b4fd8f5910b

Patches

  • Patch old vnode tree to match new one instead of creating a new tree each update: 850ea1b4f75d2593017acbeba4649c1aaec5d085
  • Fix bugs when appending components: 2cdd5d9d248d2b5614bfb7e9e3d23c2bb265e832
  • Ensure no props are generated by the time beforeGenerate is called for special directives: eb9c8483124ce6427c700a266b2517bbf09748eb
  • Update reference correctly when diffing children: 5b562ed702b268e80196fbda6d52811ffc94b422
  • Ignore null children (conditional): 0b9b87011047b838b36f5f1da6f16ce5e42eddb1
  • Add dependencies if not already added: 5133bf21c64eccd4c49ca9b450f7ad558c30c64a
  • Ensure slots are treated as dynamic: 9d11f0add3f105246e7f4790f26e03f994382077
  • Faster way to check svg: 608a4b669d5e81e53e12f0a548714bc95e84dbb4
  • :zap: faster way to check for svg: 159eee8fc6a63a7d93a449a674d5e70dc74f4384
  • Efficient template compiler: 9d577b8b75ae1c1cc88a410f1639e185fde436ca
  • Memory efficient way of optimizing static nodes: e4f7c87aaf739a690404e5ad06ae42eaf31684e1
  • Generate regex for m-for: 721f3fee377706ddbb11e2eea28e6d33ff09ca55
  • Memory efficient lexer: ea9c861d53e6b40a42ae61b44a008728ea8a6740
  • Faster, memory efficient HTML parser: 1b9e107b6a61864c1430e086a4579c964404b5dd
  • Specific cases for slight perf boost in hydration: c05a0bc197460cde12a294eee0a3157ab1b18496
  • Specific cases with utility functions: d6e568d6db20e6ed4fd5ff63ea70bbed5b3c425e
  • Avoid creating new strings every diff: 0c3dbc92930bbc732430fe4ab90187671c4af120
  • Generate code for directives seperate from normal attributes: 3e2687d6d8aca21aa63198dfeb431976e5fd9d51
  • Execute directives later when diffing props: 7bd1bcf2b9b23f6340c132160f9395e96b716f33
  • More elegant solution to m-show and custom directives: 5380d318394c0835e793b6ab8218463b2e14e6f1
  • Optimize checks in h function: 33e21bbd92c2955b9f0b5740d16f768d8315a63d
  • Check for index out of bounds (perf boost): b7431bf38ecf6bf37e7ecaf9cfdfac714f715805
  • Refactor events .on: a1121a217fe28a40e266cccc7994268ba0b44bab
  • Let off be more flexible: 862d4afaa7bd2b971ef1441d62a6b60e2eb6636e
  • Refactor code generator: 83338539b3ca2755bd98c77adba6a64e187a4cea
  • Refactor before special directive generation: 6b1a2b050ecbd06b3e1143007f02ae337f51256f
  • Refactor special directive after generation: 5342b8a11dfdf71091a9d42aa402bf16293459f1
  • More specific check: 12fd76a6caaff8939dede93e16d75250541330c4
  • Empty oldChildren in dom when emptying element: e9f488fe1d44bda66372552c241fc9b08d37180c
  • Make parser even more flexible: dad261cb1a1b435e24ae9222657b8be114d531ab
  • Cache props when creating functional components: 34ed75e31c674f647224df2730e2716e9566ec0b
  • Make template compiler more flexible: 838e7a2ba5c94ed96a5ba4353ce535927a5c8d86
  • Allow parser to handle cases with nested elements of same type: a135ab24b82a8d0cad4642ccb87f172f1815f432
  • Allow conditionally set attributes (fixes #25): c92f5811d16d504faf1e49a4963330f78442199d
  • Add faster versions of directives: 3cf8f66a4060d165cf9fabfa19af221d6b2b91af
  • Use delimiters while compiling 'm-model': 7774cc634eb2280ef5bb154c79b970367d7b6a91
  • Keep reference to nextSibling during hydration: 99ac4c801b88c48143982cf715230f9b46a4d7f5
  • Add better falsy values, and fix setting attributes for xlink:href (fixes #31): 9b90318afadf72a9fd25da6ca2d7d093b6f4416b
  • Make notifying and observing faster: 8c3fe883a7ae585b4d40b3a87b9c2e800d5bf86b
  • Clean up observer code: 218903e31709ffa0e59e30a6ff7047e3358a81c1
  • Invoke setters in direct set, not by notification: 4343cf73c8eb23fcaec4840d9652baababfec769
  • Use base for custom setters and add default setter as noop in favor of custom one: 669a3bbd0e1fc6fbb3ae1880bcf909f63d1d24e4

v0.8.0

6 years ago

Minor Changes

  • Add dependency tracking and caching for computed properties: 366905921a9c5bc871b7a2c71af6f94892339965
  • Make sure keeping track of changed computed properties (so they can depend on each other): 484f2624ab7207667fac7b884681460a4310de35
  • Errors are suppressed as well if silent: 4333592f54c7a4402ad35474b252eb79227480a5
  • Make moon silent in production: c227bf865469dd7f2ccec4a4b23d5a32d3033e8f
  • Remove checker for warnings in production version: 2983514d10a6e64584aabeb0d7a10b2d08874854
  • Make h function take array of children: a6bb0b46d48808317b83434669c5e80034cbc7f4
  • Add support for 'name' option in components: a53637aaf01fe2061045f8f81137619a2123db44

Patches

  • Update cache/dependency systems: e63d63eac51127e1439a80f4d51f2bba623d4b1b
  • Better m-show implementation (perf boost): 718ff7baa02115d65807d9c8d15cc45831d8e011
  • Ensure empty attributes have meta/values: 96da99bebc4a3dd0a46a64e361562cf898f46dce
  • Ensure properties with args can have multiple instances of themselves: e21eba58ebc69204bdfa387c4dc8a0b8ac4d13e6
  • More efficient prop diff (perf boost) :fire:: b61d16da4f2d2ef0319c6a22f81cf2c97bd31a4d
  • Use a different diff with vnodes and dom: 3b240cf312cadb780023ca0d3df67af90bc7a2e2
  • Better way of iterating through children: 1619af86d7fb467ab60ab98d64af11ed2cd3b8b3
  • :fire: perf boost: use ternary expression over and condition (more declarative): 684d40db6465146f2d952f3429192964ffb6d973
  • :zap: rewrite diff completely to use hybrid of nodes+vnodes: f94aafc5704945a13a0fe475433fba10a7f9f76a
  • :zap: perf boost: faster prop check without hasOwnProperty check: 575aec77dcdbdf765b86c135c4767f530647ea5b
  • Expose 'h' and perform vnode equality check optimization: 339cabe61a14becff3be90990db572faa534a972
  • :zap: perf boost: handle case when there are no children and remove all of them: 577fe98e06b38a51b5e42240c6a6eea104cca090
  • :zap: perf boost: faster way to traverse children while avoiding calls to CompareICStub: 347d8b339814d3d5ec818951924e49ad8f143d2c
  • Ensure children are hydrated when creating a text node via optimization: b40a71f12f663989784b68bf4b4933196105b099