GithubHelp home page GithubHelp logo

azu / babel-plugin-jsdoc-to-assert Goto Github PK

View Code? Open in Web Editor NEW
56.0 5.0 3.0 111 KB

Runtime type checking for JSDoc

Home Page: https://github.com/azu/jsdoc-to-assert

License: MIT License

JavaScript 100.00%

babel-plugin-jsdoc-to-assert's Introduction

babel-plugin-jsdoc-to-assert Build Status

Babel plugin for jsdoc-to-assert.

Preset version: babel-preset-jsdoc-to-assert: Babel preset for jsdoc-to-assert

This plugin JSDoc(@param and @type) to assertion method for runtime testing.

@param

/**
 * @param {number} param - this is a param.
 * @param {string} b - this is a param.
 * @param {string[]} [c] - this is a param.
 */
function myFunc(param, b, c) {
}

to

/**
 * @param {number} param - this is a param.
 * @param {string} b - this is a param.
 * @param {string[]} [c] - this is a param.
 */
function myFunc(param, b, c) {
  console.assert(typeof param === 'number');
  console.assert(typeof b === 'string');
}

@type

/**
 * @type {string}
 */
const value = "s";

to

/**
 * @type {string}
 */
const value = "s";
console.assert(typeof value === "string");

Installation

npm install babel-plugin-jsdoc-to-assert

Usage

Via .babelrc

{
  "plugins": [
    "jsdoc-to-assert"
  ]
}

In development only:

{
  "presets": [
    "es2015"
  ],
  "env": {
    "development": {
      "plugins": [
        "jsdoc-to-assert"
      ]
    }
  }
}

If build files with NODE_ENV=production, don't convert JSDoc to assert.

"build": "NODE_ENV=production babel src --out-dir lib --source-maps",

Options

  • checkAtParam: boolean
    • Default: true
    • Check typing of @param
  • checkAtType: boolean
    • Default: false
    • Check typing of @type

FAQ

Q. Try to use this, but throw parsing error:

ERROR in ./src/js/framework/Context.js
Module build failed: SyntaxError: Unterminated string constant (3:16)
    at Parser.pp.raise (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:1378:13)
    at Parser.readString (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:5402:49)
    at Parser.getTokenFromCode (/Users/azu/.ghq/github.com/azu/svg-feeling/node_modules/babylon/index.js:52
    ....
 @ ./src/index.js 24:15-48

A. It seem to be a bug of babel-plugin-jsdoc-to-assert. Please file issue with your code ๐Ÿ™‡

Q. Why checkAtType is default disable?

It is a problem of babel transform order.

ES2015 -> jsdoc-to-assert cause following problem.

AssertionError: Invalid JSDoc: typeof _this === "string"
+ expected - actual

Tests

npm test

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

License

MIT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.