kalduna
v1.5.20
Published
Convert DOMQL objects to Mitosis JSON
Downloads
101
Readme
Kalduna (domql-to-mitosis)
Kalduna converts domql objects to Mitosis JSON. Mitosis can then convert them to
React/Vue/Angular/etc. The main convert()
function of this package takes domql
and returns code in a different framework.
Important
as a workaround, it works on domql#b08d17a7f2bf1a70714ab9f1718cbf98862becf0 (kalduna-stable branch)
To install, do the following:
- Clone this repository
- Run
yarn && yarn build:all
Architechture of domql-to-mitosis
Anatomy of a react component generated by domql-to-mitosis
Tests
We use node's built-in assertion module instead of a separate library.
yarn build:tests
compiles the tests intodist/tests/
yarn runL:tests
runs the compiled tests fromdist/tests/
- Both commands can receive file patterns for building/running specific test files
- If no errors show up during testing then all tests have passeed.
Why not Jest/others?
This way is simpler. Kalduna should work well for both web and node, which means that we have to compile it with esbuild. To ensure that both web and node versions work, we must test the compiled code and not the source code. Setting up a compilation/testing pipeline this way is much simpler than configuring Jest to do it.
Project Requirements
yarn kalduna
should work in smbls- All react components on the component wall should work (including DatePicker)
- Editor should work
Code style
- 'dobj' is short for 'domql object'
- In a domql object, hidden/internal fields have a double underscore (ex:
__componentTag
) - In a mitosis object, hidden/internal fields have a single underscode (ex:
_desiredFormat
)
Rules for writing domql that kalduna can parse
- No nested destructures in function arguments. A single destructure statement is supported, but anything deeper is invalid (for now)
- Don't use the 'function' keyword. Use an arrow function
() => {}
- Always use parentheses in arrow functions
So,
(arg) => ...
instead ofarg => ...
- Always name the 'event' object
ev
foron.click
and others - Any occurrence of
state.update
inside a function will get replaced by Kalduna to match the framework's style
TODO
- icon parent should not be Show in smbls.Button
el.state.update({})
converts toel.update
. BAD! (is this still relevant?)