openc3-tool-cmdtlmserver 5.0.9 → 5.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ "use strict";(self["webpackChunk_openc3_tool_cmdtlmserver"]=self["webpackChunk_openc3_tool_cmdtlmserver"]||[]).push([[932],{7146:function(t,e,n){n.d(e,{ju:function(){return c},zD:function(){return w}});var i={logger:self.console,WebSocket:self.WebSocket},s={log(...t){this.enabled&&(t.push(Date.now()),i.logger.log("[ActionCable]",...t))}};const o=()=>(new Date).getTime(),r=t=>(o()-t)/1e3;class c{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=o(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),s.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=o(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),s.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordPing(){this.pingedAt=o()}recordConnect(){this.reconnectAttempts=0,this.recordPing(),delete this.disconnectedAt,s.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=o(),s.log("ConnectionMonitor recorded disconnect")}startPolling(){this.stopPolling(),this.poll()}stopPolling(){clearTimeout(this.pollTimeout)}poll(){this.pollTimeout=setTimeout((()=>{this.reconnectIfStale(),this.poll()}),this.getPollInterval())}getPollInterval(){const{staleThreshold:t,reconnectionBackoffRate:e}=this.constructor,n=Math.pow(1+e,Math.min(this.reconnectAttempts,10)),i=0===this.reconnectAttempts?1:e,s=i*Math.random();return 1e3*t*n*(1+s)}reconnectIfStale(){this.connectionIsStale()&&(s.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${r(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?s.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${r(this.disconnectedAt)} s`):(s.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return r(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&r(this.disconnectedAt)<this.constructor.staleThreshold}visibilityDidChange(){"visible"===document.visibilityState&&setTimeout((()=>{!this.connectionIsStale()&&this.connection.isOpen()||(s.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}}c.staleThreshold=6,c.reconnectionBackoffRate=.15;var a={message_types:{welcome:"welcome",disconnect:"disconnect",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},disconnect_reasons:{unauthorized:"unauthorized",invalid_request:"invalid_request",server_restart:"server_restart"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]};const{message_types:l,protocols:u}=a,h=u.slice(0,u.length-1),d=[].indexOf;class p{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new c(this),this.disconnected=!0}send(t){return!!this.isOpen()&&(this.webSocket.send(JSON.stringify(t)),!0)}open(){return this.isActive()?(s.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1):(s.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${u}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new i.WebSocket(this.consumer.url,u),this.installEventHandlers(),this.monitor.start(),!0)}close({allowReconnect:t}={allowReconnect:!0}){if(t||this.monitor.stop(),this.isOpen())return this.webSocket.close()}reopen(){if(s.log(`Reopening WebSocket, current state is ${this.getState()}`),!this.isActive())return this.open();try{return this.close()}catch(t){s.log("Failed to reopen WebSocket",t)}finally{s.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`),setTimeout(this.open,this.constructor.reopenDelay)}}getProtocol(){if(this.webSocket)return this.webSocket.protocol}isOpen(){return this.isState("open")}isActive(){return this.isState("open","connecting")}isProtocolSupported(){return d.call(h,this.getProtocol())>=0}isState(...t){return d.call(t,this.getState())>=0}getState(){if(this.webSocket)for(let t in i.WebSocket)if(i.WebSocket[t]===this.webSocket.readyState)return t.toLowerCase();return null}installEventHandlers(){for(let t in this.events){const e=this.events[t].bind(this);this.webSocket[`on${t}`]=e}}uninstallEventHandlers(){for(let t in this.events)this.webSocket[`on${t}`]=function(){}}}p.reopenDelay=500,p.prototype.events={message(t){if(!this.isProtocolSupported())return;const{identifier:e,message:n,reason:i,reconnect:o,type:r}=JSON.parse(t.data);switch(r){case l.welcome:return this.monitor.recordConnect(),this.subscriptions.reload();case l.disconnect:return s.log(`Disconnecting. Reason: ${i}`),this.close({allowReconnect:o});case l.ping:return this.monitor.recordPing();case l.confirmation:return this.subscriptions.confirmSubscription(e),this.subscriptions.notify(e,"connected");case l.rejection:return this.subscriptions.reject(e);default:return this.subscriptions.notify(e,"received",n)}},open(){if(s.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return s.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(t){if(s.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){s.log("WebSocket onerror event")}};const g=function(t,e){if(null!=e)for(let n in e){const i=e[n];t[n]=i}return t};class f{constructor(t,e={},n){this.consumer=t,this.identifier=JSON.stringify(e),g(this,n)}perform(t,e={}){return e.action=t,this.send(e)}send(t){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(t)})}unsubscribe(){return this.consumer.subscriptions.remove(this)}}class m{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){-1==this.pendingSubscriptions.indexOf(t)?(s.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):s.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){s.log(`SubscriptionGuarantor forgetting ${t.identifier}`),this.pendingSubscriptions=this.pendingSubscriptions.filter((e=>e!==t))}startGuaranteeing(){this.stopGuaranteeing(),this.retrySubscribing()}stopGuaranteeing(){clearTimeout(this.retryTimeout)}retrySubscribing(){this.retryTimeout=setTimeout((()=>{this.subscriptions&&"function"===typeof this.subscriptions.subscribe&&this.pendingSubscriptions.map((t=>{s.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}}class b{constructor(t){this.consumer=t,this.guarantor=new m(this),this.subscriptions=[]}create(t,e){const n=t,i="object"===typeof n?n:{channel:n},s=new f(this.consumer,i,e);return this.add(s)}add(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,"initialized"),this.subscribe(t),t}remove(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,"unsubscribe"),t}reject(t){return this.findAll(t).map((t=>(this.forget(t),this.notify(t,"rejected"),t)))}forget(t){return this.guarantor.forget(t),this.subscriptions=this.subscriptions.filter((e=>e!==t)),t}findAll(t){return this.subscriptions.filter((e=>e.identifier===t))}reload(){return this.subscriptions.map((t=>this.subscribe(t)))}notifyAll(t,...e){return this.subscriptions.map((n=>this.notify(n,t,...e)))}notify(t,e,...n){let i;return i="string"===typeof t?this.findAll(t):[t],i.map((t=>"function"===typeof t[e]?t[e](...n):void 0))}subscribe(t){this.sendCommand(t,"subscribe")&&this.guarantor.guarantee(t)}confirmSubscription(t){s.log(`Subscription confirmed ${t}`),this.findAll(t).map((t=>this.guarantor.forget(t)))}sendCommand(t,e){const{identifier:n}=t;return this.consumer.send({command:e,identifier:n})}}class v{constructor(t){this._url=t,this.subscriptions=new b(this),this.connection=new p(this)}get url(){return S(this._url)}send(t){return this.connection.send(t)}connect(){return this.connection.open()}disconnect(){return this.connection.close({allowReconnect:!1})}ensureActiveConnection(){if(!this.connection.isActive())return this.connection.open()}}function S(t){if("function"===typeof t&&(t=t()),t&&!/^wss?:/i.test(t)){const e=document.createElement("a");return e.href=t,e.href=e.href,e.protocol=e.protocol.replace("http","ws"),e.href}return t}function w(t=y("url")||a.default_mount_path){return new v(t)}function y(t){const e=document.head.querySelector(`meta[name='action-cable-${t}']`);if(e)return e.getAttribute("content")}},1639:function(t,e,n){var i=n(3103),s=n(266),o=n(5968),r=n(8885),c=n(6733),a=n(9650),l=n(8311),u=n(3326),h=n(5300),d=n(3349),p=n(17),g=n(95),f=n(4231),m=g("replace"),b=TypeError,v=o("".indexOf),S=o("".replace),w=o("".slice),y=Math.max,A=function(t,e,n){return n>t.length?-1:""===e?n:v(t,e,n)};i({target:"String",proto:!0},{replaceAll:function(t,e){var n,i,o,g,D,C,T,N,k,$=r(this),_=0,R=0,M="";if(!a(t)){if(n=l(t),n&&(i=u(r(d(t))),!~v(i,"g")))throw b("`.replaceAll` does not allow non-global regexes");if(o=h(t,m),o)return s(o,t,$,e);if(f&&n)return S(u($),t,e)}g=u($),D=u(t),C=c(e),C||(e=u(e)),T=D.length,N=y(1,T),_=A(g,D,0);while(-1!==_)k=C?u(e(D,_,g)):p(D,g,_,[],void 0,e),M+=w(g,R,_)+k,R=_+T,_=A(g,D,_+N);return R<g.length&&(M+=w(g,R)),M}})},5488:function(t,e,n){n.d(e,{Z:function(){return c}});Math.pow(10,8);var i=6e4,s=36e5,o=n(9785),r=n(2765);function c(t,e){var n;(0,o.Z)(1,arguments);var i=(0,r.Z)(null!==(n=null===e||void 0===e?void 0:e.additionalDigits)&&void 0!==n?n:2);if(2!==i&&1!==i&&0!==i)throw new RangeError("additionalDigits must be 0, 1 or 2");if("string"!==typeof t&&"[object String]"!==Object.prototype.toString.call(t))return new Date(NaN);var s,c=d(t);if(c.date){var a=p(c.date,i);s=g(a.restDateString,a.year)}if(!s||isNaN(s.getTime()))return new Date(NaN);var l,u=s.getTime(),h=0;if(c.time&&(h=m(c.time),isNaN(h)))return new Date(NaN);if(!c.timezone){var f=new Date(u+h),b=new Date(0);return b.setFullYear(f.getUTCFullYear(),f.getUTCMonth(),f.getUTCDate()),b.setHours(f.getUTCHours(),f.getUTCMinutes(),f.getUTCSeconds(),f.getUTCMilliseconds()),b}return l=v(c.timezone),isNaN(l)?new Date(NaN):new Date(u+h+l)}var a={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},l=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,u=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,h=/^([+-])(\d{2})(?::?(\d{2}))?$/;function d(t){var e,n={},i=t.split(a.dateTimeDelimiter);if(i.length>2)return n;if(/:/.test(i[0])?e=i[0]:(n.date=i[0],e=i[1],a.timeZoneDelimiter.test(n.date)&&(n.date=t.split(a.timeZoneDelimiter)[0],e=t.substr(n.date.length,t.length))),e){var s=a.timezone.exec(e);s?(n.time=e.replace(s[1],""),n.timezone=s[1]):n.time=e}return n}function p(t,e){var n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+e)+"})|(\\d{2}|[+-]\\d{"+(2+e)+"})$)"),i=t.match(n);if(!i)return{year:NaN,restDateString:""};var s=i[1]?parseInt(i[1]):null,o=i[2]?parseInt(i[2]):null;return{year:null===o?s:100*o,restDateString:t.slice((i[1]||i[2]).length)}}function g(t,e){if(null===e)return new Date(NaN);var n=t.match(l);if(!n)return new Date(NaN);var i=!!n[4],s=f(n[1]),o=f(n[2])-1,r=f(n[3]),c=f(n[4]),a=f(n[5])-1;if(i)return C(e,c,a)?S(e,c,a):new Date(NaN);var u=new Date(0);return A(e,o,r)&&D(e,s)?(u.setUTCFullYear(e,o,Math.max(s,r)),u):new Date(NaN)}function f(t){return t?parseInt(t):1}function m(t){var e=t.match(u);if(!e)return NaN;var n=b(e[1]),o=b(e[2]),r=b(e[3]);return T(n,o,r)?n*s+o*i+1e3*r:NaN}function b(t){return t&&parseFloat(t.replace(",","."))||0}function v(t){if("Z"===t)return 0;var e=t.match(h);if(!e)return 0;var n="+"===e[1]?-1:1,o=parseInt(e[2]),r=e[3]&&parseInt(e[3])||0;return N(o,r)?n*(o*s+r*i):NaN}function S(t,e,n){var i=new Date(0);i.setUTCFullYear(t,0,4);var s=i.getUTCDay()||7,o=7*(e-1)+n+1-s;return i.setUTCDate(i.getUTCDate()+o),i}var w=[31,null,31,30,31,30,31,31,30,31,30,31];function y(t){return t%400===0||t%4===0&&t%100!==0}function A(t,e,n){return e>=0&&e<=11&&n>=1&&n<=(w[e]||(y(t)?29:28))}function D(t,e){return e>=1&&e<=(y(t)?366:365)}function C(t,e,n){return e>=1&&e<=53&&n>=0&&n<=6}function T(t,e,n){return 24===t?0===e&&0===n:n>=0&&n<60&&e>=0&&e<60&&t>=0&&t<25}function N(t,e){return e>=0&&e<=59}}}]);
2
+ //# sourceMappingURL=932.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/932.js","mappings":"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","sources":["webpack://@openc3/tool-cmdtlmserver/../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack://@openc3/tool-cmdtlmserver/../../node_modules/core-js/modules/es.string.replace-all.js","webpack://@openc3/tool-cmdtlmserver/../../node_modules/date-fns/esm/constants/index.js","webpack://@openc3/tool-cmdtlmserver/../../node_modules/date-fns/esm/parseISO/index.js"],"sourcesContent":["var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordPing() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var daysInYear = 365.2425;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}"],"names":["adapters","logger","self","console","WebSocket","log","messages","this","enabled","push","Date","now","getTime","secondsSince","time","ConnectionMonitor","constructor","connection","visibilityDidChange","bind","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","addEventListener","staleThreshold","stop","stopPolling","removeEventListener","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","clearTimeout","pollTimeout","setTimeout","reconnectIfStale","getPollInterval","reconnectionBackoffRate","backoff","Math","pow","min","jitterMax","jitter","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","document","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","slice","length","indexOf","Connection","consumer","open","subscriptions","monitor","disconnected","send","data","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","url","installEventHandlers","close","allowReconnect","error","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","call","states","state","readyState","toLowerCase","eventName","events","handler","prototype","message","event","identifier","reason","reconnect","type","parse","reload","confirmSubscription","notify","reject","notifyAll","willAttemptReconnect","extend","object","properties","key","value","Subscription","params","mixin","perform","action","command","unsubscribe","remove","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","filter","s","stopGuaranteeing","retrySubscribing","retryTimeout","subscribe","map","Subscriptions","guarantor","create","channelName","channel","add","ensureActiveConnection","findAll","sendCommand","callbackName","args","undefined","Consumer","_url","createWebSocketURL","connect","test","a","createElement","href","replace","createConsumer","getConfig","name","element","head","querySelector","getAttribute","$","uncurryThis","requireObjectCoercible","isCallable","isNullOrUndefined","isRegExp","toString","getMethod","getRegExpFlags","getSubstitution","wellKnownSymbol","IS_PURE","REPLACE","$TypeError","TypeError","stringSlice","max","stringIndexOf","string","searchValue","fromIndex","target","proto","replaceAll","replaceValue","IS_REG_EXP","flags","replacer","searchString","functionalReplace","searchLength","advanceBy","replacement","O","position","endOfLastMatch","result","millisecondsInMinute","millisecondsInHour","parseISO","argument","options","_options$additionalDi","requiredArgs","arguments","additionalDigits","toInteger","RangeError","Object","NaN","date","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","year","isNaN","offset","timestamp","parseTime","timezone","dirtyDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","dateString","timeString","array","split","substr","token","exec","regex","RegExp","captures","match","parseInt","century","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","setUTCFullYear","hours","parseTimeUnit","minutes","seconds","validateTime","parseFloat","timezoneString","sign","validateTimezone","isoWeekYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","daysInMonths","isLeapYearIndex","_year","_hours"],"sourceRoot":""}