Skip to content

Commit

Permalink
Add readme (#8)
Browse files Browse the repository at this point in the history
* feat: add readme

* chore: changeset

* refactor: pr template

* feat: added small toc
  • Loading branch information
nickfrosty authored Dec 17, 2024
1 parent d3e7220 commit 5de7acb
Show file tree
Hide file tree
Showing 4 changed files with 363 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/grumpy-lemons-crash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"gill": patch
---

added readme
4 changes: 2 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#### Problem
### Problem



#### Summary of Changes
### Summary of Changes



Expand Down
178 changes: 178 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,179 @@
# gill

Welcome to gill, a [Solana web3.js v2](https://github.com/solana-labs/solana-web3.js) compatible
helper library for building Solana apps in Node, web, and React Native.

## Get started

Install `gill` with your package manager of choice:

```shell
npm install gill @solana/web3.js@2
```

```shell
pnpm add gill @solana/web3.js@2
```

```shell
yarn add gill @solana/web3.js@2
```

## Quick start

- [Create a Solana RPC connection](#create-a-solana-rpc-connection)
- [Create a transaction](#create-a-transaction)
- [Get a Solana Explorer link](#create-a-transaction)

You can also find some [Node specific helpers](#node-specific-imports):

- [Loading a keypair from a file](#loading-a-keypair-from-a-file)

### Create a Solana RPC connection

Create a Solana `rpc` and `rpcSubscriptions` client for any RPC URL or standard Solana network
moniker (i.e. `devnet`, `localnet`, etc).

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "mainnet-beta",
});
```

> Using the Solana moniker will connect to the public RPC endpoints. These are subject to heavy rate
> limits and should not be used in production applications.
To create an RPC client for your local test validator:

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "localnet",
});
```

To create an RPC client for a paid RPC service:

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "https://private-solana-rpc-provider.com",
});
```

### Create a transaction

Quickly create a Solana transaction:

```typescript
import { createTransaction } from "gill";

const transactions = createTransaction({
version,
feePayer,
instructions,
});
```

To create a transaction while setting the latest blockhash:

```typescript
import { createTransaction } from "gill";

const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();

const transactions = createTransaction({
version,
feePayer,
instructions,
latestBlockhash,
});
```

The `feePayer` can be either an `Address` or `TransactionSigner`.

### Get a Solana Explorer link for transactions, accounts, or blocks

Craft a Solana Explorer link for transactions, accounts, or blocks on any cluster.

> When no `cluster` is provided, defaults to `mainnet-beta`.
```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
transaction:
"4nzNU7YxPtPsVzeg16oaZvLz4jMPtbAzavDfEFmemHNv93iYXKKYAaqBJzFCwEVxiULqTYYrbjPwQnA1d9ZCTELg",
});
```

To get an explorer link for an account on devnet:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "devnet",
account: "nick6zJc6HpW3kfBm4xS2dmbuVRyb5F3AnUvj5ymzR5",
});
```

To get an explorer link for an account on your local test validator:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "localnet",
account: "11111111111111111111111111111111",
});
```

To get an explorer link for a block:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "mainnet-beta",
block: "242233124",
});
```

## Node specific imports

The `gill` package has specific imports for use in NodeJS server backend and/or serverless
environments which have access to Node specific APIs (like the file system via `node:fs`).

```typescript
import { ... } from "gill/node"
```

### Loading a keypair from a file

```typescript
import { loadKeypairSignerFromFile } from "gill/node";

// default file path: ~/.config/solana/id.json
const signer = await loadKeypairSignerFromFile();
console.log("address:", signer.address);
```

Load a `KeyPairSigner` from a filesystem wallet json file, like those output from the
[Solana CLI](https://solana.com/docs/intro/installation#install-the-solana-cli) (i.e. a JSON array
of numbers).

By default, the keypair file loaded is the Solana CLI's default keypair: `~/.config/solana/id.json`

To load a Signer from a specific filepath:

```typescript
import { loadKeypairSignerFromFile } from "gill/node";

const signer = await loadKeypairSignerFromFile("/path/to/your/keypair.json");
console.log("address:", signer.address);
```
178 changes: 178 additions & 0 deletions packages/gill/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,179 @@
# gill

Welcome to gill, a [Solana web3.js v2](https://github.com/solana-labs/solana-web3.js) compatible
helper library for building Solana apps in Node, web, and React Native.

## Get started

Install `gill` with your package manager of choice:

```shell
npm install gill @solana/web3.js@2
```

```shell
pnpm add gill @solana/web3.js@2
```

```shell
yarn add gill @solana/web3.js@2
```

## Quick start

- [Create a Solana RPC connection](#create-a-solana-rpc-connection)
- [Create a transaction](#create-a-transaction)
- [Get a Solana Explorer link](#create-a-transaction)

You can also find some [Node specific helpers](#node-specific-imports):

- [Loading a keypair from a file](#loading-a-keypair-from-a-file)

### Create a Solana RPC connection

Create a Solana `rpc` and `rpcSubscriptions` client for any RPC URL or standard Solana network
moniker (i.e. `devnet`, `localnet`, etc).

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "mainnet-beta",
});
```

> Using the Solana moniker will connect to the public RPC endpoints. These are subject to heavy rate
> limits and should not be used in production applications.
To create an RPC client for your local test validator:

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "localnet",
});
```

To create an RPC client for a paid RPC service:

```typescript
import { createSolanaClient } from "gill";

const { rpc, rpcSubscriptions } = createSolanaClient({
urlOrMoniker: "https://private-solana-rpc-provider.com",
});
```

### Create a transaction

Quickly create a Solana transaction:

```typescript
import { createTransaction } from "gill";

const transactions = createTransaction({
version,
feePayer,
instructions,
});
```

To create a transaction while setting the latest blockhash:

```typescript
import { createTransaction } from "gill";

const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();

const transactions = createTransaction({
version,
feePayer,
instructions,
latestBlockhash,
});
```

The `feePayer` can be either an `Address` or `TransactionSigner`.

### Get a Solana Explorer link for transactions, accounts, or blocks

Craft a Solana Explorer link for transactions, accounts, or blocks on any cluster.

> When no `cluster` is provided, defaults to `mainnet-beta`.
```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
transaction:
"4nzNU7YxPtPsVzeg16oaZvLz4jMPtbAzavDfEFmemHNv93iYXKKYAaqBJzFCwEVxiULqTYYrbjPwQnA1d9ZCTELg",
});
```

To get an explorer link for an account on devnet:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "devnet",
account: "nick6zJc6HpW3kfBm4xS2dmbuVRyb5F3AnUvj5ymzR5",
});
```

To get an explorer link for an account on your local test validator:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "localnet",
account: "11111111111111111111111111111111",
});
```

To get an explorer link for a block:

```typescript
import { getExplorerLink } from "gill";

const link: URL = getExplorerLink({
cluster: "mainnet-beta",
block: "242233124",
});
```

## Node specific imports

The `gill` package has specific imports for use in NodeJS server backend and/or serverless
environments which have access to Node specific APIs (like the file system via `node:fs`).

```typescript
import { ... } from "gill/node"
```

### Loading a keypair from a file

```typescript
import { loadKeypairSignerFromFile } from "gill/node";

// default file path: ~/.config/solana/id.json
const signer = await loadKeypairSignerFromFile();
console.log("address:", signer.address);
```

Load a `KeyPairSigner` from a filesystem wallet json file, like those output from the
[Solana CLI](https://solana.com/docs/intro/installation#install-the-solana-cli) (i.e. a JSON array
of numbers).

By default, the keypair file loaded is the Solana CLI's default keypair: `~/.config/solana/id.json`

To load a Signer from a specific filepath:

```typescript
import { loadKeypairSignerFromFile } from "gill/node";

const signer = await loadKeypairSignerFromFile("/path/to/your/keypair.json");
console.log("address:", signer.address);
```

0 comments on commit 5de7acb

Please sign in to comment.