This commit is contained in:
dmitry-vsl
2025-12-14 19:20:52 +00:00
parent 4911549095
commit 3fde9968b8

View File

@@ -1,8 +1,8 @@
# Leporello.js # Leporello.js
Leporello.js is a next-level online JavaScript and TypeScript debugger and REPL Leporello.js is an online JavaScript/TypeScript playground with a time-travel debugger
[<img src="docs/images/video_cover.png" width="600px">](https://vimeo.com/845773267) [<img src="docs/images/video_cover.png" width="600px">](https://vimeo.com/1122095709)
## **[Website](https://leporello.tech)** ## **[Website](https://leporello.tech)**
## **[Try online](https://app.leporello.tech)** ## **[Try online](https://app.leporello.tech)**
@@ -13,27 +13,49 @@ Support us on [Github Sponsors](https://github.com/sponsors/leporello-js) and be
## Features ## Features
### Going beyond the REPL ### Live execution
Your code is executed instantly as you type, with the results displayed next to it. No need to set breakpoints for debugging. Just move the cursor to any line and see what's happening. Your code is executed instantly as you type, with the results displayed next to it. No need to set breakpoints for debugging. Just move the cursor to any line and see what's happening.
### Next level debugging capabilities ### Time-travel debugging
Visualise and navigate a dynamic call graph of your program in a time-travel manner.
### Develop HTML5 apps interactively Step backward and forward through your programs execution to instantly inspect past states and replay code behavior.
Modify your code and instantly see the updated version without losing the application state. Interact with your app and debug it later, similar to using a time machine.
### Save time when working on IO-heavy programs ### Call tree navigation
IO operations are traced and transparently replayed on subsequent program executions.
### Self-hosted Visualise and navigate a dynamic call graph of your program. Easily jump through call hierarchies and dive into every function call your program makes.
Leporello.js source code is developed within Leporello.js itself
### Hot code reload
Modify your code and instantly see the updated version without losing the application state.
### Post-hoc debugging
Use your app like normal — then step back and debug the session later.
### Save time when iterating on network-heavy programs
Network requests are transparently traced and replayed during development, letting your code respond instantly as you tweak and debug
### Inline charts and graphs
Use any third-party JavaScript library to visualize your data next to the code.
### Seamless NPM Imports
Instantly import any npm package without setup or configuration, just by typing a standard import statement.
### Inspect JSX
Click a DOM element to jump to its corresponding JSX in the debugger. Inspect all related variables, arguments, and expressions in context.
<!--
## Unsupported JavaScript/Typescript features: ## Unsupported JavaScript/Typescript features:
Some JavaScript/TypeScript language constructs are not supported, but they will be supported in future: Some JavaScript/TypeScript language constructs are not supported, but they will be supported in future:
- Classes - Classes
- C-style for loop
- `try` statement - `try` statement
- `switch` statement - `switch` statement
- Generator functions - Generator functions
@@ -138,7 +160,7 @@ them:
![Deferred calls](docs/images/deferred_calls.png) ![Deferred calls](docs/images/deferred_calls.png)
<!--You can even run and debug Leporello.js in Leporello.js! To do this: <! - - You can even run and debug Leporello.js in Leporello.js! To do this:
- Check out Leporello.js repo and grant local filesystem access to root project directory - Check out Leporello.js repo and grant local filesystem access to root project directory
- Select `src/launch.js` as an entrypoint - Select `src/launch.js` as an entrypoint
@@ -151,7 +173,7 @@ The only problem is that both instances of Leporello.js will share the same
localStorage. (TODO - inject localStorage implementation to opened window, that localStorage. (TODO - inject localStorage implementation to opened window, that
allows to share localStorage between host Leporello.js instance and window allows to share localStorage between host Leporello.js instance and window
where code is run) where code is run)
--> - - >
## Saving state between page reloads ## Saving state between page reloads
@@ -205,3 +227,5 @@ run tests in leporello itself:
- grant local folder access - grant local folder access
- select `test/run.js` as entrypoint - select `test/run.js` as entrypoint
-->