@machinemetrics/mm-react-tools 2.1.0 → 2.2.0-dev
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 +471 -144
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +471 -144
- package/dist/index.modern.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -547,11 +547,165 @@ function _taggedTemplateLiteralLoose(strings, raw) {
|
|
|
547
547
|
}
|
|
548
548
|
|
|
549
549
|
// A type of promise-like that resolves synchronously and supports only one observer
|
|
550
|
+
const _Pact = /*#__PURE__*/(function() {
|
|
551
|
+
function _Pact() {}
|
|
552
|
+
_Pact.prototype.then = function(onFulfilled, onRejected) {
|
|
553
|
+
const result = new _Pact();
|
|
554
|
+
const state = this.s;
|
|
555
|
+
if (state) {
|
|
556
|
+
const callback = state & 1 ? onFulfilled : onRejected;
|
|
557
|
+
if (callback) {
|
|
558
|
+
try {
|
|
559
|
+
_settle(result, 1, callback(this.v));
|
|
560
|
+
} catch (e) {
|
|
561
|
+
_settle(result, 2, e);
|
|
562
|
+
}
|
|
563
|
+
return result;
|
|
564
|
+
} else {
|
|
565
|
+
return this;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
this.o = function(_this) {
|
|
569
|
+
try {
|
|
570
|
+
const value = _this.v;
|
|
571
|
+
if (_this.s & 1) {
|
|
572
|
+
_settle(result, 1, onFulfilled ? onFulfilled(value) : value);
|
|
573
|
+
} else if (onRejected) {
|
|
574
|
+
_settle(result, 1, onRejected(value));
|
|
575
|
+
} else {
|
|
576
|
+
_settle(result, 2, value);
|
|
577
|
+
}
|
|
578
|
+
} catch (e) {
|
|
579
|
+
_settle(result, 2, e);
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
return result;
|
|
583
|
+
};
|
|
584
|
+
return _Pact;
|
|
585
|
+
})();
|
|
586
|
+
|
|
587
|
+
// Settles a pact synchronously
|
|
588
|
+
function _settle(pact, state, value) {
|
|
589
|
+
if (!pact.s) {
|
|
590
|
+
if (value instanceof _Pact) {
|
|
591
|
+
if (value.s) {
|
|
592
|
+
if (state & 1) {
|
|
593
|
+
state = value.s;
|
|
594
|
+
}
|
|
595
|
+
value = value.v;
|
|
596
|
+
} else {
|
|
597
|
+
value.o = _settle.bind(null, pact, state);
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
if (value && value.then) {
|
|
602
|
+
value.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
pact.s = state;
|
|
606
|
+
pact.v = value;
|
|
607
|
+
const observer = pact.o;
|
|
608
|
+
if (observer) {
|
|
609
|
+
observer(pact);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
function _isSettledPact(thenable) {
|
|
615
|
+
return thenable instanceof _Pact && thenable.s & 1;
|
|
616
|
+
}
|
|
550
617
|
|
|
551
618
|
const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
|
|
552
619
|
|
|
553
620
|
const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
|
|
554
621
|
|
|
622
|
+
// Asynchronously implement a generic for loop
|
|
623
|
+
function _for(test, update, body) {
|
|
624
|
+
var stage;
|
|
625
|
+
for (;;) {
|
|
626
|
+
var shouldContinue = test();
|
|
627
|
+
if (_isSettledPact(shouldContinue)) {
|
|
628
|
+
shouldContinue = shouldContinue.v;
|
|
629
|
+
}
|
|
630
|
+
if (!shouldContinue) {
|
|
631
|
+
return result;
|
|
632
|
+
}
|
|
633
|
+
if (shouldContinue.then) {
|
|
634
|
+
stage = 0;
|
|
635
|
+
break;
|
|
636
|
+
}
|
|
637
|
+
var result = body();
|
|
638
|
+
if (result && result.then) {
|
|
639
|
+
if (_isSettledPact(result)) {
|
|
640
|
+
result = result.s;
|
|
641
|
+
} else {
|
|
642
|
+
stage = 1;
|
|
643
|
+
break;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
if (update) {
|
|
647
|
+
var updateValue = update();
|
|
648
|
+
if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {
|
|
649
|
+
stage = 2;
|
|
650
|
+
break;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
var pact = new _Pact();
|
|
655
|
+
var reject = _settle.bind(null, pact, 2);
|
|
656
|
+
(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);
|
|
657
|
+
return pact;
|
|
658
|
+
function _resumeAfterBody(value) {
|
|
659
|
+
result = value;
|
|
660
|
+
do {
|
|
661
|
+
if (update) {
|
|
662
|
+
updateValue = update();
|
|
663
|
+
if (updateValue && updateValue.then && !_isSettledPact(updateValue)) {
|
|
664
|
+
updateValue.then(_resumeAfterUpdate).then(void 0, reject);
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
shouldContinue = test();
|
|
669
|
+
if (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {
|
|
670
|
+
_settle(pact, 1, result);
|
|
671
|
+
return;
|
|
672
|
+
}
|
|
673
|
+
if (shouldContinue.then) {
|
|
674
|
+
shouldContinue.then(_resumeAfterTest).then(void 0, reject);
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
result = body();
|
|
678
|
+
if (_isSettledPact(result)) {
|
|
679
|
+
result = result.v;
|
|
680
|
+
}
|
|
681
|
+
} while (!result || !result.then);
|
|
682
|
+
result.then(_resumeAfterBody).then(void 0, reject);
|
|
683
|
+
}
|
|
684
|
+
function _resumeAfterTest(shouldContinue) {
|
|
685
|
+
if (shouldContinue) {
|
|
686
|
+
result = body();
|
|
687
|
+
if (result && result.then) {
|
|
688
|
+
result.then(_resumeAfterBody).then(void 0, reject);
|
|
689
|
+
} else {
|
|
690
|
+
_resumeAfterBody(result);
|
|
691
|
+
}
|
|
692
|
+
} else {
|
|
693
|
+
_settle(pact, 1, result);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
function _resumeAfterUpdate() {
|
|
697
|
+
if (shouldContinue = test()) {
|
|
698
|
+
if (shouldContinue.then) {
|
|
699
|
+
shouldContinue.then(_resumeAfterTest).then(void 0, reject);
|
|
700
|
+
} else {
|
|
701
|
+
_resumeAfterTest(shouldContinue);
|
|
702
|
+
}
|
|
703
|
+
} else {
|
|
704
|
+
_settle(pact, 1, result);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
555
709
|
// Asynchronously call a function and send errors to recovery continuation
|
|
556
710
|
function _catch(body, recover) {
|
|
557
711
|
try {
|
|
@@ -565,6 +719,19 @@ function _catch(body, recover) {
|
|
|
565
719
|
return result;
|
|
566
720
|
}
|
|
567
721
|
|
|
722
|
+
// Asynchronously await a promise and pass the result to a finally continuation
|
|
723
|
+
function _finallyRethrows(body, finalizer) {
|
|
724
|
+
try {
|
|
725
|
+
var result = body();
|
|
726
|
+
} catch (e) {
|
|
727
|
+
return finalizer(true, e);
|
|
728
|
+
}
|
|
729
|
+
if (result && result.then) {
|
|
730
|
+
return result.then(finalizer.bind(null, false), finalizer.bind(null, true));
|
|
731
|
+
}
|
|
732
|
+
return finalizer(false, result);
|
|
733
|
+
}
|
|
734
|
+
|
|
568
735
|
var MMAuthContext = React__default.createContext();
|
|
569
736
|
|
|
570
737
|
var MMAuthInternalContext = React__default.createContext();
|
|
@@ -1192,8 +1359,9 @@ var Authorize = function Authorize(_ref) {
|
|
|
1192
1359
|
return !isAuthenticated ? /*#__PURE__*/React__default.createElement(Message, null, "Authorizing...") : /*#__PURE__*/React__default.createElement(Done, null);
|
|
1193
1360
|
};
|
|
1194
1361
|
|
|
1195
|
-
var
|
|
1196
|
-
var
|
|
1362
|
+
var DataWrapper = function DataWrapper(_ref) {
|
|
1363
|
+
var jwtRef = _ref.jwtRef,
|
|
1364
|
+
natsCredsRef = _ref.natsCredsRef,
|
|
1197
1365
|
graphQLRoleOverride = _ref.graphQLRoleOverride,
|
|
1198
1366
|
clientId = _ref.clientId,
|
|
1199
1367
|
accessToken = _ref.accessToken;
|
|
@@ -1201,6 +1369,14 @@ var ApolloApp = function ApolloApp(_ref) {
|
|
|
1201
1369
|
var _useMMAuth = useMMAuth(),
|
|
1202
1370
|
urls = _useMMAuth.urls;
|
|
1203
1371
|
|
|
1372
|
+
var _useState = React.useState(),
|
|
1373
|
+
client$1 = _useState[0],
|
|
1374
|
+
setClient = _useState[1];
|
|
1375
|
+
|
|
1376
|
+
var _useState2 = React.useState(),
|
|
1377
|
+
link = _useState2[0],
|
|
1378
|
+
setLink = _useState2[1];
|
|
1379
|
+
|
|
1204
1380
|
var getHierPart = function getHierPart() {
|
|
1205
1381
|
var url = new URL(urls.graphQLUrl);
|
|
1206
1382
|
return "//" + url.host + url.pathname;
|
|
@@ -1212,85 +1388,94 @@ var ApolloApp = function ApolloApp(_ref) {
|
|
|
1212
1388
|
} : {};
|
|
1213
1389
|
};
|
|
1214
1390
|
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1391
|
+
React.useEffect(function () {
|
|
1392
|
+
var wsLink = new subscriptions.GraphQLWsLink(graphqlWs.createClient({
|
|
1393
|
+
url: "wss:" + getHierPart(),
|
|
1394
|
+
lazy: true,
|
|
1395
|
+
reconnect: true,
|
|
1396
|
+
connectionParams: function () {
|
|
1397
|
+
try {
|
|
1398
|
+
return Promise.resolve({
|
|
1399
|
+
headers: _extends({
|
|
1400
|
+
Authorization: "Bearer " + jwtRef.current
|
|
1401
|
+
}, getRoleHeaders())
|
|
1402
|
+
});
|
|
1403
|
+
} catch (e) {
|
|
1404
|
+
return Promise.reject(e);
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
}));
|
|
1408
|
+
var errorLink = error.onError(function (_ref2) {
|
|
1409
|
+
var operation = _ref2.operation,
|
|
1410
|
+
networkError = _ref2.networkError,
|
|
1411
|
+
forward = _ref2.forward;
|
|
1412
|
+
var definition = utilities.getMainDefinition(operation.query);
|
|
1413
|
+
|
|
1414
|
+
if (definition.operation === 'subscription' && networkError) {
|
|
1415
|
+
wsLink.client.terminate();
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
return forward(operation);
|
|
1419
|
+
});
|
|
1420
|
+
var jwtAuthLink = context.setContext(function (_, _ref3) {
|
|
1421
|
+
var headers = _ref3.headers;
|
|
1422
|
+
|
|
1220
1423
|
try {
|
|
1221
1424
|
return Promise.resolve({
|
|
1222
|
-
headers: _extends({
|
|
1223
|
-
Authorization: "Bearer " +
|
|
1425
|
+
headers: _extends({}, headers, {
|
|
1426
|
+
Authorization: "Bearer " + jwtRef.current
|
|
1224
1427
|
}, getRoleHeaders())
|
|
1225
1428
|
});
|
|
1226
1429
|
} catch (e) {
|
|
1227
1430
|
return Promise.reject(e);
|
|
1228
1431
|
}
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
return forward(operation);
|
|
1242
|
-
});
|
|
1243
|
-
var jwtAuthLink = context.setContext(function (_, _ref3) {
|
|
1244
|
-
var headers = _ref3.headers;
|
|
1432
|
+
});
|
|
1433
|
+
var httpLink = jwtAuthLink.concat(client.createHttpLink({
|
|
1434
|
+
uri: "https:" + getHierPart(),
|
|
1435
|
+
fetch: window.fetch
|
|
1436
|
+
}));
|
|
1437
|
+
var graphQlLink = errorLink.split(function (_ref4) {
|
|
1438
|
+
var query = _ref4.query;
|
|
1439
|
+
var definition = utilities.getMainDefinition(query);
|
|
1440
|
+
return definition.kind === 'OperationDefinition' && definition.operation === 'subscription';
|
|
1441
|
+
}, wsLink, httpLink);
|
|
1442
|
+
var accessTokenAuthLink = context.setContext(function (_, _ref5) {
|
|
1443
|
+
var headers = _ref5.headers;
|
|
1245
1444
|
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1445
|
+
try {
|
|
1446
|
+
return Promise.resolve({
|
|
1447
|
+
headers: _extends({}, headers, {
|
|
1448
|
+
Authorization: "Bearer " + accessToken
|
|
1449
|
+
})
|
|
1450
|
+
});
|
|
1451
|
+
} catch (e) {
|
|
1452
|
+
return Promise.reject(e);
|
|
1453
|
+
}
|
|
1454
|
+
});
|
|
1455
|
+
var restLink = accessTokenAuthLink.concat(new apolloLinkRest.RestLink({
|
|
1456
|
+
uri: urls.apiUrl
|
|
1457
|
+
}));
|
|
1458
|
+
setLink(client.ApolloLink.from([restLink, graphQlLink]));
|
|
1459
|
+
}, []);
|
|
1460
|
+
React.useEffect(function () {
|
|
1461
|
+
if (!link) {
|
|
1462
|
+
return;
|
|
1254
1463
|
}
|
|
1255
|
-
});
|
|
1256
|
-
var httpLink = jwtAuthLink.concat(client.createHttpLink({
|
|
1257
|
-
uri: "https:" + getHierPart(),
|
|
1258
|
-
fetch: window.fetch
|
|
1259
|
-
}));
|
|
1260
|
-
var graphQlLink = errorLink.split(function (_ref4) {
|
|
1261
|
-
var query = _ref4.query;
|
|
1262
|
-
var definition = utilities.getMainDefinition(query);
|
|
1263
|
-
return definition.kind === 'OperationDefinition' && definition.operation === 'subscription';
|
|
1264
|
-
}, wsLink, httpLink);
|
|
1265
|
-
var accessTokenAuthLink = context.setContext(function (_, _ref5) {
|
|
1266
|
-
var headers = _ref5.headers;
|
|
1267
1464
|
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
});
|
|
1274
|
-
} catch (e) {
|
|
1275
|
-
return Promise.reject(e);
|
|
1276
|
-
}
|
|
1277
|
-
});
|
|
1278
|
-
var restLink = accessTokenAuthLink.concat(new apolloLinkRest.RestLink({
|
|
1279
|
-
uri: urls.apiUrl
|
|
1280
|
-
}));
|
|
1281
|
-
var link = client.ApolloLink.from([restLink, graphQlLink]);
|
|
1282
|
-
var client$1 = new client.ApolloClient({
|
|
1283
|
-
link: link,
|
|
1284
|
-
cache: new client.InMemoryCache()
|
|
1285
|
-
});
|
|
1465
|
+
setClient(new client.ApolloClient({
|
|
1466
|
+
link: link,
|
|
1467
|
+
cache: new client.InMemoryCache()
|
|
1468
|
+
}));
|
|
1469
|
+
}, [link]);
|
|
1286
1470
|
return /*#__PURE__*/React__default.createElement(MMAuthInternalContext.Provider, {
|
|
1287
1471
|
value: {
|
|
1288
1472
|
link: link,
|
|
1289
|
-
|
|
1473
|
+
natsCredsRef: natsCredsRef,
|
|
1474
|
+
jwtRef: jwtRef,
|
|
1290
1475
|
clientId: clientId,
|
|
1291
1476
|
accessToken: accessToken
|
|
1292
1477
|
}
|
|
1293
|
-
}, /*#__PURE__*/React__default.createElement(client.ApolloProvider, {
|
|
1478
|
+
}, client$1 && /*#__PURE__*/React__default.createElement(client.ApolloProvider, {
|
|
1294
1479
|
client: client$1
|
|
1295
1480
|
}, /*#__PURE__*/React__default.createElement(reactRouterDom.Outlet, null)));
|
|
1296
1481
|
};
|
|
@@ -1309,13 +1494,8 @@ var MMJwtProvider = function MMJwtProvider(_ref) {
|
|
|
1309
1494
|
isAuthenticated = _useState[0],
|
|
1310
1495
|
setIsAuthenticated = _useState[1];
|
|
1311
1496
|
|
|
1312
|
-
var
|
|
1313
|
-
|
|
1314
|
-
setJwt = _useState2[1];
|
|
1315
|
-
|
|
1316
|
-
var _useState3 = React.useState(),
|
|
1317
|
-
natsCreds = _useState3[0],
|
|
1318
|
-
setNatsCreds = _useState3[1];
|
|
1497
|
+
var jwtRef = React.useRef();
|
|
1498
|
+
var natsCredsRef = React.useRef();
|
|
1319
1499
|
|
|
1320
1500
|
var logout = function logout() {
|
|
1321
1501
|
try {
|
|
@@ -1362,14 +1542,14 @@ var MMJwtProvider = function MMJwtProvider(_ref) {
|
|
|
1362
1542
|
useAsyncInterval(function () {
|
|
1363
1543
|
try {
|
|
1364
1544
|
if (!accessToken) {
|
|
1365
|
-
|
|
1545
|
+
jwtRef.current = null;
|
|
1366
1546
|
setIsAuthenticated(false);
|
|
1367
1547
|
return Promise.resolve();
|
|
1368
1548
|
}
|
|
1369
1549
|
|
|
1370
1550
|
var _temp3 = _catch(function () {
|
|
1371
1551
|
return Promise.resolve(request(urls.apiUrl + "/user-token?graphql=1")).then(function (response) {
|
|
1372
|
-
|
|
1552
|
+
jwtRef.current = response;
|
|
1373
1553
|
setIsAuthenticated(true);
|
|
1374
1554
|
});
|
|
1375
1555
|
}, function () {});
|
|
@@ -1382,13 +1562,13 @@ var MMJwtProvider = function MMJwtProvider(_ref) {
|
|
|
1382
1562
|
useAsyncInterval(function () {
|
|
1383
1563
|
try {
|
|
1384
1564
|
if (!accessToken) {
|
|
1385
|
-
|
|
1565
|
+
natsCredsRef.current = null;
|
|
1386
1566
|
return Promise.resolve();
|
|
1387
1567
|
}
|
|
1388
1568
|
|
|
1389
1569
|
var _temp5 = _catch(function () {
|
|
1390
1570
|
return Promise.resolve(request(urls.apiUrl + "/nats-token")).then(function (response) {
|
|
1391
|
-
|
|
1571
|
+
natsCredsRef.current = response;
|
|
1392
1572
|
});
|
|
1393
1573
|
}, function () {});
|
|
1394
1574
|
|
|
@@ -1403,8 +1583,7 @@ var MMJwtProvider = function MMJwtProvider(_ref) {
|
|
|
1403
1583
|
login: login,
|
|
1404
1584
|
logout: logout,
|
|
1405
1585
|
request: request,
|
|
1406
|
-
urls: urls
|
|
1407
|
-
natsCreds: natsCreds
|
|
1586
|
+
urls: urls
|
|
1408
1587
|
}
|
|
1409
1588
|
}, /*#__PURE__*/React__default.createElement(reactRouterDom.Routes, null, /*#__PURE__*/React__default.createElement(reactRouterDom.Route, {
|
|
1410
1589
|
exact: true,
|
|
@@ -1414,10 +1593,11 @@ var MMJwtProvider = function MMJwtProvider(_ref) {
|
|
|
1414
1593
|
})
|
|
1415
1594
|
}), /*#__PURE__*/React__default.createElement(reactRouterDom.Route, {
|
|
1416
1595
|
path: "/",
|
|
1417
|
-
element: /*#__PURE__*/React__default.createElement(
|
|
1596
|
+
element: /*#__PURE__*/React__default.createElement(DataWrapper, {
|
|
1418
1597
|
clientId: clientId,
|
|
1419
1598
|
graphQLRoleOverride: graphQLRoleOverride,
|
|
1420
|
-
|
|
1599
|
+
jwtRef: jwtRef,
|
|
1600
|
+
natsCredsRef: natsCredsRef,
|
|
1421
1601
|
accessToken: accessToken
|
|
1422
1602
|
})
|
|
1423
1603
|
}, children))));
|
|
@@ -1461,21 +1641,26 @@ var MMProvider = function MMProvider(_ref) {
|
|
|
1461
1641
|
clientId = _ref.clientId,
|
|
1462
1642
|
clientSecret = _ref.clientSecret,
|
|
1463
1643
|
releaseStage = _ref.releaseStage,
|
|
1464
|
-
graphQLRoleOverride = _ref.graphQLRoleOverride
|
|
1644
|
+
graphQLRoleOverride = _ref.graphQLRoleOverride,
|
|
1645
|
+
customUrls = _ref.urls;
|
|
1465
1646
|
|
|
1466
1647
|
if (releaseStage === 'release') {
|
|
1467
1648
|
releaseStage = 'production';
|
|
1468
1649
|
console.warn("releaseStage \"release\" has been deprecated. use \"production\" instead.");
|
|
1469
1650
|
}
|
|
1470
1651
|
|
|
1471
|
-
var urls
|
|
1652
|
+
var urls;
|
|
1472
1653
|
|
|
1473
|
-
if (
|
|
1654
|
+
if (URL_MAP[releaseStage]) {
|
|
1655
|
+
urls = URL_MAP[releaseStage];
|
|
1656
|
+
} else {
|
|
1474
1657
|
var stages = _.keys(URL_MAP).join(', ');
|
|
1475
1658
|
|
|
1476
1659
|
throw Error("MMProvider releaseStage must be one of the following: " + stages);
|
|
1477
1660
|
}
|
|
1478
1661
|
|
|
1662
|
+
urls = _.merge(urls, customUrls);
|
|
1663
|
+
|
|
1479
1664
|
var _useState = React.useState(retrieveAccessToken()),
|
|
1480
1665
|
accessToken = _useState[0],
|
|
1481
1666
|
setAccessToken = _useState[1];
|
|
@@ -1563,17 +1748,14 @@ var MMProvider = function MMProvider(_ref) {
|
|
|
1563
1748
|
}));
|
|
1564
1749
|
};
|
|
1565
1750
|
|
|
1751
|
+
var ALLOWED_DELIVERY_POLICIES = ['new', 'last', 'last_per_subject'];
|
|
1752
|
+
|
|
1566
1753
|
var connectToServer = function connectToServer(url, creds) {
|
|
1567
1754
|
try {
|
|
1568
|
-
|
|
1569
|
-
return Promise.resolve(
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
authenticator: nats_ws.credsAuthenticator(credentialsBytes)
|
|
1573
|
-
}));
|
|
1574
|
-
}, function (error) {
|
|
1575
|
-
console.error("Error connecting to server: " + error.message);
|
|
1576
|
-
throw error;
|
|
1755
|
+
console.info("Connecting to server " + url);
|
|
1756
|
+
return Promise.resolve(nats_ws.connect({
|
|
1757
|
+
servers: [url],
|
|
1758
|
+
authenticator: nats_ws.credsAuthenticator(new TextEncoder().encode(creds))
|
|
1577
1759
|
}));
|
|
1578
1760
|
} catch (e) {
|
|
1579
1761
|
return Promise.reject(e);
|
|
@@ -1620,7 +1802,7 @@ function _decode() {
|
|
|
1620
1802
|
case 14:
|
|
1621
1803
|
_context.prev = 14;
|
|
1622
1804
|
_context.t0 = _context["catch"](9);
|
|
1623
|
-
console.warn("Skipping event
|
|
1805
|
+
console.warn("Skipping event: " + _context.t0);
|
|
1624
1806
|
|
|
1625
1807
|
case 17:
|
|
1626
1808
|
_iteratorAbruptCompletion = false;
|
|
@@ -1675,67 +1857,212 @@ function _decode() {
|
|
|
1675
1857
|
return _decode.apply(this, arguments);
|
|
1676
1858
|
}
|
|
1677
1859
|
|
|
1678
|
-
var
|
|
1679
|
-
|
|
1680
|
-
|
|
1860
|
+
var closeConnection = function closeConnection(eventStreamRef, connectionRef) {
|
|
1861
|
+
if (eventStreamRef.current) {
|
|
1862
|
+
eventStreamRef.current = undefined;
|
|
1863
|
+
}
|
|
1864
|
+
|
|
1865
|
+
if (connectionRef.current) {
|
|
1866
|
+
connectionRef.current.close();
|
|
1867
|
+
connectionRef.current = undefined;
|
|
1868
|
+
}
|
|
1869
|
+
};
|
|
1870
|
+
|
|
1871
|
+
var streamPatterns = {
|
|
1872
|
+
scada: 'mm.0.[location-ref].[machine-ref].[qualifier].[data-category].[metric-key].[message-type]',
|
|
1873
|
+
'machine-service': 'mm.2.[location-ref].[machine-ref].[service-name].[qualifier].[data-category].[metric-key].[message-type]',
|
|
1874
|
+
'edge-service': 'mm.3.[location-ref].[edge-ref].[service-name].[data-category].[metric-key].[message-type]',
|
|
1875
|
+
'machine-source-service': 'mm.4.[location-ref].[machine-ref].[machine-source-ref].[service-name].[data-category].[metric-key].[message-type]',
|
|
1876
|
+
edge: 'mm.7.[location-ref].[edge-ref].[data-category].[metric-key].[message-type]'
|
|
1877
|
+
};
|
|
1878
|
+
var dataCategoryMapping = {
|
|
1879
|
+
undefined: 0,
|
|
1880
|
+
event: 1,
|
|
1881
|
+
eventset: 2,
|
|
1882
|
+
quantity: 3,
|
|
1883
|
+
state: 4,
|
|
1884
|
+
count: 5,
|
|
1885
|
+
info: 6,
|
|
1886
|
+
beat: 7
|
|
1887
|
+
};
|
|
1888
|
+
|
|
1889
|
+
var buildSubject = function buildSubject(streamName, locationRef, filter) {
|
|
1890
|
+
if (!streamPatterns[streamName]) {
|
|
1891
|
+
throw new Error('Unknown stream name');
|
|
1892
|
+
}
|
|
1893
|
+
|
|
1894
|
+
var pattern = streamPatterns[streamName].split('.');
|
|
1895
|
+
var subject = '';
|
|
1896
|
+
pattern.forEach(function (part, index) {
|
|
1897
|
+
switch (part) {
|
|
1898
|
+
case '[location-ref]':
|
|
1899
|
+
subject += '.' + locationRef;
|
|
1900
|
+
break;
|
|
1901
|
+
|
|
1902
|
+
case '[machine-ref]':
|
|
1903
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.machineRef) || '*');
|
|
1904
|
+
break;
|
|
1905
|
+
|
|
1906
|
+
case '[qualifier]':
|
|
1907
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.qualifier) || '0');
|
|
1908
|
+
break;
|
|
1909
|
+
|
|
1910
|
+
case '[data-category]':
|
|
1911
|
+
subject += '.' + (dataCategoryMapping[filter === null || filter === void 0 ? void 0 : filter.dataCategory] || '*');
|
|
1912
|
+
break;
|
|
1913
|
+
|
|
1914
|
+
case '[metric-key]':
|
|
1915
|
+
subject += '.' + (filter !== null && filter !== void 0 && filter.metricKey ? filter === null || filter === void 0 ? void 0 : filter.metricKey.toLowerCase().replace(/[^a-zA-Z0-9_\\-]/gi, '-') : '*');
|
|
1916
|
+
break;
|
|
1917
|
+
|
|
1918
|
+
case '[message-type]':
|
|
1919
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.messageType) || '0');
|
|
1920
|
+
break;
|
|
1921
|
+
|
|
1922
|
+
case '[edge-ref]':
|
|
1923
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.edgeRef) || '*');
|
|
1924
|
+
break;
|
|
1925
|
+
|
|
1926
|
+
case '[service-name]':
|
|
1927
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.serviceName) || '*');
|
|
1928
|
+
break;
|
|
1929
|
+
|
|
1930
|
+
case '[machine-source-ref]':
|
|
1931
|
+
subject += '.' + ((filter === null || filter === void 0 ? void 0 : filter.machineSourceRef) || '*');
|
|
1932
|
+
break;
|
|
1933
|
+
|
|
1934
|
+
default:
|
|
1935
|
+
if (index > 0) {
|
|
1936
|
+
subject += '.';
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
subject += part;
|
|
1940
|
+
break;
|
|
1941
|
+
}
|
|
1942
|
+
});
|
|
1943
|
+
return subject;
|
|
1944
|
+
};
|
|
1945
|
+
|
|
1946
|
+
var useEventStream = function useEventStream(params) {
|
|
1947
|
+
var streamName = params.streamName,
|
|
1948
|
+
locationRef = params.locationRef,
|
|
1949
|
+
filters = params.filters,
|
|
1950
|
+
_params$deliverPolicy = params.deliverPolicy,
|
|
1951
|
+
deliverPolicy = _params$deliverPolicy === void 0 ? 'new' : _params$deliverPolicy,
|
|
1952
|
+
dispatch = params.dispatch;
|
|
1953
|
+
|
|
1954
|
+
if (!ALLOWED_DELIVERY_POLICIES.includes(deliverPolicy)) {
|
|
1955
|
+
throw new Error("Invalid deliverPolicy \"" + deliverPolicy + "\" specified. Valid options are: " + ALLOWED_DELIVERY_POLICIES.join(', '));
|
|
1956
|
+
}
|
|
1957
|
+
|
|
1958
|
+
if (filters && filters.length > 1) {
|
|
1959
|
+
console.warn("Multiple filters are not supported. Only the first filter will be used.");
|
|
1960
|
+
}
|
|
1681
1961
|
|
|
1682
1962
|
var _useMMAuth = useMMAuth(),
|
|
1683
|
-
natsCreds = _useMMAuth.natsCreds,
|
|
1684
1963
|
urls = _useMMAuth.urls;
|
|
1685
1964
|
|
|
1686
|
-
var
|
|
1687
|
-
|
|
1688
|
-
setConnection = _useState[1];
|
|
1689
|
-
|
|
1690
|
-
var _useState2 = React.useState(),
|
|
1691
|
-
eventStream = _useState2[0],
|
|
1692
|
-
setEventStream = _useState2[1];
|
|
1965
|
+
var _useMMAuthInternal2 = _useMMAuthInternal(),
|
|
1966
|
+
natsCredsRef = _useMMAuthInternal2.natsCredsRef;
|
|
1693
1967
|
|
|
1968
|
+
var connectionRef = React.useRef();
|
|
1969
|
+
var eventStreamRef = React.useRef();
|
|
1694
1970
|
React.useEffect(function () {
|
|
1695
|
-
if (
|
|
1696
|
-
if (natsCreds && subject) {
|
|
1697
|
-
connectToServer(urls.natsUrl, natsCreds).then(function (conn) {
|
|
1698
|
-
try {
|
|
1699
|
-
var _temp2 = function _temp2(stream) {
|
|
1700
|
-
return jc.consumers.get(stream, {
|
|
1701
|
-
filterSubjects: subject,
|
|
1702
|
-
deliver_policy: 'last_per_subject'
|
|
1703
|
-
});
|
|
1704
|
-
};
|
|
1971
|
+
if (!urls.natsUrl || !natsCredsRef.current || !streamName || !locationRef) return;
|
|
1705
1972
|
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1973
|
+
var setupStream = function setupStream() {
|
|
1974
|
+
try {
|
|
1975
|
+
return Promise.resolve(_catch(function () {
|
|
1976
|
+
return Promise.resolve(connectToServer(urls.natsUrl, natsCredsRef.current)).then(function (conn) {
|
|
1977
|
+
connectionRef.current = conn;
|
|
1978
|
+
var subject = buildSubject(streamName, locationRef, filters === null || filters === void 0 ? void 0 : filters[0]);
|
|
1979
|
+
console.info("Consuming events from stream " + streamName + " filtering by subject " + subject);
|
|
1980
|
+
return Promise.resolve(conn.jetstream().consumers.get(streamName, {
|
|
1981
|
+
deliver_policy: deliverPolicy,
|
|
1982
|
+
filterSubjects: subject
|
|
1983
|
+
})).then(function (consumer) {
|
|
1984
|
+
return Promise.resolve(consumer.consume({
|
|
1985
|
+
max_messages: 1000
|
|
1986
|
+
})).then(function (messages) {
|
|
1987
|
+
var eventStream = decode(messages);
|
|
1988
|
+
eventStreamRef.current = eventStream;
|
|
1989
|
+
return function () {
|
|
1990
|
+
if (typeof dispatch === 'function') {
|
|
1991
|
+
var _iteratorAbruptCompletion2 = false;
|
|
1992
|
+
var _didIteratorError2 = false;
|
|
1993
|
+
|
|
1994
|
+
var _iteratorError2;
|
|
1995
|
+
|
|
1996
|
+
return _finallyRethrows(function () {
|
|
1997
|
+
return _catch(function () {
|
|
1998
|
+
var _iterator2 = _asyncIterator(eventStream),
|
|
1999
|
+
_step2;
|
|
2000
|
+
|
|
2001
|
+
var _temp = _for(function () {
|
|
2002
|
+
return Promise.resolve(_iterator2.next()).then(function (_iterator2$next) {
|
|
2003
|
+
return _iteratorAbruptCompletion2 = !(_step2 = _iterator2$next).done;
|
|
2004
|
+
});
|
|
2005
|
+
}, function () {
|
|
2006
|
+
return !!(_iteratorAbruptCompletion2 = false);
|
|
2007
|
+
}, function () {
|
|
2008
|
+
var event = _step2.value;
|
|
2009
|
+
dispatch(event);
|
|
2010
|
+
});
|
|
2011
|
+
|
|
2012
|
+
if (_temp && _temp.then) return _temp.then(function () {});
|
|
2013
|
+
}, function (err) {
|
|
2014
|
+
_didIteratorError2 = true;
|
|
2015
|
+
_iteratorError2 = err;
|
|
2016
|
+
});
|
|
2017
|
+
}, function (_wasThrown, _result2) {
|
|
2018
|
+
var _exit = false;
|
|
2019
|
+
|
|
2020
|
+
function _temp4(_result3) {
|
|
2021
|
+
if (_exit) return _result3;
|
|
2022
|
+
if (_wasThrown) throw _result2;
|
|
2023
|
+
return _result2;
|
|
2024
|
+
}
|
|
2025
|
+
|
|
2026
|
+
var _temp3 = _finallyRethrows(function () {
|
|
2027
|
+
var _temp2 = function () {
|
|
2028
|
+
if (_iteratorAbruptCompletion2 && _iterator2["return"] != null) {
|
|
2029
|
+
return Promise.resolve(_iterator2["return"]()).then(function () {});
|
|
2030
|
+
}
|
|
2031
|
+
}();
|
|
2032
|
+
|
|
2033
|
+
if (_temp2 && _temp2.then) return _temp2.then(function () {});
|
|
2034
|
+
}, function (_wasThrown2, _result3) {
|
|
2035
|
+
if (_didIteratorError2) {
|
|
2036
|
+
throw _iteratorError2;
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
if (_wasThrown2) throw _result3;
|
|
2040
|
+
return _result3;
|
|
2041
|
+
});
|
|
2042
|
+
|
|
2043
|
+
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
2044
|
+
});
|
|
2045
|
+
}
|
|
2046
|
+
}();
|
|
2047
|
+
});
|
|
1720
2048
|
});
|
|
1721
|
-
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
});
|
|
2049
|
+
});
|
|
2050
|
+
}, function (error) {
|
|
2051
|
+
console.error("Error setting up event stream. " + error);
|
|
2052
|
+
}));
|
|
2053
|
+
} catch (e) {
|
|
2054
|
+
return Promise.reject(e);
|
|
1725
2055
|
}
|
|
1726
|
-
}
|
|
1727
|
-
return function () {
|
|
1728
|
-
if (eventStream) {
|
|
1729
|
-
setEventStream(undefined);
|
|
1730
|
-
}
|
|
2056
|
+
};
|
|
1731
2057
|
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
2058
|
+
setupStream();
|
|
2059
|
+
return function () {
|
|
2060
|
+
return closeConnection(eventStreamRef, connectionRef);
|
|
2061
|
+
};
|
|
2062
|
+
}, [streamName, locationRef, deliverPolicy, urls.natsUrl, natsCredsRef]);
|
|
2063
|
+
return [eventStreamRef.current, function () {
|
|
2064
|
+
return closeConnection(eventStreamRef, connectionRef);
|
|
2065
|
+
}];
|
|
1739
2066
|
};
|
|
1740
2067
|
|
|
1741
2068
|
exports.MMProvider = MMProvider;
|