This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

@lens-protocol/storage-node-client
TypeScript icon, indicating that this package has built-in type declarations

0.0.0-latest-20241209200445 • Public • Published

Lens Storage Node Client

The official Lens Storage Node client for JavaScript, TypeScript, and Node.js.

Table of Contents

Quick Start

pnpm add @lens-protocol/storage-node-client

# or

npm install @lens-protocol/storage-node-client

# or

yarn add @lens-protocol/storage-node-client

Create an instance of the StorageClient:

import { StorageClient, testnet } from "@lens-protocol/storage-node-client";

const storageClient = StorageClient.create(testnet);

Assuming you have a signer instance that satisfies the Signer interface.

interface Signer {
   signMessage({ message }): Promise<string>;
}

[!TIP] > Viem's WalletClient class satisfies the Signer interface.

Upload a file:

const { uri, storageKey, gatewayUrl } = await storageClient.uploadFile(file:File);

console.log(uri); // lens://3552f3b6403e06ac89eba06b9f41ad82fd5dfb95c57d35b9446767…

Upload a mutable file:

const { uri, storageKey, gatewayUrl } = await storageClient.uploadFile(file:File, { mutable: true });

Use the lens_account ACL template:

const { uri, storageKey, gatewayUrl } = await storageClient.uploadFile(file:File, {
   acl: {
      template: 'lens_account',
      lensAccount: '0x1234567890abcdef1234567890abcdef12345678'
   }
});

Use the generic_acl ACL template:

const file: File = ...

const { uri, storageKey, gatewayUrl } = await storageClient.uploadFile(file, {
   acl: {
      template: 'generic_acl',
      contractAddress: '0x1234567890abcdef1234567890abcdef12345678',
      chainId: 1,
      networkType: 'evm',
      functionSig: '0x12345678',
      params: [1, 2, 3]
   }
});

Upload a folder:

const files: FileList = ...

const {
   files,   // [ { uri, storageKey, gatewayUrl } ],
   folder   // { uri, storageKey, gatewayUrl }
} = await storageClient.uploadFolder(files);

console.log(folder.uri); // lens://3552f3b6403e06ac89eba06b9f41ad82fd5dfb95c57d35b9446767…
console.log(files[0].uri); // lens://b53d9c4ea2acbadc00b9d0fc61bafa6ba1bf161dade9ac465667f5…

Delete a file or folder:

const success = await storageClient.delete(
  "lens://3552f3b6403e06ac89eba06b9f41ad82fd5dfb95c57d35b9446767…",
  walletClient
);

console.log(success); // true

Edit a file:

const file: File = ...

const success = await storageClient.editFile('lens://3552f3b6403e06ac89eba06b9f41ad82fd5dfb95c57d35b9446767…', file, walletClient);

console.log(success); // true

Development Workflow

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

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.

Initial Setup

Clone the repository:

git clone https://github.com/lens-network/lens-storage-node-client-libs.git
cd lens-storage-node-client-libs/typescript

Create .env file from the .env.example template:

cp .env.example .env

and populate the PRIVATE_KEY environment variable:

PRIVATE_KEY=0x…
ACCOUNT=0x…
ADDRESS=

with the details of a Lens Account owner (needed by Lens Account ACL tests).

Install the dependencies:

pnpm install

Usage

Run the tests:

  • pnpm test

Lint the code:

pnpm lint

Compile the code:

pnpm build

Clean the build:

pnpm clean

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.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

Lens Social SDK is MIT licensed.

Readme

Keywords

Package Sidebar

Install

npm i @lens-protocol/storage-node-client

Weekly Downloads

15

Version

0.0.0-latest-20241209200445

License

MIT

Unpacked Size

121 kB

Total Files

9

Last publish

Collaborators

  • cnaldi
  • donosonaumczuk
  • joshstevens19
  • npm_avaralabs
  • zioid