{"id":30811723,"url":"https://github.com/cu1ch3n/typ-how","last_synced_at":"2025-09-06T06:48:28.817Z","repository":{"id":310703392,"uuid":"1039055722","full_name":"cu1ch3n/typ-how","owner":"cu1ch3n","description":"A online playground to explore with type Inference algorithms","archived":false,"fork":false,"pushed_at":"2025-08-30T09:52:42.000Z","size":770,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T11:26:56.692Z","etag":null,"topics":["type-inference","vite"],"latest_commit_sha":null,"homepage":"https://typ.how","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cu1ch3n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-16T11:38:09.000Z","updated_at":"2025-08-30T09:52:45.000Z","dependencies_parsed_at":"2025-08-19T19:33:28.484Z","dependency_job_id":"57ccb282-9c41-446c-832f-c41359e42afc","html_url":"https://github.com/cu1ch3n/typ-how","commit_stats":null,"previous_names":["cu1ch3n/type-inference-zoo-frontend","cu1ch3n/type-inference-playground","cu1ch3n/typ-how"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cu1ch3n/typ-how","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cu1ch3n%2Ftyp-how","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cu1ch3n%2Ftyp-how/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cu1ch3n%2Ftyp-how/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cu1ch3n%2Ftyp-how/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cu1ch3n","download_url":"https://codeload.github.com/cu1ch3n/typ-how/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cu1ch3n%2Ftyp-how/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273868143,"owners_count":25182423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["type-inference","vite"],"created_at":"2025-09-06T06:48:25.560Z","updated_at":"2025-09-06T06:48:28.804Z","avatar_url":"https://github.com/cu1ch3n.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Typ.How - An Interactive Type Inference Playground\n\n[![Build Status](https://github.com/cu1ch3n/typ-how/actions/workflows/build.yml/badge.svg)](https://github.com/cu1ch3n/typ-how/actions)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![React](https://img.shields.io/badge/React-20232A?style=flat\u0026logo=react\u0026logoColor=61DAFB)](https://reactjs.org/)\n[![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat\u0026logo=vite\u0026logoColor=white)](https://vitejs.dev/)\n\nA modern, extensible frontend playground for type inference algorithms available at [typ.how](https://typ.how/). This project serves as a general-purpose frontend that can work with different WebAssembly type inference engines. The default engine is [type-inference-zoo-wasm](https://github.com/cu1ch3n/type-inference-zoo-wasm), but you can easily switch to other WASM modules or even private implementations.\n\n## Features\n\n- **Flexible WASM Integration**: Support for multiple type inference engines via WebAssembly\n- **Configurable Sources**: Switch between different WASM modules including private/authenticated sources\n- **Interactive Playground**: Real-time type inference with step-by-step visualization\n- **Modern UI**: Built with React, TypeScript, and Tailwind CSS\n- **Extensible Architecture**: Easy to add new algorithms\n\n## WASM Engine Configuration\n\nTyp.How is designed to work with any compatible WebAssembly type inference engine. By default, it uses [type-inference-zoo-wasm](https://github.com/cu1ch3n/type-inference-zoo-wasm), but you can easily configure it to use different engines.\n\n### Adding Custom WASM Engines\n\nYou can add your own WASM engines (clicking the wasm button in the navbar):\n\n1. **Public WASM Files**: Simply provide a URL to your WASM file\n2. **Private/Authenticated Sources**: Configure authentication headers or tokens\n3. **Local Development**: Upload WASM files directly from your machine, or you can serve your WASM files locally with some HTTP server\n\n### Authentication Support\n\nTyp.How supports various authentication methods for private WASM sources:\n\n- **Bearer Token**: Standard OAuth/API token authentication\n- **Custom Headers**: Any custom authentication headers\n- **Pre-signed URLs**: For cloud storage with temporary access\n\n### WASM Engine Requirements\n\nYour WASM engine should implement the following command-line interface:\n\n```bash\n# Get metadata about available algorithms\nwasm-exe --meta\n\n# Run type inference\nwasm-exe --typing \u003calgorithm\u003e [--variant \u003cvariant\u003e] \u003cexpression\u003e\n\n# Run subtyping check\nwasm-exe --subtyping \u003calgorithm\u003e [--variant \u003cvariant\u003e] \u003ctype1\u003e \u003ctype2\u003e\n```\n\nThe engine should output JSON responses for programmatic consumption.\n\n### Sharing Configurations\n\nYou can share WASM configurations using subscription URLs. Typ.How supports `infer://` URLs (which is just base64-encoded data)\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+ \n- npm or bun\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/cu1ch3n/typ-how.git\ncd typ-how\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n```\n\n### Building\n\n```bash\n# Build for production\nnpm run build\n\n# Preview production build\nnpm run preview\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcu1ch3n%2Ftyp-how","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcu1ch3n%2Ftyp-how","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcu1ch3n%2Ftyp-how/lists"}