open-index/open-npm huggingface dataset:
npm package: @maticoapp/geostats
Description: <div align="center">
Latest version: 0.1.5

<div align="center">

  <h1><code>wasm-pack-template</code></h1>

  <strong>A template for kick starting a Rust and WebAssembly project using <a href="https://github.com/rustwasm/wasm-pack">wasm-pack</a>.</strong>

  <p>
    <a href="https://travis-ci.org/rustwasm/wasm-pack-template"><img src="https://img.shields.io/travis/rustwasm/wasm-pack-template.svg?style=flat-square" alt="Build Status" /></a>
  </p>

  <h3>
    <a href="https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html">Tutorial</a>
    <span> | </span>
    <a href="https://discordapp.com/channels/442252698964721669/443151097398296587">Chat</a>
  </h3>

  <sub>Built with 🦀🕸 by <a href="https://rustwasm.github.io/">The Rust and WebAssembly Working Group</a></sub>
</div>

## About

[**📚 Read this template tutorial! 📚**][template-docs]

This template is designed for compiling Rust libraries into WebAssembly and
publishing the resulting package to NPM.

Be sure to check out [other `wasm-pack` tutorials online][tutorials] for other
templates and usages of `wasm-pack`.

[tutorials]: https://rustwasm.github.io/docs/wasm-pack/tutorials/index.html
[template-docs]: https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html

## 🚴 Usage

### 🐑 Use `cargo generate` to Clone this Template

[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate)

```
cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project
cd my-project
```

### 🛠️ Build with `wasm-pack build`

```
wasm-pack build
```

### 🔬 Test in Headless Browsers with `wasm-pack test`

```
wasm-pack test --headless --firefox
```

### 🎁 Publish to NPM with `wasm-pack publish`

```
wasm-pack publish
```

## 🔋 Batteries Included

* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating
  between WebAssembly and JavaScript.
* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook)
  for logging panic messages to the developer console.
* [`wee_alloc`](https://github.com/rustwasm/wee_alloc), an allocator optimized
  for small code size.
* `LICENSE-APACHE` and `LICENSE-MIT`: most Rust projects are licensed this way, so these are included for you

## License

Licensed under either of

* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.
npm package: @maticoapp/matico_spec
Description: The MaticoSpec defines how we specify an MaticoApp, from what panes should be on what pages to what datasets should be loaded and from where. The specification is written in Rust to ensure that we have a strickly specified and typechecked specification. M
Latest version: 0.1.1

# MaticoSpec 

The MaticoSpec defines how we specify an MaticoApp, from what panes should be on what pages to what datasets should be loaded and from where. The specification is written in Rust to ensure that we have a strickly specified and typechecked specification. Most users and developers will interact with the spec using language specific tools built on top of the rust code. For example, when building a frontend cpplication, the spec produces TypescriptTypes for each of it's components along with a WASM based validation function for each. See below for exampels 


## Building the spec for use in Rust 

To build the specification library for use in Rust, first [install Rust](https://postgis.net/install/), then run 

```bash
cargo build 
```

## Testing

We are working on expanding the test suite around the specification. To run the existing tests, simply run 

```bash
cargo test 
```

## Building the WASM library 

To generate the javacsript module that allows you to interact with the spec in javascript, you will first need to install wasm-pack, then run

```
wasm-pack build --scope=maticoapp
```

this will produce a pkg directory with the javascript module.

## Using the javascript / wasm module 

To use the module you will need to

1. Add @maticoapp/matico\_spec to your project dependencies 

```bash
yarn add @maticoapp/matico_spec 

```

then import the WASM module. This might vary a little dending on what build system you are using. You can see an example of how to do this in the MaticoComponents project in the useValidator hook


```typescript 
import { useEffect, useState } from 'react'

export const useValidator = () => {
  const [validator, setValidator] = useState<any>(null)
  const [validatorReady, setValidatorReady] = useState<boolean>(false)
  const [error, setError] = useState<any | undefined>(undefined)

  useEffect(() => {
    let f = async () => {
      try {
        const wasm = await import( /*webpackChunkName:"spec"*/ '@maticoapp/matico_spec');
        setValidator(wasm)
        setValidatorReady(true)
      } catch (err) {
        setError(`failed to load wasm: ${err}`)
        console.log("unexpected error in load wasm ", err);
      }
    };
    f();
  }, []);
  return { validator, validatorReady, error }
```

You can also just install @maticoapp/matico\_components and use the hook directly.