@backstage/app-defaults 0.1.1 → 0.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @backstage/app-defaults
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - cd450844f6: Moved React dependencies to `peerDependencies` and allow both React v16 and v17 to be used.
8
+ - Updated dependencies
9
+ - @backstage/core-components@0.8.0
10
+ - @backstage/core-plugin-api@0.3.0
11
+ - @backstage/core-app-api@0.2.0
12
+
3
13
  ## 0.1.1
4
14
 
5
15
  ### Patch Changes
package/dist/index.esm.js CHANGED
@@ -32,8 +32,8 @@ import CssBaseline from '@material-ui/core/CssBaseline';
32
32
  const apis = [
33
33
  createApiFactory({
34
34
  api: discoveryApiRef,
35
- deps: {configApi: configApiRef},
36
- factory: ({configApi}) => UrlPatternDiscovery.compile(`${configApi.getString("backend.baseUrl")}/api/{{ pluginId }}`)
35
+ deps: { configApi: configApiRef },
36
+ factory: ({ configApi }) => UrlPatternDiscovery.compile(`${configApi.getString("backend.baseUrl")}/api/{{ pluginId }}`)
37
37
  }),
38
38
  createApiFactory({
39
39
  api: alertApiRef,
@@ -47,17 +47,17 @@ const apis = [
47
47
  }),
48
48
  createApiFactory({
49
49
  api: errorApiRef,
50
- deps: {alertApi: alertApiRef},
51
- factory: ({alertApi}) => {
50
+ deps: { alertApi: alertApiRef },
51
+ factory: ({ alertApi }) => {
52
52
  const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());
53
- UnhandledErrorForwarder.forward(errorApi, {hidden: false});
53
+ UnhandledErrorForwarder.forward(errorApi, { hidden: false });
54
54
  return errorApi;
55
55
  }
56
56
  }),
57
57
  createApiFactory({
58
58
  api: storageApiRef,
59
- deps: {errorApi: errorApiRef},
60
- factory: ({errorApi}) => WebStorage.create({errorApi})
59
+ deps: { errorApi: errorApiRef },
60
+ factory: ({ errorApi }) => WebStorage.create({ errorApi })
61
61
  }),
62
62
  createApiFactory({
63
63
  api: oauthRequestApiRef,
@@ -71,7 +71,7 @@ const apis = [
71
71
  oauthRequestApi: oauthRequestApiRef,
72
72
  configApi: configApiRef
73
73
  },
74
- factory: ({discoveryApi, oauthRequestApi, configApi}) => GoogleAuth.create({
74
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => GoogleAuth.create({
75
75
  discoveryApi,
76
76
  oauthRequestApi,
77
77
  environment: configApi.getOptionalString("auth.environment")
@@ -84,7 +84,7 @@ const apis = [
84
84
  oauthRequestApi: oauthRequestApiRef,
85
85
  configApi: configApiRef
86
86
  },
87
- factory: ({discoveryApi, oauthRequestApi, configApi}) => MicrosoftAuth.create({
87
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => MicrosoftAuth.create({
88
88
  discoveryApi,
89
89
  oauthRequestApi,
90
90
  environment: configApi.getOptionalString("auth.environment")
@@ -97,7 +97,7 @@ const apis = [
97
97
  oauthRequestApi: oauthRequestApiRef,
98
98
  configApi: configApiRef
99
99
  },
100
- factory: ({discoveryApi, oauthRequestApi, configApi}) => GithubAuth.create({
100
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => GithubAuth.create({
101
101
  discoveryApi,
102
102
  oauthRequestApi,
103
103
  defaultScopes: ["read:user"],
@@ -111,7 +111,7 @@ const apis = [
111
111
  oauthRequestApi: oauthRequestApiRef,
112
112
  configApi: configApiRef
113
113
  },
114
- factory: ({discoveryApi, oauthRequestApi, configApi}) => OktaAuth.create({
114
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => OktaAuth.create({
115
115
  discoveryApi,
116
116
  oauthRequestApi,
117
117
  environment: configApi.getOptionalString("auth.environment")
@@ -124,7 +124,7 @@ const apis = [
124
124
  oauthRequestApi: oauthRequestApiRef,
125
125
  configApi: configApiRef
126
126
  },
127
- factory: ({discoveryApi, oauthRequestApi, configApi}) => GitlabAuth.create({
127
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => GitlabAuth.create({
128
128
  discoveryApi,
129
129
  oauthRequestApi,
130
130
  environment: configApi.getOptionalString("auth.environment")
@@ -137,7 +137,7 @@ const apis = [
137
137
  oauthRequestApi: oauthRequestApiRef,
138
138
  configApi: configApiRef
139
139
  },
140
- factory: ({discoveryApi, oauthRequestApi, configApi}) => Auth0Auth.create({
140
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => Auth0Auth.create({
141
141
  discoveryApi,
142
142
  oauthRequestApi,
143
143
  environment: configApi.getOptionalString("auth.environment")
@@ -150,7 +150,7 @@ const apis = [
150
150
  oauthRequestApi: oauthRequestApiRef,
151
151
  configApi: configApiRef
152
152
  },
153
- factory: ({discoveryApi, oauthRequestApi, configApi}) => OAuth2.create({
153
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => OAuth2.create({
154
154
  discoveryApi,
155
155
  oauthRequestApi,
156
156
  environment: configApi.getOptionalString("auth.environment")
@@ -162,7 +162,7 @@ const apis = [
162
162
  discoveryApi: discoveryApiRef,
163
163
  configApi: configApiRef
164
164
  },
165
- factory: ({discoveryApi, configApi}) => SamlAuth.create({
165
+ factory: ({ discoveryApi, configApi }) => SamlAuth.create({
166
166
  discoveryApi,
167
167
  environment: configApi.getOptionalString("auth.environment")
168
168
  })
@@ -174,7 +174,7 @@ const apis = [
174
174
  oauthRequestApi: oauthRequestApiRef,
175
175
  configApi: configApiRef
176
176
  },
177
- factory: ({discoveryApi, oauthRequestApi, configApi}) => OneLoginAuth.create({
177
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => OneLoginAuth.create({
178
178
  discoveryApi,
179
179
  oauthRequestApi,
180
180
  environment: configApi.getOptionalString("auth.environment")
@@ -187,7 +187,7 @@ const apis = [
187
187
  oauthRequestApi: oauthRequestApiRef,
188
188
  configApi: configApiRef
189
189
  },
190
- factory: ({discoveryApi, oauthRequestApi, configApi}) => OAuth2.create({
190
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => OAuth2.create({
191
191
  discoveryApi,
192
192
  oauthRequestApi,
193
193
  provider: {
@@ -205,7 +205,7 @@ const apis = [
205
205
  oauthRequestApi: oauthRequestApiRef,
206
206
  configApi: configApiRef
207
207
  },
208
- factory: ({discoveryApi, oauthRequestApi, configApi}) => BitbucketAuth.create({
208
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => BitbucketAuth.create({
209
209
  discoveryApi,
210
210
  oauthRequestApi,
211
211
  defaultScopes: ["team"],
@@ -219,7 +219,7 @@ const apis = [
219
219
  oauthRequestApi: oauthRequestApiRef,
220
220
  configApi: configApiRef
221
221
  },
222
- factory: ({discoveryApi, oauthRequestApi, configApi}) => {
222
+ factory: ({ discoveryApi, oauthRequestApi, configApi }) => {
223
223
  return AtlassianAuth.create({
224
224
  discoveryApi,
225
225
  oauthRequestApi,
@@ -229,7 +229,7 @@ const apis = [
229
229
  })
230
230
  ];
231
231
 
232
- function OptionallyWrapInRouter({children}) {
232
+ function OptionallyWrapInRouter({ children }) {
233
233
  if (useInRouterContext()) {
234
234
  return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
235
235
  }
@@ -239,7 +239,7 @@ const DefaultNotFoundPage = () => /* @__PURE__ */ React.createElement(ErrorPage,
239
239
  status: "404",
240
240
  statusMessage: "PAGE NOT FOUND"
241
241
  });
242
- const DefaultBootErrorPage = ({step, error}) => {
242
+ const DefaultBootErrorPage = ({ step, error }) => {
243
243
  let message = "";
244
244
  if (step === "load-config") {
245
245
  message = `The configuration failed to load, someone should have a look at this error: ${error.message}`;
@@ -304,7 +304,7 @@ const themes = [
304
304
  variant: "light",
305
305
  icon: /* @__PURE__ */ React.createElement(LightIcon, null),
306
306
  theme: lightTheme,
307
- Provider: ({children}) => /* @__PURE__ */ React.createElement(ThemeProvider, {
307
+ Provider: ({ children }) => /* @__PURE__ */ React.createElement(ThemeProvider, {
308
308
  theme: lightTheme
309
309
  }, /* @__PURE__ */ React.createElement(CssBaseline, null, children))
310
310
  },
@@ -314,7 +314,7 @@ const themes = [
314
314
  variant: "dark",
315
315
  icon: /* @__PURE__ */ React.createElement(DarkIcon, null),
316
316
  theme: darkTheme,
317
- Provider: ({children}) => /* @__PURE__ */ React.createElement(ThemeProvider, {
317
+ Provider: ({ children }) => /* @__PURE__ */ React.createElement(ThemeProvider, {
318
318
  theme: darkTheme
319
319
  }, /* @__PURE__ */ React.createElement(CssBaseline, null, children))
320
320
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/defaults/apis.ts","../src/defaults/components.tsx","../src/defaults/icons.tsx","../src/defaults/themes.tsx","../src/createApp.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AlertApiForwarder,\n NoOpAnalyticsApi,\n ErrorApiForwarder,\n ErrorAlerter,\n GoogleAuth,\n GithubAuth,\n OAuth2,\n OktaAuth,\n GitlabAuth,\n Auth0Auth,\n MicrosoftAuth,\n BitbucketAuth,\n OAuthRequestManager,\n WebStorage,\n UrlPatternDiscovery,\n SamlAuth,\n OneLoginAuth,\n UnhandledErrorForwarder,\n AtlassianAuth,\n} from '@backstage/core-app-api';\n\nimport {\n createApiFactory,\n alertApiRef,\n analyticsApiRef,\n errorApiRef,\n discoveryApiRef,\n oauthRequestApiRef,\n googleAuthApiRef,\n githubAuthApiRef,\n oauth2ApiRef,\n oktaAuthApiRef,\n gitlabAuthApiRef,\n auth0AuthApiRef,\n microsoftAuthApiRef,\n storageApiRef,\n configApiRef,\n samlAuthApiRef,\n oneloginAuthApiRef,\n oidcAuthApiRef,\n bitbucketAuthApiRef,\n atlassianAuthApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const apis = [\n createApiFactory({\n api: discoveryApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) =>\n UrlPatternDiscovery.compile(\n `${configApi.getString('backend.baseUrl')}/api/{{ pluginId }}`,\n ),\n }),\n createApiFactory({\n api: alertApiRef,\n deps: {},\n factory: () => new AlertApiForwarder(),\n }),\n createApiFactory({\n api: analyticsApiRef,\n deps: {},\n factory: () => new NoOpAnalyticsApi(),\n }),\n createApiFactory({\n api: errorApiRef,\n deps: { alertApi: alertApiRef },\n factory: ({ alertApi }) => {\n const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());\n UnhandledErrorForwarder.forward(errorApi, { hidden: false });\n return errorApi;\n },\n }),\n createApiFactory({\n api: storageApiRef,\n deps: { errorApi: errorApiRef },\n factory: ({ errorApi }) => WebStorage.create({ errorApi }),\n }),\n createApiFactory({\n api: oauthRequestApiRef,\n deps: {},\n factory: () => new OAuthRequestManager(),\n }),\n createApiFactory({\n api: googleAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GoogleAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: microsoftAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n MicrosoftAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: githubAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GithubAuth.create({\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['read:user'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oktaAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OktaAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: gitlabAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GitlabAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: auth0AuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n Auth0Auth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oauth2ApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OAuth2.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: samlAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, configApi }) =>\n SamlAuth.create({\n discoveryApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oneloginAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OneLoginAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oidcAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OAuth2.create({\n discoveryApi,\n oauthRequestApi,\n provider: {\n id: 'oidc',\n title: 'Your Identity Provider',\n icon: () => null,\n },\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: bitbucketAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketAuth.create({\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['team'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: atlassianAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return AtlassianAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n];\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { ReactNode } from 'react';\nimport Button from '@material-ui/core/Button';\nimport { ErrorPanel, Progress, ErrorPage } from '@backstage/core-components';\nimport {\n MemoryRouter,\n useInRouterContext,\n BrowserRouter,\n} from 'react-router-dom';\nimport {\n AppComponents,\n BootErrorPageProps,\n ErrorBoundaryFallbackProps,\n} from '@backstage/core-plugin-api';\n\nexport function OptionallyWrapInRouter({ children }: { children: ReactNode }) {\n if (useInRouterContext()) {\n return <>{children}</>;\n }\n return <MemoryRouter>{children}</MemoryRouter>;\n}\n\nconst DefaultNotFoundPage = () => (\n <ErrorPage status=\"404\" statusMessage=\"PAGE NOT FOUND\" />\n);\n\nconst DefaultBootErrorPage = ({ step, error }: BootErrorPageProps) => {\n let message = '';\n if (step === 'load-config') {\n message = `The configuration failed to load, someone should have a look at this error: ${error.message}`;\n } else if (step === 'load-chunk') {\n message = `Lazy loaded chunk failed to load, try to reload the page: ${error.message}`;\n }\n // TODO: figure out a nicer way to handle routing on the error page, when it can be done.\n return (\n <OptionallyWrapInRouter>\n <ErrorPage status=\"501\" statusMessage={message} />\n </OptionallyWrapInRouter>\n );\n};\n\nconst DefaultErrorBoundaryFallback = ({\n error,\n resetError,\n plugin,\n}: ErrorBoundaryFallbackProps) => {\n return (\n <ErrorPanel\n title={`Error in ${plugin?.getId()}`}\n defaultExpanded\n error={error}\n >\n <Button variant=\"outlined\" onClick={resetError}>\n Retry\n </Button>\n </ErrorPanel>\n );\n};\n\n/**\n * Creates a set of default components to pass along to {@link @backstage/core-app-api#createApp}.\n *\n * @public\n */\nexport const components: AppComponents = {\n Progress,\n Router: BrowserRouter,\n NotFoundErrorPage: DefaultNotFoundPage,\n BootErrorPage: DefaultBootErrorPage,\n ErrorBoundaryFallback: DefaultErrorBoundaryFallback,\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport MuiApartmentIcon from '@material-ui/icons/Apartment';\nimport MuiBrokenImageIcon from '@material-ui/icons/BrokenImage';\nimport MuiCategoryIcon from '@material-ui/icons/Category';\nimport MuiCreateNewFolderIcon from '@material-ui/icons/CreateNewFolder';\nimport MuiSubjectIcon from '@material-ui/icons/Subject';\nimport MuiSearchIcon from '@material-ui/icons/Search';\nimport MuiChatIcon from '@material-ui/icons/Chat';\nimport MuiDashboardIcon from '@material-ui/icons/Dashboard';\nimport MuiDocsIcon from '@material-ui/icons/Description';\nimport MuiEmailIcon from '@material-ui/icons/Email';\nimport MuiExtensionIcon from '@material-ui/icons/Extension';\nimport MuiGitHubIcon from '@material-ui/icons/GitHub';\nimport MuiHelpIcon from '@material-ui/icons/Help';\nimport MuiLocationOnIcon from '@material-ui/icons/LocationOn';\nimport MuiMemoryIcon from '@material-ui/icons/Memory';\nimport MuiMenuBookIcon from '@material-ui/icons/MenuBook';\nimport MuiPeopleIcon from '@material-ui/icons/People';\nimport MuiPersonIcon from '@material-ui/icons/Person';\nimport MuiWarningIcon from '@material-ui/icons/Warning';\n\nexport const icons = {\n brokenImage: MuiBrokenImageIcon as IconComponent,\n // To be confirmed: see https://github.com/backstage/backstage/issues/4970\n catalog: MuiMenuBookIcon as IconComponent,\n scaffolder: MuiCreateNewFolderIcon as IconComponent,\n techdocs: MuiSubjectIcon as IconComponent,\n search: MuiSearchIcon as IconComponent,\n chat: MuiChatIcon as IconComponent,\n dashboard: MuiDashboardIcon as IconComponent,\n docs: MuiDocsIcon as IconComponent,\n email: MuiEmailIcon as IconComponent,\n github: MuiGitHubIcon as IconComponent,\n group: MuiPeopleIcon as IconComponent,\n help: MuiHelpIcon as IconComponent,\n 'kind:api': MuiExtensionIcon as IconComponent,\n 'kind:component': MuiMemoryIcon as IconComponent,\n 'kind:domain': MuiApartmentIcon as IconComponent,\n 'kind:group': MuiPeopleIcon as IconComponent,\n 'kind:location': MuiLocationOnIcon as IconComponent,\n 'kind:system': MuiCategoryIcon as IconComponent,\n 'kind:user': MuiPersonIcon as IconComponent,\n user: MuiPersonIcon as IconComponent,\n warning: MuiWarningIcon as IconComponent,\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { darkTheme, lightTheme } from '@backstage/theme';\nimport DarkIcon from '@material-ui/icons/Brightness2';\nimport LightIcon from '@material-ui/icons/WbSunny';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { AppTheme } from '@backstage/core-plugin-api';\n\nexport const themes: AppTheme[] = [\n {\n id: 'light',\n title: 'Light Theme',\n variant: 'light',\n icon: <LightIcon />,\n theme: lightTheme,\n Provider: ({ children }) => (\n <ThemeProvider theme={lightTheme}>\n <CssBaseline>{children}</CssBaseline>\n </ThemeProvider>\n ),\n },\n {\n id: 'dark',\n title: 'Dark Theme',\n variant: 'dark',\n icon: <DarkIcon />,\n theme: darkTheme,\n Provider: ({ children }) => (\n <ThemeProvider theme={darkTheme}>\n <CssBaseline>{children}</CssBaseline>\n </ThemeProvider>\n ),\n },\n];\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { apis, components, icons, themes } from './defaults';\nimport {\n AppTheme,\n BackstagePlugin,\n IconComponent,\n} from '@backstage/core-plugin-api';\nimport {\n AppComponents,\n AppOptions,\n AppIcons,\n createSpecializedApp,\n} from '@backstage/core-app-api';\n\n/**\n * Creates a new Backstage App using a default set of components, icons and themes unless\n * they are explicitly provided.\n *\n * @public\n */\nexport function createApp(\n options?: Omit<AppOptions, keyof OptionalAppOptions> & OptionalAppOptions,\n) {\n return createSpecializedApp({\n ...options,\n apis: options?.apis ?? [],\n bindRoutes: options?.bindRoutes,\n components: {\n ...components,\n ...options?.components,\n },\n configLoader: options?.configLoader,\n defaultApis: apis,\n icons: {\n ...icons,\n ...options?.icons,\n },\n plugins: (options?.plugins as BackstagePlugin<any, any>[]) ?? [],\n themes: options?.themes ?? themes,\n });\n}\n\n/**\n * The set of app options that {@link createApp} will provide defaults for\n * if they are not passed in explicitly.\n *\n * @public\n */\nexport type OptionalAppOptions = {\n /**\n * A set of icons to override the default icons with.\n *\n * The override is applied for each icon individually.\n *\n * @public\n */\n icons?: Partial<AppIcons> & {\n [key in string]: IconComponent;\n };\n\n /**\n * A set of themes that override all of the default app themes.\n *\n * If this option is provided none of the default themes will be used.\n *\n * @public\n */\n themes?: (Partial<AppTheme> & Omit<AppTheme, 'theme'>)[]; // TODO: simplify once AppTheme is updated\n\n /**\n * A set of components to override the default components with.\n *\n * The override is applied for each icon individually.\n *\n * @public\n */\n components?: Partial<AppComponents>;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/defaults/apis.ts","../src/defaults/components.tsx","../src/defaults/icons.tsx","../src/defaults/themes.tsx","../src/createApp.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AlertApiForwarder,\n NoOpAnalyticsApi,\n ErrorApiForwarder,\n ErrorAlerter,\n GoogleAuth,\n GithubAuth,\n OAuth2,\n OktaAuth,\n GitlabAuth,\n Auth0Auth,\n MicrosoftAuth,\n BitbucketAuth,\n OAuthRequestManager,\n WebStorage,\n UrlPatternDiscovery,\n SamlAuth,\n OneLoginAuth,\n UnhandledErrorForwarder,\n AtlassianAuth,\n} from '@backstage/core-app-api';\n\nimport {\n createApiFactory,\n alertApiRef,\n analyticsApiRef,\n errorApiRef,\n discoveryApiRef,\n oauthRequestApiRef,\n googleAuthApiRef,\n githubAuthApiRef,\n oauth2ApiRef,\n oktaAuthApiRef,\n gitlabAuthApiRef,\n auth0AuthApiRef,\n microsoftAuthApiRef,\n storageApiRef,\n configApiRef,\n samlAuthApiRef,\n oneloginAuthApiRef,\n oidcAuthApiRef,\n bitbucketAuthApiRef,\n atlassianAuthApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const apis = [\n createApiFactory({\n api: discoveryApiRef,\n deps: { configApi: configApiRef },\n factory: ({ configApi }) =>\n UrlPatternDiscovery.compile(\n `${configApi.getString('backend.baseUrl')}/api/{{ pluginId }}`,\n ),\n }),\n createApiFactory({\n api: alertApiRef,\n deps: {},\n factory: () => new AlertApiForwarder(),\n }),\n createApiFactory({\n api: analyticsApiRef,\n deps: {},\n factory: () => new NoOpAnalyticsApi(),\n }),\n createApiFactory({\n api: errorApiRef,\n deps: { alertApi: alertApiRef },\n factory: ({ alertApi }) => {\n const errorApi = new ErrorAlerter(alertApi, new ErrorApiForwarder());\n UnhandledErrorForwarder.forward(errorApi, { hidden: false });\n return errorApi;\n },\n }),\n createApiFactory({\n api: storageApiRef,\n deps: { errorApi: errorApiRef },\n factory: ({ errorApi }) => WebStorage.create({ errorApi }),\n }),\n createApiFactory({\n api: oauthRequestApiRef,\n deps: {},\n factory: () => new OAuthRequestManager(),\n }),\n createApiFactory({\n api: googleAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GoogleAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: microsoftAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n MicrosoftAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: githubAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GithubAuth.create({\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['read:user'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oktaAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OktaAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: gitlabAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n GitlabAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: auth0AuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n Auth0Auth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oauth2ApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OAuth2.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: samlAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, configApi }) =>\n SamlAuth.create({\n discoveryApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oneloginAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OneLoginAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: oidcAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n OAuth2.create({\n discoveryApi,\n oauthRequestApi,\n provider: {\n id: 'oidc',\n title: 'Your Identity Provider',\n icon: () => null,\n },\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: bitbucketAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) =>\n BitbucketAuth.create({\n discoveryApi,\n oauthRequestApi,\n defaultScopes: ['team'],\n environment: configApi.getOptionalString('auth.environment'),\n }),\n }),\n createApiFactory({\n api: atlassianAuthApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n oauthRequestApi: oauthRequestApiRef,\n configApi: configApiRef,\n },\n factory: ({ discoveryApi, oauthRequestApi, configApi }) => {\n return AtlassianAuth.create({\n discoveryApi,\n oauthRequestApi,\n environment: configApi.getOptionalString('auth.environment'),\n });\n },\n }),\n];\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { ReactNode } from 'react';\nimport Button from '@material-ui/core/Button';\nimport { ErrorPanel, Progress, ErrorPage } from '@backstage/core-components';\nimport {\n MemoryRouter,\n useInRouterContext,\n BrowserRouter,\n} from 'react-router-dom';\nimport {\n AppComponents,\n BootErrorPageProps,\n ErrorBoundaryFallbackProps,\n} from '@backstage/core-plugin-api';\n\nexport function OptionallyWrapInRouter({ children }: { children: ReactNode }) {\n if (useInRouterContext()) {\n return <>{children}</>;\n }\n return <MemoryRouter>{children}</MemoryRouter>;\n}\n\nconst DefaultNotFoundPage = () => (\n <ErrorPage status=\"404\" statusMessage=\"PAGE NOT FOUND\" />\n);\n\nconst DefaultBootErrorPage = ({ step, error }: BootErrorPageProps) => {\n let message = '';\n if (step === 'load-config') {\n message = `The configuration failed to load, someone should have a look at this error: ${error.message}`;\n } else if (step === 'load-chunk') {\n message = `Lazy loaded chunk failed to load, try to reload the page: ${error.message}`;\n }\n // TODO: figure out a nicer way to handle routing on the error page, when it can be done.\n return (\n <OptionallyWrapInRouter>\n <ErrorPage status=\"501\" statusMessage={message} />\n </OptionallyWrapInRouter>\n );\n};\n\nconst DefaultErrorBoundaryFallback = ({\n error,\n resetError,\n plugin,\n}: ErrorBoundaryFallbackProps) => {\n return (\n <ErrorPanel\n title={`Error in ${plugin?.getId()}`}\n defaultExpanded\n error={error}\n >\n <Button variant=\"outlined\" onClick={resetError}>\n Retry\n </Button>\n </ErrorPanel>\n );\n};\n\n/**\n * Creates a set of default components to pass along to {@link @backstage/core-app-api#createApp}.\n *\n * @public\n */\nexport const components: AppComponents = {\n Progress,\n Router: BrowserRouter,\n NotFoundErrorPage: DefaultNotFoundPage,\n BootErrorPage: DefaultBootErrorPage,\n ErrorBoundaryFallback: DefaultErrorBoundaryFallback,\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport MuiApartmentIcon from '@material-ui/icons/Apartment';\nimport MuiBrokenImageIcon from '@material-ui/icons/BrokenImage';\nimport MuiCategoryIcon from '@material-ui/icons/Category';\nimport MuiCreateNewFolderIcon from '@material-ui/icons/CreateNewFolder';\nimport MuiSubjectIcon from '@material-ui/icons/Subject';\nimport MuiSearchIcon from '@material-ui/icons/Search';\nimport MuiChatIcon from '@material-ui/icons/Chat';\nimport MuiDashboardIcon from '@material-ui/icons/Dashboard';\nimport MuiDocsIcon from '@material-ui/icons/Description';\nimport MuiEmailIcon from '@material-ui/icons/Email';\nimport MuiExtensionIcon from '@material-ui/icons/Extension';\nimport MuiGitHubIcon from '@material-ui/icons/GitHub';\nimport MuiHelpIcon from '@material-ui/icons/Help';\nimport MuiLocationOnIcon from '@material-ui/icons/LocationOn';\nimport MuiMemoryIcon from '@material-ui/icons/Memory';\nimport MuiMenuBookIcon from '@material-ui/icons/MenuBook';\nimport MuiPeopleIcon from '@material-ui/icons/People';\nimport MuiPersonIcon from '@material-ui/icons/Person';\nimport MuiWarningIcon from '@material-ui/icons/Warning';\n\nexport const icons = {\n brokenImage: MuiBrokenImageIcon as IconComponent,\n // To be confirmed: see https://github.com/backstage/backstage/issues/4970\n catalog: MuiMenuBookIcon as IconComponent,\n scaffolder: MuiCreateNewFolderIcon as IconComponent,\n techdocs: MuiSubjectIcon as IconComponent,\n search: MuiSearchIcon as IconComponent,\n chat: MuiChatIcon as IconComponent,\n dashboard: MuiDashboardIcon as IconComponent,\n docs: MuiDocsIcon as IconComponent,\n email: MuiEmailIcon as IconComponent,\n github: MuiGitHubIcon as IconComponent,\n group: MuiPeopleIcon as IconComponent,\n help: MuiHelpIcon as IconComponent,\n 'kind:api': MuiExtensionIcon as IconComponent,\n 'kind:component': MuiMemoryIcon as IconComponent,\n 'kind:domain': MuiApartmentIcon as IconComponent,\n 'kind:group': MuiPeopleIcon as IconComponent,\n 'kind:location': MuiLocationOnIcon as IconComponent,\n 'kind:system': MuiCategoryIcon as IconComponent,\n 'kind:user': MuiPersonIcon as IconComponent,\n user: MuiPersonIcon as IconComponent,\n warning: MuiWarningIcon as IconComponent,\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { darkTheme, lightTheme } from '@backstage/theme';\nimport DarkIcon from '@material-ui/icons/Brightness2';\nimport LightIcon from '@material-ui/icons/WbSunny';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { AppTheme } from '@backstage/core-plugin-api';\n\nexport const themes: AppTheme[] = [\n {\n id: 'light',\n title: 'Light Theme',\n variant: 'light',\n icon: <LightIcon />,\n theme: lightTheme,\n Provider: ({ children }) => (\n <ThemeProvider theme={lightTheme}>\n <CssBaseline>{children}</CssBaseline>\n </ThemeProvider>\n ),\n },\n {\n id: 'dark',\n title: 'Dark Theme',\n variant: 'dark',\n icon: <DarkIcon />,\n theme: darkTheme,\n Provider: ({ children }) => (\n <ThemeProvider theme={darkTheme}>\n <CssBaseline>{children}</CssBaseline>\n </ThemeProvider>\n ),\n },\n];\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { apis, components, icons, themes } from './defaults';\nimport {\n AppTheme,\n BackstagePlugin,\n IconComponent,\n} from '@backstage/core-plugin-api';\nimport {\n AppComponents,\n AppOptions,\n AppIcons,\n createSpecializedApp,\n} from '@backstage/core-app-api';\n\n/**\n * Creates a new Backstage App using a default set of components, icons and themes unless\n * they are explicitly provided.\n *\n * @public\n */\nexport function createApp(\n options?: Omit<AppOptions, keyof OptionalAppOptions> & OptionalAppOptions,\n) {\n return createSpecializedApp({\n ...options,\n apis: options?.apis ?? [],\n bindRoutes: options?.bindRoutes,\n components: {\n ...components,\n ...options?.components,\n },\n configLoader: options?.configLoader,\n defaultApis: apis,\n icons: {\n ...icons,\n ...options?.icons,\n },\n plugins: (options?.plugins as BackstagePlugin<any, any>[]) ?? [],\n themes: options?.themes ?? themes,\n });\n}\n\n/**\n * The set of app options that {@link createApp} will provide defaults for\n * if they are not passed in explicitly.\n *\n * @public\n */\nexport type OptionalAppOptions = {\n /**\n * A set of icons to override the default icons with.\n *\n * The override is applied for each icon individually.\n *\n * @public\n */\n icons?: Partial<AppIcons> & {\n [key in string]: IconComponent;\n };\n\n /**\n * A set of themes that override all of the default app themes.\n *\n * If this option is provided none of the default themes will be used.\n *\n * @public\n */\n themes?: (Partial<AppTheme> & Omit<AppTheme, 'theme'>)[]; // TODO: simplify once AppTheme is updated\n\n /**\n * A set of components to override the default components with.\n *\n * The override is applied for each icon individually.\n *\n * @public\n */\n components?: Partial<AppComponents>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6Da,OAAO;AAAA,EAClB,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM,EAAE,WAAW;AAAA,IACnB,SAAS,CAAC,EAAE,gBACV,oBAAoB,QAClB,GAAG,UAAU,UAAU;AAAA;AAAA,EAG7B,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM,IAAI;AAAA;AAAA,EAErB,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM,IAAI;AAAA;AAAA,EAErB,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM,EAAE,UAAU;AAAA,IAClB,SAAS,CAAC,EAAE,eAAe;AACzB,YAAM,WAAW,IAAI,aAAa,UAAU,IAAI;AAChD,8BAAwB,QAAQ,UAAU,EAAE,QAAQ;AACpD,aAAO;AAAA;AAAA;AAAA,EAGX,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM,EAAE,UAAU;AAAA,IAClB,SAAS,CAAC,EAAE,eAAe,WAAW,OAAO,EAAE;AAAA;AAAA,EAEjD,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM,IAAI;AAAA;AAAA,EAErB,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,WAAW,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,cAAc,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,WAAW,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA,eAAe,CAAC;AAAA,MAChB,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,SAAS,OAAO;AAAA,MACd;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,WAAW,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,UAAU,OAAO;AAAA,MACf;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,OAAO,OAAO;AAAA,MACZ;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,gBACxB,SAAS,OAAO;AAAA,MACd;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,aAAa,OAAO;AAAA,MAClB;AAAA,MACA;AAAA,MACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,OAAO,OAAO;AAAA,MACZ;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM,MAAM;AAAA;AAAA,MAEd,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBACzC,cAAc,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,eAAe,CAAC;AAAA,MAChB,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA,EAG/C,iBAAiB;AAAA,IACf,KAAK;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,WAAW;AAAA;AAAA,IAEb,SAAS,CAAC,EAAE,cAAc,iBAAiB,gBAAgB;AACzD,aAAO,cAAc,OAAO;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,aAAa,UAAU,kBAAkB;AAAA;AAAA;AAAA;AAAA;;gCC/OV,EAAE,YAAqC;AAC5E,MAAI,sBAAsB;AACxB,qEAAU;AAAA;AAEZ,6CAAQ,cAAD,MAAe;AAAA;AAGxB,MAAM,sBAAsB,0CACzB,WAAD;AAAA,EAAW,QAAO;AAAA,EAAM,eAAc;AAAA;AAGxC,MAAM,uBAAuB,CAAC,EAAE,MAAM,YAAgC;AACpE,MAAI,UAAU;AACd,MAAI,SAAS,eAAe;AAC1B,cAAU,+EAA+E,MAAM;AAAA,aACtF,SAAS,cAAc;AAChC,cAAU,6DAA6D,MAAM;AAAA;AAG/E,6CACG,wBAAD,0CACG,WAAD;AAAA,IAAW,QAAO;AAAA,IAAM,eAAe;AAAA;AAAA;AAK7C,MAAM,+BAA+B,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,MACgC;AAChC,6CACG,YAAD;AAAA,IACE,OAAO,YAAY,iCAAQ;AAAA,IAC3B,iBAAe;AAAA,IACf;AAAA,yCAEC,QAAD;AAAA,IAAQ,SAAQ;AAAA,IAAW,SAAS;AAAA,KAAY;AAAA;MAYzC,aAA4B;AAAA,EACvC;AAAA,EACA,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,uBAAuB;AAAA;;MC/CZ,QAAQ;AAAA,EACnB,aAAa;AAAA,EAEb,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA;;MCnCE,SAAqB;AAAA,EAChC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,0CAAO,WAAD;AAAA,IACN,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,mDACV,eAAD;AAAA,MAAe,OAAO;AAAA,2CACnB,aAAD,MAAc;AAAA;AAAA,EAIpB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,0CAAO,UAAD;AAAA,IACN,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,mDACV,eAAD;AAAA,MAAe,OAAO;AAAA,2CACnB,aAAD,MAAc;AAAA;AAAA;;mBCTpB,SACA;AArCF;AAsCE,SAAO,qBAAqB;AAAA,OACvB;AAAA,IACH,MAAM,yCAAS,SAAT,YAAiB;AAAA,IACvB,YAAY,mCAAS;AAAA,IACrB,YAAY;AAAA,SACP;AAAA,SACA,mCAAS;AAAA;AAAA,IAEd,cAAc,mCAAS;AAAA,IACvB,aAAa;AAAA,IACb,OAAO;AAAA,SACF;AAAA,SACA,mCAAS;AAAA;AAAA,IAEd,SAAU,yCAAS,YAAT,YAAoD;AAAA,IAC9D,QAAQ,yCAAS,WAAT,YAAmB;AAAA;AAAA;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/app-defaults",
3
3
  "description": "Provides the default wiring of a Backstage App",
4
- "version": "0.1.1",
4
+ "version": "0.1.2",
5
5
  "private": false,
6
6
  "publishConfig": {
7
7
  "access": "public",
@@ -29,26 +29,28 @@
29
29
  "clean": "backstage-cli clean"
30
30
  },
31
31
  "dependencies": {
32
- "@backstage/core-app-api": "^0.1.21",
33
- "@backstage/core-components": "^0.7.4",
34
- "@backstage/core-plugin-api": "^0.2.0",
35
- "@backstage/theme": "^0.2.13",
32
+ "@backstage/core-app-api": "^0.2.0",
33
+ "@backstage/core-components": "^0.8.0",
34
+ "@backstage/core-plugin-api": "^0.3.0",
35
+ "@backstage/theme": "^0.2.14",
36
36
  "@material-ui/core": "^4.12.2",
37
37
  "@material-ui/icons": "^4.9.1",
38
- "react": "^16.12.0",
39
38
  "react-router-dom": "6.0.0-beta.0"
40
39
  },
40
+ "peerDependencies": {
41
+ "react": "^16.13.1 || ^17.0.0"
42
+ },
41
43
  "devDependencies": {
42
- "@backstage/cli": "^0.9.0",
43
- "@backstage/test-utils": "^0.1.22",
44
+ "@backstage/cli": "^0.10.1",
45
+ "@backstage/test-utils": "^0.1.24",
44
46
  "@testing-library/jest-dom": "^5.10.1",
45
47
  "@testing-library/react": "^11.2.5",
46
48
  "@types/jest": "^26.0.7",
47
49
  "@types/node": "^14.14.32",
48
- "@types/react": "*"
50
+ "@types/react": "^16.13.1 || ^17.0.0"
49
51
  },
50
52
  "files": [
51
53
  "dist"
52
54
  ],
53
- "gitHead": "ddfdcd2b44dc9848cf550cea5346d5f9916a36d9"
55
+ "gitHead": "562be0b43016294e27af3ad024191bb86b13b1c1"
54
56
  }