This is a very simple reflection API for javascript functions build on acorn. reflection-js is mostly designed to fit cnyks's needs.
PHPdoc is part of PHP reflection API, that is, function described with this syntax can access their own comment. There is no standard way to attach a comment to a function in javascript. Esprima provide a way to parse the AST (and to retrieve comment) but we need a little more.
... enter the JSdoc syntax !
foo.prototype.bar = function() /**
* This comment is valid and can describe the function behavior
* This syntax allow reflection API to work, as the comment will be serialized in the function body
*/ {
return 43;
}
class Bar {
async static bar() /**
* This comment is valid and can describe the function behavior
* This syntax allow reflection API to work, as the comment will be serialized in the function body
*/ {
return 43;
}
}
const parsefunc = require('reflection-js/parsefunc');
var heavyComputation = function (a, b = 1) /**
* This function computer bar
* @param {string} a Initial rotation speed
* @param {string} [b=1] this is foo
*/ {
return a + b;
};
console.log(parsefunc(heavyComputation));
{
"name": "heavyComputation",
"params": {
"a": {
"type": "string",
"descr": "Initial rotation speed",
"optional": false
},
"b": {
"type": "string",
"descr": "this is foo",
"value": "1",
"optional": true
}
},
"blocs": // all parsed @sections
"doc": [
"This function computer bar"
],
"jsdoc": // raw comment string
}