code: function bemDeclLoader(source) {
    // this.cacheable(false);
    const callback = this.async();
  
    // Prepare options
    const options = {
      levels: [],
    };
    Object.assign(options, loaderUtils.getOptions(this));
  
    // Load deps
    const self = this;
    bemDeps.load({levels: options.levels}).then((relations) => {
      // Sort relations to have deterministic result
      relations = relations.map((item) => {
        return [JSON.stringify(item), item];
      }).sort(function(a, b) {
        return a===b ? 0 : a[0] > b[0] ? 1 : -1;
      }).map((mapped) => {
        return mapped[1];
      });
  
      const bemDecl = nodeEval(source);
  
      // Resolve deps
      return bemDeps.resolve(bemDecl, relations).entities;
    }).then((bemDeps) => {
      // Mark dependecies
      depsForDeps(bemDeps, options.levels).then((dirs) => {
        dirs.forEach((dirName) => {
          self.addContextDependency(dirName);
        });
  
        callback(null, 'module.exports = ' + JSON.stringify(bemDeps) + ';');
      }).catch(callback);
    }).catch(callback);
  }
docs: BemDecl loader
  
  @param {String} source