@machinemetrics/mm-react-tools 2.0.8 → 2.1.0

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.
package/dist/index.js CHANGED
@@ -1235,7 +1235,7 @@ var ApolloApp = function ApolloApp(_ref) {
1235
1235
  var definition = utilities.getMainDefinition(operation.query);
1236
1236
 
1237
1237
  if (definition.operation === 'subscription' && networkError) {
1238
- wsLink.subscriptionClient.close(false, false);
1238
+ wsLink.client.terminate();
1239
1239
  }
1240
1240
 
1241
1241
  return forward(operation);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/MMAuthContext.js","../src/MMAuthInternalContext.js","../src/hooks.js","../src/PrivateLayout.js","../src/localStorage.js","../src/utils.js","../src/Authorized.js","../src/Message.js","../src/Authorize.js","../src/ApolloApp.js","../src/MMJwtProvider.js","../src/MMProvider.js","../src/eventStream.js"],"sourcesContent":["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React from 'react';\n\nexport default React.createContext();\n","import React from 'react';\n\nexport default React.createContext();\n","import { useEffect, useState, useRef, useContext, useCallback } from 'react';\nimport MMAuthContext from './MMAuthContext';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useSubscription, useLazyQuery, gql } from '@apollo/client';\nimport { DateTime } from 'luxon';\nimport _ from 'lodash';\n\nexport const useAsyncEffect = async (delegate, stateTriggers, destroy) => {\n useEffect(() => {\n const controller = new window.AbortController();\n\n async function asyncEffect() {\n return await delegate(controller.signal);\n }\n\n asyncEffect();\n\n return () => {\n controller.abort();\n\n if (destroy) {\n destroy();\n }\n };\n }, [...stateTriggers]);\n};\n\nexport const useThrottleEffect = (delegate, wait, stateTriggers) => {\n const savedCallback = useRef(delegate);\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n const debouncedDelegate = useCallback(\n _.throttle(() => {\n savedCallback.current();\n }, wait),\n []\n );\n\n useEffect(debouncedDelegate, [...stateTriggers]);\n};\n\nexport const useAsyncInterval = (delegate, delay = null, stateTriggers) => {\n const savedCallback = useRef(delegate);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n // Set up the timeout loop.\n useAsyncEffect(\n async (abortSignal) => {\n let id;\n const tick = async () => {\n await savedCallback.current(abortSignal);\n\n if (delay !== null) {\n id = setTimeout(tick, delay);\n }\n };\n\n tick();\n\n return () => id && clearTimeout(id);\n },\n [delay, ...stateTriggers]\n );\n};\n\nexport const useApiRequest = (path, options, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n const requestOpts = {\n signal: abortSignal,\n ...(options || {}),\n };\n\n if (requestOpts.skip) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}${path}`, requestOpts);\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [path, options]\n );\n\n return { data, error, loading };\n};\n\nexport const useProductionQuery = (query, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n if (!query) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}/reports/production`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useQuantityStream = ({ machineRef, key, skip }) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState();\n const [error, setError] = useState();\n const [latestEventTime, setLatestEventTime] = useState();\n const [currentMachineRef, setCurrentMachineRef] = useState();\n const [currentKey, setCurrentKey] = useState();\n\n const currentSubscription = gql`\n subscription MMToolsQuantityStreamSubscription {\n currentQuantities(\n where: { machineRef: { _eq: ${currentMachineRef} }, key: { _eq: \"${currentKey}\" } }\n ) {\n value\n eventTime\n }\n }\n `;\n\n const { data: currentData } = useSubscription(currentSubscription, { skip });\n\n const [rangeQuery, setRangeQuery] = useState();\n\n useEffect(() => {\n if (machineRef !== currentMachineRef) {\n setCurrentMachineRef(machineRef);\n }\n\n if (key !== currentKey) {\n setCurrentKey(key);\n }\n\n setLatestEventTime();\n setData();\n setError();\n setLoading();\n }, [machineRef, key, currentKey, currentMachineRef]);\n\n useEffect(() => {\n if (queryLoading || !machineRef || !key) {\n return;\n }\n\n const windowStart =\n latestEventTime || DateTime.utc().minus({ hours: 1 }).format();\n\n const query = gql`\n query MMToolsQuantityStreamQuery {\n quantities(args:{machineRef:${currentMachineRef}, metricKey:\"${currentKey}\", windowStart:\"${windowStart}\"}, order_by:{eventTime:asc}) {\n value\n eventTime\n }\n }\n `;\n\n setRangeQuery(query);\n }, [currentMachineRef, currentKey, latestEventTime]);\n\n useEffect(() => {\n if (!rangeQuery) {\n return;\n }\n\n queryRange();\n }, [rangeQuery, currentData]);\n\n const [queryRange, { data: queryData, loading: queryLoading }] = useLazyQuery(\n rangeQuery,\n {\n fetchPolicy: 'no-cache',\n }\n );\n\n useEffect(() => {\n if (!queryData || !queryData.quantities) {\n return;\n }\n\n const lastQuantity = _.last(queryData.quantities);\n if (lastQuantity) {\n setLatestEventTime(lastQuantity.eventTime);\n }\n\n if (!data) {\n setData(queryData.quantities);\n } else {\n const rest = _.drop(queryData.quantities);\n setData([...data, ...rest]);\n }\n }, [queryData]);\n\n return { data, error, loading };\n};\n\nexport const useDowntimeQuery = (query) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncEffect(\n async (abortSignal) => {\n try {\n const result = await request(`${urls.apiUrl}/reports/downtime`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useMMTemplates = (namespacePart) => {\n const [templates, setTemplates] = useState();\n const { urls, request } = useMMAuth();\n const { clientId } = _useMMAuthInternal();\n const namespace = `lab:${clientId}:${namespacePart}`;\n\n const { data, loading, error } = useApiRequest('/templates');\n\n useEffect(() => {\n if (!data) {\n return;\n }\n\n const tempTemplates = _.filter(data.templates, { namespace });\n setTemplates(tempTemplates);\n }, [data]);\n\n const addTemplate = async ({ name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates`, {\n method: 'POST',\n body,\n });\n\n setTemplates([...templates, response.template]);\n\n return response.template;\n };\n\n const updateTemplate = async (id, { name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'PUT',\n body,\n });\n\n const templateIndex = _.findIndex(templates, { id });\n const beforeTemplates = templates.slice(0, templateIndex);\n const afterTemplates = templates.slice(templateIndex + 1);\n\n setTemplates([...beforeTemplates, response.template, ...afterTemplates]);\n\n return response.template;\n };\n\n const deleteTemplate = async (id) => {\n await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'DELETE',\n });\n\n setTemplates(_.reject(templates, { id }));\n };\n\n return [\n addTemplate,\n updateTemplate,\n deleteTemplate,\n { templates, loading, error },\n ];\n};\n\nexport const useMMHash = () => {\n const [ready, setReady] = useState();\n const [hash, setHash] = useState();\n const { urls } = useMMAuth();\n\n useEffect(() => {\n if (window === window.top) {\n setHash(window.location.hash.substring(1));\n setReady(true);\n } else {\n window.addEventListener('message', (e) => {\n switch (e.data.event) {\n case 'init':\n setHash(e.data.hash.substring(1));\n setReady(true);\n break;\n default:\n break;\n }\n });\n\n window.top.postMessage(\n {\n event: 'ready',\n },\n urls.appUrl\n );\n }\n }, [urls]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n\n if (window === window.top) {\n window.location.hash = hash;\n } else {\n window.top.postMessage(\n {\n event: 'set-hash',\n hash: hash,\n },\n urls.appUrl\n );\n }\n }, [ready, hash, urls]);\n\n return [setHash, { ready, hash }];\n};\n\nexport const useMMAuth = () => {\n return useContext(MMAuthContext);\n};\n\nexport const _useMMAuthInternal = () => {\n return useContext(MMAuthInternalContext);\n};\n","import React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useMMAuth, useAsyncEffect } from './hooks';\n\nconst PrivateLayout = () => {\n const { login, isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async () => {\n if (isAuthenticated === false) {\n await login();\n }\n }, [isAuthenticated]);\n\n if (isAuthenticated) {\n return <Outlet />;\n } else {\n return <div />;\n }\n};\n\nexport default PrivateLayout;\n","const AUTH_STATE = 'mm-auth-state';\nconst DESTINATION = 'mm-auth-destination';\nconst ACCESS_TOKEN = 'mm-auth-access-token';\n\nconst localStorageObject = window.localStorage;\n\nexport const retrieveAccessToken = () => {\n return localStorageObject.getItem(ACCESS_TOKEN);\n};\n\nexport const storeAccessToken = (token) => {\n if (!token) {\n localStorageObject.removeItem(ACCESS_TOKEN);\n } else {\n localStorageObject.setItem(ACCESS_TOKEN, token);\n }\n};\n\nexport const retrieveDestination = () => {\n return localStorageObject.getItem(DESTINATION);\n};\n\nexport const storeDestination = (dest) => {\n if (!dest) {\n localStorageObject.removeItem(DESTINATION);\n } else {\n localStorageObject.setItem(DESTINATION, dest);\n }\n};\n\nexport const retrieveAuthState = () => {\n return localStorageObject.getItem(AUTH_STATE);\n};\n\nexport const storeAuthState = (state) => {\n if (!state) {\n localStorageObject.removeItem(AUTH_STATE);\n } else {\n localStorageObject.setItem(AUTH_STATE, state);\n }\n};\n","export const rawRequest = async (url, options) => {\n const response = await window.fetch(url, options);\n\n const text = await response.text();\n const obj = text && JSON.parse(text);\n\n if (response.status >= 200 && response.status < 300) {\n return obj;\n }\n\n return {\n ...obj,\n error: { message: response.statusText, status: response.status },\n };\n};\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { retrieveDestination, storeDestination } from './localStorage';\n\nconst Centered = styled.div`\n text-align: center;\n padding-top: 200px;\n`;\n\nconst Done = ({ loadError }) => {\n const dest = retrieveDestination();\n\n if (loadError) {\n return <Centered>{loadError}</Centered>;\n }\n\n storeDestination();\n\n return <Navigate replace={true} to={dest || '/'} />;\n};\n\nexport default Done;\n","import styled from 'styled-components';\n\nconst Message = styled.div`\n font-size: 20px;\n text-align: center;\n margin-top: 300px;\n`;\n\nexport default Message;\n","import React, { useState } from 'react';\nimport { useAsyncEffect, useMMAuth } from './hooks';\nimport Authorized from './Authorized';\nimport Message from './Message';\n\nconst Authorize = ({ authorize }) => {\n const [authError, setAuthError] = useState();\n const { isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async (abortSignal) => {\n try {\n await authorize(abortSignal);\n } catch (e) {\n setAuthError(`Login Failed. Try again.`);\n }\n }, []);\n\n if (authError) {\n return <Authorized loadError={authError} />;\n }\n\n return !isAuthenticated ? <Message>Authorizing...</Message> : <Authorized />;\n};\n\nexport default Authorize;\n","import React from 'react';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\nimport { createClient } from 'graphql-ws';\nimport { Outlet } from 'react-router-dom';\nimport { setContext } from '@apollo/client/link/context';\nimport { onError } from '@apollo/client/link/error';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n ApolloProvider,\n createHttpLink,\n InMemoryCache,\n ApolloClient,\n ApolloLink,\n} from '@apollo/client';\nimport { RestLink } from 'apollo-link-rest';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useMMAuth } from './hooks';\n\nconst ApolloApp = ({\n jwt,\n graphQLRoleOverride,\n clientId,\n accessToken,\n}) => {\n const { urls } = useMMAuth();\n\n const getHierPart = () => {\n const url = new URL(urls.graphQLUrl);\n return `//${url.host}${url.pathname}`;\n };\n\n const getRoleHeaders = () => {\n return graphQLRoleOverride ? { 'X-Hasura-Role': graphQLRoleOverride } : {};\n };\n\n const wsLink = new GraphQLWsLink(\n createClient({\n url: `wss:${getHierPart()}`,\n lazy: true,\n reconnect: true,\n connectionParams: async () => {\n return {\n headers: {\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n },\n })\n );\n\n const errorLink = onError(({ operation, networkError, forward }) => {\n const definition = getMainDefinition(operation.query);\n if (definition.operation === 'subscription' && networkError) {\n wsLink.subscriptionClient.close(false, false);\n }\n\n return forward(operation);\n });\n\n const jwtAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n });\n\n const httpLink = jwtAuthLink.concat(\n createHttpLink({\n uri: `https:${getHierPart()}`,\n fetch: window.fetch,\n })\n );\n\n const graphQlLink = errorLink.split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n wsLink,\n httpLink\n );\n\n const accessTokenAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${accessToken}`,\n },\n };\n });\n\n const restLink = accessTokenAuthLink.concat(\n new RestLink({ uri: urls.apiUrl })\n );\n\n const link = ApolloLink.from([restLink, graphQlLink]);\n\n const client = new ApolloClient({\n link,\n cache: new InMemoryCache(),\n });\n\n return (\n <MMAuthInternalContext.Provider\n value={{ link, jwt, clientId, accessToken }}\n >\n <ApolloProvider client={client}>\n <Outlet />\n </ApolloProvider>\n </MMAuthInternalContext.Provider>\n );\n};\n\nexport default ApolloApp;\n","import React, { useState } from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport Authorize from './Authorize';\nimport { useAsyncInterval } from './hooks';\nimport { rawRequest } from './utils';\nimport MMAuthContext from './MMAuthContext';\nimport ApolloApp from './ApolloApp';\n\nconst MMJwtProvider = ({\n children,\n authorize,\n deauthorize,\n accessToken,\n clientId,\n urls,\n login,\n graphQLRoleOverride,\n}) => {\n const [isAuthenticated, setIsAuthenticated] = useState();\n const [jwt, setJwt] = useState();\n const [natsCreds, setNatsCreds] = useState();\n\n const logout = async () => {\n await request(`${urls.loginUrl}/logout`, {\n method: 'DELETE',\n });\n\n deauthorize();\n };\n\n const request = async (url, options = {}) => {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n };\n\n const json = await rawRequest(url, options);\n\n if (json.error && json.error.status === 401) {\n await logout();\n throw Error('UNAUTHORIZED');\n }\n\n return json;\n };\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setJwt();\n setIsAuthenticated(false);\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/user-token?graphql=1`);\n setJwt(response);\n setIsAuthenticated(true);\n } catch {}\n },\n 1000 * 60 * 4.5,\n [accessToken]\n );\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setNatsCreds();\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/nats-token`);\n setNatsCreds(response);\n } catch {}\n },\n 1000 * 60 * 9.5,\n [accessToken]\n );\n\n return (\n <BrowserRouter>\n <MMAuthContext.Provider\n value={{\n isAuthenticated,\n login,\n logout,\n request,\n urls,\n natsCreds,\n }}\n >\n <Routes>\n <Route\n exact\n path='/authorize/mm/callback'\n element={<Authorize authorize={authorize} />}\n />\n <Route\n path='/'\n element={\n <ApolloApp\n clientId={clientId}\n graphQLRoleOverride={graphQLRoleOverride}\n jwt={jwt}\n accessToken={accessToken}\n />\n }\n >\n {children}\n </Route>\n </Routes>\n </MMAuthContext.Provider>\n </BrowserRouter>\n );\n};\n\nexport default MMJwtProvider;\n","import React, { useState, useEffect } from 'react';\nimport qs from 'query-string';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport {\n storeAuthState,\n retrieveAuthState,\n storeDestination,\n storeAccessToken,\n retrieveAccessToken,\n} from './localStorage';\nimport { rawRequest } from './utils';\nimport MMJwtProvider from './MMJwtProvider';\nimport { Route } from 'react-router-dom';\n\nconst URL_MAP = {\n production: {\n loginUrl: 'https://login.machinemetrics.com',\n appUrl: 'https://app.machinemetrics.com',\n apiUrl: 'https://api.machinemetrics.com',\n graphQLUrl: 'https://graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.machinemetrics.com',\n },\n staging: {\n loginUrl: 'https://login-staging.machinemetrics.com',\n appUrl: 'https://staging.machinemetrics.com',\n apiUrl: 'https://api-staging.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n demo: {\n loginUrl: 'https://login-demo.machinemetrics.com',\n appUrl: 'https://demo.machinemetrics.com',\n apiUrl: 'https://api-demo.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n development: {\n loginUrl: 'https://login.development.machinemetrics.com',\n appUrl: 'https://app.development.machinemetrics.com',\n apiUrl: 'https://api.development.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n};\n\nconst MMProvider = ({\n children,\n domain,\n scope,\n clientId,\n clientSecret,\n releaseStage,\n graphQLRoleOverride,\n}) => {\n if (releaseStage === 'release') {\n releaseStage = 'production';\n console.warn(\n `releaseStage \"release\" has been deprecated. use \"production\" instead.`\n );\n }\n\n const urls = URL_MAP[releaseStage];\n\n if (!urls) {\n const stages = _.keys(URL_MAP).join(', ');\n throw Error(\n `MMProvider releaseStage must be one of the following: ${stages}`\n );\n }\n\n const [accessToken, setAccessToken] = useState(retrieveAccessToken());\n\n useEffect(() => {\n storeAccessToken(accessToken);\n }, [accessToken]);\n\n const login = () => {\n const authState = uuidv4();\n\n storeAuthState(authState);\n storeDestination(window.location.pathname + window.location.search);\n\n const createParamString = (params) =>\n _.map(params, (v, k) => `${k}=${v}`).join('&');\n\n const loginParams = createParamString({\n response_type: 'code',\n state: authState,\n scope: scope,\n ttl: 1209600,\n client_id: clientId,\n redirect_uri: `${domain}/authorize/mm/callback`,\n });\n\n const loginUrl = `${urls.loginUrl}/oauth/authorize?${loginParams}`;\n\n window.location = loginUrl;\n };\n\n const authorize = async (abortSignal) => {\n const query = qs.parse(window.location.search);\n const code = query.code;\n\n if (query.state !== retrieveAuthState()) {\n throw Error('Oops');\n }\n\n const params = {\n grant_type: 'authorization_code',\n client_id: clientId,\n client_secret: clientSecret,\n code,\n redirect_uri: `${domain}/authorize/mm/callback`,\n };\n\n const response = await rawRequest(`${urls.loginUrl}/oauth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n },\n body: new URLSearchParams(params),\n signal: abortSignal,\n });\n setAccessToken(response.access_token);\n storeAuthState();\n };\n\n const deauthorize = () => {\n setAccessToken();\n };\n\n const isRoute = (children) => {\n return React.Children.toArray(children).filter(r => r.type === Route).length > 0;\n };\n\n return (\n <MMJwtProvider\n urls={urls}\n clientId={clientId}\n login={login}\n authorize={authorize}\n deauthorize={deauthorize}\n accessToken={accessToken}\n graphQLRoleOverride={graphQLRoleOverride}\n >\n { isRoute(children) ? children : <Route path=\"/\" element={children} /> }\n </MMJwtProvider>\n );\n};\n\nexport default MMProvider;\n","import { useEffect, useState } from 'react';\nimport { useMMAuth } from './hooks';\nimport { connect, credsAuthenticator, JSONCodec } from 'nats.ws';\n\n/**\n * Establishes a connection to the NATS server using the provided URL and credentials.\n *\n * @param {string} url - The URL of the server to connect to.\n * @param {string} creds - The credentials for authentication.\n * @returns {Connection} The established connection object.\n */\nconst connectToServer = async (url, creds) => {\n // Convert the credentials to a byte array\n const credentialsBytes = new TextEncoder().encode(creds);\n\n try {\n // Connect to the server using the provided URL and credentials\n const connection = await connect({\n servers: [url],\n authenticator: credsAuthenticator(credentialsBytes),\n });\n\n return connection; // Return the established connection\n } catch (error) {\n console.error(`Error connecting to server: ${error.message}`);\n throw error; // Re-throw the error for the caller to handle if necessary\n }\n};\n\n/**\n * Asynchronously decodes messages using a JSON codec and yields the decoded data.\n *\n * @param {AsyncIterable} messages - An asynchronous iterable ({Generator}) of messages to decode.\n * @yields {AsyncIterable} A iterable generator yielding decoded message data.\n */\nasync function* decode(messages) {\n const codec = JSONCodec();\n for await (const message of messages) {\n try {\n yield codec.decode(message.data);\n } catch (error) {\n console.warn(\n `Skipping event\\n${JSON.stringify(event, null, 2)}\\n${error}`\n );\n }\n }\n}\n\n/**\n * A custom React Hook for consuming events from an event stream using NATS.\n *\n * @param {Object} params - Parameters for the event stream.\n * @param {string} params.streamName - The name of the stream to consume events from.\n * @param {string} params.subject - The subject of the events to consume.\n * @returns {Generator} An iterable generator to consume events from the stream.\n */\nexport const useEventStream = ({ streamName, subject }) => {\n // Fetch NATS credentials and URLs using a custom hook\n const { natsCreds, urls } = useMMAuth();\n\n // State to hold the connection\n const [connection, setConnection] = useState();\n\n // State to hold the consumed event stream\n const [eventStream, setEventStream] = useState();\n\n useEffect(() => {\n if (eventStream === undefined) {\n if (natsCreds && subject) {\n connectToServer(urls.natsUrl, natsCreds)\n .then(async (conn) => {\n setConnection(conn); // Store the connection reference\n const jc = conn.jetstream();\n\n console.log('Consuming from subject:', subject);\n\n // Determine the stream to consume from\n const stream = streamName\n ? streamName\n : await jc.findStream(subject);\n\n // Get a consumer for the specified stream and subject\n // TODO: make the deliver policy configurable\n return jc.consumers.get(stream, {\n filterSubjects: subject,\n deliver_policy: 'last_per_subject',\n });\n })\n .then(async (consumer) => {\n const messages = await consumer.consume({ max_messages: 1000 });\n const events = decode(messages);\n setEventStream(events);\n });\n }\n } else {\n return () => {\n // Clean up when the component unmounts\n if (eventStream) {\n setEventStream(undefined);\n }\n if (connection) {\n connection.close();\n }\n };\n }\n }, [subject, natsCreds]);\n\n return eventStream;\n};\n"],"names":["React","createContext","useAsyncEffect","delegate","stateTriggers","destroy","useEffect","asyncEffect","controller","signal","window","AbortController","abort","useThrottleEffect","wait","savedCallback","useRef","current","debouncedDelegate","useCallback","_","throttle","useAsyncInterval","delay","abortSignal","id","tick","setTimeout","clearTimeout","useApiRequest","path","options","useState","data","setData","loading","setLoading","error","setError","useMMAuth","urls","request","requestOpts","skip","apiUrl","result","e","useProductionQuery","query","method","body","useQuantityStream","machineRef","key","latestEventTime","setLatestEventTime","currentMachineRef","setCurrentMachineRef","currentKey","setCurrentKey","currentSubscription","gql","useSubscription","currentData","rangeQuery","setRangeQuery","queryLoading","windowStart","DateTime","utc","minus","hours","format","queryRange","useLazyQuery","fetchPolicy","queryData","quantities","lastQuantity","last","eventTime","rest","drop","useDowntimeQuery","useMMTemplates","namespacePart","templates","setTemplates","_useMMAuthInternal","clientId","namespace","tempTemplates","filter","addTemplate","name","isPublic","config","bodyObj","JSON","stringify","response","template","updateTemplate","templateIndex","findIndex","beforeTemplates","slice","afterTemplates","deleteTemplate","reject","useMMHash","ready","setReady","hash","setHash","top","location","substring","addEventListener","event","postMessage","appUrl","useContext","MMAuthContext","MMAuthInternalContext","PrivateLayout","login","isAuthenticated","Outlet","AUTH_STATE","DESTINATION","ACCESS_TOKEN","localStorageObject","localStorage","retrieveAccessToken","getItem","storeAccessToken","token","removeItem","setItem","retrieveDestination","storeDestination","dest","retrieveAuthState","storeAuthState","state","rawRequest","url","fetch","text","obj","parse","status","message","statusText","Centered","styled","div","Done","loadError","Navigate","Message","Authorize","authorize","authError","setAuthError","Authorized","ApolloApp","jwt","graphQLRoleOverride","accessToken","getHierPart","URL","graphQLUrl","host","pathname","getRoleHeaders","wsLink","GraphQLWsLink","createClient","lazy","reconnect","connectionParams","headers","Authorization","errorLink","onError","operation","networkError","forward","definition","getMainDefinition","subscriptionClient","close","jwtAuthLink","setContext","httpLink","concat","createHttpLink","uri","graphQlLink","split","kind","accessTokenAuthLink","restLink","RestLink","link","ApolloLink","from","client","ApolloClient","cache","InMemoryCache","ApolloProvider","MMJwtProvider","children","deauthorize","setIsAuthenticated","setJwt","natsCreds","setNatsCreds","logout","loginUrl","json","Error","BrowserRouter","Routes","Route","URL_MAP","production","natsUrl","staging","demo","development","MMProvider","domain","scope","clientSecret","releaseStage","console","warn","stages","keys","join","setAccessToken","authState","uuidv4","search","createParamString","params","map","v","k","loginParams","response_type","ttl","client_id","redirect_uri","qs","code","grant_type","client_secret","URLSearchParams","access_token","isRoute","Children","toArray","r","type","length","connectToServer","creds","credentialsBytes","TextEncoder","encode","connect","servers","authenticator","credsAuthenticator","decode","messages","codec","JSONCodec","useEventStream","streamName","subject","connection","setConnection","eventStream","setEventStream","undefined","then","conn","stream","jc","consumers","get","filterSubjects","deliver_policy","jetstream","log","findStream","consumer","consume","max_messages","events"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/MMAuthContext.js","../src/MMAuthInternalContext.js","../src/hooks.js","../src/PrivateLayout.js","../src/localStorage.js","../src/utils.js","../src/Authorized.js","../src/Message.js","../src/Authorize.js","../src/ApolloApp.js","../src/MMJwtProvider.js","../src/MMProvider.js","../src/eventStream.js"],"sourcesContent":["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React from 'react';\n\nexport default React.createContext();\n","import React from 'react';\n\nexport default React.createContext();\n","import { useEffect, useState, useRef, useContext, useCallback } from 'react';\nimport MMAuthContext from './MMAuthContext';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useSubscription, useLazyQuery, gql } from '@apollo/client';\nimport { DateTime } from 'luxon';\nimport _ from 'lodash';\n\nexport const useAsyncEffect = async (delegate, stateTriggers, destroy) => {\n useEffect(() => {\n const controller = new window.AbortController();\n\n async function asyncEffect() {\n return await delegate(controller.signal);\n }\n\n asyncEffect();\n\n return () => {\n controller.abort();\n\n if (destroy) {\n destroy();\n }\n };\n }, [...stateTriggers]);\n};\n\nexport const useThrottleEffect = (delegate, wait, stateTriggers) => {\n const savedCallback = useRef(delegate);\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n const debouncedDelegate = useCallback(\n _.throttle(() => {\n savedCallback.current();\n }, wait),\n []\n );\n\n useEffect(debouncedDelegate, [...stateTriggers]);\n};\n\nexport const useAsyncInterval = (delegate, delay = null, stateTriggers) => {\n const savedCallback = useRef(delegate);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n // Set up the timeout loop.\n useAsyncEffect(\n async (abortSignal) => {\n let id;\n const tick = async () => {\n await savedCallback.current(abortSignal);\n\n if (delay !== null) {\n id = setTimeout(tick, delay);\n }\n };\n\n tick();\n\n return () => id && clearTimeout(id);\n },\n [delay, ...stateTriggers]\n );\n};\n\nexport const useApiRequest = (path, options, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n const requestOpts = {\n signal: abortSignal,\n ...(options || {}),\n };\n\n if (requestOpts.skip) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}${path}`, requestOpts);\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [path, options]\n );\n\n return { data, error, loading };\n};\n\nexport const useProductionQuery = (query, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n if (!query) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}/reports/production`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useQuantityStream = ({ machineRef, key, skip }) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState();\n const [error, setError] = useState();\n const [latestEventTime, setLatestEventTime] = useState();\n const [currentMachineRef, setCurrentMachineRef] = useState();\n const [currentKey, setCurrentKey] = useState();\n\n const currentSubscription = gql`\n subscription MMToolsQuantityStreamSubscription {\n currentQuantities(\n where: { machineRef: { _eq: ${currentMachineRef} }, key: { _eq: \"${currentKey}\" } }\n ) {\n value\n eventTime\n }\n }\n `;\n\n const { data: currentData } = useSubscription(currentSubscription, { skip });\n\n const [rangeQuery, setRangeQuery] = useState();\n\n useEffect(() => {\n if (machineRef !== currentMachineRef) {\n setCurrentMachineRef(machineRef);\n }\n\n if (key !== currentKey) {\n setCurrentKey(key);\n }\n\n setLatestEventTime();\n setData();\n setError();\n setLoading();\n }, [machineRef, key, currentKey, currentMachineRef]);\n\n useEffect(() => {\n if (queryLoading || !machineRef || !key) {\n return;\n }\n\n const windowStart =\n latestEventTime || DateTime.utc().minus({ hours: 1 }).format();\n\n const query = gql`\n query MMToolsQuantityStreamQuery {\n quantities(args:{machineRef:${currentMachineRef}, metricKey:\"${currentKey}\", windowStart:\"${windowStart}\"}, order_by:{eventTime:asc}) {\n value\n eventTime\n }\n }\n `;\n\n setRangeQuery(query);\n }, [currentMachineRef, currentKey, latestEventTime]);\n\n useEffect(() => {\n if (!rangeQuery) {\n return;\n }\n\n queryRange();\n }, [rangeQuery, currentData]);\n\n const [queryRange, { data: queryData, loading: queryLoading }] = useLazyQuery(\n rangeQuery,\n {\n fetchPolicy: 'no-cache',\n }\n );\n\n useEffect(() => {\n if (!queryData || !queryData.quantities) {\n return;\n }\n\n const lastQuantity = _.last(queryData.quantities);\n if (lastQuantity) {\n setLatestEventTime(lastQuantity.eventTime);\n }\n\n if (!data) {\n setData(queryData.quantities);\n } else {\n const rest = _.drop(queryData.quantities);\n setData([...data, ...rest]);\n }\n }, [queryData]);\n\n return { data, error, loading };\n};\n\nexport const useDowntimeQuery = (query) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncEffect(\n async (abortSignal) => {\n try {\n const result = await request(`${urls.apiUrl}/reports/downtime`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useMMTemplates = (namespacePart) => {\n const [templates, setTemplates] = useState();\n const { urls, request } = useMMAuth();\n const { clientId } = _useMMAuthInternal();\n const namespace = `lab:${clientId}:${namespacePart}`;\n\n const { data, loading, error } = useApiRequest('/templates');\n\n useEffect(() => {\n if (!data) {\n return;\n }\n\n const tempTemplates = _.filter(data.templates, { namespace });\n setTemplates(tempTemplates);\n }, [data]);\n\n const addTemplate = async ({ name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates`, {\n method: 'POST',\n body,\n });\n\n setTemplates([...templates, response.template]);\n\n return response.template;\n };\n\n const updateTemplate = async (id, { name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'PUT',\n body,\n });\n\n const templateIndex = _.findIndex(templates, { id });\n const beforeTemplates = templates.slice(0, templateIndex);\n const afterTemplates = templates.slice(templateIndex + 1);\n\n setTemplates([...beforeTemplates, response.template, ...afterTemplates]);\n\n return response.template;\n };\n\n const deleteTemplate = async (id) => {\n await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'DELETE',\n });\n\n setTemplates(_.reject(templates, { id }));\n };\n\n return [\n addTemplate,\n updateTemplate,\n deleteTemplate,\n { templates, loading, error },\n ];\n};\n\nexport const useMMHash = () => {\n const [ready, setReady] = useState();\n const [hash, setHash] = useState();\n const { urls } = useMMAuth();\n\n useEffect(() => {\n if (window === window.top) {\n setHash(window.location.hash.substring(1));\n setReady(true);\n } else {\n window.addEventListener('message', (e) => {\n switch (e.data.event) {\n case 'init':\n setHash(e.data.hash.substring(1));\n setReady(true);\n break;\n default:\n break;\n }\n });\n\n window.top.postMessage(\n {\n event: 'ready',\n },\n urls.appUrl\n );\n }\n }, [urls]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n\n if (window === window.top) {\n window.location.hash = hash;\n } else {\n window.top.postMessage(\n {\n event: 'set-hash',\n hash: hash,\n },\n urls.appUrl\n );\n }\n }, [ready, hash, urls]);\n\n return [setHash, { ready, hash }];\n};\n\nexport const useMMAuth = () => {\n return useContext(MMAuthContext);\n};\n\nexport const _useMMAuthInternal = () => {\n return useContext(MMAuthInternalContext);\n};\n","import React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useMMAuth, useAsyncEffect } from './hooks';\n\nconst PrivateLayout = () => {\n const { login, isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async () => {\n if (isAuthenticated === false) {\n await login();\n }\n }, [isAuthenticated]);\n\n if (isAuthenticated) {\n return <Outlet />;\n } else {\n return <div />;\n }\n};\n\nexport default PrivateLayout;\n","const AUTH_STATE = 'mm-auth-state';\nconst DESTINATION = 'mm-auth-destination';\nconst ACCESS_TOKEN = 'mm-auth-access-token';\n\nconst localStorageObject = window.localStorage;\n\nexport const retrieveAccessToken = () => {\n return localStorageObject.getItem(ACCESS_TOKEN);\n};\n\nexport const storeAccessToken = (token) => {\n if (!token) {\n localStorageObject.removeItem(ACCESS_TOKEN);\n } else {\n localStorageObject.setItem(ACCESS_TOKEN, token);\n }\n};\n\nexport const retrieveDestination = () => {\n return localStorageObject.getItem(DESTINATION);\n};\n\nexport const storeDestination = (dest) => {\n if (!dest) {\n localStorageObject.removeItem(DESTINATION);\n } else {\n localStorageObject.setItem(DESTINATION, dest);\n }\n};\n\nexport const retrieveAuthState = () => {\n return localStorageObject.getItem(AUTH_STATE);\n};\n\nexport const storeAuthState = (state) => {\n if (!state) {\n localStorageObject.removeItem(AUTH_STATE);\n } else {\n localStorageObject.setItem(AUTH_STATE, state);\n }\n};\n","export const rawRequest = async (url, options) => {\n const response = await window.fetch(url, options);\n\n const text = await response.text();\n const obj = text && JSON.parse(text);\n\n if (response.status >= 200 && response.status < 300) {\n return obj;\n }\n\n return {\n ...obj,\n error: { message: response.statusText, status: response.status },\n };\n};\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { retrieveDestination, storeDestination } from './localStorage';\n\nconst Centered = styled.div`\n text-align: center;\n padding-top: 200px;\n`;\n\nconst Done = ({ loadError }) => {\n const dest = retrieveDestination();\n\n if (loadError) {\n return <Centered>{loadError}</Centered>;\n }\n\n storeDestination();\n\n return <Navigate replace={true} to={dest || '/'} />;\n};\n\nexport default Done;\n","import styled from 'styled-components';\n\nconst Message = styled.div`\n font-size: 20px;\n text-align: center;\n margin-top: 300px;\n`;\n\nexport default Message;\n","import React, { useState } from 'react';\nimport { useAsyncEffect, useMMAuth } from './hooks';\nimport Authorized from './Authorized';\nimport Message from './Message';\n\nconst Authorize = ({ authorize }) => {\n const [authError, setAuthError] = useState();\n const { isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async (abortSignal) => {\n try {\n await authorize(abortSignal);\n } catch (e) {\n setAuthError(`Login Failed. Try again.`);\n }\n }, []);\n\n if (authError) {\n return <Authorized loadError={authError} />;\n }\n\n return !isAuthenticated ? <Message>Authorizing...</Message> : <Authorized />;\n};\n\nexport default Authorize;\n","import React from 'react';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\nimport { createClient } from 'graphql-ws';\nimport { Outlet } from 'react-router-dom';\nimport { setContext } from '@apollo/client/link/context';\nimport { onError } from '@apollo/client/link/error';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n ApolloProvider,\n createHttpLink,\n InMemoryCache,\n ApolloClient,\n ApolloLink,\n} from '@apollo/client';\nimport { RestLink } from 'apollo-link-rest';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useMMAuth } from './hooks';\n\nconst ApolloApp = ({ jwt, graphQLRoleOverride, clientId, accessToken }) => {\n const { urls } = useMMAuth();\n\n const getHierPart = () => {\n const url = new URL(urls.graphQLUrl);\n return `//${url.host}${url.pathname}`;\n };\n\n const getRoleHeaders = () => {\n return graphQLRoleOverride ? { 'X-Hasura-Role': graphQLRoleOverride } : {};\n };\n\n const wsLink = new GraphQLWsLink(\n createClient({\n url: `wss:${getHierPart()}`,\n lazy: true,\n reconnect: true,\n connectionParams: async () => {\n return {\n headers: {\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n },\n })\n );\n\n const errorLink = onError(({ operation, networkError, forward }) => {\n const definition = getMainDefinition(operation.query);\n if (definition.operation === 'subscription' && networkError) {\n wsLink.client.terminate();\n }\n\n return forward(operation);\n });\n\n const jwtAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n });\n\n const httpLink = jwtAuthLink.concat(\n createHttpLink({\n uri: `https:${getHierPart()}`,\n fetch: window.fetch,\n })\n );\n\n const graphQlLink = errorLink.split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n wsLink,\n httpLink\n );\n\n const accessTokenAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${accessToken}`,\n },\n };\n });\n\n const restLink = accessTokenAuthLink.concat(\n new RestLink({ uri: urls.apiUrl })\n );\n\n const link = ApolloLink.from([restLink, graphQlLink]);\n\n const client = new ApolloClient({\n link,\n cache: new InMemoryCache(),\n });\n\n return (\n <MMAuthInternalContext.Provider\n value={{ link, jwt, clientId, accessToken }}\n >\n <ApolloProvider client={client}>\n <Outlet />\n </ApolloProvider>\n </MMAuthInternalContext.Provider>\n );\n};\n\nexport default ApolloApp;\n","import React, { useState } from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport Authorize from './Authorize';\nimport { useAsyncInterval } from './hooks';\nimport { rawRequest } from './utils';\nimport MMAuthContext from './MMAuthContext';\nimport ApolloApp from './ApolloApp';\n\nconst MMJwtProvider = ({\n children,\n authorize,\n deauthorize,\n accessToken,\n clientId,\n urls,\n login,\n graphQLRoleOverride,\n}) => {\n const [isAuthenticated, setIsAuthenticated] = useState();\n const [jwt, setJwt] = useState();\n const [natsCreds, setNatsCreds] = useState();\n\n const logout = async () => {\n await request(`${urls.loginUrl}/logout`, {\n method: 'DELETE',\n });\n\n deauthorize();\n };\n\n const request = async (url, options = {}) => {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n };\n\n const json = await rawRequest(url, options);\n\n if (json.error && json.error.status === 401) {\n await logout();\n throw Error('UNAUTHORIZED');\n }\n\n return json;\n };\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setJwt();\n setIsAuthenticated(false);\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/user-token?graphql=1`);\n setJwt(response);\n setIsAuthenticated(true);\n } catch {}\n },\n 1000 * 60 * 4.5,\n [accessToken]\n );\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setNatsCreds();\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/nats-token`);\n setNatsCreds(response);\n } catch {}\n },\n 1000 * 60 * 9.5,\n [accessToken]\n );\n\n return (\n <BrowserRouter>\n <MMAuthContext.Provider\n value={{\n isAuthenticated,\n login,\n logout,\n request,\n urls,\n natsCreds,\n }}\n >\n <Routes>\n <Route\n exact\n path='/authorize/mm/callback'\n element={<Authorize authorize={authorize} />}\n />\n <Route\n path='/'\n element={\n <ApolloApp\n clientId={clientId}\n graphQLRoleOverride={graphQLRoleOverride}\n jwt={jwt}\n accessToken={accessToken}\n />\n }\n >\n {children}\n </Route>\n </Routes>\n </MMAuthContext.Provider>\n </BrowserRouter>\n );\n};\n\nexport default MMJwtProvider;\n","import React, { useState, useEffect } from 'react';\nimport qs from 'query-string';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport {\n storeAuthState,\n retrieveAuthState,\n storeDestination,\n storeAccessToken,\n retrieveAccessToken,\n} from './localStorage';\nimport { rawRequest } from './utils';\nimport MMJwtProvider from './MMJwtProvider';\nimport { Route } from 'react-router-dom';\n\nconst URL_MAP = {\n production: {\n loginUrl: 'https://login.machinemetrics.com',\n appUrl: 'https://app.machinemetrics.com',\n apiUrl: 'https://api.machinemetrics.com',\n graphQLUrl: 'https://graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.machinemetrics.com',\n },\n staging: {\n loginUrl: 'https://login-staging.machinemetrics.com',\n appUrl: 'https://staging.machinemetrics.com',\n apiUrl: 'https://api-staging.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n demo: {\n loginUrl: 'https://login-demo.machinemetrics.com',\n appUrl: 'https://demo.machinemetrics.com',\n apiUrl: 'https://api-demo.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n development: {\n loginUrl: 'https://login.development.machinemetrics.com',\n appUrl: 'https://app.development.machinemetrics.com',\n apiUrl: 'https://api.development.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n};\n\nconst MMProvider = ({\n children,\n domain,\n scope,\n clientId,\n clientSecret,\n releaseStage,\n graphQLRoleOverride,\n}) => {\n if (releaseStage === 'release') {\n releaseStage = 'production';\n console.warn(\n `releaseStage \"release\" has been deprecated. use \"production\" instead.`\n );\n }\n\n const urls = URL_MAP[releaseStage];\n\n if (!urls) {\n const stages = _.keys(URL_MAP).join(', ');\n throw Error(\n `MMProvider releaseStage must be one of the following: ${stages}`\n );\n }\n\n const [accessToken, setAccessToken] = useState(retrieveAccessToken());\n\n useEffect(() => {\n storeAccessToken(accessToken);\n }, [accessToken]);\n\n const login = () => {\n const authState = uuidv4();\n\n storeAuthState(authState);\n storeDestination(window.location.pathname + window.location.search);\n\n const createParamString = (params) =>\n _.map(params, (v, k) => `${k}=${v}`).join('&');\n\n const loginParams = createParamString({\n response_type: 'code',\n state: authState,\n scope: scope,\n ttl: 1209600,\n client_id: clientId,\n redirect_uri: `${domain}/authorize/mm/callback`,\n });\n\n const loginUrl = `${urls.loginUrl}/oauth/authorize?${loginParams}`;\n\n window.location = loginUrl;\n };\n\n const authorize = async (abortSignal) => {\n const query = qs.parse(window.location.search);\n const code = query.code;\n\n if (query.state !== retrieveAuthState()) {\n throw Error('Oops');\n }\n\n const params = {\n grant_type: 'authorization_code',\n client_id: clientId,\n client_secret: clientSecret,\n code,\n redirect_uri: `${domain}/authorize/mm/callback`,\n };\n\n const response = await rawRequest(`${urls.loginUrl}/oauth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n },\n body: new URLSearchParams(params),\n signal: abortSignal,\n });\n setAccessToken(response.access_token);\n storeAuthState();\n };\n\n const deauthorize = () => {\n setAccessToken();\n };\n\n const isRoute = (children) => {\n return React.Children.toArray(children).filter(r => r.type === Route).length > 0;\n };\n\n return (\n <MMJwtProvider\n urls={urls}\n clientId={clientId}\n login={login}\n authorize={authorize}\n deauthorize={deauthorize}\n accessToken={accessToken}\n graphQLRoleOverride={graphQLRoleOverride}\n >\n { isRoute(children) ? children : <Route path=\"/\" element={children} /> }\n </MMJwtProvider>\n );\n};\n\nexport default MMProvider;\n","import { useEffect, useState } from 'react';\nimport { useMMAuth } from './hooks';\nimport { connect, credsAuthenticator, JSONCodec } from 'nats.ws';\n\n/**\n * Establishes a connection to the NATS server using the provided URL and credentials.\n *\n * @param {string} url - The URL of the server to connect to.\n * @param {string} creds - The credentials for authentication.\n * @returns {Connection} The established connection object.\n */\nconst connectToServer = async (url, creds) => {\n // Convert the credentials to a byte array\n const credentialsBytes = new TextEncoder().encode(creds);\n\n try {\n // Connect to the server using the provided URL and credentials\n const connection = await connect({\n servers: [url],\n authenticator: credsAuthenticator(credentialsBytes),\n });\n\n return connection; // Return the established connection\n } catch (error) {\n console.error(`Error connecting to server: ${error.message}`);\n throw error; // Re-throw the error for the caller to handle if necessary\n }\n};\n\n/**\n * Asynchronously decodes messages using a JSON codec and yields the decoded data.\n *\n * @param {AsyncIterable} messages - An asynchronous iterable ({Generator}) of messages to decode.\n * @yields {AsyncIterable} A iterable generator yielding decoded message data.\n */\nasync function* decode(messages) {\n const codec = JSONCodec();\n for await (const message of messages) {\n try {\n yield codec.decode(message.data);\n } catch (error) {\n console.warn(\n `Skipping event\\n${JSON.stringify(event, null, 2)}\\n${error}`\n );\n }\n }\n}\n\n/**\n * A custom React Hook for consuming events from an event stream using NATS.\n *\n * @param {Object} params - Parameters for the event stream.\n * @param {string} params.streamName - The name of the stream to consume events from.\n * @param {string} params.subject - The subject of the events to consume.\n * @returns {Generator} An iterable generator to consume events from the stream.\n */\nexport const useEventStream = ({ streamName, subject }) => {\n // Fetch NATS credentials and URLs using a custom hook\n const { natsCreds, urls } = useMMAuth();\n\n // State to hold the connection\n const [connection, setConnection] = useState();\n\n // State to hold the consumed event stream\n const [eventStream, setEventStream] = useState();\n\n useEffect(() => {\n if (eventStream === undefined) {\n if (natsCreds && subject) {\n connectToServer(urls.natsUrl, natsCreds)\n .then(async (conn) => {\n setConnection(conn); // Store the connection reference\n const jc = conn.jetstream();\n\n console.log('Consuming from subject:', subject);\n\n // Determine the stream to consume from\n const stream = streamName\n ? streamName\n : await jc.findStream(subject);\n\n // Get a consumer for the specified stream and subject\n // TODO: make the deliver policy configurable\n return jc.consumers.get(stream, {\n filterSubjects: subject,\n deliver_policy: 'last_per_subject',\n });\n })\n .then(async (consumer) => {\n const messages = await consumer.consume({ max_messages: 1000 });\n const events = decode(messages);\n setEventStream(events);\n });\n }\n } else {\n return () => {\n // Clean up when the component unmounts\n if (eventStream) {\n setEventStream(undefined);\n }\n if (connection) {\n connection.close();\n }\n };\n }\n }, [subject, natsCreds]);\n\n return eventStream;\n};\n"],"names":["React","createContext","useAsyncEffect","delegate","stateTriggers","destroy","useEffect","asyncEffect","controller","signal","window","AbortController","abort","useThrottleEffect","wait","savedCallback","useRef","current","debouncedDelegate","useCallback","_","throttle","useAsyncInterval","delay","abortSignal","id","tick","setTimeout","clearTimeout","useApiRequest","path","options","useState","data","setData","loading","setLoading","error","setError","useMMAuth","urls","request","requestOpts","skip","apiUrl","result","e","useProductionQuery","query","method","body","useQuantityStream","machineRef","key","latestEventTime","setLatestEventTime","currentMachineRef","setCurrentMachineRef","currentKey","setCurrentKey","currentSubscription","gql","useSubscription","currentData","rangeQuery","setRangeQuery","queryLoading","windowStart","DateTime","utc","minus","hours","format","queryRange","useLazyQuery","fetchPolicy","queryData","quantities","lastQuantity","last","eventTime","rest","drop","useDowntimeQuery","useMMTemplates","namespacePart","templates","setTemplates","_useMMAuthInternal","clientId","namespace","tempTemplates","filter","addTemplate","name","isPublic","config","bodyObj","JSON","stringify","response","template","updateTemplate","templateIndex","findIndex","beforeTemplates","slice","afterTemplates","deleteTemplate","reject","useMMHash","ready","setReady","hash","setHash","top","location","substring","addEventListener","event","postMessage","appUrl","useContext","MMAuthContext","MMAuthInternalContext","PrivateLayout","login","isAuthenticated","Outlet","AUTH_STATE","DESTINATION","ACCESS_TOKEN","localStorageObject","localStorage","retrieveAccessToken","getItem","storeAccessToken","token","removeItem","setItem","retrieveDestination","storeDestination","dest","retrieveAuthState","storeAuthState","state","rawRequest","url","fetch","text","obj","parse","status","message","statusText","Centered","styled","div","Done","loadError","Navigate","Message","Authorize","authorize","authError","setAuthError","Authorized","ApolloApp","jwt","graphQLRoleOverride","accessToken","getHierPart","URL","graphQLUrl","host","pathname","getRoleHeaders","wsLink","GraphQLWsLink","createClient","lazy","reconnect","connectionParams","headers","Authorization","errorLink","onError","operation","networkError","forward","definition","getMainDefinition","client","terminate","jwtAuthLink","setContext","httpLink","concat","createHttpLink","uri","graphQlLink","split","kind","accessTokenAuthLink","restLink","RestLink","link","ApolloLink","from","ApolloClient","cache","InMemoryCache","ApolloProvider","MMJwtProvider","children","deauthorize","setIsAuthenticated","setJwt","natsCreds","setNatsCreds","logout","loginUrl","json","Error","BrowserRouter","Routes","Route","URL_MAP","production","natsUrl","staging","demo","development","MMProvider","domain","scope","clientSecret","releaseStage","console","warn","stages","keys","join","setAccessToken","authState","uuidv4","search","createParamString","params","map","v","k","loginParams","response_type","ttl","client_id","redirect_uri","qs","code","grant_type","client_secret","URLSearchParams","access_token","isRoute","Children","toArray","r","type","length","connectToServer","creds","credentialsBytes","TextEncoder","encode","connect","servers","authenticator","credsAuthenticator","decode","messages","codec","JSONCodec","useEventStream","streamName","subject","connection","setConnection","eventStream","setEventStream","undefined","then","conn","stream","jc","consumers","get","filterSubjects","deliver_policy","jetstream","log","findStream","consumer","consume","max_messages","events","close"],"mappings":"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"}
@@ -1232,7 +1232,7 @@ var ApolloApp = function ApolloApp(_ref) {
1232
1232
  var definition = getMainDefinition(operation.query);
1233
1233
 
1234
1234
  if (definition.operation === 'subscription' && networkError) {
1235
- wsLink.subscriptionClient.close(false, false);
1235
+ wsLink.client.terminate();
1236
1236
  }
1237
1237
 
1238
1238
  return forward(operation);
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/MMAuthContext.js","../src/MMAuthInternalContext.js","../src/hooks.js","../src/PrivateLayout.js","../src/localStorage.js","../src/utils.js","../src/Authorized.js","../src/Message.js","../src/Authorize.js","../src/ApolloApp.js","../src/MMJwtProvider.js","../src/MMProvider.js","../src/eventStream.js"],"sourcesContent":["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React from 'react';\n\nexport default React.createContext();\n","import React from 'react';\n\nexport default React.createContext();\n","import { useEffect, useState, useRef, useContext, useCallback } from 'react';\nimport MMAuthContext from './MMAuthContext';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useSubscription, useLazyQuery, gql } from '@apollo/client';\nimport { DateTime } from 'luxon';\nimport _ from 'lodash';\n\nexport const useAsyncEffect = async (delegate, stateTriggers, destroy) => {\n useEffect(() => {\n const controller = new window.AbortController();\n\n async function asyncEffect() {\n return await delegate(controller.signal);\n }\n\n asyncEffect();\n\n return () => {\n controller.abort();\n\n if (destroy) {\n destroy();\n }\n };\n }, [...stateTriggers]);\n};\n\nexport const useThrottleEffect = (delegate, wait, stateTriggers) => {\n const savedCallback = useRef(delegate);\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n const debouncedDelegate = useCallback(\n _.throttle(() => {\n savedCallback.current();\n }, wait),\n []\n );\n\n useEffect(debouncedDelegate, [...stateTriggers]);\n};\n\nexport const useAsyncInterval = (delegate, delay = null, stateTriggers) => {\n const savedCallback = useRef(delegate);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n // Set up the timeout loop.\n useAsyncEffect(\n async (abortSignal) => {\n let id;\n const tick = async () => {\n await savedCallback.current(abortSignal);\n\n if (delay !== null) {\n id = setTimeout(tick, delay);\n }\n };\n\n tick();\n\n return () => id && clearTimeout(id);\n },\n [delay, ...stateTriggers]\n );\n};\n\nexport const useApiRequest = (path, options, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n const requestOpts = {\n signal: abortSignal,\n ...(options || {}),\n };\n\n if (requestOpts.skip) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}${path}`, requestOpts);\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [path, options]\n );\n\n return { data, error, loading };\n};\n\nexport const useProductionQuery = (query, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n if (!query) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}/reports/production`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useQuantityStream = ({ machineRef, key, skip }) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState();\n const [error, setError] = useState();\n const [latestEventTime, setLatestEventTime] = useState();\n const [currentMachineRef, setCurrentMachineRef] = useState();\n const [currentKey, setCurrentKey] = useState();\n\n const currentSubscription = gql`\n subscription MMToolsQuantityStreamSubscription {\n currentQuantities(\n where: { machineRef: { _eq: ${currentMachineRef} }, key: { _eq: \"${currentKey}\" } }\n ) {\n value\n eventTime\n }\n }\n `;\n\n const { data: currentData } = useSubscription(currentSubscription, { skip });\n\n const [rangeQuery, setRangeQuery] = useState();\n\n useEffect(() => {\n if (machineRef !== currentMachineRef) {\n setCurrentMachineRef(machineRef);\n }\n\n if (key !== currentKey) {\n setCurrentKey(key);\n }\n\n setLatestEventTime();\n setData();\n setError();\n setLoading();\n }, [machineRef, key, currentKey, currentMachineRef]);\n\n useEffect(() => {\n if (queryLoading || !machineRef || !key) {\n return;\n }\n\n const windowStart =\n latestEventTime || DateTime.utc().minus({ hours: 1 }).format();\n\n const query = gql`\n query MMToolsQuantityStreamQuery {\n quantities(args:{machineRef:${currentMachineRef}, metricKey:\"${currentKey}\", windowStart:\"${windowStart}\"}, order_by:{eventTime:asc}) {\n value\n eventTime\n }\n }\n `;\n\n setRangeQuery(query);\n }, [currentMachineRef, currentKey, latestEventTime]);\n\n useEffect(() => {\n if (!rangeQuery) {\n return;\n }\n\n queryRange();\n }, [rangeQuery, currentData]);\n\n const [queryRange, { data: queryData, loading: queryLoading }] = useLazyQuery(\n rangeQuery,\n {\n fetchPolicy: 'no-cache',\n }\n );\n\n useEffect(() => {\n if (!queryData || !queryData.quantities) {\n return;\n }\n\n const lastQuantity = _.last(queryData.quantities);\n if (lastQuantity) {\n setLatestEventTime(lastQuantity.eventTime);\n }\n\n if (!data) {\n setData(queryData.quantities);\n } else {\n const rest = _.drop(queryData.quantities);\n setData([...data, ...rest]);\n }\n }, [queryData]);\n\n return { data, error, loading };\n};\n\nexport const useDowntimeQuery = (query) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncEffect(\n async (abortSignal) => {\n try {\n const result = await request(`${urls.apiUrl}/reports/downtime`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useMMTemplates = (namespacePart) => {\n const [templates, setTemplates] = useState();\n const { urls, request } = useMMAuth();\n const { clientId } = _useMMAuthInternal();\n const namespace = `lab:${clientId}:${namespacePart}`;\n\n const { data, loading, error } = useApiRequest('/templates');\n\n useEffect(() => {\n if (!data) {\n return;\n }\n\n const tempTemplates = _.filter(data.templates, { namespace });\n setTemplates(tempTemplates);\n }, [data]);\n\n const addTemplate = async ({ name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates`, {\n method: 'POST',\n body,\n });\n\n setTemplates([...templates, response.template]);\n\n return response.template;\n };\n\n const updateTemplate = async (id, { name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'PUT',\n body,\n });\n\n const templateIndex = _.findIndex(templates, { id });\n const beforeTemplates = templates.slice(0, templateIndex);\n const afterTemplates = templates.slice(templateIndex + 1);\n\n setTemplates([...beforeTemplates, response.template, ...afterTemplates]);\n\n return response.template;\n };\n\n const deleteTemplate = async (id) => {\n await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'DELETE',\n });\n\n setTemplates(_.reject(templates, { id }));\n };\n\n return [\n addTemplate,\n updateTemplate,\n deleteTemplate,\n { templates, loading, error },\n ];\n};\n\nexport const useMMHash = () => {\n const [ready, setReady] = useState();\n const [hash, setHash] = useState();\n const { urls } = useMMAuth();\n\n useEffect(() => {\n if (window === window.top) {\n setHash(window.location.hash.substring(1));\n setReady(true);\n } else {\n window.addEventListener('message', (e) => {\n switch (e.data.event) {\n case 'init':\n setHash(e.data.hash.substring(1));\n setReady(true);\n break;\n default:\n break;\n }\n });\n\n window.top.postMessage(\n {\n event: 'ready',\n },\n urls.appUrl\n );\n }\n }, [urls]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n\n if (window === window.top) {\n window.location.hash = hash;\n } else {\n window.top.postMessage(\n {\n event: 'set-hash',\n hash: hash,\n },\n urls.appUrl\n );\n }\n }, [ready, hash, urls]);\n\n return [setHash, { ready, hash }];\n};\n\nexport const useMMAuth = () => {\n return useContext(MMAuthContext);\n};\n\nexport const _useMMAuthInternal = () => {\n return useContext(MMAuthInternalContext);\n};\n","import React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useMMAuth, useAsyncEffect } from './hooks';\n\nconst PrivateLayout = () => {\n const { login, isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async () => {\n if (isAuthenticated === false) {\n await login();\n }\n }, [isAuthenticated]);\n\n if (isAuthenticated) {\n return <Outlet />;\n } else {\n return <div />;\n }\n};\n\nexport default PrivateLayout;\n","const AUTH_STATE = 'mm-auth-state';\nconst DESTINATION = 'mm-auth-destination';\nconst ACCESS_TOKEN = 'mm-auth-access-token';\n\nconst localStorageObject = window.localStorage;\n\nexport const retrieveAccessToken = () => {\n return localStorageObject.getItem(ACCESS_TOKEN);\n};\n\nexport const storeAccessToken = (token) => {\n if (!token) {\n localStorageObject.removeItem(ACCESS_TOKEN);\n } else {\n localStorageObject.setItem(ACCESS_TOKEN, token);\n }\n};\n\nexport const retrieveDestination = () => {\n return localStorageObject.getItem(DESTINATION);\n};\n\nexport const storeDestination = (dest) => {\n if (!dest) {\n localStorageObject.removeItem(DESTINATION);\n } else {\n localStorageObject.setItem(DESTINATION, dest);\n }\n};\n\nexport const retrieveAuthState = () => {\n return localStorageObject.getItem(AUTH_STATE);\n};\n\nexport const storeAuthState = (state) => {\n if (!state) {\n localStorageObject.removeItem(AUTH_STATE);\n } else {\n localStorageObject.setItem(AUTH_STATE, state);\n }\n};\n","export const rawRequest = async (url, options) => {\n const response = await window.fetch(url, options);\n\n const text = await response.text();\n const obj = text && JSON.parse(text);\n\n if (response.status >= 200 && response.status < 300) {\n return obj;\n }\n\n return {\n ...obj,\n error: { message: response.statusText, status: response.status },\n };\n};\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { retrieveDestination, storeDestination } from './localStorage';\n\nconst Centered = styled.div`\n text-align: center;\n padding-top: 200px;\n`;\n\nconst Done = ({ loadError }) => {\n const dest = retrieveDestination();\n\n if (loadError) {\n return <Centered>{loadError}</Centered>;\n }\n\n storeDestination();\n\n return <Navigate replace={true} to={dest || '/'} />;\n};\n\nexport default Done;\n","import styled from 'styled-components';\n\nconst Message = styled.div`\n font-size: 20px;\n text-align: center;\n margin-top: 300px;\n`;\n\nexport default Message;\n","import React, { useState } from 'react';\nimport { useAsyncEffect, useMMAuth } from './hooks';\nimport Authorized from './Authorized';\nimport Message from './Message';\n\nconst Authorize = ({ authorize }) => {\n const [authError, setAuthError] = useState();\n const { isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async (abortSignal) => {\n try {\n await authorize(abortSignal);\n } catch (e) {\n setAuthError(`Login Failed. Try again.`);\n }\n }, []);\n\n if (authError) {\n return <Authorized loadError={authError} />;\n }\n\n return !isAuthenticated ? <Message>Authorizing...</Message> : <Authorized />;\n};\n\nexport default Authorize;\n","import React from 'react';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\nimport { createClient } from 'graphql-ws';\nimport { Outlet } from 'react-router-dom';\nimport { setContext } from '@apollo/client/link/context';\nimport { onError } from '@apollo/client/link/error';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n ApolloProvider,\n createHttpLink,\n InMemoryCache,\n ApolloClient,\n ApolloLink,\n} from '@apollo/client';\nimport { RestLink } from 'apollo-link-rest';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useMMAuth } from './hooks';\n\nconst ApolloApp = ({\n jwt,\n graphQLRoleOverride,\n clientId,\n accessToken,\n}) => {\n const { urls } = useMMAuth();\n\n const getHierPart = () => {\n const url = new URL(urls.graphQLUrl);\n return `//${url.host}${url.pathname}`;\n };\n\n const getRoleHeaders = () => {\n return graphQLRoleOverride ? { 'X-Hasura-Role': graphQLRoleOverride } : {};\n };\n\n const wsLink = new GraphQLWsLink(\n createClient({\n url: `wss:${getHierPart()}`,\n lazy: true,\n reconnect: true,\n connectionParams: async () => {\n return {\n headers: {\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n },\n })\n );\n\n const errorLink = onError(({ operation, networkError, forward }) => {\n const definition = getMainDefinition(operation.query);\n if (definition.operation === 'subscription' && networkError) {\n wsLink.subscriptionClient.close(false, false);\n }\n\n return forward(operation);\n });\n\n const jwtAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n });\n\n const httpLink = jwtAuthLink.concat(\n createHttpLink({\n uri: `https:${getHierPart()}`,\n fetch: window.fetch,\n })\n );\n\n const graphQlLink = errorLink.split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n wsLink,\n httpLink\n );\n\n const accessTokenAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${accessToken}`,\n },\n };\n });\n\n const restLink = accessTokenAuthLink.concat(\n new RestLink({ uri: urls.apiUrl })\n );\n\n const link = ApolloLink.from([restLink, graphQlLink]);\n\n const client = new ApolloClient({\n link,\n cache: new InMemoryCache(),\n });\n\n return (\n <MMAuthInternalContext.Provider\n value={{ link, jwt, clientId, accessToken }}\n >\n <ApolloProvider client={client}>\n <Outlet />\n </ApolloProvider>\n </MMAuthInternalContext.Provider>\n );\n};\n\nexport default ApolloApp;\n","import React, { useState } from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport Authorize from './Authorize';\nimport { useAsyncInterval } from './hooks';\nimport { rawRequest } from './utils';\nimport MMAuthContext from './MMAuthContext';\nimport ApolloApp from './ApolloApp';\n\nconst MMJwtProvider = ({\n children,\n authorize,\n deauthorize,\n accessToken,\n clientId,\n urls,\n login,\n graphQLRoleOverride,\n}) => {\n const [isAuthenticated, setIsAuthenticated] = useState();\n const [jwt, setJwt] = useState();\n const [natsCreds, setNatsCreds] = useState();\n\n const logout = async () => {\n await request(`${urls.loginUrl}/logout`, {\n method: 'DELETE',\n });\n\n deauthorize();\n };\n\n const request = async (url, options = {}) => {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n };\n\n const json = await rawRequest(url, options);\n\n if (json.error && json.error.status === 401) {\n await logout();\n throw Error('UNAUTHORIZED');\n }\n\n return json;\n };\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setJwt();\n setIsAuthenticated(false);\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/user-token?graphql=1`);\n setJwt(response);\n setIsAuthenticated(true);\n } catch {}\n },\n 1000 * 60 * 4.5,\n [accessToken]\n );\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setNatsCreds();\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/nats-token`);\n setNatsCreds(response);\n } catch {}\n },\n 1000 * 60 * 9.5,\n [accessToken]\n );\n\n return (\n <BrowserRouter>\n <MMAuthContext.Provider\n value={{\n isAuthenticated,\n login,\n logout,\n request,\n urls,\n natsCreds,\n }}\n >\n <Routes>\n <Route\n exact\n path='/authorize/mm/callback'\n element={<Authorize authorize={authorize} />}\n />\n <Route\n path='/'\n element={\n <ApolloApp\n clientId={clientId}\n graphQLRoleOverride={graphQLRoleOverride}\n jwt={jwt}\n accessToken={accessToken}\n />\n }\n >\n {children}\n </Route>\n </Routes>\n </MMAuthContext.Provider>\n </BrowserRouter>\n );\n};\n\nexport default MMJwtProvider;\n","import React, { useState, useEffect } from 'react';\nimport qs from 'query-string';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport {\n storeAuthState,\n retrieveAuthState,\n storeDestination,\n storeAccessToken,\n retrieveAccessToken,\n} from './localStorage';\nimport { rawRequest } from './utils';\nimport MMJwtProvider from './MMJwtProvider';\nimport { Route } from 'react-router-dom';\n\nconst URL_MAP = {\n production: {\n loginUrl: 'https://login.machinemetrics.com',\n appUrl: 'https://app.machinemetrics.com',\n apiUrl: 'https://api.machinemetrics.com',\n graphQLUrl: 'https://graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.machinemetrics.com',\n },\n staging: {\n loginUrl: 'https://login-staging.machinemetrics.com',\n appUrl: 'https://staging.machinemetrics.com',\n apiUrl: 'https://api-staging.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n demo: {\n loginUrl: 'https://login-demo.machinemetrics.com',\n appUrl: 'https://demo.machinemetrics.com',\n apiUrl: 'https://api-demo.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n development: {\n loginUrl: 'https://login.development.machinemetrics.com',\n appUrl: 'https://app.development.machinemetrics.com',\n apiUrl: 'https://api.development.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n};\n\nconst MMProvider = ({\n children,\n domain,\n scope,\n clientId,\n clientSecret,\n releaseStage,\n graphQLRoleOverride,\n}) => {\n if (releaseStage === 'release') {\n releaseStage = 'production';\n console.warn(\n `releaseStage \"release\" has been deprecated. use \"production\" instead.`\n );\n }\n\n const urls = URL_MAP[releaseStage];\n\n if (!urls) {\n const stages = _.keys(URL_MAP).join(', ');\n throw Error(\n `MMProvider releaseStage must be one of the following: ${stages}`\n );\n }\n\n const [accessToken, setAccessToken] = useState(retrieveAccessToken());\n\n useEffect(() => {\n storeAccessToken(accessToken);\n }, [accessToken]);\n\n const login = () => {\n const authState = uuidv4();\n\n storeAuthState(authState);\n storeDestination(window.location.pathname + window.location.search);\n\n const createParamString = (params) =>\n _.map(params, (v, k) => `${k}=${v}`).join('&');\n\n const loginParams = createParamString({\n response_type: 'code',\n state: authState,\n scope: scope,\n ttl: 1209600,\n client_id: clientId,\n redirect_uri: `${domain}/authorize/mm/callback`,\n });\n\n const loginUrl = `${urls.loginUrl}/oauth/authorize?${loginParams}`;\n\n window.location = loginUrl;\n };\n\n const authorize = async (abortSignal) => {\n const query = qs.parse(window.location.search);\n const code = query.code;\n\n if (query.state !== retrieveAuthState()) {\n throw Error('Oops');\n }\n\n const params = {\n grant_type: 'authorization_code',\n client_id: clientId,\n client_secret: clientSecret,\n code,\n redirect_uri: `${domain}/authorize/mm/callback`,\n };\n\n const response = await rawRequest(`${urls.loginUrl}/oauth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n },\n body: new URLSearchParams(params),\n signal: abortSignal,\n });\n setAccessToken(response.access_token);\n storeAuthState();\n };\n\n const deauthorize = () => {\n setAccessToken();\n };\n\n const isRoute = (children) => {\n return React.Children.toArray(children).filter(r => r.type === Route).length > 0;\n };\n\n return (\n <MMJwtProvider\n urls={urls}\n clientId={clientId}\n login={login}\n authorize={authorize}\n deauthorize={deauthorize}\n accessToken={accessToken}\n graphQLRoleOverride={graphQLRoleOverride}\n >\n { isRoute(children) ? children : <Route path=\"/\" element={children} /> }\n </MMJwtProvider>\n );\n};\n\nexport default MMProvider;\n","import { useEffect, useState } from 'react';\nimport { useMMAuth } from './hooks';\nimport { connect, credsAuthenticator, JSONCodec } from 'nats.ws';\n\n/**\n * Establishes a connection to the NATS server using the provided URL and credentials.\n *\n * @param {string} url - The URL of the server to connect to.\n * @param {string} creds - The credentials for authentication.\n * @returns {Connection} The established connection object.\n */\nconst connectToServer = async (url, creds) => {\n // Convert the credentials to a byte array\n const credentialsBytes = new TextEncoder().encode(creds);\n\n try {\n // Connect to the server using the provided URL and credentials\n const connection = await connect({\n servers: [url],\n authenticator: credsAuthenticator(credentialsBytes),\n });\n\n return connection; // Return the established connection\n } catch (error) {\n console.error(`Error connecting to server: ${error.message}`);\n throw error; // Re-throw the error for the caller to handle if necessary\n }\n};\n\n/**\n * Asynchronously decodes messages using a JSON codec and yields the decoded data.\n *\n * @param {AsyncIterable} messages - An asynchronous iterable ({Generator}) of messages to decode.\n * @yields {AsyncIterable} A iterable generator yielding decoded message data.\n */\nasync function* decode(messages) {\n const codec = JSONCodec();\n for await (const message of messages) {\n try {\n yield codec.decode(message.data);\n } catch (error) {\n console.warn(\n `Skipping event\\n${JSON.stringify(event, null, 2)}\\n${error}`\n );\n }\n }\n}\n\n/**\n * A custom React Hook for consuming events from an event stream using NATS.\n *\n * @param {Object} params - Parameters for the event stream.\n * @param {string} params.streamName - The name of the stream to consume events from.\n * @param {string} params.subject - The subject of the events to consume.\n * @returns {Generator} An iterable generator to consume events from the stream.\n */\nexport const useEventStream = ({ streamName, subject }) => {\n // Fetch NATS credentials and URLs using a custom hook\n const { natsCreds, urls } = useMMAuth();\n\n // State to hold the connection\n const [connection, setConnection] = useState();\n\n // State to hold the consumed event stream\n const [eventStream, setEventStream] = useState();\n\n useEffect(() => {\n if (eventStream === undefined) {\n if (natsCreds && subject) {\n connectToServer(urls.natsUrl, natsCreds)\n .then(async (conn) => {\n setConnection(conn); // Store the connection reference\n const jc = conn.jetstream();\n\n console.log('Consuming from subject:', subject);\n\n // Determine the stream to consume from\n const stream = streamName\n ? streamName\n : await jc.findStream(subject);\n\n // Get a consumer for the specified stream and subject\n // TODO: make the deliver policy configurable\n return jc.consumers.get(stream, {\n filterSubjects: subject,\n deliver_policy: 'last_per_subject',\n });\n })\n .then(async (consumer) => {\n const messages = await consumer.consume({ max_messages: 1000 });\n const events = decode(messages);\n setEventStream(events);\n });\n }\n } else {\n return () => {\n // Clean up when the component unmounts\n if (eventStream) {\n setEventStream(undefined);\n }\n if (connection) {\n connection.close();\n }\n };\n }\n }, [subject, natsCreds]);\n\n return eventStream;\n};\n"],"names":["React","createContext","useAsyncEffect","delegate","stateTriggers","destroy","useEffect","asyncEffect","controller","signal","window","AbortController","abort","useThrottleEffect","wait","savedCallback","useRef","current","debouncedDelegate","useCallback","_","throttle","useAsyncInterval","delay","abortSignal","id","tick","setTimeout","clearTimeout","useApiRequest","path","options","useState","data","setData","loading","setLoading","error","setError","useMMAuth","urls","request","requestOpts","skip","apiUrl","result","e","useProductionQuery","query","method","body","useQuantityStream","machineRef","key","latestEventTime","setLatestEventTime","currentMachineRef","setCurrentMachineRef","currentKey","setCurrentKey","currentSubscription","gql","useSubscription","currentData","rangeQuery","setRangeQuery","queryLoading","windowStart","DateTime","utc","minus","hours","format","queryRange","useLazyQuery","fetchPolicy","queryData","quantities","lastQuantity","last","eventTime","rest","drop","useDowntimeQuery","useMMTemplates","namespacePart","templates","setTemplates","_useMMAuthInternal","clientId","namespace","tempTemplates","filter","addTemplate","name","isPublic","config","bodyObj","JSON","stringify","response","template","updateTemplate","templateIndex","findIndex","beforeTemplates","slice","afterTemplates","deleteTemplate","reject","useMMHash","ready","setReady","hash","setHash","top","location","substring","addEventListener","event","postMessage","appUrl","useContext","MMAuthContext","MMAuthInternalContext","PrivateLayout","login","isAuthenticated","AUTH_STATE","DESTINATION","ACCESS_TOKEN","localStorageObject","localStorage","retrieveAccessToken","getItem","storeAccessToken","token","removeItem","setItem","retrieveDestination","storeDestination","dest","retrieveAuthState","storeAuthState","state","rawRequest","url","fetch","text","obj","parse","status","message","statusText","Centered","styled","div","Done","loadError","Message","Authorize","authorize","authError","setAuthError","Authorized","ApolloApp","jwt","graphQLRoleOverride","accessToken","getHierPart","URL","graphQLUrl","host","pathname","getRoleHeaders","wsLink","GraphQLWsLink","createClient","lazy","reconnect","connectionParams","headers","Authorization","errorLink","onError","operation","networkError","forward","definition","getMainDefinition","subscriptionClient","close","jwtAuthLink","setContext","httpLink","concat","createHttpLink","uri","graphQlLink","split","kind","accessTokenAuthLink","restLink","RestLink","link","ApolloLink","from","client","ApolloClient","cache","InMemoryCache","MMJwtProvider","children","deauthorize","setIsAuthenticated","setJwt","natsCreds","setNatsCreds","logout","loginUrl","json","Error","URL_MAP","production","natsUrl","staging","demo","development","MMProvider","domain","scope","clientSecret","releaseStage","console","warn","stages","keys","join","setAccessToken","authState","uuidv4","search","createParamString","params","map","v","k","loginParams","response_type","ttl","client_id","redirect_uri","qs","code","grant_type","client_secret","URLSearchParams","access_token","isRoute","Children","toArray","r","type","Route","length","connectToServer","creds","credentialsBytes","TextEncoder","encode","connect","servers","authenticator","credsAuthenticator","decode","messages","codec","JSONCodec","useEventStream","streamName","subject","connection","setConnection","eventStream","setEventStream","undefined","then","conn","stream","jc","consumers","get","filterSubjects","deliver_policy","jetstream","log","findStream","consumer","consume","max_messages","events"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/MMAuthContext.js","../src/MMAuthInternalContext.js","../src/hooks.js","../src/PrivateLayout.js","../src/localStorage.js","../src/utils.js","../src/Authorized.js","../src/Message.js","../src/Authorize.js","../src/ApolloApp.js","../src/MMJwtProvider.js","../src/MMProvider.js","../src/eventStream.js"],"sourcesContent":["// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import React from 'react';\n\nexport default React.createContext();\n","import React from 'react';\n\nexport default React.createContext();\n","import { useEffect, useState, useRef, useContext, useCallback } from 'react';\nimport MMAuthContext from './MMAuthContext';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useSubscription, useLazyQuery, gql } from '@apollo/client';\nimport { DateTime } from 'luxon';\nimport _ from 'lodash';\n\nexport const useAsyncEffect = async (delegate, stateTriggers, destroy) => {\n useEffect(() => {\n const controller = new window.AbortController();\n\n async function asyncEffect() {\n return await delegate(controller.signal);\n }\n\n asyncEffect();\n\n return () => {\n controller.abort();\n\n if (destroy) {\n destroy();\n }\n };\n }, [...stateTriggers]);\n};\n\nexport const useThrottleEffect = (delegate, wait, stateTriggers) => {\n const savedCallback = useRef(delegate);\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n const debouncedDelegate = useCallback(\n _.throttle(() => {\n savedCallback.current();\n }, wait),\n []\n );\n\n useEffect(debouncedDelegate, [...stateTriggers]);\n};\n\nexport const useAsyncInterval = (delegate, delay = null, stateTriggers) => {\n const savedCallback = useRef(delegate);\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = delegate;\n }, [delegate]);\n\n // Set up the timeout loop.\n useAsyncEffect(\n async (abortSignal) => {\n let id;\n const tick = async () => {\n await savedCallback.current(abortSignal);\n\n if (delay !== null) {\n id = setTimeout(tick, delay);\n }\n };\n\n tick();\n\n return () => id && clearTimeout(id);\n },\n [delay, ...stateTriggers]\n );\n};\n\nexport const useApiRequest = (path, options, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n const requestOpts = {\n signal: abortSignal,\n ...(options || {}),\n };\n\n if (requestOpts.skip) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}${path}`, requestOpts);\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [path, options]\n );\n\n return { data, error, loading };\n};\n\nexport const useProductionQuery = (query, delay) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncInterval(\n async (abortSignal) => {\n try {\n if (!query) {\n return;\n }\n\n const result = await request(`${urls.apiUrl}/reports/production`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n delay,\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useQuantityStream = ({ machineRef, key, skip }) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState();\n const [error, setError] = useState();\n const [latestEventTime, setLatestEventTime] = useState();\n const [currentMachineRef, setCurrentMachineRef] = useState();\n const [currentKey, setCurrentKey] = useState();\n\n const currentSubscription = gql`\n subscription MMToolsQuantityStreamSubscription {\n currentQuantities(\n where: { machineRef: { _eq: ${currentMachineRef} }, key: { _eq: \"${currentKey}\" } }\n ) {\n value\n eventTime\n }\n }\n `;\n\n const { data: currentData } = useSubscription(currentSubscription, { skip });\n\n const [rangeQuery, setRangeQuery] = useState();\n\n useEffect(() => {\n if (machineRef !== currentMachineRef) {\n setCurrentMachineRef(machineRef);\n }\n\n if (key !== currentKey) {\n setCurrentKey(key);\n }\n\n setLatestEventTime();\n setData();\n setError();\n setLoading();\n }, [machineRef, key, currentKey, currentMachineRef]);\n\n useEffect(() => {\n if (queryLoading || !machineRef || !key) {\n return;\n }\n\n const windowStart =\n latestEventTime || DateTime.utc().minus({ hours: 1 }).format();\n\n const query = gql`\n query MMToolsQuantityStreamQuery {\n quantities(args:{machineRef:${currentMachineRef}, metricKey:\"${currentKey}\", windowStart:\"${windowStart}\"}, order_by:{eventTime:asc}) {\n value\n eventTime\n }\n }\n `;\n\n setRangeQuery(query);\n }, [currentMachineRef, currentKey, latestEventTime]);\n\n useEffect(() => {\n if (!rangeQuery) {\n return;\n }\n\n queryRange();\n }, [rangeQuery, currentData]);\n\n const [queryRange, { data: queryData, loading: queryLoading }] = useLazyQuery(\n rangeQuery,\n {\n fetchPolicy: 'no-cache',\n }\n );\n\n useEffect(() => {\n if (!queryData || !queryData.quantities) {\n return;\n }\n\n const lastQuantity = _.last(queryData.quantities);\n if (lastQuantity) {\n setLatestEventTime(lastQuantity.eventTime);\n }\n\n if (!data) {\n setData(queryData.quantities);\n } else {\n const rest = _.drop(queryData.quantities);\n setData([...data, ...rest]);\n }\n }, [queryData]);\n\n return { data, error, loading };\n};\n\nexport const useDowntimeQuery = (query) => {\n const [data, setData] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n const { urls, request } = useMMAuth();\n\n useAsyncEffect(\n async (abortSignal) => {\n try {\n const result = await request(`${urls.apiUrl}/reports/downtime`, {\n method: 'POST',\n body: query,\n signal: abortSignal,\n });\n\n setData(result);\n } catch (e) {\n setError(e);\n }\n\n setLoading(false);\n },\n [query]\n );\n\n return { data, error, loading };\n};\n\nexport const useMMTemplates = (namespacePart) => {\n const [templates, setTemplates] = useState();\n const { urls, request } = useMMAuth();\n const { clientId } = _useMMAuthInternal();\n const namespace = `lab:${clientId}:${namespacePart}`;\n\n const { data, loading, error } = useApiRequest('/templates');\n\n useEffect(() => {\n if (!data) {\n return;\n }\n\n const tempTemplates = _.filter(data.templates, { namespace });\n setTemplates(tempTemplates);\n }, [data]);\n\n const addTemplate = async ({ name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates`, {\n method: 'POST',\n body,\n });\n\n setTemplates([...templates, response.template]);\n\n return response.template;\n };\n\n const updateTemplate = async (id, { name, public: isPublic, config }) => {\n const bodyObj = {\n name,\n public: isPublic,\n namespace,\n config: JSON.stringify(config),\n };\n\n const body = JSON.stringify(bodyObj);\n\n const response = await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'PUT',\n body,\n });\n\n const templateIndex = _.findIndex(templates, { id });\n const beforeTemplates = templates.slice(0, templateIndex);\n const afterTemplates = templates.slice(templateIndex + 1);\n\n setTemplates([...beforeTemplates, response.template, ...afterTemplates]);\n\n return response.template;\n };\n\n const deleteTemplate = async (id) => {\n await request(`${urls.apiUrl}/templates/${id}`, {\n method: 'DELETE',\n });\n\n setTemplates(_.reject(templates, { id }));\n };\n\n return [\n addTemplate,\n updateTemplate,\n deleteTemplate,\n { templates, loading, error },\n ];\n};\n\nexport const useMMHash = () => {\n const [ready, setReady] = useState();\n const [hash, setHash] = useState();\n const { urls } = useMMAuth();\n\n useEffect(() => {\n if (window === window.top) {\n setHash(window.location.hash.substring(1));\n setReady(true);\n } else {\n window.addEventListener('message', (e) => {\n switch (e.data.event) {\n case 'init':\n setHash(e.data.hash.substring(1));\n setReady(true);\n break;\n default:\n break;\n }\n });\n\n window.top.postMessage(\n {\n event: 'ready',\n },\n urls.appUrl\n );\n }\n }, [urls]);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n\n if (window === window.top) {\n window.location.hash = hash;\n } else {\n window.top.postMessage(\n {\n event: 'set-hash',\n hash: hash,\n },\n urls.appUrl\n );\n }\n }, [ready, hash, urls]);\n\n return [setHash, { ready, hash }];\n};\n\nexport const useMMAuth = () => {\n return useContext(MMAuthContext);\n};\n\nexport const _useMMAuthInternal = () => {\n return useContext(MMAuthInternalContext);\n};\n","import React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useMMAuth, useAsyncEffect } from './hooks';\n\nconst PrivateLayout = () => {\n const { login, isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async () => {\n if (isAuthenticated === false) {\n await login();\n }\n }, [isAuthenticated]);\n\n if (isAuthenticated) {\n return <Outlet />;\n } else {\n return <div />;\n }\n};\n\nexport default PrivateLayout;\n","const AUTH_STATE = 'mm-auth-state';\nconst DESTINATION = 'mm-auth-destination';\nconst ACCESS_TOKEN = 'mm-auth-access-token';\n\nconst localStorageObject = window.localStorage;\n\nexport const retrieveAccessToken = () => {\n return localStorageObject.getItem(ACCESS_TOKEN);\n};\n\nexport const storeAccessToken = (token) => {\n if (!token) {\n localStorageObject.removeItem(ACCESS_TOKEN);\n } else {\n localStorageObject.setItem(ACCESS_TOKEN, token);\n }\n};\n\nexport const retrieveDestination = () => {\n return localStorageObject.getItem(DESTINATION);\n};\n\nexport const storeDestination = (dest) => {\n if (!dest) {\n localStorageObject.removeItem(DESTINATION);\n } else {\n localStorageObject.setItem(DESTINATION, dest);\n }\n};\n\nexport const retrieveAuthState = () => {\n return localStorageObject.getItem(AUTH_STATE);\n};\n\nexport const storeAuthState = (state) => {\n if (!state) {\n localStorageObject.removeItem(AUTH_STATE);\n } else {\n localStorageObject.setItem(AUTH_STATE, state);\n }\n};\n","export const rawRequest = async (url, options) => {\n const response = await window.fetch(url, options);\n\n const text = await response.text();\n const obj = text && JSON.parse(text);\n\n if (response.status >= 200 && response.status < 300) {\n return obj;\n }\n\n return {\n ...obj,\n error: { message: response.statusText, status: response.status },\n };\n};\n","import React from 'react';\nimport { Navigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { retrieveDestination, storeDestination } from './localStorage';\n\nconst Centered = styled.div`\n text-align: center;\n padding-top: 200px;\n`;\n\nconst Done = ({ loadError }) => {\n const dest = retrieveDestination();\n\n if (loadError) {\n return <Centered>{loadError}</Centered>;\n }\n\n storeDestination();\n\n return <Navigate replace={true} to={dest || '/'} />;\n};\n\nexport default Done;\n","import styled from 'styled-components';\n\nconst Message = styled.div`\n font-size: 20px;\n text-align: center;\n margin-top: 300px;\n`;\n\nexport default Message;\n","import React, { useState } from 'react';\nimport { useAsyncEffect, useMMAuth } from './hooks';\nimport Authorized from './Authorized';\nimport Message from './Message';\n\nconst Authorize = ({ authorize }) => {\n const [authError, setAuthError] = useState();\n const { isAuthenticated } = useMMAuth();\n\n useAsyncEffect(async (abortSignal) => {\n try {\n await authorize(abortSignal);\n } catch (e) {\n setAuthError(`Login Failed. Try again.`);\n }\n }, []);\n\n if (authError) {\n return <Authorized loadError={authError} />;\n }\n\n return !isAuthenticated ? <Message>Authorizing...</Message> : <Authorized />;\n};\n\nexport default Authorize;\n","import React from 'react';\nimport { GraphQLWsLink } from '@apollo/client/link/subscriptions';\nimport { createClient } from 'graphql-ws';\nimport { Outlet } from 'react-router-dom';\nimport { setContext } from '@apollo/client/link/context';\nimport { onError } from '@apollo/client/link/error';\nimport { getMainDefinition } from '@apollo/client/utilities';\nimport {\n ApolloProvider,\n createHttpLink,\n InMemoryCache,\n ApolloClient,\n ApolloLink,\n} from '@apollo/client';\nimport { RestLink } from 'apollo-link-rest';\nimport MMAuthInternalContext from './MMAuthInternalContext';\nimport { useMMAuth } from './hooks';\n\nconst ApolloApp = ({ jwt, graphQLRoleOverride, clientId, accessToken }) => {\n const { urls } = useMMAuth();\n\n const getHierPart = () => {\n const url = new URL(urls.graphQLUrl);\n return `//${url.host}${url.pathname}`;\n };\n\n const getRoleHeaders = () => {\n return graphQLRoleOverride ? { 'X-Hasura-Role': graphQLRoleOverride } : {};\n };\n\n const wsLink = new GraphQLWsLink(\n createClient({\n url: `wss:${getHierPart()}`,\n lazy: true,\n reconnect: true,\n connectionParams: async () => {\n return {\n headers: {\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n },\n })\n );\n\n const errorLink = onError(({ operation, networkError, forward }) => {\n const definition = getMainDefinition(operation.query);\n if (definition.operation === 'subscription' && networkError) {\n wsLink.client.terminate();\n }\n\n return forward(operation);\n });\n\n const jwtAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${jwt}`,\n ...getRoleHeaders(),\n },\n };\n });\n\n const httpLink = jwtAuthLink.concat(\n createHttpLink({\n uri: `https:${getHierPart()}`,\n fetch: window.fetch,\n })\n );\n\n const graphQlLink = errorLink.split(\n ({ query }) => {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n },\n wsLink,\n httpLink\n );\n\n const accessTokenAuthLink = setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n Authorization: `Bearer ${accessToken}`,\n },\n };\n });\n\n const restLink = accessTokenAuthLink.concat(\n new RestLink({ uri: urls.apiUrl })\n );\n\n const link = ApolloLink.from([restLink, graphQlLink]);\n\n const client = new ApolloClient({\n link,\n cache: new InMemoryCache(),\n });\n\n return (\n <MMAuthInternalContext.Provider\n value={{ link, jwt, clientId, accessToken }}\n >\n <ApolloProvider client={client}>\n <Outlet />\n </ApolloProvider>\n </MMAuthInternalContext.Provider>\n );\n};\n\nexport default ApolloApp;\n","import React, { useState } from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport Authorize from './Authorize';\nimport { useAsyncInterval } from './hooks';\nimport { rawRequest } from './utils';\nimport MMAuthContext from './MMAuthContext';\nimport ApolloApp from './ApolloApp';\n\nconst MMJwtProvider = ({\n children,\n authorize,\n deauthorize,\n accessToken,\n clientId,\n urls,\n login,\n graphQLRoleOverride,\n}) => {\n const [isAuthenticated, setIsAuthenticated] = useState();\n const [jwt, setJwt] = useState();\n const [natsCreds, setNatsCreds] = useState();\n\n const logout = async () => {\n await request(`${urls.loginUrl}/logout`, {\n method: 'DELETE',\n });\n\n deauthorize();\n };\n\n const request = async (url, options = {}) => {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n };\n\n const json = await rawRequest(url, options);\n\n if (json.error && json.error.status === 401) {\n await logout();\n throw Error('UNAUTHORIZED');\n }\n\n return json;\n };\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setJwt();\n setIsAuthenticated(false);\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/user-token?graphql=1`);\n setJwt(response);\n setIsAuthenticated(true);\n } catch {}\n },\n 1000 * 60 * 4.5,\n [accessToken]\n );\n\n useAsyncInterval(\n async () => {\n if (!accessToken) {\n setNatsCreds();\n return;\n }\n\n try {\n const response = await request(`${urls.apiUrl}/nats-token`);\n setNatsCreds(response);\n } catch {}\n },\n 1000 * 60 * 9.5,\n [accessToken]\n );\n\n return (\n <BrowserRouter>\n <MMAuthContext.Provider\n value={{\n isAuthenticated,\n login,\n logout,\n request,\n urls,\n natsCreds,\n }}\n >\n <Routes>\n <Route\n exact\n path='/authorize/mm/callback'\n element={<Authorize authorize={authorize} />}\n />\n <Route\n path='/'\n element={\n <ApolloApp\n clientId={clientId}\n graphQLRoleOverride={graphQLRoleOverride}\n jwt={jwt}\n accessToken={accessToken}\n />\n }\n >\n {children}\n </Route>\n </Routes>\n </MMAuthContext.Provider>\n </BrowserRouter>\n );\n};\n\nexport default MMJwtProvider;\n","import React, { useState, useEffect } from 'react';\nimport qs from 'query-string';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport {\n storeAuthState,\n retrieveAuthState,\n storeDestination,\n storeAccessToken,\n retrieveAccessToken,\n} from './localStorage';\nimport { rawRequest } from './utils';\nimport MMJwtProvider from './MMJwtProvider';\nimport { Route } from 'react-router-dom';\n\nconst URL_MAP = {\n production: {\n loginUrl: 'https://login.machinemetrics.com',\n appUrl: 'https://app.machinemetrics.com',\n apiUrl: 'https://api.machinemetrics.com',\n graphQLUrl: 'https://graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.machinemetrics.com',\n },\n staging: {\n loginUrl: 'https://login-staging.machinemetrics.com',\n appUrl: 'https://staging.machinemetrics.com',\n apiUrl: 'https://api-staging.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n demo: {\n loginUrl: 'https://login-demo.machinemetrics.com',\n appUrl: 'https://demo.machinemetrics.com',\n apiUrl: 'https://api-demo.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n development: {\n loginUrl: 'https://login.development.machinemetrics.com',\n appUrl: 'https://app.development.machinemetrics.com',\n apiUrl: 'https://api.development.machinemetrics.com',\n graphQLUrl: 'https://development.graphql.machinemetrics.com/v1/graphql',\n natsUrl: 'https://stream.data.dev.m12s.com',\n },\n};\n\nconst MMProvider = ({\n children,\n domain,\n scope,\n clientId,\n clientSecret,\n releaseStage,\n graphQLRoleOverride,\n}) => {\n if (releaseStage === 'release') {\n releaseStage = 'production';\n console.warn(\n `releaseStage \"release\" has been deprecated. use \"production\" instead.`\n );\n }\n\n const urls = URL_MAP[releaseStage];\n\n if (!urls) {\n const stages = _.keys(URL_MAP).join(', ');\n throw Error(\n `MMProvider releaseStage must be one of the following: ${stages}`\n );\n }\n\n const [accessToken, setAccessToken] = useState(retrieveAccessToken());\n\n useEffect(() => {\n storeAccessToken(accessToken);\n }, [accessToken]);\n\n const login = () => {\n const authState = uuidv4();\n\n storeAuthState(authState);\n storeDestination(window.location.pathname + window.location.search);\n\n const createParamString = (params) =>\n _.map(params, (v, k) => `${k}=${v}`).join('&');\n\n const loginParams = createParamString({\n response_type: 'code',\n state: authState,\n scope: scope,\n ttl: 1209600,\n client_id: clientId,\n redirect_uri: `${domain}/authorize/mm/callback`,\n });\n\n const loginUrl = `${urls.loginUrl}/oauth/authorize?${loginParams}`;\n\n window.location = loginUrl;\n };\n\n const authorize = async (abortSignal) => {\n const query = qs.parse(window.location.search);\n const code = query.code;\n\n if (query.state !== retrieveAuthState()) {\n throw Error('Oops');\n }\n\n const params = {\n grant_type: 'authorization_code',\n client_id: clientId,\n client_secret: clientSecret,\n code,\n redirect_uri: `${domain}/authorize/mm/callback`,\n };\n\n const response = await rawRequest(`${urls.loginUrl}/oauth/token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n },\n body: new URLSearchParams(params),\n signal: abortSignal,\n });\n setAccessToken(response.access_token);\n storeAuthState();\n };\n\n const deauthorize = () => {\n setAccessToken();\n };\n\n const isRoute = (children) => {\n return React.Children.toArray(children).filter(r => r.type === Route).length > 0;\n };\n\n return (\n <MMJwtProvider\n urls={urls}\n clientId={clientId}\n login={login}\n authorize={authorize}\n deauthorize={deauthorize}\n accessToken={accessToken}\n graphQLRoleOverride={graphQLRoleOverride}\n >\n { isRoute(children) ? children : <Route path=\"/\" element={children} /> }\n </MMJwtProvider>\n );\n};\n\nexport default MMProvider;\n","import { useEffect, useState } from 'react';\nimport { useMMAuth } from './hooks';\nimport { connect, credsAuthenticator, JSONCodec } from 'nats.ws';\n\n/**\n * Establishes a connection to the NATS server using the provided URL and credentials.\n *\n * @param {string} url - The URL of the server to connect to.\n * @param {string} creds - The credentials for authentication.\n * @returns {Connection} The established connection object.\n */\nconst connectToServer = async (url, creds) => {\n // Convert the credentials to a byte array\n const credentialsBytes = new TextEncoder().encode(creds);\n\n try {\n // Connect to the server using the provided URL and credentials\n const connection = await connect({\n servers: [url],\n authenticator: credsAuthenticator(credentialsBytes),\n });\n\n return connection; // Return the established connection\n } catch (error) {\n console.error(`Error connecting to server: ${error.message}`);\n throw error; // Re-throw the error for the caller to handle if necessary\n }\n};\n\n/**\n * Asynchronously decodes messages using a JSON codec and yields the decoded data.\n *\n * @param {AsyncIterable} messages - An asynchronous iterable ({Generator}) of messages to decode.\n * @yields {AsyncIterable} A iterable generator yielding decoded message data.\n */\nasync function* decode(messages) {\n const codec = JSONCodec();\n for await (const message of messages) {\n try {\n yield codec.decode(message.data);\n } catch (error) {\n console.warn(\n `Skipping event\\n${JSON.stringify(event, null, 2)}\\n${error}`\n );\n }\n }\n}\n\n/**\n * A custom React Hook for consuming events from an event stream using NATS.\n *\n * @param {Object} params - Parameters for the event stream.\n * @param {string} params.streamName - The name of the stream to consume events from.\n * @param {string} params.subject - The subject of the events to consume.\n * @returns {Generator} An iterable generator to consume events from the stream.\n */\nexport const useEventStream = ({ streamName, subject }) => {\n // Fetch NATS credentials and URLs using a custom hook\n const { natsCreds, urls } = useMMAuth();\n\n // State to hold the connection\n const [connection, setConnection] = useState();\n\n // State to hold the consumed event stream\n const [eventStream, setEventStream] = useState();\n\n useEffect(() => {\n if (eventStream === undefined) {\n if (natsCreds && subject) {\n connectToServer(urls.natsUrl, natsCreds)\n .then(async (conn) => {\n setConnection(conn); // Store the connection reference\n const jc = conn.jetstream();\n\n console.log('Consuming from subject:', subject);\n\n // Determine the stream to consume from\n const stream = streamName\n ? streamName\n : await jc.findStream(subject);\n\n // Get a consumer for the specified stream and subject\n // TODO: make the deliver policy configurable\n return jc.consumers.get(stream, {\n filterSubjects: subject,\n deliver_policy: 'last_per_subject',\n });\n })\n .then(async (consumer) => {\n const messages = await consumer.consume({ max_messages: 1000 });\n const events = decode(messages);\n setEventStream(events);\n });\n }\n } else {\n return () => {\n // Clean up when the component unmounts\n if (eventStream) {\n setEventStream(undefined);\n }\n if (connection) {\n connection.close();\n }\n };\n }\n }, [subject, natsCreds]);\n\n return eventStream;\n};\n"],"names":["React","createContext","useAsyncEffect","delegate","stateTriggers","destroy","useEffect","asyncEffect","controller","signal","window","AbortController","abort","useThrottleEffect","wait","savedCallback","useRef","current","debouncedDelegate","useCallback","_","throttle","useAsyncInterval","delay","abortSignal","id","tick","setTimeout","clearTimeout","useApiRequest","path","options","useState","data","setData","loading","setLoading","error","setError","useMMAuth","urls","request","requestOpts","skip","apiUrl","result","e","useProductionQuery","query","method","body","useQuantityStream","machineRef","key","latestEventTime","setLatestEventTime","currentMachineRef","setCurrentMachineRef","currentKey","setCurrentKey","currentSubscription","gql","useSubscription","currentData","rangeQuery","setRangeQuery","queryLoading","windowStart","DateTime","utc","minus","hours","format","queryRange","useLazyQuery","fetchPolicy","queryData","quantities","lastQuantity","last","eventTime","rest","drop","useDowntimeQuery","useMMTemplates","namespacePart","templates","setTemplates","_useMMAuthInternal","clientId","namespace","tempTemplates","filter","addTemplate","name","isPublic","config","bodyObj","JSON","stringify","response","template","updateTemplate","templateIndex","findIndex","beforeTemplates","slice","afterTemplates","deleteTemplate","reject","useMMHash","ready","setReady","hash","setHash","top","location","substring","addEventListener","event","postMessage","appUrl","useContext","MMAuthContext","MMAuthInternalContext","PrivateLayout","login","isAuthenticated","AUTH_STATE","DESTINATION","ACCESS_TOKEN","localStorageObject","localStorage","retrieveAccessToken","getItem","storeAccessToken","token","removeItem","setItem","retrieveDestination","storeDestination","dest","retrieveAuthState","storeAuthState","state","rawRequest","url","fetch","text","obj","parse","status","message","statusText","Centered","styled","div","Done","loadError","Message","Authorize","authorize","authError","setAuthError","Authorized","ApolloApp","jwt","graphQLRoleOverride","accessToken","getHierPart","URL","graphQLUrl","host","pathname","getRoleHeaders","wsLink","GraphQLWsLink","createClient","lazy","reconnect","connectionParams","headers","Authorization","errorLink","onError","operation","networkError","forward","definition","getMainDefinition","client","terminate","jwtAuthLink","setContext","httpLink","concat","createHttpLink","uri","graphQlLink","split","kind","accessTokenAuthLink","restLink","RestLink","link","ApolloLink","from","ApolloClient","cache","InMemoryCache","MMJwtProvider","children","deauthorize","setIsAuthenticated","setJwt","natsCreds","setNatsCreds","logout","loginUrl","json","Error","URL_MAP","production","natsUrl","staging","demo","development","MMProvider","domain","scope","clientSecret","releaseStage","console","warn","stages","keys","join","setAccessToken","authState","uuidv4","search","createParamString","params","map","v","k","loginParams","response_type","ttl","client_id","redirect_uri","qs","code","grant_type","client_secret","URLSearchParams","access_token","isRoute","Children","toArray","r","type","Route","length","connectToServer","creds","credentialsBytes","TextEncoder","encode","connect","servers","authenticator","credsAuthenticator","decode","messages","codec","JSONCodec","useEventStream","streamName","subject","connection","setConnection","eventStream","setEventStream","undefined","then","conn","stream","jc","consumers","get","filterSubjects","deliver_policy","jetstream","log","findStream","consumer","consume","max_messages","events","close"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@machinemetrics/mm-react-tools",
3
- "version": "2.0.8",
3
+ "version": "2.1.0",
4
4
  "description": "Components, hooks, and helper functions for writing React apps using MachineMetrics APIs.",
5
5
  "author": "machinemetrics",
6
6
  "license": "MIT",
@@ -9,7 +9,7 @@
9
9
  "module": "dist/index.modern.js",
10
10
  "source": "src/index.js",
11
11
  "engines": {
12
- "node": ">=14"
12
+ "node": ">=16"
13
13
  },
14
14
  "scripts": {
15
15
  "build": "microbundle-crl --no-compress --format modern,cjs",
@@ -24,7 +24,7 @@
24
24
  "deploy": "gh-pages -d example/build"
25
25
  },
26
26
  "peerDependencies": {
27
- "@apollo/client": ">=3.7.10",
27
+ "@apollo/client": ">=3.8.0",
28
28
  "react": ">=18.0.0",
29
29
  "react-router-dom": ">=6.9.0",
30
30
  "styled-components": ">=5.3.9"
@@ -32,37 +32,37 @@
32
32
  "devDependencies": {
33
33
  "babel-eslint": "^10.0.3",
34
34
  "cross-env": "^7.0.3",
35
- "eslint": "^8.8.0",
36
- "eslint-config-prettier": "^8.8.0",
37
- "eslint-config-standard": "^17.0.0",
35
+ "eslint": "^8.48.0",
36
+ "eslint-config-prettier": "^9.0.0",
37
+ "eslint-config-standard": "^17.1.0",
38
38
  "eslint-config-standard-react": "^13.0.0",
39
- "eslint-plugin-import": "^2.26.0",
39
+ "eslint-plugin-import": "^2.28.1",
40
40
  "eslint-plugin-node": "^11.1.0",
41
- "eslint-plugin-prettier": "^4.0.0",
42
- "eslint-plugin-promise": "^6.0.0",
43
- "eslint-plugin-react": "^7.30.0",
41
+ "eslint-plugin-prettier": "^5.0.0",
42
+ "eslint-plugin-promise": "^6.1.1",
43
+ "eslint-plugin-react": "^7.33.2",
44
44
  "eslint-plugin-standard": "^5.0.0",
45
- "gh-pages": "^5.0.0",
45
+ "gh-pages": "^6.0.0",
46
46
  "microbundle-crl": "^0.13.11",
47
47
  "npm-run-all": "^4.1.5",
48
- "prettier": "^2.7.0"
48
+ "prettier": "^3.0.3"
49
49
  },
50
50
  "files": [
51
51
  "dist"
52
52
  ],
53
53
  "dependencies": {
54
- "apollo-link-rest": "^0.9.0-rc.1",
55
- "cloudevents": "^6.0.4",
56
- "graphql": "^16.6.0",
57
- "graphql-anywhere": "^4.2.7",
58
- "graphql-ws": "^5.9.0",
54
+ "apollo-link-rest": "^0.9.0",
55
+ "cloudevents": "^8.0.0",
56
+ "graphql": "^16.8.0",
57
+ "graphql-anywhere": "^4.2.8",
58
+ "graphql-ws": "^5.14.0",
59
59
  "lodash": "^4.17.21",
60
- "luxon": "^3.3.0",
60
+ "luxon": "^3.4.2",
61
61
  "nats.ws": "^1.17.0",
62
- "qs": "^6.10.5",
62
+ "qs": "^6.11.2",
63
63
  "query-string": "^8.1.0",
64
64
  "url-parser": "^0.0.1",
65
65
  "uuid": "^9.0.0",
66
- "ws": "^8.8.0"
66
+ "ws": "^8.13.0"
67
67
  }
68
68
  }