New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@andywer/gear

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@andywer/gear

Bootstrap typed JavaScript projects in less than a minute or easily add types to untyped code. Built around [Babel 7](https://babeljs.io/), [Flow](https://flowtype.org/), [babel-preset-env](https://babeljs.io/) and [functional type syntax](https://github.

  • 0.1.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Gear

Bootstrap typed JavaScript projects in less than a minute or easily add types to untyped code. Built around Babel 7, Flow, babel-preset-env and functional type syntax.

The tool is written using itself. So have a look at its own code if your interested, type-check.js is quite a good example, for instance.

I wanted to play a little with Hindley-Milner types in JavaScript, see how it feels and by the way reduce the boilerplate necessary to get starting with typed JavaScript.

⚠️ Caution: This is highly experimental.

Installation

yarn add --dev @andywer/gear

or using npm

npm install --save-dev @andywer/gear

Usage

{
  "scripts": {
    "build": "gear compile src/ -d lib/",
    "test": "gear type-check src/"
  }
}

Compile sources

# Run Babel
gear compile src/ -d lib/

Type checking

# Run Babel & Flow
gear type-check src/

Will create a .flowcheck directory, babel the sources, but not completely, just translating the custom type syntax Flow does not understand. Creates a .flowconfig and runs Flow.

Write some code

You can write JS code with Flow's regular type syntax, with Hindley-Milner types or without types (Flow will infer types as good as possible).

Gimmick: When writing Hindley-Milner types (functional style) you don't need to add // @flow to the file. It will automatically be added on first encounter of a type.

exists :: string => Promise<bool>

/** Checks if a file or directory exists */
async function exists (path) {
  try {
    await fs.access(path)
    return true
  } catch (error) {
    return false
  }
}

Why not just use TypeScript or Flow as it is?

Because TypeScript is kind of a closed ecosystem on its own and Flow is written in OCAML. Gear tries to stick to the tech stack you already have as much as possible.

And thus the stack becomes easily hackable.

Write a Babel plugin, even change the type syntax and it will work. And it even requires little effort to use it with real-world code since it is built around the tools you use anyway.

License

Released under the terms of the MIT license.

Keywords

FAQs

Package last updated on 20 Mar 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc