@backstage/create-app 0.4.12 → 0.4.13
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
CHANGED
|
@@ -1,5 +1,149 @@
|
|
|
1
1
|
# @backstage/create-app
|
|
2
2
|
|
|
3
|
+
## 0.4.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- fb08e2f285: Updated the configuration of the `app-backend` plugin to enable the static asset store by passing on `database` from the plugin environment to `createRouter`.
|
|
8
|
+
|
|
9
|
+
To apply this change to an existing app, make the following change to `packages/backend/src/plugins/app.ts`:
|
|
10
|
+
|
|
11
|
+
```diff
|
|
12
|
+
export default async function createPlugin({
|
|
13
|
+
logger,
|
|
14
|
+
config,
|
|
15
|
+
+ database,
|
|
16
|
+
}: PluginEnvironment): Promise<Router> {
|
|
17
|
+
return await createRouter({
|
|
18
|
+
logger,
|
|
19
|
+
config,
|
|
20
|
+
+ database,
|
|
21
|
+
appPackageName: 'app',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- 7ba416be78: You can now add `SidebarGroup`s to the current `Sidebar`. This will not affect how the current sidebar is displayed, but allows a customization on how the `MobileSidebar` on smaller screens will look like. A `SidebarGroup` will be displayed with the given icon in the `MobileSidebar`.
|
|
27
|
+
|
|
28
|
+
A `SidebarGroup` can either link to an existing page (e.g. `/search` or `/settings`) or wrap components, which will be displayed in a full-screen overlay menu (e.g. `Menu`).
|
|
29
|
+
|
|
30
|
+
```diff
|
|
31
|
+
<Sidebar>
|
|
32
|
+
<SidebarLogo />
|
|
33
|
+
+ <SidebarGroup label="Search" icon={<SearchIcon />} to="/search">
|
|
34
|
+
<SidebarSearchModal />
|
|
35
|
+
+ </SidebarGroup>
|
|
36
|
+
<SidebarDivider />
|
|
37
|
+
+ <SidebarGroup label="Menu" icon={<MenuIcon />}>
|
|
38
|
+
<SidebarItem icon={HomeIcon} to="catalog" text="Home" />
|
|
39
|
+
<SidebarItem icon={CreateComponentIcon} to="create" text="Create..." />
|
|
40
|
+
<SidebarDivider />
|
|
41
|
+
<SidebarScrollWrapper>
|
|
42
|
+
<SidebarItem icon={MapIcon} to="tech-radar" text="Tech Radar" />
|
|
43
|
+
</SidebarScrollWrapper>
|
|
44
|
+
+ </SidebarGroup>
|
|
45
|
+
<SidebarSpace />
|
|
46
|
+
<SidebarDivider />
|
|
47
|
+
+ <SidebarGroup
|
|
48
|
+
+ label="Settings"
|
|
49
|
+
+ icon={<UserSettingsSignInAvatar />}
|
|
50
|
+
+ to="/settings"
|
|
51
|
+
+ >
|
|
52
|
+
<SidebarSettings />
|
|
53
|
+
+ </SidebarGroup>
|
|
54
|
+
</Sidebar>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Additionally, you can order the groups differently in the `MobileSidebar` than in the usual `Sidebar` simply by giving a group a priority. The groups will be displayed in descending order from left to right.
|
|
58
|
+
|
|
59
|
+
```diff
|
|
60
|
+
<SidebarGroup
|
|
61
|
+
label="Settings"
|
|
62
|
+
icon={<UserSettingsSignInAvatar />}
|
|
63
|
+
to="/settings"
|
|
64
|
+
+ priority={1}
|
|
65
|
+
>
|
|
66
|
+
<SidebarSettings />
|
|
67
|
+
</SidebarGroup>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If you decide against adding `SidebarGroup`s to your `Sidebar` the `MobileSidebar` will contain one default menu item, which will open a full-screen overlay menu displaying all the content of the current `Sidebar`.
|
|
71
|
+
|
|
72
|
+
More information on the `SidebarGroup` & the `MobileSidebar` component can be found in the changeset for the `core-components`.
|
|
73
|
+
|
|
74
|
+
- 08fa6a604a: The app template has been updated to add an explicit dependency on `typescript` in the root `package.json`. This is because it was removed as a dependency of `@backstage/cli` in order to decouple the TypeScript versioning in Backstage projects.
|
|
75
|
+
|
|
76
|
+
To apply this change in an existing app, add a `typescript` dependency to your `package.json` in the project root:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
"dependencies": {
|
|
80
|
+
...
|
|
81
|
+
"typescript": "~4.5.4",
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
We recommend using a `~` version range since TypeScript releases do not adhere to semver.
|
|
86
|
+
|
|
87
|
+
It may be the case that you end up with errors if you upgrade the TypeScript version. This is because there was a change to TypeScript not long ago that defaulted the type of errors caught in `catch` blocks to `unknown`. You can work around this by adding `"useUnknownInCatchVariables": false` to the `"compilerOptions"` in your `tsconfig.json`:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
"compilerOptions": {
|
|
91
|
+
...
|
|
92
|
+
"useUnknownInCatchVariables": false
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Another option is to use the utilities from `@backstage/errors` to assert the type of errors caught in `catch` blocks:
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
import { assertError, isError } from '@backstage/errors';
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
...
|
|
103
|
+
} catch (error) {
|
|
104
|
+
assertError(error);
|
|
105
|
+
...
|
|
106
|
+
// OR
|
|
107
|
+
if (isError(error)) {
|
|
108
|
+
...
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
- Updated dependencies
|
|
114
|
+
- @backstage/plugin-tech-radar@0.5.3-next.0
|
|
115
|
+
- @backstage/plugin-auth-backend@0.7.0-next.0
|
|
116
|
+
- @backstage/core-components@0.8.5-next.0
|
|
117
|
+
- @backstage/plugin-api-docs@0.6.23-next.0
|
|
118
|
+
- @backstage/plugin-catalog-backend@0.21.0-next.0
|
|
119
|
+
- @backstage/plugin-permission-common@0.4.0-next.0
|
|
120
|
+
- @backstage/cli@0.12.0-next.0
|
|
121
|
+
- @backstage/core-plugin-api@0.6.0-next.0
|
|
122
|
+
- @backstage/plugin-catalog@0.7.9-next.0
|
|
123
|
+
- @backstage/plugin-user-settings@0.3.17-next.0
|
|
124
|
+
- @backstage/backend-common@0.10.4-next.0
|
|
125
|
+
- @backstage/config@0.1.13-next.0
|
|
126
|
+
- @backstage/plugin-app-backend@0.3.22-next.0
|
|
127
|
+
- @backstage/core-app-api@0.5.0-next.0
|
|
128
|
+
- @backstage/plugin-catalog-import@0.7.10-next.0
|
|
129
|
+
- @backstage/plugin-scaffolder@0.11.19-next.0
|
|
130
|
+
- @backstage/plugin-search@0.5.6-next.0
|
|
131
|
+
- @backstage/plugin-techdocs@0.12.15-next.0
|
|
132
|
+
- @backstage/plugin-permission-node@0.4.0-next.0
|
|
133
|
+
- @backstage/catalog-model@0.9.10-next.0
|
|
134
|
+
- @backstage/integration-react@0.1.19-next.0
|
|
135
|
+
- @backstage/plugin-explore@0.3.26-next.0
|
|
136
|
+
- @backstage/plugin-github-actions@0.4.32-next.0
|
|
137
|
+
- @backstage/plugin-lighthouse@0.2.35-next.0
|
|
138
|
+
- @backstage/plugin-scaffolder-backend@0.15.21-next.0
|
|
139
|
+
- @backstage/backend-tasks@0.1.4-next.0
|
|
140
|
+
- @backstage/catalog-client@0.5.5-next.0
|
|
141
|
+
- @backstage/test-utils@0.2.3-next.0
|
|
142
|
+
- @backstage/plugin-proxy-backend@0.2.16-next.0
|
|
143
|
+
- @backstage/plugin-rollbar-backend@0.1.19-next.0
|
|
144
|
+
- @backstage/plugin-search-backend@0.3.1-next.0
|
|
145
|
+
- @backstage/plugin-techdocs-backend@0.12.4-next.0
|
|
146
|
+
|
|
3
147
|
## 0.4.12
|
|
4
148
|
|
|
5
149
|
### Patch Changes
|
|
@@ -16,7 +160,7 @@
|
|
|
16
160
|
|
|
17
161
|
function makeCreateEnv(config: Config) {
|
|
18
162
|
...
|
|
19
|
-
+ const permissions =
|
|
163
|
+
+ const permissions = ServerPermissionClient.fromConfig(config, {
|
|
20
164
|
+ discovery,
|
|
21
165
|
+ tokenManager,
|
|
22
166
|
+ });
|
package/dist/index.cjs.js
CHANGED
|
@@ -55,85 +55,85 @@ ${chalk__default["default"].red(`${error}`)}
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
var version$D = "0.4.
|
|
58
|
+
var version$D = "0.4.13";
|
|
59
59
|
|
|
60
|
-
var version$C = "0.1.
|
|
60
|
+
var version$C = "0.1.5-next.0";
|
|
61
61
|
|
|
62
|
-
var version$B = "0.10.
|
|
62
|
+
var version$B = "0.10.4-next.0";
|
|
63
63
|
|
|
64
|
-
var version$A = "0.1.
|
|
64
|
+
var version$A = "0.1.4-next.0";
|
|
65
65
|
|
|
66
|
-
var version$z = "0.5.
|
|
66
|
+
var version$z = "0.5.5-next.0";
|
|
67
67
|
|
|
68
|
-
var version$y = "0.9.
|
|
68
|
+
var version$y = "0.9.10-next.0";
|
|
69
69
|
|
|
70
|
-
var version$x = "0.
|
|
70
|
+
var version$x = "0.12.0-next.0";
|
|
71
71
|
|
|
72
|
-
var version$w = "0.1.
|
|
72
|
+
var version$w = "0.1.13-next.0";
|
|
73
73
|
|
|
74
|
-
var version$v = "0.
|
|
74
|
+
var version$v = "0.5.0-next.0";
|
|
75
75
|
|
|
76
|
-
var version$u = "0.8.
|
|
76
|
+
var version$u = "0.8.5-next.0";
|
|
77
77
|
|
|
78
|
-
var version$t = "0.
|
|
78
|
+
var version$t = "0.6.0-next.0";
|
|
79
79
|
|
|
80
80
|
var version$s = "0.2.0";
|
|
81
81
|
|
|
82
|
-
var version$r = "0.1.
|
|
82
|
+
var version$r = "0.1.19-next.0";
|
|
83
83
|
|
|
84
|
-
var version$q = "0.2.
|
|
84
|
+
var version$q = "0.2.3-next.0";
|
|
85
85
|
|
|
86
86
|
var version$p = "0.2.14";
|
|
87
87
|
|
|
88
|
-
var version$o = "0.6.
|
|
88
|
+
var version$o = "0.6.23-next.0";
|
|
89
89
|
|
|
90
|
-
var version$n = "0.3.
|
|
90
|
+
var version$n = "0.3.22-next.0";
|
|
91
91
|
|
|
92
|
-
var version$m = "0.
|
|
92
|
+
var version$m = "0.7.0-next.0";
|
|
93
93
|
|
|
94
|
-
var version$l = "0.7.
|
|
94
|
+
var version$l = "0.7.9-next.0";
|
|
95
95
|
|
|
96
|
-
var version$k = "0.6.
|
|
96
|
+
var version$k = "0.6.12-next.0";
|
|
97
97
|
|
|
98
|
-
var version$j = "0.
|
|
98
|
+
var version$j = "0.21.0-next.0";
|
|
99
99
|
|
|
100
|
-
var version$i = "0.7.
|
|
100
|
+
var version$i = "0.7.10-next.0";
|
|
101
101
|
|
|
102
|
-
var version$h = "0.2.
|
|
102
|
+
var version$h = "0.2.35-next.0";
|
|
103
103
|
|
|
104
|
-
var version$g = "0.3.
|
|
104
|
+
var version$g = "0.3.26-next.0";
|
|
105
105
|
|
|
106
|
-
var version$f = "0.4.
|
|
106
|
+
var version$f = "0.4.32-next.0";
|
|
107
107
|
|
|
108
|
-
var version$e = "0.2.
|
|
108
|
+
var version$e = "0.2.35-next.0";
|
|
109
109
|
|
|
110
|
-
var version$d = "0.3.
|
|
110
|
+
var version$d = "0.3.35-next.0";
|
|
111
111
|
|
|
112
|
-
var version$c = "0.
|
|
112
|
+
var version$c = "0.4.0-next.0";
|
|
113
113
|
|
|
114
|
-
var version$b = "0.
|
|
114
|
+
var version$b = "0.4.0-next.0";
|
|
115
115
|
|
|
116
|
-
var version$a = "0.2.
|
|
116
|
+
var version$a = "0.2.16-next.0";
|
|
117
117
|
|
|
118
|
-
var version$9 = "0.1.
|
|
118
|
+
var version$9 = "0.1.19-next.0";
|
|
119
119
|
|
|
120
|
-
var version$8 = "0.11.
|
|
120
|
+
var version$8 = "0.11.19-next.0";
|
|
121
121
|
|
|
122
|
-
var version$7 = "0.15.
|
|
122
|
+
var version$7 = "0.15.21-next.0";
|
|
123
123
|
|
|
124
|
-
var version$6 = "0.5.
|
|
124
|
+
var version$6 = "0.5.6-next.0";
|
|
125
125
|
|
|
126
|
-
var version$5 = "0.3.0";
|
|
126
|
+
var version$5 = "0.3.1-next.0";
|
|
127
127
|
|
|
128
128
|
var version$4 = "0.4.4";
|
|
129
129
|
|
|
130
|
-
var version$3 = "0.5.
|
|
130
|
+
var version$3 = "0.5.3-next.0";
|
|
131
131
|
|
|
132
|
-
var version$2 = "0.12.
|
|
132
|
+
var version$2 = "0.12.15-next.0";
|
|
133
133
|
|
|
134
|
-
var version$1 = "0.12.
|
|
134
|
+
var version$1 = "0.12.4-next.0";
|
|
135
135
|
|
|
136
|
-
var version = "0.3.
|
|
136
|
+
var version = "0.3.17-next.0";
|
|
137
137
|
|
|
138
138
|
const packageVersions = {
|
|
139
139
|
"@backstage/app-defaults": version$C,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/create-app",
|
|
3
3
|
"description": "A CLI that helps you create your own Backstage app",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.13",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"dist",
|
|
58
58
|
"templates"
|
|
59
59
|
],
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "31184691d5a38cb78b091c8f7ad6db80604519a6"
|
|
61
61
|
}
|
|
@@ -24,21 +24,27 @@ import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
|
|
|
24
24
|
import LogoFull from './LogoFull';
|
|
25
25
|
import LogoIcon from './LogoIcon';
|
|
26
26
|
import { NavLink } from 'react-router-dom';
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
Settings as SidebarSettings,
|
|
29
|
+
UserSettingsSignInAvatar,
|
|
30
|
+
} from '@backstage/plugin-user-settings';
|
|
28
31
|
import {
|
|
29
32
|
SidebarSearchModal,
|
|
30
33
|
SearchContextProvider,
|
|
31
34
|
} from '@backstage/plugin-search';
|
|
32
35
|
import {
|
|
33
36
|
Sidebar,
|
|
34
|
-
SidebarPage,
|
|
35
37
|
sidebarConfig,
|
|
36
38
|
SidebarContext,
|
|
37
|
-
SidebarItem,
|
|
38
39
|
SidebarDivider,
|
|
39
|
-
|
|
40
|
+
SidebarGroup,
|
|
41
|
+
SidebarItem,
|
|
42
|
+
SidebarPage,
|
|
40
43
|
SidebarScrollWrapper,
|
|
44
|
+
SidebarSpace,
|
|
41
45
|
} from '@backstage/core-components';
|
|
46
|
+
import MenuIcon from '@material-ui/icons/Menu';
|
|
47
|
+
import SearchIcon from '@material-ui/icons/Search';
|
|
42
48
|
|
|
43
49
|
const useSidebarLogoStyles = makeStyles({
|
|
44
50
|
root: {
|
|
@@ -77,23 +83,33 @@ export const Root = ({ children }: PropsWithChildren<{}>) => (
|
|
|
77
83
|
<SidebarPage>
|
|
78
84
|
<Sidebar>
|
|
79
85
|
<SidebarLogo />
|
|
80
|
-
<
|
|
81
|
-
<
|
|
82
|
-
|
|
86
|
+
<SidebarGroup label="Search" icon={<SearchIcon />} to="/search">
|
|
87
|
+
<SearchContextProvider>
|
|
88
|
+
<SidebarSearchModal />
|
|
89
|
+
</SearchContextProvider>{' '}
|
|
90
|
+
</SidebarGroup>
|
|
83
91
|
<SidebarDivider />
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<
|
|
93
|
-
|
|
92
|
+
<SidebarGroup label="Menu" icon={<MenuIcon />}>
|
|
93
|
+
{/* Global nav, not org-specific */}
|
|
94
|
+
<SidebarItem icon={HomeIcon} to="catalog" text="Home" />
|
|
95
|
+
<SidebarItem icon={ExtensionIcon} to="api-docs" text="APIs" />
|
|
96
|
+
<SidebarItem icon={LibraryBooks} to="docs" text="Docs" />
|
|
97
|
+
<SidebarItem icon={CreateComponentIcon} to="create" text="Create..." />
|
|
98
|
+
{/* End global nav */}
|
|
99
|
+
<SidebarDivider />
|
|
100
|
+
<SidebarScrollWrapper>
|
|
101
|
+
<SidebarItem icon={MapIcon} to="tech-radar" text="Tech Radar" />
|
|
102
|
+
</SidebarScrollWrapper>
|
|
103
|
+
</SidebarGroup>
|
|
94
104
|
<SidebarSpace />
|
|
95
105
|
<SidebarDivider />
|
|
96
|
-
<
|
|
106
|
+
<SidebarGroup
|
|
107
|
+
label="Settings"
|
|
108
|
+
icon={<UserSettingsSignInAvatar />}
|
|
109
|
+
to="/settings"
|
|
110
|
+
>
|
|
111
|
+
<SidebarSettings />
|
|
112
|
+
</SidebarGroup>
|
|
97
113
|
</Sidebar>
|
|
98
114
|
{children}
|
|
99
115
|
</SidebarPage>
|
|
@@ -5,10 +5,12 @@ import { PluginEnvironment } from '../types';
|
|
|
5
5
|
export default async function createPlugin({
|
|
6
6
|
logger,
|
|
7
7
|
config,
|
|
8
|
+
database,
|
|
8
9
|
}: PluginEnvironment): Promise<Router> {
|
|
9
10
|
return await createRouter({
|
|
10
11
|
logger,
|
|
11
12
|
config,
|
|
13
|
+
database,
|
|
12
14
|
appPackageName: 'app',
|
|
13
15
|
});
|
|
14
16
|
}
|