NAST
An universal, extensible intermediate representation for document-like content.
Packages
Name | Description | Status |
---|---|---|
nast-types | A TypeScript type definition module to specify data models for intermediate representation of data. | Experimental |
nast-util-from-notionapi | Import data from a Notion page. | Experimental |
nast-util-from-orgzly | Import data from an org-mode file exported by Orgzly. | Proof of Concept |
nast-util-to-html | Render data to HTML. (Deprecated) | Experimental |
nast-util-to-react | Render data to JSX.Element or HTML. (Preferred) |
Experimental |
nast-util-to-svelte | Render data to HTML using Svelte. | - |
- Stability : Stable > Experimental > Proof of Concept
Development
cd
into it
Clone the repo and git clone https://github.com/dragonman225/nast.git && cd nast
Install dependencies
-
lerna
(required)npm i -g lerna
This project uses lerna to manage the monorepo. If you haven't used it before, this tutorial is a good start point.
-
typedoc
(optional)npm i -g typedoc
typedoc
needs to be available in the command-line for reference document generation. -
Graphviz (optional)
pacman -S graphviz # For Arch Linux
dot
needs to available in the command-line for dependency graph generation.
Run setup
A shell script is prepared for you. It will bootstrap the dependencies of the packages and run the first build for those that need to be built.
./bootstrap.sh
Testing
-
Test the overall functionality with
npdl
.Download a Notion page and render it to HTML. Use the CSS theme at
packages/nast-util-to-react/test/theme.css
.node packages/npdl/index.js -i=<notion_page_url> output.html
Use an external theme.
node packages/npdl/index.js -i=<notion_page_url> --theme=<path_to_css> output.html
Just download a Notion page without rendering to HTML.
node packages/npdl/index.js -i=<notion_page_url> --tree output.json
npdl
has more features, which can be listed withnode packages/npdl/index.js
You can also install
npdl
globally.cd packages/npdl && npm i -g .
-
Each package may have its own test suite, which is not covered here.