m-ld is a decentralised live information sharing component with a JSON-based API.
This repository is the code of the Javascript engine for m-ld, for node.js, modern browsers and other Javascript platforms. Typescript is supported and recommended.
The project and documentation are built using typedoc, and delivered to the engine documentation website at https://js.m-ld.org/ using Vercel. This build includes unit testing.
- Issues relating to this engine are logged on the Issues tab.
- Contributions are welcome! Contributed work is governed according to a CAA, the GitHub Community Guidelines, and the privacy policy.
Plug-ins such as remotes implementations in this repository are structured as:
- Directories under
src
- Entries in
package.json#exports
like"./ext/socket.io": "./ext/socket. io/index.js"
- Dependencies in
package.json#peerDependencies
and markedoptional
inpackage.json#peerDependenciesMeta
. Also inpackage.json#devDependencies
for unit tests.
Scripts are run with npm
.
- The
build
script cleans, compiles, tests and generates documentation. - The
dev
script compiles and unit tests, and watches for changes (usedev+log
to see console output). - The
compliance
script runs spec compliance tests (long-running). - The
doc-dev
script can be used afterbuild
to create a local web server watching for documentation changes.
This project uses semantic versioning. There are two main branches.
- The
edge
branch is for pre-releases. Docs are delivered to edge.js.m-ld.org. A merge intoedge
should be immediately followed by a pre-release if it affects versioned components. - The
master
branch is for releases. Docs are delivered to js.m-ld.org. A merge intomaster
should be immediately followed by a release if it affects versioned components.
Only the unit tests are included in the build. Prior to publish remember to run
the compliance
tests script (ticket).
npx publish.sh ≪newversion≫
(from
m-ld-io-js-build) builds the
project, increments the version as specified (e.g. patch
), pushes the code and
publishes the package. Ensure the repo is up-to-date and on master (release)
or edge (pre-release).