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

@giancosta86/drago

v1.0.0

Published

Random sinogram generator for TypeScript

Downloads

6

Readme

drago

Random sinogram generator for TypeScript

NPM Version

Logo

🫖drago is a web assembly for 🦋TypeScript, written in 🦀Rust, at the top of a technological stack which includes chinese-format, chinese-rand and other crates; the name of this project stems from the Italian word describing one of the fabled, 🌺sublime 🫖dragons of the Eastern legends.

Its purpose is simple and elegant: generating random Chinese logograms via LogogramGenerator class - in accordance with the parameters provided by the user as a variety of thematic categories.

Installation

TypeScript

The package on NPM is:

@giancosta86/drago

The public API entirely resides in the root package index, so you shouldn't reference specific modules.

Usage

The purpose of this library is to create random Chinese logograms on demand - which can be achieved via a sequence of minimalist steps:

  1. Import the required identifiers:

    import initDrago, {
      LogogramGenerator,
      RandomParams,
    } from "@giancosta86/drago";
  2. Initialize the web assembly; in any initialization block of your client, call:

    await initDrago(/*[optional module/path/URL here]*/);
    • Note 1: for synchronous initialization, the initSync function is available as a named import.

    • Note 2: most often, you'll' want to pass a parameter related to the location of your .wasm file.

  3. Create an instance of LogogramGenerator - by calling its create static method and passing an object implementing the RandomParams interface. For example:

    const logogramGenerator = LogogramGenerator.create({
      seed: 90,
      variant: "Simplified",
      fraction: {
        denominatorRange: [1, 7],
        numeratorRange: [4, 21],
      },
      decimal: {
        integerRange: [1, 42],
        fractionalLengthRange: [1, 3],
      },
    });

    Later, you can store the instance and use it wherever you need.

    Note 1: most of the fields are optional - but at least one of the optional fields must be present; this constraint is due to the fact that LogogramGenerator requires at least one generation strategy.

    Note 2: anyway, in case of unacceptable settings, the create method will throw an object of type RandomParamsError, containing a detailed description.

    Note 3: because of limitations in the underlying implementation, you cannot have two or more independent LogogramGenerator instances: creating each instance automatically resets - to the latest value - the seed of the internal randomization engine, from which every single instance would draw its random data.

    In summary: you should have just one instance of LogogramGenerator in your client.

  4. Call logograms() whenever you need to create random logograms: the generator will randomly pick one of the provided strategies, returning the Chinese characters as a string:

    let characters: string = logogramGenerator.logograms();

    Note: the generation of characters is a safe operations - because all the validations occur when instantiating LogogramGenerator.

See also