🌙 The minimal & fast library for functional user interfaces
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}#>
<{node} {data}/>
<{node} foo="bar" bar="baz"/>
<{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
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
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
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
m
is now a global variableattributes
is an arraydata
with no flagsgenerateNodeState
generateNode
generate
generateNodeState
and generateNode
m-if
/m-else
m-else
m-for
generateNodeState
to restore localsm-on
+ m-bind
m-dom
m-literal:prop.dom="value"
m-literal
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 childrenoperationNode
& operationVNode
operationNode
-> handles low-level DOM operationoperationVNode
-> handles mounting/destroying components along with DOM74ed50ce8c3846c4083d38043d69ddfb13b9bce4: 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
staticNodes
-> static node codedependencies
-> method and prop dependenciesexclude
-> global variables and keywordslocals
-> local variableson
directive
event
variable is available, but not by default99d361bcdbcd76b0ac9aedd02f2192747356441e: fix: compile DOM props once
40d27744823164555d6163854924eea4482623e8: fix: deoptimize dynamic DOM props
f2b68c7e917c843533c84fd57b8b7954a6fcc6c5: improve dbMon implementation
04482efe65018d645458a983bf917191f3e082d4: breaking: Rewrite Generator and Optimizer (fixes #146)
arg
#text
attrs
can be undefined
instance.compiledRender.staticNodes
and initializes them at runtimebefore
special directives are expected to return a boolean representing if the element is dynamic or notduring
special directives are expected to return an object containing the output and a boolean representing if the element is dynamic or notif
/else
for
, on
, bind
, literal
m-show
false
vnode attributes that have changed or need to be addedfalse
vnode attributes along with vnode attributes that no longer exist373c098754c8732ffe4466a8467698cf7d00b305: 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
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)
9136b0b60e92d364c965d00418a160ba02157996: refactor: remove jsdoc comments from global API
50c91f55bb218adb872dc9b936cfe1d1f6d9a67a: breaking: Rewrite Virtual DOM Engine (fixes #158)
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
342f08093be445def80882efd125fb75b9c570c4: feat: efficient component mounting (fixes #150)
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)
663709095bc4f315097cc5926b3b666f42807885: breaking: remove event modifiers
a83fd4e129bb7c51ca2e5ea646a59e6f07ad1e13: breaking: New Method API (fixes #141)
cf276f7c0da2044cba5b63058914a9401183dc76: use es5 tests
4d10341cabe2c9a1d14c961da3a8bf3e63d78fae: make tests IE compatible
66f9d09f9b68b5023ad4ce077d7e762782088fcb: fix: correctly parse multiple void elements
a1a8994e5ada32451e014a54a9bd336e2c15c4bf: breaking: Rewrite Moon (fixes #127, fixes #132)
state
and special directives010a11b9372e7365e8d42cc78387a930ac6b5d16: fix: use 'meta.node' when removing an extra child when diffing (fixes #126)
39b654a50e9e9fd9128a1446a508f191ff383de4: breaking: remove 'instance.callMethod' in favor of 'instance.get(method)()'
m-on
codef89d24e0701347e1b00ee14771b20296a981f711: fix: edge cases for mounting components (fixes #122, closes #120)
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
compileTemplateExpression
returns a boolean showing if the template was static or dynamicf3fa265b4a753abe6a95124408db173f280b2707: refactor: double quotes for strings, and single quotes for characters
d26dd245169511256c9992a71566ea723180ad12: fix: optimize on m-ifs next to each other
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
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
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
7966be9644855787fb50184bb3e36b8b652755ea: refactor: diff props
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
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
dc2596f07ca07f65b4dad3ac722db0d1e90d9db9: fix: cache 'component'
a94c626958e660dc1efce6c7d3031493d01f8d88: fix: refactor virtual DOM engine and make creating components from instances simpler
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
444e0093292758129ca2f35d34b07eed95dcd1fe: fix: warn on unknown directive
5639021ccb7107020a8a2722f3d48e58ae17edd6: fix: change shape of vnodes to be more memory efficient
86532b0108b41860d80729ae3464e221de45dbc4: breaking: rename 'el' to 'root' and remove 'props' in favor of 'options.props'
f62b63e676b68a159d25eb27cffc4456de6ac356: fix: remove double assignments
f6abebe687b09b5b4e4302e53d8a94491ca35c80: fix: optimization technique for m-if/m-else
500bfbe1e6ab337478d4833f2475e6f3cb3a1da4: fix: meta.shouldRender can be '1' or 'undefined'
b6155824d1f1179b2edaf78f0cbeff60d33a79b9: feat: add 'm-else', and fix optimizer edge case
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