open-index/open-npm huggingface dataset:
npm package: @sensethenlove/env-write
Description: Set keys & values in .env file w/ bash
Author: Sense Then Love
Latest version: 1.1.1
Deprecated: This project has been renamed. Install using @feelinglovelynow/env-write instead.

# 🕉 @sensethenlove/env-write


### 🙏 Description
* Set keys & values in `.env` file w/ `bash`.
* Helpful if using `.env` file in an environment where `process` is undefined.
* If key is found in the `.env` file the new value is set.
* If key is not found in the `.env` file the key & value are added @ the end of the file.
* Only works if each key in `.env` file is on its own line.

### ☯️ Install
```bash
pnpm add @sensethenlove/env-write
```

### ❤️ Example: package.json w/o optional bash
```json
{
  "scripts": {
    "localEnv": "node node_modules/@sensethenlove/env-write/lib/index.js ENVIRONMENT=local HOST=http://localhost:5173 API=https://dev-api.example.com",
    "devEnv": "node node_modules/@sensethenlove/env-write/lib/index.js ENVIRONMENT=development HOST=https://dev.example.com API=https://dev-api.example.com",
    "mainEnv": "node node_modules/@sensethenlove/env-write/lib/index.js ENVIRONMENT=production HOST=https://app.example.com API=https://api.example.com"
  }
}
```

### 💛 Example: `.env` file below based on `mainEnv` script above
```toml
# foo here before
ENVIRONMENT='production'
HOST='https://app.example.com'
API='https://api.example.com'
# bar remains
```

### 🧡 Example: Bash script (optional) `(env.sh)`
```bash
#!/bin/bash
node node_modules/@sensethenlove/env-write/lib/index.js ENVIRONMENT=$env HOST=$host API=$api
```

### 💟 Example: package.json w/ optional bash
```json
{
  "scripts": {
    "localEnv": "env=local host=http://localhost:5173 api=https://dev-api.example.com bash ./src/lib/scripts/env.sh",
    "devEnv": "env=development host=https://dev.example.com api=https://dev-api.example.com bash ./src/lib/scripts/env.sh",
    "mainEnv": "env=production host=https://app.example.com api=https://api.example.com bash ./src/lib/scripts/env.sh"
  }
}
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
* [@sensethenlove/svelte-loading-anchor](https://www.npmjs.com/package/@sensethenlove/svelte-loading-anchor)
npm package: @sensethenlove/get-form-entries
Description: Recieves Form Data & responds with an Object
Author: Sense Then Love
Latest version: 1.0.1
Deprecated: This project has been renamed. Install using @feelinglovelynow/get-form-entries instead.

# 🕉 @sensethenlove/get-form-entries


### 🙏 Description
* Recieves Form Data & responds with an Object
* Converts `<input name="foo" value="bar" />` into `{ foo: 'bar' }`
* Converts `<input name="image" />` into `{ image: File }`
* Converts `<input name="images" multiple />` into `{ images: File[] }`
* If the input support multiple but only 1 file is uploaded => `{ image: File }`
* An array is used for a response value only if multiple files share the same form name (example below)


### ☯️ Install
```bash
pnpm add @sensethenlove/get-form-entries
```

### 💛 Example
```ts
import { getFormEntries } from '@sensethenlove/get-form-entries'

const fields = getFormEntries(formData)
```


### 🧡 Example: FormData (request)
```
  FormData <entries>
    0: message → "Hello World!"
​​    1: images → File
​​​     <key>: "images"
​​​     <value>: File
​​    2: images → File
​​​     <key>: "images"
​​​     <value>: File
​​    3: images → File
​​​     <key>: "images"
​​     <value>: File
```

### 💚 Example: Fields (response)
```ts
{
  message: 'Hello World!',
  images: [
    File {
      size: 93146,
      type: 'image/jpeg',
      name: 'glew-fl.jpg',
      lastModified: 1683003052322
    },
    File {
      size: 64056,
      type: 'image/jpeg',
      name: 'violet flame.jpg',
      lastModified: 1683003052322
    },
    File {
      size: 46030,
      type: 'image/jpeg',
      name: 'violet-flame.jpg',
      lastModified: 1683003052323
    }
  ]
}
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
* [@sensethenlove/svelte-loading-anchor](https://www.npmjs.com/package/@sensethenlove/svelte-loading-anchor)
npm package: @sensethenlove/get-relative-time
Description: Simple function that recieves a date and gives back the relative time using Intl.RelativeTimeFormat('en', { numeric: 'auto' })
Author: Sense Then Love
Latest version: 1.0.0
Deprecated: This project has been renamed. Install using @feelinglovelynow/get-relative-time instead.

# 🕉 @sensethenlove/get-relative-time


### 🙏 Description
Simple function that recieves a date and gives back the relative time using `Intl.RelativeTimeFormat('en', { numeric: 'auto' })`


### ☯️ Install
```bash
pnpm add @sensethenlove/get-relative-time
```

### 💛 Example
```ts
import { getRelativeTime } from '@sensethenlove/get-relative-time'

getRelativeTime(new Date()) // now
getRelativeTime(new Date('2023-05-05')) // tomorrow
getRelativeTime(new Date('1991-04-08')) // 32 years ago
```


### 🧡 Supports
* Seconds
* Minutes
* Hours
* Days
* Weeks
* Months
* Years


### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/get-form-entries](https://www.npmjs.com/package/@sensethenlove/get-form-entries)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
* [@sensethenlove/svelte-loading-anchor](https://www.npmjs.com/package/@sensethenlove/svelte-loading-anchor)
npm package: @sensethenlove/global-style
Description: Global styling for body, html, common keyframes, common styles & rem assistance
Author: Sense Then Love
Latest version: 1.0.8
Deprecated: This project has been renamed. Install using @feelinglovelynow/global-style instead.

# 🕉 @sensethenlove/global-style


### 🙏 Description
Global styling for body, html, common keyframes, common styles & [rem assistance](https://stackoverflow.com/questions/59920538)

### ☯️ Install
```bash
pnpm add @sensethenlove/global-style
```

### 💛 Add styling to site
```ts
import '@sensethenlove/global-style/lib/index.css'
```

### 💙 Here are the styles
```scss
body,
html {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

html {
  font-size: 62.5%; /* https://stackoverflow.com/questions/59920538 */
}

body {
  font-size: 1.8rem;
  line-height: 1.369;

  * {
    box-sizing: border-box;
  }
}

@keyframes fade-in {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fade-in-from-above {
  0% {
    opacity: 0;
    transform: translateY(-9rem);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-out-and-slide-up {
  0% {
    opacity: 1;
    transform: translateY(0);
  }

  100% {
    opacity: 0;
    transform: translateY(-9rem);
  }
}

@keyframes subtle-fade-in-from-above {
  0% {
    opacity: 0;
    transform: translateY(-0.9rem);
  }

  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes subtle-fade-out-and-slide-up {
  0% {
    opacity: 1;
    transform: translateY(0);
  }

  100% {
    opacity: 0;
    transform: translateY(-0.9rem);
  }
}

.pr-text {
  padding-right: 0.45rem;
}
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
npm package: @sensethenlove/jwt
Description: Node and/or Edge helper functions to create JWK's & create & verify JWT's w/ the subtle crypto api (ECDSA)
Author: Sense Then Love
Latest version: 1.0.6
Deprecated: This project has been renamed. Install using @feelinglovelynow/jwt instead.

# 🕉 @sensethenlove/jwt


### 🙏 Description
Node and/or Edge helper functions to create JWK's & create & verify JWT's w/ the subtle crypto api (ECDSA)


### ☯️ Install
```bash
pnpm add @sensethenlove/jwt
pnpm add buffer # only necessary if edge (browser) (cloudflare workers)
```

### 💛 Example: Create public & private jwk
The public & private jwk will log in the terminal, then we put them in our `.env` file
```ts
import { createJWKs } from '@sensethenlove/jwt'

createJWKs()
```


### 🧡 Example: Create jwt
```ts
import { Buffer } from 'buffer/' // edge
import { Buffer } from 'node:buffer' // node
import { createJWT } from '@sensethenlove/jwt'
import { JWK_PRIVATE } from '$env/static/private'

const jwtPayload = { userId: 1 }
const expiresInAsSeconds = 32400 // 9 hours
const jwt = await createJWT(jwtPayload, expiresInAsSeconds, JWK_PRIVATE, Buffer)
```

### ❤️ Example: Decode jwt
```ts
import { Buffer } from 'buffer/' // edge
import { Buffer } from 'node:buffer' // node
import { decodeJWT } from '@sensethenlove/jwt'

const decoded = decodeJWT(jwt, Buffer)
```

### 💜 Example: Verify jwt
```ts
import { Buffer } from 'buffer/' // edge
import { Buffer } from 'node:buffer' // node
import { verifyJWT } from '@sensethenlove/jwt'
import { JWK_PUBLIC } from '$env/static/private'

const payload = await verifyJWT(jwt, JWK_PUBLIC, Buffer)
```

### 💚 Errors
* `JWTError` extends `Error`
* All other errors below extend `JWTError`
```ts
import { JWTError, CreateTokenError, DecodeTokenError, VerifyTokenError, VerifyTokenExpiredError } from '@sensethenlove/jwt'

try {
  // jwt code
} catch (e) {
  if (e instanceof JWTError) console.log('foo')
}
```

### 💖 Our helpful packages!
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
npm package: @sensethenlove/loop-backwards
Description: Loop an array backwards! Give loopBackwards() an array and a callback. On each iteration calback provides the current item, a splice function, and the current index. If the splice function is called the item is removed from the array. If the splice functi
Author: Sense Then Love
Latest version: 1.0.9
Deprecated: This project has been renamed. Install using @feelinglovelynow/loop-backwards instead.

# 🕉 @sensethenlove/loop-backwards


### 🙏 Description
Loop an array backwards! Give loopBackwards() an array and a callback. On each iteration calback provides the current item, a splice function, and the current index. If the splice function is called the item is removed from the array. If the splice function is called & the current item is a DOM element the item is removed from the array & the item is removed from the DOM

### ☯️ Install
```bash
pnpm add @sensethenlove/loop-backwards
```

### 💛 Example: Array of numbers
```ts
import loopBackwards from '@sensethenlove/loop-backwards'

loopBackwards(numbers, (number, splice, index) => {
  if (number === 9 || index === 9) splice()
})
```


### 🧡 Example: Array of objects
```ts
loopBackwards(items, ({ foo }, splice) => {
  if (foo === 'bar') splice()
})
```

### 💚 Example: Array of DOM elements
```ts
const elements = document.querySelectorAll('div')

loopBackwards(Array.from(elements), (element, splice) => {
  if (element.getAttribute('foo') === 'bar') splice()
})
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
npm package: @sensethenlove/slug
Description: Helper function to create a slug + an HTML page to generate slugs in the browser
Author: Sense Then Love
Latest version: 1.0.2
Deprecated: This project has been renamed. Install using @feelinglovelynow/slug instead.

# 🕉 @sensethenlove/slug


### 🙏 Description
* Helper function to create a slug (does not require Svelte) & a Svelte component to generate slugs in the browser (requires Svelte)


### 💎 How it works
* All lower case
* Replace all spaces with a dash
* Remove all these characters !@#$%^&*()_+=;':",./<>?\|~`%&¢£¥€©®™·’

<img src="https://imagedelivery.net/awgX85h4ifgiJaXRhZTMNw/a98eb469-f3e8-449e-0921-3829b7b94500/public" />


### ☯️ Install
```bash
pnpm add @sensethenlove/slug
```


### 💙 Example: Slug function
```ts
import { slug } from '@sensethenlove/slug'

const response = slug('Hello World 123')
```

### 💛 Example: Slug component
```ts
<script lang="ts">
  import { Slug } from '@sensethenlove/slug'
</script>

<Slug />
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
npm package: @sensethenlove/svelte-loading-anchor
Description: Svelte component that supports an href property, shows a loading icon when clicked & stops loading on page navigate
Author: Sense Then Love
Latest version: 1.0.2
Deprecated: This project has been renamed. Install using @feelinglovelynow/svelte-loading-anchor instead.

# 🕉 @sensethenlove/svelte-loading-anchor


### 🙏 Description
* Svelte component that supports an `href` property, shows a loading icon when clicked & stops loading on page navigate
* Will not show loading icon if link clicked is for the current page
* Supports `ssr` add to bypass client side routing [(b/c)](https://github.com/sveltejs/kit/issues/9390)
* Supports `css` property to pass custom css classes to anchor
* Supports `<slot />` to add anything like svg's or images in the anchor


### ☯️ Install
```bash
pnpm add @sensethenlove/svelte-loading-anchor
```

### 💛 Add custom styling
```scss
.loading-anchor {
  color: green;
  text-decoration: none;
  &:hover {
    text-decoration: underline;
  }
}
```

### 🧡 Examples
```svelte
<script lang="ts">
  import '$lib/styles.scss'
  import { LoadingAnchor } from '@sensethenlove/svelte-loading-anchor'
</script>

<LoadingAnchor href="/test" label="Test" />

<LoadingAnchor href="/" label="Home" ssr={ true }>
  <svg role="img" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><title>Icon for home page</title><path fill="currentColor" d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" fill-rule="evenodd" clip-rule="evenodd"></path></svg>
</LoadingAnchor>
```

### 💙 Properties
```ts
export let css: string = ''
export let label: string = ''
export let href: string = '/'
export let ssr: boolean = false // does a window.location.href = href https://github.com/sveltejs/kit/issues/9390
export let loadWidth: 'standard' | 'big' | 'huge' = 'standard'
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/toast](https://www.npmjs.com/package/@sensethenlove/toast)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
npm package: @sensethenlove/toast
Description: Show a closeable success and/or info toast notification
Author: Sense Then Love
Latest version: 1.0.8
Deprecated: This project has been renamed. Install using @feelinglovelynow/toast instead.

# 🕉 @sensethenlove/toast


### 🙏 Description
Show a closeable success and/or info toast notification

![Toast example](https://sensethenlove.com/cdn-cgi/imagedelivery/awgX85h4ifgiJaXRhZTMNw/85083571-c1d7-4d22-3459-cd62dbb50700/public)

### 💎 Prerequisites
Requires [@sensethenlove/global-style](https://github.com/sensethenlove/global-style) or add this css to your site
```css
@keyframes fade-in-from-above {
  0% {
    opacity: 0;
    transform: translateY(-9rem);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-out-and-slide-up {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-9rem);
  }
}

html { /* Helps w/ rem, can still look good w/o just set rem/px as desired: https://stackoverflow.com/questions/59920538  */
  font-size: 62.5%;
}
```

### ☯️ Install
```bash
pnpm add @sensethenlove/toast
pnpm add @sensethenlove/global-style # Only necessary if prerequisite css above is not present
```

### 🧡 Add wrapper to DOM
```html
<div id="stl--toast-wrapper"></div>
```

### ❤️ Add css for wrapper to be your desired z-index
```css
#stl--toast-wrapper {
  z-index: 90;
}
```

### 💛 Add imports
```ts
import showToast from '@sensethenlove/toast'
import '@sensethenlove/toast/lib/index.css'
import '@sensethenlove/global-style/lib/index.css' // Only necessary if prerequisite css above is not present
```

### 💙 Example: Show info toast
```ts
showToast({ type: 'info', items: [ 'Foo' ] })
```

### 💚 Example: Show success toast w/ 2 items & link
```ts
showToast({ type: 'success', items: [ 'Foo', '<a href="/">Bar</a>' ] })
```

### 💖 Our helpful packages!
* [@sensethenlove/jwt](https://www.npmjs.com/package/@sensethenlove/jwt)
* [@sensethenlove/slug](https://www.npmjs.com/package/@sensethenlove/slug)
* [@sensethenlove/env-write](https://www.npmjs.com/package/@sensethenlove/env-write)
* [@sensethenlove/global-style](https://www.npmjs.com/package/@sensethenlove/global-style)
* [@sensethenlove/svelte-modal](https://www.npmjs.com/package/@sensethenlove/svelte-modal)
* [@sensethenlove/loop-backwards](https://www.npmjs.com/package/@sensethenlove/loop-backwards)
* [@sensethenlove/svelte-turnstile](https://www.npmjs.com/package/@sensethenlove/svelte-turnstile)
npm package: @sensible-contract/abstract-wallet
Description: abstract wallet
Author: sensiblecontract.org
Latest version: 1.0.0

# abstract-wallet

This is an abstraction of a adaptor to interact with wallet.

Wallets should implement the interfaces of Wallet.

Use it to get address and sign transaction.

## Installation

```bash
npm install @sensible-contract/abstract-wallet
```

## Usage

### Javascript

```
const { Wallet } = require("@sensible-contract/abstract-wallet");
```

### ES6

```
import { Wallet } from "@sensible-contract/abstract-wallet";
```
npm package: @sensible-contract/bsv
Description: BSV 1.5.6
Author: sensiblecontract.org
Latest version: 0.1.1

# bsv

This is the [BSV library][bsv] that [sensible-contract/web3.js][repo] mainly depends on

## Installation

```bash
npm install @sensible-contract/bsv

```

## Usage

### Javascript

```
const bsv = require("@sensible-contract/bsv");
const {BN} = require("@sensible-contract/bsv");

```

### ES6

```
import * as bsv from "@sensible-contract/bsv";
import { BN } from "@sensible-contract/bsv";
```

[bsv]: https://github.com/moneybutton/bsv
[repo]: https://github.com/sensible-contract/web3.js
npm package: @sensible-contract/nft-js
Description: Sensible Contract NFT Javascript SDK
Author: sensiblecontract.org
Latest version: 1.3.0

# nft-js

[![npm version](https://img.shields.io/npm/v/@sensible-contract/nft-js.svg)](https://www.npmjs.com/package/@sensible-contract/nft-js)

Sensible Contract NFT Javascript SDK

## Installation

```bash
npm install @sensible-contract/nft-js
```

## Usage
npm package: @sensible-contract/providers
Description: Providers for sensible-contracts
Author: sensiblecontract.org
Latest version: 1.2.1

# Sensible Web3 Providers

[![npm version](https://img.shields.io/npm/v/@sensible-contract/providers.svg)](https://www.npmjs.com/package/@sensible-contract/providers)

This is part of [sensible-web3][repo].

It contains common Provider classes to support sensible-web3.

Please read the [documentation][docs] for more.

## Installation

```bash
npm install @sensible-contract/providers
```

## Usage

```js
const {
  SensiblequeryProvider,
  MetaSVProvider,
  WhatsOnChainProvider
} = require("@sensible-contract/providers");
let provider = new SensiblequeryProvider();
```

[docs]: https://sensible-web3.readthedocs.io/en/latest/web3.html#providers
[repo]: https://github.com/sensible-contract/sensible-web3
npm package: @sensible-contract/satotx-api
Description: A JavaScript/TypeScript wrapper for Satotx API.
Author: sensiblecontract.org
Latest version: 0.1.4

# Satotx API

A JavaScript/TypeScript wrapper for [satotx][satotx] API.

## Installation

```bash
npm install @sensible-contract/satotx-api
```

## Usage

```js
const { SatotxApi } = require("@sensible-contract/satotx-api");
let satotxApi = new SatotxApi("https://satotx.tswap.io");
console.log(satotxApi);
```

[satotx]: https://github.com/sensible-contract/satotx
npm package: @sensible-contract/sensible-api
Description: A JavaScript/TypeScript wrapper for sensiblequery API.
Author: sensiblecontract.org
Latest version: 1.2.0

# Sensible API

A JavaScript/TypeScript wrapper for [sensiblequery][sensiblequery] API.

## Installation

```bash
npm install @sensible-contract/sensible-api
```

## Usage

```js
const { SensibleApi } = require("@sensible-contract/sensible-api");
let sensibleApi = new SensibleApi();
sensibleApi.authorize({
    authorization:"your apikey",
});
console.log(sensibleApi);

//or
let sensibleApi2 = new SensibleApi("your api url");
console.log(sensibleApi2);
```

[sensiblequery]: https://github.com/sensible-contract/sensiblequery
npm package: @sensible-contract/sensible-sdk-v2
Description: Sensible Contract Javascript SDK
Author: sensiblecontract.org
Latest version: 0.4.1

# Sensible-SDK-V2

This sdk helps you to interact with sensible contracts. 

You can customize extensions according to this SDK.
See [SDK-Extension-DEMO](https://github.com/sensible-contract/sdk-extension-demo.git)
npm package: @sensible-contract/sensible-web3
Description: Sensible Contract Javascript SDK
Author: sensiblecontract.org
Latest version: 0.4.1

# Sensible-Web3

[![npm version](https://img.shields.io/npm/v/@sensible-contract/sensible-web3.svg)](https://www.npmjs.com/package/@sensible-contract/sensible-web3)

This is the Sensible Contract Javascript SDK.

You need to connect a wallet to use this library.

Please read the [documentation][docs] for more and try the [demo][demo].

## Installation

### Node

```bash
npm install @sensible-contract/sensible-web3
```

### Yarn

```bash
yarn add @sensible-contract/sensible-web3
```

### In the Browser

Use the prebuilt `umd/sensible-web3.min.js` , or
build using the repository:

```bash
npm run build
```

Then include `umd/sensible-web3.min.js` in your html file.
This will expose `Web3` on the window object.

Or via jsDelivr CDN:

```html
<script src="https://cdn.jsdelivr.net/npm/@sensible-contract/sensible-web3@latest/umd/sensible-web3.min.js"></script>
```

UNPKG:

```html
<script src="https://unpkg.com/@sensible-contract/sensible-web3@latest/umd/sensible-web3.min.js"></script>
```

## Usage

```js
// In Node.js
const Web3 = require('@sensible-contract/sensible-web3');

let web3 = new Web3(window.sensilet);
console.log(web3); > {
  sensible: ...,
  utils: ...,
  ...
}
```

### Usage with TypeScript

We support types within the repo itself. Please open an issue here if you find any wrong types.

You can use `web3.js` as follows:

```typescript
import Web3 from "@sensible-contract/sensible-web3";
const web3 = new Web3(window.sensilet);
```

## Documentation

Documentation can be found at [ReadTheDocs][docs].

## Demo 

Some usages can be found at [Demo][demo].

## Building

```bash
npm run build
```

## Testing (mocha)

```bash
npm run test
```

[docs]: https://sensible-web3.readthedocs.io
[demo]: https://demo.sensilet.com
npm package: @sensible-contract/tx-composer
Description: A tool to contruct transactions
Author: sensiblecontract.org
Latest version: 1.1.2

# tx-composer

A tool to contruct transactions.

## Installation

```bash
npm install @sensible-contract/tx-composer
```

## Usage

### Javascript

```
const {TxComposer} = require("@sensible-contract/tx-composer");
```

### ES6

```
import { TxComposer } from "@sensible-contract/tx-composer";
```
npm package: @sensible-contract/tx-decoder
Description: A tool to decode transactions.
Author: huanniangstudio
Latest version: 0.1.1

# tx-decoder

This is a tool to decode transaction.

## Installation

```bash
npm install @sensible-contract/tx-decoder
```

## Usage

### Javascript

```
const {TxDecoder} = require("@sensible-contract/tx-decoder");
```

### ES6

```
import { TxDecoder } from "@sensible-contract/tx-decoder";
```
npm package: @sensible-contract/wallet-provider
Description: web3 wallet provider
Author: sensiblecontract.org
Latest version: 0.1.1

# wallet-provider

A Provider is an abstraction of a adaptor to interact with wallet.

The wallet should implement the interfaces of WalletProvider.

Use it to get address and sign transaction.

## Installation

```bash
npm install @sensible-contract/wallet-provider
```

## Usage

### Javascript

```
const {WalletProvider} = require("@sensible-contract/wallet-provider");
```

### ES6

```
import { WalletProvider } from "@sensible-contract/wallet-provider";
```
npm package: @sensible-contract/web3
Description: web3
Author: sensiblecontract.org
Latest version: 0.1.1

# web3

我们参考以太坊上的应用实践，为 web3 提供了一个 BSV 上的实现。

web3 提供一个已被广泛应用的简洁模型，使得应用在对接特定钱包时，无需考虑特定细节即可实现标准化接入。它所带来的一致性，便捷性，灵活性和开放性已被广泛认可和接受。

在以太坊的生态内，采用 web3 标准的应用，可以一次性接入 MetaMask, Trust Wallet, Rainbow, imToken, TokenPocket, MathWallet 等数十个钱包。对接双方可以显著地提升相互对接和适配的效率。

![](docs/01.svg)
npm package: @sensible-contract/web3-sensible
Description: A module to send sensible-contract transaction
Author: sensiblecontract.org
Latest version: 0.1.1

# web3-sensible

This is a sub-package of [web3.js][repo].

Offering some methods to send sensible-contract transaction

Please read the [documentation][docs] for more.

## Installation

```bash
npm install @sensible-contract/web3-sensible
```

## Usage

```js
const sensible = require("@sensible-contract/web3-sensible");
```

[docs]: http://bitcoinsv-web3js.readthedocs.io/en/1.0/
[repo]: https://github.com/sensible-contract/web3.js
npm package: @sensible-contract/web3-utils
Description: Collection of utility functions used in web3.js.
Author: sensiblecontract.org
Latest version: 0.1.1

# web3-utils

This is a sub-package of [web3.js][repo].

This contains useful utility functions for Dapp developers.

Please read the [documentation][docs] for more.

## Installation

```bash
npm install @sensible-contract/web3-utils
```

## Usage

```js
const utils = require('@sensible-contract/web3-utils');
console.log(utils);
{
    fromDecimalUnit: function(){},
    toDecimalUnit: function(){},
    toSatoshis: function(){},
    ...
}
```

[docs]: http://bitcoinsv-web3js.readthedocs.io/en/1.0/
[repo]: https://github.com/sensible-contract/web3.js
npm package: @sensible-contract/web3-wallet
Description: A Wallet
Author: sensiblecontract.org
Latest version: 0.1.1

# web3-wallet

This is a sub-package of [web3.js][repo].

Please read the [documentation][docs] for more.

## Installation

```bash
npm install @sensible-contract/web3-wallet
```

## Usage

```js
const wallet = require("@sensible-contract/web3-wallet");
```

[docs]: http://sensible-web3js.readthedocs.io/en/1.0/
[repo]: https://github.com/sensible-contract/web3.js
npm package: @sensible-contract/witnessonchain-api
Description: A JavaScript/TypeScript wrapper for WitnessOnChain API.
Author: sensiblecontract.org
Latest version: 0.1.1

# WitnessOnChain API

A JavaScript/TypeScript wrapper for [witnessonchain][witnessonchain] API.

## Installation

```bash
npm install @sensible-contract/witnessonchain-api
```

[witnessonchain]: https://witnessonchain.com/