Name | Version | Description |
---|---|---|
@interledger/pay |
Send payments over Interledger using STREAM | |
@interledger/stream-receiver |
Simple & composable stateless STREAM receiver |
Name | Version | Description |
---|---|---|
ilp-logger |
Debug logging utility for Interledger modules | |
ilp-packet |
Serialization/deserialization utility for ILP packets | |
ilp-plugin |
Connect to a local, open BTP server | |
ilp-plugin-btp |
One plugin to rule them all | |
ilp-protocol-ccp |
Serialization/deserialization for the CCP routing protocol | |
ilp-protocol-ildcp |
Fetch asset and account details from a parent | |
ilp-protocol-stream |
Reliably send streams of money and data over ILP | |
oer-utils |
Tools for OER parsing and serialization |
The monorepo is set up to use lerna and pnpm workspaces. To get started run the following:
pnpm install
- pnpm will install the dependencies and do the necessary linking (no need to runlerna bootstrap
).pnpm build
pnpm test
- This will run the tests in all the packages.
Script commands such as test
and lint
can be run from the root of the project by running:
# Run tests for all packages
pnpm test
# Run tests for a specific module a package
pnpm test --scope=<package-name>
Or in the package directory:
pnpm test
If you are interested in contributing, please read the contributing guidelines.
Independent versioning is used for this project and releases can only be made from master
. You will need to set the GH_TOKEN
env variable to your
personal GitHub access token. Please make sure that you are up to date with master and that the tests and linting pass. Then use the following to create a release:
# On master
GH_TOKEN=<github-token> lerna version --conventional-commits --create-release github
and follow the command prompts. This will commit the package version changes and create the necessary tags - all of which will be pushed to master. It will also create changelogs and official GitHub releases.
If you want to release an alpha
then run
# On master
GH_TOKEN=<github-token> lerna version --conventional-commits --conventional-prerelease --create-release github
This will append -alpha.<alpha-version>
to the release name. The alpha release can be graduated (1.0.1-alpha.1
=> 1.0.1
) by running:
# On master
GH_TOKEN=<github-token> lerna version --conventional-commits --conventional-graduate --create-release github
All source code is expected to be TypeScript and is placed in the src
folder. Tests are put in the test
folder.
The NPM package will not contain any TypeScript files (*.ts
) but will have typings and source maps. A typical project should have the following structure:
|-- src
|-- test
|-- package.json
|-- tsconfig.build.json
The tsconfig.build.json
file should have the following
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"composite": true,
"baseUrl": ".",
"rootDir": "src",
"outDir": "dist",
"tsBuildInfoFile": "./dist/tsconfig.build.tsbuildinfo"
},
"include": [
"src"
]
}
The package.json
file should specify the following
{
"name": "<package-name>",
"license": "Apache-2.0",
"publishConfig": {
"access": "public"
}
}
In the scripts
section of the package.json
, be sure to have build
, cover
(which runs tests with coverage) and codecov
. These will be called from the CI pipeline. Please use the following as a guideline:
"scripts": {
"build": "tsc -p tsconfig.build.json",
"cover": "...",
"codecov": "curl -s https://codecov.io/bash | bash -s - -s coverage -F <flagname>"
}
The cover
script should run the tests with code coverage and output the coverage results in a format that can be uploaded to codecov. The flagname
will be used by codecov to track coverage per package. Please make sure it matches the regex ^[a-z0-9_]{1,45}$
.
This process preserves the commit history of the legacy modules.
git clone [email protected]:adrianhopebailie/interledgerjs.git
git clone [email protected]:interledgerjs/legacy-module.git
cd legacy-module
git pull
cd ../interledgerjs
lerna import ../legacy-module --dest=packages --preserve-commit --flatten
You then need to replace the tsconfig.json
file with the tsconfig.build.json
and update the package.json
as described above.
We keep devDependencies that are shared across all packages in the root package.json
file. Dependencies can be added to individual packages using Lerna
lerna add <package to install> --scope=<package-name>
# Add dev dependency
lerna add <package to install> --scope=<package-name> --dev
Script commands such as test
and lint
can be run from the root of the project by running
# All tests in all packages
lerna run test
#Scoping to a package
lerna run test --scope=<package-name>