shogun-core 1.10.4 → 1.10.6

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.
@@ -65720,6 +65720,108 @@ module.exports = webpackEmptyContext;
65720
65720
 
65721
65721
  /***/ }),
65722
65722
 
65723
+ /***/ "./node_modules/gun/axe.js":
65724
+ /*!*********************************!*\
65725
+ !*** ./node_modules/gun/axe.js ***!
65726
+ \*********************************/
65727
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
65728
+
65729
+ ;(function(){
65730
+
65731
+ var sT = setTimeout || {}, u;
65732
+ if("object" !== ''+u){ sT.window = window }
65733
+ var AXE = (sT.window||'').AXE || function(){};
65734
+ if(AXE.window = sT.window){ AXE.window.AXE = AXE }
65735
+
65736
+ var Gun = (AXE.window||'').GUN || __webpack_require__(/*! ./gun */ "./node_modules/gun/gun.js");
65737
+ (Gun.AXE = AXE).GUN = AXE.Gun = Gun;
65738
+
65739
+ //if(!Gun.window){ try{ require('./lib/axe') }catch(e){} }
65740
+ if(!Gun.window){ __webpack_require__(/*! ./lib/axe */ "./node_modules/gun/lib/axe.js") }
65741
+
65742
+ Gun.on('opt', function(at){ start(at) ; this.to.next(at) }); // make sure to call the "next" middleware adapter.
65743
+
65744
+ function start(root){
65745
+ if(root.axe){ return }
65746
+ var opt = root.opt, peers = opt.peers;
65747
+ if(false === opt.axe){ return }
65748
+ if(!Gun.window){ return } // handled by ^ lib/axe.js
65749
+ var w = Gun.window, lS = w.localStorage || opt.localStorage || {}, loc = w.location || opt.location || {}, nav = w.navigator || opt.navigator || {};
65750
+ var axe = root.axe = {}, tmp, id;
65751
+ var mesh = opt.mesh = opt.mesh || Gun.Mesh(root); // DAM!
65752
+
65753
+ tmp = peers[id = loc.origin + '/gun'] = peers[id] || {};
65754
+ tmp.id = tmp.url = id; tmp.retry = tmp.retry || 0;
65755
+ tmp = peers[id = 'http://localhost:8765/gun'] = peers[id] || {};
65756
+ tmp.id = tmp.url = id; tmp.retry = tmp.retry || 0;
65757
+ Gun.log.once("AXE", "AXE enabled: Trying to find network via (1) local peer (2) last used peers (3) a URL parameter, and last (4) hard coded peers.");
65758
+ Gun.log.once("AXEWarn", "Warning: AXE is in alpha, use only for testing!");
65759
+ var last = lS.peers || ''; if(last){ last += ' ' }
65760
+ last += ((loc.search||'').split('peers=')[1]||'').split('&')[0];
65761
+
65762
+ root.on('bye', function(peer){
65763
+ this.to.next(peer);
65764
+ if(!peer.url){ return } // ignore WebRTC disconnects for now.
65765
+ if(!nav.onLine){ peer.retry = 1 }
65766
+ if(peer.retry){ return }
65767
+ if(axe.fall){ delete axe.fall[peer.url || peer.id] }
65768
+ (function next(){
65769
+ if(!axe.fall){ setTimeout(next, 9); return } // not found yet
65770
+ var fall = Object.keys(axe.fall||''), one = fall[(Math.random()*fall.length) >> 0];
65771
+ if(!fall.length){ lS.peers = ''; one = 'https://gunjs.herokuapp.com/gun' } // out of peers
65772
+ if(peers[one]){ next(); return } // already choose
65773
+ mesh.hi(one);
65774
+ }());
65775
+ });
65776
+
65777
+ root.on('hi', function(peer){ // TEMPORARY! Try to connect all peers.
65778
+ this.to.next(peer);
65779
+ if(!peer.url){ return } // ignore WebRTC disconnects for now.
65780
+ return; // DO NOT COMMIT THIS FEATURE YET! KEEP TESTING NETWORK PERFORMANCE FIRST!
65781
+ // removed by dead control flow
65782
+
65783
+ });
65784
+
65785
+ function found(text){
65786
+
65787
+ axe.fall = {};
65788
+ ((text||'').match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/ig)||[]).forEach(function(url){
65789
+ axe.fall[url] = {url: url, id: url, retry: 0}; // RETRY
65790
+ });
65791
+
65792
+ return;
65793
+
65794
+ // TODO: Finish porting below? Maybe not.
65795
+
65796
+ // removed by dead control flow
65797
+
65798
+ // removed by dead control flow
65799
+
65800
+ // removed by dead control flow
65801
+
65802
+
65803
+ // removed by dead control flow
65804
+ var mesh; // DAM!
65805
+ // removed by dead control flow
65806
+
65807
+ }
65808
+
65809
+ if(last){ found(last); return }
65810
+ try{ fetch(((loc.search||'').split('axe=')[1]||'').split('&')[0] || loc.axe || 'https://raw.githubusercontent.com/wiki/amark/gun/volunteer.dht.md').then(function(res){
65811
+ return res.text()
65812
+ }).then(function(text){
65813
+ found(lS.peers = text);
65814
+ }).catch(function(){
65815
+ found(); // nothing
65816
+ })}catch(e){found()}
65817
+ }
65818
+
65819
+ var empty = {}, yes = true;
65820
+ try{ if("object" != ''+u){ module.exports = AXE } }catch(e){}
65821
+ }());
65822
+
65823
+ /***/ }),
65824
+
65723
65825
  /***/ "./node_modules/gun/gun.js":
65724
65826
  /*!*********************************!*\
65725
65827
  !*** ./node_modules/gun/gun.js ***!
@@ -68037,6 +68139,269 @@ module.exports = webpackEmptyContext;
68037
68139
  Type.graph = Type.graph || Graph;
68038
68140
  }());
68039
68141
 
68142
+ /***/ }),
68143
+
68144
+ /***/ "./node_modules/gun/lib/axe.js":
68145
+ /*!*************************************!*\
68146
+ !*** ./node_modules/gun/lib/axe.js ***!
68147
+ \*************************************/
68148
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
68149
+
68150
+ /* provided dependency */ var process = __webpack_require__(/*! process/browser */ "./node_modules/process/browser.js");
68151
+ // I don't quite know where this should go yet, so putting it here
68152
+ // what will probably wind up happening is that minimal AXE logic added to end of gun.js
68153
+ // and then rest of AXE logic (here) will be moved back to gun/axe.js
68154
+ // but for now... I gotta rush this out!
68155
+ var Gun = ( true)? window.Gun : 0, u;
68156
+ Gun.on('opt', function(at){ start(at); this.to.next(at) }); // make sure to call the "next" middleware adapter.
68157
+ // TODO: BUG: panic test/panic/1 & test/panic/3 fail when AXE is on.
68158
+ function start(root){
68159
+ if(root.axe){ return }
68160
+ var opt = root.opt, peers = opt.peers;
68161
+ if(false === opt.axe){ return }
68162
+ if((typeof process !== "undefined") && 'false' === ''+(process.env||'').AXE){ return }
68163
+ Gun.log.once("AXE", "AXE relay enabled!");
68164
+ var axe = root.axe = {}, tmp, id;
68165
+ var mesh = opt.mesh = opt.mesh || Gun.Mesh(root); // DAM!
68166
+ var dup = root.dup;
68167
+
68168
+ mesh.way = function(msg){
68169
+ if(!msg){ return }
68170
+ //relayUp(msg); // TEMPORARY!!!
68171
+ if(msg.get){ return GET(msg) }
68172
+ if(msg.put){ return }
68173
+ fall(msg);
68174
+ }
68175
+
68176
+ function GET(msg){
68177
+ if(!msg){ return }
68178
+ var via = (msg._||'').via, soul, has, tmp, ref;
68179
+ if(!via || !via.id){ return fall(msg) }
68180
+ // SUBSCRIPTION LOGIC MOVED TO GET'S ACK REPLY.
68181
+ if(!(ref = REF(msg)._)){ return fall(msg) }
68182
+ ref.asked = +new Date;
68183
+ GET.turn(msg, ref.route, 0);
68184
+ }
68185
+ GET.turn = function(msg, route, turn){
68186
+ var tmp = msg['#'], tag = dup.s[tmp], next;
68187
+ if(!tmp || !tag){ return } // message timed out, GUN may require us to relay, tho AXE does not like that. Rethink?
68188
+ // TOOD: BUG! Handle edge case where live updates occur while these turn hashes are being checked (they'll never be consistent), but we don't want to degrade to O(N), if we know the via asking peer got an update, then we should do something like cancel these turns asking for data.
68189
+ // Ideas: Save a random seed that sorts the route, store it and the index. // Or indexing on lowest latency is probably better.
68190
+ clearTimeout(tag.lack);
68191
+ if(tag.ack && (tmp = tag['##']) && msg['##'] === tmp){ return } // hashes match, stop asking other peers!
68192
+ next = (Object.maps(route||opt.peers)).slice(turn = turn || 0);
68193
+ if(!next.length){
68194
+ if(!route){ return } // asked all peers, stop asking!
68195
+ GET.turn(msg, u, 0); // asked all subs, now now ask any peers. (not always the best idea, but stays )
68196
+ return;
68197
+ }
68198
+ setTimeout.each(next, function(id){
68199
+ var peer = opt.peers[id]; turn++;
68200
+ if(!peer || !peer.wire){ route && route.delete(id); return } // bye! // TODO: CHECK IF 0 OTHER PEERS & UNSUBSCRIBE
68201
+ if(mesh.say(msg, peer) === false){ return } // was self
68202
+ if(0 == (turn % 3)){ return 1 }
68203
+ }, function(){
68204
+ tag['##'] = msg['##']; // should probably set this in a more clever manner, do live `in` checks ++ --, etc. but being lazy for now. // TODO: Yes, see `in` TODO, currently this might match against only in-mem cause no other peers reply, which is "fine", but could cause a false positive.
68205
+ tag.lack = setTimeout(function(){ GET.turn(msg, route, turn) }, 25);
68206
+ }, 3);
68207
+ }
68208
+ function fall(msg){ mesh.say(msg, opt.peers) }
68209
+ function REF(msg){
68210
+ var ref = '', soul, has, tmp;
68211
+ if(!msg || !msg.get){ return ref }
68212
+ if('string' == typeof (soul = msg.get['#'])){ ref = root.$.get(soul) }
68213
+ if('string' == typeof (tmp = msg.get['.'])){ has = tmp } else { has = '' }
68214
+
68215
+ var via = (msg._||'').via, sub = (via.sub || (via.sub = new Object.Map)); (sub.get(soul) || (sub.set(soul, tmp = new Object.Map) && tmp)).set(has, 1); // {soul: {'':1, has: 1}} // TEMPORARILY REVERT AXE TOWER TYING TO SUBSCRIBING TO EVERYTHING. UNDO THIS!
68216
+ via.id && ref._ && (ref._.route || (ref._.route = new Object.Map)).set(via.id, via); // SAME AS ^
68217
+
68218
+ return ref;
68219
+ }
68220
+ function LEX(lex){ return (lex = lex || '')['='] || lex['*'] || lex['>'] || lex }
68221
+
68222
+ root.on('in', function(msg){ var to = this.to, tmp;
68223
+ if((tmp = msg['@']) && (tmp = dup.s[tmp])){
68224
+ tmp.ack = (tmp.ack || 0) + 1; // count remote ACKs to GET. // TODO: If mismatch, should trigger next asks.
68225
+ if(tmp.it && tmp.it.get && msg.put){ // WHEN SEEING A PUT REPLY TO A GET...
68226
+ var get = tmp.it.get||'', ref = REF(tmp.it)._, via = (tmp.it._||'').via||'', sub;
68227
+ if(via && ref){ // SUBSCRIBE THE PEER WHO ASKED VIA FOR IT:
68228
+ //console.log("SUBSCRIBING", Object.maps(ref.route||''), "to", LEX(get['#']));
68229
+ via.id && (ref.route || (ref.route = new Object.Map)).set(via.id, via);
68230
+ sub = (via.sub || (via.sub = new Object.Map));
68231
+ ref && (sub.get(LEX(get['#'])) || (sub.set(LEX(get['#']), sub = new Object.Map) && sub)).set(LEX(get['.']), 1); // {soul: {'':1, has: 1}}
68232
+
68233
+ via = (msg._||'').via||'';
68234
+ if(via){ // BIDIRECTIONAL SUBSCRIBE: REPLIER IS NOW SUBSCRIBED. DO WE WANT THIS?
68235
+ via.id && (ref.route || (ref.route = new Object.Map)).set(via.id, via);
68236
+ sub = (via.sub || (via.sub = new Object.Map));
68237
+ if(ref){
68238
+ var soul = LEX(get['#']), sift = sub.get(soul), has = LEX(get['.']);
68239
+ if(has){
68240
+ (sift || (sub.set(soul, sift = new Object.Map) && sift)).set(has, 1);
68241
+ } else
68242
+ if(!sift){
68243
+ sub.set(soul, sift = new Object.Map);
68244
+ sift.set('', 1);
68245
+ }
68246
+ }
68247
+ }
68248
+ }
68249
+ }
68250
+ if((tmp = tmp.back)){ // backtrack OKs since AXE splits PUTs up.
68251
+ setTimeout.each(Object.keys(tmp), function(id){
68252
+ to.next({'#': msg['#'], '@': id, ok: msg.ok});
68253
+ });
68254
+ return;
68255
+ }
68256
+ }
68257
+ to.next(msg);
68258
+ });
68259
+
68260
+ root.on('create', function(root){
68261
+ this.to.next(root);
68262
+ var Q = {};
68263
+ root.on('put', function(msg){
68264
+ var eve = this, at = eve.as, put = msg.put, soul = put['#'], has = put['.'], val = put[':'], state = put['>'], q, tmp;
68265
+ eve.to.next(msg);
68266
+ if(msg['@']){ return } // acks send existing data, not updates, so no need to resend to others.
68267
+ if(!soul || !has){ return }
68268
+ var ref = root.$.get(soul)._, route = (ref||'').route;
68269
+ if(!route){ return }
68270
+ if(ref.skip && ref.skip.has == has){ ref.skip.now = msg['#']; return }
68271
+ (ref.skip = {now: msg['#'], has: has}).to = setTimeout(function(){
68272
+ setTimeout.each(Object.maps(route), function(pid){ var peer, tmp;
68273
+ var skip = ref.skip||''; ref.skip = null;
68274
+ if(!(peer = route.get(pid))){ return }
68275
+ if(!peer.wire){ route.delete(pid); return } // bye!
68276
+ var sub = (peer.sub || (peer.sub = new Object.Map)).get(soul);
68277
+ if(!sub){ return }
68278
+ if(!sub.get(has) && !sub.get('')){ return }
68279
+ var put = peer.put || (peer.put = {});
68280
+ var node = root.graph[soul], tmp;
68281
+ if(node && u !== (tmp = node[has])){
68282
+ state = state_is(node, has);
68283
+ val = tmp;
68284
+ }
68285
+ put[soul] = state_ify(put[soul], has, state, val, soul);
68286
+ tmp = dup.track(peer.next = peer.next || String.random(9));
68287
+ (tmp.back || (tmp.back = {}))[''+(skip.now||msg['#'])] = 1;
68288
+ if(peer.to){ return }
68289
+ peer.to = setTimeout(function(){ flush(peer) }, opt.gap);
68290
+ }) }, 9);
68291
+ });
68292
+ });
68293
+
68294
+ function flush(peer){
68295
+ var msg = {'#': peer.next, put: peer.put, ok: {'@': 3, '/': mesh.near}}; // BUG: TODO: sub count!
68296
+ // TODO: what about DAM's >< dedup? Current thinking is, don't use it, however, you could store first msg# & latest msg#, and if here... latest === first then likely it is the same >< thing, so if(firstMsg['><'][peer.id]){ return } don't send.
68297
+ peer.next = peer.put = peer.to = null;
68298
+ mesh.say(msg, peer);
68299
+ }
68300
+ var state_ify = Gun.state.ify, state_is = Gun.state.is;
68301
+
68302
+ function relayUp(msg){
68303
+ mesh.say(msg, axe.up);
68304
+ }
68305
+
68306
+ ;(function(){ // THIS IS THE UP MODULE;
68307
+ axe.up = {};
68308
+ var hi = mesh.hear['?']; // lower-level integration with DAM! This is abnormal but helps performance.
68309
+ mesh.hear['?'] = function(msg, peer){ var p; // deduplicate unnecessary connections:
68310
+ hi(msg, peer);
68311
+ if(!peer.pid){ return }
68312
+ if(peer.pid === opt.pid){ mesh.bye(peer); return } // if I connected to myself, drop.
68313
+ if(p = axe.up[peer.pid]){ // if we both connected to each other...
68314
+ if(p === peer){ return } // do nothing if no conflict,
68315
+ if(opt.pid > peer.pid){ // else deterministically sort
68316
+ p = peer; // so we will wind up choosing the same to keep
68317
+ peer = axe.up[p.pid]; // and the same to drop.
68318
+ }
68319
+ p.url = p.url || peer.url; // copy if not
68320
+ mesh.bye(peer); // drop
68321
+ axe.up[p.pid] = p; // update same to be same.
68322
+ return;
68323
+ }
68324
+ if(!peer.url){ return }
68325
+ axe.up[peer.pid] = peer;
68326
+ if(axe.stay){ axe.stay() }
68327
+ };
68328
+
68329
+ mesh.hear['opt'] = function(msg, peer){
68330
+ if(msg.ok){ return }
68331
+ var tmp = msg.opt;
68332
+ if(!tmp){ return }
68333
+ tmp = tmp.peers;
68334
+ if(!tmp || 'string' != typeof tmp){ return }
68335
+ if(99 <= Object.keys(axe.up).length){ return } // 99 TEMPORARILY UNTIL BENCHMARKED!
68336
+ mesh.hi({id: tmp, url: tmp, retry: 9});
68337
+ if(peer){ mesh.say({dam: 'opt', ok: 1, '@': msg['#']}, peer) }
68338
+ }
68339
+
68340
+ axe.stay = function(){
68341
+ clearTimeout(axe.stay.to);
68342
+ axe.stay.to = setTimeout(function(tmp, urls){
68343
+ if(!(tmp = root.stats && root.stats.stay)){ return }
68344
+ urls = {}; Object.keys(axe.up||'').forEach(function(p){
68345
+ p = (axe.up||'')[p]; if(p.url){ urls[p.url] = {} }
68346
+ });
68347
+ (tmp.axe = tmp.axe || {}).up = urls;
68348
+ }, 1000 * 9);//1000 * 60);
68349
+ };
68350
+ setTimeout(function(tmp){
68351
+ if(!(tmp = root.stats && root.stats.stay && root.stats.stay.axe)){ return }
68352
+ if(!(tmp = tmp.up)){ return }
68353
+ if(!(tmp instanceof Array)){ tmp = Object.keys(tmp) }
68354
+ setTimeout.each(tmp||[], function(url){ mesh.hear.opt({opt: {peers: url}}) });
68355
+ },1000);
68356
+ }());
68357
+
68358
+ ;(function(){ // THIS IS THE MOB MODULE;
68359
+ //return; // WORK IN PROGRESS, TEST FINALIZED, NEED TO MAKE STABLE.
68360
+ /*
68361
+ AXE should have a couple of threshold items...
68362
+ let's pretend there is a variable max peers connected
68363
+ mob = 10000
68364
+ if we get more peers than that...
68365
+ we should start sending those peers a remote command
68366
+ that they should connect to this or that other peer
68367
+ and then once they (or before they do?) drop them from us.
68368
+ sake of the test... gonna set that peer number to 1.
68369
+ The mob threshold might be determined by other factors,
68370
+ like how much RAM or CPU stress we have.
68371
+ */
68372
+ opt.mob = opt.mob || 9900; // should be based on ulimit, some clouds as low as 10K.
68373
+
68374
+ // handle rebalancing a mob of peers:
68375
+ root.on('hi', function(peer){
68376
+ this.to.next(peer);
68377
+ if(peer.url){ return } // I am assuming that if we are wanting to make an outbound connection to them, that we don't ever want to drop them unless our actual config settings change.
68378
+ var count = /*Object.keys(opt.peers).length ||*/ mesh.near; // TODO: BUG! This is slow, use .near, but near is buggy right now, fix in DAM.
68379
+ //console.log("are we mobbed?", opt.mob, Object.keys(opt.peers).length, mesh.near);
68380
+ if(opt.mob >= count){ return } // TODO: Make dynamic based on RAM/CPU also. Or possibly even weird stuff like opt.mob / axe.up length?
68381
+ var peers = {};Object.keys(axe.up).forEach(function(p){ p = axe.up[p]; p.url && (peers[p.url]={}) });
68382
+ // TODO: BUG!!! Infinite reconnection loop happens if not enough relays, or if some are missing. For instance, :8766 says to connect to :8767 which then says to connect to :8766. To not DDoS when system overload, figure clever way to tell peers to retry later, that network does not have enough capacity?
68383
+ mesh.say({dam: 'mob', mob: count, peers: peers}, peer);
68384
+ setTimeout(function(){ mesh.bye(peer) }, 9); // something with better perf?
68385
+ });
68386
+ root.on('bye', function(peer){
68387
+ this.to.next(peer);
68388
+ });
68389
+
68390
+ }());
68391
+ }
68392
+
68393
+ ;(function(){
68394
+ var from = Array.from;
68395
+ Object.maps = function(o){
68396
+ if(from && o instanceof Map){ return from(o.keys()) }
68397
+ if(o instanceof Object.Map){ o = o.s }
68398
+ return Object.keys(o);
68399
+ }
68400
+ if(from){ return Object.Map = Map }
68401
+ (Object.Map = function(){ this.s = {} }).prototype = {set:function(k,v){this.s[k]=v;return this},get:function(k){return this.s[k]},delete:function(k){delete this.s[k]}};
68402
+ }());
68403
+
68404
+
68040
68405
  /***/ }),
68041
68406
 
68042
68407
  /***/ "./node_modules/gun/lib/radisk.js":
@@ -69214,6 +69579,99 @@ Gun.chain.then = function(cb) {
69214
69579
 
69215
69580
  /***/ }),
69216
69581
 
69582
+ /***/ "./node_modules/gun/lib/wire.js":
69583
+ /*!**************************************!*\
69584
+ !*** ./node_modules/gun/lib/wire.js ***!
69585
+ \**************************************/
69586
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
69587
+
69588
+ var Gun = __webpack_require__(/*! ../gun */ "./node_modules/gun/gun.js");
69589
+
69590
+ /*
69591
+ An Ad-Hoc Mesh-Network Daisy-Chain
69592
+ should work even if humans are
69593
+ communicating with each other blind.
69594
+
69595
+ To prevent infinite broadcast loops,
69596
+ we use a deduplication process
69597
+ based on the message's identifier.
69598
+ This is currently implemented in core.
69599
+
69600
+ However, because this still creates a
69601
+ N*2 (where N is the number of connections)
69602
+ flood, it is not scalable for traditional
69603
+ services that have a hub network topology.
69604
+
69605
+ Does this mean we have to abandon mesh
69606
+ algorithms? No, we can simply layer more
69607
+ efficient optimizations in based on constraints.
69608
+ If these constraints exist, it automatically
69609
+ upgrades, but if not, it falls back to the
69610
+ brute-force mesh based robust algorithm.
69611
+ A simple example is to limit peer connections
69612
+ and rely upon daisy chaining to relay messages.
69613
+
69614
+ Another example, is if peers are willing to
69615
+ identify themselves, then we can improve the
69616
+ efficiency of the network by having each peer
69617
+ include the names of peers it is connected in
69618
+ each message. Then each subsequent peer will
69619
+ not relay it to them, since it is unnecessary.
69620
+ This should create N (where N is the number of
69621
+ peers) messages (or possibly N+ if there is a
69622
+ common peer of uncommon peers that receives it
69623
+ and relays at exact latency timings), which is
69624
+ optimal.
69625
+
69626
+ Since computer networks aren't actually blind,
69627
+ we will implement the above method to improve
69628
+ the performance of the ad-hoc mesh network.
69629
+
69630
+ But why not have every message contain the
69631
+ whole history of peers that it relayed through?
69632
+ Because in sufficiently large enough networks,
69633
+ with extensive daisy chaining, this will cause
69634
+ the message to become prohibitively slow and
69635
+ increase indefinitely in size.
69636
+
69637
+ */
69638
+
69639
+ Gun.on('opt', function(root){
69640
+ var opt = root.opt;
69641
+ if(false === opt.ws || opt.once){
69642
+ this.to.next(root);
69643
+ return;
69644
+ }
69645
+
69646
+ var url = __webpack_require__(/*! url */ "./node_modules/url/url.js");
69647
+ opt.mesh = opt.mesh || Gun.Mesh(root);
69648
+ opt.WebSocket = opt.WebSocket || __webpack_require__(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'ws'"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));
69649
+ var ws = opt.ws = opt.ws || {};
69650
+ ws.path = ws.path || '/gun';
69651
+ // if we DO need an HTTP server, then choose ws specific one or GUN default one.
69652
+ if(!ws.noServer){
69653
+ ws.server = ws.server || opt.web;
69654
+ if(!ws.server){ this.to.next(root); return } // ugh, bug fix for @jamierez & unstoppable ryan.
69655
+ }
69656
+ ws.web = ws.web || new opt.WebSocket.Server(ws); // we still need a WS server.
69657
+ ws.web.on('connection', function(wire, req){ var peer;
69658
+ wire.headers = wire.headers || (req||'').headers || '';
69659
+ console.STAT && ((console.STAT.sites || (console.STAT.sites = {}))[wire.headers.origin] = 1);
69660
+ opt.mesh.hi(peer = {wire: wire});
69661
+ wire.on('message', function(msg){
69662
+ opt.mesh.hear(msg.data || msg, peer);
69663
+ });
69664
+ wire.on('close', function(){
69665
+ opt.mesh.bye(peer);
69666
+ });
69667
+ wire.on('error', function(e){});
69668
+ setTimeout(function heart(){ if(!opt.peers[peer.id]){ return } try{ wire.send("[]") }catch(e){} ;setTimeout(heart, 1000 * 20) }, 1000 * 20); // Some systems, like Heroku, require heartbeats to not time out. // TODO: Make this configurable? // TODO: PERF: Find better approach than try/timeouts?
69669
+ });
69670
+ this.to.next(root);
69671
+ });
69672
+
69673
+ /***/ }),
69674
+
69217
69675
  /***/ "./node_modules/gun/lib/yson.js":
69218
69676
  /*!**************************************!*\
69219
69677
  !*** ./node_modules/gun/lib/yson.js ***!
@@ -79812,6 +80270,560 @@ exports.stringToBytes = stringToBytes;
79812
80270
  exports.bytes = exports.stringToBytes;
79813
80271
 
79814
80272
 
80273
+ /***/ }),
80274
+
80275
+ /***/ "./node_modules/object-inspect/index.js":
80276
+ /*!**********************************************!*\
80277
+ !*** ./node_modules/object-inspect/index.js ***!
80278
+ \**********************************************/
80279
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
80280
+
80281
+ var hasMap = typeof Map === 'function' && Map.prototype;
80282
+ var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;
80283
+ var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;
80284
+ var mapForEach = hasMap && Map.prototype.forEach;
80285
+ var hasSet = typeof Set === 'function' && Set.prototype;
80286
+ var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;
80287
+ var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;
80288
+ var setForEach = hasSet && Set.prototype.forEach;
80289
+ var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;
80290
+ var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;
80291
+ var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;
80292
+ var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;
80293
+ var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;
80294
+ var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;
80295
+ var booleanValueOf = Boolean.prototype.valueOf;
80296
+ var objectToString = Object.prototype.toString;
80297
+ var functionToString = Function.prototype.toString;
80298
+ var $match = String.prototype.match;
80299
+ var $slice = String.prototype.slice;
80300
+ var $replace = String.prototype.replace;
80301
+ var $toUpperCase = String.prototype.toUpperCase;
80302
+ var $toLowerCase = String.prototype.toLowerCase;
80303
+ var $test = RegExp.prototype.test;
80304
+ var $concat = Array.prototype.concat;
80305
+ var $join = Array.prototype.join;
80306
+ var $arrSlice = Array.prototype.slice;
80307
+ var $floor = Math.floor;
80308
+ var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;
80309
+ var gOPS = Object.getOwnPropertySymbols;
80310
+ var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
80311
+ var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
80312
+ // ie, `has-tostringtag/shams
80313
+ var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
80314
+ ? Symbol.toStringTag
80315
+ : null;
80316
+ var isEnumerable = Object.prototype.propertyIsEnumerable;
80317
+
80318
+ var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
80319
+ [].__proto__ === Array.prototype // eslint-disable-line no-proto
80320
+ ? function (O) {
80321
+ return O.__proto__; // eslint-disable-line no-proto
80322
+ }
80323
+ : null
80324
+ );
80325
+
80326
+ function addNumericSeparator(num, str) {
80327
+ if (
80328
+ num === Infinity
80329
+ || num === -Infinity
80330
+ || num !== num
80331
+ || (num && num > -1000 && num < 1000)
80332
+ || $test.call(/e/, str)
80333
+ ) {
80334
+ return str;
80335
+ }
80336
+ var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
80337
+ if (typeof num === 'number') {
80338
+ var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)
80339
+ if (int !== num) {
80340
+ var intStr = String(int);
80341
+ var dec = $slice.call(str, intStr.length + 1);
80342
+ return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');
80343
+ }
80344
+ }
80345
+ return $replace.call(str, sepRegex, '$&_');
80346
+ }
80347
+
80348
+ var utilInspect = __webpack_require__(/*! ./util.inspect */ "?4f7e");
80349
+ var inspectCustom = utilInspect.custom;
80350
+ var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;
80351
+
80352
+ var quotes = {
80353
+ __proto__: null,
80354
+ 'double': '"',
80355
+ single: "'"
80356
+ };
80357
+ var quoteREs = {
80358
+ __proto__: null,
80359
+ 'double': /(["\\])/g,
80360
+ single: /(['\\])/g
80361
+ };
80362
+
80363
+ module.exports = function inspect_(obj, options, depth, seen) {
80364
+ var opts = options || {};
80365
+
80366
+ if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {
80367
+ throw new TypeError('option "quoteStyle" must be "single" or "double"');
80368
+ }
80369
+ if (
80370
+ has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'
80371
+ ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity
80372
+ : opts.maxStringLength !== null
80373
+ )
80374
+ ) {
80375
+ throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');
80376
+ }
80377
+ var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;
80378
+ if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {
80379
+ throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`');
80380
+ }
80381
+
80382
+ if (
80383
+ has(opts, 'indent')
80384
+ && opts.indent !== null
80385
+ && opts.indent !== '\t'
80386
+ && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)
80387
+ ) {
80388
+ throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');
80389
+ }
80390
+ if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {
80391
+ throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');
80392
+ }
80393
+ var numericSeparator = opts.numericSeparator;
80394
+
80395
+ if (typeof obj === 'undefined') {
80396
+ return 'undefined';
80397
+ }
80398
+ if (obj === null) {
80399
+ return 'null';
80400
+ }
80401
+ if (typeof obj === 'boolean') {
80402
+ return obj ? 'true' : 'false';
80403
+ }
80404
+
80405
+ if (typeof obj === 'string') {
80406
+ return inspectString(obj, opts);
80407
+ }
80408
+ if (typeof obj === 'number') {
80409
+ if (obj === 0) {
80410
+ return Infinity / obj > 0 ? '0' : '-0';
80411
+ }
80412
+ var str = String(obj);
80413
+ return numericSeparator ? addNumericSeparator(obj, str) : str;
80414
+ }
80415
+ if (typeof obj === 'bigint') {
80416
+ var bigIntStr = String(obj) + 'n';
80417
+ return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;
80418
+ }
80419
+
80420
+ var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;
80421
+ if (typeof depth === 'undefined') { depth = 0; }
80422
+ if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {
80423
+ return isArray(obj) ? '[Array]' : '[Object]';
80424
+ }
80425
+
80426
+ var indent = getIndent(opts, depth);
80427
+
80428
+ if (typeof seen === 'undefined') {
80429
+ seen = [];
80430
+ } else if (indexOf(seen, obj) >= 0) {
80431
+ return '[Circular]';
80432
+ }
80433
+
80434
+ function inspect(value, from, noIndent) {
80435
+ if (from) {
80436
+ seen = $arrSlice.call(seen);
80437
+ seen.push(from);
80438
+ }
80439
+ if (noIndent) {
80440
+ var newOpts = {
80441
+ depth: opts.depth
80442
+ };
80443
+ if (has(opts, 'quoteStyle')) {
80444
+ newOpts.quoteStyle = opts.quoteStyle;
80445
+ }
80446
+ return inspect_(value, newOpts, depth + 1, seen);
80447
+ }
80448
+ return inspect_(value, opts, depth + 1, seen);
80449
+ }
80450
+
80451
+ if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable
80452
+ var name = nameOf(obj);
80453
+ var keys = arrObjKeys(obj, inspect);
80454
+ return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');
80455
+ }
80456
+ if (isSymbol(obj)) {
80457
+ var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj);
80458
+ return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;
80459
+ }
80460
+ if (isElement(obj)) {
80461
+ var s = '<' + $toLowerCase.call(String(obj.nodeName));
80462
+ var attrs = obj.attributes || [];
80463
+ for (var i = 0; i < attrs.length; i++) {
80464
+ s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);
80465
+ }
80466
+ s += '>';
80467
+ if (obj.childNodes && obj.childNodes.length) { s += '...'; }
80468
+ s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';
80469
+ return s;
80470
+ }
80471
+ if (isArray(obj)) {
80472
+ if (obj.length === 0) { return '[]'; }
80473
+ var xs = arrObjKeys(obj, inspect);
80474
+ if (indent && !singleLineValues(xs)) {
80475
+ return '[' + indentedJoin(xs, indent) + ']';
80476
+ }
80477
+ return '[ ' + $join.call(xs, ', ') + ' ]';
80478
+ }
80479
+ if (isError(obj)) {
80480
+ var parts = arrObjKeys(obj, inspect);
80481
+ if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {
80482
+ return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';
80483
+ }
80484
+ if (parts.length === 0) { return '[' + String(obj) + ']'; }
80485
+ return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';
80486
+ }
80487
+ if (typeof obj === 'object' && customInspect) {
80488
+ if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {
80489
+ return utilInspect(obj, { depth: maxDepth - depth });
80490
+ } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {
80491
+ return obj.inspect();
80492
+ }
80493
+ }
80494
+ if (isMap(obj)) {
80495
+ var mapParts = [];
80496
+ if (mapForEach) {
80497
+ mapForEach.call(obj, function (value, key) {
80498
+ mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));
80499
+ });
80500
+ }
80501
+ return collectionOf('Map', mapSize.call(obj), mapParts, indent);
80502
+ }
80503
+ if (isSet(obj)) {
80504
+ var setParts = [];
80505
+ if (setForEach) {
80506
+ setForEach.call(obj, function (value) {
80507
+ setParts.push(inspect(value, obj));
80508
+ });
80509
+ }
80510
+ return collectionOf('Set', setSize.call(obj), setParts, indent);
80511
+ }
80512
+ if (isWeakMap(obj)) {
80513
+ return weakCollectionOf('WeakMap');
80514
+ }
80515
+ if (isWeakSet(obj)) {
80516
+ return weakCollectionOf('WeakSet');
80517
+ }
80518
+ if (isWeakRef(obj)) {
80519
+ return weakCollectionOf('WeakRef');
80520
+ }
80521
+ if (isNumber(obj)) {
80522
+ return markBoxed(inspect(Number(obj)));
80523
+ }
80524
+ if (isBigInt(obj)) {
80525
+ return markBoxed(inspect(bigIntValueOf.call(obj)));
80526
+ }
80527
+ if (isBoolean(obj)) {
80528
+ return markBoxed(booleanValueOf.call(obj));
80529
+ }
80530
+ if (isString(obj)) {
80531
+ return markBoxed(inspect(String(obj)));
80532
+ }
80533
+ // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other
80534
+ /* eslint-env browser */
80535
+ if ( true && obj === window) {
80536
+ return '{ [object Window] }';
80537
+ }
80538
+ if (
80539
+ (typeof globalThis !== 'undefined' && obj === globalThis)
80540
+ || (typeof __webpack_require__.g !== 'undefined' && obj === __webpack_require__.g)
80541
+ ) {
80542
+ return '{ [object globalThis] }';
80543
+ }
80544
+ if (!isDate(obj) && !isRegExp(obj)) {
80545
+ var ys = arrObjKeys(obj, inspect);
80546
+ var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
80547
+ var protoTag = obj instanceof Object ? '' : 'null prototype';
80548
+ var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';
80549
+ var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';
80550
+ var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');
80551
+ if (ys.length === 0) { return tag + '{}'; }
80552
+ if (indent) {
80553
+ return tag + '{' + indentedJoin(ys, indent) + '}';
80554
+ }
80555
+ return tag + '{ ' + $join.call(ys, ', ') + ' }';
80556
+ }
80557
+ return String(obj);
80558
+ };
80559
+
80560
+ function wrapQuotes(s, defaultStyle, opts) {
80561
+ var style = opts.quoteStyle || defaultStyle;
80562
+ var quoteChar = quotes[style];
80563
+ return quoteChar + s + quoteChar;
80564
+ }
80565
+
80566
+ function quote(s) {
80567
+ return $replace.call(String(s), /"/g, '&quot;');
80568
+ }
80569
+
80570
+ function canTrustToString(obj) {
80571
+ return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));
80572
+ }
80573
+ function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }
80574
+ function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }
80575
+ function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }
80576
+ function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }
80577
+ function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }
80578
+ function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }
80579
+ function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }
80580
+
80581
+ // Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives
80582
+ function isSymbol(obj) {
80583
+ if (hasShammedSymbols) {
80584
+ return obj && typeof obj === 'object' && obj instanceof Symbol;
80585
+ }
80586
+ if (typeof obj === 'symbol') {
80587
+ return true;
80588
+ }
80589
+ if (!obj || typeof obj !== 'object' || !symToString) {
80590
+ return false;
80591
+ }
80592
+ try {
80593
+ symToString.call(obj);
80594
+ return true;
80595
+ } catch (e) {}
80596
+ return false;
80597
+ }
80598
+
80599
+ function isBigInt(obj) {
80600
+ if (!obj || typeof obj !== 'object' || !bigIntValueOf) {
80601
+ return false;
80602
+ }
80603
+ try {
80604
+ bigIntValueOf.call(obj);
80605
+ return true;
80606
+ } catch (e) {}
80607
+ return false;
80608
+ }
80609
+
80610
+ var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };
80611
+ function has(obj, key) {
80612
+ return hasOwn.call(obj, key);
80613
+ }
80614
+
80615
+ function toStr(obj) {
80616
+ return objectToString.call(obj);
80617
+ }
80618
+
80619
+ function nameOf(f) {
80620
+ if (f.name) { return f.name; }
80621
+ var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/);
80622
+ if (m) { return m[1]; }
80623
+ return null;
80624
+ }
80625
+
80626
+ function indexOf(xs, x) {
80627
+ if (xs.indexOf) { return xs.indexOf(x); }
80628
+ for (var i = 0, l = xs.length; i < l; i++) {
80629
+ if (xs[i] === x) { return i; }
80630
+ }
80631
+ return -1;
80632
+ }
80633
+
80634
+ function isMap(x) {
80635
+ if (!mapSize || !x || typeof x !== 'object') {
80636
+ return false;
80637
+ }
80638
+ try {
80639
+ mapSize.call(x);
80640
+ try {
80641
+ setSize.call(x);
80642
+ } catch (s) {
80643
+ return true;
80644
+ }
80645
+ return x instanceof Map; // core-js workaround, pre-v2.5.0
80646
+ } catch (e) {}
80647
+ return false;
80648
+ }
80649
+
80650
+ function isWeakMap(x) {
80651
+ if (!weakMapHas || !x || typeof x !== 'object') {
80652
+ return false;
80653
+ }
80654
+ try {
80655
+ weakMapHas.call(x, weakMapHas);
80656
+ try {
80657
+ weakSetHas.call(x, weakSetHas);
80658
+ } catch (s) {
80659
+ return true;
80660
+ }
80661
+ return x instanceof WeakMap; // core-js workaround, pre-v2.5.0
80662
+ } catch (e) {}
80663
+ return false;
80664
+ }
80665
+
80666
+ function isWeakRef(x) {
80667
+ if (!weakRefDeref || !x || typeof x !== 'object') {
80668
+ return false;
80669
+ }
80670
+ try {
80671
+ weakRefDeref.call(x);
80672
+ return true;
80673
+ } catch (e) {}
80674
+ return false;
80675
+ }
80676
+
80677
+ function isSet(x) {
80678
+ if (!setSize || !x || typeof x !== 'object') {
80679
+ return false;
80680
+ }
80681
+ try {
80682
+ setSize.call(x);
80683
+ try {
80684
+ mapSize.call(x);
80685
+ } catch (m) {
80686
+ return true;
80687
+ }
80688
+ return x instanceof Set; // core-js workaround, pre-v2.5.0
80689
+ } catch (e) {}
80690
+ return false;
80691
+ }
80692
+
80693
+ function isWeakSet(x) {
80694
+ if (!weakSetHas || !x || typeof x !== 'object') {
80695
+ return false;
80696
+ }
80697
+ try {
80698
+ weakSetHas.call(x, weakSetHas);
80699
+ try {
80700
+ weakMapHas.call(x, weakMapHas);
80701
+ } catch (s) {
80702
+ return true;
80703
+ }
80704
+ return x instanceof WeakSet; // core-js workaround, pre-v2.5.0
80705
+ } catch (e) {}
80706
+ return false;
80707
+ }
80708
+
80709
+ function isElement(x) {
80710
+ if (!x || typeof x !== 'object') { return false; }
80711
+ if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {
80712
+ return true;
80713
+ }
80714
+ return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';
80715
+ }
80716
+
80717
+ function inspectString(str, opts) {
80718
+ if (str.length > opts.maxStringLength) {
80719
+ var remaining = str.length - opts.maxStringLength;
80720
+ var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');
80721
+ return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;
80722
+ }
80723
+ var quoteRE = quoteREs[opts.quoteStyle || 'single'];
80724
+ quoteRE.lastIndex = 0;
80725
+ // eslint-disable-next-line no-control-regex
80726
+ var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte);
80727
+ return wrapQuotes(s, 'single', opts);
80728
+ }
80729
+
80730
+ function lowbyte(c) {
80731
+ var n = c.charCodeAt(0);
80732
+ var x = {
80733
+ 8: 'b',
80734
+ 9: 't',
80735
+ 10: 'n',
80736
+ 12: 'f',
80737
+ 13: 'r'
80738
+ }[n];
80739
+ if (x) { return '\\' + x; }
80740
+ return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));
80741
+ }
80742
+
80743
+ function markBoxed(str) {
80744
+ return 'Object(' + str + ')';
80745
+ }
80746
+
80747
+ function weakCollectionOf(type) {
80748
+ return type + ' { ? }';
80749
+ }
80750
+
80751
+ function collectionOf(type, size, entries, indent) {
80752
+ var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');
80753
+ return type + ' (' + size + ') {' + joinedEntries + '}';
80754
+ }
80755
+
80756
+ function singleLineValues(xs) {
80757
+ for (var i = 0; i < xs.length; i++) {
80758
+ if (indexOf(xs[i], '\n') >= 0) {
80759
+ return false;
80760
+ }
80761
+ }
80762
+ return true;
80763
+ }
80764
+
80765
+ function getIndent(opts, depth) {
80766
+ var baseIndent;
80767
+ if (opts.indent === '\t') {
80768
+ baseIndent = '\t';
80769
+ } else if (typeof opts.indent === 'number' && opts.indent > 0) {
80770
+ baseIndent = $join.call(Array(opts.indent + 1), ' ');
80771
+ } else {
80772
+ return null;
80773
+ }
80774
+ return {
80775
+ base: baseIndent,
80776
+ prev: $join.call(Array(depth + 1), baseIndent)
80777
+ };
80778
+ }
80779
+
80780
+ function indentedJoin(xs, indent) {
80781
+ if (xs.length === 0) { return ''; }
80782
+ var lineJoiner = '\n' + indent.prev + indent.base;
80783
+ return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev;
80784
+ }
80785
+
80786
+ function arrObjKeys(obj, inspect) {
80787
+ var isArr = isArray(obj);
80788
+ var xs = [];
80789
+ if (isArr) {
80790
+ xs.length = obj.length;
80791
+ for (var i = 0; i < obj.length; i++) {
80792
+ xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
80793
+ }
80794
+ }
80795
+ var syms = typeof gOPS === 'function' ? gOPS(obj) : [];
80796
+ var symMap;
80797
+ if (hasShammedSymbols) {
80798
+ symMap = {};
80799
+ for (var k = 0; k < syms.length; k++) {
80800
+ symMap['$' + syms[k]] = syms[k];
80801
+ }
80802
+ }
80803
+
80804
+ for (var key in obj) { // eslint-disable-line no-restricted-syntax
80805
+ if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
80806
+ if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue
80807
+ if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {
80808
+ // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section
80809
+ continue; // eslint-disable-line no-restricted-syntax, no-continue
80810
+ } else if ($test.call(/[^\w$]/, key)) {
80811
+ xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));
80812
+ } else {
80813
+ xs.push(key + ': ' + inspect(obj[key], obj));
80814
+ }
80815
+ }
80816
+ if (typeof gOPS === 'function') {
80817
+ for (var j = 0; j < syms.length; j++) {
80818
+ if (isEnumerable.call(obj, syms[j])) {
80819
+ xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));
80820
+ }
80821
+ }
80822
+ }
80823
+ return xs;
80824
+ }
80825
+
80826
+
79815
80827
  /***/ }),
79816
80828
 
79817
80829
  /***/ "./node_modules/parse-asn1/aesid.json":
@@ -81785,6 +82797,1047 @@ module.exports = function xor (a, b) {
81785
82797
  }
81786
82798
 
81787
82799
 
82800
+ /***/ }),
82801
+
82802
+ /***/ "./node_modules/qs/lib/formats.js":
82803
+ /*!****************************************!*\
82804
+ !*** ./node_modules/qs/lib/formats.js ***!
82805
+ \****************************************/
82806
+ /***/ ((module) => {
82807
+
82808
+ "use strict";
82809
+
82810
+
82811
+ var replace = String.prototype.replace;
82812
+ var percentTwenties = /%20/g;
82813
+
82814
+ var Format = {
82815
+ RFC1738: 'RFC1738',
82816
+ RFC3986: 'RFC3986'
82817
+ };
82818
+
82819
+ module.exports = {
82820
+ 'default': Format.RFC3986,
82821
+ formatters: {
82822
+ RFC1738: function (value) {
82823
+ return replace.call(value, percentTwenties, '+');
82824
+ },
82825
+ RFC3986: function (value) {
82826
+ return String(value);
82827
+ }
82828
+ },
82829
+ RFC1738: Format.RFC1738,
82830
+ RFC3986: Format.RFC3986
82831
+ };
82832
+
82833
+
82834
+ /***/ }),
82835
+
82836
+ /***/ "./node_modules/qs/lib/index.js":
82837
+ /*!**************************************!*\
82838
+ !*** ./node_modules/qs/lib/index.js ***!
82839
+ \**************************************/
82840
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
82841
+
82842
+ "use strict";
82843
+
82844
+
82845
+ var stringify = __webpack_require__(/*! ./stringify */ "./node_modules/qs/lib/stringify.js");
82846
+ var parse = __webpack_require__(/*! ./parse */ "./node_modules/qs/lib/parse.js");
82847
+ var formats = __webpack_require__(/*! ./formats */ "./node_modules/qs/lib/formats.js");
82848
+
82849
+ module.exports = {
82850
+ formats: formats,
82851
+ parse: parse,
82852
+ stringify: stringify
82853
+ };
82854
+
82855
+
82856
+ /***/ }),
82857
+
82858
+ /***/ "./node_modules/qs/lib/parse.js":
82859
+ /*!**************************************!*\
82860
+ !*** ./node_modules/qs/lib/parse.js ***!
82861
+ \**************************************/
82862
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
82863
+
82864
+ "use strict";
82865
+
82866
+
82867
+ var utils = __webpack_require__(/*! ./utils */ "./node_modules/qs/lib/utils.js");
82868
+
82869
+ var has = Object.prototype.hasOwnProperty;
82870
+ var isArray = Array.isArray;
82871
+
82872
+ var defaults = {
82873
+ allowDots: false,
82874
+ allowEmptyArrays: false,
82875
+ allowPrototypes: false,
82876
+ allowSparse: false,
82877
+ arrayLimit: 20,
82878
+ charset: 'utf-8',
82879
+ charsetSentinel: false,
82880
+ comma: false,
82881
+ decodeDotInKeys: false,
82882
+ decoder: utils.decode,
82883
+ delimiter: '&',
82884
+ depth: 5,
82885
+ duplicates: 'combine',
82886
+ ignoreQueryPrefix: false,
82887
+ interpretNumericEntities: false,
82888
+ parameterLimit: 1000,
82889
+ parseArrays: true,
82890
+ plainObjects: false,
82891
+ strictDepth: false,
82892
+ strictNullHandling: false,
82893
+ throwOnLimitExceeded: false
82894
+ };
82895
+
82896
+ var interpretNumericEntities = function (str) {
82897
+ return str.replace(/&#(\d+);/g, function ($0, numberStr) {
82898
+ return String.fromCharCode(parseInt(numberStr, 10));
82899
+ });
82900
+ };
82901
+
82902
+ var parseArrayValue = function (val, options, currentArrayLength) {
82903
+ if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
82904
+ return val.split(',');
82905
+ }
82906
+
82907
+ if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {
82908
+ throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');
82909
+ }
82910
+
82911
+ return val;
82912
+ };
82913
+
82914
+ // This is what browsers will submit when the ✓ character occurs in an
82915
+ // application/x-www-form-urlencoded body and the encoding of the page containing
82916
+ // the form is iso-8859-1, or when the submitted form has an accept-charset
82917
+ // attribute of iso-8859-1. Presumably also with other charsets that do not contain
82918
+ // the ✓ character, such as us-ascii.
82919
+ var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')
82920
+
82921
+ // These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
82922
+ var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
82923
+
82924
+ var parseValues = function parseQueryStringValues(str, options) {
82925
+ var obj = { __proto__: null };
82926
+
82927
+ var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
82928
+ cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');
82929
+
82930
+ var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
82931
+ var parts = cleanStr.split(
82932
+ options.delimiter,
82933
+ options.throwOnLimitExceeded ? limit + 1 : limit
82934
+ );
82935
+
82936
+ if (options.throwOnLimitExceeded && parts.length > limit) {
82937
+ throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');
82938
+ }
82939
+
82940
+ var skipIndex = -1; // Keep track of where the utf8 sentinel was found
82941
+ var i;
82942
+
82943
+ var charset = options.charset;
82944
+ if (options.charsetSentinel) {
82945
+ for (i = 0; i < parts.length; ++i) {
82946
+ if (parts[i].indexOf('utf8=') === 0) {
82947
+ if (parts[i] === charsetSentinel) {
82948
+ charset = 'utf-8';
82949
+ } else if (parts[i] === isoSentinel) {
82950
+ charset = 'iso-8859-1';
82951
+ }
82952
+ skipIndex = i;
82953
+ i = parts.length; // The eslint settings do not allow break;
82954
+ }
82955
+ }
82956
+ }
82957
+
82958
+ for (i = 0; i < parts.length; ++i) {
82959
+ if (i === skipIndex) {
82960
+ continue;
82961
+ }
82962
+ var part = parts[i];
82963
+
82964
+ var bracketEqualsPos = part.indexOf(']=');
82965
+ var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
82966
+
82967
+ var key;
82968
+ var val;
82969
+ if (pos === -1) {
82970
+ key = options.decoder(part, defaults.decoder, charset, 'key');
82971
+ val = options.strictNullHandling ? null : '';
82972
+ } else {
82973
+ key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
82974
+
82975
+ val = utils.maybeMap(
82976
+ parseArrayValue(
82977
+ part.slice(pos + 1),
82978
+ options,
82979
+ isArray(obj[key]) ? obj[key].length : 0
82980
+ ),
82981
+ function (encodedVal) {
82982
+ return options.decoder(encodedVal, defaults.decoder, charset, 'value');
82983
+ }
82984
+ );
82985
+ }
82986
+
82987
+ if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
82988
+ val = interpretNumericEntities(String(val));
82989
+ }
82990
+
82991
+ if (part.indexOf('[]=') > -1) {
82992
+ val = isArray(val) ? [val] : val;
82993
+ }
82994
+
82995
+ var existing = has.call(obj, key);
82996
+ if (existing && options.duplicates === 'combine') {
82997
+ obj[key] = utils.combine(obj[key], val);
82998
+ } else if (!existing || options.duplicates === 'last') {
82999
+ obj[key] = val;
83000
+ }
83001
+ }
83002
+
83003
+ return obj;
83004
+ };
83005
+
83006
+ var parseObject = function (chain, val, options, valuesParsed) {
83007
+ var currentArrayLength = 0;
83008
+ if (chain.length > 0 && chain[chain.length - 1] === '[]') {
83009
+ var parentKey = chain.slice(0, -1).join('');
83010
+ currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;
83011
+ }
83012
+
83013
+ var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);
83014
+
83015
+ for (var i = chain.length - 1; i >= 0; --i) {
83016
+ var obj;
83017
+ var root = chain[i];
83018
+
83019
+ if (root === '[]' && options.parseArrays) {
83020
+ obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))
83021
+ ? []
83022
+ : utils.combine([], leaf);
83023
+ } else {
83024
+ obj = options.plainObjects ? { __proto__: null } : {};
83025
+ var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
83026
+ var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;
83027
+ var index = parseInt(decodedRoot, 10);
83028
+ if (!options.parseArrays && decodedRoot === '') {
83029
+ obj = { 0: leaf };
83030
+ } else if (
83031
+ !isNaN(index)
83032
+ && root !== decodedRoot
83033
+ && String(index) === decodedRoot
83034
+ && index >= 0
83035
+ && (options.parseArrays && index <= options.arrayLimit)
83036
+ ) {
83037
+ obj = [];
83038
+ obj[index] = leaf;
83039
+ } else if (decodedRoot !== '__proto__') {
83040
+ obj[decodedRoot] = leaf;
83041
+ }
83042
+ }
83043
+
83044
+ leaf = obj;
83045
+ }
83046
+
83047
+ return leaf;
83048
+ };
83049
+
83050
+ var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
83051
+ if (!givenKey) {
83052
+ return;
83053
+ }
83054
+
83055
+ // Transform dot notation to bracket notation
83056
+ var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
83057
+
83058
+ // The regex chunks
83059
+
83060
+ var brackets = /(\[[^[\]]*])/;
83061
+ var child = /(\[[^[\]]*])/g;
83062
+
83063
+ // Get the parent
83064
+
83065
+ var segment = options.depth > 0 && brackets.exec(key);
83066
+ var parent = segment ? key.slice(0, segment.index) : key;
83067
+
83068
+ // Stash the parent if it exists
83069
+
83070
+ var keys = [];
83071
+ if (parent) {
83072
+ // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
83073
+ if (!options.plainObjects && has.call(Object.prototype, parent)) {
83074
+ if (!options.allowPrototypes) {
83075
+ return;
83076
+ }
83077
+ }
83078
+
83079
+ keys.push(parent);
83080
+ }
83081
+
83082
+ // Loop through children appending to the array until we hit depth
83083
+
83084
+ var i = 0;
83085
+ while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
83086
+ i += 1;
83087
+ if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
83088
+ if (!options.allowPrototypes) {
83089
+ return;
83090
+ }
83091
+ }
83092
+ keys.push(segment[1]);
83093
+ }
83094
+
83095
+ // If there's a remainder, check strictDepth option for throw, else just add whatever is left
83096
+
83097
+ if (segment) {
83098
+ if (options.strictDepth === true) {
83099
+ throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');
83100
+ }
83101
+ keys.push('[' + key.slice(segment.index) + ']');
83102
+ }
83103
+
83104
+ return parseObject(keys, val, options, valuesParsed);
83105
+ };
83106
+
83107
+ var normalizeParseOptions = function normalizeParseOptions(opts) {
83108
+ if (!opts) {
83109
+ return defaults;
83110
+ }
83111
+
83112
+ if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {
83113
+ throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');
83114
+ }
83115
+
83116
+ if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {
83117
+ throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');
83118
+ }
83119
+
83120
+ if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {
83121
+ throw new TypeError('Decoder has to be a function.');
83122
+ }
83123
+
83124
+ if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
83125
+ throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
83126
+ }
83127
+
83128
+ if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {
83129
+ throw new TypeError('`throwOnLimitExceeded` option must be a boolean');
83130
+ }
83131
+
83132
+ var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
83133
+
83134
+ var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;
83135
+
83136
+ if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {
83137
+ throw new TypeError('The duplicates option must be either combine, first, or last');
83138
+ }
83139
+
83140
+ var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;
83141
+
83142
+ return {
83143
+ allowDots: allowDots,
83144
+ allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,
83145
+ allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
83146
+ allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,
83147
+ arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
83148
+ charset: charset,
83149
+ charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
83150
+ comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
83151
+ decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,
83152
+ decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
83153
+ delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
83154
+ // eslint-disable-next-line no-implicit-coercion, no-extra-parens
83155
+ depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,
83156
+ duplicates: duplicates,
83157
+ ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
83158
+ interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
83159
+ parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
83160
+ parseArrays: opts.parseArrays !== false,
83161
+ plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
83162
+ strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,
83163
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,
83164
+ throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false
83165
+ };
83166
+ };
83167
+
83168
+ module.exports = function (str, opts) {
83169
+ var options = normalizeParseOptions(opts);
83170
+
83171
+ if (str === '' || str === null || typeof str === 'undefined') {
83172
+ return options.plainObjects ? { __proto__: null } : {};
83173
+ }
83174
+
83175
+ var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
83176
+ var obj = options.plainObjects ? { __proto__: null } : {};
83177
+
83178
+ // Iterate over the keys and setup the new object
83179
+
83180
+ var keys = Object.keys(tempObj);
83181
+ for (var i = 0; i < keys.length; ++i) {
83182
+ var key = keys[i];
83183
+ var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');
83184
+ obj = utils.merge(obj, newObj, options);
83185
+ }
83186
+
83187
+ if (options.allowSparse === true) {
83188
+ return obj;
83189
+ }
83190
+
83191
+ return utils.compact(obj);
83192
+ };
83193
+
83194
+
83195
+ /***/ }),
83196
+
83197
+ /***/ "./node_modules/qs/lib/stringify.js":
83198
+ /*!******************************************!*\
83199
+ !*** ./node_modules/qs/lib/stringify.js ***!
83200
+ \******************************************/
83201
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
83202
+
83203
+ "use strict";
83204
+
83205
+
83206
+ var getSideChannel = __webpack_require__(/*! side-channel */ "./node_modules/side-channel/index.js");
83207
+ var utils = __webpack_require__(/*! ./utils */ "./node_modules/qs/lib/utils.js");
83208
+ var formats = __webpack_require__(/*! ./formats */ "./node_modules/qs/lib/formats.js");
83209
+ var has = Object.prototype.hasOwnProperty;
83210
+
83211
+ var arrayPrefixGenerators = {
83212
+ brackets: function brackets(prefix) {
83213
+ return prefix + '[]';
83214
+ },
83215
+ comma: 'comma',
83216
+ indices: function indices(prefix, key) {
83217
+ return prefix + '[' + key + ']';
83218
+ },
83219
+ repeat: function repeat(prefix) {
83220
+ return prefix;
83221
+ }
83222
+ };
83223
+
83224
+ var isArray = Array.isArray;
83225
+ var push = Array.prototype.push;
83226
+ var pushToArray = function (arr, valueOrArray) {
83227
+ push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
83228
+ };
83229
+
83230
+ var toISO = Date.prototype.toISOString;
83231
+
83232
+ var defaultFormat = formats['default'];
83233
+ var defaults = {
83234
+ addQueryPrefix: false,
83235
+ allowDots: false,
83236
+ allowEmptyArrays: false,
83237
+ arrayFormat: 'indices',
83238
+ charset: 'utf-8',
83239
+ charsetSentinel: false,
83240
+ commaRoundTrip: false,
83241
+ delimiter: '&',
83242
+ encode: true,
83243
+ encodeDotInKeys: false,
83244
+ encoder: utils.encode,
83245
+ encodeValuesOnly: false,
83246
+ filter: void undefined,
83247
+ format: defaultFormat,
83248
+ formatter: formats.formatters[defaultFormat],
83249
+ // deprecated
83250
+ indices: false,
83251
+ serializeDate: function serializeDate(date) {
83252
+ return toISO.call(date);
83253
+ },
83254
+ skipNulls: false,
83255
+ strictNullHandling: false
83256
+ };
83257
+
83258
+ var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
83259
+ return typeof v === 'string'
83260
+ || typeof v === 'number'
83261
+ || typeof v === 'boolean'
83262
+ || typeof v === 'symbol'
83263
+ || typeof v === 'bigint';
83264
+ };
83265
+
83266
+ var sentinel = {};
83267
+
83268
+ var stringify = function stringify(
83269
+ object,
83270
+ prefix,
83271
+ generateArrayPrefix,
83272
+ commaRoundTrip,
83273
+ allowEmptyArrays,
83274
+ strictNullHandling,
83275
+ skipNulls,
83276
+ encodeDotInKeys,
83277
+ encoder,
83278
+ filter,
83279
+ sort,
83280
+ allowDots,
83281
+ serializeDate,
83282
+ format,
83283
+ formatter,
83284
+ encodeValuesOnly,
83285
+ charset,
83286
+ sideChannel
83287
+ ) {
83288
+ var obj = object;
83289
+
83290
+ var tmpSc = sideChannel;
83291
+ var step = 0;
83292
+ var findFlag = false;
83293
+ while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {
83294
+ // Where object last appeared in the ref tree
83295
+ var pos = tmpSc.get(object);
83296
+ step += 1;
83297
+ if (typeof pos !== 'undefined') {
83298
+ if (pos === step) {
83299
+ throw new RangeError('Cyclic object value');
83300
+ } else {
83301
+ findFlag = true; // Break while
83302
+ }
83303
+ }
83304
+ if (typeof tmpSc.get(sentinel) === 'undefined') {
83305
+ step = 0;
83306
+ }
83307
+ }
83308
+
83309
+ if (typeof filter === 'function') {
83310
+ obj = filter(prefix, obj);
83311
+ } else if (obj instanceof Date) {
83312
+ obj = serializeDate(obj);
83313
+ } else if (generateArrayPrefix === 'comma' && isArray(obj)) {
83314
+ obj = utils.maybeMap(obj, function (value) {
83315
+ if (value instanceof Date) {
83316
+ return serializeDate(value);
83317
+ }
83318
+ return value;
83319
+ });
83320
+ }
83321
+
83322
+ if (obj === null) {
83323
+ if (strictNullHandling) {
83324
+ return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;
83325
+ }
83326
+
83327
+ obj = '';
83328
+ }
83329
+
83330
+ if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
83331
+ if (encoder) {
83332
+ var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
83333
+ return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
83334
+ }
83335
+ return [formatter(prefix) + '=' + formatter(String(obj))];
83336
+ }
83337
+
83338
+ var values = [];
83339
+
83340
+ if (typeof obj === 'undefined') {
83341
+ return values;
83342
+ }
83343
+
83344
+ var objKeys;
83345
+ if (generateArrayPrefix === 'comma' && isArray(obj)) {
83346
+ // we need to join elements in
83347
+ if (encodeValuesOnly && encoder) {
83348
+ obj = utils.maybeMap(obj, encoder);
83349
+ }
83350
+ objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
83351
+ } else if (isArray(filter)) {
83352
+ objKeys = filter;
83353
+ } else {
83354
+ var keys = Object.keys(obj);
83355
+ objKeys = sort ? keys.sort(sort) : keys;
83356
+ }
83357
+
83358
+ var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix);
83359
+
83360
+ var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;
83361
+
83362
+ if (allowEmptyArrays && isArray(obj) && obj.length === 0) {
83363
+ return adjustedPrefix + '[]';
83364
+ }
83365
+
83366
+ for (var j = 0; j < objKeys.length; ++j) {
83367
+ var key = objKeys[j];
83368
+ var value = typeof key === 'object' && key && typeof key.value !== 'undefined'
83369
+ ? key.value
83370
+ : obj[key];
83371
+
83372
+ if (skipNulls && value === null) {
83373
+ continue;
83374
+ }
83375
+
83376
+ var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key);
83377
+ var keyPrefix = isArray(obj)
83378
+ ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix
83379
+ : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');
83380
+
83381
+ sideChannel.set(object, step);
83382
+ var valueSideChannel = getSideChannel();
83383
+ valueSideChannel.set(sentinel, sideChannel);
83384
+ pushToArray(values, stringify(
83385
+ value,
83386
+ keyPrefix,
83387
+ generateArrayPrefix,
83388
+ commaRoundTrip,
83389
+ allowEmptyArrays,
83390
+ strictNullHandling,
83391
+ skipNulls,
83392
+ encodeDotInKeys,
83393
+ generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,
83394
+ filter,
83395
+ sort,
83396
+ allowDots,
83397
+ serializeDate,
83398
+ format,
83399
+ formatter,
83400
+ encodeValuesOnly,
83401
+ charset,
83402
+ valueSideChannel
83403
+ ));
83404
+ }
83405
+
83406
+ return values;
83407
+ };
83408
+
83409
+ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
83410
+ if (!opts) {
83411
+ return defaults;
83412
+ }
83413
+
83414
+ if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {
83415
+ throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');
83416
+ }
83417
+
83418
+ if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {
83419
+ throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');
83420
+ }
83421
+
83422
+ if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
83423
+ throw new TypeError('Encoder has to be a function.');
83424
+ }
83425
+
83426
+ var charset = opts.charset || defaults.charset;
83427
+ if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
83428
+ throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
83429
+ }
83430
+
83431
+ var format = formats['default'];
83432
+ if (typeof opts.format !== 'undefined') {
83433
+ if (!has.call(formats.formatters, opts.format)) {
83434
+ throw new TypeError('Unknown format option provided.');
83435
+ }
83436
+ format = opts.format;
83437
+ }
83438
+ var formatter = formats.formatters[format];
83439
+
83440
+ var filter = defaults.filter;
83441
+ if (typeof opts.filter === 'function' || isArray(opts.filter)) {
83442
+ filter = opts.filter;
83443
+ }
83444
+
83445
+ var arrayFormat;
83446
+ if (opts.arrayFormat in arrayPrefixGenerators) {
83447
+ arrayFormat = opts.arrayFormat;
83448
+ } else if ('indices' in opts) {
83449
+ arrayFormat = opts.indices ? 'indices' : 'repeat';
83450
+ } else {
83451
+ arrayFormat = defaults.arrayFormat;
83452
+ }
83453
+
83454
+ if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
83455
+ throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
83456
+ }
83457
+
83458
+ var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;
83459
+
83460
+ return {
83461
+ addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
83462
+ allowDots: allowDots,
83463
+ allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,
83464
+ arrayFormat: arrayFormat,
83465
+ charset: charset,
83466
+ charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
83467
+ commaRoundTrip: !!opts.commaRoundTrip,
83468
+ delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
83469
+ encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
83470
+ encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,
83471
+ encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
83472
+ encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
83473
+ filter: filter,
83474
+ format: format,
83475
+ formatter: formatter,
83476
+ serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
83477
+ skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
83478
+ sort: typeof opts.sort === 'function' ? opts.sort : null,
83479
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
83480
+ };
83481
+ };
83482
+
83483
+ module.exports = function (object, opts) {
83484
+ var obj = object;
83485
+ var options = normalizeStringifyOptions(opts);
83486
+
83487
+ var objKeys;
83488
+ var filter;
83489
+
83490
+ if (typeof options.filter === 'function') {
83491
+ filter = options.filter;
83492
+ obj = filter('', obj);
83493
+ } else if (isArray(options.filter)) {
83494
+ filter = options.filter;
83495
+ objKeys = filter;
83496
+ }
83497
+
83498
+ var keys = [];
83499
+
83500
+ if (typeof obj !== 'object' || obj === null) {
83501
+ return '';
83502
+ }
83503
+
83504
+ var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];
83505
+ var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;
83506
+
83507
+ if (!objKeys) {
83508
+ objKeys = Object.keys(obj);
83509
+ }
83510
+
83511
+ if (options.sort) {
83512
+ objKeys.sort(options.sort);
83513
+ }
83514
+
83515
+ var sideChannel = getSideChannel();
83516
+ for (var i = 0; i < objKeys.length; ++i) {
83517
+ var key = objKeys[i];
83518
+ var value = obj[key];
83519
+
83520
+ if (options.skipNulls && value === null) {
83521
+ continue;
83522
+ }
83523
+ pushToArray(keys, stringify(
83524
+ value,
83525
+ key,
83526
+ generateArrayPrefix,
83527
+ commaRoundTrip,
83528
+ options.allowEmptyArrays,
83529
+ options.strictNullHandling,
83530
+ options.skipNulls,
83531
+ options.encodeDotInKeys,
83532
+ options.encode ? options.encoder : null,
83533
+ options.filter,
83534
+ options.sort,
83535
+ options.allowDots,
83536
+ options.serializeDate,
83537
+ options.format,
83538
+ options.formatter,
83539
+ options.encodeValuesOnly,
83540
+ options.charset,
83541
+ sideChannel
83542
+ ));
83543
+ }
83544
+
83545
+ var joined = keys.join(options.delimiter);
83546
+ var prefix = options.addQueryPrefix === true ? '?' : '';
83547
+
83548
+ if (options.charsetSentinel) {
83549
+ if (options.charset === 'iso-8859-1') {
83550
+ // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
83551
+ prefix += 'utf8=%26%2310003%3B&';
83552
+ } else {
83553
+ // encodeURIComponent('✓')
83554
+ prefix += 'utf8=%E2%9C%93&';
83555
+ }
83556
+ }
83557
+
83558
+ return joined.length > 0 ? prefix + joined : '';
83559
+ };
83560
+
83561
+
83562
+ /***/ }),
83563
+
83564
+ /***/ "./node_modules/qs/lib/utils.js":
83565
+ /*!**************************************!*\
83566
+ !*** ./node_modules/qs/lib/utils.js ***!
83567
+ \**************************************/
83568
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
83569
+
83570
+ "use strict";
83571
+
83572
+
83573
+ var formats = __webpack_require__(/*! ./formats */ "./node_modules/qs/lib/formats.js");
83574
+
83575
+ var has = Object.prototype.hasOwnProperty;
83576
+ var isArray = Array.isArray;
83577
+
83578
+ var hexTable = (function () {
83579
+ var array = [];
83580
+ for (var i = 0; i < 256; ++i) {
83581
+ array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
83582
+ }
83583
+
83584
+ return array;
83585
+ }());
83586
+
83587
+ var compactQueue = function compactQueue(queue) {
83588
+ while (queue.length > 1) {
83589
+ var item = queue.pop();
83590
+ var obj = item.obj[item.prop];
83591
+
83592
+ if (isArray(obj)) {
83593
+ var compacted = [];
83594
+
83595
+ for (var j = 0; j < obj.length; ++j) {
83596
+ if (typeof obj[j] !== 'undefined') {
83597
+ compacted.push(obj[j]);
83598
+ }
83599
+ }
83600
+
83601
+ item.obj[item.prop] = compacted;
83602
+ }
83603
+ }
83604
+ };
83605
+
83606
+ var arrayToObject = function arrayToObject(source, options) {
83607
+ var obj = options && options.plainObjects ? { __proto__: null } : {};
83608
+ for (var i = 0; i < source.length; ++i) {
83609
+ if (typeof source[i] !== 'undefined') {
83610
+ obj[i] = source[i];
83611
+ }
83612
+ }
83613
+
83614
+ return obj;
83615
+ };
83616
+
83617
+ var merge = function merge(target, source, options) {
83618
+ /* eslint no-param-reassign: 0 */
83619
+ if (!source) {
83620
+ return target;
83621
+ }
83622
+
83623
+ if (typeof source !== 'object' && typeof source !== 'function') {
83624
+ if (isArray(target)) {
83625
+ target.push(source);
83626
+ } else if (target && typeof target === 'object') {
83627
+ if (
83628
+ (options && (options.plainObjects || options.allowPrototypes))
83629
+ || !has.call(Object.prototype, source)
83630
+ ) {
83631
+ target[source] = true;
83632
+ }
83633
+ } else {
83634
+ return [target, source];
83635
+ }
83636
+
83637
+ return target;
83638
+ }
83639
+
83640
+ if (!target || typeof target !== 'object') {
83641
+ return [target].concat(source);
83642
+ }
83643
+
83644
+ var mergeTarget = target;
83645
+ if (isArray(target) && !isArray(source)) {
83646
+ mergeTarget = arrayToObject(target, options);
83647
+ }
83648
+
83649
+ if (isArray(target) && isArray(source)) {
83650
+ source.forEach(function (item, i) {
83651
+ if (has.call(target, i)) {
83652
+ var targetItem = target[i];
83653
+ if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
83654
+ target[i] = merge(targetItem, item, options);
83655
+ } else {
83656
+ target.push(item);
83657
+ }
83658
+ } else {
83659
+ target[i] = item;
83660
+ }
83661
+ });
83662
+ return target;
83663
+ }
83664
+
83665
+ return Object.keys(source).reduce(function (acc, key) {
83666
+ var value = source[key];
83667
+
83668
+ if (has.call(acc, key)) {
83669
+ acc[key] = merge(acc[key], value, options);
83670
+ } else {
83671
+ acc[key] = value;
83672
+ }
83673
+ return acc;
83674
+ }, mergeTarget);
83675
+ };
83676
+
83677
+ var assign = function assignSingleSource(target, source) {
83678
+ return Object.keys(source).reduce(function (acc, key) {
83679
+ acc[key] = source[key];
83680
+ return acc;
83681
+ }, target);
83682
+ };
83683
+
83684
+ var decode = function (str, defaultDecoder, charset) {
83685
+ var strWithoutPlus = str.replace(/\+/g, ' ');
83686
+ if (charset === 'iso-8859-1') {
83687
+ // unescape never throws, no try...catch needed:
83688
+ return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
83689
+ }
83690
+ // utf-8
83691
+ try {
83692
+ return decodeURIComponent(strWithoutPlus);
83693
+ } catch (e) {
83694
+ return strWithoutPlus;
83695
+ }
83696
+ };
83697
+
83698
+ var limit = 1024;
83699
+
83700
+ /* eslint operator-linebreak: [2, "before"] */
83701
+
83702
+ var encode = function encode(str, defaultEncoder, charset, kind, format) {
83703
+ // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
83704
+ // It has been adapted here for stricter adherence to RFC 3986
83705
+ if (str.length === 0) {
83706
+ return str;
83707
+ }
83708
+
83709
+ var string = str;
83710
+ if (typeof str === 'symbol') {
83711
+ string = Symbol.prototype.toString.call(str);
83712
+ } else if (typeof str !== 'string') {
83713
+ string = String(str);
83714
+ }
83715
+
83716
+ if (charset === 'iso-8859-1') {
83717
+ return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
83718
+ return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
83719
+ });
83720
+ }
83721
+
83722
+ var out = '';
83723
+ for (var j = 0; j < string.length; j += limit) {
83724
+ var segment = string.length >= limit ? string.slice(j, j + limit) : string;
83725
+ var arr = [];
83726
+
83727
+ for (var i = 0; i < segment.length; ++i) {
83728
+ var c = segment.charCodeAt(i);
83729
+ if (
83730
+ c === 0x2D // -
83731
+ || c === 0x2E // .
83732
+ || c === 0x5F // _
83733
+ || c === 0x7E // ~
83734
+ || (c >= 0x30 && c <= 0x39) // 0-9
83735
+ || (c >= 0x41 && c <= 0x5A) // a-z
83736
+ || (c >= 0x61 && c <= 0x7A) // A-Z
83737
+ || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )
83738
+ ) {
83739
+ arr[arr.length] = segment.charAt(i);
83740
+ continue;
83741
+ }
83742
+
83743
+ if (c < 0x80) {
83744
+ arr[arr.length] = hexTable[c];
83745
+ continue;
83746
+ }
83747
+
83748
+ if (c < 0x800) {
83749
+ arr[arr.length] = hexTable[0xC0 | (c >> 6)]
83750
+ + hexTable[0x80 | (c & 0x3F)];
83751
+ continue;
83752
+ }
83753
+
83754
+ if (c < 0xD800 || c >= 0xE000) {
83755
+ arr[arr.length] = hexTable[0xE0 | (c >> 12)]
83756
+ + hexTable[0x80 | ((c >> 6) & 0x3F)]
83757
+ + hexTable[0x80 | (c & 0x3F)];
83758
+ continue;
83759
+ }
83760
+
83761
+ i += 1;
83762
+ c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));
83763
+
83764
+ arr[arr.length] = hexTable[0xF0 | (c >> 18)]
83765
+ + hexTable[0x80 | ((c >> 12) & 0x3F)]
83766
+ + hexTable[0x80 | ((c >> 6) & 0x3F)]
83767
+ + hexTable[0x80 | (c & 0x3F)];
83768
+ }
83769
+
83770
+ out += arr.join('');
83771
+ }
83772
+
83773
+ return out;
83774
+ };
83775
+
83776
+ var compact = function compact(value) {
83777
+ var queue = [{ obj: { o: value }, prop: 'o' }];
83778
+ var refs = [];
83779
+
83780
+ for (var i = 0; i < queue.length; ++i) {
83781
+ var item = queue[i];
83782
+ var obj = item.obj[item.prop];
83783
+
83784
+ var keys = Object.keys(obj);
83785
+ for (var j = 0; j < keys.length; ++j) {
83786
+ var key = keys[j];
83787
+ var val = obj[key];
83788
+ if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
83789
+ queue.push({ obj: obj, prop: key });
83790
+ refs.push(val);
83791
+ }
83792
+ }
83793
+ }
83794
+
83795
+ compactQueue(queue);
83796
+
83797
+ return value;
83798
+ };
83799
+
83800
+ var isRegExp = function isRegExp(obj) {
83801
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
83802
+ };
83803
+
83804
+ var isBuffer = function isBuffer(obj) {
83805
+ if (!obj || typeof obj !== 'object') {
83806
+ return false;
83807
+ }
83808
+
83809
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
83810
+ };
83811
+
83812
+ var combine = function combine(a, b) {
83813
+ return [].concat(a, b);
83814
+ };
83815
+
83816
+ var maybeMap = function maybeMap(val, fn) {
83817
+ if (isArray(val)) {
83818
+ var mapped = [];
83819
+ for (var i = 0; i < val.length; i += 1) {
83820
+ mapped.push(fn(val[i]));
83821
+ }
83822
+ return mapped;
83823
+ }
83824
+ return fn(val);
83825
+ };
83826
+
83827
+ module.exports = {
83828
+ arrayToObject: arrayToObject,
83829
+ assign: assign,
83830
+ combine: combine,
83831
+ compact: compact,
83832
+ decode: decode,
83833
+ encode: encode,
83834
+ isBuffer: isBuffer,
83835
+ isRegExp: isRegExp,
83836
+ maybeMap: maybeMap,
83837
+ merge: merge
83838
+ };
83839
+
83840
+
81788
83841
  /***/ }),
81789
83842
 
81790
83843
  /***/ "./node_modules/randombytes/browser.js":
@@ -96397,6 +98450,358 @@ Sha512.prototype._hash = function () {
96397
98450
  module.exports = Sha512;
96398
98451
 
96399
98452
 
98453
+ /***/ }),
98454
+
98455
+ /***/ "./node_modules/side-channel-list/index.js":
98456
+ /*!*************************************************!*\
98457
+ !*** ./node_modules/side-channel-list/index.js ***!
98458
+ \*************************************************/
98459
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
98460
+
98461
+ "use strict";
98462
+
98463
+
98464
+ var inspect = __webpack_require__(/*! object-inspect */ "./node_modules/object-inspect/index.js");
98465
+
98466
+ var $TypeError = __webpack_require__(/*! es-errors/type */ "./node_modules/es-errors/type.js");
98467
+
98468
+ /*
98469
+ * This function traverses the list returning the node corresponding to the given key.
98470
+ *
98471
+ * That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.
98472
+ * By doing so, all the recently used nodes can be accessed relatively quickly.
98473
+ */
98474
+ /** @type {import('./list.d.ts').listGetNode} */
98475
+ // eslint-disable-next-line consistent-return
98476
+ var listGetNode = function (list, key, isDelete) {
98477
+ /** @type {typeof list | NonNullable<(typeof list)['next']>} */
98478
+ var prev = list;
98479
+ /** @type {(typeof list)['next']} */
98480
+ var curr;
98481
+ // eslint-disable-next-line eqeqeq
98482
+ for (; (curr = prev.next) != null; prev = curr) {
98483
+ if (curr.key === key) {
98484
+ prev.next = curr.next;
98485
+ if (!isDelete) {
98486
+ // eslint-disable-next-line no-extra-parens
98487
+ curr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);
98488
+ list.next = curr; // eslint-disable-line no-param-reassign
98489
+ }
98490
+ return curr;
98491
+ }
98492
+ }
98493
+ };
98494
+
98495
+ /** @type {import('./list.d.ts').listGet} */
98496
+ var listGet = function (objects, key) {
98497
+ if (!objects) {
98498
+ return void undefined;
98499
+ }
98500
+ var node = listGetNode(objects, key);
98501
+ return node && node.value;
98502
+ };
98503
+ /** @type {import('./list.d.ts').listSet} */
98504
+ var listSet = function (objects, key, value) {
98505
+ var node = listGetNode(objects, key);
98506
+ if (node) {
98507
+ node.value = value;
98508
+ } else {
98509
+ // Prepend the new node to the beginning of the list
98510
+ objects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens
98511
+ key: key,
98512
+ next: objects.next,
98513
+ value: value
98514
+ });
98515
+ }
98516
+ };
98517
+ /** @type {import('./list.d.ts').listHas} */
98518
+ var listHas = function (objects, key) {
98519
+ if (!objects) {
98520
+ return false;
98521
+ }
98522
+ return !!listGetNode(objects, key);
98523
+ };
98524
+ /** @type {import('./list.d.ts').listDelete} */
98525
+ // eslint-disable-next-line consistent-return
98526
+ var listDelete = function (objects, key) {
98527
+ if (objects) {
98528
+ return listGetNode(objects, key, true);
98529
+ }
98530
+ };
98531
+
98532
+ /** @type {import('.')} */
98533
+ module.exports = function getSideChannelList() {
98534
+ /** @typedef {ReturnType<typeof getSideChannelList>} Channel */
98535
+ /** @typedef {Parameters<Channel['get']>[0]} K */
98536
+ /** @typedef {Parameters<Channel['set']>[1]} V */
98537
+
98538
+ /** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;
98539
+
98540
+ /** @type {Channel} */
98541
+ var channel = {
98542
+ assert: function (key) {
98543
+ if (!channel.has(key)) {
98544
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
98545
+ }
98546
+ },
98547
+ 'delete': function (key) {
98548
+ var root = $o && $o.next;
98549
+ var deletedNode = listDelete($o, key);
98550
+ if (deletedNode && root && root === deletedNode) {
98551
+ $o = void undefined;
98552
+ }
98553
+ return !!deletedNode;
98554
+ },
98555
+ get: function (key) {
98556
+ return listGet($o, key);
98557
+ },
98558
+ has: function (key) {
98559
+ return listHas($o, key);
98560
+ },
98561
+ set: function (key, value) {
98562
+ if (!$o) {
98563
+ // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
98564
+ $o = {
98565
+ next: void undefined
98566
+ };
98567
+ }
98568
+ // eslint-disable-next-line no-extra-parens
98569
+ listSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);
98570
+ }
98571
+ };
98572
+ // @ts-expect-error TODO: figure out why this is erroring
98573
+ return channel;
98574
+ };
98575
+
98576
+
98577
+ /***/ }),
98578
+
98579
+ /***/ "./node_modules/side-channel-map/index.js":
98580
+ /*!************************************************!*\
98581
+ !*** ./node_modules/side-channel-map/index.js ***!
98582
+ \************************************************/
98583
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
98584
+
98585
+ "use strict";
98586
+
98587
+
98588
+ var GetIntrinsic = __webpack_require__(/*! get-intrinsic */ "./node_modules/get-intrinsic/index.js");
98589
+ var callBound = __webpack_require__(/*! call-bound */ "./node_modules/call-bound/index.js");
98590
+ var inspect = __webpack_require__(/*! object-inspect */ "./node_modules/object-inspect/index.js");
98591
+
98592
+ var $TypeError = __webpack_require__(/*! es-errors/type */ "./node_modules/es-errors/type.js");
98593
+ var $Map = GetIntrinsic('%Map%', true);
98594
+
98595
+ /** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */
98596
+ var $mapGet = callBound('Map.prototype.get', true);
98597
+ /** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */
98598
+ var $mapSet = callBound('Map.prototype.set', true);
98599
+ /** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */
98600
+ var $mapHas = callBound('Map.prototype.has', true);
98601
+ /** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */
98602
+ var $mapDelete = callBound('Map.prototype.delete', true);
98603
+ /** @type {<K, V>(thisArg: Map<K, V>) => number} */
98604
+ var $mapSize = callBound('Map.prototype.size', true);
98605
+
98606
+ /** @type {import('.')} */
98607
+ module.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {
98608
+ /** @typedef {ReturnType<typeof getSideChannelMap>} Channel */
98609
+ /** @typedef {Parameters<Channel['get']>[0]} K */
98610
+ /** @typedef {Parameters<Channel['set']>[1]} V */
98611
+
98612
+ /** @type {Map<K, V> | undefined} */ var $m;
98613
+
98614
+ /** @type {Channel} */
98615
+ var channel = {
98616
+ assert: function (key) {
98617
+ if (!channel.has(key)) {
98618
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
98619
+ }
98620
+ },
98621
+ 'delete': function (key) {
98622
+ if ($m) {
98623
+ var result = $mapDelete($m, key);
98624
+ if ($mapSize($m) === 0) {
98625
+ $m = void undefined;
98626
+ }
98627
+ return result;
98628
+ }
98629
+ return false;
98630
+ },
98631
+ get: function (key) { // eslint-disable-line consistent-return
98632
+ if ($m) {
98633
+ return $mapGet($m, key);
98634
+ }
98635
+ },
98636
+ has: function (key) {
98637
+ if ($m) {
98638
+ return $mapHas($m, key);
98639
+ }
98640
+ return false;
98641
+ },
98642
+ set: function (key, value) {
98643
+ if (!$m) {
98644
+ // @ts-expect-error TS can't handle narrowing a variable inside a closure
98645
+ $m = new $Map();
98646
+ }
98647
+ $mapSet($m, key, value);
98648
+ }
98649
+ };
98650
+
98651
+ // @ts-expect-error TODO: figure out why TS is erroring here
98652
+ return channel;
98653
+ };
98654
+
98655
+
98656
+ /***/ }),
98657
+
98658
+ /***/ "./node_modules/side-channel-weakmap/index.js":
98659
+ /*!****************************************************!*\
98660
+ !*** ./node_modules/side-channel-weakmap/index.js ***!
98661
+ \****************************************************/
98662
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
98663
+
98664
+ "use strict";
98665
+
98666
+
98667
+ var GetIntrinsic = __webpack_require__(/*! get-intrinsic */ "./node_modules/get-intrinsic/index.js");
98668
+ var callBound = __webpack_require__(/*! call-bound */ "./node_modules/call-bound/index.js");
98669
+ var inspect = __webpack_require__(/*! object-inspect */ "./node_modules/object-inspect/index.js");
98670
+ var getSideChannelMap = __webpack_require__(/*! side-channel-map */ "./node_modules/side-channel-map/index.js");
98671
+
98672
+ var $TypeError = __webpack_require__(/*! es-errors/type */ "./node_modules/es-errors/type.js");
98673
+ var $WeakMap = GetIntrinsic('%WeakMap%', true);
98674
+
98675
+ /** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */
98676
+ var $weakMapGet = callBound('WeakMap.prototype.get', true);
98677
+ /** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */
98678
+ var $weakMapSet = callBound('WeakMap.prototype.set', true);
98679
+ /** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
98680
+ var $weakMapHas = callBound('WeakMap.prototype.has', true);
98681
+ /** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */
98682
+ var $weakMapDelete = callBound('WeakMap.prototype.delete', true);
98683
+
98684
+ /** @type {import('.')} */
98685
+ module.exports = $WeakMap
98686
+ ? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {
98687
+ /** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */
98688
+ /** @typedef {Parameters<Channel['get']>[0]} K */
98689
+ /** @typedef {Parameters<Channel['set']>[1]} V */
98690
+
98691
+ /** @type {WeakMap<K & object, V> | undefined} */ var $wm;
98692
+ /** @type {Channel | undefined} */ var $m;
98693
+
98694
+ /** @type {Channel} */
98695
+ var channel = {
98696
+ assert: function (key) {
98697
+ if (!channel.has(key)) {
98698
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
98699
+ }
98700
+ },
98701
+ 'delete': function (key) {
98702
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
98703
+ if ($wm) {
98704
+ return $weakMapDelete($wm, key);
98705
+ }
98706
+ } else if (getSideChannelMap) {
98707
+ if ($m) {
98708
+ return $m['delete'](key);
98709
+ }
98710
+ }
98711
+ return false;
98712
+ },
98713
+ get: function (key) {
98714
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
98715
+ if ($wm) {
98716
+ return $weakMapGet($wm, key);
98717
+ }
98718
+ }
98719
+ return $m && $m.get(key);
98720
+ },
98721
+ has: function (key) {
98722
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
98723
+ if ($wm) {
98724
+ return $weakMapHas($wm, key);
98725
+ }
98726
+ }
98727
+ return !!$m && $m.has(key);
98728
+ },
98729
+ set: function (key, value) {
98730
+ if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
98731
+ if (!$wm) {
98732
+ $wm = new $WeakMap();
98733
+ }
98734
+ $weakMapSet($wm, key, value);
98735
+ } else if (getSideChannelMap) {
98736
+ if (!$m) {
98737
+ $m = getSideChannelMap();
98738
+ }
98739
+ // eslint-disable-next-line no-extra-parens
98740
+ /** @type {NonNullable<typeof $m>} */ ($m).set(key, value);
98741
+ }
98742
+ }
98743
+ };
98744
+
98745
+ // @ts-expect-error TODO: figure out why this is erroring
98746
+ return channel;
98747
+ }
98748
+ : getSideChannelMap;
98749
+
98750
+
98751
+ /***/ }),
98752
+
98753
+ /***/ "./node_modules/side-channel/index.js":
98754
+ /*!********************************************!*\
98755
+ !*** ./node_modules/side-channel/index.js ***!
98756
+ \********************************************/
98757
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
98758
+
98759
+ "use strict";
98760
+
98761
+
98762
+ var $TypeError = __webpack_require__(/*! es-errors/type */ "./node_modules/es-errors/type.js");
98763
+ var inspect = __webpack_require__(/*! object-inspect */ "./node_modules/object-inspect/index.js");
98764
+ var getSideChannelList = __webpack_require__(/*! side-channel-list */ "./node_modules/side-channel-list/index.js");
98765
+ var getSideChannelMap = __webpack_require__(/*! side-channel-map */ "./node_modules/side-channel-map/index.js");
98766
+ var getSideChannelWeakMap = __webpack_require__(/*! side-channel-weakmap */ "./node_modules/side-channel-weakmap/index.js");
98767
+
98768
+ var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;
98769
+
98770
+ /** @type {import('.')} */
98771
+ module.exports = function getSideChannel() {
98772
+ /** @typedef {ReturnType<typeof getSideChannel>} Channel */
98773
+
98774
+ /** @type {Channel | undefined} */ var $channelData;
98775
+
98776
+ /** @type {Channel} */
98777
+ var channel = {
98778
+ assert: function (key) {
98779
+ if (!channel.has(key)) {
98780
+ throw new $TypeError('Side channel does not contain ' + inspect(key));
98781
+ }
98782
+ },
98783
+ 'delete': function (key) {
98784
+ return !!$channelData && $channelData['delete'](key);
98785
+ },
98786
+ get: function (key) {
98787
+ return $channelData && $channelData.get(key);
98788
+ },
98789
+ has: function (key) {
98790
+ return !!$channelData && $channelData.has(key);
98791
+ },
98792
+ set: function (key, value) {
98793
+ if (!$channelData) {
98794
+ $channelData = makeChannel();
98795
+ }
98796
+
98797
+ $channelData.set(key, value);
98798
+ }
98799
+ };
98800
+ // @ts-expect-error TODO: figure out why this is erroring
98801
+ return channel;
98802
+ };
98803
+
98804
+
96400
98805
  /***/ }),
96401
98806
 
96402
98807
  /***/ "./node_modules/stream-browserify/index.js":
@@ -96992,6 +99397,1324 @@ module.exports = $typedArrayBuffer || function typedArrayBuffer(x) {
96992
99397
  };
96993
99398
 
96994
99399
 
99400
+ /***/ }),
99401
+
99402
+ /***/ "./node_modules/url/node_modules/punycode/punycode.js":
99403
+ /*!************************************************************!*\
99404
+ !*** ./node_modules/url/node_modules/punycode/punycode.js ***!
99405
+ \************************************************************/
99406
+ /***/ (function(module, exports, __webpack_require__) {
99407
+
99408
+ /* module decorator */ module = __webpack_require__.nmd(module);
99409
+ var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */
99410
+ ;(function(root) {
99411
+
99412
+ /** Detect free variables */
99413
+ var freeExports = true && exports &&
99414
+ !exports.nodeType && exports;
99415
+ var freeModule = true && module &&
99416
+ !module.nodeType && module;
99417
+ var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g;
99418
+ if (
99419
+ freeGlobal.global === freeGlobal ||
99420
+ freeGlobal.window === freeGlobal ||
99421
+ freeGlobal.self === freeGlobal
99422
+ ) {
99423
+ root = freeGlobal;
99424
+ }
99425
+
99426
+ /**
99427
+ * The `punycode` object.
99428
+ * @name punycode
99429
+ * @type Object
99430
+ */
99431
+ var punycode,
99432
+
99433
+ /** Highest positive signed 32-bit float value */
99434
+ maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
99435
+
99436
+ /** Bootstring parameters */
99437
+ base = 36,
99438
+ tMin = 1,
99439
+ tMax = 26,
99440
+ skew = 38,
99441
+ damp = 700,
99442
+ initialBias = 72,
99443
+ initialN = 128, // 0x80
99444
+ delimiter = '-', // '\x2D'
99445
+
99446
+ /** Regular expressions */
99447
+ regexPunycode = /^xn--/,
99448
+ regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
99449
+ regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
99450
+
99451
+ /** Error messages */
99452
+ errors = {
99453
+ 'overflow': 'Overflow: input needs wider integers to process',
99454
+ 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
99455
+ 'invalid-input': 'Invalid input'
99456
+ },
99457
+
99458
+ /** Convenience shortcuts */
99459
+ baseMinusTMin = base - tMin,
99460
+ floor = Math.floor,
99461
+ stringFromCharCode = String.fromCharCode,
99462
+
99463
+ /** Temporary variable */
99464
+ key;
99465
+
99466
+ /*--------------------------------------------------------------------------*/
99467
+
99468
+ /**
99469
+ * A generic error utility function.
99470
+ * @private
99471
+ * @param {String} type The error type.
99472
+ * @returns {Error} Throws a `RangeError` with the applicable error message.
99473
+ */
99474
+ function error(type) {
99475
+ throw new RangeError(errors[type]);
99476
+ }
99477
+
99478
+ /**
99479
+ * A generic `Array#map` utility function.
99480
+ * @private
99481
+ * @param {Array} array The array to iterate over.
99482
+ * @param {Function} callback The function that gets called for every array
99483
+ * item.
99484
+ * @returns {Array} A new array of values returned by the callback function.
99485
+ */
99486
+ function map(array, fn) {
99487
+ var length = array.length;
99488
+ var result = [];
99489
+ while (length--) {
99490
+ result[length] = fn(array[length]);
99491
+ }
99492
+ return result;
99493
+ }
99494
+
99495
+ /**
99496
+ * A simple `Array#map`-like wrapper to work with domain name strings or email
99497
+ * addresses.
99498
+ * @private
99499
+ * @param {String} domain The domain name or email address.
99500
+ * @param {Function} callback The function that gets called for every
99501
+ * character.
99502
+ * @returns {Array} A new string of characters returned by the callback
99503
+ * function.
99504
+ */
99505
+ function mapDomain(string, fn) {
99506
+ var parts = string.split('@');
99507
+ var result = '';
99508
+ if (parts.length > 1) {
99509
+ // In email addresses, only the domain name should be punycoded. Leave
99510
+ // the local part (i.e. everything up to `@`) intact.
99511
+ result = parts[0] + '@';
99512
+ string = parts[1];
99513
+ }
99514
+ // Avoid `split(regex)` for IE8 compatibility. See #17.
99515
+ string = string.replace(regexSeparators, '\x2E');
99516
+ var labels = string.split('.');
99517
+ var encoded = map(labels, fn).join('.');
99518
+ return result + encoded;
99519
+ }
99520
+
99521
+ /**
99522
+ * Creates an array containing the numeric code points of each Unicode
99523
+ * character in the string. While JavaScript uses UCS-2 internally,
99524
+ * this function will convert a pair of surrogate halves (each of which
99525
+ * UCS-2 exposes as separate characters) into a single code point,
99526
+ * matching UTF-16.
99527
+ * @see `punycode.ucs2.encode`
99528
+ * @see <https://mathiasbynens.be/notes/javascript-encoding>
99529
+ * @memberOf punycode.ucs2
99530
+ * @name decode
99531
+ * @param {String} string The Unicode input string (UCS-2).
99532
+ * @returns {Array} The new array of code points.
99533
+ */
99534
+ function ucs2decode(string) {
99535
+ var output = [],
99536
+ counter = 0,
99537
+ length = string.length,
99538
+ value,
99539
+ extra;
99540
+ while (counter < length) {
99541
+ value = string.charCodeAt(counter++);
99542
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
99543
+ // high surrogate, and there is a next character
99544
+ extra = string.charCodeAt(counter++);
99545
+ if ((extra & 0xFC00) == 0xDC00) { // low surrogate
99546
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
99547
+ } else {
99548
+ // unmatched surrogate; only append this code unit, in case the next
99549
+ // code unit is the high surrogate of a surrogate pair
99550
+ output.push(value);
99551
+ counter--;
99552
+ }
99553
+ } else {
99554
+ output.push(value);
99555
+ }
99556
+ }
99557
+ return output;
99558
+ }
99559
+
99560
+ /**
99561
+ * Creates a string based on an array of numeric code points.
99562
+ * @see `punycode.ucs2.decode`
99563
+ * @memberOf punycode.ucs2
99564
+ * @name encode
99565
+ * @param {Array} codePoints The array of numeric code points.
99566
+ * @returns {String} The new Unicode string (UCS-2).
99567
+ */
99568
+ function ucs2encode(array) {
99569
+ return map(array, function(value) {
99570
+ var output = '';
99571
+ if (value > 0xFFFF) {
99572
+ value -= 0x10000;
99573
+ output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
99574
+ value = 0xDC00 | value & 0x3FF;
99575
+ }
99576
+ output += stringFromCharCode(value);
99577
+ return output;
99578
+ }).join('');
99579
+ }
99580
+
99581
+ /**
99582
+ * Converts a basic code point into a digit/integer.
99583
+ * @see `digitToBasic()`
99584
+ * @private
99585
+ * @param {Number} codePoint The basic numeric code point value.
99586
+ * @returns {Number} The numeric value of a basic code point (for use in
99587
+ * representing integers) in the range `0` to `base - 1`, or `base` if
99588
+ * the code point does not represent a value.
99589
+ */
99590
+ function basicToDigit(codePoint) {
99591
+ if (codePoint - 48 < 10) {
99592
+ return codePoint - 22;
99593
+ }
99594
+ if (codePoint - 65 < 26) {
99595
+ return codePoint - 65;
99596
+ }
99597
+ if (codePoint - 97 < 26) {
99598
+ return codePoint - 97;
99599
+ }
99600
+ return base;
99601
+ }
99602
+
99603
+ /**
99604
+ * Converts a digit/integer into a basic code point.
99605
+ * @see `basicToDigit()`
99606
+ * @private
99607
+ * @param {Number} digit The numeric value of a basic code point.
99608
+ * @returns {Number} The basic code point whose value (when used for
99609
+ * representing integers) is `digit`, which needs to be in the range
99610
+ * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
99611
+ * used; else, the lowercase form is used. The behavior is undefined
99612
+ * if `flag` is non-zero and `digit` has no uppercase form.
99613
+ */
99614
+ function digitToBasic(digit, flag) {
99615
+ // 0..25 map to ASCII a..z or A..Z
99616
+ // 26..35 map to ASCII 0..9
99617
+ return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
99618
+ }
99619
+
99620
+ /**
99621
+ * Bias adaptation function as per section 3.4 of RFC 3492.
99622
+ * https://tools.ietf.org/html/rfc3492#section-3.4
99623
+ * @private
99624
+ */
99625
+ function adapt(delta, numPoints, firstTime) {
99626
+ var k = 0;
99627
+ delta = firstTime ? floor(delta / damp) : delta >> 1;
99628
+ delta += floor(delta / numPoints);
99629
+ for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
99630
+ delta = floor(delta / baseMinusTMin);
99631
+ }
99632
+ return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
99633
+ }
99634
+
99635
+ /**
99636
+ * Converts a Punycode string of ASCII-only symbols to a string of Unicode
99637
+ * symbols.
99638
+ * @memberOf punycode
99639
+ * @param {String} input The Punycode string of ASCII-only symbols.
99640
+ * @returns {String} The resulting string of Unicode symbols.
99641
+ */
99642
+ function decode(input) {
99643
+ // Don't use UCS-2
99644
+ var output = [],
99645
+ inputLength = input.length,
99646
+ out,
99647
+ i = 0,
99648
+ n = initialN,
99649
+ bias = initialBias,
99650
+ basic,
99651
+ j,
99652
+ index,
99653
+ oldi,
99654
+ w,
99655
+ k,
99656
+ digit,
99657
+ t,
99658
+ /** Cached calculation results */
99659
+ baseMinusT;
99660
+
99661
+ // Handle the basic code points: let `basic` be the number of input code
99662
+ // points before the last delimiter, or `0` if there is none, then copy
99663
+ // the first basic code points to the output.
99664
+
99665
+ basic = input.lastIndexOf(delimiter);
99666
+ if (basic < 0) {
99667
+ basic = 0;
99668
+ }
99669
+
99670
+ for (j = 0; j < basic; ++j) {
99671
+ // if it's not a basic code point
99672
+ if (input.charCodeAt(j) >= 0x80) {
99673
+ error('not-basic');
99674
+ }
99675
+ output.push(input.charCodeAt(j));
99676
+ }
99677
+
99678
+ // Main decoding loop: start just after the last delimiter if any basic code
99679
+ // points were copied; start at the beginning otherwise.
99680
+
99681
+ for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
99682
+
99683
+ // `index` is the index of the next character to be consumed.
99684
+ // Decode a generalized variable-length integer into `delta`,
99685
+ // which gets added to `i`. The overflow checking is easier
99686
+ // if we increase `i` as we go, then subtract off its starting
99687
+ // value at the end to obtain `delta`.
99688
+ for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
99689
+
99690
+ if (index >= inputLength) {
99691
+ error('invalid-input');
99692
+ }
99693
+
99694
+ digit = basicToDigit(input.charCodeAt(index++));
99695
+
99696
+ if (digit >= base || digit > floor((maxInt - i) / w)) {
99697
+ error('overflow');
99698
+ }
99699
+
99700
+ i += digit * w;
99701
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
99702
+
99703
+ if (digit < t) {
99704
+ break;
99705
+ }
99706
+
99707
+ baseMinusT = base - t;
99708
+ if (w > floor(maxInt / baseMinusT)) {
99709
+ error('overflow');
99710
+ }
99711
+
99712
+ w *= baseMinusT;
99713
+
99714
+ }
99715
+
99716
+ out = output.length + 1;
99717
+ bias = adapt(i - oldi, out, oldi == 0);
99718
+
99719
+ // `i` was supposed to wrap around from `out` to `0`,
99720
+ // incrementing `n` each time, so we'll fix that now:
99721
+ if (floor(i / out) > maxInt - n) {
99722
+ error('overflow');
99723
+ }
99724
+
99725
+ n += floor(i / out);
99726
+ i %= out;
99727
+
99728
+ // Insert `n` at position `i` of the output
99729
+ output.splice(i++, 0, n);
99730
+
99731
+ }
99732
+
99733
+ return ucs2encode(output);
99734
+ }
99735
+
99736
+ /**
99737
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
99738
+ * Punycode string of ASCII-only symbols.
99739
+ * @memberOf punycode
99740
+ * @param {String} input The string of Unicode symbols.
99741
+ * @returns {String} The resulting Punycode string of ASCII-only symbols.
99742
+ */
99743
+ function encode(input) {
99744
+ var n,
99745
+ delta,
99746
+ handledCPCount,
99747
+ basicLength,
99748
+ bias,
99749
+ j,
99750
+ m,
99751
+ q,
99752
+ k,
99753
+ t,
99754
+ currentValue,
99755
+ output = [],
99756
+ /** `inputLength` will hold the number of code points in `input`. */
99757
+ inputLength,
99758
+ /** Cached calculation results */
99759
+ handledCPCountPlusOne,
99760
+ baseMinusT,
99761
+ qMinusT;
99762
+
99763
+ // Convert the input in UCS-2 to Unicode
99764
+ input = ucs2decode(input);
99765
+
99766
+ // Cache the length
99767
+ inputLength = input.length;
99768
+
99769
+ // Initialize the state
99770
+ n = initialN;
99771
+ delta = 0;
99772
+ bias = initialBias;
99773
+
99774
+ // Handle the basic code points
99775
+ for (j = 0; j < inputLength; ++j) {
99776
+ currentValue = input[j];
99777
+ if (currentValue < 0x80) {
99778
+ output.push(stringFromCharCode(currentValue));
99779
+ }
99780
+ }
99781
+
99782
+ handledCPCount = basicLength = output.length;
99783
+
99784
+ // `handledCPCount` is the number of code points that have been handled;
99785
+ // `basicLength` is the number of basic code points.
99786
+
99787
+ // Finish the basic string - if it is not empty - with a delimiter
99788
+ if (basicLength) {
99789
+ output.push(delimiter);
99790
+ }
99791
+
99792
+ // Main encoding loop:
99793
+ while (handledCPCount < inputLength) {
99794
+
99795
+ // All non-basic code points < n have been handled already. Find the next
99796
+ // larger one:
99797
+ for (m = maxInt, j = 0; j < inputLength; ++j) {
99798
+ currentValue = input[j];
99799
+ if (currentValue >= n && currentValue < m) {
99800
+ m = currentValue;
99801
+ }
99802
+ }
99803
+
99804
+ // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
99805
+ // but guard against overflow
99806
+ handledCPCountPlusOne = handledCPCount + 1;
99807
+ if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
99808
+ error('overflow');
99809
+ }
99810
+
99811
+ delta += (m - n) * handledCPCountPlusOne;
99812
+ n = m;
99813
+
99814
+ for (j = 0; j < inputLength; ++j) {
99815
+ currentValue = input[j];
99816
+
99817
+ if (currentValue < n && ++delta > maxInt) {
99818
+ error('overflow');
99819
+ }
99820
+
99821
+ if (currentValue == n) {
99822
+ // Represent delta as a generalized variable-length integer
99823
+ for (q = delta, k = base; /* no condition */; k += base) {
99824
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
99825
+ if (q < t) {
99826
+ break;
99827
+ }
99828
+ qMinusT = q - t;
99829
+ baseMinusT = base - t;
99830
+ output.push(
99831
+ stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
99832
+ );
99833
+ q = floor(qMinusT / baseMinusT);
99834
+ }
99835
+
99836
+ output.push(stringFromCharCode(digitToBasic(q, 0)));
99837
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
99838
+ delta = 0;
99839
+ ++handledCPCount;
99840
+ }
99841
+ }
99842
+
99843
+ ++delta;
99844
+ ++n;
99845
+
99846
+ }
99847
+ return output.join('');
99848
+ }
99849
+
99850
+ /**
99851
+ * Converts a Punycode string representing a domain name or an email address
99852
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
99853
+ * it doesn't matter if you call it on a string that has already been
99854
+ * converted to Unicode.
99855
+ * @memberOf punycode
99856
+ * @param {String} input The Punycoded domain name or email address to
99857
+ * convert to Unicode.
99858
+ * @returns {String} The Unicode representation of the given Punycode
99859
+ * string.
99860
+ */
99861
+ function toUnicode(input) {
99862
+ return mapDomain(input, function(string) {
99863
+ return regexPunycode.test(string)
99864
+ ? decode(string.slice(4).toLowerCase())
99865
+ : string;
99866
+ });
99867
+ }
99868
+
99869
+ /**
99870
+ * Converts a Unicode string representing a domain name or an email address to
99871
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
99872
+ * i.e. it doesn't matter if you call it with a domain that's already in
99873
+ * ASCII.
99874
+ * @memberOf punycode
99875
+ * @param {String} input The domain name or email address to convert, as a
99876
+ * Unicode string.
99877
+ * @returns {String} The Punycode representation of the given domain name or
99878
+ * email address.
99879
+ */
99880
+ function toASCII(input) {
99881
+ return mapDomain(input, function(string) {
99882
+ return regexNonASCII.test(string)
99883
+ ? 'xn--' + encode(string)
99884
+ : string;
99885
+ });
99886
+ }
99887
+
99888
+ /*--------------------------------------------------------------------------*/
99889
+
99890
+ /** Define the public API */
99891
+ punycode = {
99892
+ /**
99893
+ * A string representing the current Punycode.js version number.
99894
+ * @memberOf punycode
99895
+ * @type String
99896
+ */
99897
+ 'version': '1.4.1',
99898
+ /**
99899
+ * An object of methods to convert from JavaScript's internal character
99900
+ * representation (UCS-2) to Unicode code points, and back.
99901
+ * @see <https://mathiasbynens.be/notes/javascript-encoding>
99902
+ * @memberOf punycode
99903
+ * @type Object
99904
+ */
99905
+ 'ucs2': {
99906
+ 'decode': ucs2decode,
99907
+ 'encode': ucs2encode
99908
+ },
99909
+ 'decode': decode,
99910
+ 'encode': encode,
99911
+ 'toASCII': toASCII,
99912
+ 'toUnicode': toUnicode
99913
+ };
99914
+
99915
+ /** Expose `punycode` */
99916
+ // Some AMD build optimizers, like r.js, check for specific condition patterns
99917
+ // like the following:
99918
+ if (
99919
+ true
99920
+ ) {
99921
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
99922
+ return punycode;
99923
+ }).call(exports, __webpack_require__, exports, module),
99924
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
99925
+ } else // removed by dead control flow
99926
+ {}
99927
+
99928
+ }(this));
99929
+
99930
+
99931
+ /***/ }),
99932
+
99933
+ /***/ "./node_modules/url/url.js":
99934
+ /*!*********************************!*\
99935
+ !*** ./node_modules/url/url.js ***!
99936
+ \*********************************/
99937
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
99938
+
99939
+ "use strict";
99940
+ /*
99941
+ * Copyright Joyent, Inc. and other Node contributors.
99942
+ *
99943
+ * Permission is hereby granted, free of charge, to any person obtaining a
99944
+ * copy of this software and associated documentation files (the
99945
+ * "Software"), to deal in the Software without restriction, including
99946
+ * without limitation the rights to use, copy, modify, merge, publish,
99947
+ * distribute, sublicense, and/or sell copies of the Software, and to permit
99948
+ * persons to whom the Software is furnished to do so, subject to the
99949
+ * following conditions:
99950
+ *
99951
+ * The above copyright notice and this permission notice shall be included
99952
+ * in all copies or substantial portions of the Software.
99953
+ *
99954
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
99955
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
99956
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
99957
+ * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
99958
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
99959
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
99960
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
99961
+ */
99962
+
99963
+
99964
+
99965
+ var punycode = __webpack_require__(/*! punycode/ */ "./node_modules/url/node_modules/punycode/punycode.js");
99966
+
99967
+ function Url() {
99968
+ this.protocol = null;
99969
+ this.slashes = null;
99970
+ this.auth = null;
99971
+ this.host = null;
99972
+ this.port = null;
99973
+ this.hostname = null;
99974
+ this.hash = null;
99975
+ this.search = null;
99976
+ this.query = null;
99977
+ this.pathname = null;
99978
+ this.path = null;
99979
+ this.href = null;
99980
+ }
99981
+
99982
+ // Reference: RFC 3986, RFC 1808, RFC 2396
99983
+
99984
+ /*
99985
+ * define these here so at least they only have to be
99986
+ * compiled once on the first module load.
99987
+ */
99988
+ var protocolPattern = /^([a-z0-9.+-]+:)/i,
99989
+ portPattern = /:[0-9]*$/,
99990
+
99991
+ // Special case for a simple path URL
99992
+ simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,
99993
+
99994
+ /*
99995
+ * RFC 2396: characters reserved for delimiting URLs.
99996
+ * We actually just auto-escape these.
99997
+ */
99998
+ delims = [
99999
+ '<', '>', '"', '`', ' ', '\r', '\n', '\t'
100000
+ ],
100001
+
100002
+ // RFC 2396: characters not allowed for various reasons.
100003
+ unwise = [
100004
+ '{', '}', '|', '\\', '^', '`'
100005
+ ].concat(delims),
100006
+
100007
+ // Allowed by RFCs, but cause of XSS attacks. Always escape these.
100008
+ autoEscape = ['\''].concat(unwise),
100009
+ /*
100010
+ * Characters that are never ever allowed in a hostname.
100011
+ * Note that any invalid chars are also handled, but these
100012
+ * are the ones that are *expected* to be seen, so we fast-path
100013
+ * them.
100014
+ */
100015
+ nonHostChars = [
100016
+ '%', '/', '?', ';', '#'
100017
+ ].concat(autoEscape),
100018
+ hostEndingChars = [
100019
+ '/', '?', '#'
100020
+ ],
100021
+ hostnameMaxLen = 255,
100022
+ hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
100023
+ hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
100024
+ // protocols that can allow "unsafe" and "unwise" chars.
100025
+ unsafeProtocol = {
100026
+ javascript: true,
100027
+ 'javascript:': true
100028
+ },
100029
+ // protocols that never have a hostname.
100030
+ hostlessProtocol = {
100031
+ javascript: true,
100032
+ 'javascript:': true
100033
+ },
100034
+ // protocols that always contain a // bit.
100035
+ slashedProtocol = {
100036
+ http: true,
100037
+ https: true,
100038
+ ftp: true,
100039
+ gopher: true,
100040
+ file: true,
100041
+ 'http:': true,
100042
+ 'https:': true,
100043
+ 'ftp:': true,
100044
+ 'gopher:': true,
100045
+ 'file:': true
100046
+ },
100047
+ querystring = __webpack_require__(/*! qs */ "./node_modules/qs/lib/index.js");
100048
+
100049
+ function urlParse(url, parseQueryString, slashesDenoteHost) {
100050
+ if (url && typeof url === 'object' && url instanceof Url) { return url; }
100051
+
100052
+ var u = new Url();
100053
+ u.parse(url, parseQueryString, slashesDenoteHost);
100054
+ return u;
100055
+ }
100056
+
100057
+ Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {
100058
+ if (typeof url !== 'string') {
100059
+ throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
100060
+ }
100061
+
100062
+ /*
100063
+ * Copy chrome, IE, opera backslash-handling behavior.
100064
+ * Back slashes before the query string get converted to forward slashes
100065
+ * See: https://code.google.com/p/chromium/issues/detail?id=25916
100066
+ */
100067
+ var queryIndex = url.indexOf('?'),
100068
+ splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',
100069
+ uSplit = url.split(splitter),
100070
+ slashRegex = /\\/g;
100071
+ uSplit[0] = uSplit[0].replace(slashRegex, '/');
100072
+ url = uSplit.join(splitter);
100073
+
100074
+ var rest = url;
100075
+
100076
+ /*
100077
+ * trim before proceeding.
100078
+ * This is to support parse stuff like " http://foo.com \n"
100079
+ */
100080
+ rest = rest.trim();
100081
+
100082
+ if (!slashesDenoteHost && url.split('#').length === 1) {
100083
+ // Try fast path regexp
100084
+ var simplePath = simplePathPattern.exec(rest);
100085
+ if (simplePath) {
100086
+ this.path = rest;
100087
+ this.href = rest;
100088
+ this.pathname = simplePath[1];
100089
+ if (simplePath[2]) {
100090
+ this.search = simplePath[2];
100091
+ if (parseQueryString) {
100092
+ this.query = querystring.parse(this.search.substr(1));
100093
+ } else {
100094
+ this.query = this.search.substr(1);
100095
+ }
100096
+ } else if (parseQueryString) {
100097
+ this.search = '';
100098
+ this.query = {};
100099
+ }
100100
+ return this;
100101
+ }
100102
+ }
100103
+
100104
+ var proto = protocolPattern.exec(rest);
100105
+ if (proto) {
100106
+ proto = proto[0];
100107
+ var lowerProto = proto.toLowerCase();
100108
+ this.protocol = lowerProto;
100109
+ rest = rest.substr(proto.length);
100110
+ }
100111
+
100112
+ /*
100113
+ * figure out if it's got a host
100114
+ * user@server is *always* interpreted as a hostname, and url
100115
+ * resolution will treat //foo/bar as host=foo,path=bar because that's
100116
+ * how the browser resolves relative URLs.
100117
+ */
100118
+ if (slashesDenoteHost || proto || rest.match(/^\/\/[^@/]+@[^@/]+/)) {
100119
+ var slashes = rest.substr(0, 2) === '//';
100120
+ if (slashes && !(proto && hostlessProtocol[proto])) {
100121
+ rest = rest.substr(2);
100122
+ this.slashes = true;
100123
+ }
100124
+ }
100125
+
100126
+ if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {
100127
+
100128
+ /*
100129
+ * there's a hostname.
100130
+ * the first instance of /, ?, ;, or # ends the host.
100131
+ *
100132
+ * If there is an @ in the hostname, then non-host chars *are* allowed
100133
+ * to the left of the last @ sign, unless some host-ending character
100134
+ * comes *before* the @-sign.
100135
+ * URLs are obnoxious.
100136
+ *
100137
+ * ex:
100138
+ * http://a@b@c/ => user:a@b host:c
100139
+ * http://a@b?@c => user:a host:c path:/?@c
100140
+ */
100141
+
100142
+ /*
100143
+ * v0.12 TODO(isaacs): This is not quite how Chrome does things.
100144
+ * Review our test case against browsers more comprehensively.
100145
+ */
100146
+
100147
+ // find the first instance of any hostEndingChars
100148
+ var hostEnd = -1;
100149
+ for (var i = 0; i < hostEndingChars.length; i++) {
100150
+ var hec = rest.indexOf(hostEndingChars[i]);
100151
+ if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }
100152
+ }
100153
+
100154
+ /*
100155
+ * at this point, either we have an explicit point where the
100156
+ * auth portion cannot go past, or the last @ char is the decider.
100157
+ */
100158
+ var auth, atSign;
100159
+ if (hostEnd === -1) {
100160
+ // atSign can be anywhere.
100161
+ atSign = rest.lastIndexOf('@');
100162
+ } else {
100163
+ /*
100164
+ * atSign must be in auth portion.
100165
+ * http://a@b/c@d => host:b auth:a path:/c@d
100166
+ */
100167
+ atSign = rest.lastIndexOf('@', hostEnd);
100168
+ }
100169
+
100170
+ /*
100171
+ * Now we have a portion which is definitely the auth.
100172
+ * Pull that off.
100173
+ */
100174
+ if (atSign !== -1) {
100175
+ auth = rest.slice(0, atSign);
100176
+ rest = rest.slice(atSign + 1);
100177
+ this.auth = decodeURIComponent(auth);
100178
+ }
100179
+
100180
+ // the host is the remaining to the left of the first non-host char
100181
+ hostEnd = -1;
100182
+ for (var i = 0; i < nonHostChars.length; i++) {
100183
+ var hec = rest.indexOf(nonHostChars[i]);
100184
+ if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }
100185
+ }
100186
+ // if we still have not hit it, then the entire thing is a host.
100187
+ if (hostEnd === -1) { hostEnd = rest.length; }
100188
+
100189
+ this.host = rest.slice(0, hostEnd);
100190
+ rest = rest.slice(hostEnd);
100191
+
100192
+ // pull out port.
100193
+ this.parseHost();
100194
+
100195
+ /*
100196
+ * we've indicated that there is a hostname,
100197
+ * so even if it's empty, it has to be present.
100198
+ */
100199
+ this.hostname = this.hostname || '';
100200
+
100201
+ /*
100202
+ * if hostname begins with [ and ends with ]
100203
+ * assume that it's an IPv6 address.
100204
+ */
100205
+ var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';
100206
+
100207
+ // validate a little.
100208
+ if (!ipv6Hostname) {
100209
+ var hostparts = this.hostname.split(/\./);
100210
+ for (var i = 0, l = hostparts.length; i < l; i++) {
100211
+ var part = hostparts[i];
100212
+ if (!part) { continue; }
100213
+ if (!part.match(hostnamePartPattern)) {
100214
+ var newpart = '';
100215
+ for (var j = 0, k = part.length; j < k; j++) {
100216
+ if (part.charCodeAt(j) > 127) {
100217
+ /*
100218
+ * we replace non-ASCII char with a temporary placeholder
100219
+ * we need this to make sure size of hostname is not
100220
+ * broken by replacing non-ASCII by nothing
100221
+ */
100222
+ newpart += 'x';
100223
+ } else {
100224
+ newpart += part[j];
100225
+ }
100226
+ }
100227
+ // we test again with ASCII char only
100228
+ if (!newpart.match(hostnamePartPattern)) {
100229
+ var validParts = hostparts.slice(0, i);
100230
+ var notHost = hostparts.slice(i + 1);
100231
+ var bit = part.match(hostnamePartStart);
100232
+ if (bit) {
100233
+ validParts.push(bit[1]);
100234
+ notHost.unshift(bit[2]);
100235
+ }
100236
+ if (notHost.length) {
100237
+ rest = '/' + notHost.join('.') + rest;
100238
+ }
100239
+ this.hostname = validParts.join('.');
100240
+ break;
100241
+ }
100242
+ }
100243
+ }
100244
+ }
100245
+
100246
+ if (this.hostname.length > hostnameMaxLen) {
100247
+ this.hostname = '';
100248
+ } else {
100249
+ // hostnames are always lower case.
100250
+ this.hostname = this.hostname.toLowerCase();
100251
+ }
100252
+
100253
+ if (!ipv6Hostname) {
100254
+ /*
100255
+ * IDNA Support: Returns a punycoded representation of "domain".
100256
+ * It only converts parts of the domain name that
100257
+ * have non-ASCII characters, i.e. it doesn't matter if
100258
+ * you call it with a domain that already is ASCII-only.
100259
+ */
100260
+ this.hostname = punycode.toASCII(this.hostname);
100261
+ }
100262
+
100263
+ var p = this.port ? ':' + this.port : '';
100264
+ var h = this.hostname || '';
100265
+ this.host = h + p;
100266
+ this.href += this.host;
100267
+
100268
+ /*
100269
+ * strip [ and ] from the hostname
100270
+ * the host field still retains them, though
100271
+ */
100272
+ if (ipv6Hostname) {
100273
+ this.hostname = this.hostname.substr(1, this.hostname.length - 2);
100274
+ if (rest[0] !== '/') {
100275
+ rest = '/' + rest;
100276
+ }
100277
+ }
100278
+ }
100279
+
100280
+ /*
100281
+ * now rest is set to the post-host stuff.
100282
+ * chop off any delim chars.
100283
+ */
100284
+ if (!unsafeProtocol[lowerProto]) {
100285
+
100286
+ /*
100287
+ * First, make 100% sure that any "autoEscape" chars get
100288
+ * escaped, even if encodeURIComponent doesn't think they
100289
+ * need to be.
100290
+ */
100291
+ for (var i = 0, l = autoEscape.length; i < l; i++) {
100292
+ var ae = autoEscape[i];
100293
+ if (rest.indexOf(ae) === -1) { continue; }
100294
+ var esc = encodeURIComponent(ae);
100295
+ if (esc === ae) {
100296
+ esc = escape(ae);
100297
+ }
100298
+ rest = rest.split(ae).join(esc);
100299
+ }
100300
+ }
100301
+
100302
+ // chop off from the tail first.
100303
+ var hash = rest.indexOf('#');
100304
+ if (hash !== -1) {
100305
+ // got a fragment string.
100306
+ this.hash = rest.substr(hash);
100307
+ rest = rest.slice(0, hash);
100308
+ }
100309
+ var qm = rest.indexOf('?');
100310
+ if (qm !== -1) {
100311
+ this.search = rest.substr(qm);
100312
+ this.query = rest.substr(qm + 1);
100313
+ if (parseQueryString) {
100314
+ this.query = querystring.parse(this.query);
100315
+ }
100316
+ rest = rest.slice(0, qm);
100317
+ } else if (parseQueryString) {
100318
+ // no query string, but parseQueryString still requested
100319
+ this.search = '';
100320
+ this.query = {};
100321
+ }
100322
+ if (rest) { this.pathname = rest; }
100323
+ if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {
100324
+ this.pathname = '/';
100325
+ }
100326
+
100327
+ // to support http.request
100328
+ if (this.pathname || this.search) {
100329
+ var p = this.pathname || '';
100330
+ var s = this.search || '';
100331
+ this.path = p + s;
100332
+ }
100333
+
100334
+ // finally, reconstruct the href based on what has been validated.
100335
+ this.href = this.format();
100336
+ return this;
100337
+ };
100338
+
100339
+ // format a parsed object into a url string
100340
+ function urlFormat(obj) {
100341
+ /*
100342
+ * ensure it's an object, and not a string url.
100343
+ * If it's an obj, this is a no-op.
100344
+ * this way, you can call url_format() on strings
100345
+ * to clean up potentially wonky urls.
100346
+ */
100347
+ if (typeof obj === 'string') { obj = urlParse(obj); }
100348
+ if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }
100349
+ return obj.format();
100350
+ }
100351
+
100352
+ Url.prototype.format = function () {
100353
+ var auth = this.auth || '';
100354
+ if (auth) {
100355
+ auth = encodeURIComponent(auth);
100356
+ auth = auth.replace(/%3A/i, ':');
100357
+ auth += '@';
100358
+ }
100359
+
100360
+ var protocol = this.protocol || '',
100361
+ pathname = this.pathname || '',
100362
+ hash = this.hash || '',
100363
+ host = false,
100364
+ query = '';
100365
+
100366
+ if (this.host) {
100367
+ host = auth + this.host;
100368
+ } else if (this.hostname) {
100369
+ host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');
100370
+ if (this.port) {
100371
+ host += ':' + this.port;
100372
+ }
100373
+ }
100374
+
100375
+ if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {
100376
+ query = querystring.stringify(this.query, {
100377
+ arrayFormat: 'repeat',
100378
+ addQueryPrefix: false
100379
+ });
100380
+ }
100381
+
100382
+ var search = this.search || (query && ('?' + query)) || '';
100383
+
100384
+ if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }
100385
+
100386
+ /*
100387
+ * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.
100388
+ * unless they had them to begin with.
100389
+ */
100390
+ if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {
100391
+ host = '//' + (host || '');
100392
+ if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }
100393
+ } else if (!host) {
100394
+ host = '';
100395
+ }
100396
+
100397
+ if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }
100398
+ if (search && search.charAt(0) !== '?') { search = '?' + search; }
100399
+
100400
+ pathname = pathname.replace(/[?#]/g, function (match) {
100401
+ return encodeURIComponent(match);
100402
+ });
100403
+ search = search.replace('#', '%23');
100404
+
100405
+ return protocol + host + pathname + search + hash;
100406
+ };
100407
+
100408
+ function urlResolve(source, relative) {
100409
+ return urlParse(source, false, true).resolve(relative);
100410
+ }
100411
+
100412
+ Url.prototype.resolve = function (relative) {
100413
+ return this.resolveObject(urlParse(relative, false, true)).format();
100414
+ };
100415
+
100416
+ function urlResolveObject(source, relative) {
100417
+ if (!source) { return relative; }
100418
+ return urlParse(source, false, true).resolveObject(relative);
100419
+ }
100420
+
100421
+ Url.prototype.resolveObject = function (relative) {
100422
+ if (typeof relative === 'string') {
100423
+ var rel = new Url();
100424
+ rel.parse(relative, false, true);
100425
+ relative = rel;
100426
+ }
100427
+
100428
+ var result = new Url();
100429
+ var tkeys = Object.keys(this);
100430
+ for (var tk = 0; tk < tkeys.length; tk++) {
100431
+ var tkey = tkeys[tk];
100432
+ result[tkey] = this[tkey];
100433
+ }
100434
+
100435
+ /*
100436
+ * hash is always overridden, no matter what.
100437
+ * even href="" will remove it.
100438
+ */
100439
+ result.hash = relative.hash;
100440
+
100441
+ // if the relative url is empty, then there's nothing left to do here.
100442
+ if (relative.href === '') {
100443
+ result.href = result.format();
100444
+ return result;
100445
+ }
100446
+
100447
+ // hrefs like //foo/bar always cut to the protocol.
100448
+ if (relative.slashes && !relative.protocol) {
100449
+ // take everything except the protocol from relative
100450
+ var rkeys = Object.keys(relative);
100451
+ for (var rk = 0; rk < rkeys.length; rk++) {
100452
+ var rkey = rkeys[rk];
100453
+ if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }
100454
+ }
100455
+
100456
+ // urlParse appends trailing / to urls like http://www.example.com
100457
+ if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {
100458
+ result.pathname = '/';
100459
+ result.path = result.pathname;
100460
+ }
100461
+
100462
+ result.href = result.format();
100463
+ return result;
100464
+ }
100465
+
100466
+ if (relative.protocol && relative.protocol !== result.protocol) {
100467
+ /*
100468
+ * if it's a known url protocol, then changing
100469
+ * the protocol does weird things
100470
+ * first, if it's not file:, then we MUST have a host,
100471
+ * and if there was a path
100472
+ * to begin with, then we MUST have a path.
100473
+ * if it is file:, then the host is dropped,
100474
+ * because that's known to be hostless.
100475
+ * anything else is assumed to be absolute.
100476
+ */
100477
+ if (!slashedProtocol[relative.protocol]) {
100478
+ var keys = Object.keys(relative);
100479
+ for (var v = 0; v < keys.length; v++) {
100480
+ var k = keys[v];
100481
+ result[k] = relative[k];
100482
+ }
100483
+ result.href = result.format();
100484
+ return result;
100485
+ }
100486
+
100487
+ result.protocol = relative.protocol;
100488
+ if (!relative.host && !hostlessProtocol[relative.protocol]) {
100489
+ var relPath = (relative.pathname || '').split('/');
100490
+ while (relPath.length && !(relative.host = relPath.shift())) { }
100491
+ if (!relative.host) { relative.host = ''; }
100492
+ if (!relative.hostname) { relative.hostname = ''; }
100493
+ if (relPath[0] !== '') { relPath.unshift(''); }
100494
+ if (relPath.length < 2) { relPath.unshift(''); }
100495
+ result.pathname = relPath.join('/');
100496
+ } else {
100497
+ result.pathname = relative.pathname;
100498
+ }
100499
+ result.search = relative.search;
100500
+ result.query = relative.query;
100501
+ result.host = relative.host || '';
100502
+ result.auth = relative.auth;
100503
+ result.hostname = relative.hostname || relative.host;
100504
+ result.port = relative.port;
100505
+ // to support http.request
100506
+ if (result.pathname || result.search) {
100507
+ var p = result.pathname || '';
100508
+ var s = result.search || '';
100509
+ result.path = p + s;
100510
+ }
100511
+ result.slashes = result.slashes || relative.slashes;
100512
+ result.href = result.format();
100513
+ return result;
100514
+ }
100515
+
100516
+ var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',
100517
+ isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',
100518
+ mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),
100519
+ removeAllDots = mustEndAbs,
100520
+ srcPath = result.pathname && result.pathname.split('/') || [],
100521
+ relPath = relative.pathname && relative.pathname.split('/') || [],
100522
+ psychotic = result.protocol && !slashedProtocol[result.protocol];
100523
+
100524
+ /*
100525
+ * if the url is a non-slashed url, then relative
100526
+ * links like ../.. should be able
100527
+ * to crawl up to the hostname, as well. This is strange.
100528
+ * result.protocol has already been set by now.
100529
+ * Later on, put the first path part into the host field.
100530
+ */
100531
+ if (psychotic) {
100532
+ result.hostname = '';
100533
+ result.port = null;
100534
+ if (result.host) {
100535
+ if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }
100536
+ }
100537
+ result.host = '';
100538
+ if (relative.protocol) {
100539
+ relative.hostname = null;
100540
+ relative.port = null;
100541
+ if (relative.host) {
100542
+ if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }
100543
+ }
100544
+ relative.host = null;
100545
+ }
100546
+ mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
100547
+ }
100548
+
100549
+ if (isRelAbs) {
100550
+ // it's absolute.
100551
+ result.host = relative.host || relative.host === '' ? relative.host : result.host;
100552
+ result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;
100553
+ result.search = relative.search;
100554
+ result.query = relative.query;
100555
+ srcPath = relPath;
100556
+ // fall through to the dot-handling below.
100557
+ } else if (relPath.length) {
100558
+ /*
100559
+ * it's relative
100560
+ * throw away the existing file, and take the new path instead.
100561
+ */
100562
+ if (!srcPath) { srcPath = []; }
100563
+ srcPath.pop();
100564
+ srcPath = srcPath.concat(relPath);
100565
+ result.search = relative.search;
100566
+ result.query = relative.query;
100567
+ } else if (relative.search != null) {
100568
+ /*
100569
+ * just pull out the search.
100570
+ * like href='?foo'.
100571
+ * Put this after the other two cases because it simplifies the booleans
100572
+ */
100573
+ if (psychotic) {
100574
+ result.host = srcPath.shift();
100575
+ result.hostname = result.host;
100576
+ /*
100577
+ * occationaly the auth can get stuck only in host
100578
+ * this especially happens in cases like
100579
+ * url.resolveObject('mailto:local1@domain1', 'local2@domain2')
100580
+ */
100581
+ var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;
100582
+ if (authInHost) {
100583
+ result.auth = authInHost.shift();
100584
+ result.hostname = authInHost.shift();
100585
+ result.host = result.hostname;
100586
+ }
100587
+ }
100588
+ result.search = relative.search;
100589
+ result.query = relative.query;
100590
+ // to support http.request
100591
+ if (result.pathname !== null || result.search !== null) {
100592
+ result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');
100593
+ }
100594
+ result.href = result.format();
100595
+ return result;
100596
+ }
100597
+
100598
+ if (!srcPath.length) {
100599
+ /*
100600
+ * no path at all. easy.
100601
+ * we've already handled the other stuff above.
100602
+ */
100603
+ result.pathname = null;
100604
+ // to support http.request
100605
+ if (result.search) {
100606
+ result.path = '/' + result.search;
100607
+ } else {
100608
+ result.path = null;
100609
+ }
100610
+ result.href = result.format();
100611
+ return result;
100612
+ }
100613
+
100614
+ /*
100615
+ * if a url ENDs in . or .., then it must get a trailing slash.
100616
+ * however, if it ends in anything else non-slashy,
100617
+ * then it must NOT get a trailing slash.
100618
+ */
100619
+ var last = srcPath.slice(-1)[0];
100620
+ var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';
100621
+
100622
+ /*
100623
+ * strip single dots, resolve double dots to parent dir
100624
+ * if the path tries to go above the root, `up` ends up > 0
100625
+ */
100626
+ var up = 0;
100627
+ for (var i = srcPath.length; i >= 0; i--) {
100628
+ last = srcPath[i];
100629
+ if (last === '.') {
100630
+ srcPath.splice(i, 1);
100631
+ } else if (last === '..') {
100632
+ srcPath.splice(i, 1);
100633
+ up++;
100634
+ } else if (up) {
100635
+ srcPath.splice(i, 1);
100636
+ up--;
100637
+ }
100638
+ }
100639
+
100640
+ // if the path is allowed to go above the root, restore leading ..s
100641
+ if (!mustEndAbs && !removeAllDots) {
100642
+ for (; up--; up) {
100643
+ srcPath.unshift('..');
100644
+ }
100645
+ }
100646
+
100647
+ if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
100648
+ srcPath.unshift('');
100649
+ }
100650
+
100651
+ if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
100652
+ srcPath.push('');
100653
+ }
100654
+
100655
+ var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');
100656
+
100657
+ // put the host back
100658
+ if (psychotic) {
100659
+ result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';
100660
+ result.host = result.hostname;
100661
+ /*
100662
+ * occationaly the auth can get stuck only in host
100663
+ * this especially happens in cases like
100664
+ * url.resolveObject('mailto:local1@domain1', 'local2@domain2')
100665
+ */
100666
+ var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;
100667
+ if (authInHost) {
100668
+ result.auth = authInHost.shift();
100669
+ result.hostname = authInHost.shift();
100670
+ result.host = result.hostname;
100671
+ }
100672
+ }
100673
+
100674
+ mustEndAbs = mustEndAbs || (result.host && srcPath.length);
100675
+
100676
+ if (mustEndAbs && !isAbsolute) {
100677
+ srcPath.unshift('');
100678
+ }
100679
+
100680
+ if (srcPath.length > 0) {
100681
+ result.pathname = srcPath.join('/');
100682
+ } else {
100683
+ result.pathname = null;
100684
+ result.path = null;
100685
+ }
100686
+
100687
+ // to support request.http
100688
+ if (result.pathname !== null || result.search !== null) {
100689
+ result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');
100690
+ }
100691
+ result.auth = relative.auth || result.auth;
100692
+ result.slashes = result.slashes || relative.slashes;
100693
+ result.href = result.format();
100694
+ return result;
100695
+ };
100696
+
100697
+ Url.prototype.parseHost = function () {
100698
+ var host = this.host;
100699
+ var port = portPattern.exec(host);
100700
+ if (port) {
100701
+ port = port[0];
100702
+ if (port !== ':') {
100703
+ this.port = port.substr(1);
100704
+ }
100705
+ host = host.substr(0, host.length - port.length);
100706
+ }
100707
+ if (host) { this.hostname = host; }
100708
+ };
100709
+
100710
+ exports.parse = urlParse;
100711
+ exports.resolve = urlResolve;
100712
+ exports.resolveObject = urlResolveObject;
100713
+ exports.format = urlFormat;
100714
+
100715
+ exports.Url = Url;
100716
+
100717
+
96995
100718
  /***/ }),
96996
100719
 
96997
100720
  /***/ "./node_modules/util-deprecate/browser.js":
@@ -99805,6 +103528,8 @@ __webpack_require__(/*! gun/lib/store.js */ "./node_modules/gun/lib/store.js");
99805
103528
  __webpack_require__(/*! gun/lib/rindexed.js */ "./node_modules/gun/lib/rindexed.js");
99806
103529
  __webpack_require__(/*! gun/lib/webrtc.js */ "./node_modules/gun/lib/webrtc.js");
99807
103530
  __webpack_require__(/*! gun/lib/yson.js */ "./node_modules/gun/lib/yson.js");
103531
+ __webpack_require__(/*! gun/lib/wire.js */ "./node_modules/gun/lib/wire.js");
103532
+ __webpack_require__(/*! gun/axe.js */ "./node_modules/gun/axe.js");
99808
103533
  const restricted_put_1 = __webpack_require__(/*! ./restricted-put */ "./src/gundb/restricted-put.ts");
99809
103534
  Object.defineProperty(exports, "restrictedPut", ({ enumerable: true, get: function () { return restricted_put_1.restrictedPut; } }));
99810
103535
  const derive_1 = __importDefault(__webpack_require__(/*! ./derive */ "./src/gundb/derive.ts"));
@@ -101991,6 +105716,8 @@ async function loadGunModules() {
101991
105716
  "gun/lib/stats",
101992
105717
  "gun/lib/radix",
101993
105718
  "gun/lib/radisk",
105719
+ "gun/lib/webrtc",
105720
+ "gun/axe",
101994
105721
  ];
101995
105722
  for (const lib of nodeOnlyLibs) {
101996
105723
  try {
@@ -102016,12 +105743,7 @@ async function loadGunModules() {
102016
105743
  gunModulesLoaded = true;
102017
105744
  }
102018
105745
  catch (error) {
102019
- // In test environment, don't throw error, just log it
102020
- if (false) // removed by dead control flow
102021
- {}
102022
- else {
102023
- throw new Error(`Failed to load Gun modules: ${error}`);
102024
- }
105746
+ throw new Error(`Failed to load Gun modules: ${error}`);
102025
105747
  }
102026
105748
  }
102027
105749
  /**
@@ -107812,6 +111534,10 @@ var PluginCategory;
107812
111534
  PluginCategory["Identity"] = "identity";
107813
111535
  /** Other utility plugins */
107814
111536
  PluginCategory["Utility"] = "utility";
111537
+ /** Messages plugins */
111538
+ PluginCategory["Messages"] = "messages";
111539
+ /** Messaging plugins */
111540
+ PluginCategory["Other"] = "other";
107815
111541
  })(PluginCategory || (exports.PluginCategory = PluginCategory = {}));
107816
111542
  /**
107817
111543
  * Standard names for built-in plugins
@@ -108280,6 +112006,16 @@ function generateDeterministicPassword(salt) {
108280
112006
 
108281
112007
  /***/ }),
108282
112008
 
112009
+ /***/ "?4f7e":
112010
+ /*!********************************!*\
112011
+ !*** ./util.inspect (ignored) ***!
112012
+ \********************************/
112013
+ /***/ (() => {
112014
+
112015
+ /* (ignored) */
112016
+
112017
+ /***/ }),
112018
+
108283
112019
  /***/ "?593c":
108284
112020
  /*!**********************!*\
108285
112021
  !*** util (ignored) ***!