@verdaccio/ui-components 3.0.0-next-7.4 → 3.0.0-next-7.5
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/CHANGELOG.md +6 -0
- package/build/AppTest/AppRoute.js +34 -0
- package/build/AppTest/pages/Front/Home.js +9 -0
- package/build/AppTest/pages/Front/index.js +14 -0
- package/build/AppTest/pages/Version/Version.js +34 -0
- package/build/AppTest/pages/Version/index.js +14 -0
- package/build/components/Forbidden/Forbidden.js +75 -0
- package/build/components/Forbidden/index.js +14 -0
- package/build/components/NotFound/NotFound.js +16 -14
- package/build/index.js +8 -0
- package/build/src/AppTest/App.stories.d.ts +8 -0
- package/build/src/AppTest/AppRoute.d.ts +3 -0
- package/build/src/AppTest/pages/Front/Home.d.ts +2 -0
- package/build/src/AppTest/pages/Front/index.d.ts +1 -0
- package/build/src/AppTest/pages/Version/Version.d.ts +3 -0
- package/build/src/AppTest/pages/Version/index.d.ts +1 -0
- package/build/src/components/Forbidden/Forbidden.d.ts +3 -0
- package/build/src/components/Forbidden/Forbidden.test.d.ts +1 -0
- package/build/src/components/Forbidden/index.d.ts +1 -0
- package/build/src/index.d.ts +1 -0
- package/build/src/sections/Detail/Detail.stories.d.ts +1 -0
- package/build/src/store/models/manifest.d.ts +11 -0
- package/build/store/api.js +12 -6
- package/build/store/models/manifest.js +20 -2
- package/package.json +1 -1
- package/src/AppTest/App.stories.tsx +32 -0
- package/src/AppTest/AppRoute.tsx +42 -0
- package/src/AppTest/pages/Front/Home.ts +3 -0
- package/src/AppTest/pages/Front/index.ts +1 -0
- package/src/AppTest/pages/Version/Version.tsx +28 -0
- package/src/AppTest/pages/Version/index.ts +1 -0
- package/src/components/Forbidden/Forbidden.test.tsx +38 -0
- package/src/components/Forbidden/Forbidden.tsx +56 -0
- package/src/components/Forbidden/index.ts +1 -0
- package/src/components/NotFound/NotFound.tsx +6 -5
- package/src/components/NotFound/Notfound.test.tsx +6 -3
- package/src/index.ts +1 -0
- package/src/sections/Detail/Detail.stories.tsx +10 -0
- package/src/store/api.test.ts +3 -2
- package/src/store/api.ts +13 -6
- package/src/store/models/manifest.ts +19 -1
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
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 _reactRouterDom = require("react-router-dom");
|
|
9
|
+
var _index = require("../index");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
const VersionPage = (0, _index.loadable)(() => Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "Version" */'./pages/Version'))));
|
|
14
|
+
const Front = (0, _index.loadable)(() => Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "Home" */'./pages/Front'))));
|
|
15
|
+
const AppRoute = () => {
|
|
16
|
+
return /*#__PURE__*/_react.default.createElement(_reactRouterDom.Switch, null, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
17
|
+
exact: true,
|
|
18
|
+
path: _index.Route.ROOT
|
|
19
|
+
}, /*#__PURE__*/_react.default.createElement(Front, null)), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
20
|
+
exact: true,
|
|
21
|
+
path: _index.Route.PACKAGE
|
|
22
|
+
}, /*#__PURE__*/_react.default.createElement(_index.VersionProvider, null, /*#__PURE__*/_react.default.createElement(VersionPage, null))), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
23
|
+
exact: true,
|
|
24
|
+
path: _index.Route.PACKAGE_VERSION
|
|
25
|
+
}, /*#__PURE__*/_react.default.createElement(_index.VersionProvider, null, /*#__PURE__*/_react.default.createElement(VersionPage, null))), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
26
|
+
exact: true,
|
|
27
|
+
path: _index.Route.SCOPE_PACKAGE_VERSION
|
|
28
|
+
}, /*#__PURE__*/_react.default.createElement(_index.VersionProvider, null, /*#__PURE__*/_react.default.createElement(VersionPage, null))), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
29
|
+
exact: true,
|
|
30
|
+
path: _index.Route.SCOPE_PACKAGE
|
|
31
|
+
}, /*#__PURE__*/_react.default.createElement(_index.VersionProvider, null, /*#__PURE__*/_react.default.createElement(VersionPage, null))), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, null, /*#__PURE__*/_react.default.createElement(_index.NotFound, null)));
|
|
32
|
+
};
|
|
33
|
+
var _default = exports.default = AppRoute;
|
|
34
|
+
//# sourceMappingURL=AppRoute.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Home.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _Home = _interopRequireDefault(require("./Home"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
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 _reactRedux = require("react-redux");
|
|
9
|
+
var _Forbidden = _interopRequireDefault(require("../../../components/Forbidden"));
|
|
10
|
+
var _index = require("../../../index");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
const Version = () => {
|
|
13
|
+
const manifestStore = (0, _reactRedux.useSelector)(state => state.manifest);
|
|
14
|
+
const isLoading = (0, _reactRedux.useSelector)(state => {
|
|
15
|
+
var _state$loading;
|
|
16
|
+
return state === null || state === void 0 ? void 0 : (_state$loading = state.loading) === null || _state$loading === void 0 ? void 0 : _state$loading.models.manifest;
|
|
17
|
+
});
|
|
18
|
+
if (isLoading) {
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_index.Loading, null);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// @ts-expect-error
|
|
23
|
+
if (manifestStore.forbidden) {
|
|
24
|
+
return /*#__PURE__*/_react.default.createElement(_Forbidden.default, null);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// @ts-expect-error
|
|
28
|
+
if (manifestStore.hasNotBeenFound) {
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_index.NotFound, null);
|
|
30
|
+
}
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_index.VersionLayout, null);
|
|
32
|
+
};
|
|
33
|
+
var _default = exports.default = Version;
|
|
34
|
+
//# sourceMappingURL=Version.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Version.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _Version = _interopRequireDefault(require("./Version"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _base = _interopRequireDefault(require("@emotion/styled/base"));
|
|
8
|
+
var _Lock = _interopRequireDefault(require("@mui/icons-material/Lock"));
|
|
9
|
+
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
10
|
+
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _reactI18next = require("react-i18next");
|
|
13
|
+
var _reactRouterDom = require("react-router-dom");
|
|
14
|
+
var _Heading = _interopRequireDefault(require("../Heading"));
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /* eslint-disable react/forbid-component-props */ /* eslint-disable verdaccio/jsx-no-style */
|
|
19
|
+
const Foebidden = () => {
|
|
20
|
+
const history = (0, _reactRouterDom.useHistory)();
|
|
21
|
+
const {
|
|
22
|
+
t
|
|
23
|
+
} = (0, _reactI18next.useTranslation)();
|
|
24
|
+
const handleGoHome = (0, _react.useCallback)(() => {
|
|
25
|
+
history.push('/');
|
|
26
|
+
}, [history]);
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
28
|
+
alignItems: "center",
|
|
29
|
+
"data-testid": "404",
|
|
30
|
+
display: "flex",
|
|
31
|
+
flexDirection: "column",
|
|
32
|
+
flexGrow: 1,
|
|
33
|
+
justifyContent: "center",
|
|
34
|
+
p: 2
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_Lock.default, {
|
|
36
|
+
color: "primary",
|
|
37
|
+
style: {
|
|
38
|
+
fontSize: 236
|
|
39
|
+
}
|
|
40
|
+
})), /*#__PURE__*/_react.default.createElement(StyledHeading, {
|
|
41
|
+
className: "not-found-text",
|
|
42
|
+
variant: "h4"
|
|
43
|
+
}, t('error.401.sorry-no-access')), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
44
|
+
"data-testid": "not-found-go-to-home-button",
|
|
45
|
+
onClick: handleGoHome,
|
|
46
|
+
variant: "contained"
|
|
47
|
+
}, t('button.go-to-the-home-page')));
|
|
48
|
+
};
|
|
49
|
+
var _default = exports.default = Foebidden;
|
|
50
|
+
const Container = /*#__PURE__*/(0, _base.default)('div', process.env.NODE_ENV === "production" ? {
|
|
51
|
+
target: "e1p1nuky1"
|
|
52
|
+
} : {
|
|
53
|
+
target: "e1p1nuky1",
|
|
54
|
+
label: "Container"
|
|
55
|
+
})(process.env.NODE_ENV === "production" ? {
|
|
56
|
+
name: "9th5i",
|
|
57
|
+
styles: "margin:0 auto"
|
|
58
|
+
} : {
|
|
59
|
+
name: "9th5i",
|
|
60
|
+
styles: "margin:0 auto",
|
|
61
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0ZvcmJpZGRlbi9Gb3JiaWRkZW4udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdEa0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvRm9yYmlkZGVuL0ZvcmJpZGRlbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mb3JiaWQtY29tcG9uZW50LXByb3BzICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHZlcmRhY2Npby9qc3gtbm8tc3R5bGUgKi9cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBMb2NrSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0xvY2snO1xuaW1wb3J0IEJveCBmcm9tICdAbXVpL21hdGVyaWFsL0JveCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5cbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IEhlYWRpbmcgZnJvbSAnLi4vSGVhZGluZyc7XG5cbmNvbnN0IEZvZWJpZGRlbjogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG5cbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoaXN0b3J5LnB1c2goJy8nKTtcbiAgfSwgW2hpc3RvcnldKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCI0MDRcIlxuICAgICAgZGlzcGxheT1cImZsZXhcIlxuICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICBmbGV4R3Jvdz17MX1cbiAgICAgIGp1c3RpZnlDb250ZW50PVwiY2VudGVyXCJcbiAgICAgIHA9ezJ9XG4gICAgPlxuICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgPExvY2tJY29uIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPXt7IGZvbnRTaXplOiAyMzYgfX0gLz5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgICAgPFN0eWxlZEhlYWRpbmcgY2xhc3NOYW1lPVwibm90LWZvdW5kLXRleHRcIiB2YXJpYW50PVwiaDRcIj5cbiAgICAgICAge3QoJ2Vycm9yLjQwMS5zb3JyeS1uby1hY2Nlc3MnKX1cbiAgICAgIDwvU3R5bGVkSGVhZGluZz5cbiAgICAgIDxCdXR0b24gZGF0YS10ZXN0aWQ9XCJub3QtZm91bmQtZ28tdG8taG9tZS1idXR0b25cIiBvbkNsaWNrPXtoYW5kbGVHb0hvbWV9IHZhcmlhbnQ9XCJjb250YWluZWRcIj5cbiAgICAgICAge3QoJ2J1dHRvbi5nby10by10aGUtaG9tZS1wYWdlJyl9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvZWJpZGRlbjtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkKCdkaXYnKSh7XG4gIG1hcmdpbjogJzAgYXV0bycsXG59KTtcblxuY29uc3QgU3R5bGVkSGVhZGluZyA9IHN0eWxlZChIZWFkaW5nKTx7IHRoZW1lPzogVGhlbWUgfT4oKHsgdGhlbWUgfSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lPy5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZT8ucGFsZXR0ZS5wcmltYXJ5Lm1haW4gOiB0aGVtZT8ucGFsZXR0ZS53aGl0ZSxcbiAgbWFyZ2luQm90dG9tOiAxNixcbn0pKTtcbiJdfQ== */",
|
|
62
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
63
|
+
});
|
|
64
|
+
const StyledHeading = /*#__PURE__*/(0, _base.default)(_Heading.default, process.env.NODE_ENV === "production" ? {
|
|
65
|
+
target: "e1p1nuky0"
|
|
66
|
+
} : {
|
|
67
|
+
target: "e1p1nuky0",
|
|
68
|
+
label: "StyledHeading"
|
|
69
|
+
})(({
|
|
70
|
+
theme
|
|
71
|
+
}) => ({
|
|
72
|
+
color: (theme === null || theme === void 0 ? void 0 : theme.palette.mode) === 'light' ? theme === null || theme === void 0 ? void 0 : theme.palette.primary.main : theme === null || theme === void 0 ? void 0 : theme.palette.white,
|
|
73
|
+
marginBottom: 16
|
|
74
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0ZvcmJpZGRlbi9Gb3JiaWRkZW4udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9Ec0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvRm9yYmlkZGVuL0ZvcmJpZGRlbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mb3JiaWQtY29tcG9uZW50LXByb3BzICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHZlcmRhY2Npby9qc3gtbm8tc3R5bGUgKi9cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBMb2NrSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0xvY2snO1xuaW1wb3J0IEJveCBmcm9tICdAbXVpL21hdGVyaWFsL0JveCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5cbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IEhlYWRpbmcgZnJvbSAnLi4vSGVhZGluZyc7XG5cbmNvbnN0IEZvZWJpZGRlbjogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG5cbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBoaXN0b3J5LnB1c2goJy8nKTtcbiAgfSwgW2hpc3RvcnldKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCI0MDRcIlxuICAgICAgZGlzcGxheT1cImZsZXhcIlxuICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICBmbGV4R3Jvdz17MX1cbiAgICAgIGp1c3RpZnlDb250ZW50PVwiY2VudGVyXCJcbiAgICAgIHA9ezJ9XG4gICAgPlxuICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgPExvY2tJY29uIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPXt7IGZvbnRTaXplOiAyMzYgfX0gLz5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgICAgPFN0eWxlZEhlYWRpbmcgY2xhc3NOYW1lPVwibm90LWZvdW5kLXRleHRcIiB2YXJpYW50PVwiaDRcIj5cbiAgICAgICAge3QoJ2Vycm9yLjQwMS5zb3JyeS1uby1hY2Nlc3MnKX1cbiAgICAgIDwvU3R5bGVkSGVhZGluZz5cbiAgICAgIDxCdXR0b24gZGF0YS10ZXN0aWQ9XCJub3QtZm91bmQtZ28tdG8taG9tZS1idXR0b25cIiBvbkNsaWNrPXtoYW5kbGVHb0hvbWV9IHZhcmlhbnQ9XCJjb250YWluZWRcIj5cbiAgICAgICAge3QoJ2J1dHRvbi5nby10by10aGUtaG9tZS1wYWdlJyl9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvZWJpZGRlbjtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkKCdkaXYnKSh7XG4gIG1hcmdpbjogJzAgYXV0bycsXG59KTtcblxuY29uc3QgU3R5bGVkSGVhZGluZyA9IHN0eWxlZChIZWFkaW5nKTx7IHRoZW1lPzogVGhlbWUgfT4oKHsgdGhlbWUgfSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lPy5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZT8ucGFsZXR0ZS5wcmltYXJ5Lm1haW4gOiB0aGVtZT8ucGFsZXR0ZS53aGl0ZSxcbiAgbWFyZ2luQm90dG9tOiAxNixcbn0pKTtcbiJdfQ== */");
|
|
75
|
+
//# sourceMappingURL=Forbidden.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Forbidden.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _Forbidden = _interopRequireDefault(require("./Forbidden"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _base = _interopRequireDefault(require("@emotion/styled/base"));
|
|
8
|
+
var _FolderOff = _interopRequireDefault(require("@mui/icons-material/FolderOff"));
|
|
8
9
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
9
10
|
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _reactI18next = require("react-i18next");
|
|
12
13
|
var _reactRouterDom = require("react-router-dom");
|
|
13
14
|
var _Heading = _interopRequireDefault(require("../Heading"));
|
|
14
|
-
var _package = _interopRequireDefault(require("./img/package.svg"));
|
|
15
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
-
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
18
|
+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /* eslint-disable verdaccio/jsx-no-style */
|
|
19
19
|
const NotFound = () => {
|
|
20
20
|
const history = (0, _reactRouterDom.useHistory)();
|
|
21
21
|
const {
|
|
@@ -32,10 +32,12 @@ const NotFound = () => {
|
|
|
32
32
|
flexGrow: 1,
|
|
33
33
|
justifyContent: "center",
|
|
34
34
|
p: 2
|
|
35
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
}, /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_FolderOff.default, {
|
|
36
|
+
color: "primary",
|
|
37
|
+
style: {
|
|
38
|
+
fontSize: 236
|
|
39
|
+
}
|
|
40
|
+
})), /*#__PURE__*/_react.default.createElement(StyledHeading, {
|
|
39
41
|
className: "not-found-text",
|
|
40
42
|
variant: "h4"
|
|
41
43
|
}, t('error.404.sorry-we-could-not-find-it')), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
@@ -45,18 +47,18 @@ const NotFound = () => {
|
|
|
45
47
|
}, t('button.go-to-the-home-page')));
|
|
46
48
|
};
|
|
47
49
|
var _default = exports.default = NotFound;
|
|
48
|
-
const
|
|
50
|
+
const Container = /*#__PURE__*/(0, _base.default)('div', process.env.NODE_ENV === "production" ? {
|
|
49
51
|
target: "e85lhfw1"
|
|
50
52
|
} : {
|
|
51
53
|
target: "e85lhfw1",
|
|
52
|
-
label: "
|
|
54
|
+
label: "Container"
|
|
53
55
|
})(process.env.NODE_ENV === "production" ? {
|
|
54
|
-
name: "
|
|
55
|
-
styles: "
|
|
56
|
+
name: "9th5i",
|
|
57
|
+
styles: "margin:0 auto"
|
|
56
58
|
} : {
|
|
57
|
-
name: "
|
|
58
|
-
styles: "
|
|
59
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
59
|
+
name: "9th5i",
|
|
60
|
+
styles: "margin:0 auto",
|
|
61
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2Q2tCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZlcmRhY2Npby9qc3gtbm8tc3R5bGUgKi9cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBGb2xkZXJPZmZJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvRm9sZGVyT2ZmJztcbmltcG9ydCBCb3ggZnJvbSAnQG11aS9tYXRlcmlhbC9Cb3gnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gJy4uLy4uLyc7XG5pbXBvcnQgSGVhZGluZyBmcm9tICcuLi9IZWFkaW5nJztcblxuY29uc3QgTm90Rm91bmQ6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGhpc3RvcnkucHVzaCgnLycpO1xuICB9LCBbaGlzdG9yeV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkYXRhLXRlc3RpZD1cIjQwNFwiXG4gICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgIGZsZXhHcm93PXsxfVxuICAgICAganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIlxuICAgICAgcD17Mn1cbiAgICA+XG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8Rm9sZGVyT2ZmSWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT17eyBmb250U2l6ZTogMjM2IH19IC8+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICAgIDxTdHlsZWRIZWFkaW5nIGNsYXNzTmFtZT1cIm5vdC1mb3VuZC10ZXh0XCIgdmFyaWFudD1cImg0XCI+XG4gICAgICAgIHt0KCdlcnJvci40MDQuc29ycnktd2UtY291bGQtbm90LWZpbmQtaXQnKX1cbiAgICAgIDwvU3R5bGVkSGVhZGluZz5cbiAgICAgIDxCdXR0b24gZGF0YS10ZXN0aWQ9XCJub3QtZm91bmQtZ28tdG8taG9tZS1idXR0b25cIiBvbkNsaWNrPXtoYW5kbGVHb0hvbWV9IHZhcmlhbnQ9XCJjb250YWluZWRcIj5cbiAgICAgICAge3QoJ2J1dHRvbi5nby10by10aGUtaG9tZS1wYWdlJyl9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vdEZvdW5kO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQoJ2RpdicpKHtcbiAgbWFyZ2luOiAnMCBhdXRvJyxcbn0pO1xuXG5jb25zdCBTdHlsZWRIZWFkaW5nID0gc3R5bGVkKEhlYWRpbmcpPHsgdGhlbWU/OiBUaGVtZSB9PigoeyB0aGVtZSB9KSA9PiAoe1xuICBjb2xvcjogdGhlbWU/LnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lPy5wYWxldHRlLnByaW1hcnkubWFpbiA6IHRoZW1lPy5wYWxldHRlLndoaXRlLFxuICBtYXJnaW5Cb3R0b206IDE2LFxufSkpO1xuIl19 */",
|
|
60
62
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
61
63
|
});
|
|
62
64
|
const StyledHeading = /*#__PURE__*/(0, _base.default)(_Heading.default, process.env.NODE_ENV === "production" ? {
|
|
@@ -69,5 +71,5 @@ const StyledHeading = /*#__PURE__*/(0, _base.default)(_Heading.default, process.
|
|
|
69
71
|
}) => ({
|
|
70
72
|
color: (theme === null || theme === void 0 ? void 0 : theme.palette.mode) === 'light' ? theme === null || theme === void 0 ? void 0 : theme.palette.primary.main : theme === null || theme === void 0 ? void 0 : theme.palette.white,
|
|
71
73
|
marginBottom: 16
|
|
72
|
-
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
74
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRHNCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL05vdEZvdW5kL05vdEZvdW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHZlcmRhY2Npby9qc3gtbm8tc3R5bGUgKi9cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBGb2xkZXJPZmZJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvRm9sZGVyT2ZmJztcbmltcG9ydCBCb3ggZnJvbSAnQG11aS9tYXRlcmlhbC9Cb3gnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5pbXBvcnQgeyBUaGVtZSB9IGZyb20gJy4uLy4uLyc7XG5pbXBvcnQgSGVhZGluZyBmcm9tICcuLi9IZWFkaW5nJztcblxuY29uc3QgTm90Rm91bmQ6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGhpc3RvcnkucHVzaCgnLycpO1xuICB9LCBbaGlzdG9yeV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkYXRhLXRlc3RpZD1cIjQwNFwiXG4gICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgIGZsZXhHcm93PXsxfVxuICAgICAganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIlxuICAgICAgcD17Mn1cbiAgICA+XG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8Rm9sZGVyT2ZmSWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT17eyBmb250U2l6ZTogMjM2IH19IC8+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICAgIDxTdHlsZWRIZWFkaW5nIGNsYXNzTmFtZT1cIm5vdC1mb3VuZC10ZXh0XCIgdmFyaWFudD1cImg0XCI+XG4gICAgICAgIHt0KCdlcnJvci40MDQuc29ycnktd2UtY291bGQtbm90LWZpbmQtaXQnKX1cbiAgICAgIDwvU3R5bGVkSGVhZGluZz5cbiAgICAgIDxCdXR0b24gZGF0YS10ZXN0aWQ9XCJub3QtZm91bmQtZ28tdG8taG9tZS1idXR0b25cIiBvbkNsaWNrPXtoYW5kbGVHb0hvbWV9IHZhcmlhbnQ9XCJjb250YWluZWRcIj5cbiAgICAgICAge3QoJ2J1dHRvbi5nby10by10aGUtaG9tZS1wYWdlJyl9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vdEZvdW5kO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQoJ2RpdicpKHtcbiAgbWFyZ2luOiAnMCBhdXRvJyxcbn0pO1xuXG5jb25zdCBTdHlsZWRIZWFkaW5nID0gc3R5bGVkKEhlYWRpbmcpPHsgdGhlbWU/OiBUaGVtZSB9PigoeyB0aGVtZSB9KSA9PiAoe1xuICBjb2xvcjogdGhlbWU/LnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lPy5wYWxldHRlLnByaW1hcnkubWFpbiA6IHRoZW1lPy5wYWxldHRlLndoaXRlLFxuICBtYXJnaW5Cb3R0b206IDE2LFxufSkpO1xuIl19 */");
|
|
73
75
|
//# sourceMappingURL=NotFound.js.map
|
package/build/index.js
CHANGED
|
@@ -28,6 +28,7 @@ var _exportNames = {
|
|
|
28
28
|
Logo: true,
|
|
29
29
|
MenuItem: true,
|
|
30
30
|
NotFound: true,
|
|
31
|
+
Forbidden: true,
|
|
31
32
|
LoginDialog: true,
|
|
32
33
|
Search: true,
|
|
33
34
|
HeaderInfoDialog: true,
|
|
@@ -136,6 +137,12 @@ Object.defineProperty(exports, "Footer", {
|
|
|
136
137
|
return _Footer.default;
|
|
137
138
|
}
|
|
138
139
|
});
|
|
140
|
+
Object.defineProperty(exports, "Forbidden", {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: function () {
|
|
143
|
+
return _Forbidden.default;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
139
146
|
Object.defineProperty(exports, "FundButton", {
|
|
140
147
|
enumerable: true,
|
|
141
148
|
get: function () {
|
|
@@ -406,6 +413,7 @@ var _Label = _interopRequireDefault(require("./components/Label"));
|
|
|
406
413
|
var _Logo = _interopRequireDefault(require("./components/Logo"));
|
|
407
414
|
var _MenuItem = _interopRequireDefault(require("./components/MenuItem"));
|
|
408
415
|
var _NotFound = _interopRequireDefault(require("./components/NotFound"));
|
|
416
|
+
var _Forbidden = _interopRequireDefault(require("./components/Forbidden"));
|
|
409
417
|
var _LoginDialog = _interopRequireDefault(require("./components/LoginDialog"));
|
|
410
418
|
var _Search = _interopRequireDefault(require("./components/Search"));
|
|
411
419
|
var _HeaderInfoDialog = _interopRequireDefault(require("./components/HeaderInfoDialog"));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
};
|
|
4
|
+
export default _default;
|
|
5
|
+
export declare const ApplicationStoryBook: any;
|
|
6
|
+
export declare const ApplicationjQuery: any;
|
|
7
|
+
export declare const ApplicationForbidden: any;
|
|
8
|
+
export declare const ApplicationNotFound: any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Home';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Version';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Forbidden';
|
package/build/src/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export { default as Label } from './components/Label';
|
|
|
22
22
|
export { default as Logo } from './components/Logo';
|
|
23
23
|
export { default as MenuItem } from './components/MenuItem';
|
|
24
24
|
export { default as NotFound } from './components/NotFound';
|
|
25
|
+
export { default as Forbidden } from './components/Forbidden';
|
|
25
26
|
export { default as LoginDialog } from './components/LoginDialog';
|
|
26
27
|
export { default as Search } from './components/Search';
|
|
27
28
|
export { default as HeaderInfoDialog } from './components/HeaderInfoDialog';
|
|
@@ -13,6 +13,15 @@ export declare const manifest: {
|
|
|
13
13
|
} & {
|
|
14
14
|
reducers: {
|
|
15
15
|
notFound(state: {}): {
|
|
16
|
+
hasNotBeenFound: boolean;
|
|
17
|
+
forbidden: boolean;
|
|
18
|
+
manifest: undefined;
|
|
19
|
+
packageName: undefined;
|
|
20
|
+
packageVersion: undefined;
|
|
21
|
+
readme: undefined;
|
|
22
|
+
};
|
|
23
|
+
forbidden(state: {}): {
|
|
24
|
+
forbidden: boolean;
|
|
16
25
|
hasNotBeenFound: boolean;
|
|
17
26
|
manifest: undefined;
|
|
18
27
|
packageName: undefined;
|
|
@@ -25,6 +34,7 @@ export declare const manifest: {
|
|
|
25
34
|
isError(state: {}): {
|
|
26
35
|
isError: boolean;
|
|
27
36
|
hasNotBeenFound: boolean;
|
|
37
|
+
forbidden: boolean;
|
|
28
38
|
manifest: undefined;
|
|
29
39
|
packageName: undefined;
|
|
30
40
|
packageVersion: undefined;
|
|
@@ -36,6 +46,7 @@ export declare const manifest: {
|
|
|
36
46
|
packageVersion: any;
|
|
37
47
|
readme: any;
|
|
38
48
|
hasNotBeenFound: boolean;
|
|
49
|
+
forbidden: boolean;
|
|
39
50
|
};
|
|
40
51
|
};
|
|
41
52
|
} & ({} | {
|
package/build/store/api.js
CHANGED
|
@@ -7,6 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
exports.handleResponseType = handleResponseType;
|
|
8
8
|
var _storage = _interopRequireDefault(require("./storage"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
class CustomError extends Error {}
|
|
11
|
+
|
|
10
12
|
/**
|
|
11
13
|
* Handles response according to content type
|
|
12
14
|
* @param {object} response
|
|
@@ -31,7 +33,9 @@ function handleResponseType(response) {
|
|
|
31
33
|
return Promise.all([response.ok, response.blob()]);
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
|
-
|
|
36
|
+
|
|
37
|
+
// error handling
|
|
38
|
+
return Promise.all([response.ok, response]);
|
|
35
39
|
}
|
|
36
40
|
const AuthHeader = 'Authorization';
|
|
37
41
|
class API {
|
|
@@ -52,12 +56,14 @@ class API {
|
|
|
52
56
|
signal: options.signal,
|
|
53
57
|
...options
|
|
54
58
|
}).then(handleResponseType).then(response => {
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
const [ok, data] = response;
|
|
60
|
+
if (ok === true) {
|
|
61
|
+
resolve(data);
|
|
57
62
|
} else {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
var _data$statusText, _data$status;
|
|
64
|
+
const error = new CustomError((_data$statusText = data === null || data === void 0 ? void 0 : data.statusText) !== null && _data$statusText !== void 0 ? _data$statusText : 'Unknown error');
|
|
65
|
+
error.code = (_data$status = data === null || data === void 0 ? void 0 : data.status) !== null && _data$status !== void 0 ? _data$status : 500;
|
|
66
|
+
reject(error);
|
|
61
67
|
}
|
|
62
68
|
}).catch(error => {
|
|
63
69
|
reject(error);
|
|
@@ -29,6 +29,18 @@ const manifest = exports.manifest = (0, _core.createModel)()({
|
|
|
29
29
|
return {
|
|
30
30
|
...state,
|
|
31
31
|
hasNotBeenFound: true,
|
|
32
|
+
forbidden: false,
|
|
33
|
+
manifest: undefined,
|
|
34
|
+
packageName: undefined,
|
|
35
|
+
packageVersion: undefined,
|
|
36
|
+
readme: undefined
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
forbidden(state) {
|
|
40
|
+
return {
|
|
41
|
+
...state,
|
|
42
|
+
forbidden: true,
|
|
43
|
+
hasNotBeenFound: false,
|
|
32
44
|
manifest: undefined,
|
|
33
45
|
packageName: undefined,
|
|
34
46
|
packageVersion: undefined,
|
|
@@ -46,6 +58,7 @@ const manifest = exports.manifest = (0, _core.createModel)()({
|
|
|
46
58
|
...state,
|
|
47
59
|
isError: true,
|
|
48
60
|
hasNotBeenFound: false,
|
|
61
|
+
forbidden: false,
|
|
49
62
|
manifest: undefined,
|
|
50
63
|
packageName: undefined,
|
|
51
64
|
packageVersion: undefined,
|
|
@@ -64,7 +77,8 @@ const manifest = exports.manifest = (0, _core.createModel)()({
|
|
|
64
77
|
packageName,
|
|
65
78
|
packageVersion,
|
|
66
79
|
readme,
|
|
67
|
-
hasNotBeenFound: false
|
|
80
|
+
hasNotBeenFound: false,
|
|
81
|
+
forbidden: false
|
|
68
82
|
};
|
|
69
83
|
}
|
|
70
84
|
},
|
|
@@ -90,7 +104,11 @@ const manifest = exports.manifest = (0, _core.createModel)()({
|
|
|
90
104
|
readme
|
|
91
105
|
});
|
|
92
106
|
} catch (error) {
|
|
93
|
-
|
|
107
|
+
if (error.code === 404) {
|
|
108
|
+
dispatch.manifest.notFound();
|
|
109
|
+
} else {
|
|
110
|
+
dispatch.manifest.forbidden();
|
|
111
|
+
}
|
|
94
112
|
}
|
|
95
113
|
}
|
|
96
114
|
})
|
package/package.json
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MemoryRouter } from 'react-router';
|
|
3
|
+
|
|
4
|
+
import AppRoute from './AppRoute';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: 'App/Main',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const ApplicationStoryBook: any = () => (
|
|
11
|
+
<MemoryRouter initialEntries={[`/-/web/detail/storybook`]}>
|
|
12
|
+
<AppRoute />
|
|
13
|
+
</MemoryRouter>
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export const ApplicationjQuery: any = () => (
|
|
17
|
+
<MemoryRouter initialEntries={[`/-/web/detail/jquery`]}>
|
|
18
|
+
<AppRoute />
|
|
19
|
+
</MemoryRouter>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const ApplicationForbidden: any = () => (
|
|
23
|
+
<MemoryRouter initialEntries={[`/-/web/detail/JSONStream`]}>
|
|
24
|
+
<AppRoute />
|
|
25
|
+
</MemoryRouter>
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
export const ApplicationNotFound: any = () => (
|
|
29
|
+
<MemoryRouter initialEntries={[`/-/web/detail/kleur`]}>
|
|
30
|
+
<AppRoute />
|
|
31
|
+
</MemoryRouter>
|
|
32
|
+
);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Route as ReactRouterDomRoute, Switch } from 'react-router-dom';
|
|
3
|
+
|
|
4
|
+
import { NotFound, Route, VersionProvider, loadable } from '../index';
|
|
5
|
+
|
|
6
|
+
const VersionPage = loadable(() => import(/* webpackChunkName: "Version" */ './pages/Version'));
|
|
7
|
+
const Front = loadable(() => import(/* webpackChunkName: "Home" */ './pages/Front'));
|
|
8
|
+
|
|
9
|
+
const AppRoute: React.FC = () => {
|
|
10
|
+
return (
|
|
11
|
+
<Switch>
|
|
12
|
+
<ReactRouterDomRoute exact={true} path={Route.ROOT}>
|
|
13
|
+
<Front />
|
|
14
|
+
</ReactRouterDomRoute>
|
|
15
|
+
<ReactRouterDomRoute exact={true} path={Route.PACKAGE}>
|
|
16
|
+
<VersionProvider>
|
|
17
|
+
<VersionPage />
|
|
18
|
+
</VersionProvider>
|
|
19
|
+
</ReactRouterDomRoute>
|
|
20
|
+
<ReactRouterDomRoute exact={true} path={Route.PACKAGE_VERSION}>
|
|
21
|
+
<VersionProvider>
|
|
22
|
+
<VersionPage />
|
|
23
|
+
</VersionProvider>
|
|
24
|
+
</ReactRouterDomRoute>
|
|
25
|
+
<ReactRouterDomRoute exact={true} path={Route.SCOPE_PACKAGE_VERSION}>
|
|
26
|
+
<VersionProvider>
|
|
27
|
+
<VersionPage />
|
|
28
|
+
</VersionProvider>
|
|
29
|
+
</ReactRouterDomRoute>
|
|
30
|
+
<ReactRouterDomRoute exact={true} path={Route.SCOPE_PACKAGE}>
|
|
31
|
+
<VersionProvider>
|
|
32
|
+
<VersionPage />
|
|
33
|
+
</VersionProvider>
|
|
34
|
+
</ReactRouterDomRoute>
|
|
35
|
+
<ReactRouterDomRoute>
|
|
36
|
+
<NotFound />
|
|
37
|
+
</ReactRouterDomRoute>
|
|
38
|
+
</Switch>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default AppRoute;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Home';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useSelector } from 'react-redux';
|
|
3
|
+
|
|
4
|
+
import Forbidden from '../../../components/Forbidden';
|
|
5
|
+
import { Loading, NotFound, RootState, VersionLayout } from '../../../index';
|
|
6
|
+
|
|
7
|
+
const Version: React.FC = () => {
|
|
8
|
+
const manifestStore = useSelector((state: RootState) => state.manifest);
|
|
9
|
+
const isLoading = useSelector((state: RootState) => state?.loading?.models.manifest);
|
|
10
|
+
|
|
11
|
+
if (isLoading) {
|
|
12
|
+
return <Loading />;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// @ts-expect-error
|
|
16
|
+
if (manifestStore.forbidden) {
|
|
17
|
+
return <Forbidden />;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// @ts-expect-error
|
|
21
|
+
if (manifestStore.hasNotBeenFound) {
|
|
22
|
+
return <NotFound />;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return <VersionLayout />;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default Version;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Version';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MemoryRouter } from 'react-router';
|
|
3
|
+
|
|
4
|
+
import { fireEvent, render, screen } from '../../test/test-react-testing-library';
|
|
5
|
+
import Forbidden from './Forbidden';
|
|
6
|
+
|
|
7
|
+
const mockHistory = jest.fn();
|
|
8
|
+
|
|
9
|
+
jest.mock('react-router-dom', () => ({
|
|
10
|
+
useHistory: () => ({
|
|
11
|
+
push: mockHistory,
|
|
12
|
+
}),
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
describe('<Forbidden /> component', () => {
|
|
16
|
+
test('should load the component in default state', () => {
|
|
17
|
+
render(
|
|
18
|
+
<MemoryRouter>
|
|
19
|
+
<Forbidden />
|
|
20
|
+
</MemoryRouter>
|
|
21
|
+
);
|
|
22
|
+
expect(screen.getByTestId('LockIcon')).toBeInTheDocument();
|
|
23
|
+
expect(screen.getByText('error.401.sorry-no-access')).toBeInTheDocument();
|
|
24
|
+
expect(screen.getByText('button.go-to-the-home-page')).toBeInTheDocument();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('go to Home Page button click', async () => {
|
|
28
|
+
const { getByTestId } = render(
|
|
29
|
+
<MemoryRouter>
|
|
30
|
+
<Forbidden />
|
|
31
|
+
</MemoryRouter>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const node = getByTestId('not-found-go-to-home-button');
|
|
35
|
+
fireEvent.click(node);
|
|
36
|
+
expect(mockHistory).toHaveBeenCalled();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* eslint-disable react/forbid-component-props */
|
|
2
|
+
|
|
3
|
+
/* eslint-disable verdaccio/jsx-no-style */
|
|
4
|
+
import styled from '@emotion/styled';
|
|
5
|
+
import LockIcon from '@mui/icons-material/Lock';
|
|
6
|
+
import Box from '@mui/material/Box';
|
|
7
|
+
import Button from '@mui/material/Button';
|
|
8
|
+
import React, { useCallback } from 'react';
|
|
9
|
+
import { useTranslation } from 'react-i18next';
|
|
10
|
+
import { useHistory } from 'react-router-dom';
|
|
11
|
+
|
|
12
|
+
import { Theme } from '../..';
|
|
13
|
+
import Heading from '../Heading';
|
|
14
|
+
|
|
15
|
+
const Foebidden: React.FC = () => {
|
|
16
|
+
const history = useHistory();
|
|
17
|
+
|
|
18
|
+
const { t } = useTranslation();
|
|
19
|
+
|
|
20
|
+
const handleGoHome = useCallback(() => {
|
|
21
|
+
history.push('/');
|
|
22
|
+
}, [history]);
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<Box
|
|
26
|
+
alignItems="center"
|
|
27
|
+
data-testid="404"
|
|
28
|
+
display="flex"
|
|
29
|
+
flexDirection="column"
|
|
30
|
+
flexGrow={1}
|
|
31
|
+
justifyContent="center"
|
|
32
|
+
p={2}
|
|
33
|
+
>
|
|
34
|
+
<Container>
|
|
35
|
+
<LockIcon color="primary" style={{ fontSize: 236 }} />
|
|
36
|
+
</Container>
|
|
37
|
+
<StyledHeading className="not-found-text" variant="h4">
|
|
38
|
+
{t('error.401.sorry-no-access')}
|
|
39
|
+
</StyledHeading>
|
|
40
|
+
<Button data-testid="not-found-go-to-home-button" onClick={handleGoHome} variant="contained">
|
|
41
|
+
{t('button.go-to-the-home-page')}
|
|
42
|
+
</Button>
|
|
43
|
+
</Box>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default Foebidden;
|
|
48
|
+
|
|
49
|
+
const Container = styled('div')({
|
|
50
|
+
margin: '0 auto',
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const StyledHeading = styled(Heading)<{ theme?: Theme }>(({ theme }) => ({
|
|
54
|
+
color: theme?.palette.mode === 'light' ? theme?.palette.primary.main : theme?.palette.white,
|
|
55
|
+
marginBottom: 16,
|
|
56
|
+
}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Forbidden';
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/* eslint-disable verdaccio/jsx-no-style */
|
|
1
2
|
import styled from '@emotion/styled';
|
|
3
|
+
import FolderOffIcon from '@mui/icons-material/FolderOff';
|
|
2
4
|
import Box from '@mui/material/Box';
|
|
3
5
|
import Button from '@mui/material/Button';
|
|
4
6
|
import React, { useCallback } from 'react';
|
|
@@ -7,8 +9,6 @@ import { useHistory } from 'react-router-dom';
|
|
|
7
9
|
|
|
8
10
|
import { Theme } from '../../';
|
|
9
11
|
import Heading from '../Heading';
|
|
10
|
-
// @ts-ignore
|
|
11
|
-
import PackageImg from './img/package.svg';
|
|
12
12
|
|
|
13
13
|
const NotFound: React.FC = () => {
|
|
14
14
|
const history = useHistory();
|
|
@@ -28,7 +28,9 @@ const NotFound: React.FC = () => {
|
|
|
28
28
|
justifyContent="center"
|
|
29
29
|
p={2}
|
|
30
30
|
>
|
|
31
|
-
<
|
|
31
|
+
<Container>
|
|
32
|
+
<FolderOffIcon color="primary" style={{ fontSize: 236 }} />
|
|
33
|
+
</Container>
|
|
32
34
|
<StyledHeading className="not-found-text" variant="h4">
|
|
33
35
|
{t('error.404.sorry-we-could-not-find-it')}
|
|
34
36
|
</StyledHeading>
|
|
@@ -41,8 +43,7 @@ const NotFound: React.FC = () => {
|
|
|
41
43
|
|
|
42
44
|
export default NotFound;
|
|
43
45
|
|
|
44
|
-
const
|
|
45
|
-
width: '150px',
|
|
46
|
+
const Container = styled('div')({
|
|
46
47
|
margin: '0 auto',
|
|
47
48
|
});
|
|
48
49
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { MemoryRouter } from 'react-router';
|
|
3
3
|
|
|
4
|
-
import { fireEvent, render } from '../../test/test-react-testing-library';
|
|
4
|
+
import { fireEvent, render, screen } from '../../test/test-react-testing-library';
|
|
5
5
|
import NotFound from './NotFound';
|
|
6
6
|
|
|
7
7
|
const mockHistory = jest.fn();
|
|
@@ -14,12 +14,15 @@ jest.mock('react-router-dom', () => ({
|
|
|
14
14
|
|
|
15
15
|
describe('<NotFound /> component', () => {
|
|
16
16
|
test('should load the component in default state', () => {
|
|
17
|
-
|
|
17
|
+
render(
|
|
18
18
|
<MemoryRouter>
|
|
19
19
|
<NotFound />
|
|
20
20
|
</MemoryRouter>
|
|
21
21
|
);
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
expect(screen.getByTestId('FolderOffIcon')).toBeInTheDocument();
|
|
24
|
+
expect(screen.getByText('button.go-to-the-home-page')).toBeInTheDocument();
|
|
25
|
+
expect(screen.getByText('error.404.sorry-we-could-not-find-it')).toBeInTheDocument();
|
|
23
26
|
});
|
|
24
27
|
|
|
25
28
|
test('go to Home Page button click', async () => {
|
package/src/index.ts
CHANGED
|
@@ -22,6 +22,7 @@ export { default as Label } from './components/Label';
|
|
|
22
22
|
export { default as Logo } from './components/Logo';
|
|
23
23
|
export { default as MenuItem } from './components/MenuItem';
|
|
24
24
|
export { default as NotFound } from './components/NotFound';
|
|
25
|
+
export { default as Forbidden } from './components/Forbidden';
|
|
25
26
|
export { default as LoginDialog } from './components/LoginDialog';
|
|
26
27
|
export { default as Search } from './components/Search';
|
|
27
28
|
export { default as HeaderInfoDialog } from './components/HeaderInfoDialog';
|
|
@@ -27,3 +27,13 @@ export const DetailJquery: any = () => (
|
|
|
27
27
|
</Route>
|
|
28
28
|
</MemoryRouter>
|
|
29
29
|
);
|
|
30
|
+
|
|
31
|
+
export const DetailForbidden: any = () => (
|
|
32
|
+
<MemoryRouter initialEntries={[`/-/web/detail/JSONStream`]}>
|
|
33
|
+
<Route exact={true} path="/-/web/detail/:package">
|
|
34
|
+
<VersionProvider>
|
|
35
|
+
<Detail />
|
|
36
|
+
</VersionProvider>
|
|
37
|
+
</Route>
|
|
38
|
+
</MemoryRouter>
|
|
39
|
+
);
|
package/src/store/api.test.ts
CHANGED
|
@@ -14,7 +14,8 @@ describe('api', () => {
|
|
|
14
14
|
|
|
15
15
|
const handled = await handleResponseType(response);
|
|
16
16
|
|
|
17
|
-
expect(handled).
|
|
17
|
+
expect(handled[0]).toBeFalsy();
|
|
18
|
+
expect(handled[1]).toBeDefined();
|
|
18
19
|
});
|
|
19
20
|
|
|
20
21
|
test('should test tgz scenario', async () => {
|
|
@@ -123,7 +124,7 @@ describe('api', () => {
|
|
|
123
124
|
})
|
|
124
125
|
);
|
|
125
126
|
|
|
126
|
-
await expect(api.request('/resource')).rejects.toThrow(new Error('
|
|
127
|
+
await expect(api.request('/resource')).rejects.toThrow(new Error('Unknown error'));
|
|
127
128
|
});
|
|
128
129
|
|
|
129
130
|
test('when api returns an error 5.x.x', async () => {
|
package/src/store/api.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import storage from './storage';
|
|
2
2
|
|
|
3
|
+
class CustomError extends Error {
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
code: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
/**
|
|
4
9
|
* Handles response according to content type
|
|
5
10
|
* @param {object} response
|
|
@@ -25,7 +30,8 @@ export function handleResponseType(response: Response): Promise<[boolean, any]>
|
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
// error handling
|
|
34
|
+
return Promise.all([response.ok, response]);
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
const AuthHeader = 'Authorization';
|
|
@@ -55,12 +61,13 @@ class API {
|
|
|
55
61
|
})
|
|
56
62
|
.then(handleResponseType)
|
|
57
63
|
.then((response) => {
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
const [ok, data] = response;
|
|
65
|
+
if (ok === true) {
|
|
66
|
+
resolve(data);
|
|
60
67
|
} else {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
reject(
|
|
68
|
+
const error = new CustomError(data?.statusText ?? 'Unknown error');
|
|
69
|
+
error.code = data?.status ?? 500;
|
|
70
|
+
reject(error);
|
|
64
71
|
}
|
|
65
72
|
})
|
|
66
73
|
.catch((error) => {
|
|
@@ -33,6 +33,18 @@ export const manifest = createModel<RootModel>()({
|
|
|
33
33
|
return {
|
|
34
34
|
...state,
|
|
35
35
|
hasNotBeenFound: true,
|
|
36
|
+
forbidden: false,
|
|
37
|
+
manifest: undefined,
|
|
38
|
+
packageName: undefined,
|
|
39
|
+
packageVersion: undefined,
|
|
40
|
+
readme: undefined,
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
forbidden(state) {
|
|
44
|
+
return {
|
|
45
|
+
...state,
|
|
46
|
+
forbidden: true,
|
|
47
|
+
hasNotBeenFound: false,
|
|
36
48
|
manifest: undefined,
|
|
37
49
|
packageName: undefined,
|
|
38
50
|
packageVersion: undefined,
|
|
@@ -50,6 +62,7 @@ export const manifest = createModel<RootModel>()({
|
|
|
50
62
|
...state,
|
|
51
63
|
isError: true,
|
|
52
64
|
hasNotBeenFound: false,
|
|
65
|
+
forbidden: false,
|
|
53
66
|
manifest: undefined,
|
|
54
67
|
packageName: undefined,
|
|
55
68
|
packageVersion: undefined,
|
|
@@ -64,6 +77,7 @@ export const manifest = createModel<RootModel>()({
|
|
|
64
77
|
packageVersion,
|
|
65
78
|
readme,
|
|
66
79
|
hasNotBeenFound: false,
|
|
80
|
+
forbidden: false,
|
|
67
81
|
};
|
|
68
82
|
},
|
|
69
83
|
},
|
|
@@ -91,7 +105,11 @@ export const manifest = createModel<RootModel>()({
|
|
|
91
105
|
);
|
|
92
106
|
dispatch.manifest.saveManifest({ packageName, packageVersion, manifest, readme });
|
|
93
107
|
} catch (error: any) {
|
|
94
|
-
|
|
108
|
+
if (error.code === 404) {
|
|
109
|
+
dispatch.manifest.notFound();
|
|
110
|
+
} else {
|
|
111
|
+
dispatch.manifest.forbidden();
|
|
112
|
+
}
|
|
95
113
|
}
|
|
96
114
|
},
|
|
97
115
|
}),
|