1 | ;
|
2 |
|
3 | var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
|
4 |
|
5 | var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
|
6 |
|
7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
8 |
|
9 | var ChatServiceError = require('./ChatServiceError');
|
10 | var Promise = require('bluebird');
|
11 | var _ = require('lodash');
|
12 | var util = require('util');
|
13 |
|
14 | var debuglog = util.debuglog('ChatService');
|
15 |
|
16 | var asyncLimit = 32;
|
17 |
|
18 | var nameChecker = /^[^\u0000-\u001F:{}\u007F]+$/;
|
19 |
|
20 | function possiblyCallback(args) {
|
21 | var cb = _.last(args);
|
22 | if (_.isFunction(cb)) {
|
23 | args = _.slice(args, 0, -1);
|
24 | } else {
|
25 | cb = null;
|
26 | }
|
27 | return [args, cb];
|
28 | }
|
29 |
|
30 | function checkNameSymbols(name) {
|
31 | if (_.isString(name) && nameChecker.test(name)) {
|
32 | return Promise.resolve();
|
33 | } else {
|
34 | return Promise.reject(new ChatServiceError('invalidName', name));
|
35 | }
|
36 | }
|
37 |
|
38 | function execHook(hook) {
|
39 | if (!hook) {
|
40 | return Promise.resolve();
|
41 | }
|
42 | var cb = void 0,
|
43 | callbackResults = void 0,
|
44 | hasResults = void 0;
|
45 | var wrapper = function wrapper() {
|
46 | hasResults = true;
|
47 |
|
48 | for (var _len2 = arguments.length, data = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
49 | data[_key2] = arguments[_key2];
|
50 | }
|
51 |
|
52 | callbackResults = data;
|
53 | if (cb) {
|
54 | cb.apply(undefined, data);
|
55 | }
|
56 | };
|
57 |
|
58 | for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
59 | args[_key - 1] = arguments[_key];
|
60 | }
|
61 |
|
62 | var res = hook.apply(undefined, args.concat([wrapper]));
|
63 | if (hasResults) {
|
64 | return Promise.fromCallback(function (fn) {
|
65 | fn.apply(undefined, (0, _toConsumableArray3.default)(callbackResults));
|
66 | }, { multiArgs: true });
|
67 | } else if (res != null && typeof res.then === 'function') {
|
68 | return res;
|
69 | } else {
|
70 | return Promise.fromCallback(function (fn) {
|
71 | cb = fn;
|
72 | }, { multiArgs: true });
|
73 | }
|
74 | }
|
75 |
|
76 | function run(self, gen) {
|
77 | return Promise.coroutine(gen).call(self);
|
78 | }
|
79 |
|
80 | function logError(error) {
|
81 | var isServiceError = error instanceof ChatServiceError;
|
82 | if (!isServiceError) {
|
83 | debuglog(error);
|
84 | }
|
85 | return Promise.reject(error);
|
86 | }
|
87 |
|
88 | function convertError(error, useRawErrorObjects) {
|
89 | if (error != null) {
|
90 | if (!useRawErrorObjects) {
|
91 | return error.toString();
|
92 | }
|
93 | var isServiceError = error instanceof ChatServiceError;
|
94 | if (!isServiceError) {
|
95 | return new ChatServiceError('internalError', error.toString());
|
96 | }
|
97 | }
|
98 | return error;
|
99 | }
|
100 |
|
101 | function resultsTransform(useRawErrorObjects, cb) {
|
102 | if (!cb) {
|
103 | return null;
|
104 | }
|
105 | return function (error, data) {
|
106 | error = convertError(error, useRawErrorObjects);
|
107 | if (error == null) {
|
108 | error = null;
|
109 | }
|
110 | if (data == null) {
|
111 | data = null;
|
112 | }
|
113 |
|
114 | for (var _len3 = arguments.length, rest = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
|
115 | rest[_key3 - 2] = arguments[_key3];
|
116 | }
|
117 |
|
118 | return cb.apply(undefined, [error, data].concat(rest));
|
119 | };
|
120 | }
|
121 |
|
122 | module.exports = {
|
123 | asyncLimit: asyncLimit,
|
124 | convertError: convertError,
|
125 | checkNameSymbols: checkNameSymbols,
|
126 | execHook: execHook,
|
127 | logError: logError,
|
128 | possiblyCallback: possiblyCallback,
|
129 | resultsTransform: resultsTransform,
|
130 | run: run
|
131 | };
|
132 | //# sourceMappingURL=data:application/json;base64,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QUMsa0JBQUwsRUFBeUI7QUFDdkIsYUFBTyxNQUFNLFFBQU4sRUFBUDtBQUNEO0FBQ0QsUUFBSSxpQkFBaUIsaUJBQWlCLGdCQUF0QztBQUNBLFFBQUksQ0FBQyxjQUFMLEVBQXFCO0FBQ25CLGFBQU8sSUFBSSxnQkFBSixDQUFxQixlQUFyQixFQUFzQyxNQUFNLFFBQU4sRUFBdEMsQ0FBUDtBQUNEO0FBQ0Y7QUFDRCxTQUFPLEtBQVA7QUFDRDs7QUFFRCxTQUFTLGdCQUFULENBQTJCLGtCQUEzQixFQUErQyxFQUEvQyxFQUFtRDtBQUNqRCxNQUFJLENBQUMsRUFBTCxFQUFTO0FBQUUsV0FBTyxJQUFQO0FBQWE7QUFDeEIsU0FBTyxVQUFVLEtBQVYsRUFBaUIsSUFBakIsRUFBZ0M7QUFDckMsWUFBUSxhQUFhLEtBQWIsRUFBb0Isa0JBQXBCLENBQVI7QUFDQSxRQUFJLFNBQVMsSUFBYixFQUFtQjtBQUFFLGNBQVEsSUFBUjtBQUFjO0FBQ25DLFFBQUksUUFBUSxJQUFaLEVBQWtCO0FBQUUsYUFBTyxJQUFQO0FBQWE7O0FBSEksdUNBQU4sSUFBTTtBQUFOLFVBQU07QUFBQTs7QUFJckMsV0FBTyxxQkFBRyxLQUFILEVBQVUsSUFBVixTQUFtQixJQUFuQixFQUFQO0FBQ0QsR0FMRDtBQU1EOztBQUVELE9BQU8sT0FBUCxHQUFpQjtBQUNmLHdCQURlO0FBRWYsNEJBRmU7QUFHZixvQ0FIZTtBQUlmLG9CQUplO0FBS2Ysb0JBTGU7QUFNZixvQ0FOZTtBQU9mLG9DQVBlO0FBUWY7QUFSZSxDQUFqQiIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBDaGF0U2VydmljZUVycm9yID0gcmVxdWlyZSgnLi9DaGF0U2VydmljZUVycm9yJylcbmNvbnN0IFByb21pc2UgPSByZXF1aXJlKCdibHVlYmlyZCcpXG5jb25zdCBfID0gcmVxdWlyZSgnbG9kYXNoJylcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJylcblxubGV0IGRlYnVnbG9nID0gdXRpbC5kZWJ1Z2xvZygnQ2hhdFNlcnZpY2UnKVxuXG5sZXQgYXN5bmNMaW1pdCA9IDMyXG5cbmxldCBuYW1lQ2hlY2tlciA9IC9eW15cXHUwMDAwLVxcdTAwMUY6e31cXHUwMDdGXSskL1xuXG5mdW5jdGlvbiBwb3NzaWJseUNhbGxiYWNrIChhcmdzKSB7XG4gIGxldCBjYiA9IF8ubGFzdChhcmdzKVxuICBpZiAoXy5pc0Z1bmN0aW9uKGNiKSkge1xuICAgIGFyZ3MgPSBfLnNsaWNlKGFyZ3MsIDAsIC0xKVxuICB9IGVsc2Uge1xuICAgIGNiID0gbnVsbFxuICB9XG4gIHJldHVybiBbYXJncywgY2JdXG59XG5cbmZ1bmN0aW9uIGNoZWNrTmFtZVN5bWJvbHMgKG5hbWUpIHtcbiAgaWYgKF8uaXNTdHJpbmcobmFtZSkgJiYgbmFtZUNoZWNrZXIudGVzdChuYW1lKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQ2hhdFNlcnZpY2VFcnJvcignaW52YWxpZE5hbWUnLCBuYW1lKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBleGVjSG9vayAoaG9vaywgLi4uYXJncykge1xuICBpZiAoIWhvb2spIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpIH1cbiAgbGV0IGNiLCBjYWxsYmFja1Jlc3VsdHMsIGhhc1Jlc3VsdHNcbiAgbGV0IHdyYXBwZXIgPSBmdW5jdGlvbiAoLi4uZGF0YSkge1xuICAgIGhhc1Jlc3VsdHMgPSB0cnVlXG4gICAgY2FsbGJhY2tSZXN1bHRzID0gZGF0YVxuICAgIGlmIChjYikgeyBjYiguLi5kYXRhKSB9XG4gIH1cbiAgbGV0IHJlcyA9IGhvb2soLi4uYXJncywgd3JhcHBlcilcbiAgaWYgKGhhc1Jlc3VsdHMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5mcm9tQ2FsbGJhY2soXG4gICAgICBmbiA9PiB7IGZuKC4uLmNhbGxiYWNrUmVzdWx0cykgfSxcbiAgICAgIHttdWx0aUFyZ3M6IHRydWV9KVxuICB9IGVsc2UgaWYgKChyZXMgIT0gbnVsbCkgJiYgdHlwZW9mIHJlcy50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHJlc1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBQcm9taXNlLmZyb21DYWxsYmFjayhmbiA9PiB7IGNiID0gZm4gfSwge211bHRpQXJnczogdHJ1ZX0pXG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuIChzZWxmLCBnZW4pIHtcbiAgcmV0dXJuIFByb21pc2UuY29yb3V0aW5lKGdlbikuY2FsbChzZWxmKVxufVxuXG5mdW5jdGlvbiBsb2dFcnJvciAoZXJyb3IpIHtcbiAgbGV0IGlzU2VydmljZUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBDaGF0U2VydmljZUVycm9yXG4gIGlmICghaXNTZXJ2aWNlRXJyb3IpIHtcbiAgICBkZWJ1Z2xvZyhlcnJvcilcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRFcnJvciAoZXJyb3IsIHVzZVJhd0Vycm9yT2JqZWN0cykge1xuICBpZiAoZXJyb3IgIT0gbnVsbCkge1xuICAgIGlmICghdXNlUmF3RXJyb3JPYmplY3RzKSB7XG4gICAgICByZXR1cm4gZXJyb3IudG9TdHJpbmcoKVxuICAgIH1cbiAgICBsZXQgaXNTZXJ2aWNlRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENoYXRTZXJ2aWNlRXJyb3JcbiAgICBpZiAoIWlzU2VydmljZUVycm9yKSB7XG4gICAgICByZXR1cm4gbmV3IENoYXRTZXJ2aWNlRXJyb3IoJ2ludGVybmFsRXJyb3InLCBlcnJvci50b1N0cmluZygpKVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gcmVzdWx0c1RyYW5zZm9ybSAodXNlUmF3RXJyb3JPYmplY3RzLCBjYikge1xuICBpZiAoIWNiKSB7IHJldHVybiBudWxsIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnJvciwgZGF0YSwgLi4ucmVzdCkge1xuICAgIGVycm9yID0gY29udmVydEVycm9yKGVycm9yLCB1c2VSYXdFcnJvck9iamVjdHMpXG4gICAgaWYgKGVycm9yID09IG51bGwpIHsgZXJyb3IgPSBudWxsIH1cbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7IGRhdGEgPSBudWxsIH1cbiAgICByZXR1cm4gY2IoZXJyb3IsIGRhdGEsIC4uLnJlc3QpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzeW5jTGltaXQsXG4gIGNvbnZlcnRFcnJvcixcbiAgY2hlY2tOYW1lU3ltYm9scyxcbiAgZXhlY0hvb2ssXG4gIGxvZ0Vycm9yLFxuICBwb3NzaWJseUNhbGxiYWNrLFxuICByZXN1bHRzVHJhbnNmb3JtLFxuICBydW5cbn1cbiJdfQ== |
\ | No newline at end of file |