npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mam.tools.js

v0.5.1

Published

A library making the use of mam more easy

Downloads

3

Readme

npm

MAM Tools

A library containing tools to make the use of IOTAs Masked Authenticated Messaging more easy.

Included is a lib for node.js, a js module for mocking a MAM client so that no real IOTA node is needed for the testing of MAM apps and a CLI.

CLI

You can use all functions of the MAM library with a simple CLI. The releases contain binaries for different platforms with that you can use MAM standalone from the command line:

$ mamCli-linux-x86 <command> [options]

It's also possible to run the cli directly with node/npm:

$ npm install
$ npm run cli <command> -- [options]

Note the extra '--' needed before the options.

Setting Node

The option --provider must be set in all commands. It should be set to the URL of an IOTA full node supporting POW.

Commands:

readChannel

Reads the content of a given MAM channel and printing information such as the channelRoot.

| Param | Type | Default | Description | | --- | --- | --- | --- | | channelRoot | string | | The root of the MAM channel. This is shared with others to read messages of a channel. | | seed | string | | The seed of the MAM channel. It's need to publish new messages to a MAM channel. | | mode | string | 'public' | The mode of the MAM channel. Allowed are 'public', 'private' and 'restricted' | | sideKey | string | null | The sideKey needed for MAM channels in restricted mode. This is needed to read messages from this channel and to publish new ones. |

Only channelRoot or seed are needed for reading a channel. The CLI will look for the channelRoot first and then for a seed. If both aren't given a random seed is generated.

Example

$ mamCli-linux-x86 readChannel --seed=THISISTHESEEDOFTHETICACCOUNTANDISHOULDNOTGIVEITTOANYBODYELSE --provider=https://your.favorite.node

publish

Publishes a new message to a specified channel.

| Param | Type | Default | Description | | --- | --- | --- | --- | | seed | string | | The seed of the MAM channel. | | mode | string | 'public' | The mode of the MAM channel. Allowed are 'public', 'private' and 'restricted' | | sideKey | string | null | The sideKey needed for MAM channels in restricted mode. | | toTrytes | boolean | true | Whether to convert the given text to trytes. | | content | string | | The message to publish. Remember to wrap the content in '' if it contains spaces. | | readMessages | boolean | false | Whether to read the channel's content after publishing |

Example

$ mamCli-linux-x86 publish --seed=THISISTHESEEDOFTHETICACCOUNTANDISHOULDNOTGIVEITTOANYBODYELSE --provider=https://your.favorite.node
    -content='Hello World' --readMessages

API Reference

A MAM lib for node.js

Example

const mam = require('mam.tools.js')

mam.changeMode ⇒ Promise.<ChangeModeState>

Changes the mode of a given mam state object. The state is initialized in a way, that the next message will be attached to the next root of the channel even if messages are already existent in the channel.

Kind: static property of mamClient
Returns: Promise.<ChangeModeState> - a Promise awaiting an object containing the mam state with changed mode and the channel root address of the channel in the new mode.

| Param | Type | Default | Description | | --- | --- | --- | --- | | mam | Object | | The mam state object whose mode should be changed. | | mode | string | | the mode of the MAM channel to read/write. 'public', 'restricted' and 'private' are valid. | | [sideKey] | string | null | the side key when using a restricted channel. |

mam.getRoot ⇒ string

Kind: static property of mamClient
Returns: string - the root address of the channels next message.

| Param | Type | Description | | --- | --- | --- | | mam | Object | the MAM state. |

mam.getMessages ⇒ Promise.<MessageResponse>

Retrieves all messages starting from the given channel root using given mode and sideKey.

Kind: static property of mamClient
Returns: Promise.<MessageResponse> - a Promise awaiting an Object containing the messages retrieved from the MAM channel and the next channel root.

| Param | Type | Default | Description | | --- | --- | --- | --- | | channelRoot | string | | the root address of the first message in the channel that should be retrieved. | | [mode] | string | "'public'" | the mode of the retrieved channel. | | [sideKey] | string | null | the sideKey of retrieved restricted channel. |

mam.setProvider(url)

Sets the node to use for all requests to the tangle. The given node must support pow.

Kind: static method of mamClient

| Param | Type | Description | | --- | --- | --- | | url | string | the url of the node to use. |

mam.getIota([url]) ⇒ IotaClass

Creates an Object to handle requests to the tangle. An optional url to a node can be given, by default the url set by setProvider is used.

Kind: static method of mamClient
Returns: IotaClass - the newly created iota object.

| Param | Type | Default | Description | | --- | --- | --- | --- | | [url] | string | "provider" | the url of the node to use. Default is the url set by setProvider. |

mam.createMamFrom([params]) ⇒ Promise.<MAMClient>

Initializes a module:types.MAMClient from given parameters. The default uses a randomly generated seed with a iota using the node set by setProvider to access a public MAM channel. The state is initialized in a way, that the next message will be attached to the next root of the channel even if messages are already existent in the channel.

Kind: static method of mamClient
Returns: Promise.<MAMClient> - a Promise awaiting an object containing the MAM state object, the iota client and the root address of the channel.

| Param | Type | Default | Description | | --- | --- | --- | --- | | [params] | Object | | an Object containing seed, iota client, MAM channel mode, and a sideKey if mode is 'restricted'. | | [params.seed] | string | "generateSeed()" | The seed for the MAM channels. | | [params.iota] | IotaClass | getIota() | The iota client for communication with a full node. | | [params.mode] | string | "'public'" | the mode of the MAM channel to read/write. 'public', 'restricted' and 'private' are valid. | | [params.sideKey] | string | null | the side key when using a restricted channel. |

mam.createMam([seed], [iota], [mode], [sideKey]) ⇒ Promise.<MAMClient>

Initializes a module:types.MAMClient from given parameters. The default uses a randomly generated seed with a iota using the node set by setProvider to access a public MAM channel. The state is initialized in a way, that the next message will be attached to the next root of the channel even if messages are already existent in the channel.

Kind: static method of mamClient
Returns: Promise.<MAMClient> - a Promise awaiting an object containing the MAM state object, the iota client and the root address of the channel.

| Param | Type | Default | Description | | --- | --- | --- | --- | | [seed] | string | "generateSeed()" | The seed for the MAM channels. | | [iota] | IotaClass | getIota() | The iota client for communication with a full node. | | [mode] | string | "'public'" | the mode of the MAM channel to read/write. 'public', 'restricted' and 'private' are valid. | | [sideKey] | string | null | the side key when using a restricted channel. |

mam.getChannelMessages(channelRoot, mamState) ⇒ Promise.<MessageResponse>

Retrieves all messages starting from the given channel root using mode and sideKey given by the given mamState Object.

Kind: static method of mamClient
Returns: Promise.<MessageResponse> - a Promise awaiting an Object containing the messages retrieved from the MAM channel and the next channel root.

| Param | Type | Description | | --- | --- | --- | | channelRoot | string | the root address of the first message in the channel that should be retrieved. | | mamState | Object | the initialized MAM state object. |

mam.generateSeed([length]) ⇒ string

Kind: static method of mamClient
Returns: string - a randomly generated seed with the given length.

| Param | Type | Default | Description | | --- | --- | --- | --- | | [length] | string | 81 | the wanted length of the generated seed. |

mam.publish(text, mamState, iota, [toTrytes]) ⇒ Promise.<PublishResponse>

Publishes a given text to a MAM channel using the initialized MAM state Object.

Kind: static method of mamClient
Returns: Promise.<PublishResponse> - a Promise containing an Object conaining the root and the address of the published message and the updated MAM State Object.
Asnyc:

| Param | Type | Default | Description | | --- | --- | --- | --- | | text | string | | the text to publish to the tangle. | | mamState | Object | | the MAM state Object. | | iota | IotaClass | | the initialized iota client. | | [toTrytes] | boolean | true | whether to convert the text to trytes. |


Types

The types listed below are used by the mam tools.

types~MAMClient : Object

An object containing the MAM client, root of the MAM channel and the iota client.

Kind: inner typedef of types
Properties

| Name | Type | Description | | --- | --- | --- | | iota | IotaClass | The iota client. | | mam | Object | The MAM state object used by the client lib for all requests regarding the set channel (by seed and mode). | | channelRoot | string | the root of the channels first message. |

types~ChangeModeState : Object

An object containing the changed mamState an the root to the channels first message.

Kind: inner typedef of types
Properties

| Name | Type | Description | | --- | --- | --- | | mam | Object | The changed MAM state object used by the client lib for all requests regarding the set channel (by seed and mode). | | channelRoot | string | the root of the channels first message. |

types~PublishResponse : Object

An Object conaining the root and the address of the published message and the given MAM State Object.

Kind: inner typedef of types
Properties

| Name | Type | Description | | --- | --- | --- | | root | string | the root of the published message. | | address | string | the address of the published message. | | mamState | Object | the updated MAM state Object. |

types~MessageResponse : Object

An Object containing the messages retrieved from the MAM channel and the next channel root.

Kind: inner typedef of types
Properties

| Name | Type | Description | | --- | --- | --- | | messages | Array.<string> | The messages retrieved from the MAM channel. | | nextRoot | string | the root address of the next message in the mam channel. |


© 2018 Robin Lamberti <[email protected]>. Documented by jsdoc-to-markdown.