Skip to content

Latest commit

 

History

History
159 lines (107 loc) · 4.14 KB

README.md

File metadata and controls

159 lines (107 loc) · 4.14 KB

Lens SDK

The official SDK for the Lens 🌿.

Table of Contents

Installation

Development Workflow

This section is for developers who want to contribute to the SDK.

Initial Setup

Clone the repository:

git clone https://github.com/lens-network/sdk.git

Install the dependencies:

pnpm install

Pre-requisites:

Use nvm to manage your Node.js versions. Run the following command in the project root folder:

nvm use

to switch to the correct Node.js version.

Enable corepack to use the the correct version of pnpm.

Run the following command in the project root folder:

corepack install

to install the correct version once. After that corepack will automatically use the correct version of pnpm when entering the project folder.

Usage

Run the tests:

  • pnpm test:client: Run the tests for the @lens-protocol/client package.

Lint the code:

pnpm lint

Compile the code:

pnpm build

Clean the build:

pnpm clean

Create a new package:

pnpm new:package

IDE Setup

The project uses Biome to format and lint the code. You can install the Biome extension for your IDE: https://biomejs.dev/guides/editors/first-party-extensions/

Publishing

  1. Create a new release branch using the release/X.Y.Z naming convention.

  2. Bumps up version number and updates the changelog.

    pnpm changeset version
  3. Commit the changes using chore: bumps up version number as the commit message.

  4. Push the changes to the remote repository.

  5. Open a pull request to the main branch.

  6. Wait for all checks to pass and for the pull request to be approved.

  7. Publish the package.

    pnpm changeset publish
  8. Push tags to the remote repository.

    git push --follow-tags
  9. Merge the pull request to the main branch.

Troubleshooting

Incompatible Types Across Packages

Working within a monorepo can sometimes lead to type incompatibilities across packages. If you encounter an error like:

Type 'import("[...]/packages/client/dist/index").PublicClient<import("[...]/packages/client/dist/index").Context>' is not assignable to type 'import("[...]/packages/client/src/clients").PublicClient<import("[...]/packages/client/src/context").Context>'.

This usually indicates that TypeScript is picking up types from different versions of the same package. To resolve this, make sure you have configured the entry points correctly as aliases in the top level tsconfig.json file.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "compilerOptions": {
    "skipLibCheck": true,
    "types": ["node"],
    "paths": {
      "@lens-protocol/client": ["./packages/client/src"],
      "@lens-protocol/client/actions": ["./packages/client/src/actions"],
      "@lens-protocol/client/test-utils": ["./packages/client/src/test-utils"],
      "@lens-protocol/env": ["./packages/env/src"],
      "@lens-protocol/graphql": ["./packages/graphql/src"],
      "@lens-protocol/react": ["./packages/react/src"],
      "@lens-protocol/storage": ["./packages/storage/src"],
      "@lens-protocol/types": ["./packages/types/src"]
    }
  },
  "include": ["**/*.ts"],
  "exclude": ["dist", "node_modules"]
}

Contributing

We are currently focused on launching Lens Network mainnet and Lens Protocol v3. We are not able to accept contributions at this time. We will update this section in due course.

If you have a pressing issue or feature request, please open an issue on GitHub.

License

Lens SDK is MIT licensed.