code: function checkRules(submissionJSON, cb) {
        init();
        var err = initSubmission(submissionJSON);
        if (err) {
          return cb(err);
        }
        var actions = {};
  
        async.parallel([
  
          function(cb) {
            actions.fields = {};
            async.eachSeries(Object.keys(fieldRuleSubjectMap), function(fieldId, cb) {
  
              var sectionId = fieldSectionMapping[fieldId];
              var maxRepeat = getSectionMaxRepeat(sectionId);
  
              async.each(_.range(maxRepeat), function(sectionIndex, sectionCb) {
                isFieldVisible(fieldId, false, sectionIndex, function(err, fieldVisible) {
                  if (err) {
                    return cb(err);
                  }
                  actions.fields[fieldId + '_' + sectionIndex] = {
                    targetId: fieldId,
                    sectionIndex: sectionIndex,
                    action: (fieldVisible ? "show" : "hide")
                  };
                  return sectionCb();
                });
              }, cb);
            }, cb);
          },
          function(cb) {
            actions.pages = {};
            async.eachSeries(Object.keys(pageRuleSubjectMap), function(pageId, cb) {
              isPageVisible(pageId, function(err, pageVisible) {
                if (err) {
                  return cb(err);
                }
                actions.pages[pageId] = {
                  targetId: pageId,
                  action: (pageVisible ? "show" : "hide")
                };
                return cb();
              });
            }, cb);
          }
        ], function(err) {
          if (err) {
            return cb(err);
          }
  
          return cb(undefined, {
            actions: actions
          });
        });
      }
docs: /*
  check all rules actions
  res:
  {
  "actions": {
  "pages": {
  "targetId": {
  "targetId": "",
  "action": "show|hide"
  }
  },
  "fields": {
  }
  }
  }