Compare commits

...

5 Commits

Author SHA1 Message Date
fiatjaf
bf55ad6b5a bump to v1.6.0 2023-02-20 22:51:49 -03:00
Moe Jangda
04a46b815c include the exports property in the root package.json to allow node environments to use cjs or esm bundles 2023-02-19 20:54:55 -03:00
Moe Jangda
165ff44dff include package.json with type: module near esm bundle so that it's usable 2023-02-19 20:54:55 -03:00
BilligsterUser
7bfd23af3c update close() usage
Signed-off-by: BilligsterUser <billigsteruser@protonmail.com>
2023-02-17 21:07:59 -03:00
fiatjaf
3d93ec8446 remove resolveClose, close() is now fire-and-forget. 2023-02-17 14:51:56 -03:00
7 changed files with 25 additions and 22 deletions

View File

@@ -120,7 +120,7 @@ let event = await relay.get({
ids: ['44e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245']
})
await relay.close()
relay.close()
```
To use this on Node.js you first must install `websocket-polyfill` and import it:

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env node
const fs = require('fs')
const esbuild = require('esbuild')
let common = {
@@ -11,11 +12,16 @@ let common = {
esbuild
.build({
...common,
outfile: 'lib/nostr.esm.js',
outfile: 'lib/esm/nostr.mjs',
format: 'esm',
packages: 'external'
})
.then(() => console.log('esm build success.'))
.then(() => {
const packageJson = JSON.stringify({ type: 'module' })
fs.writeFileSync(`${__dirname}/lib/esm/package.json`, packageJson, 'utf8')
console.log('esm build success.')
})
esbuild
.build({

View File

@@ -1,13 +1,17 @@
{
"name": "nostr-tools",
"version": "1.5.0",
"version": "1.6.0",
"description": "Tools for making a Nostr client.",
"repository": {
"type": "git",
"url": "https://github.com/fiatjaf/nostr-tools.git"
},
"main": "lib/nostr.cjs.js",
"module": "lib/nostr.esm.js",
"module": "lib/esm/nostr.mjs",
"exports": {
"import": "./lib/esm/nostr.mjs",
"require": "./lib/nostr.cjs.js"
},
"dependencies": {
"@noble/hashes": "1.0.0",
"@noble/secp256k1": "^1.7.1",

View File

@@ -19,8 +19,8 @@ let relays = [
'wss://nostr.zebedee.cloud/'
]
afterAll(async () => {
await pool.close([
afterAll(() => {
pool.close([
...relays,
'wss://nostr-relay.untethr.me',
'wss://offchain.pub',

View File

@@ -12,13 +12,11 @@ export class SimplePool {
this._conn = {}
}
async close(relays: string[]): Promise<void> {
await Promise.all(
relays.map(async url => {
close(relays: string[]): void {
relays.map(url => {
let relay = this._conn[normalizeURL(url)]
if (relay) await relay.close()
if (relay) relay.close()
})
)
}
async ensureRelay(url: string): Promise<Relay> {

View File

@@ -15,8 +15,8 @@ beforeAll(() => {
relay.connect()
})
afterAll(async () => {
await relay.close()
afterAll(() => {
relay.close()
})
test('connectivity', () => {

View File

@@ -10,7 +10,7 @@ export type Relay = {
url: string
status: number
connect: () => Promise<void>
close: () => Promise<void>
close: () => void
sub: (filters: Filter[], opts?: SubscriptionOptions) => Sub
list: (filters: Filter[], opts?: SubscriptionOptions) => Promise<Event[]>
get: (filter: Filter, opts?: SubscriptionOptions) => Promise<Event | null>
@@ -37,7 +37,6 @@ export type SubscriptionOptions = {
export function relayInit(url: string): Relay {
var ws: WebSocket
var resolveClose: () => void
var openSubs: {[id: string]: {filters: Filter[]} & SubscriptionOptions} = {}
var listeners: {
connect: Array<() => void>
@@ -78,7 +77,6 @@ export function relayInit(url: string): Relay {
}
ws.onclose = async () => {
listeners.disconnect.forEach(cb => cb())
resolveClose && resolveClose()
}
let incomingMessageQueue: string[] = []
@@ -291,16 +289,13 @@ export function relayInit(url: string): Relay {
}
},
connect,
close(): Promise<void> {
close(): void {
listeners = {connect: [], disconnect: [], error: [], notice: []}
subListeners = {}
pubListeners = {}
if (ws.readyState > 1) return Promise.resolve()
if (ws.readyState > 1) return
ws.close()
return new Promise<void>(resolve => {
resolveClose = resolve
})
},
get status() {
return ws?.readyState ?? 3