Как включить пользовательский метод в заполнение babel? - PullRequest
0 голосов
/ 03 января 2019

Моя цель: Я пытаюсь преобразовать исходные файлы в один выходной файл для включения в веб-приложение.

Моя проблема: Iвключили пользовательский метод Promise в мой источник.Когда babel выполняет обещание, он пытается вызвать этот метод из <polyfilledPromise>.default.customMethod.Я пытался добавить пользовательский метод в прототип Promise, но babel, похоже, вообще не заботится о Promise в моем источнике.

Мой вопрос: Есть ли способвключить пользовательскую функцию в обещание, что babel уже заполнен?

Используемая мной команда cli:

node_modules/.bin/browserify lib/index.js --s Verifier -o verifier.js -t [ babelify --presets [ babel-preset-latest] --plugins [ transform-async-to-generator transform-runtime ] ]

Мои операции:

  "dependencies": {
    "babel-core": "^6.26.3",
    "babel-plugin-transform-async-to-module-method": "^6.24.1",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-latest": "^6.24.1",
    "babel-regenerator-runtime": "^6.5.0",
    "bigi": "^1.4.2",
    "bitcoinjs-lib": "^2.3.0",
    "bluebird": "^3.5.1",
    "bs58": "^3.0.0",
    "buffer": "^5.0.1",
    "chai": "^3.5.0",
    "debug": "^3.0.1",
    "dev": "^0.1.3",
    "ecurve": "^1.0.4",
    "jsonld": "^0.4.11",
    "mocha": "^3.5.3",
    "sha256": "^0.2.0",
    "string.prototype.startswith": "^0.2.0",
    "tsify": "^3.0.3",
    "verror": "^1.9.0",
    "xmlhttprequest": "^1.8.0"
  },
  "devDependencies": {
    "@babel/core": "^7.2.0",
    "babel-cli": "^6.24.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babelify": "^7.3.0",
    "brfs": "^1.4.3",
    "browserify": "^14.3.0",
    "uglify-js": "^3.0.8"
  }

Пользовательский метод Promise:

Promise.properRace = function (promises, count, results = []) {
  // Source: https://www.jcore.com/2016/12/18/promise-me-you-wont-use-promise-race/
  promises = Array.from(promises);
  if (promises.length < count) {
    return Promise.reject(new VerifierError("Could not confirm the transaction"));
  }

  let indexPromises = promises.map((p, index) => p.then(() => index).catch((err) => {
    log(err);
    throw index;
  }));

  return Promise.race(indexPromises).then(index => {
    let p = promises.splice(index, 1)[0];
    p.then(e => results.push(e));
    if (count === 1) {
      return results;
    }
    return Promise.properRace(promises, count - 1, results);
  }).catch(index => {
    promises.splice(index, 1);
    return Promise.properRace(promises, count, results);
  });
};

Один из примеров бабелифицированной версии :

_promise2.default.properRace(promises, count, results);
...