{"id":13520106,"url":"https://github.com/nickzuber/infrared","last_synced_at":"2025-05-07T01:43:38.633Z","repository":{"id":51957726,"uuid":"76605646","full_name":"nickzuber/infrared","owner":"nickzuber","description":":sparkles::rocket: Blazing fast, inferred static type checker for JavaScript.","archived":false,"fork":false,"pushed_at":"2021-05-08T18:52:38.000Z","size":2435,"stargazers_count":47,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-24T14:02:34.492Z","etag":null,"topics":["cli","compiler","configurable","es6","fast","javascript","parser","productivity","static-analysis","tool","type-checking","zero-configuration"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickzuber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-15T23:56:27.000Z","updated_at":"2023-01-21T23:36:11.000Z","dependencies_parsed_at":"2022-09-17T02:23:06.620Z","dependency_job_id":null,"html_url":"https://github.com/nickzuber/infrared","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickzuber%2Finfrared","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickzuber%2Finfrared/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickzuber%2Finfrared/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickzuber%2Finfrared/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickzuber","download_url":"https://codeload.github.com/nickzuber/infrared/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252495266,"owners_count":21757228,"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","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":["cli","compiler","configurable","es6","fast","javascript","parser","productivity","static-analysis","tool","type-checking","zero-configuration"],"created_at":"2024-08-01T05:02:11.556Z","updated_at":"2025-05-07T01:43:38.609Z","avatar_url":"https://github.com/nickzuber.png","language":"OCaml","funding_links":[],"categories":["OCaml"],"sub_categories":[],"readme":"# Infrared \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/build-passing*-brightgreen.svg\" /\u003e\u003c/a\u003e \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/project-active-brightgreen.svg\" /\u003e\u003c/a\u003e \u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT%20Licence-blue.svg\" /\u003e\u003c/a\u003e\n\n\u003e Blazing fast, light-weight, inferred static type checker for JavaScript.\n\nInfrared is an configurable \u0026 efficient static type checker for JavaScript. This is done by statically inferring a [fluid type system](#what-is-a-fluid-type-system) onto your entire program – tracking the types of your variables as they change – and raising type errors before they happen at runtime.\n\n## What is a Fluid Type System?\n\nA fluid type system is no foreign idea – its a forgiving set of typing rules that _change_ as your program changes. This means no variables are ever committed to a single type – if that variable changes its type somewhere in the program, Infrared keeps track of it.\n\nJavaScript is a dynamic language, and Infrared doesn't want to change that. While other type systems out there want you to change the way you program (and change your JavaScript into something else), Infrared does the opposite.\n\nTo understand the way Infrared fits into the typing ecosystem, consider the following:\n\n - If you're looking for a superset type system that tries to promote soundness, you should use [Flow](https://flow.org/).\n - If you're looking for a superset type system that encourages unsoundness, you should use [TypeScript](https://www.typescriptlang.org/).\n - If you don't want to change anything in your project, but still want to know the types of things in your program + have some type safety at compile time, you should use Infrared.\n\n## Planning, Roadmap, and What Lies Ahead\n\nInfrared is a really big project, so naturally it's a pretty good idea to make sure we plan things out carefully to avoid a janky-mess.\n\nI'm using Figma to organize the different sections and responsibilities of each part of Infrared (parser, compiler, server, etc.). Feel free to follow along and check out [what I have mapped out so far](https://www.figma.com/file/VLacrQPUdTH19kJSiGy5zCzu/workflow?node-id=0%3A1).\n\nUnfortunately, Figma only reflects the finalized parts of the development _roadmap_. This means there's a lot of cool work – like typing rules, reduction strategies, discrete proofs, etc – that aren't in this document.\n\nSince those bits are written in a physical notebook, it's hard for me to share publically online. The good news is that I plan on writing a white paper once this project is finished, and all of the cool stuff will be included in there.\n\nUntil then, I'm more than happy to chat with anybody who's interested to learn more – feel free to reach out on [Twitter](https://twitter.com/nick_zuber/).\n\n## FAQ\n\n**Q** – Can I use this?\n\n**A** – Not yet. This project is still under development, but expect an alpha release soon(_ish_)!\n\n## License\n\nThis software is free to use under the MIT License. See [this reference](https://opensource.org/licenses/MIT) for license text and copyright information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickzuber%2Finfrared","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickzuber%2Finfrared","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickzuber%2Finfrared/lists"}