Skip to main content

Fuse SDK

Pre-requisites

Install packages listed below by clicking on the respective link

  1. pnpm - https://pnpm.io/installation
  2. JQ - https://github.com/stedolan/jq
  3. Volta - https://volta.sh

Home to all the fuse SDK(s) as below

  1. CDK
  2. CLI
  3. Libs

What is this repository for?

A monorepo for all Fuse SDK(s). you can find all the SDK applications under folder apps and we also have few of the packages (Helpers/Utilities) under folder packages

How do I get set up?

Installation

We will be using pnpm instead of npm and volta as node version manager. Run the following command for installing dependencies.

We are also using turbo repo as a build system to run Builds, Lints and Tests.

Adding packages

For installing Packages at workspace level, run the following command

pnpm i <axios_this_is_example> -w

For installing Packages at a specific application, run the following command

pnpm i <axios_this_is_example> --filter "<workspace_app_name>"

For installing workspace at a specific directory, run the following command

pnpm install @appfire/helpers --filter "./<directory_name>/*"

for specific app

pnpm install @appfire/helpers --filter "@appfire/fuse-cdk-iac"

Adding new Library

We have a sample application lib-template. We will use it to create a new app.

Run the following command to generate new library in desired folder

cp -R _templates/lib <path_to_new_lib>

once its done. Change the directory to newly created library and update its name from @appfire/lib-template to Preferred name

Package Versioning Strategies

When creating a release branch from the develop branch, we run the following command to select and update package versions. We use Changesets to update the versions (major, minor, or patch) by running the following command:

bash scripts/ci/version.sh

Package Publishing Strategies

Different strategies will be used to publish packages based on the branch as outlined below:

Release Branches

For branches matching the pattern release/*, we will use the --force flag to publish to the appfire-common-snapshot registry with the rc tag. This will allow users to install the package using the rc tag instead of the default latest tag. For example:

pnpm i @appfire/fuse-cdk-iac@rc

Develop Branch

For the develop branch, we will also use the --force flag to publish to the appfire-common-snapshot registry. Users can install the package by running the following command:

pnpm i @appfire/fuse-cdk-iac@latest

Master Branch

For the master branch, we will publish to the appfire-npm registry. Users can install the package by running the following command:

pnpm i @appfire/fuse-cdk-iac@latest

⭐ Note that pnpm will not publish the package if the current version is already available in the registry.

To publish the packages, run the following command:

bash scripts/ci/publish.sh

Docs configuration for new Library

  1. Add following in package.json
"scripts": {
........ others
"docs": "npx typedoc && cp CHANGELOG.md ../../docs/docs/<library name> && cp README.md ../../docs/docs/<library name>/README.md"
}

  1. Add typedoc.json file to the library folder, which contains
  {
"entryPoints": [
"src/index.ts"
],
"out": "../../docs/docs/<library name>",
"publicPath": "../",
"plugin": [
"typedoc-plugin-markdown"
]
}

Contribution guidelines

  • Writing tests
  • Based on type of changes (Major, Minor, and Patch) use changeset to update package versions. for more information please check here

Who do I talk to?