open-index/open-npm huggingface dataset:
npm package: @picode/binary-reader
Description: Tool for reading binary data sequentially in JavaScript / TypeScript.
Author: picode7
Latest version: 1.0.0

# Binary Reader for JavaScript/TypeScript

[![npm](https://img.shields.io/npm/v/@picode/binary-reader)](https://www.npmjs.com/package/@picode/binary-reader)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/@picode/binary-reader)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/picode7/binary-reader/CI)](https://github.com/picode7/binary-reader/actions)

Tool for reading binary data sequentially in JavaScript / TypeScript

Requires [DataView.getBigInt64 support](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getBigInt64#browser_compatibility) for Int64/Uint64

## Installation

```bash
npm install bin-reader
```

## Usage

```ts
import { BinaryReader } from 'bin-reader'

const data = new BinaryReader(uint8Array)

const version = data.readUint32()
const nameLen = data.readUint8()
const name = data.readArrayAsString(nameLen)
```

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[MIT](/LICENSE)
npm package: @picode/fbx
Description: Provides an interface to use FBX data.
Author: picode7
Latest version: 0.0.3

# FBX Interface for JavaScript/TypeScript

[![npm](https://img.shields.io/npm/v/@picode/fbx)](https://www.npmjs.com/package/@picode/fbx)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/@picode/fbx)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/picode7/fbx/CI)](https://github.com/picode7/fbx/actions)

This parser will parse FBX text files and convert them into a JavaScript-Object structure.

This is work in progress, and functionality can be easily added to cover more FBX features.

## Installation

```bash
npm install @picode/fbx
```

## Usage

```ts
import { FBX, FBXAxes } from '@picode/fbx'
import * as FBXParser from 'fbx-parser'

const fbx = new FBX(FBXParser.parse(await fs.readFileSync(fbxFile)))
const upAxes = fbx.globalSettings.getUpAxes() ?? FBXAxes.Y

const model = fbx.getModel('MyModel')

const rotNode = model.getRotationNode()
const rotationX = rotNode.getX()

const rotKeyY = model.getRotationKey(upAxes)
const rotationsYTimes = rotKeyY?.getTime()
const rotationsYValues = rotKeyY?.getValue()
```

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[MIT](/LICENSE)
npm package: @picofuture/tomo-deno-telemetry-sdk
Description: Droppable SDK to initialize to instrument Deno applications. It collects traces and sends them to the specified collector URL. It follows the OpenTelemetry specification.
Author: PicoFuture
Latest version: 0.1.27
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# Tomo Deno Telemetry SDK

A simple SDK for adding OpenTelemetry-based tracing to your Deno applications.

## Installation

Import the SDK and Deno's standard HTTP server:

```ts
import { serve } from "https://deno.land/std@0.203.0/http/server.ts";
import TomoDenoTelemetry from "https://esm.sh/@picofuture/tomo-deno-telemetry-sdk@latest";
```

## Usage

1. **Initialize the Telemetry SDK:**

```ts
const tomoDenoTelemetry = new TomoDenoTelemetry({
  debug: false,
  apiKey: "your-api-key",
  serviceName: "your-service-name",
  serviceVersion: "your-service-version",
  collectorUrl: "your-collector-url",
});
```

2. **Wrap the Deno `serve` function (optional, for tracing HTTP requests):**

```ts
const wrappedServe = tomoDenoTelemetry.wrapServe(serve);
```

3. **Use `wrappedServe` instead of default Deno's serve:**

```ts
wrappedServe(async (req) => {
  const response = await fetch(
    "https://jsonplaceholder.typicode.com/posts/1",
    {
      method: "GET",
      headers: { "Accept": "application/json" },
    }
  );

  const data = await response.json();

  return new Response(data, {
    status: 200,
    headers: { "Content-Type": "text/plain" },
  });
});
```

## Features
- Automatic tracing for HTTP server requests (when using `wrapServe`)
- Automatic tracing of outgoing HTTP requests
- Easy integration with OpenTelemetry-compatible collectors

## Configuration
- `debug`: Enable/Disable console debugging (required)
- `apiKey`: Your telemetry API key (required)
- `serviceName`: Name of your service (required)
- `serviceVersion`: Version of your service (required)
- `collectorUrl`: URL of your OpenTelemetry collector (required)

## License
MIT
npm package: @picojs/pico
Description: Ultra-tiny router for Cloudflare Workers and Deno
Author: Yusuke Wada
Latest version: 0.3.2

# Pico

[![Version](https://img.shields.io/npm/v/@picojs/pico.svg)](https://npmjs.com/package/@picojs/pico)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@picojs/pico)](https://bundlephobia.com/result?p=@picojs/pico)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@picojs/pico)](https://bundlephobia.com/result?p=@picojs/pico)

Pico is an ultra-tiny ([~400 bytes](https://bundlephobia.com/package/@picojs/pico) compressed) router using `URLPattern`.
Pico works on Cloudflare Workers and Deno.

**This project is still experimental. The API might be changed.**

## Install

```
npm i @picojs/pico
// Or
yarn add @picojs/pico
```

Install `@cloudflare/workers-types` for supporting the types.

```
npm i -D @cloudflare/workers-types
// Or
yarn add -D @cloudflare/workers-types
```

## Example

```ts
// index.ts
import { Pico } from '@picojs/pico'

// create a router object, `new` is not needed
const router = Pico()

// handle a GET request and return a TEXT response
router.get('/', (c) => new Response('Hello Pico!'))

// capture path parameters and return a JSON response
router.post('/entry/:id', ({ result }) => {
  const { id } = result.pathname.groups
  return Response.json({
    'your id is': id,
  })
})

// return a primitive Response object
router.get('/money', () => new Response('Payment required', { status: 402 }))

// capture path parameters with RegExp
router.get('/post/:date(\\d+)/:title([a-z]+)', ({ result }) => {
  const { date, title } = result.pathname.groups
  return Response.json({ post: { date, title } })
})

// get query parameters
router.get('/search', ({ result }) => {
  const query = new URLSearchParams(result.search.input).get('q')
  return new Response(`Your query is ${query}`)
})

// handle a PURGE method and return a Redirect response
router.on('PURGE', '/cache', () => {
  return new Response(null, {
    status: 302,
    headers: {
      Location: '/',
    },
  })
})

// get environment variables for Cloudflare Workers
router.get('/secret', ({ env }) => {
  console.log(env.TOKEN)
  return new Response('Welcome!')
})

// use an executionContext for Cloudflare Workers
router.get('/log', ({ executionContext, req }) => {
  executionContext.waitUntil((async () => console.log(`You access ${req.url.toString()}`))())
  return new Response('log will be shown')
})

// return a custom 404 response
router.all('*', () => new Response('Custom 404', { status: 404 }))

// export the app for Cloudflare Workers
export default router
```

## Develop with Wrangler

```
wrangler dev index.ts
```

## Deploy to Cloudflare Workers

```
wrangler publish index.ts
```

## Deno

```ts
import { serve } from 'https://deno.land/std/http/server.ts'
import { Pico } from 'https://esm.sh/@picojs/pico'

const router = Pico()
router.get('/', () => new Response('Hi Deno!'))

//...

serve(router.fetch)
```

```
deno run --allow-net pico.ts
```

## Related projects

- Hono <https://hono.dev>
- itty-router <https://github.com/kwhitley/itty-router>

## Author

Yusuke Wada <https://github.com/yusukebe>

## License

MIT
npm package: @picopath/http-server
Description: Http/Https/Http2 Server
Author: Ashley G Ramdass
Latest version: 0.2.0

`picoserver` is a HTTP/HTTPS/HTTP2 capable server. This server is for development purposes only and uses Nodejs (currently) experimental Http2 module.

Motivation: This is a simple rewrite of an older project of mine that used 'now deprecated' http2 and https npm modules. It was originally inspired from [simplehttp2server](https://github.com/GoogleChromeLabs/simplehttp2server).

# Installation

`picoserver` can be installed using npm or other nodejs package managers.

```
  npm install -g @picopath/http-server
```

# Usage

Run the picoserver command from the directory you want to serve and go to http://localhost:5000

```
  Usage: picoserver [options]

  Options:

    -V, --version           output the version number
    -r, --root <directory>  Root directory - default: current directory
    -p, --port <port>       Port (default: 5000)
    --no-log                No logging
    --level <level>         Log level (default: common)
    --no-spa                Do not treat root directory as a single page application
    --no-compression        Disable compression
    --no-redirect           Do not redirect http to https
    --https-port <port>     Port to use for https
    --https-cert <file>     Path to https cert file
    --https-key <file>      Path to https key file
    --no-http2              Do not use http2 protocol for https
    -h, --help              output usage information
```

# License

MIT
npm package: @picoruby/picorbc
Description: PicoRuby Compiler (picorbc) - Cross-platform Ruby to mruby bytecode compiler
Author: HASUMI Hitoshi
Latest version: 3.4.5

# @picoruby/picorbc

Cross-platform PicoRuby Compiler (picorbc) - Compile Ruby scripts to mruby bytecode (.mrb files)

## Installation

```bash
npm install -g @picoruby/picorbc
```

## Usage

```bash
picorbc script.rb
```

This will generate `script.mrb` in the same directory.

### Options

```bash
picorbc [switches] programfile...

switches:
  -c           check syntax only
  -o<outfile>  place the output into <outfile>; required for multi-files
  -v           print version number, then turn on verbose mode
  -g           produce debugging information
  -B<symbol>   binary <symbol> output in C language format
  -S           dump C struct (requires -B)
  -s           define <symbol> as static variable
  --remove-lv  remove local variables
  --no-ext-ops prohibit using OP_EXTs
  --no-optimize disable peephole optimization
  --verbose    run at verbose mode
  --version    print the version
  --copyright  print the copyright
```

## Examples

```bash
# Compile a single Ruby file
picorbc hello.rb

# Specify output file
picorbc -o output.mrb script.rb

# Compile multiple files
picorbc -o combined.mrb file1.rb file2.rb file3.rb

# Check syntax only
picorbc -c script.rb

# Verbose mode
picorbc -v script.rb
```

## About PicoRuby

PicoRuby is an mruby ecosystem which is:
- Lightweight and memory efficient
- Suitable for embedded systems like microcontrollers and browser
- Compatible with mruby bytecode

Learn more at [https://github.com/picoruby/picoruby](https://github.com/picoruby/picoruby)

## License

MIT
npm package: @picosearch/bk-tree
Description: Simple, zero dependency, type-safe implementation of a BK-Tree data structure.
Author: Sebastian Kussl
Latest version: 1.1.0

# BK-Tree

This package implements a simple BK-Tree data structure. A BK-Tree is a data structure for fuzzy string matching using a distance function like Levenshtein distance.

## Installation

```bash
pnpm add @picosearch/bk-tree
```

## Usage

### BKTree

Use `lookup` to find the closest word to the query and `find` to find all words within a given distance.

```ts
import { BKTree } from '@picosearch/bk-tree';

const bkTree = new BKTree();
bkTree.insert('abc');
bkTree.insert('abd');

console.log(bkTree.find('ab', { maxError: 1 })); // ['abc', 'abd']
console.log(bkTree.lookup('ab')); // 'abc'
```

### toJSON + fromJSON

You can serialize the BK-Tree to a JSON string and deserialize it back to a BK-Tree.

```ts
import { BKTree } from '@picosearch/bk-tree';

const bkTree = new BKTree();
bkTree.insert('abc');
bkTree.insert('abd');

const jsonStr = bkTree.toJSON();
const newBKTree = BKTree.fromJSON(jsonStr);

console.log(newBKTree.find('ab', { maxError: 1 })); // ['abc', 'abd']
```

### Custom Distance Function

You can provide a custom distance function to the constructor. The distance function must satisfy the triangle inequality property. 

```ts
import { BKTree } from '@picosearch/bk-tree';
import type { DistanceFunction } from '@picosearch/bk-tree';

const customDistanceFunction: DistanceFunction = (a, b): number => {
  // custom distance function
  return 0;
};

const bkTree = new BKTree({
  getDistance: customDistanceFunction,
});
```
npm package: @picosearch/language-english
Description: English text preprocessor for picosearch.
Latest version: 1.0.1

# English Text Preprocessor

This module provides basic text preprocessing functions for English text, including tokenization, punctuation removal, stopword filtering, and stemming.

## Functions

### tokenizer(doc: string): string[]

This function takes a string as input and returns an array of tokens (words) extracted from by matching it against word characters. If the input is not a string, it returns an empty array.

### analyzer(token: string): string

This function processes a single token by removing punctuation and converting it to lowercase. It then checks the token against a list of English stopwords and removes it if found. If not, it stems the token using the porter stemmer.

## Dependencies

- `porter-stemmer`: English word stemmer.
- `stopword`: A library containing a list of stopwords for various languages, including English.
npm package: @picosearch/language-german
Description: German text preprocessor for picosearch.
Latest version: 1.0.1

# German Text Preprocessor

This module provides basic text preprocessing functions for German text, including tokenization, punctuation removal, stopword filtering, and stemming.

## Functions

### tokenizer(doc: string): string[]

This function takes a string as input and returns an array of tokens (words) extracted from by matching it against word characters. If the input is not a string, it returns an empty array.

### analyzer(token: string): string

This function processes a single token by removing punctuation and converting it to lowercase. It then checks the token against a list of German stopwords and removes it if found. If not, it stems the token using the `stem` function from `./cistem`.

## Dependencies

- `cistem`: A module for stemming German words.
- `stopword`: A library containing a list of stopwords for various languages, including German.

# Attributions

- CISTEM: Leonie Weißweiler, MIT (https://github.com/LeonieWeissweiler/CISTEM)
npm package: @picosearch/radix-bk-tree
Description: Zero dependency, type-safe implementation data structure that mixes the properties of a radix tree and a BK-Tree.
Author: Sebastian Kussl
Latest version: 0.2.0

# RadixBKTreeMap

This package implements a merge of a RadixTree and a BK-Tree with the goal of having a space-efficient data structure that performs well for both prefix and fuzzy search. Its main purpose is the use in Picosearch.

The RadixTree is extended by adding edges on leaf nodes that create a BK-Tree. The root of the BK-Tree is the first inserted value.

![Example Tree](sample-tree.png)

**Advantages**

- space efficiency
- fast prefix search and fuzzy search in one data structure
- it is also possible to insert values only into the radix tree or only into the BK-Tree, i.e. some words are only searchable by prefix/exact match and some words are only searchable by fuzzy search


**Disadvantages**

- complexity
- fuzzy search (and insertion into the BK-Tree) is not as fast as a normal BK-Tree because words need to be reconstructed by climbing up the RadixTree to the root
- deleting nodes is not possible without rebuilding the BK-Tree part. Currently deletion is not supported at all

## Installation

```bash
pnpm add @picosearch/radix-bk-tree
```

## Usage

### insert

```ts
import { RadixBKTreeMap } from '@picosearch/radix-bk-tree';

const radixBKTreeMap = new RadixBKTreeMap<number>();
radixBKTreeMap.insert('abc', 1);
radixBKTreeMap.insert('abd', 2);

console.log(radixBKTreeMap.lookup('abc')); // [1]
console.log(radixBKTreeMap.lookup('ae')); // null
```

If no value is provided, the key will only be searchable by `getFuzzyMatches`. If you only want to search for prefix matches, you can use `insertNoFuzzy`.

### getPrefixMatches

```ts
radixBKTreeMap.getPrefixMatches('ab'); // ['abc', 'abd']
```

### getFuzzyMatches

```ts
radixBKTreeMap.getFuzzyMatches('ab', { maxError: 1 }); // ['abc', 'abd']
```

### toJSON + fromJSON

```ts
import { RadixBKTreeMap } from '@picosearch/radix-bk-tree';

const radixBKTreeMap = new RadixBKTreeMap<number>();
radixBKTreeMap.insert('abc', 1);
radixBKTreeMap.insert('abd', 2);

const jsonStr = radixBKTreeMap.toJSON();
const newRadixBKTreeMap = RadixBKTreeMap.fromJSON(jsonStr);

console.log(newRadixBKTreeMap.lookup('abc')); // [1]
console.log(newRadixBKTreeMap.lookup('ae')); // null
```
npm package: @picosearch/radix-tree
Description: Simple, zero dependency, type-safe implementation of a radix tree data structure.
Author: Sebastian Kussl
Latest version: 0.1.1

## RadixTree

This package implements a RadixTree(-Map) data structure.

## Installation

```bash
pnpm add @picosearch/radix-tree
```

## Usage

### RadixTreeMap

When using `RadixTreeMap` you can pass one or more values for a key.

```ts
import { RadixTreeMap } from '@picosearch/radix-tree';

const radixTreeMap = new RadixTreeMap<number>();
radixTreeMap.insert('abc', 1);
radixTreeMap.insert('abd', 2);

console.log(radixTreeMap.lookup('abc')); // [1]
console.log(radixTreeMap.lookup('ae')); // null
```

### RadixTree

When using `RadixTree` you cannot pass values for a key. Instead of `lookup` you can use `has` to check if a key exists.

```ts
import { RadixTree } from '@picosearch/radix-tree';

const radixTree = new RadixTree();
radixTree.insert('abc');
radixTree.insert('abd');

console.log(radixTree.has('abc')); // true
console.log(radixTree.has('ae')); // false
```

### toJSON + fromJSON

```ts
import { RadixTree } from '@picosearch/radix-tree';

const radixTree = new RadixTree();
radixTree.insert('abc');
radixTree.insert('abd');

const jsonStr = radixTree.toJSON();
const newRadixTree = RadixTree.fromJSON(jsonStr);

console.log(newRadixTree.has('abc')); // true
console.log(newRadixTree.has('ae')); // false
```

### getFuzzyMatches

```ts
import { RadixTree } from '@picosearch/radix-tree';

const radixTree = new RadixTree();
radixTree.insert('abc');
radixTree.insert('abd');

console.log(radixTree.getFuzzyMatches('ab', { maxErrors: 1 })); // ['abc', 'abd']
```

Please note that a RadixTree is not optimized for fuzzy search and this function implements a dynamic programming approach to compute the edit distance for each path in the RadixTree. This approach is faster than a naive implementation, but for larger data sets you should consider using other data structures like a BK-Tree.
npm package: @picosearch/trie
Description: Simple, zero dependency, type-safe implementation of a trie data structure.
Author: Sebastian Kussl
Latest version: 0.1.1

# Trie

This package implements a simple Trie(-Map) data structure.

## Installation

```bash
pnpm add @picosearch/trie
```

## Usage

### TrieMap

When using `TrieMap` you can pass one or more values for a key.

```ts
import { TrieMap } from '@picosearch/trie';

const trieMap = new TrieMap<number>();
trieMap.insert('abc', 1);
trieMap.insert('abd', 2);

console.log(trieMap.lookup('abc')); // [1]
console.log(trieMap.lookup('ae')); // null
```

### Trie

When using `Trie` you cannot pass values for a key. Instead of `lookup` you can use `has` to check if a key exists.

```ts
import { Trie } from '@picosearch/trie';

const trie = new Trie();
trie.insert('abc');
trie.insert('abd');

console.log(trie.has('abc')); // true
console.log(trie.has('ae')); // false
```

### toJSON + fromJSON

```ts
import { Trie } from '@picosearch/trie';

const trie = new Trie();
trie.insert('abc');
trie.insert('abd');

const jsonStr = trie.toJSON();
const newTrie = Trie.fromJSON(jsonStr);

console.log(newTrie.has('abc')); // true
console.log(newTrie.has('ae')); // false
```

### getFuzzyMatches

```ts
import { Trie } from '@picosearch/trie';

const trie = new Trie();
trie.insert('abc');
trie.insert('abd');

console.log(trie.getFuzzyMatches('ab', { maxErrors: 1 })); // ['abc', 'abd']
```

Please note that a Trie is not optimized for fuzzy search and this function implements a dynamic programming approach to compute the edit distance for each path in the Trie. This approach is faster than a naive implementation, but for larger data sets you should consider using other data structures like a BK-Tree.
npm package: @picosix/facebook-sdk
Description: Facebook SDK
Author: Tuan Nguyen
Latest version: 0.1.36

# Facebook SDK &middot; [![npm](https://img.shields.io/npm/v/npm.svg?style=flat-square)](https://www.npmjs.com/package/npm) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/your/your-project/blob/master/LICENSE)

> Unofficial Facebook SDK for NodeJS

Communicate Facebook Graph API by sugar syntax

## Installing / Getting started

```shell
$ yarn add @picosix/facebook-sdk
```

## Licensing

Copyright 2018 Tuan Nguyen

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @picosix/rest-query-parser
Description: Parse your rest query parameters by your way
Author: Tuan Nguyen
Latest version: 1.0.0

# @picosix/rest-query-parser

> Parse your rest query parameters by your way

## Quick Started

### ASAP

```js
...

const restQueryParser = require("@picosix/rest-query-parser");

...

// Use environment variables
server.use(restQueryParser());

...
```

### With your configurations

```js
...

const restQueryParser = require("@picosix/rest-query-parser");

...

// Default options
const restQueryParserOpts = {
  maxLimit: 50,
  defaultLimit:50,
  maxPage: 10
};
server.use(restQueryParser(restQueryParserOpts));

...
```

## How to use

### Setup

```js
...

const express = require("express")
const restQueryParser = require("@picosix/rest-query-parser");

...

const server = express()
server.use(restQueryParser());

server.get("/users", (req, res) => {
  return res.json({
    _restQueryParsed: req._restQueryParsed,
    query: req.query,
  })
})

server.listen(9001)

...
```

### Test

```shell
$ curl http://localhost:9001/users?_limit=10&_page=1&sort=-updatedAt&createdAt[from]=2019-02-10T17:00:00.000Z&createdAt[to]=2019-02-11T16:59:59.999Z
{"_restQueryParsed":{"limit":10,"skip":0,"sort":{"updatedAt":-1}},"query":{"createdAt":{"$gte":"2019-02-10T17:00:00.000Z","$lte":"2019-02-11T16:59:59.999Z"}}}
```

## Environment variables

- `process.env.DEFAULT_REST_QUERY_MAX_LIMIT` (default is `100`): Restrict retuned records on one query. You don't want someone dump your database with one request with query like this `?_limit=999999`.

- `process.env.DEFAULT_REST_QUERY_DEFAULT_LIMIT` (default is `20`): Set default limit if `_limit` is missing.

- `process.env.DEFAULT_REST_QUERY_MAX_PAGE` (default is `10`): Restrict total retuned records. If you defined `DEFAULT_REST_QUERY_MAX_LIMIT` to be `100` and `DEFAULT_REST_QUERY_MAX_PAGE` to be `10`. Not matter how user requested, the total returned records will be `1000 (100*10)`.
npm package: @picostack/core
Description: Picostack baseline
Author: estrattonbailey
Latest version: 0.0.4

# @picostack/core

```
<script>var pico={components:{}};pico.add=(n,o)=>pico.components[n]=o;var s=document.createElement('script');s.src='https://unpkg.com/@picostack/core';document.currentScript.replaceWith(s);</script>
```
npm package: @picostate/react
Description: 600 byte picostate adapter for React
Author: estrattonbailey
Latest version: 3.0.1

# @picostate/react

[picostate](https://github.com/estrattonbailey/picostate) adapter for React.
**750 bytes gzipped.**

### Features

- familiar Redux-like API
- no boilerplate
- hooks!
- all the benefits of
  [picostate](https://github.com/estrattonbailey/picostate#features)

### Install

```
npm i @picostate/react --save
```

# Usage

```javascript
import React from "react";
import { render } from "react-dom";
import createStore from "picostate";
import { Picostate, connect } from "@picostate/react";

const store = createStore({ count: 0 });

function increment(hydrate) {
  hydrate(state => ({ count: state.count + 1 }))();
}

function decrement(hydrate) {
  hydrate(state => ({ count: state.count - 1 }))();
}

const Counter = connect(
  state => ({ count: state.count }),
  { increment, decrement }
)(props => {
  return (
    <div>
      <h1>The count is {props.count}</h1>
      <button onClick={props.increment}>+</button>
      <button onClick={props.decrement}>-</button>
    </div>
  );
});

function CounterHook(props) {
  const [state, actions] = usePicostate({ increment, decrement });

  return (
    <div>
      <h1>The count is {state.count}</h1>
      <button onClick={actions.increment}>+</button>
      <button onClick={actions.decrement}>-</button>
    </div>
  );
}

render(
  <Picostate store={store}>
    <Counter />
    <CounterHook />
  </Picostate>,
  document.getElementById("root")
);
```

## License

MIT License © [Eric Bailey](https://estrattonbailey.com)
npm package: @picoswap/sdk
Description: 🛠 An SDK for building applications on top of Pico
Latest version: 1.0.23

# Pico SDK

[![Unit Tests](https://github.com/picoswap/pico-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/picoswap/pico-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/picoswap/pico-sdk/workflows/Lint/badge.svg)](https://github.com/picoswap/pico-sdk/actions?query=workflow%3ALint)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![npm version](https://img.shields.io/npm/v/@picoswap/sdk/latest.svg)](https://www.npmjs.com/package/@picoswap/sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@picoswap/sdk/latest.svg)](https://bundlephobia.com/result?p=@picoswap/sdk@latest)

In-depth documentation on this SDK is available at [pico.exchange](https://pico.exchange/docs/v2/SDK/getting-started/).
npm package: @picoswap/sdk-core
Description: ⚒️ An SDK for building applications on top of Pico
Latest version: 1.0.18

# Pico SDK Core

[![Unit Tests](https://github.com/picoswap/pico-sdk-core/workflows/Unit%20Tests/badge.svg)](https://github.com/picoswap/pico-sdk-core/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/picoswap/pico-sdk-core/workflows/Lint/badge.svg)](https://github.com/picoswap/pico-sdk-core/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@picoswap/sdk-core/latest.svg)](https://www.npmjs.com/package/@picoswap/sdk-core/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@picoswap/sdk-core/latest.svg)](https://bundlephobia.com/result?p=@picoswap/sdk-core@latest)

This code is shared across Pico TypeScript SDKs.
npm package: @picoturtle/picoturtle-server
Description: [![Build Status](https://travis-ci.org/abhishekmishra/picoturtle-server.svg?branch=master)](https://travis-ci.org/abhishekmishra/picoturtle-server)
Latest version: 0.0.15

[![Build Status](https://travis-ci.org/abhishekmishra/picoturtle-server.svg?branch=master)](https://travis-ci.org/abhishekmishra/picoturtle-server)

# picoturtle-server

PicoTurtle Server implements a REST API which:
- Allows turtle clients to create a turtle, and send draw commands.
- Maintains state for turtles.
- Allows canvas clients to connect and get draw commands for a turtle.
npm package: @picoturtle/picoturtle-web-canvas
Description: PicoTurtle Web Canvas
Author: Abhishek Mishra
Latest version: 0.0.13

[![Build Status](https://travis-ci.org/abhishekmishra/picoturtle-web-canvas.svg?branch=master)](https://travis-ci.org/abhishekmishra/picoturtle-web-canvas)

# picoturtle-web-canvas
This library provides an API to draw PicoTurtle commands for a turtle on an HTML5 canvas.
It also includes a static web app to be used when hosting this canvas standalone.