How to use co - 10 common examples

To help you get started, we’ve selected a few co examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github twosigma / git-meta / test / util / include.js View on Github external
describe("includeExistingRepo", function () {
        after(TestUtil.cleanup);

        // for these tests, "externalRepo" represents the repository to be 
        // included and "submoduleRepo" represents the submodule once it 
        // has been included inside "repo"  

        let repo, externalRepo, path;
        before(co.wrap(function *() {
            repo = yield TestUtil.createSimpleRepository();
            externalRepo = yield TestUtil.createSimpleRepository();
            path = "foo";
            yield Include.include(repo, externalRepo.workdir(), path);
        }));

        it("should include in the correct path", co.wrap(function *() {
            const pathExists = 
                yield TestUtil.pathExists(repo.workdir() + path);
            assert(pathExists, "path should exist");

            const submoduleRepo = 
                yield NodeGit.Repository.open(repo.workdir() + path);
            assert(submoduleRepo.workdir(), "repository should be created");
        }));
github beakerbrowser / beaker / app / builtin-pages / views / site.js View on Github external
function fetchArchiveInfo() {
  return co(function* () {
    console.log('Looking up', siteKey)

    // run request
    siteInfo = yield datInternalAPI.getArchiveInfo(siteKey)
    siteEntriesTree = entriesListToTree(siteInfo)
    siteName = (siteInfo.name || siteInfo.short_name || 'Untitled')
    document.title = siteName + ' - Site Editor'

    console.log(siteName, siteInfo)
  }).catch(err => {
    console.warn('Failed to fetch archive info', err)
    siteError = err
  })
}
github amida-tech / greyscale / backend / app / bologger.js View on Github external
BoLogger.prototype.log = function (data) {
    co.call(this, function* () {
        //data.essence = yield * common.getEssenceId(data.object);
        if (data.object) {
            yield this.init(data.object, data.req);
        }
        if (typeof data.entities === 'object') {
            data.entities = JSON.stringify(data.entities);
        }
        var thunkQuery = (data.req) ? data.req.thunkQuery : thunkify(new Query(config.pgConnect.adminSchema));

        if (data.user) {
            data.userid = (data.user.roleID === 1) ? 0 - data.user.id : data.user.id; // if superuser - then user = -id
        }
        this.extend(data);
        var id = yield thunkQuery(Log.insert(this.data).returning(Log.id));
        return data;
    }).then(function (data) {
github wechaty / wechaty / src / message.js View on Github external
ready() {
    log.silly('Message', 'ready()')

    return co.call(this, function* () {
      const from  = Contact.load(this.obj.from)
      const to    = Contact.load(this.obj.to)
      const room  = this.obj.room ? Room.load(this.obj.room) : null

      if (from) { yield from.ready() }  // Contact from
      if (to)   { yield to.ready() }    // Contact to
      if (room) { yield room.ready() }  // Room member list

      return this         // return this for chain
    }).catch(e => { // Exception
        log.error('Message', 'ready() exception: %s', e)
        console.log(e)
        throw e
    })
  }
github wechaty / wechaty / src / puppet-web.js View on Github external
initBrowser() {
    log.verbose('PuppetWeb', 'initBrowser()')
    const browser = new Browser({
      head: this.head
      , sessionFile: this.profile
    })

    browser.on('dead', Event.onBrowserDead.bind(this))

    // fastUrl is used to open in browser for we can set cookies.
    // backup: 'https://res.wx.qq.com/zh_CN/htmledition/v2/images/icon/ico_loading28a2f7.gif'
    const fastUrl = 'https://wx.qq.com/zh_CN/htmledition/v2/images/webwxgeticon.jpg'

    return co.call(this, function* () {
      yield browser.init()
      yield browser.open(fastUrl)
      yield browser.loadSession()
                  .catch(e => { // fail safe
                   log.verbose('PuppetWeb', 'browser.loadSession(%s) exception: %s', this.profile, e.message || e)
                  })
      yield browser.open()
      return browser // follow func name meaning
    }).catch(e => {
      log.error('PuppetWeb', 'initBrowser() exception: %s', e.message)
      throw e
    })
  }
github tencentyun / wafer-node-server-sdk / lib / tunnel / tunnel-api.js View on Github external
'content': messageContent,
        });

        return this.emitPacket(tunnelIds, packetType, packetContent);
    },

    emitPacket(tunnelIds, packetType, packetContent) {
        let param = { tunnelIds, 'type': packetType };
        if (packetContent) {
            param.content = packetContent;
        }

        return this._sendRequest('/ws/push', [param], false);
    },

    _sendRequest: co.wrap(function *(apiPath, apiParam, withTcKey) {
        let url = config.getTunnelServerUrl() + apiPath;
        let data = this._packReqData(apiParam, withTcKey);

        let params = { url, 'body': data };

        let begin = Date.now();
        let result = yield net.jsonPost(params);
        let end = Date.now();

        let statusCode = result[0].statusCode;
        let body = result[1];

        // 记录请求日志
        debug(`POST ${url} => [${statusCode}]`, {
            '[请求]': data,
            '[响应]': body,
github twosigma / git-meta / node / lib / util / list_files.js View on Github external
/**
 * Return a list the files in the specified `repo` and its *open* submodules,
 * relative to the root of the repository, or to the optionally specified
 * `relativePath` if provided.  Note that the order of the list is
 * not defined.  Note that if `relativePath` is provided, no files will be
 * listed that are not within that subdirectory.  The behavior is undefined
 * unless `relativePath` (if provided) is a valid relative path and has no
 * trailing slash.
 *
 * @async
 * @param {NodeGit.Repository} repo
 * @param {String}             [relativePath]
 * @return [String]
 */
exports.listFiles = co.wrap(function *(repo, relativePath) {
    assert.instanceOf(repo, NodeGit.Repository);
    if (undefined !== relativePath && null !== relativePath) {
        assert.isString(relativePath);
        assert.notEqual(relativePath, "");
        assert.notEqual(relativePath[relativePath.length - 1], "/");
        assert(!path.isAbsolute(relativePath));
    }
    const subNames = new Set(yield SubmoduleUtil.getSubmoduleNames(repo));
    const openSubs = yield SubmoduleUtil.listOpenSubmodules(repo);

    const result = [];

    let withSlash;  // the relative path with a suffixed '/'
    if (relativePath) {
        withSlash = relativePath + "/";
    }
github fontello / fontello / lib / system / init / server.js View on Github external
WorkerQueue.prototype.fork = function () {
  cluster.setupMaster({ args: [ 'worker-queue' ] });

  let worker = cluster.fork(),
      log = this.__pool.log;

  worker.on('online', co.wrap(function* () {
    try {
      // Set scheduling policy to SCHED_IDLE (`-i` flag);
      // `0` is only possible value for priority ('cause this policy doesn't allow to set it)
      yield execFile('chrt', [ '-i', '-p', '0', worker.process.pid ]);
    } catch (__) {
      // If `chrt` not exists, try fallback to `renice`.
      try {
        yield execFile('renice', [ '-n', '19', '-p', worker.process.pid ]);
        log.warn('Cannot set scheduling policy for queue using `chrt`, falling back to `renice`');
      } catch (___) {
        log.error('Cannot lower priority for queue ' +
          '(both `renice` and `chrt` have failed), continuing with default priority');
      }
    }
  }));
github owncloud / contacts / js / dav / lib / transport.js View on Github external
send(request, url, options={}) {
    return co(function *() {
      let sandbox = options.sandbox;
      let transformRequest = request.transformRequest;
      let transformResponse = request.transformResponse;
      let onerror = request.onerror;

      if (!('retry' in options)) options.retry = true;

      let result, xhr;
      try {
        let token = yield access(this.credentials, options);
        xhr = new XMLHttpRequest();
        if (sandbox) sandbox.add(xhr);
        xhr.open(request.method, url, true /* async */);
        xhr.setRequestHeader('Authorization', `Bearer ${token}`);
        if (transformRequest) transformRequest(xhr);
        xhr.setRequestHeader('requesttoken', oc_requesttoken);
github christkv / okr / client / src / store.jsx View on Github external
return new Promise((resolve, reject) => {
      co(function*() {
        // Only connect if not already connected
        if(!self.backend.isConnected()) {
          yield self.backend.connect(url)
        }

        // Resolve
        resolve(self);
      }).catch(reject);
    });
  }