spree_vpago 2.3.13 → 2.3.14.pre.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/assets/config/spree_vpago_manifest.js +2 -0
  4. data/app/assets/javascripts/vpago/wing_mini_app/login.js +75 -0
  5. data/app/assets/javascripts/vpago/wing_mini_app/web_jsbridge.bundle.js +1507 -0
  6. data/app/controllers/concerns/spree/mini_app_concern.rb +25 -0
  7. data/app/controllers/spree/mini_app/acledas_controller.rb +35 -0
  8. data/app/controllers/spree/mini_app/wings_controller.rb +58 -0
  9. data/app/models/spree/gateway/acleda_mini_app.rb +18 -0
  10. data/app/models/spree/gateway/wing_mini_app.rb +58 -0
  11. data/app/models/vpago/payment_decorator.rb +8 -0
  12. data/app/models/vpago/payment_method_decorator.rb +12 -0
  13. data/app/services/vpago/acleda_mini_app/session/create.rb +121 -0
  14. data/app/services/vpago/payment_finder.rb +11 -0
  15. data/app/services/vpago/wing_mini_app/session/create.rb +55 -0
  16. data/app/views/layouts/wing_mini_app.html.erb +20 -0
  17. data/app/views/spree/admin/payments/source_views/_acleda_mini_app.html.erb +6 -0
  18. data/app/views/spree/admin/payments/source_views/_wing_mini_app.html.erb +6 -0
  19. data/app/views/spree/mini_app/wings/show.html.erb +44 -0
  20. data/app/views/spree/vpago_payments/forms/spree/gateway/_acleda_mini_app.html.erb +94 -0
  21. data/app/views/spree/vpago_payments/forms/spree/gateway/_wing_mini_app.html.erb +88 -0
  22. data/app/views/spree/vpago_payments/processing_scripts/spree/gateway/_wing_mini_app.html.erb +15 -0
  23. data/config/routes.rb +14 -0
  24. data/lib/spree_vpago/engine.rb +2 -0
  25. data/lib/spree_vpago/version.rb +1 -1
  26. data/lib/vpago/acleda_mini_app/checkout.rb +19 -0
  27. data/lib/vpago/acleda_mini_app/session_hash_validator.rb +35 -0
  28. data/lib/vpago/wing_mini_app/checkout.rb +60 -0
  29. data/lib/vpago/wing_mini_app/webhook_verifier.rb +78 -0
  30. metadata +24 -4
@@ -0,0 +1,1507 @@
1
+ // Vendored from npm: web-jsbridge@1.0.3 (https://www.npmjs.com/package/web-jsbridge), MIT.
2
+ // Bundled with esbuild (--bundle --format=iife --global-name=WebJSBridge) to inline its
3
+ // eventemitter2 dependency into one self-contained script — the WebView whitelist a mini
4
+ // app runs in can block a CDN fetch silently and blank the page, so this can't be pinned
5
+ // to a CDN (see docs/patterns/bank-mini-app-integration.md). Upstream ships this minified
6
+ // and obfuscated (javascript-obfuscator) already; not re-formatted here so it stays a
7
+ // faithful copy of the published build.
8
+ var WebJSBridge = (() => {
9
+ var __create = Object.create;
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __getProtoOf = Object.getPrototypeOf;
14
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
15
+ var __commonJS = (cb, mod) => function __require() {
16
+ try {
17
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
18
+ } catch (e) {
19
+ throw mod = 0, e;
20
+ }
21
+ };
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
+
44
+ // node_modules/eventemitter2/lib/eventemitter2.js
45
+ var require_eventemitter2 = __commonJS({
46
+ "node_modules/eventemitter2/lib/eventemitter2.js"(exports, module) {
47
+ !(function(undefined2) {
48
+ var hasOwnProperty = Object.hasOwnProperty;
49
+ var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {
50
+ return Object.prototype.toString.call(obj) === "[object Array]";
51
+ };
52
+ var defaultMaxListeners = 10;
53
+ var nextTickSupported = typeof process == "object" && typeof process.nextTick == "function";
54
+ var symbolsSupported = typeof Symbol === "function";
55
+ var reflectSupported = typeof Reflect === "object";
56
+ var setImmediateSupported = typeof setImmediate === "function";
57
+ var _setImmediate = setImmediateSupported ? setImmediate : setTimeout;
58
+ var ownKeys = symbolsSupported ? reflectSupported && typeof Reflect.ownKeys === "function" ? Reflect.ownKeys : function(obj) {
59
+ var arr = Object.getOwnPropertyNames(obj);
60
+ arr.push.apply(arr, Object.getOwnPropertySymbols(obj));
61
+ return arr;
62
+ } : Object.keys;
63
+ function init() {
64
+ this._events = {};
65
+ if (this._conf) {
66
+ configure.call(this, this._conf);
67
+ }
68
+ }
69
+ function configure(conf) {
70
+ if (conf) {
71
+ this._conf = conf;
72
+ conf.delimiter && (this.delimiter = conf.delimiter);
73
+ if (conf.maxListeners !== undefined2) {
74
+ this._maxListeners = conf.maxListeners;
75
+ }
76
+ conf.wildcard && (this.wildcard = conf.wildcard);
77
+ conf.newListener && (this._newListener = conf.newListener);
78
+ conf.removeListener && (this._removeListener = conf.removeListener);
79
+ conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);
80
+ conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);
81
+ if (this.wildcard) {
82
+ this.listenerTree = {};
83
+ }
84
+ }
85
+ }
86
+ function logPossibleMemoryLeak(count, eventName) {
87
+ var errorMsg = "(node) warning: possible EventEmitter memory leak detected. " + count + " listeners added. Use emitter.setMaxListeners() to increase limit.";
88
+ if (this.verboseMemoryLeak) {
89
+ errorMsg += " Event name: " + eventName + ".";
90
+ }
91
+ if (typeof process !== "undefined" && process.emitWarning) {
92
+ var e = new Error(errorMsg);
93
+ e.name = "MaxListenersExceededWarning";
94
+ e.emitter = this;
95
+ e.count = count;
96
+ process.emitWarning(e);
97
+ } else {
98
+ console.error(errorMsg);
99
+ if (console.trace) {
100
+ console.trace();
101
+ }
102
+ }
103
+ }
104
+ var toArray = function(a, b, c) {
105
+ var n = arguments.length;
106
+ switch (n) {
107
+ case 0:
108
+ return [];
109
+ case 1:
110
+ return [a];
111
+ case 2:
112
+ return [a, b];
113
+ case 3:
114
+ return [a, b, c];
115
+ default:
116
+ var arr = new Array(n);
117
+ while (n--) {
118
+ arr[n] = arguments[n];
119
+ }
120
+ return arr;
121
+ }
122
+ };
123
+ function toObject(keys, values) {
124
+ var obj = {};
125
+ var key;
126
+ var len = keys.length;
127
+ var valuesCount = values ? values.length : 0;
128
+ for (var i = 0; i < len; i++) {
129
+ key = keys[i];
130
+ obj[key] = i < valuesCount ? values[i] : undefined2;
131
+ }
132
+ return obj;
133
+ }
134
+ function TargetObserver(emitter2, target, options) {
135
+ this._emitter = emitter2;
136
+ this._target = target;
137
+ this._listeners = {};
138
+ this._listenersCount = 0;
139
+ var on, off;
140
+ if (options.on || options.off) {
141
+ on = options.on;
142
+ off = options.off;
143
+ }
144
+ if (target.addEventListener) {
145
+ on = target.addEventListener;
146
+ off = target.removeEventListener;
147
+ } else if (target.addListener) {
148
+ on = target.addListener;
149
+ off = target.removeListener;
150
+ } else if (target.on) {
151
+ on = target.on;
152
+ off = target.off;
153
+ }
154
+ if (!on && !off) {
155
+ throw Error("target does not implement any known event API");
156
+ }
157
+ if (typeof on !== "function") {
158
+ throw TypeError("on method must be a function");
159
+ }
160
+ if (typeof off !== "function") {
161
+ throw TypeError("off method must be a function");
162
+ }
163
+ this._on = on;
164
+ this._off = off;
165
+ var _observers = emitter2._observers;
166
+ if (_observers) {
167
+ _observers.push(this);
168
+ } else {
169
+ emitter2._observers = [this];
170
+ }
171
+ }
172
+ Object.assign(TargetObserver.prototype, {
173
+ subscribe: function(event, localEvent, reducer) {
174
+ var observer = this;
175
+ var target = this._target;
176
+ var emitter2 = this._emitter;
177
+ var listeners = this._listeners;
178
+ var handler = function() {
179
+ var args = toArray.apply(null, arguments);
180
+ var eventObj = {
181
+ data: args,
182
+ name: localEvent,
183
+ original: event
184
+ };
185
+ if (reducer) {
186
+ var result = reducer.call(target, eventObj);
187
+ if (result !== false) {
188
+ emitter2.emit.apply(emitter2, [eventObj.name].concat(args));
189
+ }
190
+ return;
191
+ }
192
+ emitter2.emit.apply(emitter2, [localEvent].concat(args));
193
+ };
194
+ if (listeners[event]) {
195
+ throw Error("Event '" + event + "' is already listening");
196
+ }
197
+ this._listenersCount++;
198
+ if (emitter2._newListener && emitter2._removeListener && !observer._onNewListener) {
199
+ this._onNewListener = function(_event) {
200
+ if (_event === localEvent && listeners[event] === null) {
201
+ listeners[event] = handler;
202
+ observer._on.call(target, event, handler);
203
+ }
204
+ };
205
+ emitter2.on("newListener", this._onNewListener);
206
+ this._onRemoveListener = function(_event) {
207
+ if (_event === localEvent && !emitter2.hasListeners(_event) && listeners[event]) {
208
+ listeners[event] = null;
209
+ observer._off.call(target, event, handler);
210
+ }
211
+ };
212
+ listeners[event] = null;
213
+ emitter2.on("removeListener", this._onRemoveListener);
214
+ } else {
215
+ listeners[event] = handler;
216
+ observer._on.call(target, event, handler);
217
+ }
218
+ },
219
+ unsubscribe: function(event) {
220
+ var observer = this;
221
+ var listeners = this._listeners;
222
+ var emitter2 = this._emitter;
223
+ var handler;
224
+ var events;
225
+ var off = this._off;
226
+ var target = this._target;
227
+ var i;
228
+ if (event && typeof event !== "string") {
229
+ throw TypeError("event must be a string");
230
+ }
231
+ function clearRefs() {
232
+ if (observer._onNewListener) {
233
+ emitter2.off("newListener", observer._onNewListener);
234
+ emitter2.off("removeListener", observer._onRemoveListener);
235
+ observer._onNewListener = null;
236
+ observer._onRemoveListener = null;
237
+ }
238
+ var index = findTargetIndex.call(emitter2, observer);
239
+ emitter2._observers.splice(index, 1);
240
+ }
241
+ if (event) {
242
+ handler = listeners[event];
243
+ if (!handler) return;
244
+ off.call(target, event, handler);
245
+ delete listeners[event];
246
+ if (!--this._listenersCount) {
247
+ clearRefs();
248
+ }
249
+ } else {
250
+ events = ownKeys(listeners);
251
+ i = events.length;
252
+ while (i-- > 0) {
253
+ event = events[i];
254
+ off.call(target, event, listeners[event]);
255
+ }
256
+ this._listeners = {};
257
+ this._listenersCount = 0;
258
+ clearRefs();
259
+ }
260
+ }
261
+ });
262
+ function resolveOptions(options, schema, reducers, allowUnknown) {
263
+ var computedOptions = Object.assign({}, schema);
264
+ if (!options) return computedOptions;
265
+ if (typeof options !== "object") {
266
+ throw TypeError("options must be an object");
267
+ }
268
+ var keys = Object.keys(options);
269
+ var length = keys.length;
270
+ var option, value;
271
+ var reducer;
272
+ function reject(reason) {
273
+ throw Error('Invalid "' + option + '" option value' + (reason ? ". Reason: " + reason : ""));
274
+ }
275
+ for (var i = 0; i < length; i++) {
276
+ option = keys[i];
277
+ if (!allowUnknown && !hasOwnProperty.call(schema, option)) {
278
+ throw Error('Unknown "' + option + '" option');
279
+ }
280
+ value = options[option];
281
+ if (value !== undefined2) {
282
+ reducer = reducers[option];
283
+ computedOptions[option] = reducer ? reducer(value, reject) : value;
284
+ }
285
+ }
286
+ return computedOptions;
287
+ }
288
+ function constructorReducer(value, reject) {
289
+ if (typeof value !== "function" || !value.hasOwnProperty("prototype")) {
290
+ reject("value must be a constructor");
291
+ }
292
+ return value;
293
+ }
294
+ function makeTypeReducer(types) {
295
+ var message = "value must be type of " + types.join("|");
296
+ var len = types.length;
297
+ var firstType = types[0];
298
+ var secondType = types[1];
299
+ if (len === 1) {
300
+ return function(v, reject) {
301
+ if (typeof v === firstType) {
302
+ return v;
303
+ }
304
+ reject(message);
305
+ };
306
+ }
307
+ if (len === 2) {
308
+ return function(v, reject) {
309
+ var kind = typeof v;
310
+ if (kind === firstType || kind === secondType) return v;
311
+ reject(message);
312
+ };
313
+ }
314
+ return function(v, reject) {
315
+ var kind = typeof v;
316
+ var i = len;
317
+ while (i-- > 0) {
318
+ if (kind === types[i]) return v;
319
+ }
320
+ reject(message);
321
+ };
322
+ }
323
+ var functionReducer = makeTypeReducer(["function"]);
324
+ var objectFunctionReducer = makeTypeReducer(["object", "function"]);
325
+ function makeCancelablePromise(Promise2, executor, options) {
326
+ var isCancelable;
327
+ var callbacks;
328
+ var timer = 0;
329
+ var subscriptionClosed;
330
+ var promise = new Promise2(function(resolve, reject, onCancel) {
331
+ options = resolveOptions(options, {
332
+ timeout: 0,
333
+ overload: false
334
+ }, {
335
+ timeout: function(value, reject2) {
336
+ value *= 1;
337
+ if (typeof value !== "number" || value < 0 || !Number.isFinite(value)) {
338
+ reject2("timeout must be a positive number");
339
+ }
340
+ return value;
341
+ }
342
+ });
343
+ isCancelable = !options.overload && typeof Promise2.prototype.cancel === "function" && typeof onCancel === "function";
344
+ function cleanup() {
345
+ if (callbacks) {
346
+ callbacks = null;
347
+ }
348
+ if (timer) {
349
+ clearTimeout(timer);
350
+ timer = 0;
351
+ }
352
+ }
353
+ var _resolve = function(value) {
354
+ cleanup();
355
+ resolve(value);
356
+ };
357
+ var _reject = function(err) {
358
+ cleanup();
359
+ reject(err);
360
+ };
361
+ if (isCancelable) {
362
+ executor(_resolve, _reject, onCancel);
363
+ } else {
364
+ callbacks = [function(reason) {
365
+ _reject(reason || Error("canceled"));
366
+ }];
367
+ executor(_resolve, _reject, function(cb) {
368
+ if (subscriptionClosed) {
369
+ throw Error("Unable to subscribe on cancel event asynchronously");
370
+ }
371
+ if (typeof cb !== "function") {
372
+ throw TypeError("onCancel callback must be a function");
373
+ }
374
+ callbacks.push(cb);
375
+ });
376
+ subscriptionClosed = true;
377
+ }
378
+ if (options.timeout > 0) {
379
+ timer = setTimeout(function() {
380
+ var reason = Error("timeout");
381
+ reason.code = "ETIMEDOUT";
382
+ timer = 0;
383
+ promise.cancel(reason);
384
+ reject(reason);
385
+ }, options.timeout);
386
+ }
387
+ });
388
+ if (!isCancelable) {
389
+ promise.cancel = function(reason) {
390
+ if (!callbacks) {
391
+ return;
392
+ }
393
+ var length = callbacks.length;
394
+ for (var i = 1; i < length; i++) {
395
+ callbacks[i](reason);
396
+ }
397
+ callbacks[0](reason);
398
+ callbacks = null;
399
+ };
400
+ }
401
+ return promise;
402
+ }
403
+ function findTargetIndex(observer) {
404
+ var observers = this._observers;
405
+ if (!observers) {
406
+ return -1;
407
+ }
408
+ var len = observers.length;
409
+ for (var i = 0; i < len; i++) {
410
+ if (observers[i]._target === observer) return i;
411
+ }
412
+ return -1;
413
+ }
414
+ function searchListenerTree(handlers, type, tree, i, typeLength) {
415
+ if (!tree) {
416
+ return null;
417
+ }
418
+ if (i === 0) {
419
+ var kind = typeof type;
420
+ if (kind === "string") {
421
+ var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;
422
+ if ((n = type.indexOf(delimiter)) !== -1) {
423
+ ns = new Array(5);
424
+ do {
425
+ ns[l++] = type.slice(j, n);
426
+ j = n + dl;
427
+ } while ((n = type.indexOf(delimiter, j)) !== -1);
428
+ ns[l++] = type.slice(j);
429
+ type = ns;
430
+ typeLength = l;
431
+ } else {
432
+ type = [type];
433
+ typeLength = 1;
434
+ }
435
+ } else if (kind === "object") {
436
+ typeLength = type.length;
437
+ } else {
438
+ type = [type];
439
+ typeLength = 1;
440
+ }
441
+ }
442
+ var listeners = null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i], nextType = type[i + 1], branches, _listeners;
443
+ if (i === typeLength) {
444
+ if (tree._listeners) {
445
+ if (typeof tree._listeners === "function") {
446
+ handlers && handlers.push(tree._listeners);
447
+ listeners = [tree];
448
+ } else {
449
+ handlers && handlers.push.apply(handlers, tree._listeners);
450
+ listeners = [tree];
451
+ }
452
+ }
453
+ } else {
454
+ if (currentType === "*") {
455
+ branches = ownKeys(tree);
456
+ n = branches.length;
457
+ while (n-- > 0) {
458
+ branch = branches[n];
459
+ if (branch !== "_listeners") {
460
+ _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);
461
+ if (_listeners) {
462
+ if (listeners) {
463
+ listeners.push.apply(listeners, _listeners);
464
+ } else {
465
+ listeners = _listeners;
466
+ }
467
+ }
468
+ }
469
+ }
470
+ return listeners;
471
+ } else if (currentType === "**") {
472
+ endReached = i + 1 === typeLength || i + 2 === typeLength && nextType === "*";
473
+ if (endReached && tree._listeners) {
474
+ listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);
475
+ }
476
+ branches = ownKeys(tree);
477
+ n = branches.length;
478
+ while (n-- > 0) {
479
+ branch = branches[n];
480
+ if (branch !== "_listeners") {
481
+ if (branch === "*" || branch === "**") {
482
+ if (tree[branch]._listeners && !endReached) {
483
+ _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);
484
+ if (_listeners) {
485
+ if (listeners) {
486
+ listeners.push.apply(listeners, _listeners);
487
+ } else {
488
+ listeners = _listeners;
489
+ }
490
+ }
491
+ }
492
+ _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);
493
+ } else if (branch === nextType) {
494
+ _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);
495
+ } else {
496
+ _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);
497
+ }
498
+ if (_listeners) {
499
+ if (listeners) {
500
+ listeners.push.apply(listeners, _listeners);
501
+ } else {
502
+ listeners = _listeners;
503
+ }
504
+ }
505
+ }
506
+ }
507
+ return listeners;
508
+ } else if (tree[currentType]) {
509
+ listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);
510
+ }
511
+ }
512
+ xTree = tree["*"];
513
+ if (xTree) {
514
+ searchListenerTree(handlers, type, xTree, i + 1, typeLength);
515
+ }
516
+ xxTree = tree["**"];
517
+ if (xxTree) {
518
+ if (i < typeLength) {
519
+ if (xxTree._listeners) {
520
+ searchListenerTree(handlers, type, xxTree, typeLength, typeLength);
521
+ }
522
+ branches = ownKeys(xxTree);
523
+ n = branches.length;
524
+ while (n-- > 0) {
525
+ branch = branches[n];
526
+ if (branch !== "_listeners") {
527
+ if (branch === nextType) {
528
+ searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);
529
+ } else if (branch === currentType) {
530
+ searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);
531
+ } else {
532
+ isolatedBranch = {};
533
+ isolatedBranch[branch] = xxTree[branch];
534
+ searchListenerTree(handlers, type, { "**": isolatedBranch }, i + 1, typeLength);
535
+ }
536
+ }
537
+ }
538
+ } else if (xxTree._listeners) {
539
+ searchListenerTree(handlers, type, xxTree, typeLength, typeLength);
540
+ } else if (xxTree["*"] && xxTree["*"]._listeners) {
541
+ searchListenerTree(handlers, type, xxTree["*"], typeLength, typeLength);
542
+ }
543
+ }
544
+ return listeners;
545
+ }
546
+ function growListenerTree(type, listener, prepend) {
547
+ var len = 0, j = 0, i, delimiter = this.delimiter, dl = delimiter.length, ns;
548
+ if (typeof type === "string") {
549
+ if ((i = type.indexOf(delimiter)) !== -1) {
550
+ ns = new Array(5);
551
+ do {
552
+ ns[len++] = type.slice(j, i);
553
+ j = i + dl;
554
+ } while ((i = type.indexOf(delimiter, j)) !== -1);
555
+ ns[len++] = type.slice(j);
556
+ } else {
557
+ ns = [type];
558
+ len = 1;
559
+ }
560
+ } else {
561
+ ns = type;
562
+ len = type.length;
563
+ }
564
+ if (len > 1) {
565
+ for (i = 0; i + 1 < len; i++) {
566
+ if (ns[i] === "**" && ns[i + 1] === "**") {
567
+ return;
568
+ }
569
+ }
570
+ }
571
+ var tree = this.listenerTree, name;
572
+ for (i = 0; i < len; i++) {
573
+ name = ns[i];
574
+ tree = tree[name] || (tree[name] = {});
575
+ if (i === len - 1) {
576
+ if (!tree._listeners) {
577
+ tree._listeners = listener;
578
+ } else {
579
+ if (typeof tree._listeners === "function") {
580
+ tree._listeners = [tree._listeners];
581
+ }
582
+ if (prepend) {
583
+ tree._listeners.unshift(listener);
584
+ } else {
585
+ tree._listeners.push(listener);
586
+ }
587
+ if (!tree._listeners.warned && this._maxListeners > 0 && tree._listeners.length > this._maxListeners) {
588
+ tree._listeners.warned = true;
589
+ logPossibleMemoryLeak.call(this, tree._listeners.length, name);
590
+ }
591
+ }
592
+ return true;
593
+ }
594
+ }
595
+ return true;
596
+ }
597
+ function collectTreeEvents(tree, events, root, asArray) {
598
+ var branches = ownKeys(tree);
599
+ var i = branches.length;
600
+ var branch, branchName, path;
601
+ var hasListeners = tree["_listeners"];
602
+ var isArrayPath;
603
+ while (i-- > 0) {
604
+ branchName = branches[i];
605
+ branch = tree[branchName];
606
+ if (branchName === "_listeners") {
607
+ path = root;
608
+ } else {
609
+ path = root ? root.concat(branchName) : [branchName];
610
+ }
611
+ isArrayPath = asArray || typeof branchName === "symbol";
612
+ hasListeners && events.push(isArrayPath ? path : path.join(this.delimiter));
613
+ if (typeof branch === "object") {
614
+ collectTreeEvents.call(this, branch, events, path, isArrayPath);
615
+ }
616
+ }
617
+ return events;
618
+ }
619
+ function recursivelyGarbageCollect(root) {
620
+ var keys = ownKeys(root);
621
+ var i = keys.length;
622
+ var obj, key, flag;
623
+ while (i-- > 0) {
624
+ key = keys[i];
625
+ obj = root[key];
626
+ if (obj) {
627
+ flag = true;
628
+ if (key !== "_listeners" && !recursivelyGarbageCollect(obj)) {
629
+ delete root[key];
630
+ }
631
+ }
632
+ }
633
+ return flag;
634
+ }
635
+ function Listener(emitter2, event, listener) {
636
+ this.emitter = emitter2;
637
+ this.event = event;
638
+ this.listener = listener;
639
+ }
640
+ Listener.prototype.off = function() {
641
+ this.emitter.off(this.event, this.listener);
642
+ return this;
643
+ };
644
+ function setupListener(event, listener, options) {
645
+ if (options === true) {
646
+ promisify = true;
647
+ } else if (options === false) {
648
+ async = true;
649
+ } else {
650
+ if (!options || typeof options !== "object") {
651
+ throw TypeError("options should be an object or true");
652
+ }
653
+ var async = options.async;
654
+ var promisify = options.promisify;
655
+ var nextTick = options.nextTick;
656
+ var objectify = options.objectify;
657
+ }
658
+ if (async || nextTick || promisify) {
659
+ var _listener = listener;
660
+ var _origin = listener._origin || listener;
661
+ if (nextTick && !nextTickSupported) {
662
+ throw Error("process.nextTick is not supported");
663
+ }
664
+ if (promisify === undefined2) {
665
+ promisify = listener.constructor.name === "AsyncFunction";
666
+ }
667
+ listener = function() {
668
+ var args = arguments;
669
+ var context = this;
670
+ var event2 = this.event;
671
+ return promisify ? nextTick ? Promise.resolve() : new Promise(function(resolve) {
672
+ _setImmediate(resolve);
673
+ }).then(function() {
674
+ context.event = event2;
675
+ return _listener.apply(context, args);
676
+ }) : (nextTick ? process.nextTick : _setImmediate)(function() {
677
+ context.event = event2;
678
+ _listener.apply(context, args);
679
+ });
680
+ };
681
+ listener._async = true;
682
+ listener._origin = _origin;
683
+ }
684
+ return [listener, objectify ? new Listener(this, event, listener) : this];
685
+ }
686
+ function EventEmitter(conf) {
687
+ this._events = {};
688
+ this._newListener = false;
689
+ this._removeListener = false;
690
+ this.verboseMemoryLeak = false;
691
+ configure.call(this, conf);
692
+ }
693
+ EventEmitter.EventEmitter2 = EventEmitter;
694
+ EventEmitter.prototype.listenTo = function(target, events, options) {
695
+ if (typeof target !== "object") {
696
+ throw TypeError("target musts be an object");
697
+ }
698
+ var emitter2 = this;
699
+ options = resolveOptions(options, {
700
+ on: undefined2,
701
+ off: undefined2,
702
+ reducers: undefined2
703
+ }, {
704
+ on: functionReducer,
705
+ off: functionReducer,
706
+ reducers: objectFunctionReducer
707
+ });
708
+ function listen(events2) {
709
+ if (typeof events2 !== "object") {
710
+ throw TypeError("events must be an object");
711
+ }
712
+ var reducers = options.reducers;
713
+ var index = findTargetIndex.call(emitter2, target);
714
+ var observer;
715
+ if (index === -1) {
716
+ observer = new TargetObserver(emitter2, target, options);
717
+ } else {
718
+ observer = emitter2._observers[index];
719
+ }
720
+ var keys = ownKeys(events2);
721
+ var len = keys.length;
722
+ var event;
723
+ var isSingleReducer = typeof reducers === "function";
724
+ for (var i = 0; i < len; i++) {
725
+ event = keys[i];
726
+ observer.subscribe(
727
+ event,
728
+ events2[event] || event,
729
+ isSingleReducer ? reducers : reducers && reducers[event]
730
+ );
731
+ }
732
+ }
733
+ isArray(events) ? listen(toObject(events)) : typeof events === "string" ? listen(toObject(events.split(/\s+/))) : listen(events);
734
+ return this;
735
+ };
736
+ EventEmitter.prototype.stopListeningTo = function(target, event) {
737
+ var observers = this._observers;
738
+ if (!observers) {
739
+ return false;
740
+ }
741
+ var i = observers.length;
742
+ var observer;
743
+ var matched = false;
744
+ if (target && typeof target !== "object") {
745
+ throw TypeError("target should be an object");
746
+ }
747
+ while (i-- > 0) {
748
+ observer = observers[i];
749
+ if (!target || observer._target === target) {
750
+ observer.unsubscribe(event);
751
+ matched = true;
752
+ }
753
+ }
754
+ return matched;
755
+ };
756
+ EventEmitter.prototype.delimiter = ".";
757
+ EventEmitter.prototype.setMaxListeners = function(n) {
758
+ if (n !== undefined2) {
759
+ this._maxListeners = n;
760
+ if (!this._conf) this._conf = {};
761
+ this._conf.maxListeners = n;
762
+ }
763
+ };
764
+ EventEmitter.prototype.getMaxListeners = function() {
765
+ return this._maxListeners;
766
+ };
767
+ EventEmitter.prototype.event = "";
768
+ EventEmitter.prototype.once = function(event, fn, options) {
769
+ return this._once(event, fn, false, options);
770
+ };
771
+ EventEmitter.prototype.prependOnceListener = function(event, fn, options) {
772
+ return this._once(event, fn, true, options);
773
+ };
774
+ EventEmitter.prototype._once = function(event, fn, prepend, options) {
775
+ return this._many(event, 1, fn, prepend, options);
776
+ };
777
+ EventEmitter.prototype.many = function(event, ttl, fn, options) {
778
+ return this._many(event, ttl, fn, false, options);
779
+ };
780
+ EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {
781
+ return this._many(event, ttl, fn, true, options);
782
+ };
783
+ EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {
784
+ var self = this;
785
+ if (typeof fn !== "function") {
786
+ throw new Error("many only accepts instances of Function");
787
+ }
788
+ function listener() {
789
+ if (--ttl === 0) {
790
+ self.off(event, listener);
791
+ }
792
+ return fn.apply(this, arguments);
793
+ }
794
+ listener._origin = fn;
795
+ return this._on(event, listener, prepend, options);
796
+ };
797
+ EventEmitter.prototype.emit = function() {
798
+ if (!this._events && !this._all) {
799
+ return false;
800
+ }
801
+ this._events || init.call(this);
802
+ var type = arguments[0], ns, wildcard = this.wildcard;
803
+ var args, l, i, j, containsSymbol;
804
+ if (type === "newListener" && !this._newListener) {
805
+ if (!this._events.newListener) {
806
+ return false;
807
+ }
808
+ }
809
+ if (wildcard) {
810
+ ns = type;
811
+ if (type !== "newListener" && type !== "removeListener") {
812
+ if (typeof type === "object") {
813
+ l = type.length;
814
+ if (symbolsSupported) {
815
+ for (i = 0; i < l; i++) {
816
+ if (typeof type[i] === "symbol") {
817
+ containsSymbol = true;
818
+ break;
819
+ }
820
+ }
821
+ }
822
+ if (!containsSymbol) {
823
+ type = type.join(this.delimiter);
824
+ }
825
+ }
826
+ }
827
+ }
828
+ var al = arguments.length;
829
+ var handler;
830
+ if (this._all && this._all.length) {
831
+ handler = this._all.slice();
832
+ for (i = 0, l = handler.length; i < l; i++) {
833
+ this.event = type;
834
+ switch (al) {
835
+ case 1:
836
+ handler[i].call(this, type);
837
+ break;
838
+ case 2:
839
+ handler[i].call(this, type, arguments[1]);
840
+ break;
841
+ case 3:
842
+ handler[i].call(this, type, arguments[1], arguments[2]);
843
+ break;
844
+ default:
845
+ handler[i].apply(this, arguments);
846
+ }
847
+ }
848
+ }
849
+ if (wildcard) {
850
+ handler = [];
851
+ searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);
852
+ } else {
853
+ handler = this._events[type];
854
+ if (typeof handler === "function") {
855
+ this.event = type;
856
+ switch (al) {
857
+ case 1:
858
+ handler.call(this);
859
+ break;
860
+ case 2:
861
+ handler.call(this, arguments[1]);
862
+ break;
863
+ case 3:
864
+ handler.call(this, arguments[1], arguments[2]);
865
+ break;
866
+ default:
867
+ args = new Array(al - 1);
868
+ for (j = 1; j < al; j++) args[j - 1] = arguments[j];
869
+ handler.apply(this, args);
870
+ }
871
+ return true;
872
+ } else if (handler) {
873
+ handler = handler.slice();
874
+ }
875
+ }
876
+ if (handler && handler.length) {
877
+ if (al > 3) {
878
+ args = new Array(al - 1);
879
+ for (j = 1; j < al; j++) args[j - 1] = arguments[j];
880
+ }
881
+ for (i = 0, l = handler.length; i < l; i++) {
882
+ this.event = type;
883
+ switch (al) {
884
+ case 1:
885
+ handler[i].call(this);
886
+ break;
887
+ case 2:
888
+ handler[i].call(this, arguments[1]);
889
+ break;
890
+ case 3:
891
+ handler[i].call(this, arguments[1], arguments[2]);
892
+ break;
893
+ default:
894
+ handler[i].apply(this, args);
895
+ }
896
+ }
897
+ return true;
898
+ } else if (!this.ignoreErrors && !this._all && type === "error") {
899
+ if (arguments[1] instanceof Error) {
900
+ throw arguments[1];
901
+ } else {
902
+ throw new Error("Uncaught, unspecified 'error' event.");
903
+ }
904
+ }
905
+ return !!this._all;
906
+ };
907
+ EventEmitter.prototype.emitAsync = function() {
908
+ if (!this._events && !this._all) {
909
+ return false;
910
+ }
911
+ this._events || init.call(this);
912
+ var type = arguments[0], wildcard = this.wildcard, ns, containsSymbol;
913
+ var args, l, i, j;
914
+ if (type === "newListener" && !this._newListener) {
915
+ if (!this._events.newListener) {
916
+ return Promise.resolve([false]);
917
+ }
918
+ }
919
+ if (wildcard) {
920
+ ns = type;
921
+ if (type !== "newListener" && type !== "removeListener") {
922
+ if (typeof type === "object") {
923
+ l = type.length;
924
+ if (symbolsSupported) {
925
+ for (i = 0; i < l; i++) {
926
+ if (typeof type[i] === "symbol") {
927
+ containsSymbol = true;
928
+ break;
929
+ }
930
+ }
931
+ }
932
+ if (!containsSymbol) {
933
+ type = type.join(this.delimiter);
934
+ }
935
+ }
936
+ }
937
+ }
938
+ var promises = [];
939
+ var al = arguments.length;
940
+ var handler;
941
+ if (this._all) {
942
+ for (i = 0, l = this._all.length; i < l; i++) {
943
+ this.event = type;
944
+ switch (al) {
945
+ case 1:
946
+ promises.push(this._all[i].call(this, type));
947
+ break;
948
+ case 2:
949
+ promises.push(this._all[i].call(this, type, arguments[1]));
950
+ break;
951
+ case 3:
952
+ promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));
953
+ break;
954
+ default:
955
+ promises.push(this._all[i].apply(this, arguments));
956
+ }
957
+ }
958
+ }
959
+ if (wildcard) {
960
+ handler = [];
961
+ searchListenerTree.call(this, handler, ns, this.listenerTree, 0);
962
+ } else {
963
+ handler = this._events[type];
964
+ }
965
+ if (typeof handler === "function") {
966
+ this.event = type;
967
+ switch (al) {
968
+ case 1:
969
+ promises.push(handler.call(this));
970
+ break;
971
+ case 2:
972
+ promises.push(handler.call(this, arguments[1]));
973
+ break;
974
+ case 3:
975
+ promises.push(handler.call(this, arguments[1], arguments[2]));
976
+ break;
977
+ default:
978
+ args = new Array(al - 1);
979
+ for (j = 1; j < al; j++) args[j - 1] = arguments[j];
980
+ promises.push(handler.apply(this, args));
981
+ }
982
+ } else if (handler && handler.length) {
983
+ handler = handler.slice();
984
+ if (al > 3) {
985
+ args = new Array(al - 1);
986
+ for (j = 1; j < al; j++) args[j - 1] = arguments[j];
987
+ }
988
+ for (i = 0, l = handler.length; i < l; i++) {
989
+ this.event = type;
990
+ switch (al) {
991
+ case 1:
992
+ promises.push(handler[i].call(this));
993
+ break;
994
+ case 2:
995
+ promises.push(handler[i].call(this, arguments[1]));
996
+ break;
997
+ case 3:
998
+ promises.push(handler[i].call(this, arguments[1], arguments[2]));
999
+ break;
1000
+ default:
1001
+ promises.push(handler[i].apply(this, args));
1002
+ }
1003
+ }
1004
+ } else if (!this.ignoreErrors && !this._all && type === "error") {
1005
+ if (arguments[1] instanceof Error) {
1006
+ return Promise.reject(arguments[1]);
1007
+ } else {
1008
+ return Promise.reject("Uncaught, unspecified 'error' event.");
1009
+ }
1010
+ }
1011
+ return Promise.all(promises);
1012
+ };
1013
+ EventEmitter.prototype.on = function(type, listener, options) {
1014
+ return this._on(type, listener, false, options);
1015
+ };
1016
+ EventEmitter.prototype.prependListener = function(type, listener, options) {
1017
+ return this._on(type, listener, true, options);
1018
+ };
1019
+ EventEmitter.prototype.onAny = function(fn) {
1020
+ return this._onAny(fn, false);
1021
+ };
1022
+ EventEmitter.prototype.prependAny = function(fn) {
1023
+ return this._onAny(fn, true);
1024
+ };
1025
+ EventEmitter.prototype.addListener = EventEmitter.prototype.on;
1026
+ EventEmitter.prototype._onAny = function(fn, prepend) {
1027
+ if (typeof fn !== "function") {
1028
+ throw new Error("onAny only accepts instances of Function");
1029
+ }
1030
+ if (!this._all) {
1031
+ this._all = [];
1032
+ }
1033
+ if (prepend) {
1034
+ this._all.unshift(fn);
1035
+ } else {
1036
+ this._all.push(fn);
1037
+ }
1038
+ return this;
1039
+ };
1040
+ EventEmitter.prototype._on = function(type, listener, prepend, options) {
1041
+ if (typeof type === "function") {
1042
+ this._onAny(type, listener);
1043
+ return this;
1044
+ }
1045
+ if (typeof listener !== "function") {
1046
+ throw new Error("on only accepts instances of Function");
1047
+ }
1048
+ this._events || init.call(this);
1049
+ var returnValue = this, temp;
1050
+ if (options !== undefined2) {
1051
+ temp = setupListener.call(this, type, listener, options);
1052
+ listener = temp[0];
1053
+ returnValue = temp[1];
1054
+ }
1055
+ if (this._newListener) {
1056
+ this.emit("newListener", type, listener);
1057
+ }
1058
+ if (this.wildcard) {
1059
+ growListenerTree.call(this, type, listener, prepend);
1060
+ return returnValue;
1061
+ }
1062
+ if (!this._events[type]) {
1063
+ this._events[type] = listener;
1064
+ } else {
1065
+ if (typeof this._events[type] === "function") {
1066
+ this._events[type] = [this._events[type]];
1067
+ }
1068
+ if (prepend) {
1069
+ this._events[type].unshift(listener);
1070
+ } else {
1071
+ this._events[type].push(listener);
1072
+ }
1073
+ if (!this._events[type].warned && this._maxListeners > 0 && this._events[type].length > this._maxListeners) {
1074
+ this._events[type].warned = true;
1075
+ logPossibleMemoryLeak.call(this, this._events[type].length, type);
1076
+ }
1077
+ }
1078
+ return returnValue;
1079
+ };
1080
+ EventEmitter.prototype.off = function(type, listener) {
1081
+ if (typeof listener !== "function") {
1082
+ throw new Error("removeListener only takes instances of Function");
1083
+ }
1084
+ var handlers, leafs = [];
1085
+ if (this.wildcard) {
1086
+ var ns = typeof type === "string" ? type.split(this.delimiter) : type.slice();
1087
+ leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);
1088
+ if (!leafs) return this;
1089
+ } else {
1090
+ if (!this._events[type]) return this;
1091
+ handlers = this._events[type];
1092
+ leafs.push({ _listeners: handlers });
1093
+ }
1094
+ for (var iLeaf = 0; iLeaf < leafs.length; iLeaf++) {
1095
+ var leaf = leafs[iLeaf];
1096
+ handlers = leaf._listeners;
1097
+ if (isArray(handlers)) {
1098
+ var position = -1;
1099
+ for (var i = 0, length = handlers.length; i < length; i++) {
1100
+ if (handlers[i] === listener || handlers[i].listener && handlers[i].listener === listener || handlers[i]._origin && handlers[i]._origin === listener) {
1101
+ position = i;
1102
+ break;
1103
+ }
1104
+ }
1105
+ if (position < 0) {
1106
+ continue;
1107
+ }
1108
+ if (this.wildcard) {
1109
+ leaf._listeners.splice(position, 1);
1110
+ } else {
1111
+ this._events[type].splice(position, 1);
1112
+ }
1113
+ if (handlers.length === 0) {
1114
+ if (this.wildcard) {
1115
+ delete leaf._listeners;
1116
+ } else {
1117
+ delete this._events[type];
1118
+ }
1119
+ }
1120
+ if (this._removeListener)
1121
+ this.emit("removeListener", type, listener);
1122
+ return this;
1123
+ } else if (handlers === listener || handlers.listener && handlers.listener === listener || handlers._origin && handlers._origin === listener) {
1124
+ if (this.wildcard) {
1125
+ delete leaf._listeners;
1126
+ } else {
1127
+ delete this._events[type];
1128
+ }
1129
+ if (this._removeListener)
1130
+ this.emit("removeListener", type, listener);
1131
+ }
1132
+ }
1133
+ this.listenerTree && recursivelyGarbageCollect(this.listenerTree);
1134
+ return this;
1135
+ };
1136
+ EventEmitter.prototype.offAny = function(fn) {
1137
+ var i = 0, l = 0, fns;
1138
+ if (fn && this._all && this._all.length > 0) {
1139
+ fns = this._all;
1140
+ for (i = 0, l = fns.length; i < l; i++) {
1141
+ if (fn === fns[i]) {
1142
+ fns.splice(i, 1);
1143
+ if (this._removeListener)
1144
+ this.emit("removeListenerAny", fn);
1145
+ return this;
1146
+ }
1147
+ }
1148
+ } else {
1149
+ fns = this._all;
1150
+ if (this._removeListener) {
1151
+ for (i = 0, l = fns.length; i < l; i++)
1152
+ this.emit("removeListenerAny", fns[i]);
1153
+ }
1154
+ this._all = [];
1155
+ }
1156
+ return this;
1157
+ };
1158
+ EventEmitter.prototype.removeListener = EventEmitter.prototype.off;
1159
+ EventEmitter.prototype.removeAllListeners = function(type) {
1160
+ if (type === undefined2) {
1161
+ !this._events || init.call(this);
1162
+ return this;
1163
+ }
1164
+ if (this.wildcard) {
1165
+ var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;
1166
+ if (!leafs) return this;
1167
+ for (i = 0; i < leafs.length; i++) {
1168
+ leaf = leafs[i];
1169
+ leaf._listeners = null;
1170
+ }
1171
+ this.listenerTree && recursivelyGarbageCollect(this.listenerTree);
1172
+ } else if (this._events) {
1173
+ this._events[type] = null;
1174
+ }
1175
+ return this;
1176
+ };
1177
+ EventEmitter.prototype.listeners = function(type) {
1178
+ var _events = this._events;
1179
+ var keys, listeners, allListeners;
1180
+ var i;
1181
+ var listenerTree;
1182
+ if (type === undefined2) {
1183
+ if (this.wildcard) {
1184
+ throw Error("event name required for wildcard emitter");
1185
+ }
1186
+ if (!_events) {
1187
+ return [];
1188
+ }
1189
+ keys = ownKeys(_events);
1190
+ i = keys.length;
1191
+ allListeners = [];
1192
+ while (i-- > 0) {
1193
+ listeners = _events[keys[i]];
1194
+ if (typeof listeners === "function") {
1195
+ allListeners.push(listeners);
1196
+ } else {
1197
+ allListeners.push.apply(allListeners, listeners);
1198
+ }
1199
+ }
1200
+ return allListeners;
1201
+ } else {
1202
+ if (this.wildcard) {
1203
+ listenerTree = this.listenerTree;
1204
+ if (!listenerTree) return [];
1205
+ var handlers = [];
1206
+ var ns = typeof type === "string" ? type.split(this.delimiter) : type.slice();
1207
+ searchListenerTree.call(this, handlers, ns, listenerTree, 0);
1208
+ return handlers;
1209
+ }
1210
+ if (!_events) {
1211
+ return [];
1212
+ }
1213
+ listeners = _events[type];
1214
+ if (!listeners) {
1215
+ return [];
1216
+ }
1217
+ return typeof listeners === "function" ? [listeners] : listeners;
1218
+ }
1219
+ };
1220
+ EventEmitter.prototype.eventNames = function(nsAsArray) {
1221
+ var _events = this._events;
1222
+ return this.wildcard ? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : _events ? ownKeys(_events) : [];
1223
+ };
1224
+ EventEmitter.prototype.listenerCount = function(type) {
1225
+ return this.listeners(type).length;
1226
+ };
1227
+ EventEmitter.prototype.hasListeners = function(type) {
1228
+ if (this.wildcard) {
1229
+ var handlers = [];
1230
+ var ns = typeof type === "string" ? type.split(this.delimiter) : type.slice();
1231
+ searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);
1232
+ return handlers.length > 0;
1233
+ }
1234
+ var _events = this._events;
1235
+ var _all = this._all;
1236
+ return !!(_all && _all.length || _events && (type === undefined2 ? ownKeys(_events).length : _events[type]));
1237
+ };
1238
+ EventEmitter.prototype.listenersAny = function() {
1239
+ if (this._all) {
1240
+ return this._all;
1241
+ } else {
1242
+ return [];
1243
+ }
1244
+ };
1245
+ EventEmitter.prototype.waitFor = function(event, options) {
1246
+ var self = this;
1247
+ var type = typeof options;
1248
+ if (type === "number") {
1249
+ options = { timeout: options };
1250
+ } else if (type === "function") {
1251
+ options = { filter: options };
1252
+ }
1253
+ options = resolveOptions(options, {
1254
+ timeout: 0,
1255
+ filter: undefined2,
1256
+ handleError: false,
1257
+ Promise,
1258
+ overload: false
1259
+ }, {
1260
+ filter: functionReducer,
1261
+ Promise: constructorReducer
1262
+ });
1263
+ return makeCancelablePromise(options.Promise, function(resolve, reject, onCancel) {
1264
+ function listener() {
1265
+ var filter = options.filter;
1266
+ if (filter && !filter.apply(self, arguments)) {
1267
+ return;
1268
+ }
1269
+ self.off(event, listener);
1270
+ if (options.handleError) {
1271
+ var err = arguments[0];
1272
+ err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));
1273
+ } else {
1274
+ resolve(toArray.apply(null, arguments));
1275
+ }
1276
+ }
1277
+ onCancel(function() {
1278
+ self.off(event, listener);
1279
+ });
1280
+ self._on(event, listener, false);
1281
+ }, {
1282
+ timeout: options.timeout,
1283
+ overload: options.overload
1284
+ });
1285
+ };
1286
+ function once(emitter2, name, options) {
1287
+ options = resolveOptions(options, {
1288
+ Promise,
1289
+ timeout: 0,
1290
+ overload: false
1291
+ }, {
1292
+ Promise: constructorReducer
1293
+ });
1294
+ var _Promise = options.Promise;
1295
+ return makeCancelablePromise(_Promise, function(resolve, reject, onCancel) {
1296
+ var handler;
1297
+ if (typeof emitter2.addEventListener === "function") {
1298
+ handler = function() {
1299
+ resolve(toArray.apply(null, arguments));
1300
+ };
1301
+ onCancel(function() {
1302
+ emitter2.removeEventListener(name, handler);
1303
+ });
1304
+ emitter2.addEventListener(
1305
+ name,
1306
+ handler,
1307
+ { once: true }
1308
+ );
1309
+ return;
1310
+ }
1311
+ var eventListener = function() {
1312
+ errorListener && emitter2.removeListener("error", errorListener);
1313
+ resolve(toArray.apply(null, arguments));
1314
+ };
1315
+ var errorListener;
1316
+ if (name !== "error") {
1317
+ errorListener = function(err) {
1318
+ emitter2.removeListener(name, eventListener);
1319
+ reject(err);
1320
+ };
1321
+ emitter2.once("error", errorListener);
1322
+ }
1323
+ onCancel(function() {
1324
+ errorListener && emitter2.removeListener("error", errorListener);
1325
+ emitter2.removeListener(name, eventListener);
1326
+ });
1327
+ emitter2.once(name, eventListener);
1328
+ }, {
1329
+ timeout: options.timeout,
1330
+ overload: options.overload
1331
+ });
1332
+ }
1333
+ var prototype = EventEmitter.prototype;
1334
+ Object.defineProperties(EventEmitter, {
1335
+ defaultMaxListeners: {
1336
+ get: function() {
1337
+ return prototype._maxListeners;
1338
+ },
1339
+ set: function(n) {
1340
+ if (typeof n !== "number" || n < 0 || Number.isNaN(n)) {
1341
+ throw TypeError("n must be a non-negative number");
1342
+ }
1343
+ prototype._maxListeners = n;
1344
+ },
1345
+ enumerable: true
1346
+ },
1347
+ once: {
1348
+ value: once,
1349
+ writable: true,
1350
+ configurable: true
1351
+ }
1352
+ });
1353
+ Object.defineProperties(prototype, {
1354
+ _maxListeners: {
1355
+ value: defaultMaxListeners,
1356
+ writable: true,
1357
+ configurable: true
1358
+ },
1359
+ _observers: { value: null, writable: true, configurable: true }
1360
+ });
1361
+ if (typeof define === "function" && define.amd) {
1362
+ define(function() {
1363
+ return EventEmitter;
1364
+ });
1365
+ } else if (typeof exports === "object") {
1366
+ module.exports = EventEmitter;
1367
+ } else {
1368
+ var _global = new Function("", "return this")();
1369
+ _global.EventEmitter2 = EventEmitter;
1370
+ }
1371
+ })();
1372
+ }
1373
+ });
1374
+
1375
+ // node_modules/web-jsbridge/dist/index.js
1376
+ var index_exports = {};
1377
+ __export(index_exports, {
1378
+ $bridge: () => $bridge,
1379
+ callHandler: () => callHandler,
1380
+ registerHandler: () => registerHandler
1381
+ });
1382
+ var import_eventemitter2 = __toESM(require_eventemitter2(), 1);
1383
+ var _0x2e7baf = _0x2f82;
1384
+ function _0x2f82(_0x5ea409, _0x29e1e8) {
1385
+ var _0x341c2d = _0x4212();
1386
+ return _0x2f82 = function(_0x4a892d, _0x276a45) {
1387
+ _0x4a892d = _0x4a892d - (-1 * 1894 + 7 * 1037 + -5029);
1388
+ var _0x17ded5 = _0x341c2d[_0x4a892d];
1389
+ if (_0x2f82["GPQOdt"] === void 0) {
1390
+ var _0x34759c = function(_0x5c5592) {
1391
+ var _0x36df40 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=";
1392
+ var _0x2ddac4 = "", _0x46e2d7 = "";
1393
+ for (var _0x417b8f = -2859 * -3 + 2646 + 3 * -3741, _0x5b202b, _0x16d939, _0x5dec9f = -27 * 201 + -1026 + 3 * 2151; _0x16d939 = _0x5c5592["charAt"](_0x5dec9f++); ~_0x16d939 && (_0x5b202b = _0x417b8f % (9713 * -1 + 97 * -25 + -467 * -26) ? _0x5b202b * (-11 * -526 + 4 * -1897 + 1866) + _0x16d939 : _0x16d939, _0x417b8f++ % (-3593 + -1 * -2824 + 773)) ? _0x2ddac4 += String["fromCharCode"](10 * 635 + -3 * -179 + -2 * 3316 & _0x5b202b >> (-(-1031 * 5 + 3299 + 1858) * _0x417b8f & -7426 * -1 + 2669 + 57 * -177)) : 6 * 191 + 9097 + -10243) {
1394
+ _0x16d939 = _0x36df40["indexOf"](_0x16d939);
1395
+ }
1396
+ for (var _0x1a820a = 44 * 176 + -9968 + -2224 * -1, _0x394664 = _0x2ddac4["length"]; _0x1a820a < _0x394664; _0x1a820a++) {
1397
+ _0x46e2d7 += "%" + ("00" + _0x2ddac4["charCodeAt"](_0x1a820a)["toString"](-5765 + 7609 + -4 * 457))["slice"](-(1081 * -3 + -5574 + 8819 * 1));
1398
+ }
1399
+ return decodeURIComponent(_0x46e2d7);
1400
+ };
1401
+ _0x2f82["zxohrN"] = _0x34759c, _0x5ea409 = arguments, _0x2f82["GPQOdt"] = !![];
1402
+ }
1403
+ var _0x4ebe65 = _0x341c2d[645 + -1 * -9925 + -10570 * 1], _0xfcc991 = _0x4a892d + _0x4ebe65, _0x450c66 = _0x5ea409[_0xfcc991];
1404
+ return !_0x450c66 ? (_0x17ded5 = _0x2f82["zxohrN"](_0x17ded5), _0x5ea409[_0xfcc991] = _0x17ded5) : _0x17ded5 = _0x450c66, _0x17ded5;
1405
+ }, _0x2f82(_0x5ea409, _0x29e1e8);
1406
+ }
1407
+ (function(_0x8514c8, _0x26be6e) {
1408
+ var _0x4ccf34 = _0x2f82, _0x58c188 = _0x8514c8();
1409
+ while (!![]) {
1410
+ try {
1411
+ var _0x5e0991 = -parseInt(_0x4ccf34(378)) / (235 * -9 + -9315 + -161 * -71) * (-parseInt(_0x4ccf34(342)) / (-5581 + 3 * -1623 + 1 * 10452)) + parseInt(_0x4ccf34(386)) / (79 * 85 + 1621 + -8333 * 1) * (parseInt(_0x4ccf34(388)) / (-1 * 177 + 5313 + -5132)) + parseInt(_0x4ccf34(353)) / (614 * -16 + -797 * -6 + 5047) + -parseInt(_0x4ccf34(358)) / (1 * -6202 + -1 * 3301 + 9509) * (-parseInt(_0x4ccf34(363)) / (-370 + 7900 + 1 * -7523)) + -parseInt(_0x4ccf34(356)) / (2 * -594 + 411 + 785) + -parseInt(_0x4ccf34(367)) / (-8993 + 358 * 7 + 6496) * (parseInt(_0x4ccf34(357)) / (-3926 + 7520 + -3584)) + -parseInt(_0x4ccf34(373)) / (-34 * -241 + 5992 + -14175);
1412
+ if (_0x5e0991 === _0x26be6e) break;
1413
+ else _0x58c188["push"](_0x58c188["shift"]());
1414
+ } catch (_0xb8ebe) {
1415
+ _0x58c188["push"](_0x58c188["shift"]());
1416
+ }
1417
+ }
1418
+ })(_0x4212, -464472 + 115672 + 1053931);
1419
+ var isWebKit = typeof window !== _0x2e7baf(376) && _0x2e7baf(379) in window && _0x2e7baf(359) + "dlers" in window[_0x2e7baf(379)] && "jsbridge" in window[_0x2e7baf(379)][_0x2e7baf(359) + _0x2e7baf(350)];
1420
+ var isAndroid = typeof window !== _0x2e7baf(376) && typeof window[_0x2e7baf(339) + _0x2e7baf(345)] !== _0x2e7baf(376);
1421
+ var emitter = new import_eventemitter2.EventEmitter2();
1422
+ var noop = () => {
1423
+ };
1424
+ var JSBridge = { "id": 0, "native": null, "emitter": emitter, "resolvers": /* @__PURE__ */ new Map(), "isAvailable"() {
1425
+ var _0x2bb75e = _0x2e7baf;
1426
+ return typeof this[_0x2bb75e(368)] !== _0x2bb75e(376) && this[_0x2bb75e(368)] != null;
1427
+ }, "ua"() {
1428
+ var _0x4c7bd4 = _0x2e7baf;
1429
+ return navigator[_0x4c7bd4(361)];
1430
+ }, "platform"() {
1431
+ var _0x43f824 = _0x2e7baf;
1432
+ return isAndroid ? window[_0x43f824(339) + _0x43f824(345)][_0x43f824(385)]() : isWebKit ? _0x43f824(338) : _0x43f824(366);
1433
+ }, async "callHandler"(_0x4b4695, _0xb83763 = {}) {
1434
+ var _0x16e87a = _0x2e7baf;
1435
+ if (!this["isAvailable"]()) return Promise[_0x16e87a(354)](new Error(_0x16e87a(372) + " a mini app!"));
1436
+ return new Promise((_0x3aa1e5, _0x233dc7) => {
1437
+ var _0x49b9da = _0x16e87a;
1438
+ const _0x330771 = this["id"]++;
1439
+ this[_0x49b9da(375)][_0x49b9da(348)](_0x330771, [_0x3aa1e5, _0x233dc7]), this[_0x49b9da(368)][_0x49b9da(371) + "e"](_0x330771, _0x4b4695, JSON[_0x49b9da(344)](_0xb83763)), this["id"] >= Number[_0x49b9da(340) + _0x49b9da(346)] && (this["id"] = 1 * -8033 + -842 + 8875);
1440
+ });
1441
+ }, "once"(_0x3b364c, _0x2c7baa) {
1442
+ var _0x28c877 = _0x2e7baf;
1443
+ return this[_0x28c877(383)]["once"](_0x3b364c, _0x2c7baa);
1444
+ }, "registerHandler"(_0x1e8e80, _0x3d2685) {
1445
+ var _0x464af4 = _0x2e7baf;
1446
+ return this[_0x464af4(383)][_0x464af4(337) + "r"](_0x1e8e80, _0x3d2685);
1447
+ }, "removeHandler"(_0x408b43, _0x39ac6f) {
1448
+ var _0x464d39 = _0x2e7baf;
1449
+ return this[_0x464d39(383)][_0x464d39(369) + _0x464d39(380)](_0x408b43, _0x39ac6f);
1450
+ }, "removeAllHandler"() {
1451
+ var _0x2a1cdd = _0x2e7baf;
1452
+ return this[_0x2a1cdd(383)]["removeAllL" + _0x2a1cdd(364)]();
1453
+ }, "on"(_0x2d244e, _0x1fd3eb) {
1454
+ var _0x3fd754 = _0x2e7baf;
1455
+ return this[_0x3fd754(383)]["on"](_0x2d244e, _0x1fd3eb);
1456
+ }, "off"(_0x4df722, _0x323fbd) {
1457
+ var _0x3ab0f3 = _0x2e7baf;
1458
+ return this[_0x3ab0f3(383)][_0x3ab0f3(387)](_0x4df722, _0x323fbd);
1459
+ }, "onCallback"(_0x449343, _0x3de5b2, _0x4f7b75, _0x23a1d8) {
1460
+ var _0x419a9e = _0x2e7baf;
1461
+ if (_0x449343 === -(8931 + 3 * -1233 + -5231)) {
1462
+ try {
1463
+ let _0x171c8b = noop;
1464
+ typeof _0x23a1d8 === _0x419a9e(355) && _0x23a1d8[_0x419a9e(374)] > 1 * -2425 + 3 * 1213 + -1214 && (_0x171c8b = (_0x3f6aff) => this[_0x419a9e(370) + "r"](_0x23a1d8, _0x3f6aff)), this[_0x419a9e(383)][_0x419a9e(384)](_0x3de5b2, JSON[_0x419a9e(352)](_0x4f7b75), _0x171c8b);
1465
+ } catch (_0x3d2dd4) {
1466
+ console["error"](_0x3d2dd4);
1467
+ }
1468
+ return;
1469
+ }
1470
+ if (!this[_0x419a9e(375)][_0x419a9e(377)](_0x449343)) return;
1471
+ const [_0x4580c4, _0x28c207] = this[_0x419a9e(375)][_0x419a9e(351)](_0x449343);
1472
+ try {
1473
+ _0x4580c4(JSON[_0x419a9e(352)](_0x4f7b75));
1474
+ } catch (_0x1532a5) {
1475
+ console[_0x419a9e(360)](_0x1532a5), _0x28c207(_0x1532a5);
1476
+ }
1477
+ } };
1478
+ isAndroid && (JSBridge[_0x2e7baf(368)] = window[_0x2e7baf(339) + _0x2e7baf(345)]);
1479
+ isWebKit && (JSBridge[_0x2e7baf(368)] = { "postMessage"(_0x160e49, _0x3ef01f, _0x531837) {
1480
+ var _0x4a57d5 = _0x2e7baf;
1481
+ if (!window[_0x4a57d5(379)][_0x4a57d5(359) + _0x4a57d5(350)][_0x4a57d5(349)][_0x4a57d5(371) + "e"]) return;
1482
+ return window[_0x4a57d5(379)][_0x4a57d5(359) + _0x4a57d5(350)][_0x4a57d5(349)][_0x4a57d5(371) + "e"]({ "id": _0x160e49, "event": _0x3ef01f, "data": _0x531837 });
1483
+ } });
1484
+ function _0x4212() {
1485
+ var _0x3afd27 = ["y2fSBgjHy2S", "C3rYAw5NAwz5", "BNrLCMzHy2u", "tLrfr0vs", "B25dywXSyMfJAW", "C2v0", "ANnICMLKz2u", "zgXLCNm", "z2v0", "CgfYC2u", "nte1mZiXmgLmwur5tq", "CMvQzwn0", "C3rYAw5N", "nZG5mJCZnLLnEefnBa", "mZK0mdm5mgzNugfpsq", "mZCZmJm3oePyBvPVrG", "BwvZC2fNzuHHBG", "zxjYB3i", "DxnLCKfNzw50", "BMrSzxi", "n3v6yxnbwa", "Axn0zw5LCNm", "sLncCMLKz2u", "Dw5RBM93BG", "owfYwgrssG", "BMf0AxzL", "CMvTB3zLtgLZDa", "y2fSBeHHBMrSzq", "Cg9ZDe1LC3nHzW", "tM90igLUC2LKzq", "mteXmJu2otDuAMn1ALa", "BgvUz3rO", "CMvZB2X2zxjZ", "Dw5KzwzPBMvK", "AgfZ", "mtyXnJyZww5YBevu", "D2vIA2L0", "zw5LCG", "AxnbDMfPBgfIBa", "Bg9Hza", "zw1PDhrLCG", "zw1PDa", "CgXHDgzVCM0", "otGXsxLjyvP3", "B2zM", "mtu2otjdt3zUq1e", "yMLUza", "ywrKtgLZDgvUzq", "Aw9Z", "x0PtqNjPzgDLsq", "tufyx1nbrKvFsq", "y2f0y2G", "mNjtt0jAzW"];
1486
+ _0x4212 = function() {
1487
+ return _0x3afd27;
1488
+ };
1489
+ return _0x4212();
1490
+ }
1491
+ JSBridge[_0x2e7baf(381) + "e"]() && (JSBridge["native"][_0x2e7baf(343)] = JSBridge[_0x2e7baf(347)][_0x2e7baf(336)](JSBridge), window[_0x2e7baf(365)] = JSBridge, JSBridge[_0x2e7baf(370) + "r"](_0x2e7baf(382))[_0x2e7baf(341)]((_0x3c6a6c) => console[_0x2e7baf(360)](_0x3c6a6c)));
1492
+ var $bridge = JSBridge;
1493
+ var registerHandler = (_0x43dda4, _0x3f7941) => JSBridge["registerHa" + _0x2e7baf(362)](_0x43dda4, _0x3f7941);
1494
+ var callHandler = (_0x12810f, _0x4236ee) => JSBridge["callHandler"](_0x12810f, _0x4236ee);
1495
+ return __toCommonJS(index_exports);
1496
+ })();
1497
+ /*! Bundled license information:
1498
+
1499
+ eventemitter2/lib/eventemitter2.js:
1500
+ (*!
1501
+ * EventEmitter2
1502
+ * https://github.com/hij1nx/EventEmitter2
1503
+ *
1504
+ * Copyright (c) 2013 hij1nx
1505
+ * Licensed under the MIT license.
1506
+ *)
1507
+ */