summaryrefslogtreecommitdiffstats
path: root/node_modules/css-loader/lib/compile-exports.js
blob: 19ca14f1ae112495101fb2a160708df16a4ce7bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var camelCase = require("lodash/camelCase");

function dashesCamelCase(str) {
  return str.replace(/-+(\w)/g, function(match, firstLetter) {
    return firstLetter.toUpperCase();
  });
}

module.exports = function compileExports(result, importItemMatcher, camelCaseKeys) {
  if (!Object.keys(result.exports).length) {
    return "";
  }

  var exportJs = Object.keys(result.exports).reduce(function(res, key) {
    var valueAsString = JSON.stringify(result.exports[key]);
    valueAsString = valueAsString.replace(result.importItemRegExpG, importItemMatcher);
    function addEntry(k) {
      res.push("\t" + JSON.stringify(k) + ": " + valueAsString);
    }

    var targetKey;
    switch(camelCaseKeys) {
      case true:
        addEntry(key);
        targetKey = camelCase(key);
        if (targetKey !== key) {
          addEntry(targetKey);
        }
        break;
      case 'dashes':
        addEntry(key);
        targetKey = dashesCamelCase(key);
        if (targetKey !== key) {
          addEntry(targetKey);
        }
        break;
      case 'only':
        addEntry(camelCase(key));
        break;
      case 'dashesOnly':
        addEntry(dashesCamelCase(key));
        break;
      default:
        addEntry(key);
        break;
    }
    return res;
  }, []).join(",\n");

  return "{\n" + exportJs + "\n}";
};