open-index/open-npm huggingface dataset:
npm package: @procgeo/lib
Description: Procedural geometry library inspired by Houdini SOPs -- WASM bindings with full TypeScript types
Latest version: 0.1.0

# @procgeo/lib

Procedural geometry library inspired by Houdini SOPs. Runs in the browser and Node.js via WebAssembly.

## Install

```bash
npm install @procgeo/lib
```

## Usage

```js
import init, { createBox, subdivide, computeNormals, smooth } from '@procgeo/lib';

await init();

const box = createBox({ size: [2, 2, 2] });
const subdiv = subdivide(box, { depth: 2, mode: 'catmullClark' });
const smoothed = smooth(subdiv, { iterations: 3, strength: 0.5 });
const geo = computeNormals(smoothed);

console.log(`${geo.numPoints} points, ${geo.numPrims} prims`);

// Export
const obj = geo.toObj();   // OBJ string
const glb = geo.toGlb();   // GLB Uint8Array
```

## Monaco / Editor Autocomplete

Import the bundled type definitions for rich editor support:

```ts
import types from '@procgeo/lib/types';
```

## Three.js Integration

See [@procgeo/three](https://www.npmjs.com/package/@procgeo/three) for Three.js helpers.

## Available SOPs

**Creation:** `createBox`, `createGrid`, `createSphere`, `createLine`, `createCircle`, `createTube`, `createTorus`, `createIcosphere`, `createTeapot`, `createMetaball`, `createHelix`, `createSpiral`

**Manipulation:** `transform`, `computeNormals`, `subdivide`, `smooth`, `polyExtrude`, `polyBevel`, `polyWire`, `polyReduce`, `polyFill`, `clip`, `reverse`, `scatter`, `copyToPoints`, `fuse`, `color`, `voronoiFracture`, `booleanOp`, `bend`, `revolve`, `resample`, `quadRemesh`, `quadWild`, `merge`

**Attributes:** `attribCreate`, `attribDelete`, `attribRename`, `attribPromote`, `attribTransfer`, `attribCopy`, `attribRandomize`, `attribSort`, `attribBlur`, `attribFill`, `attribNoise`, `enumerateAttrib`, `measure`

**Groups:** `groupCreate`, `groupCombine`, `blast`, `deleteSop`

**Image (COP):** `copNoise`, `copConstant`, `copRamp`, `copCheckerboard`, `copBlur`, `copResize`, `copFlip`, `copMirror`, `copRotate`, `copSwirl`, `copChannelSwap`, `copComposite`, `copCustomShader`, `copLoadImage`

**Export:** `geo.toObj()`, `geo.toGlb()`
npm package: @procgeo/three
Description: Three.js bridge for ProcGeo procedural geometry
Latest version: 0.1.0

# @procgeo/three

Three.js bridge for [ProcGeo](https://www.npmjs.com/package/@procgeo/lib) procedural geometry.

Converts ProcGeo Geometry objects into Three.js `BufferGeometry`, `Mesh`, wireframe `LineSegments`, and `Points`.

## Install

```bash
npm install @procgeo/three @procgeo/lib three
```

## Usage

```js
import init, { createTorus, subdivide, computeNormals } from '@procgeo/lib';
import { toMesh, toWireframe, toPointCloud, createScene } from '@procgeo/three';

await init();

const geo = computeNormals(subdivide(createTorus(), { depth: 2, mode: 'catmullClark' }));

const { scene, animate } = createScene(document.getElementById('canvas'));
scene.add(toMesh(geo));
scene.add(toWireframe(geo, { color: 0x88aaff }));
animate();
```

## API

| Function | Returns | Description |
|---|---|---|
| `toBufferGeometry(geo, opts?)` | `THREE.BufferGeometry` | Raw buffer geometry with positions, indices, normals, colors |
| `toMesh(geo, opts?)` | `THREE.Mesh` | Mesh with auto-detected vertex colors and configurable material |
| `toWireframe(geo, opts?)` | `THREE.LineSegments` | True polygon-edge wireframe (not triangulated diagonals) |
| `toPointCloud(geo, opts?)` | `THREE.Points` | Point cloud with optional vertex colors |
| `toEdges(geo, opts?)` | `THREE.LineSegments` | Edge outline using Three.js EdgesGeometry |
| `createScene(container, opts?)` | `SceneResult` | Quick scene setup with camera, lights, and animation loop |
npm package: @prochac/gojq
Description: Go jq implementation including formatter in WASM
Author: prochac
Latest version: 0.0.4

# gojq (WASM) [![npm](https://img.shields.io/npm/v/@prochac/gojq.svg)](https://www.npmjs.com/package/@prochac/gojq)

It a package provided by Go over WASM.

It provides two methods `jqfmt` and `jq`.

Both are promise based. So you can use `await` or `then` to get the result.

```js
import init, {jqfmt, jq} from "@prochac/gojq"
```

It must be initialized before using it.

```js
init()
```

## jq

The implementation is Go implementation of `jq`

repo: https://github.com/itchyny/gojq

```js
const input = `{"foo": "bar"}`
const query = `.foo`
const result = await jq(input, query)
console.log(result) // `"bar"` (string containing a JSON string) 
console.log(JSON.parse(result)) // `bar` (string)
```


## jqfmt

`jqfmt` is the only implementation of `jq` formatter.

This package uses https://github.com/prochac/jqfmt,
which is a fork of https://github.com/noperator/jqfmt

```js
const input = `1+1`
const result = await jqfmt(input)
console.log(result) // `1 + 1`
```