gogoclient 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/components/AuthWrapper.js +61 -0
  4. package/dist/components/PageLayout.js +53 -0
  5. package/dist/components/RequireAuth.js +86 -0
  6. package/dist/components/index.js +27 -0
  7. package/dist/helpers/Root.js +206 -0
  8. package/dist/helpers/SubscriptionManager.js +61 -0
  9. package/dist/helpers/currentUserContext.js +12 -0
  10. package/dist/helpers/currentUserQuery.js +11 -0
  11. package/dist/helpers/getUrl.js +18 -0
  12. package/dist/helpers/sentry.js +25 -0
  13. package/dist/helpers/startClient.js +25 -0
  14. package/dist/helpers/subscriptionManagerContext.js +22 -0
  15. package/dist/index.js +109 -0
  16. package/dist/pages/ProviderConnection.page.js +99 -0
  17. package/dist/pages/ProviderConnection.queries.js +12 -0
  18. package/dist/pages/index.js +28 -0
  19. package/dist/theme/elements/Action.js +29 -0
  20. package/dist/theme/elements/ActionGroup.js +14 -0
  21. package/dist/theme/elements/AppBar.js +17 -0
  22. package/dist/theme/elements/Button.js +31 -0
  23. package/dist/theme/elements/Checkbox.js +38 -0
  24. package/dist/theme/elements/GlobalStyle.js +10 -0
  25. package/dist/theme/elements/Logo.js +10 -0
  26. package/dist/theme/elements/Menu.js +15 -0
  27. package/dist/theme/elements/Radio.js +27 -0
  28. package/dist/theme/elements/TextField.js +39 -0
  29. package/dist/theme/elements/index.js +76 -0
  30. package/dist/theme/index.js +93 -0
  31. package/dist/toolkit/darkenLighten.js +57 -0
  32. package/dist/toolkit/headingScale.js +29 -0
  33. package/dist/toolkit/index.js +79 -0
  34. package/dist/toolkit/media.js +23 -0
  35. package/dist/toolkit/override.js +74 -0
  36. package/dist/toolkit/styles/fadeInOut.js +11 -0
  37. package/dist/toolkit/styles/rotate360.js +11 -0
  38. package/dist/toolkit/themeHelper.js +53 -0
  39. package/dist/ui/_helpers/_helpers.js +69 -0
  40. package/dist/ui/_helpers/cssSnippets.js +11 -0
  41. package/dist/ui/_helpers/index.js +40 -0
  42. package/dist/ui/_helpers/useBreakpoint.js +35 -0
  43. package/dist/ui/assignReviewers/AssignReviewers.js +174 -0
  44. package/dist/ui/assignReviewers/InviteRowProp.js +130 -0
  45. package/dist/ui/assignReviewers/ReviewerTable.js +268 -0
  46. package/dist/ui/assignReviewers/SearchBox.js +160 -0
  47. package/dist/ui/assignReviewers/SuggestedReviewer.js +28 -0
  48. package/dist/ui/assignReviewers/index.js +13 -0
  49. package/dist/ui/authentication/AuthenticationForm.js +87 -0
  50. package/dist/ui/authentication/AuthenticationHeader.js +13 -0
  51. package/dist/ui/authentication/AuthenticationWrapper.js +13 -0
  52. package/dist/ui/authentication/ChangePassword.js +128 -0
  53. package/dist/ui/authentication/DeactivatedUser.js +17 -0
  54. package/dist/ui/authentication/Login.js +74 -0
  55. package/dist/ui/authentication/ProfileForm.js +79 -0
  56. package/dist/ui/authentication/ProviderConnection.js +69 -0
  57. package/dist/ui/authentication/RequestPasswordReset.js +89 -0
  58. package/dist/ui/authentication/ResetPassword.js +96 -0
  59. package/dist/ui/authentication/Signup.js +180 -0
  60. package/dist/ui/authentication/SuccessSubTitle.js +20 -0
  61. package/dist/ui/authentication/VerifyCheck.js +55 -0
  62. package/dist/ui/authentication/VerifyEmail.js +119 -0
  63. package/dist/ui/authentication/index.js +104 -0
  64. package/dist/ui/chat/ChatInput.js +63 -0
  65. package/dist/ui/chat/ChatMessage.js +67 -0
  66. package/dist/ui/chat/ChatMessageList.js +45 -0
  67. package/dist/ui/chat/ChatThread.js +41 -0
  68. package/dist/ui/chat/index.js +34 -0
  69. package/dist/ui/common/AutoComplete.js +56 -0
  70. package/dist/ui/common/Button.js +83 -0
  71. package/dist/ui/common/ButtonGroup.js +58 -0
  72. package/dist/ui/common/Checkbox.js +30 -0
  73. package/dist/ui/common/CheckboxGroup.js +42 -0
  74. package/dist/ui/common/CokoLink.js +24 -0
  75. package/dist/ui/common/Collapse.js +14 -0
  76. package/dist/ui/common/DateParser.js +49 -0
  77. package/dist/ui/common/Divider.js +8 -0
  78. package/dist/ui/common/Empty.js +14 -0
  79. package/dist/ui/common/Form.js +216 -0
  80. package/dist/ui/common/FormSection.js +35 -0
  81. package/dist/ui/common/Headings.js +74 -0
  82. package/dist/ui/common/Input.js +72 -0
  83. package/dist/ui/common/InputNumber.js +54 -0
  84. package/dist/ui/common/InviteStatus.js +63 -0
  85. package/dist/ui/common/Layout.js +17 -0
  86. package/dist/ui/common/LinkWithoutStyles.js +12 -0
  87. package/dist/ui/common/List.js +390 -0
  88. package/dist/ui/common/Modal.js +17 -0
  89. package/dist/ui/common/Note.js +23 -0
  90. package/dist/ui/common/Page.js +33 -0
  91. package/dist/ui/common/Pagination.js +126 -0
  92. package/dist/ui/common/Popup.js +146 -0
  93. package/dist/ui/common/Radio.js +54 -0
  94. package/dist/ui/common/Result.js +8 -0
  95. package/dist/ui/common/Ribbon.js +54 -0
  96. package/dist/ui/common/Search.js +30 -0
  97. package/dist/ui/common/Select.js +148 -0
  98. package/dist/ui/common/Spin.js +87 -0
  99. package/dist/ui/common/Split.js +49 -0
  100. package/dist/ui/common/Status.js +53 -0
  101. package/dist/ui/common/Switch.js +47 -0
  102. package/dist/ui/common/Table.js +111 -0
  103. package/dist/ui/common/Tabs.js +8 -0
  104. package/dist/ui/common/TabsStyled.js +65 -0
  105. package/dist/ui/common/TextArea.js +29 -0
  106. package/dist/ui/common/Typography.js +9 -0
  107. package/dist/ui/common/VisuallyHiddenElement.js +17 -0
  108. package/dist/ui/common/_reusableStyles.js +14 -0
  109. package/dist/ui/common/index.js +341 -0
  110. package/dist/ui/index.js +49 -0
  111. package/package.json +114 -0
  112. package/scripts/coko-client-build.js +42 -0
  113. package/scripts/coko-client-build.sh +28 -0
  114. package/scripts/coko-client-dev.js +16 -0
  115. package/scripts/coko-client-dev.sh +28 -0
  116. package/scripts/env.sh +41 -0
  117. package/webpack/changes.md +20 -0
  118. package/webpack/index.ejs +15 -0
  119. package/webpack/noop.js +11 -0
  120. package/webpack/webpack.config.js +483 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Adam Hyde
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ Documentation can be found [here](https://coko-dev-docs.fly.dev/).
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _client = require("@apollo/client");
10
+ var _currentUserContext = require("../helpers/currentUserContext");
11
+ var _currentUserQuery = require("../helpers/currentUserQuery");
12
+ var _Spin = _interopRequireDefault(require("../ui/common/Spin"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ var AuthWrapper = function AuthWrapper(props) {
15
+ var LoadingComponent = props.loadingComponent,
16
+ currentUserQuery = props.currentUserQuery,
17
+ children = props.children;
18
+ var _useCurrentUser = (0, _currentUserContext.useCurrentUser)(),
19
+ currentUser = _useCurrentUser.currentUser,
20
+ setCurrentUser = _useCurrentUser.setCurrentUser;
21
+ var _useQuery = (0, _client.useQuery)(currentUserQuery, {
22
+ skip: currentUser,
23
+ onCompleted: function onCompleted(_ref) {
24
+ var fetchedUser = _ref.currentUser;
25
+ setCurrentUser(fetchedUser);
26
+ },
27
+ onError: function onError(error) {
28
+ // Make sure 'currentUser' is defined and null so that RequireAuth knows
29
+ // to clear the current (corrupted) token.
30
+ // Note on session states:
31
+ // * undefined: current user remains unresolved
32
+ // * null: current user is resolved but unauthorised or token invalid
33
+ setCurrentUser(null);
34
+ console.error(error);
35
+ }
36
+ }),
37
+ loading = _useQuery.loading;
38
+ (0, _client.useSubscription)(_currentUserQuery.USER_UPDATED_SUBSCRIPTION, {
39
+ skip: !currentUser,
40
+ variables: {
41
+ userId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.id
42
+ },
43
+ onData: function onData(_ref2) {
44
+ var data = _ref2.data;
45
+ var userUpdated = data.data.userUpdated;
46
+ setCurrentUser(userUpdated);
47
+ }
48
+ });
49
+ return /*#__PURE__*/_react["default"].createElement(LoadingComponent, {
50
+ spinning: loading && !currentUser
51
+ }, children);
52
+ };
53
+ AuthWrapper.propTypes = {
54
+ loadingComponent: _propTypes["default"].func,
55
+ currentUserQuery: _propTypes["default"].shape()
56
+ };
57
+ AuthWrapper.defaultProps = {
58
+ loadingComponent: _Spin["default"],
59
+ currentUserQuery: _currentUserQuery.CURRENT_USER
60
+ };
61
+ var _default = exports["default"] = AuthWrapper;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _reactRouterDom = require("react-router-dom");
11
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
12
+ var _toolkit = require("../toolkit");
13
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
17
+ var GlobalStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n html {\n height: 100%;\n }\n\n body {\n height: 100vh;\n overflow: hidden;\n }\n\n #root {\n height: 100%;\n }\n"])));
18
+ var PageLayout = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n height: 100%;\n"])));
19
+ var fadeInPage = (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n animation: ", " 0.5s;\n"])), _toolkit.fadeIn);
20
+ var padPage = (0, _styledComponents.css)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n padding: ", " ", " 50px ", ";\n"])), (0, _toolkit.grid)(2), (0, _toolkit.grid)(2), (0, _toolkit.grid)(2));
21
+ var Page = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n flex: auto;\n font-family: ", ";\n height: 100%;\n overflow-y: auto;\n\n /* stylelint-disable-next-line order/properties-alphabetical-order */\n ", "\n\n /* stylelint-disable-next-line no-descending-specificity */\n > div {\n ", "\n }\n"])), (0, _toolkit.th)('fontInterface'), function (props) {
22
+ return props.padPages && padPage;
23
+ }, function (props) {
24
+ return props.fadeInPages && fadeInPage;
25
+ });
26
+
27
+ // TO DO -- move global style to root when you export that from this client
28
+ var Layout = function Layout(_ref) {
29
+ var children = _ref.children,
30
+ className = _ref.className,
31
+ fadeInPages = _ref.fadeInPages,
32
+ padPages = _ref.padPages,
33
+ navComponent = _ref.navComponent;
34
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(GlobalStyle, null), /*#__PURE__*/_react["default"].createElement(PageLayout, {
35
+ className: className
36
+ }, /*#__PURE__*/_react["default"].createElement(_reactRouterDom.Route, {
37
+ component: navComponent
38
+ }), /*#__PURE__*/_react["default"].createElement(Page, {
39
+ fadeInPages: fadeInPages,
40
+ padPages: padPages
41
+ }, children)));
42
+ };
43
+ Layout.propTypes = {
44
+ fadeInPages: _propTypes["default"].bool,
45
+ padPages: _propTypes["default"].bool,
46
+ navComponent: _propTypes["default"].elementType
47
+ };
48
+ Layout.defaultProps = {
49
+ fadeInPages: true,
50
+ padPages: true,
51
+ navComponent: null
52
+ };
53
+ var _default = exports["default"] = Layout;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactRouterDom = require("react-router-dom");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _client = require("@apollo/client");
12
+ var _get = _interopRequireDefault(require("lodash/get"));
13
+ var _currentUserContext = require("../helpers/currentUserContext");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
+ var requiredFields = ['id', 'displayName', 'username', 'defaultIdentity.id', 'defaultIdentity.isVerified'];
17
+ var checkForRequiredFields = function checkForRequiredFields(user) {
18
+ var fieldsMissing = requiredFields.some(function (k) {
19
+ return typeof (0, _get["default"])(user, k) === 'undefined';
20
+ });
21
+ return !fieldsMissing;
22
+ };
23
+ var RequireAuth = function RequireAuth(props) {
24
+ var notAuthenticatedRedirectTo = props.notAuthenticatedRedirectTo,
25
+ cleanUp = props.cleanUp,
26
+ children = props.children,
27
+ requireIdentityVerification = props.requireIdentityVerification,
28
+ notVerifiedRedirectTo = props.notVerifiedRedirectTo;
29
+ var client = (0, _client.useApolloClient)();
30
+ var location = (0, _reactRouterDom.useLocation)();
31
+ var _useCurrentUser = (0, _currentUserContext.useCurrentUser)(),
32
+ currentUser = _useCurrentUser.currentUser,
33
+ setCurrentUser = _useCurrentUser.setCurrentUser;
34
+ (0, _react.useEffect)(function () {
35
+ if (currentUser) {
36
+ var requiredFieldsExist = checkForRequiredFields(currentUser);
37
+ if (!requiredFieldsExist) {
38
+ throw new Error("Your current user query is missing some required fields! Make sure that the query requests the following fields: ".concat(requiredFields.join(', ')));
39
+ }
40
+ }
41
+ }, [currentUser]);
42
+ if (!localStorage.getItem('token')) {
43
+ client.cache.reset();
44
+ cleanUp();
45
+ var redirectUrl = "".concat(notAuthenticatedRedirectTo, "?next=").concat(location.pathname);
46
+ return /*#__PURE__*/_react["default"].createElement(_reactRouterDom.Redirect, {
47
+ to: redirectUrl
48
+ });
49
+ }
50
+
51
+ // if currentUser is undefined the context hasn't been set yet
52
+ if (currentUser === undefined) {
53
+ return null;
54
+ }
55
+
56
+ // if currentUser is null it was set as a result of a failed authentication attempt (invalid token)
57
+ if (currentUser === null) {
58
+ setCurrentUser(null);
59
+ client.cache.reset();
60
+ localStorage.removeItem('token');
61
+ return /*#__PURE__*/_react["default"].createElement(_reactRouterDom.Redirect, {
62
+ to: "".concat(notAuthenticatedRedirectTo, "?next=").concat(location.pathname)
63
+ });
64
+ }
65
+ if (requireIdentityVerification) {
66
+ var _currentUser$defaultI;
67
+ var verified = currentUser === null || currentUser === void 0 || (_currentUser$defaultI = currentUser.defaultIdentity) === null || _currentUser$defaultI === void 0 ? void 0 : _currentUser$defaultI.isVerified;
68
+ if (!verified) return /*#__PURE__*/_react["default"].createElement(_reactRouterDom.Redirect, {
69
+ to: notVerifiedRedirectTo
70
+ });
71
+ }
72
+ return children;
73
+ };
74
+ RequireAuth.propTypes = {
75
+ cleanUp: _propTypes["default"].func,
76
+ requireIdentityVerification: _propTypes["default"].bool,
77
+ notVerifiedRedirectTo: _propTypes["default"].string,
78
+ notAuthenticatedRedirectTo: _propTypes["default"].string
79
+ };
80
+ RequireAuth.defaultProps = {
81
+ cleanUp: function cleanUp() {},
82
+ requireIdentityVerification: true,
83
+ notVerifiedRedirectTo: '/ensure-verified-login',
84
+ notAuthenticatedRedirectTo: '/login'
85
+ };
86
+ var _default = exports["default"] = RequireAuth;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Authenticate", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _AuthWrapper["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "PageLayout", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _PageLayout["default"];
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "RequireAuth", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _RequireAuth["default"];
22
+ }
23
+ });
24
+ var _PageLayout = _interopRequireDefault(require("./PageLayout"));
25
+ var _RequireAuth = _interopRequireDefault(require("./RequireAuth"));
26
+ var _AuthWrapper = _interopRequireDefault(require("./AuthWrapper"));
27
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ exports.stripTypenames = stripTypenames;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactRouterDom = require("react-router-dom");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _antd = require("antd");
12
+ var _styledComponents = require("styled-components");
13
+ var _styledNormalize = require("styled-normalize");
14
+ var _pickBy = _interopRequireDefault(require("lodash/pickBy"));
15
+ var _client = require("@apollo/client");
16
+ var _utilities = require("@apollo/client/utilities");
17
+ var _subscriptions = require("@apollo/client/link/subscriptions");
18
+ var _context = require("@apollo/client/link/context");
19
+ var _createUploadLink = _interopRequireDefault(require("apollo-upload-client/createUploadLink.mjs"));
20
+ var _dev = require("@apollo/client/dev");
21
+ var _graphqlWs = require("graphql-ws");
22
+ var _currentUserContext = require("./currentUserContext");
23
+ var _subscriptionManagerContext = require("./subscriptionManagerContext");
24
+ var _getUrl = require("./getUrl");
25
+ var _templateObject;
26
+ /* eslint-disable no-param-reassign */
27
+ // import AuthWrapper from '../components/AuthWrapper'
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
29
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
30
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
31
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
32
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
33
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
34
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
35
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
36
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
37
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
38
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
39
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
40
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
41
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
42
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
43
+ if (process.env.NODE_ENV !== 'production') {
44
+ (0, _dev.loadDevMessages)();
45
+ (0, _dev.loadErrorMessages)();
46
+ }
47
+ var replaceHttpWithWs = function replaceHttpWithWs(url) {
48
+ var wsUrl = url.replace(/^http:/, 'ws:');
49
+ wsUrl = wsUrl.replace(/^https:/, 'wss:');
50
+ return wsUrl;
51
+ };
52
+ var pxToNumConverter = function pxToNumConverter(value) {
53
+ if (typeof value === 'string') {
54
+ if (value.slice(-2) === 'px') return parseInt(value.slice(0, -2), 10);
55
+ }
56
+ return value;
57
+ };
58
+ var GlobalStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n body {\n background-color: ", ";\n color: ", ";\n font-family: ", ", sans-serif;\n font-size: ", ";\n line-height: ", ";\n\n * {\n box-sizing: border-box;\n }\n }\n"])), function (props) {
59
+ return props.theme.colorBackground;
60
+ }, function (props) {
61
+ return props.theme.colorText;
62
+ }, function (props) {
63
+ return props.theme.fontInterface;
64
+ }, function (props) {
65
+ return props.theme.fontSizeBase;
66
+ }, function (props) {
67
+ return props.theme.lineHeightBase;
68
+ });
69
+
70
+ // See https://github.com/apollographql/apollo-feature-requests/issues/6#issuecomment-465305186
71
+ function stripTypenames(obj) {
72
+ Object.keys(obj).forEach(function (property) {
73
+ if (obj[property] !== null && _typeof(obj[property]) === 'object' && !(obj[property] instanceof File)) {
74
+ delete obj.property;
75
+ var newData = stripTypenames(obj[property], '__typename');
76
+ obj[property] = newData;
77
+ } else if (property === '__typename') {
78
+ delete obj[property];
79
+ }
80
+ });
81
+ return obj;
82
+ }
83
+
84
+ // Construct an ApolloClient. If a function is passed as the first argument,
85
+ // it will be called with the default client config as an argument, and should
86
+ // return the desired config.
87
+ var makeApolloClient = function makeApolloClient(makeConfig) {
88
+ var webSocketUrl = "".concat(replaceHttpWithWs(_getUrl.serverUrl), "/subscriptions");
89
+ var uploadLink = (0, _createUploadLink["default"])({
90
+ uri: "".concat(_getUrl.serverUrl, "/graphql"),
91
+ headers: {
92
+ 'Apollo-Require-Preflight': 'true'
93
+ }
94
+ });
95
+ var authLink = (0, _context.setContext)(function (_, _ref) {
96
+ var headers = _ref.headers;
97
+ var token = localStorage.getItem('token');
98
+ return {
99
+ headers: _objectSpread(_objectSpread({}, headers), {}, {
100
+ authorization: token ? "Bearer ".concat(token) : ''
101
+ })
102
+ };
103
+ });
104
+ var removeTypename = new _client.ApolloLink(function (operation, forward) {
105
+ if (operation.variables) {
106
+ operation.variables = stripTypenames(operation.variables);
107
+ }
108
+ return forward(operation);
109
+ });
110
+ var link = _client.ApolloLink.from([removeTypename, authLink, uploadLink]);
111
+ var subscriptionsLogMessage = '[subscriptions-ws]';
112
+ var wsLink = new _subscriptions.GraphQLWsLink((0, _graphqlWs.createClient)({
113
+ url: webSocketUrl,
114
+ retryAttempts: Infinity,
115
+ connectionParams: {
116
+ authToken: localStorage.getItem('token')
117
+ },
118
+ shouldRetry: function shouldRetry() {
119
+ /* eslint-disable-next-line no-console */
120
+ console.log("".concat(subscriptionsLogMessage, " Attempting to reconnect..."));
121
+ return true;
122
+ },
123
+ on: {
124
+ connecting: function connecting() {
125
+ /* eslint-disable-next-line no-console */
126
+ console.log("".concat(subscriptionsLogMessage, " Connecting..."));
127
+ },
128
+ connected: function connected(socket) {
129
+ /* eslint-disable-next-line no-console */
130
+ console.log("".concat(subscriptionsLogMessage, " Connected."));
131
+ },
132
+ closed: function closed(event) {
133
+ console.error("".concat(subscriptionsLogMessage, " Disconnected:"), event);
134
+ }
135
+ }
136
+ }));
137
+ var splitLink = (0, _client.split)(function (_ref2) {
138
+ var query = _ref2.query;
139
+ var _getMainDefinition = (0, _utilities.getMainDefinition)(query),
140
+ kind = _getMainDefinition.kind,
141
+ operation = _getMainDefinition.operation;
142
+ return kind === 'OperationDefinition' && operation === 'subscription';
143
+ }, wsLink, link);
144
+ var config = {
145
+ link: splitLink,
146
+ cache: new _client.InMemoryCache()
147
+ };
148
+ return new _client.ApolloClient(makeConfig ? makeConfig(config) : config);
149
+ };
150
+ var Root = function Root(props) {
151
+ var makeApolloConfig = props.makeApolloConfig,
152
+ routes = props.routes,
153
+ theme = props.theme;
154
+ var _useState = (0, _react.useState)(),
155
+ _useState2 = _slicedToArray(_useState, 2),
156
+ currentUser = _useState2[0],
157
+ setCurrentUser = _useState2[1];
158
+ var client = (0, _react.useMemo)(function () {
159
+ return makeApolloClient(makeApolloConfig);
160
+ }, [currentUser]);
161
+ var mapper = {
162
+ borderRadius: pxToNumConverter(theme.borderRadius),
163
+ colorBgBase: theme.colorBackground,
164
+ colorTextBase: theme.colorText,
165
+ fontFamily: theme.fontInterface,
166
+ fontSize: pxToNumConverter(theme.fontSizeBase),
167
+ fontSizeHeading1: pxToNumConverter(theme.fontSizeHeading1),
168
+ fontSizeHeading2: pxToNumConverter(theme.fontSizeHeading2),
169
+ fontSizeHeading3: pxToNumConverter(theme.fontSizeHeading3),
170
+ fontSizeHeading4: pxToNumConverter(theme.fontSizeHeading4),
171
+ fontSizeHeading5: pxToNumConverter(theme.fontSizeHeading5),
172
+ fontSizeHeading6: pxToNumConverter(theme.fontSizeHeading6),
173
+ lineType: theme.borderStyle,
174
+ lineWidth: pxToNumConverter(theme.borderWidth),
175
+ motionUnit: theme.transitionDuration,
176
+ sizeUnit: pxToNumConverter(theme.gridUnit)
177
+ };
178
+ var filtered = (0, _pickBy["default"])(mapper, function (v) {
179
+ return !!v;
180
+ });
181
+ var mappedAntTheme = {
182
+ token: _objectSpread(_objectSpread({}, theme), filtered)
183
+ };
184
+ return /*#__PURE__*/_react["default"].createElement(_client.ApolloProvider, {
185
+ client: client
186
+ }, /*#__PURE__*/_react["default"].createElement(_subscriptionManagerContext.SubscriptionManagerProvider, null, /*#__PURE__*/_react["default"].createElement(_reactRouterDom.BrowserRouter, null, /*#__PURE__*/_react["default"].createElement(_currentUserContext.CurrentUserContext.Provider, {
187
+ value: {
188
+ currentUser: currentUser,
189
+ setCurrentUser: setCurrentUser
190
+ }
191
+ }, /*#__PURE__*/_react["default"].createElement(_antd.ConfigProvider, {
192
+ theme: mappedAntTheme
193
+ }, /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
194
+ theme: theme
195
+ }, /*#__PURE__*/_react["default"].createElement(_styledNormalize.Normalize, null), /*#__PURE__*/_react["default"].createElement(GlobalStyle, null), routes))))));
196
+ };
197
+ Root.propTypes = {
198
+ makeApolloConfig: _propTypes["default"].func,
199
+ routes: _propTypes["default"].node.isRequired,
200
+ /* eslint-disable-next-line react/forbid-prop-types */
201
+ theme: _propTypes["default"].object.isRequired
202
+ };
203
+ Root.defaultProps = {
204
+ makeApolloConfig: null
205
+ };
206
+ var _default = exports["default"] = Root;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
12
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
13
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
+ var defaultOptions = {
17
+ "public": false
18
+ };
19
+ var SubscriptionManager = /*#__PURE__*/function () {
20
+ function SubscriptionManager() {
21
+ _classCallCheck(this, SubscriptionManager);
22
+ this.subscriptions = new Map();
23
+ }
24
+ return _createClass(SubscriptionManager, [{
25
+ key: "add",
26
+ value: function add(key, subscription) {
27
+ var optionOverrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
28
+ if (!this.subscriptions.has(key)) {
29
+ this.subscriptions.set(key, {
30
+ subscription: subscription,
31
+ options: _objectSpread(_objectSpread({}, defaultOptions), optionOverrides)
32
+ });
33
+ }
34
+ }
35
+ }, {
36
+ key: "remove",
37
+ value: function remove(key) {
38
+ if (this.subscriptions.has(key)) {
39
+ this.subscriptions.get(key).subscription.unsubscribe();
40
+ this.subscriptions["delete"](key);
41
+ }
42
+ }
43
+ }, {
44
+ key: "clear",
45
+ value: function clear() {
46
+ this.subscriptions.forEach(function (entry) {
47
+ return entry.subscription.unsubscribe();
48
+ });
49
+ this.subscriptions.clear();
50
+ }
51
+ }, {
52
+ key: "clearNonPublic",
53
+ value: function clearNonPublic() {
54
+ var _this = this;
55
+ this.subscriptions.forEach(function (entry, key) {
56
+ if (!entry.options["public"]) _this.remove(key);
57
+ });
58
+ }
59
+ }]);
60
+ }();
61
+ var _default = exports["default"] = SubscriptionManager;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCurrentUser = exports.CurrentUserContext = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ var CurrentUserContext = exports.CurrentUserContext = /*#__PURE__*/_react["default"].createContext({});
10
+ var useCurrentUser = exports.useCurrentUser = function useCurrentUser() {
11
+ return _react["default"].useContext(CurrentUserContext);
12
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.USER_UPDATED_SUBSCRIPTION = exports.CURRENT_USER = void 0;
7
+ var _client = require("@apollo/client");
8
+ var _templateObject, _templateObject2;
9
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
10
+ var CURRENT_USER = exports.CURRENT_USER = (0, _client.gql)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query CurrentUser {\n currentUser {\n id\n displayName\n username\n teams {\n id\n role\n objectId\n global\n members(currentUserOnly: true) {\n id\n user {\n id\n }\n status\n }\n }\n isActive\n defaultIdentity {\n id\n isVerified\n }\n identities {\n id\n provider\n hasValidRefreshToken\n }\n }\n }\n"])));
11
+ var USER_UPDATED_SUBSCRIPTION = exports.USER_UPDATED_SUBSCRIPTION = (0, _client.gql)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n subscription OnUserUpdated($userId: ID!) {\n userUpdated(userId: $userId) {\n id\n displayName\n username\n # roles\n teams {\n id\n role\n objectId\n global\n members(currentUserOnly: true) {\n id\n user {\n id\n }\n status\n }\n }\n isActive\n defaultIdentity {\n id\n isVerified\n }\n identities {\n id\n provider\n hasValidRefreshToken\n }\n }\n }\n"])));
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _window$env, _window$env2, _window$env3;
4
+ var removeTrailingSlashes = function removeTrailingSlashes(url) {
5
+ return url.replace(/\/+$/, '');
6
+ };
7
+ var sanitizeUrl = function sanitizeUrl(url) {
8
+ if (!url) return null;
9
+ return removeTrailingSlashes(url);
10
+ };
11
+ var serverUrl = sanitizeUrl(((_window$env = window.env) === null || _window$env === void 0 ? void 0 : _window$env.serverUrl) || process.env.SERVER_URL);
12
+ var webSocketServerUrl = sanitizeUrl(((_window$env2 = window.env) === null || _window$env2 === void 0 ? void 0 : _window$env2.websocketServerUrl) || process.env.WEBSOCKET_SERVER_URL);
13
+ var yjsWebSocketServerUrl = sanitizeUrl(((_window$env3 = window.env) === null || _window$env3 === void 0 ? void 0 : _window$env3.yjsWebsocketServerUrl) || process.env.YJS_WEBSOCKET_SERVER_URL);
14
+ module.exports = {
15
+ serverUrl: serverUrl,
16
+ webSocketServerUrl: webSocketServerUrl,
17
+ yjsWebSocketServerUrl: yjsWebSocketServerUrl
18
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ var Sentry = _interopRequireWildcard(require("@sentry/react"));
5
+ var _getUrl = require("./getUrl");
6
+ var _window$env, _window$env2;
7
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
8
+ var dsn = ((_window$env = window.env) === null || _window$env === void 0 || (_window$env = _window$env.sentry) === null || _window$env === void 0 ? void 0 : _window$env.dsn) || process.env.SENTRY_DSN;
9
+ var environment = ((_window$env2 = window.env) === null || _window$env2 === void 0 || (_window$env2 = _window$env2.sentry) === null || _window$env2 === void 0 ? void 0 : _window$env2.environment) || process.env.SENTRY_ENVIRONMENT;
10
+ if (dsn && environment) {
11
+ Sentry.init({
12
+ dsn: dsn,
13
+ environment: environment,
14
+ sendDefaultPii: true,
15
+ integrations: [Sentry.consoleLoggingIntegration({
16
+ levels: ['log', 'warn', 'error']
17
+ }), Sentry.browserTracingIntegration(), Sentry.replayIntegration()],
18
+ enableLogs: true,
19
+ replaysSessionSampleRate: 0.1,
20
+ replaysOnErrorSampleRate: 1.0,
21
+ tracePropagationTargets: [_getUrl.serverUrl]
22
+
23
+ // debug: true,
24
+ });
25
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ require("./sentry");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactDom = _interopRequireDefault(require("react-dom"));
10
+ var _history = require("history");
11
+ var _Root = _interopRequireDefault(require("./Root"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ var history = (0, _history.createBrowserHistory)();
14
+ var rootEl = document.getElementById('root');
15
+ var startClient = function startClient(routes, theme) {
16
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
17
+ var makeApolloConfig = options.makeApolloConfig;
18
+ _reactDom["default"].render(/*#__PURE__*/_react["default"].createElement(_Root["default"], {
19
+ history: history,
20
+ makeApolloConfig: makeApolloConfig,
21
+ routes: routes,
22
+ theme: theme
23
+ }), rootEl);
24
+ };
25
+ var _default = exports["default"] = startClient;