Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jsdoc proper way to document socket.on('event', function() {}) and routes handler

How to document API using jsdoc which has following form (single file)

// api.js

exports.addSocketEvents = function(socket) {
   /**
    * This will do that and ...
    * @param {Object} data Some data
    * @param {string} data.bla Something about bla
    * @param {number} data.n Some number
    */
   socket.on('something_1', function(data) { ... });

   /**
    * Another function that will do ..
    * @param {string} id of something
    */
   socket.on('something_2', function(id) { ... });

   ...
};

exports.addRoutes = function(app) {
    /**
     * PATCH /something/:id/juhu
     * Will do this and that and will respond with ...
     * @param {string} _id Id of bonus document
     */
    app.patch('/something/:id/juhu', function(req, res) {...});

    /**
     * GET /something
     * Will fetch and respond back with ...
     */
    app.get('/something', function(req, res) {...});
    ...
};

My only idea is to add @namespace above exports and @lends above anonymous functions but that results in empty documentation.

like image 728
Srle Avatar asked Oct 10 '15 14:10

Srle


1 Answers

I am using Angular and then the Angular doc for JSDoc. As such, I am documenting my parent class and functions similar to the following.

/**
 * @class MyApp.Teams
 * @ngdoc class
 * @memberOf MyApp
 * @description
 * Module to handle the interface to the Teams, data and views.
 */

angular.module('MyApp').factory( ...

/**
 * @name TeamRecord
 * @ngdoc factory
 * @memberOf MyApp.Teams
 * @returns Record Clears the Structure to  ""
 * @description
 * Team Data Record structure
 */

So, with your text above, it might look like:

/**
 * @class MyApp.socketio
 * @ngdoc class
 * @memberOf MyApp
 * @description
 * Module to handle the interface to the Teams, data and views.
 */

/**
 * @name addSocketEvens
 * @ngdoc function
 * @memberOf MyApp.socketio
 * @param {Object} data Some data
 * @param {string} data.bla Something about bla
 * @param {number} data.n Some number
 * @description
 * This will do that and ...
 */
exports.addSocketEvents = function(socket) {
   socket.on('something_1', function(data) { ... });

   /**
    * Another function that will do ..
    * @param {string} id of something
    */
   socket.on('something_2', function(id) { ... });

   ...
};

/**
 * @name addRoutes
 * @ngdoc function
 * @memberOf MyApp.socketio
 * @param {string} _id Id of bonus document
 * @description
 * Will do this and that and will respond with ...
 */
exports.addRoutes = function(app) {
    app.patch('/something/:id/juhu', function(req, res) {...});

    /**
     * GET /something
     * Will fetch and respond back with ...
     */
    app.get('/something', function(req, res) {...});
    ...
};
like image 170
Steven Scott Avatar answered Oct 28 '22 13:10

Steven Scott