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 it -
ESM
🥛🥛🥛 - @nymproject/sdk-full-fat, useimport
syntax, pre-bundled with inlined workers and WASM bundles -
CJS
🥛 - @nymproject/sdk, targets ES5, not bundled, you will need to bundle it -
CJS
🥛🥛🥛 - @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 later -
CJS
- @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 distribution -
CJS
: you have an older project that needs ES5 Javascript -
nodejs
: 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.