Thank you for showing an interest in contributing to Eik 🧡
Eik is divided in a collection of modules, each in their separate repositories. The contribution process is the same for all of them.
Below is a map of the dependencies between Eik modules. Development dependencies are not shown.
flowchart TD
COMMON[@eik/common]
CLI[@eik/cli]
NODECLIENT[@eik/node-client]
SINK[@eik/sink]
SINKFS[@eik/sink-file-system]
SINKGCS[@eik/sink-gcs]
SINKMEM[@eik/sink-memory]
CORE[@eik/core]
SVC[@eik/service]
CLI --> COMMON
NODECLIENT --> COMMON
SINK --> COMMON
SINKFS --> COMMON
SINKFS --> SINK
SINKGCS --> COMMON
SINKGCS --> SINK
SINKMEM --> COMMON
SINKMEM --> SINK
CORE --> COMMON
CORE --> SINK
CORE --> SINKFS
CORE --> SINKMEM
SVC --> CORE
SVC --> SINK
SVC --> SINKFS
SVC --> SINKMEM
A short description of the different modules.
Name | Description |
---|---|
@eik/service |
The HTTP server running the Eik service. |
@eik/core |
The implementation of the different HTTP API endpoint handlers. |
@eik/sink |
Interface implemented by the different storage sinks. |
@eik/sink-file-system |
Storage sink using the local file system. |
@eik/sink-gcs |
Storage sink for Google Cloud Storage. |
@eik/sink-memory |
In memory storage sink, useful for automated tests. |
@eik/node-client |
Utility for linking to files on Eik or localhost based on environment, and to do browser import mapping. |
@eik/cli |
Command line interface to publish packages and import maps to Eik, and to manage aliases. |
@eik/common |
The eik.json schema and a gathering of shared utilities. |
Fork the repo(s) you would like to contribute to and make a branch off of main
.
Commits in your pull request should follow the conventional commits format.
This repo uses semantic release
to release automatically whenever changes are merged to main
.
We use JSDoc to generate type definitions. If you're new to that workflow, the TypeScript docs and this blogpost by Alex Harri are good starting points.
Documentation for Eik as a whole is in eik-lib/eik-lib.github.io. If you make changes to an existing feature or add a new one, please also open a pull request with the relevant documentation to that repo.
For user-facing modules API reference documentation should be on the documentation website, for example:
@eik/cli
@eik/node-client
@eik/service
@eik/sink
For other modules README.md
in the repo is enough.