How might a new module access non-exported fn kill() in emacs.js ?

If someone were to implement more emacs commands in a separate ‘module’ (sorry don’t know what the right term is) and one of these commands involves doing a ‘kill’ to add something to the simulated emacs kill-ring, is there a way for this new JS to call kill() which is in emacs.js as a function which isn’t ‘exported’?

Would emacs.js have to export kill() in order for this to work? Or is there a way to do this without changing emacs.js?

Below is what emacs.js looks like with large chunks deleted for brevity.

// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license:

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
  else if (typeof define == "function" && define.amd) // AMD
    define(["../lib/codemirror"], mod);
  else // Plain browser env
})(function(CodeMirror) {
  "use strict";

  // ... snip ...

  function kill(cm, from, to, mayGrow, text) {
    if (text == null) text = cm.getRange(from, to);

    if (mayGrow && lastKill && == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen))
    cm.replaceRange("", from, to, "+delete");

    if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()};
    else lastKill = null;

  // ... snip ...

  var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({

    "Ctrl-K": repeated(function(cm) {
      var start = cm.getCursor(), end = cm.clipPos(Pos(start.line));
      var text = cm.getRange(start, end);
      if (!/\S/.test(text)) {
        text += "\n";
        end = Pos(start.line + 1, 0);
      kill(cm, start, end, true, text);

    // ... snip ... 


  // ... snip ...

We’d have to export it for that to work. We could have the emacs mode add a CodeMirror.emacs object with some of the helper functions like kill and repeat in it.