Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/logux/core
Logux core components for JavaScript
https://github.com/logux/core
Last synced: 5 days ago
JSON representation
Logux core components for JavaScript
- Host: GitHub
- URL: https://github.com/logux/core
- Owner: logux
- License: mit
- Created: 2016-09-01T23:34:26.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-08-06T21:51:57.000Z (3 months ago)
- Last Synced: 2024-10-07T07:49:09.849Z (about 1 month ago)
- Language: TypeScript
- Homepage: https://logux.org/
- Size: 2.91 MB
- Stars: 229
- Watchers: 10
- Forks: 30
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Logux Core [![Cult Of Martians][cult-img]][cult]
Logux is a new way to connect client and server. Instead of sending
HTTP requests (e.g., AJAX and GraphQL) it synchronizes log of operations
between client, server, and other clients.* **[Guide, recipes, and API](https://logux.org/)**
* **[Issues](https://github.com/logux/logux/issues)**
and **[roadmap](https://github.com/orgs/logux/projects/1)**
* **[Projects](https://logux.org/guide/architecture/parts/)**
inside Logux ecosystemThis repository contains Logux core components for JavaScript:
* `Log` to store node’s actions.
* `MemoryStore` to store log in the memory.
* `BaseNode`, `ClientNode`, and `ServerNode` to synchronize actions
from Log with other node.
* `isFirstOlder` to compare creation time of different actions.
* `WsConnection`, `Reconnect`, and `ServerConnection` to connect nodes
via WebSocket.
* `TestLog`, `TestPair`, `TestTime`, and `eachStoreCheck`
to test Logux application.[cult-img]: http://cultofmartians.com/assets/badges/badge.svg
[cult]: http://cultofmartians.com/done.html## Install
```sh
npm install @logux/core
```## Usage
See [documentation] for Logux API.
```js
import { ClientNode, TestTime, TestLog, TestPair } from '@logux/core'let time = new TestTime()
let pair = new TestPair()
let node = new ClientNode('client:test', time.nextLog(), pair.left)
``````js
import { isFirstOlder } from '@logux/core'let lastRename
log.type('RENAME', (action, meta) => {
if (isFirstOlder(lastRename, meta)) {
changeName(action.name)
lastRename = meta
}
})
```[documentation]: https://logux.org/web-api/