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

@dstanesc/wasm-chunking-fastcdc-node

v0.1.1

Published

This crate generates WebAssembly bindings to the FastCDC content defined slicing library

Downloads

125

Readme

Wasm Chunking Fastcdc

This crate generates WebAssembly bindings to the FastCDC content defined slicing library.

Install for nodejs usage

npm install @dstanesc/wasm-chunking-fastcdc-node

Install for bundler usage

npm install @dstanesc/wasm-chunking-fastcdc-webpack

Usage TypeScript

//import { compute_chunks } from "@dstanesc/wasm-chunking-fastcdc-node"
import { compute_chunks } from "@dstanesc/wasm-chunking-fastcdc-webpack"
const buf: Uint8Array  = ...
// chunking  spec: min_size 16 KB, avg size 32 KB, max size 64 KB
const offsets: Uint32Array = compute_chunks(buf, 16384, 32768, 65536)   

Wasm build requirements

Wasm build

wasm-pack build --out-dir pkg/webpack --out-name chunking --target bundler --scope dstanesc
wasm-pack build --out-dir pkg/node --out-name chunking --target nodejs --scope dstanesc

Wasm test

Interactive mode, eg. to check debugging info in the console

wasm-pack test --firefox

Headless mode

wasm-pack test --headless --firefox

Pack for local usage

npm pack pkg/node/
npm pack pkg/webpack/

Rust API

Function wasm_chunking_fastcdc::compute_chunks

pub fn compute_chunks(
    source: &[u8], 
    min_size: u32, 
    avg_size: u32, 
    max_size: u32
) -> Result<Vec<u32>, RangeError>

Compute chunks from a given slice of bytes.

The min_size specifies the preferred minimum chunk size, max_size the preferred maximum chunk size; the avg_size is the desired “normal size” of the chunks. The smallest acceptable min_size is 64 bytes and likewise 256 bytes and 1024 bytes for avg_size and respectively max_size

A js_sys::RangeError is returned when the above chunking specification is out of range.

Example:

use wasm_chunking_fastcdc::compute_chunks;
let data: Vec<u8> = br"Lorem ipsum dolor sit amet, consectetur adipiscing elit...put more bits in here...".to_vec();
let slice: &[u8] = &data;
let min_size: u32 = 64;
let avg_size: u32 = 256;
let max_size: u32 = 1024;
let offsets: Vec<u32> = compute_chunks(slice, min_size, avg_size, max_size).unwrap();

License

Licensed under either Apache 2.0 or MIT at your option.