Comparing version 2.2.2 to 2.3.0
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.decipherAES = exports.isValidPreimage = exports.getHashFromInvoice = exports.decodeInvoice = exports.sha256 = exports.getJson = exports.isValidAmount = exports.toSats = exports.checkedToSats = exports.isOnionUrl = exports.isUrl = exports.parseLightningAddress = exports.isLightningAddress = exports.isLnurl = exports.parseLnUrl = exports.decodeUrlOrAddress = void 0; | ||
exports.decipherAES = exports.isValidPreimage = exports.getHashFromInvoice = exports.decodeInvoice = exports.sha256 = exports.getJson = exports.isValidAmount = exports.toSats = exports.checkedToSats = exports.isOnionUrl = exports.isUrl = exports.parseLnurlp = exports.isLnurlp = exports.parseLightningAddress = exports.isLightningAddress = exports.isLnurl = exports.parseLnUrl = exports.decodeUrlOrAddress = void 0; | ||
var tslib_1 = require("tslib"); | ||
@@ -15,7 +15,8 @@ var is_url_1 = tslib_1.__importDefault(require("is-url")); | ||
var ONION_REGEX = /^(http:\/\/[^/:@]+\.onion(?::\d{1,5})?)(\/.*)?$/; | ||
var LNURLP_REGEX = /^lnurlp:\/\/([\w-]+\.)+[\w-]+(:\d{1,5})?(\/[\w-.\/?%&=]*)?$/; | ||
/** | ||
* Decode a bech32 encoded url (lnurl) or lightning address and return a url | ||
* Decode a bech32 encoded url (lnurl), lightning address or lnurlp url and return a url | ||
* @method decodeUrlOrAddress | ||
* @param lnUrlOrAddress string to decode | ||
* @return plain url or null if is an invalid url or lightning address | ||
* @return plain url or null if is an invalid url, lightning address or lnurlp | ||
*/ | ||
@@ -34,3 +35,3 @@ var decodeUrlOrAddress = function (lnUrlOrAddress) { | ||
} | ||
return null; | ||
return (0, exports.parseLnurlp)(lnUrlOrAddress); | ||
}; | ||
@@ -89,2 +90,30 @@ exports.decodeUrlOrAddress = decodeUrlOrAddress; | ||
/** | ||
* Verify if a string is a lnurlp url | ||
* @method isLnurlp | ||
* @param url string to validate | ||
* @return true if is a lnurlp url | ||
*/ | ||
var isLnurlp = function (url) { | ||
if (!url) | ||
return false; | ||
return LNURLP_REGEX.test(url); | ||
}; | ||
exports.isLnurlp = isLnurlp; | ||
/** | ||
* Parse a lnurlp url and return an url with the proper protocol | ||
* @method parseLnurlp | ||
* @param url string to parse | ||
* @return url (http or https) or null if is an invalid lnurlp | ||
*/ | ||
var parseLnurlp = function (url) { | ||
if (!url) | ||
return null; | ||
var parsedUrl = url.toLowerCase(); | ||
if (!LNURLP_REGEX.test(parsedUrl)) | ||
return null; | ||
var protocol = parsedUrl.includes('.onion') ? 'http://' : 'https://'; | ||
return parsedUrl.replace('lnurlp://', protocol); | ||
}; | ||
exports.parseLnurlp = parseLnurlp; | ||
/** | ||
* Verify if a string is an url | ||
@@ -91,0 +120,0 @@ * @method isUrl |
@@ -12,7 +12,8 @@ import { __awaiter, __generator } from "tslib"; | ||
var ONION_REGEX = /^(http:\/\/[^/:@]+\.onion(?::\d{1,5})?)(\/.*)?$/; | ||
var LNURLP_REGEX = /^lnurlp:\/\/([\w-]+\.)+[\w-]+(:\d{1,5})?(\/[\w-.\/?%&=]*)?$/; | ||
/** | ||
* Decode a bech32 encoded url (lnurl) or lightning address and return a url | ||
* Decode a bech32 encoded url (lnurl), lightning address or lnurlp url and return a url | ||
* @method decodeUrlOrAddress | ||
* @param lnUrlOrAddress string to decode | ||
* @return plain url or null if is an invalid url or lightning address | ||
* @return plain url or null if is an invalid url, lightning address or lnurlp | ||
*/ | ||
@@ -31,3 +32,3 @@ export var decodeUrlOrAddress = function (lnUrlOrAddress) { | ||
} | ||
return null; | ||
return parseLnurlp(lnUrlOrAddress); | ||
}; | ||
@@ -81,2 +82,28 @@ /** | ||
/** | ||
* Verify if a string is a lnurlp url | ||
* @method isLnurlp | ||
* @param url string to validate | ||
* @return true if is a lnurlp url | ||
*/ | ||
export var isLnurlp = function (url) { | ||
if (!url) | ||
return false; | ||
return LNURLP_REGEX.test(url); | ||
}; | ||
/** | ||
* Parse a lnurlp url and return an url with the proper protocol | ||
* @method parseLnurlp | ||
* @param url string to parse | ||
* @return url (http or https) or null if is an invalid lnurlp | ||
*/ | ||
export var parseLnurlp = function (url) { | ||
if (!url) | ||
return null; | ||
var parsedUrl = url.toLowerCase(); | ||
if (!LNURLP_REGEX.test(parsedUrl)) | ||
return null; | ||
var protocol = parsedUrl.includes('.onion') ? 'http://' : 'https://'; | ||
return parsedUrl.replace('lnurlp://', protocol); | ||
}; | ||
/** | ||
* Verify if a string is an url | ||
@@ -83,0 +110,0 @@ * @method isUrl |
@@ -5,6 +5,6 @@ /// <reference types="node" /> | ||
/** | ||
* Decode a bech32 encoded url (lnurl) or lightning address and return a url | ||
* Decode a bech32 encoded url (lnurl), lightning address or lnurlp url and return a url | ||
* @method decodeUrlOrAddress | ||
* @param lnUrlOrAddress string to decode | ||
* @return plain url or null if is an invalid url or lightning address | ||
* @return plain url or null if is an invalid url, lightning address or lnurlp | ||
*/ | ||
@@ -41,2 +41,16 @@ export declare const decodeUrlOrAddress: (lnUrlOrAddress: string) => string | null; | ||
/** | ||
* Verify if a string is a lnurlp url | ||
* @method isLnurlp | ||
* @param url string to validate | ||
* @return true if is a lnurlp url | ||
*/ | ||
export declare const isLnurlp: (url: string) => boolean; | ||
/** | ||
* Parse a lnurlp url and return an url with the proper protocol | ||
* @method parseLnurlp | ||
* @param url string to parse | ||
* @return url (http or https) or null if is an invalid lnurlp | ||
*/ | ||
export declare const parseLnurlp: (url: string) => string | null; | ||
/** | ||
* Verify if a string is an url | ||
@@ -43,0 +57,0 @@ * @method isUrl |
{ | ||
"name": "lnurl-pay", | ||
"version": "2.2.2", | ||
"version": "2.3.0", | ||
"description": "Client library for lnurl-pay and lightning address", | ||
@@ -66,13 +66,12 @@ "main": "dist/cjs/index.js", | ||
"stream-http": "^3.2.0", | ||
"tslib": "^2.5.2", | ||
"url": "^0.11.0" | ||
"tslib": "^2.5.2" | ||
}, | ||
"devDependencies": { | ||
"@commitlint/cli": "^17.6.3", | ||
"@commitlint/config-conventional": "^17.6.3", | ||
"@commitlint/cli": "^17.6.5", | ||
"@commitlint/config-conventional": "^17.6.5", | ||
"@types/aes-js": "^3.1.1", | ||
"@types/is-url": "^1.2.30", | ||
"@types/jest": "^29.5.1", | ||
"@typescript-eslint/eslint-plugin": "^5.59.6", | ||
"@typescript-eslint/parser": "^5.59.6", | ||
"@types/jest": "^29.5.2", | ||
"@typescript-eslint/eslint-plugin": "^5.59.8", | ||
"@typescript-eslint/parser": "^5.59.8", | ||
"eslint": "^8.41.0", | ||
@@ -87,7 +86,7 @@ "eslint-config-prettier": "^8.8.0", | ||
"ts-jest": "^29.1.0", | ||
"ts-loader": "^9.4.2", | ||
"typescript": "^4.9.5", | ||
"webpack": "^5.78.0", | ||
"ts-loader": "^9.4.3", | ||
"typescript": "^5.0.4", | ||
"webpack": "^5.85.0", | ||
"webpack-cli": "^4.9.2" | ||
} | ||
} |
@@ -20,10 +20,16 @@ # Lnurl-pay | ||
```js | ||
import { requestInvoice } from 'lnurl-pay' | ||
import { requestInvoice, utils } from 'lnurl-pay' | ||
const { invoice, params, successAction, validatePreimage } = | ||
await requestInvoice({ | ||
lnUrlOrAddress: | ||
'lnurl1dp68gurn8ghj7urp0yh8xarpva5kueewvaskcmme9e5k7tewwajkcmpdddhx7amw9akxuatjd3cz7atnv4erqgfuvv5', | ||
tokens: 333, // satoshis | ||
}) | ||
const { | ||
invoice, | ||
params, | ||
successAction, | ||
hasValidAmount, | ||
hasValidDescriptionHash, | ||
validatePreimage, | ||
} = await requestInvoice({ | ||
lnUrlOrAddress: | ||
'lnurl1dp68gurn8ghj7urp0yh8xarpva5kueewvaskcmme9e5k7tewwajkcmpdddhx7amw9akxuatjd3cz7atnv4erqgfuvv5', | ||
tokens: 333, // in TS you can use utils.checkedToSats or utils.toSats | ||
}) | ||
``` | ||
@@ -34,11 +40,35 @@ | ||
```js | ||
import { requestInvoice } from 'lnurl-pay' | ||
import { requestInvoice, utils } from 'lnurl-pay' | ||
const { invoice, params, successAction, validatePreimage } = | ||
await requestInvoice({ | ||
lnUrlOrAddress: 'user@domain.com', | ||
tokens: 333, // satoshis | ||
}) | ||
const { | ||
invoice, | ||
params, | ||
successAction, | ||
hasValidAmount, | ||
hasValidDescriptionHash, | ||
validatePreimage, | ||
} = await requestInvoice({ | ||
lnUrlOrAddress: 'user@domain.com', | ||
tokens: 333, // in TS you can use utils.checkedToSats or utils.toSats | ||
}) | ||
``` | ||
### Lnurlp / [LUD-17](https://github.com/lnurl/luds/blob/luds/17.md) | ||
```js | ||
import { requestInvoice, utils } from 'lnurl-pay' | ||
const { | ||
invoice, | ||
params, | ||
successAction, | ||
hasValidAmount, | ||
hasValidDescriptionHash, | ||
validatePreimage, | ||
} = await requestInvoice({ | ||
lnUrlOrAddress: 'lnurlp://domain.com/path', | ||
tokens: 333, // in TS you can use utils.checkedToSats or utils.toSats | ||
}) | ||
``` | ||
## Methods | ||
@@ -201,3 +231,5 @@ | ||
- [isLnurl](#isLnurl) - Verify if a string is a valid lnurl value | ||
- [isLnurlp](#isLnurlp) - Verify if a string is a valid lnurlp url | ||
- [parseLnUrl](#parseLnUrl) - Parse an url and return a bech32 encoded url (lnurl) | ||
- [parseLnurlp](#parseLnurlp) - Parse a lnurlp url and return an url with the proper protocol | ||
- [isLightningAddress](#isLightningAddress) - Verify if a string is a lightning adress | ||
@@ -204,0 +236,0 @@ - [parseLightningAddress](#parseLightningAddress) - Parse an address and return username and domain |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
580891
14
1070
300
- Removedurl@^0.11.0
- Removedobject-inspect@1.13.2(transitive)
- Removedpunycode@1.4.1(transitive)
- Removedqs@6.13.0(transitive)
- Removedside-channel@1.0.6(transitive)
- Removedurl@0.11.4(transitive)