Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

babel-plugin-transform-flow-to-gen

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-transform-flow-to-gen

Turn flow definitions into generator functions

  • 0.0.13
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-96.15%
Maintainers
1
Weekly downloads
 
Created
Source

Flow to gen

Transforms flow type aliases into generators for property based testing

Motivation

This Babel plugin attempts to alleviate the manual task of creating and maintaining fixtures/mocks by transforming all Flowtype type aliases into generator functions for mock data. Additionally, it provides a framework for automatically generating random input for typed functions and React components. If you're unfamiliar with generative or property based testing, please check out an implementation of Quickcheck in your language of choice. Also look at testcheck.js which is 100% compatible and wrapped by the runtime of this library.

By running this Babel transform on your code:

  • all type aliases are transformed in testcheck.js generators
  • all typed functions can immediately retrieve randomly generated inputs
  • all typed React components can immediately retrieve randomly generated props

TODO:

  • handle TypeofTypeAnnotation
  • handle ExistentialTypeAnnotation
  • handle recursive types
  • handle Flow globally defined types
  • handle React components

Demo?

DEMO!

Getting Started

babel-plugin-transform-flow-to-gen transforms your type aliases into functions that create testcheck.js generators.

Usage

import {sample, types} from 'babel-plugin-transform-flow-to-gen/api';

type Person<T> = {
  firstName: string,
  lastName: string,
  age: T
}

// use the generator static member to create samples
const personGen = Person(types.number());
sample(personGen, 20);
// [{
//   "firstName": "9OY3o",
//   "lastName": "fB",
//   "age": 0
// },
// {
//   "firstName": "8Hft5LwfK",
//   "lastName": "51Vnn54vb9xHO",
//   "age": 2
// },
// {
//   "firstName": "7i59Sr35GAJiv626uiV",
//   "lastName": "s7GIgEf",
//   "age": 3
// },
// {
//   "firstName": "Mys89F65i36n921",
//   "lastName": "",
//   "age": 1
// }, ...]

function setFirstName(person: Person<number>, firstName: string) {
  // ...
}

// returns an array of args for setFirstName
sample(setFirstName.asGenerator());
// [
//  [{
//   "firstName": "3o",
//   "lastName": "j467DA",
//   "age": 0
//   }, "f02j"]
// , ...]

Installing

yarn add babel-plugin-transform-flow-to-gen

License

MIT

FAQs

Package last updated on 16 Feb 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