Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

flow-runtime-cli

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

flow-runtime-cli

A command line tool for working with flow and flow-runtime.

latest
Source
npmnpm
Version
0.17.0
Version published
Weekly downloads
28
7.69%
Maintainers
1
Weekly downloads
 
Created
Source

flow-runtime-cli

A command line interface for working with flow-runtime and Flow.

What?

Discovers imported and global type dependencies in your source code and produces a single file containing the flow-runtime type definitions for those dependencies.

What?

Let's say you have some code like this:

/* @flow */
function get (store: Storage, key: string) {
  return store.getItem(key);
}

get(localStorage, 'foo');

Storage is a global type, built in to Flow, but flow-runtime itself doesn't know anything about it - if you compile this code, flow-runtime will emit a warning about being unable to resolve a type called "Storage". A possible solution to this would be to include all the type definitions which come with Flow as part of flow-runtime, but this is wasteful - the file would be very large and most definitions would go unused.

To solve this problem, flow-runtime-cli:

  • Crawls your project source code looking for these types.
  • Discovers the matching type definitions in flow-typed or wherever specified by your .flowconfig file.
  • Creates a graph of dependencies and generates the code for only the types you use, this produces a file that looks like this:
import t from "flow-runtime";
t.declare(
  t.class(
    "Storage",
    t.object(
      t.property("length", t.number()),
      t.property(
        "getItem",
        t.function(t.param("key", t.string()), t.return(t.nullable(t.string())))
      ),
      t.property(
        "setItem",
        t.function(
          t.param("key", t.string()),
          t.param("data", t.string()),
          t.return(t.void())
        )
      ),
      t.property("clear", t.function(t.return(t.void()))),
      t.property(
        "removeItem",
        t.function(t.param("key", t.string()), t.return(t.void()))
      ),
      t.property(
        "key",
        t.function(
          t.param("index", t.number()),
          t.return(t.nullable(t.string()))
        )
      ),
      t.indexer("name", t.string(), t.nullable(t.string()))
    )
  )
);

You can then import this file once, in your entry point, and flow-runtime will be able to validates values of this type.

Installation

npm install flow-runtime-cli

or

yarn add flow-runtime-cli

Usage

If your source files are in a folder called src, run:

flow-runtime generate ./src > ./src/typedefs.js

then, in your entry point (e.g. index.js) your first import should be:

import './typedefs';

FAQs

Package last updated on 08 Feb 2018

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