• Stars
    star
    234
  • Rank 165,422 (Top 4 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Convert Flow React props annotation to PropTypes

babel-plugin-react-flow-props-to-prop-types

Convert Flow React props annotation to PropTypes

  • Supports most Flow types (see below)
  • Maintains comments
  • Works across modules (can import types)

Supported:

  • any/mixed Unknown types
  • void/null Empty types
  • number / string / boolean Primitives
  • 42 / "hello" / true Literals
  • [1, 2, 3] Tuples
  • { ... } Objects
    • { prop: number } Object Properties
    • { prop?: number } Optional properties
    • { [prop: string]: number } Optional Indexers
  • { [key: string]: number } Object indexers
  • Array<string> Arrays
  • Object Unknown Objects
  • Function Unknown Functions
  • RegExp regular expressions
  • boolean | string Unions
  • { foo: number } & { bar: string } Intersections
  • Referencing other types:
    • type Alias = number - Type Aliases
    • interface Stuff {} - Interfaces
    • class Thing {} - Class Declarations
    • import type {Alias} from "./other"; Type imports

Unsupported:

  • { a: number, [b: string]: number } Combining properties and indexers
  • { [a: string]: number, [b: string]: number } Multiple indexers
  • { (): void } Object call properties
  • a.b Qualified type identifiers
  • import typeof Export from "./other"; Typeof imports

Example

In:

class MyComponent extends React.Component {
  props: {
    // Add a class name to the root element
    className: string
  };

  // ...
}

Out:

class MyComponent extends React.Component {
  props: {
    // Add a class name to the root element
    className: string
  };
  static propTypes = {
    // Add a class name to the root element
    className: PropTypes.string.isRequired
  };

  // ...
}

Installation

$ yarn add prop-types prop-types-extra
$ yarn add --dev babel-plugin-react-flow-props-to-prop-types

Note: prop-types-extra is necessary for intersection type support.

Usage

Via .babelrc (Recommended)

.babelrc

{
  "plugins": [
    ["react-flow-props-to-prop-types", { /* options */ }]
  ]
}

Via CLI

$ babel --plugins react-flow-props-to-prop-types script.js

Via Node API

require("babel-core").transform("code", {
  plugins: [
    ["react-flow-props-to-prop-types", { /* options */ }]
  ]
});

Options

resolveOpts (optional)

Passed through to node-resolve

Override type used in propTypes

Sometimes you have Flow types which cannot be translated into PropTypes. In these scenarios you can provide your own type:

import type {PropType} from "babel-plugin-react-flow-props-to-prop-types";

class MyComponent extends React.Component {
  props: {
    foo: PropType<UnknownFunctionType, Function>
  };
}

PropType is defined as:

type PropType<T, R> = T;

So Flow will use the first type you provide, while this Babel plugin will use the second.

More Repositories

1

react-beautiful-dnd

Beautiful and accessible drag and drop for lists with React
JavaScript
32,454
star
2

jest-in-case

Jest utility for creating variations of the same test
JavaScript
1,041
star
3

react-sweet-state

Shared state management solution for React
JavaScript
850
star
4

escalator

Escalator is a batch or job optimized horizontal autoscaler for Kubernetes
Go
636
star
5

github-for-jira

Connect your code with your project management in Jira
TypeScript
580
star
6

prosemirror-utils

⚒ Utils library for ProseMirror
TypeScript
404
star
7

docker-chromium-xvfb

Docker image for running browser tests against headless Chromium
Dockerfile
385
star
8

nucleus

A configurable and versatile update server for all your Electron apps
TypeScript
379
star
9

gostatsd

An implementation of Etsy's statsd in Go with tags support
Go
372
star
10

smith

Smith is a Kubernetes workflow engine / resource manager
Go
287
star
11

better-ajv-errors

JSON Schema validation for Human 👨‍🎤
JavaScript
222
star
12

browser-interaction-time

⏰ A JavaScript library (written in TypeScript) to measure the time a user is active on a website
TypeScript
208
star
13

gajira

GitHub Actions for Jira
191
star
14

extract-react-types

One stop shop for documenting your react components.
JavaScript
176
star
15

stricter

A project-wide js-linting tool
TypeScript
157
star
16

data-center-helm-charts

Helm charts for Atlassian's Data Center products
Java
148
star
17

bazel-tools

Reusable bits for Bazel
Starlark
112
star
18

terraform-provider-artifactory

Terraform provider to manage Artifactory
Go
89
star
19

gajira-login

Jira Login GitHub Action
JavaScript
87
star
20

build-stats

🏆 get the build stats for pipelines 🏆
TypeScript
79
star
21

kubetoken

Kubetoken
Go
74
star
22

dc-app-performance-toolkit

Atlassian Data Center App Performance Toolkit
Python
71
star
23

koa-oas3

Request and response validator for Koa using Open API Specification
TypeScript
69
star
24

1time

Lightweight, thread-safe Java/Kotlin TOTP (time-based one-time passwords) and HOTP generator and validator for multi-factor authentication valid for both prover and verifier based on shared secret
Kotlin
64
star
25

gajira-transition

JavaScript
57
star
26

sketch-plugin

Design your next Atlassian app with our component libraries and suite of Sketch tools 💎
JavaScript
57
star
27

gajira-create

JavaScript
54
star
28

go-sentry-api

A go client for the sentry api https://sentry.io/api/
Go
50
star
29

themis

Autoscaling EMR clusters and Kinesis streams on Amazon Web Services (AWS)
JavaScript
48
star
30

gajira-todo

JavaScript
47
star
31

jira-cloud-for-sketch

A Sketch plugin providing integration with JIRA Cloud
JavaScript
44
star
32

gajira-find-issue-key

JavaScript
43
star
33

oas3-chow-chow

Request and response validator against OpenAPI Specification 3
TypeScript
39
star
34

validate-npm-package

Validate a package.json file
JavaScript
38
star
35

gajira-cli

JavaScript
37
star
36

conartist

Scaffold out and keep all your files in sync over time. Code-shifts for your file system.
JavaScript
34
star
37

jira-github-connector-plugin

This project has been superseded by the JIRA DVCS Connector
JavaScript
30
star
38

voyager

Voyager PaaS
Go
30
star
39

gajira-comment

JavaScript
30
star
40

atlaskit-framerx

[Unofficial] Atlaskit for Framer X (experimental)
TypeScript
28
star
41

jira-actions

Kotlin
27
star
42

sourcemap

Java
24
star
43

go-artifactory

Go library for artifactory REST API
Go
22
star
44

asap-authentication-python

This package provides a python implementation of the Atlassian Service to Service Authentication specification.
Python
21
star
45

homebrew-tap

This repository contains a collection of Homebrew (aka, Brew) "formulae" for Atlassian
Ruby
16
star
46

atlassian-connect-example-app-node

TypeScript
15
star
47

vscode-extension-jira-frontend

JavaScript
15
star
48

ssh

Kotlin
14
star
49

jira-performance-tests

Kotlin
14
star
50

docker-fluentd

Docker image for fluentd with support for both elasticsearch and kinesis
Makefile
11
star
51

omniauth-jira

OmniAuth strategy for JIRA
Ruby
11
star
52

redis-dump-restore

Node.js library to dump and restore Redis.
JavaScript
10
star
53

jenkins-for-jira

Connect your Jenkins server to Jira Software Cloud for more visibility into your development pipeline
TypeScript
10
star
54

fluent-plugin-kinesis-aggregation

fluent kinesis plugin shipping KPL aggregation format records, based on https://github.com/awslabs/aws-fluent-plugin-kinesis
Ruby
10
star
55

infrastructure

Kotlin
9
star
56

hubot-stride

JavaScript
9
star
57

graphql-braid

9
star
58

copy-pkg

Copy a package.json with filters and normalization
JavaScript
8
star
59

rocker

Little text UI for docker
Rust
8
star
60

aws-infrastructure

Kotlin
8
star
61

gray-matter-loader

Webpack loader for extracting front-matter using gray-matter - https://www.npmjs.com/package/gray-matter
JavaScript
8
star
62

autoconvert

TinyMCE plugin for Atlassian Autoconvert
JavaScript
8
star
63

jira-hardware-exploration

Kotlin
7
star
64

virtual-users

Kotlin
7
star
65

less-plugin-inline-svg

A Less plugin that allows to inline SVG file and customize its CSS styles
JavaScript
6
star
66

report

HTML
6
star
67

docker-infrastructure

Kotlin
6
star
68

jobsite

Tools for working with workspaces as defined by Yarn, Lerna, Bolt, etc.
JavaScript
5
star
69

git-lob

Experimental large files in Git (discontinued, use git-lfs instead)
Go
5
star
70

ansible-ixgbevf

4
star
71

concurrency

Kotlin
4
star
72

jvm-tasks

Kotlin
4
star
73

jpt-example-btf

Java
3
star
74

gojiid

A Goji Middleware For adding Request Id to Context
Go
3
star
75

workspace

Kotlin
3
star
76

jsm-integration-scripts

Jira Service Management Integration Scripts
Python
3
star
77

ssh-ubuntu

Kotlin
3
star
78

jira-software-actions

Kotlin
3
star
79

atlassian-connect-example-app-python

Python
2
star
80

atlassian-connect-example-app-java

Java
2
star
81

nadel-graphql-gateway-demo

Nadel GraphQL Gateway Demo app
HTML
1
star
82

homebrew-bitbucket

A collection of pinned versions of dependencies for Bitbucket
Ruby
1
star
83

parcel-stress-test

JavaScript
1
star
84

putty-sourcetree-fork

A fork of PuTTY used by Sourcetree
C
1
star
85

frontend-guides

1
star
86

tangerine-state-viewer

Visual Studio Code extension to facilitate tangerine state navigation
TypeScript
1
star
87

uniql-es

JavaScript
1
star
88

jasmine-http-server-spy

Creates jasmine spy objects backed by a http server.
CoffeeScript
1
star
89

packit-cli

CLI tool for creating package based architecture for enterprise frontend applications.
JavaScript
1
star
90

fluent-plugin-statsd_event

Fluentd plugin for sendind events to a statsd service
Ruby
1
star
91

github-packages-test

Test repo to verify artifact delivery pipeline
Kotlin
1
star
92

org.eclipse.jgit-atlassian

Java
1
star
93

jces-1209

Benchmark for Cloud and DC
Kotlin
1
star
94

webvieweventtest

TypeScript
1
star
95

quick-303

Cloud vs DC
Kotlin
1
star