Compare commits

...

2 Commits

Author SHA1 Message Date
fiatjaf
faf8e62120 maybe fix a bug with calling sub.sub() 2022-06-04 18:34:54 -03:00
fiatjaf
dc489bf387 build esm module that can be imported from browsers.
closes https://github.com/fiatjaf/nostr-tools/issues/14
2022-05-08 20:49:36 -03:00
5 changed files with 56 additions and 6 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules
dist dist
yarn.lock yarn.lock
package-lock.json package-lock.json
nostr.js

View File

@@ -70,3 +70,20 @@ pool.addRelay('<url>')
All functions expect bytearrays as hex strings and output bytearrays as hex strings. All functions expect bytearrays as hex strings and output bytearrays as hex strings.
For other utils please read the source (for now). For other utils please read the source (for now).
### Using from the browser (if you don't want to use a bundler)
You can import nostr-tools as an ES module. Just add a script tag like this:
```html
<script type="module">
import {generatePrivateKey} from 'https://unpkg.com/nostr-tools/nostr.js'
console.log(generatePrivateKey())
</script>
```
And import whatever function you would import from `"nostr-tools"` in a bundler.
## License
Public domain.

25
build.js Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env node
const esbuild = require('esbuild')
const alias = require('esbuild-plugin-alias')
const nodeGlobals = require('@esbuild-plugins/node-globals-polyfill').default
const buildOptions = {
entryPoints: ['index.js'],
outfile: 'nostr.js',
bundle: true,
format: 'esm',
plugins: [
alias({
stream: require.resolve('readable-stream')
}),
nodeGlobals({buffer: true})
],
define: {
window: 'self',
global: 'self'
},
loader: {'.js': 'jsx'}
}
esbuild.build(buildOptions).then(() => console.log('build success.'))

View File

@@ -1,6 +1,6 @@
{ {
"name": "nostr-tools", "name": "nostr-tools",
"version": "0.23.0", "version": "0.23.3",
"description": "Tools for making a Nostr client.", "description": "Tools for making a Nostr client.",
"repository": { "repository": {
"type": "git", "type": "git",
@@ -30,7 +30,15 @@
"client" "client"
], ],
"devDependencies": { "devDependencies": {
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
"esbuild": "^0.14.38",
"esbuild-plugin-alias": "^0.2.1",
"eslint": "^8.5.0", "eslint": "^8.5.0",
"eslint-plugin-babel": "^5.3.1" "eslint-plugin-babel": "^5.3.1",
"events": "^3.3.0",
"readable-stream": "^3.6.0"
},
"scripts": {
"prepublish": "node build.js"
} }
} }

View File

@@ -26,10 +26,9 @@ export function relayPool() {
const activeSubscriptions = {} const activeSubscriptions = {}
const sub = ( const sub = ({cb, filter, beforeSend}, id) => {
{cb, filter, beforeSend}, if (!id) id = Math.random().toString().slice(2)
id = Math.random().toString().slice(2)
) => {
const subControllers = Object.fromEntries( const subControllers = Object.fromEntries(
Object.values(relays) Object.values(relays)
.filter(({policy}) => policy.read) .filter(({policy}) => policy.read)