OverviewFilesCommitsIssuesDocsReleasesPeers

mirall-cli / node_modules / bare-sidecar / lib / runtime.js

45 lines · javascript ref:
const Module = require('bare-module')
const Pipe = require('bare-pipe')
const url = require('bare-url')
const path = require('bare-path')

const ipc = new Pipe(3)

ipc.on('newListener', onnewlistener).on('removeListener', onremovelistener).on('close', onclose)

function onnewlistener(name, fn) {
  if (fn === onremovelistener || fn === onclose) return

  switch (name) {
    case 'close':
      ipc.off(name, onclose)
  }
}

function onremovelistener(name, fn) {
  if (fn === onremovelistener || fn === onclose) return

  switch (name) {
    case 'close':
      if (ipc.listenerCount(name) === 0) ipc.on(name, onclose)
  }
}

function onclose() {
  Bare.exit()
}

Bare.IPC = ipc

const parentURL = url.pathToFileURL('.')

if (parentURL.pathname[parentURL.pathname.length - 1] !== '/') {
  parentURL.pathname += '/'
}

const entry = Module.resolve(path.resolve(Bare.argv[1]), parentURL)

Bare.argv[1] = url.fileURLToPath(entry)

Module.load(entry)