@nymproject/sdk
v1.2.4-rc.1
Published
The Nym SDK for Typescript will get you creating apps that can use the Nym Mixnet and Coconut credentials quickly.
Downloads
443
Readme
Nym SDK (Typescript)
The Nym SDK for Typescript will get you creating apps that can use the Nym Mixnet and Coconut credentials quickly.
TL;DR
Include the SDK in your project:
npm install @nymproject/sdk
Open a connection to a Gateway on the Nym Mixnet:
import { createNymMixnetClient } from '@nymproject/sdk';
const main = async () => {
const nym = await createNymMixnetClient();
const nymApiUrl = 'https://validator.nymtech.net/api';
// show message payload content when received
nym.events.subscribeToTextMessageReceivedEvent((e) => {
console.log('Got a message: ', e.args.payload);
});
// start the client and connect to a gateway
await nym.client.start({
clientId: 'My awesome client',
nymApiUrl,
});
// send a message to yourself
const payload = 'Hello mixnet';
const recipient = nym.client.selfAddress();
nym.client.send({ payload, recipient });
};
This will start the WASM client on a worker thread, so that your code can stay nice and snappy.
Send a message to another user (you will need to know their address at a Gateway):
const payload = 'Hello mixnet';
const recipient = '<< RECIPIENT ADDRESS GOES HERE >>';
await nym.client.send({ payload, recipient });
Find the right package for you
Browsers:
ESM
🥛 - @nymproject/sdk, not bundled, useimport
syntax, you will need to bundle itESM
🥛🥛🥛 - @nymproject/sdk-full-fat, useimport
syntax, pre-bundled with inlined workers and WASM bundlesCJS
🥛 - @nymproject/sdk, targets ES5, not bundled, you will need to bundle itCJS
🥛🥛🥛 - @nymproject/sdk-full-fat, targets ES5, pre-bundled with inlined workers and WASM bundles
NodeJS:
ESM
- @nymproject/sdk-nodejs, useimport
syntax in NodeJS 18 and laterCJS
- @nymproject/sdk-nodejs-cjs, userequire
syntax in older NodeJS versions
Why have all these variations? Each project is different, so hopefully we have something for you!
Choose a package depending on how your project is transpiled and packaged:
ESM
: useimport
syntax and have your bundler copy the WASM bundles into your output distributionCJS
: you have an older project that needs ES5 Javascriptnodejs
: you want to write your project server-side or locally without the browser on NodeJS
And then, to use *-full-fat
or not, how do I choose? We have *-full-fat
packages that are pre-bundled by including all web-workers and WASM as inline Base64.
Use the *-full-fat
packages when you have trouble changing your bundler settings, or you can use an open CSP.