return __awaiter(this, void 0, void 0, function* () {
     const src = path.join(this.getResourcesDir(appOutDir), "app");
     let glob = null;
     const files = (yield new bluebird_1.Promise((resolve, reject) => {
         glob = new glob_1.Glob("**/*", {
             cwd: src,
             // dot: true as in the asar by default
             dot: true,
             ignore: "**/.DS_Store"
         }, (error, matches) => {
             if (error == null) {
                 resolve(matches);
             } else {
                 reject(error);
             }
         });
     })).map(it => path.join(src, it));
     const stats = yield bluebird_1.Promise.map(files, it => {
         // const stat = glob!.statCache[it]
         // return stat == null ? lstat(it) : <any>stat
         // todo check is it safe to reuse glob stat
         return fs_extra_p_1.lstat(it);
     });
     const metadata = {};
     for (let i = 0, n = files.length; i < n; i++) {
         const stat = stats[i];
         metadata[files[i]] = {
             type: stat.isFile() ? "file" : stat.isDirectory() ? "directory" : "link",
             stat: stat
         };
     }
     yield bluebird_1.Promise.promisify(asar_1.createPackageFromFiles)(src, path.join(this.getResourcesDir(appOutDir), "app.asar"), files, metadata, options);
     yield fs_extra_p_1.remove(src);
 });
 .then((recipient) => {
   if ((recipient || {}).hasOwnProperty('email')) {
     return Promise.reject(new RecipientAlreadyExists(`The recipient ${email} already exists`));
   } else {
     return Promise.resolve(email);
   }
 });
Esempio n. 3
0
 trySend(value: Promise<T> | T): boolean {
   this.outbound = this.outbound.filter((it) => it.promise.isPending())
   if (this.outbound.length == 0) return false
   var receiver = sample(this.outbound)
   var other = Promise.resolve(value)
   receiver.resolve(Promise.resolve(value))
   return true
 }
Esempio n. 4
0
    value: function find(prefix) {
      var dict = this.dicts[prefix];

      if (!dict) {
        return _bluebird.Promise.resolve(null);
      }

      return _bluebird.Promise.resolve(dict);
    }
Esempio n. 5
0
 }).catch((error) => {
   logger().warn('SendEmailService._checkReputation error occurred:', error);
   if (error === 'Bad reputation') {
     // return this.queue.purgeQueue().then(() => Promise.reject(error));
     return Promise.reject(error);
   }
   // Being conservative since this should not break send emails proccess
   return Promise.resolve({});
 });
Esempio n. 6
0
 /**
  * Returns a promise for when the provided value has been received.
  *
  * @param {T} value
  * @return {Promise<void>}
  */
 send(value: Promise<T> | T): Promise<void> {
   if (this.done) return Promise.reject(new TypeError(Channel.SEND_ON_CLOSED))
   if (this.trySend((value:any))) {
     return Promise.resolve()
   } else {
     var sender = new Sender(Promise.resolve(value))
     this.inbound.push(sender)
     return sender.promise
   }
 }
Esempio n. 7
0
 yield promise_1.executeFinally(packager.build(), errorOccurred => {
     if (errorOccurred) {
         for (let task of publishTasks) {
             task.cancel();
         }
         return bluebird_1.Promise.resolve(null);
     } else {
         return bluebird_1.Promise.all(publishTasks);
     }
 });
Esempio n. 8
0
  it("can pass a resolver as a function object", (done) => {
    let p = new Promise(function(resolve, reject) {
      setTimeout(resolve, 10);
    });

    p.then((message) => {
      console.log("Tock!", message);
      done();
    })
  });
Esempio n. 9
0
  return passthru({ token: token }).then(function (body) {
    if (body.error) {
      return PromiseA.reject(body.error);
    }

    if (!body.jar) {
      return PromiseA.reject(new Error("bad credentials"));
    }

    return body;
  });
Esempio n. 10
0
 // next :: () =>
 //   | { done: true,  value: Promise<T>    }
 //   | { done: false, value: Promise<void> }
 // next :: (value: Promise<T> | T) =>
 //   | { done: boolean, value: Promise<void> }
 next(value?: Promise<T> | T): AsynchronousIteratorResult<T> {
   var result
   if (this.done) {
     result = Promise.resolve()
   } else if (arguments.length == 0) {
     result = this.receive()
   } else {
     result = this.send(Promise.resolve(value))
   }
   return { done: this.done, value: (result:any) }
 }
Esempio n. 11
0
 return this._invokeGetUserData().then((response) => {
   const userData = JSON.parse(response.Payload);
   const reputationData = userData.reputationData;
   this.reputation = reputationData.reputation;
   logger().debug('SendEmailService._checkReputation user reputation:', reputationData);
   if (reputationData.reputation < reputationData.minimumAllowedReputation) {
     logger().error('SendEmailService._checkReputation, Bad Reputation detected', reputationData.reputation, 'stopping...');
     return Promise.reject('Bad reputation');
   }
   return Promise.resolve({});
 }).catch((error) => {
Esempio n. 12
0
  return passthru(opts).then(function (body) {
    if (body.error) {
      console.error('Error with login');
      console.error(body.error);
      return PromiseA.reject(body.error);
    }

    console.log(body);
    if (!body.jar) {
      return PromiseA.reject(new Error("bad credentials"));
    }

    return body;
  });
Esempio n. 13
0
 return __awaiter(this, void 0, void 0, function* () {
     if (bundledCertKeychainAdded == null) {
         bundledCertKeychainAdded = createCustomCertKeychain();
     }
     yield bundledCertKeychainAdded;
     const keychainName = yield tmpDir.getTempFile(".keychain");
     const certLinks = [cscLink];
     if (cscILink != null) {
         certLinks.push(cscILink);
     }
     const certPaths = new Array(certLinks.length);
     const keychainPassword = crypto_1.randomBytes(8).toString("hex");
     return yield promise_1.executeFinally(bluebird_1.Promise.all([bluebird_1.Promise.map(certLinks, (link, i) => downloadCertificate(link, tmpDir).then(it => certPaths[i] = it)), bluebird_1.Promise.mapSeries([["create-keychain", "-p", keychainPassword, keychainName], ["unlock-keychain", "-p", keychainPassword, keychainName], ["set-keychain-settings", "-t", "3600", "-u", keychainName]], it => util_1.exec("security", it))]).then(() => importCerts(keychainName, certPaths, [cscKeyPassword, cscIKeyPassword].filter(it => it != null))), () => promise_1.all(certPaths.map((it, index) => certLinks[index].startsWith("https://") ? fs_extra_p_1.deleteFile(it, true) : bluebird_1.Promise.resolve())));
 });
Esempio n. 14
0
                }, function (error) {

                    delete context.cancel;

                    if (!(0, _isUndefined3.default)(error)) {

                        error = error instanceof Error ? error : new Error((0, _toString3.default)(error));
                        error.rollbackErrors = [];

                        (0, _reduceRight3.default)(Array.from(executed.values()), function (result, step) {
                            var rollback = (0, _bind3.default)(step.rollback, (0, _extend3.default)({}, context, step), error);
                            return result.then(function () {
                                return _bluebird.Promise.try(rollback).catch(function (err) {
                                    return error.rollbackErrors.push(err);
                                });
                            });
                        }, _bluebird.Promise.resolve()).finally(function () {
                            logger.info('Dispatch failed: %s', error);
                            steps.toArray().reduce(function (result, step) {
                                var failure = (0, _bind3.default)(step.failure, (0, _extend3.default)({}, context, step), error);
                                return result.finally(function () {
                                    return _bluebird.Promise.try(failure);
                                });
                            }, _bluebird.Promise.resolve()).finally(function () {
                                resolve(new WorkflowResult({
                                    status: Workflow.States.FAILED,
                                    executed: getExecuted(),
                                    error: error
                                }));
                            });
                        });
                    } else {

                        Array.from(executed.values()).reduce(function (result, step) {
                            var success = (0, _bind3.default)(step.success, (0, _extend3.default)({}, context, step), context.results);
                            return result.finally(function () {
                                return _bluebird.Promise.try(success);
                            });
                        }, _bluebird.Promise.resolve()).finally(function () {
                            logger.info('Dispatch succeeded.');
                            resolve(new WorkflowResult({
                                status: Workflow.States.SUCCESS,
                                executed: getExecuted(),
                                results: context.results
                            }));
                        });
                    }
                });
Esempio n. 15
0
                steps.forEach(function (step, next, percent) {

                    if (!step.enabled) {
                        next();
                    }

                    var stepContext = (0, _extend3.default)({}, context, step),
                        execute = step.execute.apply.bind(step.execute, stepContext, args),
                        execLoop = function execLoop() {
                        executed.add(step);
                        logger.info('Executing ' + step.name + '.');
                        return _bluebird.Promise.try(execute).catch(function (err) {
                            return _bluebird.Promise.try((0, _bind3.default)(step.retry, stepContext, err)).then(execLoop);
                        });
                    };

                    _bluebird.Promise.try((0, _bind3.default)(step.init, stepContext)).then(execLoop).tap(function (result) {
                        return context.results[step.name] = result;
                    }).finally(function () {
                        return update(percent);
                    }).then(function () {
                        return next();
                    }, function (err) {
                        return next((0, _isUndefined3.default)(err) && 'Error occurred in ' + step.name + '.' || err);
                    });
                }, function (error) {
Esempio n. 16
0
     execLoop = function execLoop() {
     executed.add(step);
     logger.info('Executing ' + step.name + '.');
     return _bluebird.Promise.try(execute).catch(function (err) {
         return _bluebird.Promise.try((0, _bind3.default)(step.retry, stepContext, err)).then(execLoop);
     });
 };
 .then((maxId) => {
   let promises = []
   for (let i = 1; i <= maxId; i++) {
     promises.push(this.findById('' + i))
   }
   return Promise.all(promises)
 })
Esempio n. 18
0
  install(dir, plugin = null) {
    if(plugin !== null) {
      this.add(dir, plugin)
      .then(function() {

        return 0
      })
    } else {
      if(config.plugins && Array.isArray(config.plugins)){
        var ps = []
        Array.prototype.forEach.call(config.plugins, (plugin) => {
          ps.push(this.add(dir, plugin))
        })
        
        Promise.all(ps)
        .then(function() {

          return 0 
        })
      } else {
        console.log(clc.cyan('no plugin found'))

        return 0
      }
    }
  }
Esempio n. 19
0
 return __awaiter(this, void 0, void 0, function* () {
     const output = yield util_1.exec("icns2png", ["-x", "-o", tempDir, path.join(this.buildResourcesDir, "icon.icns")]);
     util_1.debug(output);
     const imagePath = path.join(tempDir, "icon_256x256x32.png");
     function resize(size) {
         const sizeArg = `${ size }x${ size }`;
         return util_1.exec("gm", ["convert", "-size", sizeArg, imagePath, "-resize", sizeArg, path.join(tempDir, `icon_${ size }x${ size }x32.png`)]);
     }
     const promises = [resize(24), resize(96)];
     if (!(output.indexOf("is32") !== -1)) {
         promises.push(resize(16));
     }
     if (!(output.indexOf("ih32") !== -1)) {
         promises.push(resize(48));
     }
     if (!(output.toString().indexOf("icp6") !== -1)) {
         promises.push(resize(64));
     }
     if (!(output.indexOf("it32") !== -1)) {
         promises.push(resize(128));
     }
     yield bluebird_1.Promise.all(promises);
     const appName = this.metadata.name;
     function createMapping(size) {
         return `${ tempDir }/icon_${ size }x${ size }x32.png=/usr/share/icons/hicolor/${ size }x${ size }/apps/${ appName }.png`;
     }
     return [createMapping("16"), createMapping("24"), createMapping("32"), createMapping("48"), createMapping("64"), createMapping("96"), createMapping("128"), createMapping("256"), createMapping("512")];
 });
Esempio n. 20
0
  _checkReputation() {
    const reputationCheckInterval = (this.userPlan || 'free') === 'free' ? 50 : 1000;
    if (this.counter - this.lastReputationCheckedOn >= reputationCheckInterval) {
      this.lastReputationCheckedOn = this.counter;
      logger().debug('SendEmailService._checkReputation, working...');
      return this._invokeGetUserData().then((response) => {
        const userData = JSON.parse(response.Payload);
        const reputationData = userData.reputationData;
        this.reputation = reputationData.reputation;
        logger().debug('SendEmailService._checkReputation user reputation:', reputationData);
        if (reputationData.reputation < reputationData.minimumAllowedReputation) {
          logger().error('SendEmailService._checkReputation, Bad Reputation detected', reputationData.reputation, 'stopping...');
          return Promise.reject('Bad reputation');
        }
        return Promise.resolve({});
      }).catch((error) => {
        logger().warn('SendEmailService._checkReputation error occurred:', error);
        if (error === 'Bad reputation') {
          // return this.queue.purgeQueue().then(() => Promise.reject(error));
          return Promise.reject(error);
        }
        // Being conservative since this should not break send emails proccess
        return Promise.resolve({});
      });
    }

    return Promise.resolve({});
  }
Esempio n. 21
0
export function sendRecordFiles(dispatch, records) {
	//loop et send files
	const allFiles = Object.keys(records).reduce((recordsFiles, tableId) => {
		const tableRecords = records[tableId];
		return Object.keys(tableRecords).reduce((tableFiles, recordId) => {
			const record = tableRecords[recordId];
			// console.log(record);
			return tableFiles.concat(Object.keys(record).map(fieldId => {
				const tmpName = record[fieldId];
				//on n'a pas besoin de vérifier si le champ est d'un type particulier: le getfile retournera un file basé sur la value seulement, qui est un hash
				const file = tmpName && getFileVal(tmpName);
				if (!file) return null;
				// console.log(file, tmpName);
				return {
					tmpName,
					file,
					fileName: file.name,
					fieldId,
					recordId,
					tableId,
				};
			}).filter(r => r));
		}, recordsFiles);
	}, []);

	// console.log(allFiles);
	return Promise.mapSeries(allFiles, fileDef => {
		return sendChunk(dispatch, fileDef);
	});

}
Esempio n. 22
0
 return __awaiter(this, void 0, void 0, function* () {
     let resourcesDir = appOutDir;
     if (this.platform === metadata_1.Platform.OSX) {
         resourcesDir = this.getOSXResourcesDir(appOutDir);
     }
     return yield bluebird_1.Promise.map((yield this.getExtraResources(arch, customBuildOptions)), it => fs_extra_p_1.copy(path.join(this.projectDir, it), path.join(resourcesDir, it)));
 });
Esempio n. 23
0
 return __awaiter(this, void 0, void 0, function* () {
     function addKeychain(args) {
         if (keychain != null) {
             args.push(keychain);
         }
         return args;
     }
     let result = exports.findIdentityRawResult;
     if (result == null || keychain != null) {
         // https://github.com/electron-userland/electron-builder/issues/481
         // https://github.com/electron-userland/electron-builder/issues/535
         result = bluebird_1.Promise.all([util_1.exec("security", addKeychain(["find-identity", "-v"])).then(it => it.trim().split("\n").filter(it => {
             for (let prefix of appleCertificatePrefixes) {
                 if (it.indexOf(prefix) !== -1) {
                     return true;
                 }
             }
             return false;
         })), util_1.exec("security", addKeychain(["find-identity", "-v", "-p", "codesigning"])).then(it => it.trim().split("\n"))]).then(it => {
             const array = it[0].concat(it[1]).filter(it => !(it.indexOf("(Missing required extension)") !== -1) && !(it.indexOf("valid identities found") !== -1) && !(it.indexOf("iPhone ") !== -1) && !(it.indexOf("com.apple.idms.appleid.prd.") !== -1)).map(it => it.substring(it.indexOf(")") + 1).trim());
             return Array.from(new Set(array));
         });
         if (keychain == null) {
             exports.findIdentityRawResult = result;
         }
     }
     return result;
 });
Esempio n. 24
0
function signFile(file, baseSignOptions) {
  if (baseSignOptions != null && process.platform !== 'linux') {
    const signOptions = Object.assign({}, baseSignOptions);
    signOptions.path = file;
    return sign(signOptions);
  }
  return _bluebird.Promise.resolve();
}
 getExtraResources(isResources, arch, customBuildOptions) {
     let patterns = this.devMetadata.build[isResources ? "extraResources" : "extraFiles"];
     const platformSpecificPatterns = isResources ? customBuildOptions.extraResources : customBuildOptions.extraFiles;
     if (platformSpecificPatterns != null) {
         patterns = patterns == null ? platformSpecificPatterns : patterns.concat(platformSpecificPatterns);
     }
     return patterns == null ? bluebird_1.Promise.resolve(new Set()) : globby_1.globby(this.expandPatterns(patterns, arch), { cwd: this.projectDir });
 }
 unsubscribeRecipient() {
   const { listId, recipientId } = this.emailMetadata;
   if (this.shouldUnsubscribe()) {
     const recipient = { status: this.newStatus };
     recipient[`${this.newStatus}At`] = moment().unix();
     return Recipient.update(omitEmpty(recipient), listId, recipientId);
   }
   return Promise.resolve({});
 }
Esempio n. 27
0
    value: function shutdown() {
      this._logger.info('shutdown....');

      clearInterval(this._watcherId);
      this._watcher = null;
      this._receiver = null;

      return _bluebird.Promise.resolve();
    }
Esempio n. 28
0
 return __awaiter(this, void 0, void 0, function* () {
     const zipPath = (yield bluebird_1.Promise.all([downloadElectron(createDownloadOpts(opts, platform, arch, electronVersion)), fs_extra_p_1.emptyDir(out)]))[0];
     yield extract(zipPath, { dir: out });
     if (platform === "darwin" || platform === "mas") {
         yield require("./mac").createApp(opts, out, initializeApp);
     } else {
         yield initializeApp();
     }
 });
Esempio n. 29
0
function doDownload(url, destination, redirectCount, options, callback) {
    const ensureDirPromise = options.skipDirCreation ? bluebird_1.Promise.resolve() : fs_extra_p_1.ensureDir(path.dirname(destination));
    const parsedUrl = url_1.parse(url);
    // user-agent must be specified, otherwise some host can return 401 unauthorised
    const request = https.request({
        hostname: parsedUrl.hostname,
        path: parsedUrl.path,
        headers: {
            "User-Agent": "electron-builder"
        }
    }, response => {
        if (response.statusCode >= 400) {
            callback(new Error(`Cannot download "${ url }", status ${ response.statusCode }: ${ response.statusMessage }`));
            return;
        }
        const redirectUrl = response.headers.location;
        if (redirectUrl != null) {
            if (redirectCount < maxRedirects) {
                doDownload(redirectUrl, destination, redirectCount++, options, callback);
            } else {
                callback(new Error("Too many redirects (> " + maxRedirects + ")"));
            }
            return;
        }
        const sha2Header = response.headers["X-Checksum-Sha2"];
        if (sha2Header != null && options.sha2 != null) {
            // todo why bintray doesn't send this header always
            if (sha2Header == null) {
                throw new Error("checksum is required, but server response doesn't contain X-Checksum-Sha2 header");
            } else if (sha2Header !== options.sha2) {
                throw new Error(`checksum mismatch: expected ${ options.sha2 } but got ${ sha2Header } (X-Checksum-Sha2 header)`);
            }
        }
        ensureDirPromise.then(() => {
            const fileOut = fs_extra_p_1.createWriteStream(destination);
            if (options.sha2 == null) {
                response.pipe(fileOut);
            } else {
                response.pipe(new DigestTransform(options.sha2)).pipe(fileOut);
            }
            fileOut.on("finish", callback);
        }).catch(callback);
        let ended = false;
        response.on("end", () => {
            ended = true;
        });
        response.on("close", () => {
            if (!ended) {
                callback(new Error("Request aborted"));
            }
        });
    });
    addTimeOutHandler(request, callback);
    request.on("error", callback);
    request.end();
}
    beforeEach(() => {
      const msearchMock = jest.fn().mockReturnValue(Promise.resolve([]));

      searchArgs = {
        searchRequests: [],
        es: { msearch: msearchMock },
        Promise,
        serializeFetchParams: () => Promise.resolve([]),
      };
    });