mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2025-12-17 05:54:27 +01:00
Add Wasm package (#814)
This commit is contained in:
@@ -8,6 +8,7 @@ Please see the development guides for each crate/package:
|
||||
|
||||
### Packages
|
||||
* [React Native](packages/react-native/DEVELOPMENT.md)
|
||||
* [Wasm](packages/wasm/DEVELOPMENT.md)
|
||||
|
||||
## Automatic format & syntax checking
|
||||
To configure automatic code formatting and syntax checking for this repository, you can run the following command once:
|
||||
|
||||
4
cli/Cargo.lock
generated
4
cli/Cargo.lock
generated
@@ -4167,7 +4167,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "sdk-common"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=cc331f34102abda3a39a51524307688a74458050#cc331f34102abda3a39a51524307688a74458050"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=f3746d42f972208824a5a03075098d4dafc27215#f3746d42f972208824a5a03075098d4dafc27215"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"anyhow",
|
||||
@@ -4212,7 +4212,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "sdk-macros"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=cc331f34102abda3a39a51524307688a74458050#cc331f34102abda3a39a51524307688a74458050"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=f3746d42f972208824a5a03075098d4dafc27215#f3746d42f972208824a5a03075098d4dafc27215"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
||||
4
lib/Cargo.lock
generated
4
lib/Cargo.lock
generated
@@ -4498,7 +4498,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "sdk-common"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=cc331f34102abda3a39a51524307688a74458050#cc331f34102abda3a39a51524307688a74458050"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=f3746d42f972208824a5a03075098d4dafc27215#f3746d42f972208824a5a03075098d4dafc27215"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"anyhow",
|
||||
@@ -4543,7 +4543,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "sdk-macros"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=cc331f34102abda3a39a51524307688a74458050#cc331f34102abda3a39a51524307688a74458050"
|
||||
source = "git+https://github.com/breez/breez-sdk?rev=f3746d42f972208824a5a03075098d4dafc27215#f3746d42f972208824a5a03075098d4dafc27215"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
||||
@@ -37,8 +37,8 @@ anyhow = "1.0"
|
||||
log = "0.4.20"
|
||||
once_cell = "1.19"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
sdk-common = { git = "https://github.com/breez/breez-sdk", rev = "cc331f34102abda3a39a51524307688a74458050", features = ["liquid"] }
|
||||
sdk-macros = { git = "https://github.com/breez/breez-sdk", rev = "cc331f34102abda3a39a51524307688a74458050" }
|
||||
sdk-common = { git = "https://github.com/breez/breez-sdk", rev = "f3746d42f972208824a5a03075098d4dafc27215", features = ["liquid"] }
|
||||
sdk-macros = { git = "https://github.com/breez/breez-sdk", rev = "f3746d42f972208824a5a03075098d4dafc27215" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[patch.crates-io]
|
||||
|
||||
@@ -18,16 +18,36 @@ make init
|
||||
|
||||
## Building
|
||||
```bash
|
||||
make pack
|
||||
make build
|
||||
```
|
||||
|
||||
This will generate the following artifacts:
|
||||
* Bundle - suitable for use with bundlers like Webpack
|
||||
- `bundle/package.json`
|
||||
- `bundle/breez_sdk_liquid_wasm.d.ts`
|
||||
- `bundle/breez_sdk_liquid_wasm.js`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.js`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Deno - ES module for use with Deno
|
||||
- `deno/breez_sdk_liquid_wasm.d.ts`
|
||||
- `deno/breez_sdk_liquid_wasm.js`
|
||||
- `deno/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `deno/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Node - CommonJS module for use with Node.js
|
||||
- `node/package.json`
|
||||
- `node/breez_sdk_liquid_wasm.d.ts`
|
||||
- `node/breez_sdk_liquid_wasm.js`
|
||||
- `node/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `node/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Web - ES module for use in browsers
|
||||
- `web/package.json`
|
||||
- `web/breez_sdk_liquid_wasm.d.ts`
|
||||
- `web/breez_sdk_liquid_wasm.js`
|
||||
- `web/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `web/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
|
||||
- `pkg/package.json`
|
||||
- `pkg/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `pkg/breez_sdk_liquid_wasm_bg.d.wasm`
|
||||
- `pkg/breez_sdk_liquid_wasm.d.ts`
|
||||
- `pkg/breez_sdk_liquid_wasm.js`
|
||||
Each can be build separately with `make build-bundle`, `make build-deno`, `make build-node` or `make build-web`.
|
||||
|
||||
## Testing
|
||||
```bash
|
||||
|
||||
@@ -11,8 +11,19 @@ init:
|
||||
clippy:
|
||||
$(CLANG_PREFIX) cargo clippy --target=wasm32-unknown-unknown -- -D warnings
|
||||
|
||||
pack:
|
||||
$(CLANG_PREFIX) wasm-pack build --weak-refs --target web --scope @breeztech
|
||||
build: build-bundle build-deno build-node build-web
|
||||
|
||||
build-bundle:
|
||||
$(CLANG_PREFIX) wasm-pack build --target bundler --release --out-dir pkg/bundle
|
||||
|
||||
build-deno:
|
||||
$(CLANG_PREFIX) wasm-pack build --target deno --release --out-dir pkg/deno
|
||||
|
||||
build-node:
|
||||
$(CLANG_PREFIX) wasm-pack build --target nodejs --release --out-dir pkg/node
|
||||
|
||||
build-web:
|
||||
$(CLANG_PREFIX) wasm-pack build --target web --release --out-dir pkg/web
|
||||
|
||||
test:
|
||||
$(CLANG_PREFIX) wasm-pack test --headless --firefox
|
||||
|
||||
@@ -210,7 +210,6 @@ pub struct LnUrlWithdrawRequestData {
|
||||
#[sdk_macros::extern_wasm_bindgen(breez_sdk_liquid::prelude::LnUrlCallbackStatus)]
|
||||
pub enum LnUrlCallbackStatus {
|
||||
Ok,
|
||||
#[serde(rename = "ERROR")]
|
||||
ErrorStatus {
|
||||
#[serde(flatten)]
|
||||
data: LnUrlErrorData,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 Breez
|
||||
Copyright (c) 2025 Breez
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
130
packages/react-native/README.md
Normal file
130
packages/react-native/README.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# React Native Breez SDK - Nodeless *(Liquid Implementation)*
|
||||
|
||||
The Breez SDK provides developers with a end-to-end solution for integrating self-custodial Lightning payments into their apps and services. It eliminates the need for third parties, simplifies the complexities of Bitcoin and Lightning, and enables seamless onboarding for billions of users to the future of peer-to-peer payments.
|
||||
|
||||
## **What Is the Breez SDK - Nodeless *(Liquid Implementation)*?**
|
||||
|
||||
It’s a nodeless integration that offers a self-custodial, end-to-end solution for integrating Lightning payments, utilizing the Liquid Network with on-chain interoperability and third-party fiat on-ramps. Using the SDK you'll able to:
|
||||
|
||||
- **Send payments** via various protocols such as: Bolt11, Bolt12, BIP353, LNURL-Pay, Lightning address, BTC address
|
||||
- **Receive payments** via various protocols such as: Bolt11, LNURL-Withdraw, LNURL-Pay, Lightning address, BTC address
|
||||
|
||||
**Key Features**
|
||||
|
||||
- [x] Send and receive Lightning payments
|
||||
- [x] On-chain interoperability
|
||||
- [x] Complete LNURL functionality
|
||||
- [x] Multi-app support
|
||||
- [x] Multi-device support
|
||||
- [x] Real-time state backup
|
||||
- [x] Keys are only held by users
|
||||
- [x] USDT and multi-asset support on Liquid
|
||||
- [x] Built-in fiat on-ramp
|
||||
- [x] Free open-source solution
|
||||
|
||||
## Getting Started
|
||||
```bash
|
||||
npm install @breeztech/react-native-breez-sdk-liquid
|
||||
```
|
||||
or
|
||||
|
||||
```bash
|
||||
yarn add @breeztech/react-native-breez-sdk-liquid
|
||||
```
|
||||
|
||||
## Usage
|
||||
Head over to the [Breez SDK - Nodeless *(Liquid Implementation)* documentation](https://sdk-doc-liquid.breez.technology/) to start implementing Lightning in your app.
|
||||
|
||||
You'll need an API key to use the Breez SDK - Nodeless *(Liquid Implementation)*. To request an API key is free — you just need to [complete this simple form.](https://breez.technology/request-api-key/#contact-us-form-sdk)
|
||||
|
||||
```ts
|
||||
import React, { useEffect } from "react"
|
||||
import {
|
||||
addEventListener,
|
||||
connect,
|
||||
defaultConfig,
|
||||
LiquidNetwork,
|
||||
NodeConfigVariant,
|
||||
prepareSendPayment,
|
||||
SdkEvent,
|
||||
sendPayment
|
||||
} from "@breeztech/react-native-breez-sdk-liquid";
|
||||
import BuildConfig from "react-native-build-config"
|
||||
|
||||
const App = () => (
|
||||
...
|
||||
|
||||
const eventHandler = (sdkEvent: SdkEvent) => {
|
||||
console.log(`${JSON.stringify(sdkEvent)}`)
|
||||
}
|
||||
|
||||
const payInvoice = async (bolt11: string) => {
|
||||
// Pay invoice
|
||||
let prepareSendRes = await prepareSendPayment({ destination: bolt11 })
|
||||
let sendPaymentRes = await sendPayment({ prepareResponse: prepareSendRes })
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const asyncFn = async () => {
|
||||
// Construct the sdk default config
|
||||
const config = await defaultConfig(LiquidNetwork.MAINNET, BuildConfig.BREEZ_API_KEY)
|
||||
|
||||
// Connect to the Breez SDK make it ready to use
|
||||
await connect({ config, mnemonic })
|
||||
|
||||
// Add event handler
|
||||
await addEventListener(eventHandler)
|
||||
}
|
||||
|
||||
asyncFn()
|
||||
}, [])
|
||||
|
||||
...
|
||||
)
|
||||
|
||||
export default App
|
||||
```
|
||||
|
||||
## Example
|
||||
|
||||
In the `example` folder of the [Breez SDK repository](https://github.com/breez/breez-sdk-liquid/tree/main/packages/react-native/example) you will find a basic application for using Breez SDK. Change directory into the folder and install the dependencies:
|
||||
```bash
|
||||
yarn
|
||||
```
|
||||
Then to run on android:
|
||||
```bash
|
||||
yarn android
|
||||
```
|
||||
or for iOS:
|
||||
```bash
|
||||
yarn pods && yarn ios
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
### Important fix for React Native versions below 0.71.0
|
||||
|
||||
If your project uses a React Native version less < 0.71.0, and you want to build your app for Android, you might run into an error like this:
|
||||
|
||||
```
|
||||
2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:
|
||||
- /(...)/.gradle/caches/transforms-3/c476ede63d070b991438fe0d1c323931/transformed/jetified-react-native-0.68.6/jni/arm64-v8a/libc++_shared.so
|
||||
- /(...)/.gradle/caches/transforms-3/7c318ac8dd87c1f0c7540616d6d47bd8/transformed/jetified-breez-sdk-0.1.3/jni/arm64-v8a/libc++_shared.so
|
||||
```
|
||||
|
||||
To fix this you need to disambiguate which file to use by adding the following snippet to your app's `android/app/build.gradle`:
|
||||
|
||||
```gradle
|
||||
android {
|
||||
// ...
|
||||
packagingOptions {
|
||||
pickFirst 'lib/x86/libc++_shared.so'
|
||||
pickFirst 'lib/x86_64/libc++_shared.so'
|
||||
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
|
||||
pickFirst 'lib/arm64-v8a/libc++_shared.so'
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Both the Breez SDK as well as React Native package the `libc++_shared.so` native library.
|
||||
React Native versions below 0.71.0 have a [bug](https://github.com/facebook/react-native/issues/30297) where they cannot automatically handle multiple versions of this file.
|
||||
This has been [fixed](https://github.com/facebook/react-native/pull/35093) in React Native 0.71.0 and thus the above snippet only needs to be added to projects using React Native < 0.71.0.
|
||||
6
packages/wasm/.gitignore
vendored
Normal file
6
packages/wasm/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-debug.log
|
||||
yarn-error.log
|
||||
61
packages/wasm/DEVELOPMENT.md
Normal file
61
packages/wasm/DEVELOPMENT.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Development guide - Wasm package
|
||||
|
||||
When developing, it can be useful to work with a locally built version of the Breez Liquid SDK instead of relying on what is published already.
|
||||
To do this, you first need to build the Breez Liquid SDK bindings locally and then point the examples to make use of the locally built Breez Liquid SDK Wasm package.
|
||||
|
||||
All the following commands can be run in the `packages/wasm` directory.
|
||||
|
||||
## Prerequisites
|
||||
To build some dependencies you need to first install
|
||||
- [Protobuf](https://protobuf.dev/installation/)
|
||||
- [Emscripten](https://emscripten.org/docs/getting_started/downloads.html) for compiling to Wasm
|
||||
- [Firefox](https://mozilla.org/firefox/download/) for testing Wasm
|
||||
|
||||
```bash
|
||||
brew install protobuf emscripten
|
||||
```
|
||||
|
||||
On first usage you will need to run:
|
||||
```bash
|
||||
make init
|
||||
```
|
||||
|
||||
## Build
|
||||
To build the Wasm code run:
|
||||
```bash
|
||||
make build
|
||||
```
|
||||
|
||||
This will generate the following artifacts:
|
||||
|
||||
* Bundle - suitable for use with bundlers like Webpack
|
||||
- `bundle/package.json`
|
||||
- `bundle/breez_sdk_liquid_wasm.d.ts`
|
||||
- `bundle/breez_sdk_liquid_wasm.js`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.js`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `bundle/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Deno - ES module for use with Deno
|
||||
- `deno/breez_sdk_liquid_wasm.d.ts`
|
||||
- `deno/breez_sdk_liquid_wasm.js`
|
||||
- `deno/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `deno/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Node - CommonJS module for use with Node.js
|
||||
- `node/package.json`
|
||||
- `node/breez_sdk_liquid_wasm.d.ts`
|
||||
- `node/breez_sdk_liquid_wasm.js`
|
||||
- `node/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `node/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
* Web - ES module for use in browsers
|
||||
- `web/package.json`
|
||||
- `web/breez_sdk_liquid_wasm.d.ts`
|
||||
- `web/breez_sdk_liquid_wasm.js`
|
||||
- `web/breez_sdk_liquid_wasm_bg.wasm`
|
||||
- `web/breez_sdk_liquid_wasm_bg.wasm.d.ts`
|
||||
|
||||
## Testing with the examples
|
||||
|
||||
To test locally built bindings in the examples, the npm dependencies need to be updated to use the local package.
|
||||
```json
|
||||
"@breeztech/breez-sdk-liquid": "file:../../",
|
||||
```
|
||||
21
packages/wasm/LICENSE
Normal file
21
packages/wasm/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Breez
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
52
packages/wasm/PUBLISHING.md
Normal file
52
packages/wasm/PUBLISHING.md
Normal file
@@ -0,0 +1,52 @@
|
||||
## Publishing
|
||||
|
||||
### Build
|
||||
On first usage you will need to run:
|
||||
```
|
||||
make init
|
||||
```
|
||||
|
||||
Then to build the Wasm code:
|
||||
```
|
||||
make build
|
||||
```
|
||||
|
||||
#### Generated artifacts
|
||||
* Bundle - suitable for use with bundlers like Webpack
|
||||
>* bundle/package.json
|
||||
>* bundle/breez_sdk_liquid_wasm.d.ts
|
||||
>* bundle/breez_sdk_liquid_wasm.js
|
||||
>* bundle/breez_sdk_liquid_wasm_bg.js
|
||||
>* bundle/breez_sdk_liquid_wasm_bg.wasm
|
||||
>* bundle/breez_sdk_liquid_wasm_bg.wasm.d.ts
|
||||
* Deno - ES module for use with Deno
|
||||
>* deno/breez_sdk_liquid_wasm.d.ts
|
||||
>* deno/breez_sdk_liquid_wasm.js
|
||||
>* deno/breez_sdk_liquid_wasm_bg.wasm
|
||||
>* deno/breez_sdk_liquid_wasm_bg.wasm.d.ts
|
||||
* Node - CommonJS module for use with Node.js
|
||||
>* node/package.json
|
||||
>* node/breez_sdk_liquid_wasm.d.ts
|
||||
>* node/breez_sdk_liquid_wasm.js
|
||||
>* node/breez_sdk_liquid_wasm_bg.wasm
|
||||
>* node/breez_sdk_liquid_wasm_bg.wasm.d.ts
|
||||
* Web - ES module for use in browsers
|
||||
>* web/package.json
|
||||
>* web/breez_sdk_liquid_wasm.d.ts
|
||||
>* web/breez_sdk_liquid_wasm.js
|
||||
>* web/breez_sdk_liquid_wasm_bg.wasm
|
||||
>* web/breez_sdk_liquid_wasm_bg.wasm.d.ts
|
||||
|
||||
### Publish
|
||||
When publishing, make sure the following are updated:
|
||||
- Update the version number in `package.json`.
|
||||
- Set the published version of `@breeztech/breez-sdk-liquid` in the each example's `package.json` file.
|
||||
|
||||
Then login to npm:
|
||||
```
|
||||
npm login --@scope=@breeztech
|
||||
```
|
||||
Then publish:
|
||||
```
|
||||
npm publish --access public
|
||||
```
|
||||
108
packages/wasm/README.md
Normal file
108
packages/wasm/README.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Breez SDK - Nodeless *(Liquid Implementation)*
|
||||
|
||||
The Breez SDK provides developers with a end-to-end solution for integrating self-custodial Lightning payments into their apps and services. It eliminates the need for third parties, simplifies the complexities of Bitcoin and Lightning, and enables seamless onboarding for billions of users to the future of peer-to-peer payments.
|
||||
|
||||
## **What Is the Breez SDK - Nodeless *(Liquid Implementation)*?**
|
||||
|
||||
It’s a nodeless integration that offers a self-custodial, end-to-end solution for integrating Lightning payments, utilizing the Liquid Network with on-chain interoperability and third-party fiat on-ramps. Using the SDK you'll able to:
|
||||
|
||||
- **Send payments** via various protocols such as: Bolt11, Bolt12, BIP353, LNURL-Pay, Lightning address, BTC address
|
||||
- **Receive payments** via various protocols such as: Bolt11, LNURL-Withdraw, LNURL-Pay, Lightning address, BTC address
|
||||
|
||||
**Key Features**
|
||||
|
||||
- [x] Send and receive Lightning payments
|
||||
- [x] On-chain interoperability
|
||||
- [x] Complete LNURL functionality
|
||||
- [x] Multi-app support
|
||||
- [x] Multi-device support
|
||||
- [x] Real-time state backup
|
||||
- [x] Keys are only held by users
|
||||
- [x] USDT and multi-asset support on Liquid
|
||||
- [x] Built-in fiat on-ramp
|
||||
- [x] Free open-source solution
|
||||
|
||||
## Getting Started
|
||||
```bash
|
||||
npm install @breeztech/breez-sdk-liquid
|
||||
```
|
||||
or
|
||||
|
||||
```bash
|
||||
yarn add @breeztech/breez-sdk-liquid
|
||||
```
|
||||
|
||||
## Usage
|
||||
Head over to the [Breez SDK - Nodeless *(Liquid Implementation)* documentation](https://sdk-doc-liquid.breez.technology/) to start implementing Lightning in your app.
|
||||
|
||||
You'll need an API key to use the Breez SDK - Nodeless *(Liquid Implementation)*. To request an API key is free — you just need to [complete this simple form.](https://breez.technology/request-api-key/#contact-us-form-sdk)
|
||||
|
||||
### Web
|
||||
When developing a browser application you should import `@breeztech/breez-sdk-liquid` (or the explicit `@breeztech/breez-sdk-liquid/web` submodule).
|
||||
|
||||
It's important to first initialise the WebAssembly module by using `await init()` before making any other calls to the module.
|
||||
|
||||
```ts
|
||||
import init, {
|
||||
connect,
|
||||
defaultConfig,
|
||||
SdkEvent
|
||||
} from '@breeztech/breez-sdk-liquid/web'
|
||||
|
||||
// Initialise the WebAssembly module
|
||||
await init()
|
||||
```
|
||||
|
||||
### Node.js
|
||||
When developing a node.js application you should require `@breeztech/breez-sdk-liquid` (or the explicit `@breeztech/breez-sdk-liquid/node` submodule).
|
||||
```js
|
||||
const { connect, defaultConfig, initLogger } = require('@breeztech/breez-sdk-liquid/node')
|
||||
const { Command } = require('commander')
|
||||
require('dotenv').config()
|
||||
|
||||
class JsEventListener {
|
||||
onEvent = (event) => {
|
||||
console.log(`EVENT RECEIVED: ${JSON.stringify(event)}`)
|
||||
}
|
||||
}
|
||||
|
||||
const program = new Command()
|
||||
const eventListener = new JsEventListener()
|
||||
|
||||
const initSdk = async () => {
|
||||
// Set the logger to trace
|
||||
initLogger('trace')
|
||||
|
||||
// Get the mnemonic
|
||||
const breezApiKey = process.env.BREEZ_API_KEY
|
||||
const mnemonic = process.env.MNEMONIC
|
||||
|
||||
// Connect using the config
|
||||
const config = await defaultConfig('mainnet', breezApiKey)
|
||||
console.log(`defaultConfig: ${JSON.stringify(config)}`)
|
||||
|
||||
const sdk = await connect({ config, mnemonic })
|
||||
console.log(`connect`)
|
||||
|
||||
const listenerId = await sdk.addEventListener(eventListener)
|
||||
console.log(`addEventListener: ${listenerId}`)
|
||||
return sdk
|
||||
}
|
||||
|
||||
program.name('nodeless-wasm-cli').description('CLI for Breez SDK - Nodeless Wasm')
|
||||
|
||||
program.command('get-info').action(async () => {
|
||||
let sdk = await initSdk()
|
||||
let getInfoRes = await sdk.getInfo()
|
||||
console.log(`getInfo: ${JSON.stringify(getInfoRes)}`)
|
||||
})
|
||||
|
||||
program.parse()
|
||||
```
|
||||
|
||||
### Deno
|
||||
When developing a Deno application you should import `@breeztech/breez-sdk-liquid` (or the explicit `@breeztech/breez-sdk-liquid/deno` submodule).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Node.js version 19 is the first version to add `global.crypto`. When using less than version 19 this has to be polyfilled.
|
||||
28
packages/wasm/examples/node/.gitignore
vendored
Normal file
28
packages/wasm/examples/node/.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
.env
|
||||
21
packages/wasm/examples/node/README.md
Normal file
21
packages/wasm/examples/node/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Breez SDK Nodeless - Wasm NodeJs Example
|
||||
|
||||
## Prerequisites
|
||||
Copy the `example.env` file to `.env` and set the BREEZ_API_KEY and MNEMONIC environment variables.
|
||||
|
||||
## Build
|
||||
If you are running from a local Wasm package, build the Wasm package first in the [Wasm package](../../) directory.
|
||||
```bash
|
||||
cd ..
|
||||
make build
|
||||
```
|
||||
|
||||
Install the dependencies
|
||||
```bash
|
||||
npm i
|
||||
```
|
||||
|
||||
## Run
|
||||
```bash
|
||||
node cli.js get-info
|
||||
```
|
||||
42
packages/wasm/examples/node/cli.js
Normal file
42
packages/wasm/examples/node/cli.js
Normal file
@@ -0,0 +1,42 @@
|
||||
const { connect, defaultConfig, initLogger } = require('@breeztech/breez-sdk-liquid/node')
|
||||
const { Command } = require('commander')
|
||||
require('dotenv').config()
|
||||
|
||||
class JsEventListener {
|
||||
onEvent = (event) => {
|
||||
console.log(`EVENT RECEIVED: ${JSON.stringify(event)}`)
|
||||
}
|
||||
}
|
||||
|
||||
const program = new Command()
|
||||
const eventListener = new JsEventListener()
|
||||
|
||||
const initSdk = async () => {
|
||||
// Set the logger to trace
|
||||
initLogger('trace')
|
||||
|
||||
// Get the mnemonic
|
||||
const breezApiKey = process.env.BREEZ_API_KEY
|
||||
const mnemonic = process.env.MNEMONIC
|
||||
|
||||
// Connect using the config
|
||||
const config = await defaultConfig('mainnet', breezApiKey)
|
||||
console.log(`defaultConfig: ${JSON.stringify(config)}`)
|
||||
|
||||
const sdk = await connect({ config, mnemonic })
|
||||
console.log(`connect`)
|
||||
|
||||
const listenerId = await sdk.addEventListener(eventListener)
|
||||
console.log(`addEventListener: ${listenerId}`)
|
||||
return sdk
|
||||
}
|
||||
|
||||
program.name('nodeless-wasm-cli').description('CLI for Breez SDK - Nodeless Wasm')
|
||||
|
||||
program.command('get-info').action(async () => {
|
||||
let sdk = await initSdk()
|
||||
let getInfoRes = await sdk.getInfo()
|
||||
console.log(`getInfo: ${JSON.stringify(getInfoRes)}`)
|
||||
})
|
||||
|
||||
program.parse()
|
||||
2
packages/wasm/examples/node/example.env
Normal file
2
packages/wasm/examples/node/example.env
Normal file
@@ -0,0 +1,2 @@
|
||||
BREEZ_API_KEY = ""
|
||||
MNEMONIC = ""
|
||||
19
packages/wasm/examples/node/package.json
Normal file
19
packages/wasm/examples/node/package.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "example",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"main": "cli.js",
|
||||
"dependencies": {
|
||||
"@breeztech/breez-sdk-liquid": "file:../../",
|
||||
"commander": "^13.1.0",
|
||||
"dotenv": "^16.4.7"
|
||||
},
|
||||
"prettier": {
|
||||
"endOfLine": "lf",
|
||||
"printWidth": 150,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "none"
|
||||
}
|
||||
}
|
||||
28
packages/wasm/examples/web-vite/.gitignore
vendored
Normal file
28
packages/wasm/examples/web-vite/.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
.env
|
||||
26
packages/wasm/examples/web-vite/README.md
Normal file
26
packages/wasm/examples/web-vite/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Breez SDK Nodeless - Wasm Vite Example
|
||||
|
||||
## Prerequisites
|
||||
Copy the `example.env` file to `.env` and set the VITE_BREEZ_API_KEY and VITE_MNEMONIC environment variables.
|
||||
|
||||
## Build
|
||||
If you are running from a local Wasm package, build the Wasm package first in the [Wasm package](../../) directory.
|
||||
```bash
|
||||
cd ..
|
||||
make build
|
||||
```
|
||||
|
||||
Install the dependencies
|
||||
```bash
|
||||
yarn
|
||||
```
|
||||
|
||||
Run vite build
|
||||
```bash
|
||||
yarn build
|
||||
```
|
||||
|
||||
## Run
|
||||
```bash
|
||||
yarn preview
|
||||
```
|
||||
28
packages/wasm/examples/web-vite/eslint.config.js
Normal file
28
packages/wasm/examples/web-vite/eslint.config.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import js from '@eslint/js'
|
||||
import globals from 'globals'
|
||||
import reactHooks from 'eslint-plugin-react-hooks'
|
||||
import reactRefresh from 'eslint-plugin-react-refresh'
|
||||
import tseslint from 'typescript-eslint'
|
||||
|
||||
export default tseslint.config(
|
||||
{ ignores: ['dist'] },
|
||||
{
|
||||
extends: [js.configs.recommended, ...tseslint.configs.recommended],
|
||||
files: ['**/*.{ts,tsx}'],
|
||||
languageOptions: {
|
||||
ecmaVersion: 2020,
|
||||
globals: globals.browser,
|
||||
},
|
||||
plugins: {
|
||||
'react-hooks': reactHooks,
|
||||
'react-refresh': reactRefresh,
|
||||
},
|
||||
rules: {
|
||||
...reactHooks.configs.recommended.rules,
|
||||
'react-refresh/only-export-components': [
|
||||
'warn',
|
||||
{ allowConstantExport: true },
|
||||
],
|
||||
},
|
||||
},
|
||||
)
|
||||
2
packages/wasm/examples/web-vite/example.env
Normal file
2
packages/wasm/examples/web-vite/example.env
Normal file
@@ -0,0 +1,2 @@
|
||||
VITE_BREEZ_API_KEY = ""
|
||||
VITE_MNEMONIC = ""
|
||||
13
packages/wasm/examples/web-vite/index.html
Normal file
13
packages/wasm/examples/web-vite/index.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Breez SDK Nodeless - Wasm Vite Example</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
40
packages/wasm/examples/web-vite/package.json
Normal file
40
packages/wasm/examples/web-vite/package.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "example",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc -b && vite build",
|
||||
"lint": "eslint .",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@breeztech/breez-sdk-liquid": "file:../../",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.21.0",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"eslint": "^9.21.0",
|
||||
"eslint-plugin-react-hooks": "^5.1.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.19",
|
||||
"globals": "^15.15.0",
|
||||
"typescript": "~5.7.2",
|
||||
"typescript-eslint": "^8.24.1",
|
||||
"vite": "^6.2.0",
|
||||
"vite-plugin-top-level-await": "^1.5.0",
|
||||
"vite-plugin-wasm": "^3.4.1"
|
||||
},
|
||||
"prettier": {
|
||||
"endOfLine": "lf",
|
||||
"printWidth": 150,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 4,
|
||||
"trailingComma": "none"
|
||||
}
|
||||
}
|
||||
1
packages/wasm/examples/web-vite/public/vite.svg
Normal file
1
packages/wasm/examples/web-vite/public/vite.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
128
packages/wasm/examples/web-vite/src/App.tsx
Normal file
128
packages/wasm/examples/web-vite/src/App.tsx
Normal file
@@ -0,0 +1,128 @@
|
||||
import init, { connect, defaultConfig, initLogger, SdkEvent } from '@breeztech/breez-sdk-liquid/web'
|
||||
import { useState, useEffect } from 'react'
|
||||
|
||||
const DebugLine = ({ title, text }: { title: string; text?: string }) => {
|
||||
return (
|
||||
<div style={{ flex: 1 }}>
|
||||
<div style={{ margin: 5 }}>
|
||||
<div style={{ fontWeight: 'bold' }}>{title}</div>
|
||||
{text && text.length > 0 ? <div>{text}</div> : <></>}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
type Line = {
|
||||
at: number
|
||||
title: string
|
||||
text?: string
|
||||
}
|
||||
|
||||
class JsEventListener {
|
||||
constructor(private callback: (title: string, text?: string) => void) {}
|
||||
|
||||
onEvent = (event: SdkEvent) => {
|
||||
this.callback('EVENT RECEIVED', JSON.stringify(event))
|
||||
}
|
||||
}
|
||||
|
||||
function App() {
|
||||
const [lines, setLines] = useState<Line[]>([])
|
||||
|
||||
const addLine = (title: string, text?: string) => {
|
||||
setLines((lines: Line[]) => [{ at: lines.length, title, text }, ...lines])
|
||||
console.log(`${title}${text && text.length > 0 ? ': ' + text : ''}`)
|
||||
}
|
||||
|
||||
const eventListener = new JsEventListener(addLine)
|
||||
|
||||
const asyncFn = async () => {
|
||||
let listenerId = null
|
||||
let bolt11Invoice = null
|
||||
|
||||
try {
|
||||
// Initialize the Wasm module
|
||||
// This is required to be called before any other SDK function
|
||||
await init()
|
||||
|
||||
// Set the logger to trace
|
||||
initLogger('trace')
|
||||
|
||||
// Get the mnemonic
|
||||
const breezApiKey = import.meta.env.VITE_BREEZ_API_KEY
|
||||
const mnemonic = import.meta.env.VITE_MNEMONIC
|
||||
|
||||
// Connect using the config
|
||||
const config = await defaultConfig('mainnet', breezApiKey)
|
||||
addLine('defaultConfig', JSON.stringify(config))
|
||||
|
||||
const sdk = await connect({ config, mnemonic })
|
||||
addLine('connect')
|
||||
|
||||
// Get wallet info
|
||||
let getInfoRes = await sdk.getInfo()
|
||||
addLine('getInfo', JSON.stringify(getInfoRes))
|
||||
|
||||
// Historical payments list
|
||||
await sdk.listPayments({})
|
||||
|
||||
// Register for events
|
||||
listenerId = await sdk.addEventListener(eventListener)
|
||||
addLine('addEventListener', listenerId)
|
||||
|
||||
/* Receive lightning payment */
|
||||
let prepareReceiveRes = await sdk.prepareReceivePayment({
|
||||
amount: { type: 'bitcoin', payerAmountSat: 1000 },
|
||||
paymentMethod: 'lightning'
|
||||
})
|
||||
addLine('prepareReceivePayment', JSON.stringify(prepareReceiveRes))
|
||||
// Get the fees required for this payment
|
||||
addLine('Payment fees', `${prepareReceiveRes.feesSat}`)
|
||||
|
||||
let receivePaymentRes = await sdk.receivePayment({
|
||||
prepareResponse: prepareReceiveRes
|
||||
})
|
||||
addLine('receivePayment', JSON.stringify(receivePaymentRes))
|
||||
// Wait for payer to pay.... once successfully paid an event of `paymentSucceeded` will be emitted.
|
||||
addLine('Bolt11 invoice', `${receivePaymentRes.destination}`)
|
||||
|
||||
/* Send lightning payment */
|
||||
|
||||
// Set the `bolt11Invoice` to enable sending in the example app
|
||||
if (bolt11Invoice) {
|
||||
let prepareSendRes = await sdk.prepareSendPayment({
|
||||
destination: bolt11Invoice
|
||||
})
|
||||
addLine('prepareSendPayment', JSON.stringify(prepareSendRes))
|
||||
// Get the fees required for this payment
|
||||
addLine('Payment fees', `${prepareSendRes.feesSat}`)
|
||||
|
||||
let sendPaymentRes = await sdk.sendPayment({
|
||||
prepareResponse: prepareSendRes
|
||||
})
|
||||
addLine('sendPayment', JSON.stringify(sendPaymentRes))
|
||||
// Once successfully paid an event of `paymentSucceeded` will be emitted.
|
||||
addLine('Payment', JSON.stringify(sendPaymentRes.payment))
|
||||
}
|
||||
} catch (e: any) {
|
||||
addLine('error', e.toString())
|
||||
console.log(`Error: ${JSON.stringify(e)}`)
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
asyncFn()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<div>
|
||||
{lines.map((line: Line) => (
|
||||
<DebugLine key={line.at} title={line.title} text={line.text} />
|
||||
))}
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default App
|
||||
1
packages/wasm/examples/web-vite/src/assets/react.svg
Normal file
1
packages/wasm/examples/web-vite/src/assets/react.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
9
packages/wasm/examples/web-vite/src/main.tsx
Normal file
9
packages/wasm/examples/web-vite/src/main.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { StrictMode } from 'react'
|
||||
import { createRoot } from 'react-dom/client'
|
||||
import App from './App.tsx'
|
||||
|
||||
createRoot(document.getElementById('root')!).render(
|
||||
<StrictMode>
|
||||
<App />
|
||||
</StrictMode>,
|
||||
)
|
||||
10
packages/wasm/examples/web-vite/src/vite-env.d.ts
vendored
Normal file
10
packages/wasm/examples/web-vite/src/vite-env.d.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
interface ImportMetaEnv {
|
||||
readonly VITE_BREEZ_API_KEY: string
|
||||
readonly VITE_MNEMONIC: string
|
||||
}
|
||||
|
||||
interface ImportMeta {
|
||||
readonly env: ImportMetaEnv
|
||||
}
|
||||
26
packages/wasm/examples/web-vite/tsconfig.app.json
Normal file
26
packages/wasm/examples/web-vite/tsconfig.app.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
||||
"target": "ES2020",
|
||||
"useDefineForClassFields": true,
|
||||
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||
"module": "ESNext",
|
||||
"skipLibCheck": true,
|
||||
|
||||
/* Bundler mode */
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"isolatedModules": true,
|
||||
"moduleDetection": "force",
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedSideEffectImports": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
7
packages/wasm/examples/web-vite/tsconfig.json
Normal file
7
packages/wasm/examples/web-vite/tsconfig.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"files": [],
|
||||
"references": [
|
||||
{ "path": "./tsconfig.app.json" },
|
||||
{ "path": "./tsconfig.node.json" }
|
||||
]
|
||||
}
|
||||
24
packages/wasm/examples/web-vite/tsconfig.node.json
Normal file
24
packages/wasm/examples/web-vite/tsconfig.node.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2023"],
|
||||
"module": "ESNext",
|
||||
"skipLibCheck": true,
|
||||
|
||||
/* Bundler mode */
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"isolatedModules": true,
|
||||
"moduleDetection": "force",
|
||||
"noEmit": true,
|
||||
|
||||
/* Linting */
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedSideEffectImports": true
|
||||
},
|
||||
"include": ["vite.config.ts"]
|
||||
}
|
||||
9
packages/wasm/examples/web-vite/vite.config.ts
Normal file
9
packages/wasm/examples/web-vite/vite.config.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import wasm from "vite-plugin-wasm";
|
||||
import topLevelAwait from "vite-plugin-top-level-await";
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [react(), wasm(), topLevelAwait()],
|
||||
})
|
||||
10
packages/wasm/makefile
Normal file
10
packages/wasm/makefile
Normal file
@@ -0,0 +1,10 @@
|
||||
init:
|
||||
make -C ../../lib/wasm init
|
||||
|
||||
build:
|
||||
make -C ../../lib/wasm build
|
||||
rm -rf bundle deno node web
|
||||
cp -r ../../lib/wasm/pkg/bundle bundle
|
||||
cp -r ../../lib/wasm/pkg/deno deno
|
||||
cp -r ../../lib/wasm/pkg/node node
|
||||
cp -r ../../lib/wasm/pkg/web web
|
||||
33
packages/wasm/package.json
Normal file
33
packages/wasm/package.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "@breeztech/breez-sdk-liquid",
|
||||
"version": "0.7.2-dev1",
|
||||
"description": "Breez Liquid SDK",
|
||||
"repository": "https://github.com/breez/breez-sdk-liquid",
|
||||
"author": "Breez <contact@breez.technology> (https://github.com/breez)",
|
||||
"homepage": "https://breez.technology",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/breez/breez-sdk-liquid/issues"
|
||||
},
|
||||
"files": [
|
||||
"bundle",
|
||||
"deno",
|
||||
"node",
|
||||
"web",
|
||||
"!examples"
|
||||
],
|
||||
"exports": {
|
||||
"./bundle": "./bundle/breez_sdk_liquid_wasm.js",
|
||||
"./deno": "./deno/breez_sdk_liquid_wasm.js",
|
||||
"./node": "./node/breez_sdk_liquid_wasm.js",
|
||||
"./web": "./web/breez_sdk_liquid_wasm.js",
|
||||
".": {
|
||||
"node": "./node/breez_sdk_liquid_wasm.js",
|
||||
"deno": "./deno/breez_sdk_liquid_wasm.js",
|
||||
"default": "./web/breez_sdk_liquid_wasm.js"
|
||||
}
|
||||
},
|
||||
"publishConfig": {
|
||||
"registry": "https://registry.npmjs.org/"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user