@redocly/theme 0.35.6 → 0.35.9

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.
@@ -2,6 +2,5 @@ import type { ResolvedNavItem } from '../../types/portal';
2
2
  import type { FilteredCatalog } from '../../types/portal/src/shared/types/catalog';
3
3
  import type { CatalogConfig } from '../../config';
4
4
  export declare function useCatalog(items: ResolvedNavItem[], config: CatalogConfig): FilteredCatalog;
5
- export declare function fillSearchParams(filterProperty: string, filterValues: Set<string>, searchParams: URLSearchParams): URLSearchParams;
6
- export declare function handleFilterInput(filterTerm: string): URLSearchParams;
5
+ export declare function fillSearchParams(filterProperty: string, filterValues: Set<string>, searchParams: URLSearchParams): void;
7
6
  export declare function getFilterValues(filterValues: any): Set<string>;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getFilterValues = exports.handleFilterInput = exports.fillSearchParams = exports.useCatalog = void 0;
26
+ exports.getFilterValues = exports.fillSearchParams = exports.useCatalog = void 0;
27
27
  const React = __importStar(require("react"));
28
28
  const react_router_dom_1 = require("react-router-dom");
29
29
  const telemetry_1 = require("../../mocks/telemetry");
@@ -90,14 +90,15 @@ function useCatalog(items, config) {
90
90
  window.scrollTo(0, 0);
91
91
  }, [filtersWithOptions]);
92
92
  const handleSearchParams = () => {
93
- let newSearchParams = handleFilterInput(filterTerm);
93
+ const newSearchParams = new URLSearchParams(Array.from(searchParams.entries()));
94
+ filterTerm ? searchParams.set('filter', filterTerm) : searchParams.delete('filter');
94
95
  filtersState.forEach((filterValues, filterIdx) => {
95
96
  var _a;
96
97
  const filter = (_a = config.filters) === null || _a === void 0 ? void 0 : _a[filterIdx];
97
98
  if (!filter)
98
99
  return;
99
100
  const values = getFilterValues(filterValues);
100
- newSearchParams = fillSearchParams(filter.property, values, newSearchParams);
101
+ fillSearchParams(filter.property, values, newSearchParams);
101
102
  });
102
103
  const newSearch = newSearchParams.toString();
103
104
  if (newSearch === location.search.substring(1))
@@ -309,22 +310,13 @@ function mapFilterValues(value, mapping) {
309
310
  : mapping[String(value)] || value;
310
311
  }
311
312
  function fillSearchParams(filterProperty, filterValues, searchParams) {
313
+ // Clear old values of the filter before repopulating
314
+ searchParams.delete(filterProperty);
312
315
  filterValues.forEach((value) => {
313
- if (!searchParams.has(filterProperty, value))
314
- searchParams.append(filterProperty, value);
316
+ searchParams.append(filterProperty, value);
315
317
  });
316
- return searchParams;
317
318
  }
318
319
  exports.fillSearchParams = fillSearchParams;
319
- function handleFilterInput(filterTerm) {
320
- const searchParams = new URLSearchParams();
321
- if (filterTerm)
322
- searchParams.set('filter', filterTerm);
323
- else
324
- searchParams.delete('filter');
325
- return searchParams;
326
- }
327
- exports.handleFilterInput = handleFilterInput;
328
320
  function getFilterValues(filterValues) {
329
321
  const values = new Set();
330
322
  if (filterValues instanceof Set)
@@ -18,5 +18,5 @@ export declare const DropdownList: import("styled-components").StyledComponent<"
18
18
  alignment?: string | undefined;
19
19
  }, never>;
20
20
  export declare const DropdownListItem: import("styled-components").StyledComponent<"li", any, {
21
- separator?: boolean | undefined;
21
+ separatorLine?: boolean | undefined;
22
22
  }, never>;
@@ -51,8 +51,8 @@ const Dropdown = ({ children, className, items, withArrow, triggerEvent = 'click
51
51
  icon,
52
52
  withArrow ? isOpen ? react_1.default.createElement(icons_1.ArrowIcon, { direction: "up" }) : react_1.default.createElement(icons_1.ArrowIcon, { direction: "down" }) : null),
53
53
  isOpen && (react_1.default.createElement(exports.DropdownList, { placement: placement, alignment: alignment }, items.map((item, index) => {
54
- var _a;
55
- return (react_1.default.createElement(exports.DropdownListItem, { key: index, onClick: () => handleClick(item), separator: (_a = item.props) === null || _a === void 0 ? void 0 : _a.separator }, item));
54
+ var _a, _b, _c, _d;
55
+ return ((_a = item.props) === null || _a === void 0 ? void 0 : _a.separator) ? (react_1.default.createElement(DropdownSeparatorItem, { key: index, separatorLine: (_b = item.props) === null || _b === void 0 ? void 0 : _b.separatorLine, linePosition: (_c = item.props) === null || _c === void 0 ? void 0 : _c.linePosition }, item)) : (react_1.default.createElement(exports.DropdownListItem, { key: index, onClick: () => handleClick(item), separatorLine: (_d = item.props) === null || _d === void 0 ? void 0 : _d.separatorLine }, item));
56
56
  })))));
57
57
  };
58
58
  exports.Dropdown = Dropdown;
@@ -106,11 +106,31 @@ exports.DropdownListItem = styled_components_1.default.li `
106
106
  background-color: var(--dropdown-list-item-active-background-color);
107
107
  }
108
108
 
109
- ${({ separator }) => separator &&
109
+ ${({ separatorLine }) => separatorLine &&
110
110
  (0, styled_components_1.css) `
111
111
  border-bottom: 1px solid var(--dropdown-list-item-separator-color);
112
112
  border-bottom-left-radius: 0;
113
113
  border-bottom-right-radius: 0;
114
114
  `}
115
115
  `;
116
+ const DropdownSeparatorItem = styled_components_1.default.div `
117
+ display: block;
118
+ width: 100%;
119
+ border: none;
120
+ background: none;
121
+ padding: var(--dropdown-list-item-space-between) 0;
122
+ text-align: left;
123
+ cursor: default;
124
+ & > * {
125
+ padding: var(--dropdown-list-item-separator-padding-top)
126
+ var(--dropdown-list-item-horizontal-padding)
127
+ var(--dropdown-list-item-separator-padding-bottom);
128
+ }
129
+ ${({ separatorLine, linePosition }) => separatorLine &&
130
+ (0, styled_components_1.css) `
131
+ border-${linePosition}: 1px solid var(--dropdown-list-item-separator-color);
132
+ border-${linePosition}-left-radius: 0;
133
+ border-${linePosition}-right-radius: 0;
134
+ `}
135
+ `;
116
136
  //# sourceMappingURL=Dropdown.js.map
@@ -20,11 +20,14 @@ exports.dropdown = (0, styled_components_1.css) `
20
20
  --dropdown-list-box-shadow: var(--bg-raised-shadow); // @presenter Shadow
21
21
 
22
22
  --dropdown-list-item-horizontal-padding: var(--spacing-base); // @presenter Spacing
23
- --dropdown-list-item-vertical-padding: var(--spacing-xs); // @presenter Spacing
23
+ --dropdown-list-item-vertical-padding: 5px; // @presenter Spacing
24
24
  --dropdown-list-item-border-radius: var(--border-radius); // @presenter BorderRadius
25
25
  --dropdown-list-item-active-background-color: var(--bg-raised); // @presenter Color
26
26
  --dropdown-list-item-separator-color: var(--border-primary); // @presenter Color
27
27
 
28
+ --dropdown-list-item-space-between: 2px; // @presenter Spacing
29
+ --dropdown-list-item-separator-padding-top: var(--spacing-xs); // @presenter Spacing
30
+ --dropdown-list-item-separator-padding-bottom: var(--spacing-xxs); // @presenter Spacing
28
31
  // @tokens End
29
32
  `;
30
33
  //# sourceMappingURL=styledVariables.js.map
@@ -54,7 +54,15 @@ function NavbarItem({ navItem, className }) {
54
54
  if (navItem.items) {
55
55
  const item = navItem;
56
56
  const groupItems = item.items;
57
- const groupItemsComponents = groupItems.map((item, index) => (react_1.default.createElement(Link_1.Link, { key: `${item.label}_${index}`, to: item.link }, translate(item.labelTranslationKey, item.label))));
57
+ const groupItemsComponents = groupItems.map((item, index) => {
58
+ if (item.type === 'link') {
59
+ return (react_1.default.createElement(Link_1.Link, { key: `${item.label}_${index}`, to: item.link, separatorLine: item.separatorLine }, translate(item.labelTranslationKey, item.label)));
60
+ }
61
+ if (item.type === 'separator') {
62
+ return (react_1.default.createElement(NavbarSeparator, { key: `${item.label}_${index}`, separator: true, separatorLine: item.separatorLine, linePosition: item.linePosition }, translate(item.labelTranslationKey, item.label)));
63
+ }
64
+ return null;
65
+ });
58
66
  return (react_1.default.createElement(exports.NavbarMenuItemDropdown, { items: groupItemsComponents, triggerEvent: "hover" },
59
67
  react_1.default.createElement(exports.NavbarMenuItem, { active: false, "data-component-name": "Navbar/NavbarItem", className: className, onClick: () => telemetry_1.telemetry.send('navbar_menu_item_clicked', { type: 'group' }) },
60
68
  react_1.default.createElement(exports.NavbarIcon, { url: item.icon }),
@@ -125,4 +133,9 @@ exports.NavbarIcon = styled_components_1.default.i `
125
133
  background-repeat: no-repeat;
126
134
  `}
127
135
  `;
136
+ const NavbarSeparator = styled_components_1.default.span `
137
+ font-size: var(--navbar-separator-font-size);
138
+ color: var(--navbar-separator-text-color);
139
+ line-height: var(--navbar-separator-line-height);
140
+ `;
128
141
  //# sourceMappingURL=NavbarItem.js.map
@@ -38,5 +38,9 @@ exports.navbar = (0, styled_components_1.css) `
38
38
  --navbar-item-icon-width: 1.5em; // @presenter Spacing
39
39
  --navbar-item-icon-height: 1.5em; // @presenter Spacing
40
40
  --navbar-item-icon-margin-right: 0.5em; // @presenter Spacing
41
+
42
+ --navbar-separator-text-color: var(--text-secondary);
43
+ --navbar-separator-font-size: var(--font-size-sm);
44
+ --navbar-separator-line-height: var(--line-height-sm);
41
45
  `;
42
46
  //# sourceMappingURL=styledVariables.js.map
@@ -47,7 +47,7 @@ function UserProfile({ userData, handleLogout, hasDeveloperOnboarding = false, }
47
47
  }
48
48
  if (userProfile && userProfile.menu) {
49
49
  for (const item of userProfile.menu) {
50
- menuItems.push(react_1.default.createElement(Link_1.Link, { external: item.external, key: item.label, to: item.link || '', separator: item === null || item === void 0 ? void 0 : item.separatorLine }, item.label));
50
+ menuItems.push(react_1.default.createElement(Link_1.Link, { external: item.external, key: item.label, to: item.link || '', separatorLine: item === null || item === void 0 ? void 0 : item.separatorLine }, item.label));
51
51
  }
52
52
  }
53
53
  menuItems.push(react_1.default.createElement(Logout, { onClick: () => {
@@ -1,4 +1,4 @@
1
- export { REDOCLY_TEAMS_RBAC } from '@redocly/config';
1
+ export { REDOCLY_TEAMS_RBAC, REDOCLY_ROUTE_RBAC } from '@redocly/config';
2
2
  export declare const DEFAULT_THEME_NAME = "@redocly/theme";
3
3
  export declare const USER_THEME_ALIAS = "@theme";
4
4
  export declare const DEFAULT_LOCALE_PLACEHOLDER = "default_locale";
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FsErrors = exports.ExternalRoutes = exports.DEV_LOGIN_SLUG = exports.FEEDBACK_TYPES = exports.DEFAULT_LOCALE_PLACEHOLDER = exports.USER_THEME_ALIAS = exports.DEFAULT_THEME_NAME = exports.REDOCLY_TEAMS_RBAC = void 0;
3
+ exports.FsErrors = exports.ExternalRoutes = exports.DEV_LOGIN_SLUG = exports.FEEDBACK_TYPES = exports.DEFAULT_LOCALE_PLACEHOLDER = exports.USER_THEME_ALIAS = exports.DEFAULT_THEME_NAME = exports.REDOCLY_ROUTE_RBAC = exports.REDOCLY_TEAMS_RBAC = void 0;
4
4
  var config_1 = require("@redocly/config");
5
5
  Object.defineProperty(exports, "REDOCLY_TEAMS_RBAC", { enumerable: true, get: function () { return config_1.REDOCLY_TEAMS_RBAC; } });
6
+ Object.defineProperty(exports, "REDOCLY_ROUTE_RBAC", { enumerable: true, get: function () { return config_1.REDOCLY_ROUTE_RBAC; } });
6
7
  exports.DEFAULT_THEME_NAME = '@redocly/theme';
7
8
  exports.USER_THEME_ALIAS = '@theme';
8
9
  exports.DEFAULT_LOCALE_PLACEHOLDER = 'default_locale';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.35.6",
3
+ "version": "0.35.9",
4
4
  "description": "Shared UI components lib",
5
5
  "keywords": [
6
6
  "theme",
@@ -89,7 +89,7 @@
89
89
  "react-calendar": "4.2.1",
90
90
  "react-date-picker": "10.0.3",
91
91
  "timeago.js": "^4.0.2",
92
- "@redocly/config": "0.1.5"
92
+ "@redocly/config": "0.1.6"
93
93
  },
94
94
  "scripts": {
95
95
  "start": "npm-run-all --parallel storybook storybook:tokens:watch",
@@ -86,13 +86,15 @@ export function useCatalog(items: ResolvedNavItem[], config: CatalogConfig): Fil
86
86
  );
87
87
 
88
88
  const handleSearchParams = () => {
89
- let newSearchParams = handleFilterInput(filterTerm);
89
+ const newSearchParams = new URLSearchParams(Array.from(searchParams.entries()));
90
+
91
+ filterTerm ? searchParams.set('filter', filterTerm) : searchParams.delete('filter');
90
92
 
91
93
  filtersState.forEach((filterValues, filterIdx) => {
92
94
  const filter = config.filters?.[filterIdx];
93
95
  if (!filter) return;
94
96
  const values = getFilterValues(filterValues);
95
- newSearchParams = fillSearchParams(filter.property, values, newSearchParams);
97
+ fillSearchParams(filter.property, values, newSearchParams);
96
98
  });
97
99
 
98
100
  const newSearch = newSearchParams.toString();
@@ -371,20 +373,11 @@ export function fillSearchParams(
371
373
  filterValues: Set<string>,
372
374
  searchParams: URLSearchParams,
373
375
  ) {
376
+ // Clear old values of the filter before repopulating
377
+ searchParams.delete(filterProperty);
374
378
  filterValues.forEach((value) => {
375
- if (!searchParams.has(filterProperty, value)) searchParams.append(filterProperty, value);
379
+ searchParams.append(filterProperty, value);
376
380
  });
377
-
378
- return searchParams;
379
- }
380
-
381
- export function handleFilterInput(filterTerm: string) {
382
- const searchParams = new URLSearchParams();
383
-
384
- if (filterTerm) searchParams.set('filter', filterTerm);
385
- else searchParams.delete('filter');
386
-
387
- return searchParams;
388
381
  }
389
382
 
390
383
  export function getFilterValues(filterValues: any) {
@@ -69,15 +69,25 @@ export const Dropdown = ({
69
69
  </DropdownHeader>
70
70
  {isOpen && (
71
71
  <DropdownList placement={placement} alignment={alignment}>
72
- {items.map((item, index) => (
73
- <DropdownListItem
74
- key={index}
75
- onClick={() => handleClick(item)}
76
- separator={(item as JSX.Element).props?.separator}
77
- >
78
- {item}
79
- </DropdownListItem>
80
- ))}
72
+ {items.map((item, index) =>
73
+ (item as JSX.Element).props?.separator ? (
74
+ <DropdownSeparatorItem
75
+ key={index}
76
+ separatorLine={(item as JSX.Element).props?.separatorLine}
77
+ linePosition={(item as JSX.Element).props?.linePosition}
78
+ >
79
+ {item}
80
+ </DropdownSeparatorItem>
81
+ ) : (
82
+ <DropdownListItem
83
+ key={index}
84
+ onClick={() => handleClick(item)}
85
+ separatorLine={(item as JSX.Element).props?.separatorLine}
86
+ >
87
+ {item}
88
+ </DropdownListItem>
89
+ ),
90
+ )}
81
91
  </DropdownList>
82
92
  )}
83
93
  </DropdownContainer>
@@ -126,7 +136,7 @@ export const DropdownList = styled.ul<{ placement?: string; alignment?: string }
126
136
  z-index: 1;
127
137
  `;
128
138
 
129
- export const DropdownListItem = styled.li<{ separator?: boolean }>`
139
+ export const DropdownListItem = styled.li<{ separatorLine?: boolean }>`
130
140
  border-radius: var(--dropdown-list-item-border-radius);
131
141
 
132
142
  & > * {
@@ -137,11 +147,36 @@ export const DropdownListItem = styled.li<{ separator?: boolean }>`
137
147
  background-color: var(--dropdown-list-item-active-background-color);
138
148
  }
139
149
 
140
- ${({ separator }) =>
141
- separator &&
150
+ ${({ separatorLine }) =>
151
+ separatorLine &&
142
152
  css`
143
153
  border-bottom: 1px solid var(--dropdown-list-item-separator-color);
144
154
  border-bottom-left-radius: 0;
145
155
  border-bottom-right-radius: 0;
146
156
  `}
147
157
  `;
158
+
159
+ const DropdownSeparatorItem = styled.div<{
160
+ separatorLine?: boolean;
161
+ linePosition: 'top' | 'bottom';
162
+ }>`
163
+ display: block;
164
+ width: 100%;
165
+ border: none;
166
+ background: none;
167
+ padding: var(--dropdown-list-item-space-between) 0;
168
+ text-align: left;
169
+ cursor: default;
170
+ & > * {
171
+ padding: var(--dropdown-list-item-separator-padding-top)
172
+ var(--dropdown-list-item-horizontal-padding)
173
+ var(--dropdown-list-item-separator-padding-bottom);
174
+ }
175
+ ${({ separatorLine, linePosition }) =>
176
+ separatorLine &&
177
+ css`
178
+ border-${linePosition}: 1px solid var(--dropdown-list-item-separator-color);
179
+ border-${linePosition}-left-radius: 0;
180
+ border-${linePosition}-right-radius: 0;
181
+ `}
182
+ `;
@@ -18,10 +18,13 @@ export const dropdown = css`
18
18
  --dropdown-list-box-shadow: var(--bg-raised-shadow); // @presenter Shadow
19
19
 
20
20
  --dropdown-list-item-horizontal-padding: var(--spacing-base); // @presenter Spacing
21
- --dropdown-list-item-vertical-padding: var(--spacing-xs); // @presenter Spacing
21
+ --dropdown-list-item-vertical-padding: 5px; // @presenter Spacing
22
22
  --dropdown-list-item-border-radius: var(--border-radius); // @presenter BorderRadius
23
23
  --dropdown-list-item-active-background-color: var(--bg-raised); // @presenter Color
24
24
  --dropdown-list-item-separator-color: var(--border-primary); // @presenter Color
25
25
 
26
+ --dropdown-list-item-space-between: 2px; // @presenter Spacing
27
+ --dropdown-list-item-separator-padding-top: var(--spacing-xs); // @presenter Spacing
28
+ --dropdown-list-item-separator-padding-bottom: var(--spacing-xxs); // @presenter Spacing
26
29
  // @tokens End
27
30
  `;
@@ -49,15 +49,34 @@ export function NavbarItem({ navItem, className }: NavbarItemProps): JSX.Element
49
49
 
50
50
  if ((navItem as ResolvedNavGroupItem).items) {
51
51
  const item = navItem as ResolvedNavGroupItem;
52
- const groupItems = item.items as ResolvedNavLinkItem[];
53
- const groupItemsComponents = groupItems.map((item, index) => (
54
- <Link key={`${item.label}_${index}`} to={item.link}>
55
- {translate(item.labelTranslationKey, item.label)}
56
- </Link>
57
- ));
52
+ const groupItems = item.items as ResolvedNavItem[];
53
+ const groupItemsComponents = groupItems.map((item, index) => {
54
+ if (item.type === 'link') {
55
+ return (
56
+ <Link key={`${item.label}_${index}`} to={item.link} separatorLine={item.separatorLine}>
57
+ {translate(item.labelTranslationKey, item.label)}
58
+ </Link>
59
+ );
60
+ }
61
+
62
+ if (item.type === 'separator') {
63
+ return (
64
+ <NavbarSeparator
65
+ key={`${item.label}_${index}`}
66
+ separator={true}
67
+ separatorLine={item.separatorLine}
68
+ linePosition={item.linePosition}
69
+ >
70
+ {translate(item.labelTranslationKey, item.label)}
71
+ </NavbarSeparator>
72
+ );
73
+ }
74
+
75
+ return null;
76
+ });
58
77
 
59
78
  return (
60
- <NavbarMenuItemDropdown items={groupItemsComponents} triggerEvent="hover">
79
+ <NavbarMenuItemDropdown items={groupItemsComponents as JSX.Element[]} triggerEvent="hover">
61
80
  <NavbarMenuItem
62
81
  active={false}
63
82
  data-component-name="Navbar/NavbarItem"
@@ -146,3 +165,13 @@ export const NavbarIcon = styled.i<{ url?: string }>`
146
165
  background-repeat: no-repeat;
147
166
  `}
148
167
  `;
168
+
169
+ const NavbarSeparator = styled.span<{
170
+ separator: true;
171
+ separatorLine?: boolean;
172
+ linePosition?: 'top' | 'bottom';
173
+ }>`
174
+ font-size: var(--navbar-separator-font-size);
175
+ color: var(--navbar-separator-text-color);
176
+ line-height: var(--navbar-separator-line-height);
177
+ `;
@@ -36,4 +36,8 @@ export const navbar = css`
36
36
  --navbar-item-icon-width: 1.5em; // @presenter Spacing
37
37
  --navbar-item-icon-height: 1.5em; // @presenter Spacing
38
38
  --navbar-item-icon-margin-right: 0.5em; // @presenter Spacing
39
+
40
+ --navbar-separator-text-color: var(--text-secondary);
41
+ --navbar-separator-font-size: var(--font-size-sm);
42
+ --navbar-separator-line-height: var(--line-height-sm);
39
43
  `;
@@ -38,7 +38,7 @@ export function UserProfile({
38
38
  external={item.external}
39
39
  key={item.label}
40
40
  to={item.link || ''}
41
- separator={item?.separatorLine}
41
+ separatorLine={item?.separatorLine}
42
42
  >
43
43
  {item.label}
44
44
  </Link>,
@@ -79,7 +79,7 @@ export function useCatalog(_items: ResolvedNavItem[], _config: CatalogConfig): F
79
79
  }
80
80
 
81
81
  export const useTranslate = (): { translate: TFunction } => ({
82
- translate: (value?: string, options?: { defaultValue: string } | string) =>
82
+ translate: (value?: string, options?: { defaultValue?: string } | string) =>
83
83
  (typeof options === 'string' ? options : options?.defaultValue) || value || '',
84
84
  });
85
85
 
@@ -1,9 +1,9 @@
1
- export { REDOCLY_TEAMS_RBAC } from '@redocly/config';
1
+ export { REDOCLY_TEAMS_RBAC, REDOCLY_ROUTE_RBAC } from '@redocly/config';
2
2
 
3
3
  export const DEFAULT_THEME_NAME = '@redocly/theme';
4
4
  export const USER_THEME_ALIAS = '@theme';
5
- export const DEFAULT_LOCALE_PLACEHOLDER = 'default_locale'
6
- export type REQUIRED_OIDC_SCOPES = string[];
5
+ export const DEFAULT_LOCALE_PLACEHOLDER = 'default_locale';
6
+ export type REQUIRED_OIDC_SCOPES = string[];
7
7
  export type DEFAULT_COOKIE_EXPIRATION = number;
8
8
  export enum FEEDBACK_TYPES {
9
9
  RATING = 'rating',
@@ -19,4 +19,4 @@ export enum ExternalRoutes {
19
19
  }
20
20
  export enum FsErrors {
21
21
  NotExist = 'ENOENT',
22
- }
22
+ }