4.0.0 • Published 7 years ago

babel-plugin-jsdoc-to-assert v4.0.0

Weekly downloads
277
License
MIT
Repository
github
Last release
7 years ago

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 :bow:

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

4.0.0

7 years ago

3.0.4

9 years ago

3.0.3

9 years ago

3.0.2

9 years ago

3.0.1

9 years ago

3.0.0

9 years ago

2.2.1

9 years ago

2.2.0

9 years ago

2.1.0

9 years ago

2.0.2

9 years ago

2.0.1

9 years ago

2.0.0

9 years ago

1.9.0

9 years ago

1.8.0

9 years ago

1.7.3

10 years ago

1.7.1

10 years ago

1.7.0

10 years ago

1.6.0

10 years ago

1.5.0

10 years ago

1.4.1

10 years ago

1.4.0

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago