@simplito/privmx-webendpoint
Version:
PrivMX Web Endpoint library
103 lines (66 loc) • 3.16 kB
Markdown
# PrivMX Web Endpoint
**PrivMX Web Endpoint** is a robust JavaScript library designed for the browser environment. It serves as the client-side gateway to PrivMX Bridge secure communication channels, enabling applications to encrypt, decrypt, and manage data securely.
Under the hood, it wraps the native **PrivMX Endpoint** library (written in C++) using **WebAssembly (Wasm)**. This architecture ensures high-performance cryptography while providing a developer-friendly JavaScript API.
## Key Features
* **End-to-End Encryption (E2EE):** Client-side encryption for all data transfers.
* **Universal Tools:** Build complex communication logic using simple primitives:
* **Threads:** For contextual messaging and collaboration.
* **Stores:** For secure file and data storage.
* **Inboxes:** For secure, one-way communication with external or anonymous users (e.g., public forms)
* **Kvdbs:** For encrypted key-value database storage
* **Events queue:** For real-time updates and system event handling.
* **Performance:** Powered by a C++ core compiled to WebAssembly.
* **Type-Safe:** Fully typed with TypeScript definitions included.
## Installation
Install the package via npm:
```bash
npm install @simplito/privmx-webendpoint
```
### Documentation & Examples
* **Getting Started Guide:** [Introduction to PrivMX JS](https://docs.privmx.dev/docs/latest/js/introduction)
* **API Reference:** [Full API Documentation](https://docs.privmx.dev/docs/latest/reference/webendpoint/api-reference/connection)
## Building
If you want to build the library from source, follow these steps.
### Prerequisites
* Node.js
* CMake: Required to build the Wasm core (npm run build:wasm).
* Clang-format (v18): Required for formatting and linting of C++ code
### Build Scripts
The project uses a combined pipeline to compile the C++ core to Wasm and bundle the TypeScript code.
| Command | Description |
| --- | --- |
| `npm run build` | Runs the full pipeline: Clean -> Build Wasm -> Compile TS -> Bundle Webpack. |
| `npm run build:wasm` | Compiles the C++ source code to WebAssembly using `scripts/pipeline.sh`. |
| `npm run build:js` | Compiles TypeScript (`tsc`) and bundles assets (`webpack`). |
| `npm run watch:types` | Watches for TypeScript changes. |
## Testing
The project employs a dual testing strategy: **Jest** for unit logic and **Playwright** for End-to-End (E2E) integration testing.
### Unit Tests
Run standard unit tests using Jest:
```bash
npm test
```
### End-to-End (E2E) Tests
E2E tests require a running Docker backend (PrivMX Bridge). The tests use **Playwright** to spin up browser instances and execute scenarios against the local backend.
```bash
# Run all E2E tests
npm run test:e2e
```
*Note: Ensure Docker is running before executing E2E tests.*
## Linting & Formatting
Maintain code quality using ESLint and Prettier:
```bash
# Check for linting errors
# Typescript
npm run lint
# C++
npm run lint:clang-format
# Auto-format code
# Typescript
npm run format
# C++
npm run format:clang
```
## License
This software is licensed under the **PrivMX Free License**.
Copyright © Simplito. All rights reserved.