@welshman/signer 0.0.1 → 0.0.3

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.
Files changed (39) hide show
  1. package/build/src/index.cjs +22 -0
  2. package/build/src/index.cjs.map +1 -0
  3. package/build/src/index.d.ts +4 -4
  4. package/build/src/index.mjs +4 -4
  5. package/build/src/nip59.cjs +76 -0
  6. package/build/src/nip59.cjs.map +1 -0
  7. package/build/src/nip59.d.ts +26 -0
  8. package/build/src/nip59.mjs +66 -0
  9. package/build/src/nip59.mjs.map +1 -0
  10. package/build/src/signers/nip01.cjs +24 -0
  11. package/build/src/signers/nip01.cjs.map +1 -0
  12. package/build/src/signers/{secret.d.ts → nip01.d.ts} +6 -5
  13. package/build/src/signers/{secret.mjs → nip01.mjs} +6 -5
  14. package/build/src/signers/nip01.mjs.map +1 -0
  15. package/build/src/signers/nip07.cjs +50 -0
  16. package/build/src/signers/nip07.cjs.map +1 -0
  17. package/build/src/signers/{extension.d.ts → nip07.d.ts} +6 -6
  18. package/build/src/signers/nip07.mjs +45 -0
  19. package/build/src/signers/nip07.mjs.map +1 -0
  20. package/build/src/signers/nip46.cjs +157 -0
  21. package/build/src/signers/nip46.cjs.map +1 -0
  22. package/build/src/signers/nip46.d.ts +48 -0
  23. package/build/src/signers/nip46.mjs +152 -0
  24. package/build/src/signers/nip46.mjs.map +1 -0
  25. package/build/src/util.cjs +42 -0
  26. package/build/src/util.cjs.map +1 -0
  27. package/build/src/util.d.ts +20 -8
  28. package/build/src/util.mjs +4 -3
  29. package/build/src/util.mjs.map +1 -1
  30. package/package.json +5 -4
  31. package/build/src/signers/connect.d.ts +0 -47
  32. package/build/src/signers/connect.mjs +0 -152
  33. package/build/src/signers/connect.mjs.map +0 -1
  34. package/build/src/signers/extension.mjs +0 -48
  35. package/build/src/signers/extension.mjs.map +0 -1
  36. package/build/src/signers/secret.mjs.map +0 -1
  37. package/build/src/wrapper.d.ts +0 -21
  38. package/build/src/wrapper.mjs +0 -56
  39. package/build/src/wrapper.mjs.map +0 -1
@@ -0,0 +1,48 @@
1
+ import { Emitter } from "@welshman/lib";
2
+ import { StampedEvent } from "@welshman/util";
3
+ import { Subscription } from "@welshman/net";
4
+ import { ISigner } from '../util';
5
+ export type Algorithm = "nip04" | "nip44";
6
+ export type Nip46Handler = {
7
+ relays: string[];
8
+ pubkey?: string;
9
+ domain?: string;
10
+ };
11
+ export type Nip46Response = {
12
+ id: string;
13
+ error?: string;
14
+ result?: string;
15
+ };
16
+ export declare class Nip46Broker extends Emitter {
17
+ #private;
18
+ readonly pubkey: string;
19
+ readonly secret: string;
20
+ readonly handler: Nip46Handler;
21
+ readonly algorithm: Algorithm;
22
+ static get(pubkey: string, secret: string, handler: Nip46Handler, algorithm?: Algorithm): Nip46Broker;
23
+ constructor(pubkey: string, secret: string, handler: Nip46Handler, algorithm: Algorithm);
24
+ subscribe: () => Subscription;
25
+ request: (method: string, params: string[], admin?: boolean) => Promise<string>;
26
+ createAccount: (username: string, perms?: string) => Promise<string>;
27
+ connect: (token?: string, perms?: string) => Promise<boolean>;
28
+ signEvent: (event: StampedEvent) => Promise<any>;
29
+ nip04Encrypt: (pk: string, message: string) => Promise<string>;
30
+ nip04Decrypt: (pk: string, message: string) => Promise<string>;
31
+ nip44Encrypt: (pk: string, message: string) => Promise<string>;
32
+ nip44Decrypt: (pk: string, message: string) => Promise<string>;
33
+ teardown: () => void;
34
+ }
35
+ export declare class Nip46Signer implements ISigner {
36
+ private broker;
37
+ constructor(broker: Nip46Broker);
38
+ getPubkey: () => Promise<string>;
39
+ sign: (template: StampedEvent) => Promise<any>;
40
+ nip04: {
41
+ encrypt: (pk: string, message: string) => Promise<string>;
42
+ decrypt: (pk: string, message: string) => Promise<string>;
43
+ };
44
+ nip44: {
45
+ encrypt: (pk: string, message: string) => Promise<string>;
46
+ decrypt: (pk: string, message: string) => Promise<string>;
47
+ };
48
+ }
@@ -0,0 +1,152 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Nip46Broker_sub, _Nip46Broker_signer, _Nip46Broker_ready, _Nip46Broker_closed, _Nip46Broker_connectResult;
13
+ import { finalizeEvent, getPublicKey } from "nostr-tools";
14
+ import { hexToBytes } from '@noble/hashes/utils';
15
+ import { Emitter, tryCatch, randomId, sleep, equals, now } from "@welshman/lib";
16
+ import { createEvent, NOSTR_CONNECT } from "@welshman/util";
17
+ import { subscribe, publish } from "@welshman/net";
18
+ import { nip04, nip44, decrypt, hash, own } from "../util.mjs";
19
+ import { Nip01Signer } from "./nip01.mjs";
20
+ let singleton;
21
+ export class Nip46Broker extends Emitter {
22
+ static get(pubkey, secret, handler, algorithm = "nip04") {
23
+ if ((singleton === null || singleton === void 0 ? void 0 : singleton.pubkey) !== pubkey ||
24
+ (singleton === null || singleton === void 0 ? void 0 : singleton.secret) !== secret ||
25
+ !equals(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler) ||
26
+ (singleton === null || singleton === void 0 ? void 0 : singleton.algorithm) !== algorithm) {
27
+ singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
28
+ singleton = new Nip46Broker(pubkey, secret, handler, algorithm);
29
+ }
30
+ return singleton;
31
+ }
32
+ constructor(pubkey, secret, handler, algorithm) {
33
+ super();
34
+ this.pubkey = pubkey;
35
+ this.secret = secret;
36
+ this.handler = handler;
37
+ this.algorithm = algorithm;
38
+ _Nip46Broker_sub.set(this, void 0);
39
+ _Nip46Broker_signer.set(this, void 0);
40
+ _Nip46Broker_ready.set(this, sleep(500));
41
+ _Nip46Broker_closed.set(this, false);
42
+ _Nip46Broker_connectResult.set(this, void 0);
43
+ this.subscribe = () => {
44
+ const sub = subscribe({
45
+ relays: this.handler.relays,
46
+ filters: [
47
+ {
48
+ since: now() - 30,
49
+ kinds: [NOSTR_CONNECT],
50
+ "#p": [getPublicKey(hexToBytes(this.secret))],
51
+ },
52
+ ],
53
+ });
54
+ sub.emitter.on("event", async (url, e) => {
55
+ const json = await decrypt(__classPrivateFieldGet(this, _Nip46Broker_signer, "f"), e.pubkey, e.content);
56
+ const res = await tryCatch(() => JSON.parse(json));
57
+ if (!res.id) {
58
+ console.error(`Invalid nostr-connect response: ${json}`);
59
+ }
60
+ if (res.result === "auth_url") {
61
+ this.emit(`auth-${res.id}`, res);
62
+ }
63
+ else {
64
+ this.emit(`res-${res.id}`, res);
65
+ }
66
+ });
67
+ sub.emitter.on("complete", () => {
68
+ if (!__classPrivateFieldGet(this, _Nip46Broker_closed, "f")) {
69
+ __classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
70
+ }
71
+ });
72
+ return sub;
73
+ };
74
+ this.request = async (method, params, admin = false) => {
75
+ // nsecbunker has a race condition
76
+ await __classPrivateFieldGet(this, _Nip46Broker_ready, "f");
77
+ const id = randomId();
78
+ const pubkey = admin ? this.handler.pubkey : this.pubkey;
79
+ const payload = JSON.stringify({ id, method, params });
80
+ const crypt = this.algorithm === "nip04" ? nip04 : nip44;
81
+ const content = await crypt.encrypt(pubkey, this.secret, payload);
82
+ const template = createEvent(NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
83
+ const event = finalizeEvent(template, this.secret);
84
+ publish({ event, relays: this.handler.relays });
85
+ this.once(`auth-${id}`, res => {
86
+ window.open(res.error, "Coracle", "width=600,height=800,popup=yes");
87
+ });
88
+ return new Promise((resolve, reject) => {
89
+ this.once(`res-${id}`, ({ result, error }) => {
90
+ if (error) {
91
+ reject(error);
92
+ }
93
+ else {
94
+ resolve(result);
95
+ }
96
+ });
97
+ });
98
+ };
99
+ this.createAccount = (username, perms = "") => {
100
+ if (!this.handler.domain) {
101
+ throw new Error("Unable to create an account without a handler domain");
102
+ }
103
+ return this.request("create_account", [username, this.handler.domain, "", perms], true);
104
+ };
105
+ this.connect = async (token = "", perms = "") => {
106
+ if (!__classPrivateFieldGet(this, _Nip46Broker_connectResult, "f")) {
107
+ const params = [this.pubkey, token, perms];
108
+ __classPrivateFieldSet(this, _Nip46Broker_connectResult, await this.request("connect", params), "f");
109
+ }
110
+ return __classPrivateFieldGet(this, _Nip46Broker_connectResult, "f") === "ack";
111
+ };
112
+ this.signEvent = async (event) => {
113
+ return JSON.parse(await this.request("sign_event", [JSON.stringify(event)]));
114
+ };
115
+ this.nip04Encrypt = (pk, message) => {
116
+ return this.request("nip04_encrypt", [pk, message]);
117
+ };
118
+ this.nip04Decrypt = (pk, message) => {
119
+ return this.request("nip04_decrypt", [pk, message]);
120
+ };
121
+ this.nip44Encrypt = (pk, message) => {
122
+ return this.request("nip44_encrypt", [pk, message]);
123
+ };
124
+ this.nip44Decrypt = (pk, message) => {
125
+ return this.request("nip44_decrypt", [pk, message]);
126
+ };
127
+ this.teardown = () => {
128
+ var _a;
129
+ __classPrivateFieldSet(this, _Nip46Broker_closed, true, "f");
130
+ (_a = __classPrivateFieldGet(this, _Nip46Broker_sub, "f")) === null || _a === void 0 ? void 0 : _a.close();
131
+ };
132
+ __classPrivateFieldSet(this, _Nip46Broker_signer, new Nip01Signer(secret), "f");
133
+ __classPrivateFieldSet(this, _Nip46Broker_sub, this.subscribe(), "f");
134
+ }
135
+ }
136
+ _Nip46Broker_sub = new WeakMap(), _Nip46Broker_signer = new WeakMap(), _Nip46Broker_ready = new WeakMap(), _Nip46Broker_closed = new WeakMap(), _Nip46Broker_connectResult = new WeakMap();
137
+ export class Nip46Signer {
138
+ constructor(broker) {
139
+ this.broker = broker;
140
+ this.getPubkey = async () => this.broker.pubkey;
141
+ this.sign = (template) => this.broker.signEvent(hash(own(template, this.broker.pubkey)));
142
+ this.nip04 = {
143
+ encrypt: this.broker.nip04Encrypt,
144
+ decrypt: this.broker.nip04Decrypt,
145
+ };
146
+ this.nip44 = {
147
+ encrypt: this.broker.nip44Encrypt,
148
+ decrypt: this.broker.nip44Decrypt,
149
+ };
150
+ }
151
+ }
152
+ //# sourceMappingURL=nip46.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip46.mjs","sourceRoot":"","sources":["../../../src/signers/nip46.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decrypt = exports.nip44 = exports.nip04 = exports.sign = exports.hash = exports.own = exports.stamp = exports.getSig = exports.getHash = exports.getPubkey = exports.makeSecret = void 0;
4
+ const secp256k1_1 = require("@noble/curves/secp256k1");
5
+ const utils_1 = require("@noble/hashes/utils");
6
+ const nostr_tools_1 = require("nostr-tools");
7
+ const lib_1 = require("@welshman/lib");
8
+ const makeSecret = () => (0, utils_1.bytesToHex)((0, nostr_tools_1.generateSecretKey)());
9
+ exports.makeSecret = makeSecret;
10
+ const getPubkey = (secret) => (0, nostr_tools_1.getPublicKey)((0, utils_1.hexToBytes)(secret));
11
+ exports.getPubkey = getPubkey;
12
+ const getHash = (event) => (0, nostr_tools_1.getEventHash)(event);
13
+ exports.getHash = getHash;
14
+ const getSig = (event, secret) => (0, utils_1.bytesToHex)(secp256k1_1.schnorr.sign(event.id, secret));
15
+ exports.getSig = getSig;
16
+ const stamp = (event, created_at = (0, lib_1.now)()) => ({ ...event, created_at });
17
+ exports.stamp = stamp;
18
+ const own = (event, pubkey) => ({ ...event, pubkey });
19
+ exports.own = own;
20
+ const hash = (event) => ({ ...event, id: (0, exports.getHash)(event) });
21
+ exports.hash = hash;
22
+ const sign = (event, secret) => ({ ...event, sig: (0, exports.getSig)(event, secret) });
23
+ exports.sign = sign;
24
+ exports.nip04 = {
25
+ detect: (m) => m.includes("?iv="),
26
+ encrypt: (pubkey, secret, m) => nostr_tools_1.nip04.encrypt(secret, pubkey, m),
27
+ decrypt: (pubkey, secret, m) => nostr_tools_1.nip04.decrypt(secret, pubkey, m),
28
+ };
29
+ exports.nip44 = {
30
+ getSharedSecret: (0, lib_1.cached)({
31
+ maxSize: 10000,
32
+ getKey: ([secret, pubkey]) => [secret, pubkey].join(":"),
33
+ getValue: ([secret, pubkey]) => nostr_tools_1.nip44.v2.utils.getConversationKey((0, utils_1.hexToBytes)(secret), pubkey),
34
+ }),
35
+ encrypt: (pubkey, secret, m) => nostr_tools_1.nip44.v2.encrypt(m, exports.nip44.getSharedSecret(secret, pubkey)),
36
+ decrypt: (pubkey, secret, m) => nostr_tools_1.nip44.v2.decrypt(m, exports.nip44.getSharedSecret(secret, pubkey)),
37
+ };
38
+ const decrypt = async (signer, pubkey, message) => exports.nip04.detect(message)
39
+ ? signer.nip04.decrypt(pubkey, message)
40
+ : signer.nip44.decrypt(pubkey, message);
41
+ exports.decrypt = decrypt;
42
+ //# sourceMappingURL=util.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.cjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,34 @@
1
- import { SignedEvent, HashedEvent, EventTemplate, OwnedEvent } from '@welshman/util';
2
- export declare const getSecret: () => string;
1
+ import { SignedEvent, HashedEvent, EventTemplate, StampedEvent, OwnedEvent } from '@welshman/util';
2
+ export declare const makeSecret: () => string;
3
3
  export declare const getPubkey: (secret: string) => string;
4
4
  export declare const getHash: (event: OwnedEvent) => string;
5
5
  export declare const getSig: (event: HashedEvent, secret: string) => string;
6
- export declare const own: (pubkey: string, event: EventTemplate) => {
6
+ export declare const stamp: (event: EventTemplate, created_at?: number) => {
7
+ created_at: number;
8
+ tags: string[][];
9
+ content: string;
10
+ kind: number;
11
+ };
12
+ export declare const own: (event: StampedEvent, pubkey: string) => {
7
13
  pubkey: string;
14
+ tags: string[][];
15
+ content: string;
8
16
  kind: number;
17
+ created_at: number;
18
+ };
19
+ export declare const hash: (event: OwnedEvent) => {
20
+ id: string;
9
21
  tags: string[][];
10
22
  content: string;
23
+ kind: number;
11
24
  created_at: number;
25
+ pubkey: string;
12
26
  };
13
- export declare const hash: (event: OwnedEvent) => HashedEvent;
14
27
  export declare const sign: (event: HashedEvent, secret: string) => {
15
28
  sig: string;
16
- kind: number;
17
29
  tags: string[][];
18
30
  content: string;
31
+ kind: number;
19
32
  created_at: number;
20
33
  pubkey: string;
21
34
  id: string;
@@ -35,7 +48,7 @@ export declare const nip44: {
35
48
  encrypt: (pubkey: string, secret: string, m: string) => string;
36
49
  decrypt: (pubkey: string, secret: string, m: string) => string;
37
50
  };
38
- export type Sign = (event: EventTemplate) => Promise<SignedEvent>;
51
+ export type Sign = (event: StampedEvent) => Promise<SignedEvent>;
39
52
  export type Encrypt = (pubkey: string, message: string) => Promise<string>;
40
53
  export type Decrypt = (pubkey: string, message: string) => Promise<string>;
41
54
  export type EncryptionImplementation = {
@@ -43,10 +56,9 @@ export type EncryptionImplementation = {
43
56
  decrypt: Decrypt;
44
57
  };
45
58
  export interface ISigner {
46
- isEnabled: () => boolean;
47
- getPubkey: () => Promise<string>;
48
59
  sign: Sign;
49
60
  nip04: EncryptionImplementation;
50
61
  nip44: EncryptionImplementation;
62
+ getPubkey: () => Promise<string>;
51
63
  }
52
64
  export declare const decrypt: (signer: ISigner, pubkey: string, message: string) => Promise<string>;
@@ -1,12 +1,13 @@
1
1
  import { schnorr } from '@noble/curves/secp256k1';
2
2
  import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
3
3
  import { nip04 as nt04, nip44 as nt44, generateSecretKey, getPublicKey, getEventHash } from "nostr-tools";
4
- import { cached } from '@welshman/lib';
5
- export const getSecret = () => bytesToHex(generateSecretKey());
4
+ import { cached, now } from '@welshman/lib';
5
+ export const makeSecret = () => bytesToHex(generateSecretKey());
6
6
  export const getPubkey = (secret) => getPublicKey(hexToBytes(secret));
7
7
  export const getHash = (event) => getEventHash(event);
8
8
  export const getSig = (event, secret) => bytesToHex(schnorr.sign(event.id, secret));
9
- export const own = (pubkey, event) => ({ ...event, pubkey });
9
+ export const stamp = (event, created_at = now()) => ({ ...event, created_at });
10
+ export const own = (event, pubkey) => ({ ...event, pubkey });
10
11
  export const hash = (event) => ({ ...event, id: getHash(event) });
11
12
  export const sign = (event, secret) => ({ ...event, sig: getSig(event, secret) });
12
13
  export const nip04 = {
@@ -1 +1 @@
1
- {"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.mjs","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@welshman/signer",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "author": "hodlbod",
5
5
  "license": "MIT",
6
6
  "description": "A nostr signer implemenation supporting several login methods.",
@@ -31,8 +31,9 @@
31
31
  "typescript": "~5.1.6"
32
32
  },
33
33
  "dependencies": {
34
- "@welshman/lib": "^0.0.13",
35
- "@welshman/net": "^0.0.17",
36
- "@welshman/util": "^0.0.24"
34
+ "@welshman/lib": "0.0.15",
35
+ "@welshman/net": "0.0.19",
36
+ "@welshman/util": "0.0.27",
37
+ "nostr-tools": "^2.7.2"
37
38
  }
38
39
  }
@@ -1,47 +0,0 @@
1
- import { Emitter } from "@welshman/lib";
2
- import { EventTemplate } from "@welshman/util";
3
- import { Subscription } from "@welshman/net";
4
- import { ISigner } from '../util';
5
- export type NostrConnectHandler = {
6
- pubkey: string;
7
- relays: string[];
8
- domain?: string;
9
- };
10
- export type ConnectResponse = {
11
- id: string;
12
- error?: string;
13
- result?: string;
14
- };
15
- export declare class NostrConnectBroker extends Emitter {
16
- #private;
17
- readonly pubkey: string;
18
- readonly secret: string;
19
- readonly handler: NostrConnectHandler;
20
- static get(pubkey: string, secret: string, handler: NostrConnectHandler): NostrConnectBroker;
21
- constructor(pubkey: string, secret: string, handler: NostrConnectHandler);
22
- subscribe(): Subscription;
23
- request(method: string, params: string[], admin?: boolean): Promise<string>;
24
- createAccount(username: string): Promise<string>;
25
- connect(token?: string): Promise<boolean>;
26
- signEvent(event: EventTemplate): Promise<any>;
27
- nip04Encrypt(pk: string, message: string): Promise<string>;
28
- nip04Decrypt(pk: string, message: string): Promise<string>;
29
- nip44Encrypt(pk: string, message: string): Promise<string>;
30
- nip44Decrypt(pk: string, message: string): Promise<string>;
31
- teardown(): void;
32
- }
33
- export declare class ConnectSigner implements ISigner {
34
- private broker;
35
- constructor(broker: NostrConnectBroker);
36
- isEnabled: () => boolean;
37
- getPubkey: () => Promise<string>;
38
- sign: (event: EventTemplate) => Promise<any>;
39
- nip04: {
40
- encrypt: (pk: string, message: string) => Promise<string>;
41
- decrypt: (pk: string, message: string) => Promise<string>;
42
- };
43
- nip44: {
44
- encrypt: (pk: string, message: string) => Promise<string>;
45
- decrypt: (pk: string, message: string) => Promise<string>;
46
- };
47
- }
@@ -1,152 +0,0 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _NostrConnectBroker_sub, _NostrConnectBroker_signer, _NostrConnectBroker_ready, _NostrConnectBroker_closed, _NostrConnectBroker_connectResult;
13
- import { nip04, finalizeEvent, getPublicKey } from "nostr-tools";
14
- import { hexToBytes } from '@noble/hashes/utils';
15
- import { Emitter, tryCatch, randomId, sleep, equals, now } from "@welshman/lib";
16
- import { createEvent, NOSTR_CONNECT } from "@welshman/util";
17
- import { subscribe, publish } from "@welshman/net";
18
- import { decrypt } from "../util.mjs";
19
- import { SecretSigner } from "./secret.mjs";
20
- let singleton;
21
- // FIXME set the full list of requested perms
22
- const Perms = "nip04_encrypt,nip04_decrypt,sign_event:0,sign_event:1,sign_event:4,sign_event:6,sign_event:7";
23
- export class NostrConnectBroker extends Emitter {
24
- static get(pubkey, secret, handler) {
25
- if ((singleton === null || singleton === void 0 ? void 0 : singleton.pubkey) !== pubkey ||
26
- (singleton === null || singleton === void 0 ? void 0 : singleton.secret) !== secret ||
27
- !equals(singleton === null || singleton === void 0 ? void 0 : singleton.handler, handler)) {
28
- singleton === null || singleton === void 0 ? void 0 : singleton.teardown();
29
- singleton = new NostrConnectBroker(pubkey, secret, handler);
30
- }
31
- return singleton;
32
- }
33
- constructor(pubkey, secret, handler) {
34
- super();
35
- this.pubkey = pubkey;
36
- this.secret = secret;
37
- this.handler = handler;
38
- _NostrConnectBroker_sub.set(this, void 0);
39
- _NostrConnectBroker_signer.set(this, void 0);
40
- _NostrConnectBroker_ready.set(this, sleep(500));
41
- _NostrConnectBroker_closed.set(this, false);
42
- _NostrConnectBroker_connectResult.set(this, void 0);
43
- __classPrivateFieldSet(this, _NostrConnectBroker_signer, new SecretSigner(secret), "f");
44
- __classPrivateFieldSet(this, _NostrConnectBroker_sub, this.subscribe(), "f");
45
- }
46
- subscribe() {
47
- const sub = subscribe({
48
- relays: this.handler.relays,
49
- filters: [
50
- {
51
- since: now() - 30,
52
- kinds: [NOSTR_CONNECT],
53
- "#p": [getPublicKey(hexToBytes(this.secret))],
54
- },
55
- ],
56
- });
57
- sub.emitter.on("event", async (url, e) => {
58
- const json = await decrypt(__classPrivateFieldGet(this, _NostrConnectBroker_signer, "f"), e.pubkey, e.content);
59
- const res = await tryCatch(() => JSON.parse(json));
60
- if (!res.id) {
61
- console.error(`Invalid nostr-connect response: ${json}`);
62
- }
63
- if (res.result === "auth_url") {
64
- this.emit(`auth-${res.id}`, res);
65
- }
66
- else {
67
- this.emit(`res-${res.id}`, res);
68
- }
69
- });
70
- sub.emitter.on("complete", () => {
71
- if (!__classPrivateFieldGet(this, _NostrConnectBroker_closed, "f")) {
72
- __classPrivateFieldSet(this, _NostrConnectBroker_sub, this.subscribe(), "f");
73
- }
74
- });
75
- return sub;
76
- }
77
- async request(method, params, admin = false) {
78
- // nsecbunker has a race condition
79
- await __classPrivateFieldGet(this, _NostrConnectBroker_ready, "f");
80
- const id = randomId();
81
- const pubkey = admin ? this.handler.pubkey : this.pubkey;
82
- const payload = JSON.stringify({ id, method, params });
83
- const content = await nip04.encrypt(this.secret, pubkey, payload);
84
- const template = createEvent(NOSTR_CONNECT, { content, tags: [["p", pubkey]] });
85
- const event = finalizeEvent(template, this.secret);
86
- publish({ event, relays: this.handler.relays });
87
- this.once(`auth-${id}`, res => {
88
- window.open(res.result, "Coracle", "width=600,height=800,popup=yes");
89
- });
90
- return new Promise((resolve, reject) => {
91
- this.once(`res-${id}`, ({ result, error }) => {
92
- if (error) {
93
- reject(error);
94
- }
95
- else {
96
- resolve(result);
97
- }
98
- });
99
- });
100
- }
101
- createAccount(username) {
102
- if (!this.handler.domain) {
103
- throw new Error("Unable to create an account without a handler domain");
104
- }
105
- return this.request("create_account", [username, this.handler.domain, "", Perms], true);
106
- }
107
- async connect(token = "") {
108
- if (!__classPrivateFieldGet(this, _NostrConnectBroker_connectResult, "f")) {
109
- const params = [this.pubkey, token, Perms];
110
- __classPrivateFieldSet(this, _NostrConnectBroker_connectResult, await this.request("connect", params), "f");
111
- }
112
- return __classPrivateFieldGet(this, _NostrConnectBroker_connectResult, "f") === "ack";
113
- }
114
- async signEvent(event) {
115
- return JSON.parse(await this.request("sign_event", [JSON.stringify(event)]));
116
- }
117
- nip04Encrypt(pk, message) {
118
- return this.request("nip04_encrypt", [pk, message]);
119
- }
120
- nip04Decrypt(pk, message) {
121
- return this.request("nip04_decrypt", [pk, message]);
122
- }
123
- nip44Encrypt(pk, message) {
124
- return this.request("nip44_encrypt", [pk, message]);
125
- }
126
- nip44Decrypt(pk, message) {
127
- return this.request("nip44_decrypt", [pk, message]);
128
- }
129
- teardown() {
130
- var _a;
131
- __classPrivateFieldSet(this, _NostrConnectBroker_closed, true, "f");
132
- (_a = __classPrivateFieldGet(this, _NostrConnectBroker_sub, "f")) === null || _a === void 0 ? void 0 : _a.close();
133
- }
134
- }
135
- _NostrConnectBroker_sub = new WeakMap(), _NostrConnectBroker_signer = new WeakMap(), _NostrConnectBroker_ready = new WeakMap(), _NostrConnectBroker_closed = new WeakMap(), _NostrConnectBroker_connectResult = new WeakMap();
136
- export class ConnectSigner {
137
- constructor(broker) {
138
- this.broker = broker;
139
- this.isEnabled = () => true;
140
- this.getPubkey = async () => this.broker.pubkey;
141
- this.sign = (event) => this.broker.signEvent(event);
142
- this.nip04 = {
143
- encrypt: this.broker.nip04Encrypt,
144
- decrypt: this.broker.nip04Decrypt,
145
- };
146
- this.nip44 = {
147
- encrypt: this.broker.nip44Encrypt,
148
- decrypt: this.broker.nip44Decrypt,
149
- };
150
- }
151
- }
152
- //# sourceMappingURL=connect.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect.mjs","sourceRoot":"","sources":["../../../src/signers/connect.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
- if (kind === "m") throw new TypeError("Private method is not writable");
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
- };
12
- var _ExtensionSigner_lock, _ExtensionSigner_ext, _ExtensionSigner_then;
13
- import { hash, own } from "../util.mjs";
14
- export class ExtensionSigner {
15
- constructor() {
16
- _ExtensionSigner_lock.set(this, Promise.resolve());
17
- _ExtensionSigner_ext.set(this, () => window.nostr);
18
- _ExtensionSigner_then.set(this, async (f) => {
19
- const promise = __classPrivateFieldGet(this, _ExtensionSigner_lock, "f").then(() => {
20
- const ext = __classPrivateFieldGet(this, _ExtensionSigner_ext, "f").call(this);
21
- if (!ext)
22
- throw new Error("Extension is not enabled");
23
- return f(ext);
24
- });
25
- // Recover from errors
26
- __classPrivateFieldSet(this, _ExtensionSigner_lock, promise.then(() => undefined, () => undefined), "f");
27
- return promise;
28
- });
29
- this.isEnabled = () => Boolean(__classPrivateFieldGet(this, _ExtensionSigner_ext, "f").call(this));
30
- this.getPubkey = () => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => {
31
- const pubkey = ext.getPublicKey();
32
- if (!pubkey)
33
- throw new Error("Failed to retrieve pubkey");
34
- return pubkey;
35
- });
36
- this.sign = (event) => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => ext.sign(hash(own(ext.getPublicKey(), event))));
37
- this.nip04 = {
38
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => ext.nip04.encrypt(pubkey, message)),
39
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => ext.nip04.decrypt(pubkey, message)),
40
- };
41
- this.nip44 = {
42
- encrypt: (pubkey, message) => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => ext.nip44.encrypt(pubkey, message)),
43
- decrypt: (pubkey, message) => __classPrivateFieldGet(this, _ExtensionSigner_then, "f").call(this, ext => ext.nip44.decrypt(pubkey, message)),
44
- };
45
- }
46
- }
47
- _ExtensionSigner_lock = new WeakMap(), _ExtensionSigner_ext = new WeakMap(), _ExtensionSigner_then = new WeakMap();
48
- //# sourceMappingURL=extension.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.mjs","sourceRoot":"","sources":["../../../src/signers/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;OACO,EAAC,IAAI,EAAE,GAAG,EAA0C;AAS3D,MAAM,OAAO,eAAe;IAA5B;QACE,gCAAQ,OAAO,CAAC,OAAO,EAAE,EAAA;QAEzB,+BAAO,GAAG,EAAE,CAAE,MAA8B,CAAC,KAAK,EAAA;QAElD,gCAAQ,KAAK,EAAK,CAAqC,EAAE,EAAE;YACzD,MAAM,OAAO,GAAG,uBAAA,IAAI,6BAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,MAAM,GAAG,GAAG,uBAAA,IAAI,4BAAK,MAAT,IAAI,CAAO,CAAA;gBAEvB,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;gBAErD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YAEF,sBAAsB;YACtB,uBAAA,IAAI,yBAAS,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAA,CAAA;YAE3D,OAAO,OAAO,CAAA;QAChB,CAAC,EAAA;QAED,cAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAA,IAAI,4BAAK,MAAT,IAAI,CAAO,CAAC,CAAA;QAEtC,cAAS,GAAG,GAAG,EAAE,CACf,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE;YACf,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;YAEjC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAEzD,OAAO,MAAgB,CAAA;QACzB,CAAC,CAAC,CAAA;QAEJ,SAAI,GAAG,CAAC,KAAoB,EAAE,EAAE,CAC9B,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7E,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;QAED,UAAK,GAAG;YACN,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAC3C,uBAAA,IAAI,6BAAM,MAAV,IAAI,EAAO,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACxD,CAAA;IACH,CAAC;CAAA"}