@nostrify/nostrify 0.46.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +5 -0
- package/BunkerURI.test.ts +28 -0
- package/BunkerURI.ts +58 -0
- package/CHANGELOG.md +562 -0
- package/LICENSE +21 -0
- package/NBrowserSigner.test.ts +170 -0
- package/NBrowserSigner.ts +100 -0
- package/NCache.bench.ts +81 -0
- package/NCache.test.ts +22 -0
- package/NCache.ts +73 -0
- package/NConnectSigner.test.ts +102 -0
- package/NConnectSigner.ts +189 -0
- package/NIP05.test.ts +67 -0
- package/NIP05.ts +52 -0
- package/NIP50.test.ts +58 -0
- package/NIP50.ts +24 -0
- package/NIP98.test.ts +181 -0
- package/NIP98.ts +97 -0
- package/NKinds.test.ts +42 -0
- package/NKinds.ts +26 -0
- package/NPool.test.ts +117 -0
- package/NPool.ts +224 -0
- package/NRelay1.test.ts +174 -0
- package/NRelay1.ts +440 -0
- package/NSchema.test.ts +94 -0
- package/NSchema.ts +255 -0
- package/NSecSigner.bench.ts +55 -0
- package/NSecSigner.test.ts +26 -0
- package/NSecSigner.ts +60 -0
- package/NSet.bench.ts +10 -0
- package/NSet.test.ts +92 -0
- package/NSet.ts +203 -0
- package/README.md +314 -0
- package/RelayError.test.ts +23 -0
- package/RelayError.ts +22 -0
- package/dist/BunkerURI.d.ts +23 -0
- package/dist/BunkerURI.d.ts.map +1 -0
- package/dist/BunkerURI.js +52 -0
- package/dist/BunkerURI.js.map +1 -0
- package/dist/NBrowserSigner.d.ts +27 -0
- package/dist/NBrowserSigner.d.ts.map +1 -0
- package/dist/NBrowserSigner.js +96 -0
- package/dist/NBrowserSigner.js.map +1 -0
- package/dist/NCache.d.ts +34 -0
- package/dist/NCache.d.ts.map +1 -0
- package/dist/NCache.js +63 -0
- package/dist/NCache.js.map +1 -0
- package/dist/NConnectSigner.d.ts +50 -0
- package/dist/NConnectSigner.d.ts.map +1 -0
- package/dist/NConnectSigner.js +130 -0
- package/dist/NConnectSigner.js.map +1 -0
- package/dist/NIP05.d.ts +15 -0
- package/dist/NIP05.d.ts.map +1 -0
- package/dist/NIP05.js +40 -0
- package/dist/NIP05.js.map +1 -0
- package/dist/NIP50.d.ts +10 -0
- package/dist/NIP50.d.ts.map +1 -0
- package/dist/NIP50.js +26 -0
- package/dist/NIP50.js.map +1 -0
- package/dist/NIP98.d.ts +15 -0
- package/dist/NIP98.d.ts.map +1 -0
- package/dist/NIP98.js +71 -0
- package/dist/NIP98.js.map +1 -0
- package/dist/NKinds.d.ts +13 -0
- package/dist/NKinds.d.ts.map +1 -0
- package/dist/NKinds.js +27 -0
- package/dist/NKinds.js.map +1 -0
- package/dist/NPool.d.ts +91 -0
- package/dist/NPool.d.ts.map +1 -0
- package/dist/NPool.js +185 -0
- package/dist/NPool.js.map +1 -0
- package/dist/NRelay1.d.ts +80 -0
- package/dist/NRelay1.d.ts.map +1 -0
- package/dist/NRelay1.js +336 -0
- package/dist/NRelay1.js.map +1 -0
- package/dist/NSchema.d.ts +73 -0
- package/dist/NSchema.d.ts.map +1 -0
- package/dist/NSchema.js +215 -0
- package/dist/NSchema.js.map +1 -0
- package/dist/NSecSigner.d.ts +29 -0
- package/dist/NSecSigner.d.ts.map +1 -0
- package/dist/NSecSigner.js +52 -0
- package/dist/NSecSigner.js.map +1 -0
- package/dist/NSet.d.ts +76 -0
- package/dist/NSet.d.ts.map +1 -0
- package/dist/NSet.js +174 -0
- package/dist/NSet.js.map +1 -0
- package/dist/RelayError.d.ts +10 -0
- package/dist/RelayError.d.ts.map +1 -0
- package/dist/RelayError.js +23 -0
- package/dist/RelayError.js.map +1 -0
- package/dist/ln/LNURL.d.ts +55 -0
- package/dist/ln/LNURL.d.ts.map +1 -0
- package/dist/ln/LNURL.js +105 -0
- package/dist/ln/LNURL.js.map +1 -0
- package/dist/ln/mod.d.ts +4 -0
- package/dist/ln/mod.d.ts.map +1 -0
- package/dist/ln/mod.js +6 -0
- package/dist/ln/mod.js.map +1 -0
- package/dist/ln/types/LNURLCallback.d.ts +8 -0
- package/dist/ln/types/LNURLCallback.d.ts.map +1 -0
- package/dist/ln/types/LNURLCallback.js +3 -0
- package/dist/ln/types/LNURLCallback.js.map +1 -0
- package/dist/ln/types/LNURLDetails.d.ts +20 -0
- package/dist/ln/types/LNURLDetails.d.ts.map +1 -0
- package/dist/ln/types/LNURLDetails.js +3 -0
- package/dist/ln/types/LNURLDetails.js.map +1 -0
- package/dist/mod.d.ts +16 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +32 -0
- package/dist/mod.js.map +1 -0
- package/dist/test/ErrorRelay.d.ts +21 -0
- package/dist/test/ErrorRelay.d.ts.map +1 -0
- package/dist/test/ErrorRelay.js +26 -0
- package/dist/test/ErrorRelay.js.map +1 -0
- package/dist/test/MockRelay.d.ts +20 -0
- package/dist/test/MockRelay.d.ts.map +1 -0
- package/dist/test/MockRelay.js +66 -0
- package/dist/test/MockRelay.js.map +1 -0
- package/dist/test/TestRelayServer.d.ts +25 -0
- package/dist/test/TestRelayServer.d.ts.map +1 -0
- package/dist/test/TestRelayServer.js +134 -0
- package/dist/test/TestRelayServer.js.map +1 -0
- package/dist/test/mod.d.ts +8 -0
- package/dist/test/mod.d.ts.map +1 -0
- package/dist/test/mod.js +28 -0
- package/dist/test/mod.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/uploaders/BlossomUploader.d.ts +26 -0
- package/dist/uploaders/BlossomUploader.d.ts.map +1 -0
- package/dist/uploaders/BlossomUploader.js +71 -0
- package/dist/uploaders/BlossomUploader.js.map +1 -0
- package/dist/uploaders/NostrBuildUploader.d.ts +24 -0
- package/dist/uploaders/NostrBuildUploader.d.ts.map +1 -0
- package/dist/uploaders/NostrBuildUploader.js +67 -0
- package/dist/uploaders/NostrBuildUploader.js.map +1 -0
- package/dist/uploaders/mod.d.ts +3 -0
- package/dist/uploaders/mod.d.ts.map +1 -0
- package/dist/uploaders/mod.js +8 -0
- package/dist/uploaders/mod.js.map +1 -0
- package/dist/utils/CircularSet.d.ts +13 -0
- package/dist/utils/CircularSet.d.ts.map +1 -0
- package/dist/utils/CircularSet.js +35 -0
- package/dist/utils/CircularSet.js.map +1 -0
- package/dist/utils/Machina.d.ts +36 -0
- package/dist/utils/Machina.d.ts.map +1 -0
- package/dist/utils/Machina.js +66 -0
- package/dist/utils/Machina.js.map +1 -0
- package/dist/utils/N64.d.ts +9 -0
- package/dist/utils/N64.d.ts.map +1 -0
- package/dist/utils/N64.js +23 -0
- package/dist/utils/N64.js.map +1 -0
- package/dist/utils/mod.d.ts +3 -0
- package/dist/utils/mod.d.ts.map +1 -0
- package/dist/utils/mod.js +8 -0
- package/dist/utils/mod.js.map +1 -0
- package/ln/LNURL.test.ts +87 -0
- package/ln/LNURL.ts +146 -0
- package/ln/mod.ts +4 -0
- package/ln/types/LNURLCallback.ts +7 -0
- package/ln/types/LNURLDetails.ts +19 -0
- package/mod.ts +16 -0
- package/package.json +23 -0
- package/test/ErrorRelay.test.ts +19 -0
- package/test/ErrorRelay.ts +40 -0
- package/test/MockRelay.test.ts +20 -0
- package/test/MockRelay.ts +92 -0
- package/test/TestRelayServer.ts +156 -0
- package/test/mod.ts +28 -0
- package/tsconfig.json +14 -0
- package/uploaders/BlossomUploader.test.ts +26 -0
- package/uploaders/BlossomUploader.ts +98 -0
- package/uploaders/NostrBuildUploader.test.ts +22 -0
- package/uploaders/NostrBuildUploader.ts +89 -0
- package/uploaders/mod.ts +2 -0
- package/utils/CircularSet.test.ts +15 -0
- package/utils/CircularSet.ts +34 -0
- package/utils/Machina.test.ts +91 -0
- package/utils/Machina.ts +66 -0
- package/utils/N64.test.ts +27 -0
- package/utils/N64.ts +23 -0
- package/utils/mod.ts +2 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NostrRelayOK } from '@nostrify/nostrify';
|
|
2
|
+
/** NIP-01 command line result. */
|
|
3
|
+
export declare class RelayError extends Error {
|
|
4
|
+
constructor(prefix: string, message: string);
|
|
5
|
+
/** Construct a RelayError from the reason message. */
|
|
6
|
+
static fromReason(reason: string): RelayError;
|
|
7
|
+
/** Throw a new RelayError if the OK message is false. */
|
|
8
|
+
static assert(msg: NostrRelayOK): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=RelayError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelayError.d.ts","sourceRoot":"","sources":["../RelayError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,kCAAkC;AAClC,qBAAa,UAAW,SAAQ,KAAK;gBACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI3C,sDAAsD;IACtD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAK7C,yDAAyD;IACzD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;CAMvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelayError = void 0;
|
|
4
|
+
/** NIP-01 command line result. */
|
|
5
|
+
class RelayError extends Error {
|
|
6
|
+
constructor(prefix, message) {
|
|
7
|
+
super(`${prefix}: ${message}`);
|
|
8
|
+
}
|
|
9
|
+
/** Construct a RelayError from the reason message. */
|
|
10
|
+
static fromReason(reason) {
|
|
11
|
+
const [prefix, ...rest] = reason.split(': ');
|
|
12
|
+
return new RelayError(prefix, rest.join(': '));
|
|
13
|
+
}
|
|
14
|
+
/** Throw a new RelayError if the OK message is false. */
|
|
15
|
+
static assert(msg) {
|
|
16
|
+
const [, , ok, reason] = msg;
|
|
17
|
+
if (!ok) {
|
|
18
|
+
throw RelayError.fromReason(reason);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.RelayError = RelayError;
|
|
23
|
+
//# sourceMappingURL=RelayError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelayError.js","sourceRoot":"","sources":["../RelayError.ts"],"names":[],"mappings":";;;AAEA,kCAAkC;AAClC,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAY,MAAc,EAAE,OAAe;QACzC,KAAK,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,sDAAsD;IACtD,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,MAAM,CAAC,GAAiB;QAC7B,MAAM,CAAC,EAAE,AAAD,EAAG,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;QAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AAlBD,gCAkBC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { NostrEvent } from "@nostrify/types";
|
|
2
|
+
import { LNURLCallback } from "./types/LNURLCallback";
|
|
3
|
+
import { LNURLDetails } from "./types/LNURLDetails";
|
|
4
|
+
import { z } from "../NSchema";
|
|
5
|
+
/**
|
|
6
|
+
* Represents an LNURL, with methods to fetch details and generate invoices.
|
|
7
|
+
*/
|
|
8
|
+
export declare class LNURL {
|
|
9
|
+
/** Underlying HTTP(s) URL of the user. */
|
|
10
|
+
readonly url: URL;
|
|
11
|
+
/** Fetch function to use for HTTP requests. */
|
|
12
|
+
private fetch;
|
|
13
|
+
constructor(
|
|
14
|
+
/** Underlying HTTP(s) URL of the user. */
|
|
15
|
+
url: URL,
|
|
16
|
+
/** Options for the LNURL class. */
|
|
17
|
+
opts?: {
|
|
18
|
+
/** Fetch function to use for HTTP requests. */
|
|
19
|
+
fetch: typeof globalThis.fetch;
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Create an LNURL object from a bech32 `lnurl1...` string.
|
|
23
|
+
* Throws if the value is not a valid lnurl.
|
|
24
|
+
*/
|
|
25
|
+
static fromString(value: string, opts?: {
|
|
26
|
+
fetch: typeof globalThis.fetch;
|
|
27
|
+
}): LNURL;
|
|
28
|
+
/**
|
|
29
|
+
* Create an LNURL object from a lightning address (email-like format).
|
|
30
|
+
* Throws if the value is not a valid lightning address.
|
|
31
|
+
*/
|
|
32
|
+
static fromLightningAddress(ln: string, opts?: {
|
|
33
|
+
fetch: typeof globalThis.fetch;
|
|
34
|
+
}): LNURL;
|
|
35
|
+
/** Returns the LNURL object as a bech32-encoded `lnurl1...` string. */
|
|
36
|
+
toString(): `lnurl1${string}`;
|
|
37
|
+
/** Resolve an LNURL to its details. */
|
|
38
|
+
getDetails(opts?: {
|
|
39
|
+
signal?: AbortSignal;
|
|
40
|
+
}): Promise<LNURLDetails>;
|
|
41
|
+
/** Generate an LNURL invoice from the params. */
|
|
42
|
+
getInvoice(opts: {
|
|
43
|
+
/** Amount in millisatoshis to send to the user. */
|
|
44
|
+
amount: number;
|
|
45
|
+
/** NIP-57 Zap Request (kind 9734) event. */
|
|
46
|
+
nostr?: NostrEvent;
|
|
47
|
+
/** Signal to abort the request. */
|
|
48
|
+
signal?: AbortSignal;
|
|
49
|
+
}): Promise<LNURLCallback>;
|
|
50
|
+
/** LNURL response schema. */
|
|
51
|
+
static lnurlDetailsSchema(): z.ZodType<LNURLDetails>;
|
|
52
|
+
/** LNURL callback schema. */
|
|
53
|
+
static lnurlCallbackSchema(): z.ZodType<LNURLCallback>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=LNURL.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURL.d.ts","sourceRoot":"","sources":["../../ln/LNURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAgB,CAAC,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,qBAAa,KAAK;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,KAAK,CAA0B;;IAGrC,0CAA0C;IAC1C,GAAG,EAAE,GAAG;IACR,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL,+CAA+C;QAC/C,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;KAChC;IAMH;;;OAGG;IACH,MAAM,CAAC,UAAU,CACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAE,GACxC,KAAK;IAoBR;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACzB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAE,GACxC,KAAK;IAaR,uEAAuE;IACvE,QAAQ,IAAI,SAAS,MAAM,EAAE;IAM7B,uCAAuC;IACjC,UAAU,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAMxE,iDAAiD;IAC3C,UAAU,CAAC,IAAI,EAAE;QACrB,mDAAmD;QACnD,MAAM,EAAE,MAAM,CAAC;QACf,4CAA4C;QAC5C,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,mCAAmC;QACnC,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB1B,6BAA6B;IAC7B,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAqBpD,6BAA6B;IAC7B,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;CAMvD"}
|
package/dist/ln/LNURL.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LNURL = void 0;
|
|
4
|
+
const base_1 = require("@scure/base");
|
|
5
|
+
const NSchema_1 = require("../NSchema");
|
|
6
|
+
/**
|
|
7
|
+
* Represents an LNURL, with methods to fetch details and generate invoices.
|
|
8
|
+
*/
|
|
9
|
+
class LNURL {
|
|
10
|
+
/** Underlying HTTP(s) URL of the user. */
|
|
11
|
+
url;
|
|
12
|
+
/** Fetch function to use for HTTP requests. */
|
|
13
|
+
fetch;
|
|
14
|
+
constructor(
|
|
15
|
+
/** Underlying HTTP(s) URL of the user. */
|
|
16
|
+
url,
|
|
17
|
+
/** Options for the LNURL class. */
|
|
18
|
+
opts) {
|
|
19
|
+
this.url = url;
|
|
20
|
+
this.fetch = opts?.fetch ?? globalThis.fetch.bind(globalThis);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create an LNURL object from a bech32 `lnurl1...` string.
|
|
24
|
+
* Throws if the value is not a valid lnurl.
|
|
25
|
+
*/
|
|
26
|
+
static fromString(value, opts) {
|
|
27
|
+
if (!NSchema_1.NSchema.bech32().safeParse(value).success) {
|
|
28
|
+
throw new Error('Expected a bech32 string starting with "lnurl1"');
|
|
29
|
+
}
|
|
30
|
+
const { prefix, words } = base_1.bech32.decode(value, 20000);
|
|
31
|
+
if (prefix !== "lnurl") {
|
|
32
|
+
throw new Error('Expected a bech32 string starting with "lnurl1"');
|
|
33
|
+
}
|
|
34
|
+
const data = base_1.bech32.fromWords(words);
|
|
35
|
+
const url = new URL(new TextDecoder().decode(data));
|
|
36
|
+
return new LNURL(url, opts);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create an LNURL object from a lightning address (email-like format).
|
|
40
|
+
* Throws if the value is not a valid lightning address.
|
|
41
|
+
*/
|
|
42
|
+
static fromLightningAddress(ln, opts) {
|
|
43
|
+
if (!NSchema_1.z.string().email().safeParse(ln).success) {
|
|
44
|
+
throw new Error('Expected a lightning address in email-like format (eg "example@getalby.com")');
|
|
45
|
+
}
|
|
46
|
+
const [name, host] = ln.split("@");
|
|
47
|
+
const url = new URL(`/.well-known/lnurlp/${name}`, `https://${host}`);
|
|
48
|
+
return new LNURL(url, opts);
|
|
49
|
+
}
|
|
50
|
+
/** Returns the LNURL object as a bech32-encoded `lnurl1...` string. */
|
|
51
|
+
toString() {
|
|
52
|
+
const data = new TextEncoder().encode(this.url.toString());
|
|
53
|
+
const words = base_1.bech32.toWords(data);
|
|
54
|
+
return base_1.bech32.encode("lnurl", words, 20000);
|
|
55
|
+
}
|
|
56
|
+
/** Resolve an LNURL to its details. */
|
|
57
|
+
async getDetails(opts) {
|
|
58
|
+
const response = await this.fetch(this.url, opts);
|
|
59
|
+
const json = await response.json();
|
|
60
|
+
return LNURL.lnurlDetailsSchema().parse(json);
|
|
61
|
+
}
|
|
62
|
+
/** Generate an LNURL invoice from the params. */
|
|
63
|
+
async getInvoice(opts) {
|
|
64
|
+
const details = await this.getDetails(opts);
|
|
65
|
+
const callback = new URL(details.callback);
|
|
66
|
+
callback.searchParams.set("amount", opts.amount.toString());
|
|
67
|
+
callback.searchParams.set("lnurl", this.toString());
|
|
68
|
+
if (opts.nostr) {
|
|
69
|
+
callback.searchParams.set("nostr", JSON.stringify(opts.nostr));
|
|
70
|
+
}
|
|
71
|
+
const response = await this.fetch(callback, opts);
|
|
72
|
+
const json = await response.json();
|
|
73
|
+
return LNURL.lnurlCallbackSchema().parse(json);
|
|
74
|
+
}
|
|
75
|
+
/** LNURL response schema. */
|
|
76
|
+
static lnurlDetailsSchema() {
|
|
77
|
+
return NSchema_1.z.object({
|
|
78
|
+
allowsNostr: NSchema_1.z.boolean().optional(),
|
|
79
|
+
callback: NSchema_1.z.string().url(),
|
|
80
|
+
commentAllowed: NSchema_1.z.number().nonnegative().int().optional(),
|
|
81
|
+
maxSendable: NSchema_1.z.number().positive().int(),
|
|
82
|
+
minSendable: NSchema_1.z.number().positive().int(),
|
|
83
|
+
metadata: NSchema_1.z.string(),
|
|
84
|
+
nostrPubkey: NSchema_1.NSchema.id().optional(),
|
|
85
|
+
tag: NSchema_1.z.literal("payRequest"),
|
|
86
|
+
}).superRefine((details, ctx) => {
|
|
87
|
+
if (details.minSendable > details.maxSendable) {
|
|
88
|
+
ctx.addIssue({
|
|
89
|
+
code: NSchema_1.z.ZodIssueCode.custom,
|
|
90
|
+
message: "minSendable must be less than or equal to maxSendable",
|
|
91
|
+
path: ["minSendable"],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/** LNURL callback schema. */
|
|
97
|
+
static lnurlCallbackSchema() {
|
|
98
|
+
return NSchema_1.z.object({
|
|
99
|
+
pr: NSchema_1.NSchema.bech32("lnbc"),
|
|
100
|
+
routes: NSchema_1.z.tuple([]),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.LNURL = LNURL;
|
|
105
|
+
//# sourceMappingURL=LNURL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURL.js","sourceRoot":"","sources":["../../ln/LNURL.ts"],"names":[],"mappings":"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"}
|
package/dist/ln/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../ln/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/ln/mod.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LNURL = void 0;
|
|
4
|
+
var LNURL_1 = require("./LNURL");
|
|
5
|
+
Object.defineProperty(exports, "LNURL", { enumerable: true, get: function () { return LNURL_1.LNURL; } });
|
|
6
|
+
//# sourceMappingURL=mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../ln/mod.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURLCallback.d.ts","sourceRoot":"","sources":["../../../ln/types/LNURLCallback.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,EAAE,EAAE,QAAQ,MAAM,EAAE,CAAC;IACrB,sBAAsB;IACtB,MAAM,EAAE,EAAE,CAAC;CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURLCallback.js","sourceRoot":"","sources":["../../../ln/types/LNURLCallback.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** LNURL `payRequest` details, as defined by LUD-06. Includes additional properties from NIP-57. */
|
|
2
|
+
export interface LNURLDetails {
|
|
3
|
+
/** Whether the LN SERVICE supports NIP-57 Lightning Zaps. */
|
|
4
|
+
allowsNostr?: boolean;
|
|
5
|
+
/** The URL from LN SERVICE which will accept the pay request parameters. */
|
|
6
|
+
callback: string;
|
|
7
|
+
/** The number of characters accepted for the `comment` query parameter on subsequent callback. (Should be interpreted as 0 if not provided). */
|
|
8
|
+
commentAllowed?: number;
|
|
9
|
+
/** Max millisatoshi amount LN SERVICE is willing to receive. */
|
|
10
|
+
maxSendable: number;
|
|
11
|
+
/** Min millisatoshi amount LN SERVICE is willing to receive, can not be less than 1 or more than `maxSendable`. */
|
|
12
|
+
minSendable: number;
|
|
13
|
+
/** Metadata json which must be presented as raw string here, this is required to pass signature verification at a later step. */
|
|
14
|
+
metadata: string;
|
|
15
|
+
/** The Nostr pubkey LN SERVICE will use to sign zap receipt events. Clients will use this to validate zap receipts. */
|
|
16
|
+
nostrPubkey?: string;
|
|
17
|
+
/** Type of LNURL. */
|
|
18
|
+
tag: 'payRequest';
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=LNURLDetails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURLDetails.d.ts","sourceRoot":"","sources":["../../../ln/types/LNURLDetails.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,gJAAgJ;IAChJ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,mHAAmH;IACnH,WAAW,EAAE,MAAM,CAAC;IACpB,iIAAiI;IACjI,QAAQ,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,GAAG,EAAE,YAAY,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LNURLDetails.js","sourceRoot":"","sources":["../../../ln/types/LNURLDetails.ts"],"names":[],"mappings":""}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { BunkerURI } from './BunkerURI';
|
|
2
|
+
export { NBrowserSigner } from './NBrowserSigner';
|
|
3
|
+
export { NCache } from './NCache';
|
|
4
|
+
export { NConnectSigner, type NConnectSignerOpts } from './NConnectSigner';
|
|
5
|
+
export { NIP05 } from './NIP05';
|
|
6
|
+
export { NIP50 } from './NIP50';
|
|
7
|
+
export { NIP98 } from './NIP98';
|
|
8
|
+
export { NKinds } from './NKinds';
|
|
9
|
+
export { NPool, type NPoolOpts } from './NPool';
|
|
10
|
+
export { NRelay1, type NRelay1Opts } from './NRelay1';
|
|
11
|
+
export { NSchema } from './NSchema';
|
|
12
|
+
export { NSecSigner } from './NSecSigner';
|
|
13
|
+
export { NSet } from './NSet';
|
|
14
|
+
export { RelayError } from './RelayError';
|
|
15
|
+
export type * from '@nostrify/types';
|
|
16
|
+
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,mBAAmB,iBAAiB,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelayError = exports.NSet = exports.NSecSigner = exports.NSchema = exports.NRelay1 = exports.NPool = exports.NKinds = exports.NIP98 = exports.NIP50 = exports.NIP05 = exports.NConnectSigner = exports.NCache = exports.NBrowserSigner = exports.BunkerURI = void 0;
|
|
4
|
+
var BunkerURI_1 = require("./BunkerURI");
|
|
5
|
+
Object.defineProperty(exports, "BunkerURI", { enumerable: true, get: function () { return BunkerURI_1.BunkerURI; } });
|
|
6
|
+
var NBrowserSigner_1 = require("./NBrowserSigner");
|
|
7
|
+
Object.defineProperty(exports, "NBrowserSigner", { enumerable: true, get: function () { return NBrowserSigner_1.NBrowserSigner; } });
|
|
8
|
+
var NCache_1 = require("./NCache");
|
|
9
|
+
Object.defineProperty(exports, "NCache", { enumerable: true, get: function () { return NCache_1.NCache; } });
|
|
10
|
+
var NConnectSigner_1 = require("./NConnectSigner");
|
|
11
|
+
Object.defineProperty(exports, "NConnectSigner", { enumerable: true, get: function () { return NConnectSigner_1.NConnectSigner; } });
|
|
12
|
+
var NIP05_1 = require("./NIP05");
|
|
13
|
+
Object.defineProperty(exports, "NIP05", { enumerable: true, get: function () { return NIP05_1.NIP05; } });
|
|
14
|
+
var NIP50_1 = require("./NIP50");
|
|
15
|
+
Object.defineProperty(exports, "NIP50", { enumerable: true, get: function () { return NIP50_1.NIP50; } });
|
|
16
|
+
var NIP98_1 = require("./NIP98");
|
|
17
|
+
Object.defineProperty(exports, "NIP98", { enumerable: true, get: function () { return NIP98_1.NIP98; } });
|
|
18
|
+
var NKinds_1 = require("./NKinds");
|
|
19
|
+
Object.defineProperty(exports, "NKinds", { enumerable: true, get: function () { return NKinds_1.NKinds; } });
|
|
20
|
+
var NPool_1 = require("./NPool");
|
|
21
|
+
Object.defineProperty(exports, "NPool", { enumerable: true, get: function () { return NPool_1.NPool; } });
|
|
22
|
+
var NRelay1_1 = require("./NRelay1");
|
|
23
|
+
Object.defineProperty(exports, "NRelay1", { enumerable: true, get: function () { return NRelay1_1.NRelay1; } });
|
|
24
|
+
var NSchema_1 = require("./NSchema");
|
|
25
|
+
Object.defineProperty(exports, "NSchema", { enumerable: true, get: function () { return NSchema_1.NSchema; } });
|
|
26
|
+
var NSecSigner_1 = require("./NSecSigner");
|
|
27
|
+
Object.defineProperty(exports, "NSecSigner", { enumerable: true, get: function () { return NSecSigner_1.NSecSigner; } });
|
|
28
|
+
var NSet_1 = require("./NSet");
|
|
29
|
+
Object.defineProperty(exports, "NSet", { enumerable: true, get: function () { return NSet_1.NSet; } });
|
|
30
|
+
var RelayError_1 = require("./RelayError");
|
|
31
|
+
Object.defineProperty(exports, "RelayError", { enumerable: true, get: function () { return RelayError_1.RelayError; } });
|
|
32
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,mDAA2E;AAAlE,gHAAA,cAAc,OAAA;AACvB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,iCAAgD;AAAvC,8FAAA,KAAK,OAAA;AACd,qCAAsD;AAA7C,kGAAA,OAAO,OAAA;AAChB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NostrEvent, NostrFilter, NostrRelayCLOSED, NostrRelayCOUNT, NostrRelayEOSE, NostrRelayEVENT, NRelay } from '@nostrify/types';
|
|
2
|
+
/** A relay storage class that intentionally throws errors for every method. */
|
|
3
|
+
export declare class ErrorRelay implements NRelay {
|
|
4
|
+
req(_filters: NostrFilter[], _opts?: {
|
|
5
|
+
signal?: AbortSignal;
|
|
6
|
+
}): AsyncIterable<NostrRelayEVENT | NostrRelayEOSE | NostrRelayCLOSED>;
|
|
7
|
+
event(_event: NostrEvent, _opts?: {
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
query(_filters: NostrFilter[], _opts?: {
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
}): Promise<NostrEvent[]>;
|
|
13
|
+
count(_filters: NostrFilter[], _opts?: {
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
}): Promise<NostrRelayCOUNT[2]>;
|
|
16
|
+
remove(_filters: NostrFilter[], _opts?: {
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ErrorRelay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorRelay.d.ts","sourceRoot":"","sources":["../../test/ErrorRelay.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,MAAM,EACP,MAAM,iBAAiB,CAAC;AAEzB,+EAA+E;AAC/E,qBAAa,UAAW,YAAW,MAAM;IAChC,GAAG,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC/B,aAAa,CAAC,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAI/D,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1E,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIvF,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI7F,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorRelay = void 0;
|
|
4
|
+
/** A relay storage class that intentionally throws errors for every method. */
|
|
5
|
+
class ErrorRelay {
|
|
6
|
+
async *req(_filters, _opts) {
|
|
7
|
+
throw new Error('This error is intentional.');
|
|
8
|
+
}
|
|
9
|
+
async event(_event, _opts) {
|
|
10
|
+
throw new Error('This error is intentional.');
|
|
11
|
+
}
|
|
12
|
+
async query(_filters, _opts) {
|
|
13
|
+
throw new Error('This error is intentional.');
|
|
14
|
+
}
|
|
15
|
+
async count(_filters, _opts) {
|
|
16
|
+
throw new Error('This error is intentional.');
|
|
17
|
+
}
|
|
18
|
+
async remove(_filters, _opts) {
|
|
19
|
+
throw new Error('This error is intentional.');
|
|
20
|
+
}
|
|
21
|
+
async close() {
|
|
22
|
+
throw new Error('This error is intentional.');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ErrorRelay = ErrorRelay;
|
|
26
|
+
//# sourceMappingURL=ErrorRelay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorRelay.js","sourceRoot":"","sources":["../../test/ErrorRelay.ts"],"names":[],"mappings":";;;AAWA,+EAA+E;AAC/E,MAAa,UAAU;IACrB,KAAK,CAAC,CAAC,GAAG,CACR,QAAuB,EACvB,KAAgC;QAEhC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAkB,EAAE,KAAgC;QAC9D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAuB,EAAE,KAAgC;QACnE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAuB,EAAE,KAAgC;QACnE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAuB,EAAE,KAAgC;QACpE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;CACF;AA3BD,gCA2BC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NostrEvent, NostrFilter, NostrRelayCLOSED, NostrRelayCOUNT, NostrRelayEOSE, NostrRelayEVENT, NRelay } from '@nostrify/types';
|
|
2
|
+
import { Machina } from '../utils/Machina';
|
|
3
|
+
import { NSet } from '../NSet';
|
|
4
|
+
/** Mock relay for testing. */
|
|
5
|
+
export declare class MockRelay extends NSet implements NRelay {
|
|
6
|
+
readonly subs: Map<string, {
|
|
7
|
+
filters: NostrFilter[];
|
|
8
|
+
machina: Machina<NostrEvent>;
|
|
9
|
+
}>;
|
|
10
|
+
req(filters: NostrFilter[], opts?: {
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
}): AsyncIterable<NostrRelayEVENT | NostrRelayEOSE | NostrRelayCLOSED>;
|
|
13
|
+
event(event: NostrEvent): Promise<void>;
|
|
14
|
+
query(filters: NostrFilter[]): Promise<NostrEvent[]>;
|
|
15
|
+
remove(filters: NostrFilter[]): Promise<void>;
|
|
16
|
+
count(filters: NostrFilter[]): Promise<NostrRelayCOUNT[2]>;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
[Symbol.toStringTag]: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MockRelay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockRelay.d.ts","sourceRoot":"","sources":["../../test/MockRelay.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,MAAM,EACP,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,8BAA8B;AAC9B,qBAAa,SAAU,SAAQ,IAAK,YAAW,MAAM;IACnD,QAAQ,CAAC,IAAI,EAAE,GAAG,CAChB,MAAM,EACN;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;KAAE,CACzD,CAAa;IAEP,GAAG,CACR,OAAO,EAAE,WAAW,EAAE,EACtB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC9B,aAAa,CAAC,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAqB/D,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAapD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAQhE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIb,CAAC,MAAM,CAAC,WAAW,CAAC,SAAe;CAC7C"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// deno-lint-ignore-file require-await
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.MockRelay = void 0;
|
|
5
|
+
const nostr_tools_1 = require("nostr-tools");
|
|
6
|
+
const Machina_1 = require("../utils/Machina");
|
|
7
|
+
const NSet_1 = require("../NSet");
|
|
8
|
+
/** Mock relay for testing. */
|
|
9
|
+
class MockRelay extends NSet_1.NSet {
|
|
10
|
+
subs = new Map();
|
|
11
|
+
async *req(filters, opts) {
|
|
12
|
+
const uuid = crypto.randomUUID();
|
|
13
|
+
const machina = new Machina_1.Machina(opts?.signal);
|
|
14
|
+
this.subs.set(uuid, { filters, machina });
|
|
15
|
+
try {
|
|
16
|
+
for (const event of await this.query(filters)) {
|
|
17
|
+
yield ['EVENT', uuid, event];
|
|
18
|
+
}
|
|
19
|
+
yield ['EOSE', uuid];
|
|
20
|
+
for await (const event of machina) {
|
|
21
|
+
yield ['EVENT', uuid, event];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
this.subs.delete(uuid);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async event(event) {
|
|
29
|
+
this.add(event);
|
|
30
|
+
for (const { filters, machina } of this.subs.values()) {
|
|
31
|
+
if ((0, nostr_tools_1.matchFilters)(filters, event)) {
|
|
32
|
+
machina.push(event);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async query(filters) {
|
|
37
|
+
const events = [];
|
|
38
|
+
for (const event of this) {
|
|
39
|
+
if ((0, nostr_tools_1.matchFilters)(filters, event)) {
|
|
40
|
+
this.cache.get(event.id);
|
|
41
|
+
events.push(event);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return events;
|
|
45
|
+
}
|
|
46
|
+
async remove(filters) {
|
|
47
|
+
for (const event of this) {
|
|
48
|
+
if ((0, nostr_tools_1.matchFilters)(filters, event)) {
|
|
49
|
+
this.delete(event);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async count(filters) {
|
|
54
|
+
const events = await this.query(filters);
|
|
55
|
+
return {
|
|
56
|
+
count: events.length,
|
|
57
|
+
approximate: false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
close() {
|
|
61
|
+
return Promise.resolve();
|
|
62
|
+
}
|
|
63
|
+
[Symbol.toStringTag] = 'MockRelay';
|
|
64
|
+
}
|
|
65
|
+
exports.MockRelay = MockRelay;
|
|
66
|
+
//# sourceMappingURL=MockRelay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockRelay.js","sourceRoot":"","sources":["../../test/MockRelay.ts"],"names":[],"mappings":";AAAA,sCAAsC;;;AAWtC,6CAA2C;AAE3C,8CAA2C;AAC3C,kCAA+B;AAE/B,8BAA8B;AAC9B,MAAa,SAAU,SAAQ,WAAI;IACxB,IAAI,GAGT,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,CAAC,CAAC,GAAG,CACR,OAAsB,EACtB,IAA+B;QAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAa,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAErB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAClC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAiB;QAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,IAAI,IAAA,0BAAY,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAsB;QAChC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,IAAA,0BAAY,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,IAAA,0BAAY,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAsB;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;CAC7C;AA1ED,8BA0EC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NostrClientMsg, NostrEvent, NostrRelayMsg } from '@nostrify/types';
|
|
2
|
+
import { WebSocket } from 'ws';
|
|
3
|
+
interface TestRelayServerOpts {
|
|
4
|
+
handleMessage?(socket: WebSocket, msg: NostrClientMsg): Promise<void> | void;
|
|
5
|
+
}
|
|
6
|
+
export declare class TestRelayServer {
|
|
7
|
+
private opts?;
|
|
8
|
+
private port;
|
|
9
|
+
private httpServer;
|
|
10
|
+
private wsServer;
|
|
11
|
+
private connections;
|
|
12
|
+
private controllers;
|
|
13
|
+
private store;
|
|
14
|
+
constructor(opts?: TestRelayServerOpts);
|
|
15
|
+
private setupWebSocketServer;
|
|
16
|
+
send(socket: WebSocket, msg: NostrRelayMsg): void;
|
|
17
|
+
private handleMessage;
|
|
18
|
+
get url(): string;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
open(): void;
|
|
21
|
+
event(event: NostrEvent): Promise<void>;
|
|
22
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=TestRelayServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestRelayServer.d.ts","sourceRoot":"","sources":["../../test/TestRelayServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAmB,SAAS,EAAE,MAAM,IAAI,CAAC;AAIhD,UAAU,mBAAmB;IAC3B,aAAa,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9E;AAED,qBAAa,eAAe;IAQd,OAAO,CAAC,IAAI,CAAC;IAPzB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,KAAK,CAAmB;gBAEZ,IAAI,CAAC,EAAE,mBAAmB;IAS9C,OAAO,CAAC,oBAAoB;IAiC5B,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI;YAMnC,aAAa;IAyC3B,IAAI,GAAG,IAAI,MAAM,CAGhB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B,IAAI,IAAI,IAAI;IAWZ,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
|