@backstage/plugin-app 0.3.1 → 0.3.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 +25 -0
- package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js +1 -0
- package/dist/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.esm.js.map +1 -1
- package/dist/index.d.ts +45 -45
- package/dist/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.esm.js +2 -0
- package/dist/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.esm.js.map +1 -1
- package/dist/packages/core-app-api/src/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.esm.js +10 -6
- package/dist/packages/core-app-api/src/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.esm.js.map +1 -1
- package/dist/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.esm.js +2 -0
- package/dist/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.esm.js.map +1 -1
- package/dist/packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js.map +1 -1
- package/dist/packages/frontend-internal/src/wiring/InternalExtensionInput.esm.js +7 -0
- package/dist/packages/frontend-internal/src/wiring/InternalExtensionInput.esm.js.map +1 -0
- package/dist/plugins/app/package.json.esm.js +1 -1
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @backstage/plugin-app
|
|
2
2
|
|
|
3
|
+
## 0.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- @backstage/frontend-plugin-api@0.13.0
|
|
9
|
+
- @backstage/core-components@0.18.3
|
|
10
|
+
- @backstage/core-plugin-api@1.12.0
|
|
11
|
+
- @backstage/plugin-permission-react@0.4.38
|
|
12
|
+
- @backstage/integration-react@1.2.12
|
|
13
|
+
|
|
14
|
+
## 0.3.2-next.0
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- @backstage/plugin-permission-react@0.4.38-next.0
|
|
20
|
+
- @backstage/core-plugin-api@1.11.2-next.0
|
|
21
|
+
- @backstage/core-components@0.18.3-next.0
|
|
22
|
+
- @backstage/frontend-plugin-api@0.12.2-next.0
|
|
23
|
+
- @backstage/integration-react@1.2.12-next.0
|
|
24
|
+
- @backstage/theme@0.7.0
|
|
25
|
+
- @backstage/types@1.2.2
|
|
26
|
+
- @backstage/version-bridge@1.0.11
|
|
27
|
+
|
|
3
28
|
## 0.3.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -2,6 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { lazy } from 'react';
|
|
3
3
|
import { OpaqueSwappableComponentRef } from '../../packages/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';
|
|
4
4
|
import '../../packages/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';
|
|
5
|
+
import '../../packages/frontend-internal/src/wiring/InternalExtensionInput.esm.js';
|
|
5
6
|
import '../../packages/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';
|
|
6
7
|
|
|
7
8
|
class DefaultSwappableComponentsApi {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultSwappableComponentsApi.esm.js","sources":["../../../src/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 SwappableComponentRef,\n SwappableComponentsApi,\n SwappableComponentBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { OpaqueSwappableComponentRef } from '@internal/frontend';\n\nimport { lazy } from 'react';\n\n/**\n * Implementation for the {@link SwappableComponentsApi}\n *\n * @internal\n */\nexport class DefaultSwappableComponentsApi implements SwappableComponentsApi {\n #components: Map<string, ((props: object) => JSX.Element | null) | undefined>;\n\n static fromComponents(\n components: Array<typeof SwappableComponentBlueprint.dataRefs.component.T>,\n ) {\n return new DefaultSwappableComponentsApi(\n new Map(\n components.map(entry => {\n return [\n entry.ref.id,\n entry.loader\n ? lazy(async () => ({\n default: await entry.loader!(),\n }))\n : undefined,\n ];\n }),\n ),\n );\n }\n\n constructor(components: Map<string, any>) {\n this.#components = components;\n }\n\n getComponent(\n ref: SwappableComponentRef<any>,\n ): (props: object) => JSX.Element | null {\n const OverrideComponent = this.#components.get(ref.id);\n const { defaultComponent: DefaultComponent, transformProps } =\n OpaqueSwappableComponentRef.toInternal(ref);\n\n return (props: object) => {\n const innerProps = transformProps?.(props) ?? props;\n\n if (OverrideComponent) {\n return <OverrideComponent {...innerProps} />;\n }\n\n return <DefaultComponent {...innerProps} />;\n };\n }\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultSwappableComponentsApi.esm.js","sources":["../../../src/apis/SwappableComponentsApi/DefaultSwappableComponentsApi.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 SwappableComponentRef,\n SwappableComponentsApi,\n SwappableComponentBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { OpaqueSwappableComponentRef } from '@internal/frontend';\n\nimport { lazy } from 'react';\n\n/**\n * Implementation for the {@link SwappableComponentsApi}\n *\n * @internal\n */\nexport class DefaultSwappableComponentsApi implements SwappableComponentsApi {\n #components: Map<string, ((props: object) => JSX.Element | null) | undefined>;\n\n static fromComponents(\n components: Array<typeof SwappableComponentBlueprint.dataRefs.component.T>,\n ) {\n return new DefaultSwappableComponentsApi(\n new Map(\n components.map(entry => {\n return [\n entry.ref.id,\n entry.loader\n ? lazy(async () => ({\n default: await entry.loader!(),\n }))\n : undefined,\n ];\n }),\n ),\n );\n }\n\n constructor(components: Map<string, any>) {\n this.#components = components;\n }\n\n getComponent(\n ref: SwappableComponentRef<any>,\n ): (props: object) => JSX.Element | null {\n const OverrideComponent = this.#components.get(ref.id);\n const { defaultComponent: DefaultComponent, transformProps } =\n OpaqueSwappableComponentRef.toInternal(ref);\n\n return (props: object) => {\n const innerProps = transformProps?.(props) ?? props;\n\n if (OverrideComponent) {\n return <OverrideComponent {...innerProps} />;\n }\n\n return <DefaultComponent {...innerProps} />;\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;AA8BO,MAAM,6BAAA,CAAgE;AAAA,EAC3E,WAAA;AAAA,EAEA,OAAO,eACL,UAAA,EACA;AACA,IAAA,OAAO,IAAI,6BAAA;AAAA,MACT,IAAI,GAAA;AAAA,QACF,UAAA,CAAW,IAAI,CAAA,KAAA,KAAS;AACtB,UAAA,OAAO;AAAA,YACL,MAAM,GAAA,CAAI,EAAA;AAAA,YACV,KAAA,CAAM,MAAA,GACF,IAAA,CAAK,aAAa;AAAA,cAChB,OAAA,EAAS,MAAM,KAAA,CAAM,MAAA;AAAQ,cAC7B,CAAA,GACF;AAAA,WACN;AAAA,QACF,CAAC;AAAA;AACH,KACF;AAAA,EACF;AAAA,EAEA,YAAY,UAAA,EAA8B;AACxC,IAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AAAA,EACrB;AAAA,EAEA,aACE,GAAA,EACuC;AACvC,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,IAAI,EAAE,CAAA;AACrD,IAAA,MAAM,EAAE,gBAAA,EAAkB,gBAAA,EAAkB,gBAAe,GACzD,2BAAA,CAA4B,WAAW,GAAG,CAAA;AAE5C,IAAA,OAAO,CAAC,KAAA,KAAkB;AACxB,MAAA,MAAM,UAAA,GAAa,cAAA,GAAiB,KAAK,CAAA,IAAK,KAAA;AAE9C,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,uBAAO,GAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,UAAA,EAAY,CAAA;AAAA,MAC5C;AAEA,MAAA,uBAAO,GAAA,CAAC,gBAAA,EAAA,EAAkB,GAAG,UAAA,EAAY,CAAA;AAAA,IAC3C,CAAA;AAAA,EACF;AACF;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as react from 'react';
|
|
|
4
4
|
|
|
5
5
|
/** @public */
|
|
6
6
|
declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{}, {}, {
|
|
7
|
-
app: _backstage_frontend_plugin_api.
|
|
7
|
+
app: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
8
8
|
config: {};
|
|
9
9
|
configInput: {};
|
|
10
10
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
@@ -18,7 +18,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
18
18
|
kind: undefined;
|
|
19
19
|
name: undefined;
|
|
20
20
|
}>;
|
|
21
|
-
"app/layout": _backstage_frontend_plugin_api.
|
|
21
|
+
"app/layout": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
22
22
|
config: {};
|
|
23
23
|
configInput: {};
|
|
24
24
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
@@ -36,7 +36,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
36
36
|
kind: undefined;
|
|
37
37
|
name: "layout";
|
|
38
38
|
}>;
|
|
39
|
-
"app/nav": _backstage_frontend_plugin_api.
|
|
39
|
+
"app/nav": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
40
40
|
config: {};
|
|
41
41
|
configInput: {};
|
|
42
42
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
@@ -58,7 +58,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
58
58
|
kind: undefined;
|
|
59
59
|
name: "nav";
|
|
60
60
|
}>;
|
|
61
|
-
"app/root": _backstage_frontend_plugin_api.
|
|
61
|
+
"app/root": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
62
62
|
config: {};
|
|
63
63
|
configInput: {};
|
|
64
64
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
@@ -92,7 +92,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
92
92
|
kind: undefined;
|
|
93
93
|
name: "root";
|
|
94
94
|
}>;
|
|
95
|
-
"app/routes": _backstage_frontend_plugin_api.
|
|
95
|
+
"app/routes": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
96
96
|
config: {};
|
|
97
97
|
configInput: {};
|
|
98
98
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
@@ -108,7 +108,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
108
108
|
kind: undefined;
|
|
109
109
|
name: "routes";
|
|
110
110
|
}>;
|
|
111
|
-
"api:app/alert": _backstage_frontend_plugin_api.
|
|
111
|
+
"api:app/alert": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
112
112
|
kind: "api";
|
|
113
113
|
name: "alert";
|
|
114
114
|
config: {};
|
|
@@ -117,7 +117,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
117
117
|
inputs: {};
|
|
118
118
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
119
119
|
}>;
|
|
120
|
-
"api:app/analytics": _backstage_frontend_plugin_api.
|
|
120
|
+
"api:app/analytics": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
121
121
|
config: {};
|
|
122
122
|
configInput: {};
|
|
123
123
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -131,7 +131,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
131
131
|
name: "analytics";
|
|
132
132
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
133
133
|
}>;
|
|
134
|
-
"api:app/app-language": _backstage_frontend_plugin_api.
|
|
134
|
+
"api:app/app-language": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
135
135
|
kind: "api";
|
|
136
136
|
name: "app-language";
|
|
137
137
|
config: {};
|
|
@@ -140,7 +140,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
140
140
|
inputs: {};
|
|
141
141
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
142
142
|
}>;
|
|
143
|
-
"api:app/app-theme": _backstage_frontend_plugin_api.
|
|
143
|
+
"api:app/app-theme": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
144
144
|
config: {};
|
|
145
145
|
configInput: {};
|
|
146
146
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -154,7 +154,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
154
154
|
name: "app-theme";
|
|
155
155
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
156
156
|
}>;
|
|
157
|
-
"api:app/atlassian-auth": _backstage_frontend_plugin_api.
|
|
157
|
+
"api:app/atlassian-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
158
158
|
kind: "api";
|
|
159
159
|
name: "atlassian-auth";
|
|
160
160
|
config: {};
|
|
@@ -163,7 +163,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
163
163
|
inputs: {};
|
|
164
164
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
165
165
|
}>;
|
|
166
|
-
"api:app/bitbucket-auth": _backstage_frontend_plugin_api.
|
|
166
|
+
"api:app/bitbucket-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
167
167
|
kind: "api";
|
|
168
168
|
name: "bitbucket-auth";
|
|
169
169
|
config: {};
|
|
@@ -172,7 +172,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
172
172
|
inputs: {};
|
|
173
173
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
174
174
|
}>;
|
|
175
|
-
"api:app/bitbucket-server-auth": _backstage_frontend_plugin_api.
|
|
175
|
+
"api:app/bitbucket-server-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
176
176
|
kind: "api";
|
|
177
177
|
name: "bitbucket-server-auth";
|
|
178
178
|
config: {};
|
|
@@ -181,7 +181,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
181
181
|
inputs: {};
|
|
182
182
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
183
183
|
}>;
|
|
184
|
-
"api:app/components": _backstage_frontend_plugin_api.
|
|
184
|
+
"api:app/components": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
185
185
|
kind: "api";
|
|
186
186
|
name: "components";
|
|
187
187
|
config: {};
|
|
@@ -190,7 +190,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
190
190
|
inputs: {};
|
|
191
191
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
192
192
|
}>;
|
|
193
|
-
"api:app/dialog": _backstage_frontend_plugin_api.
|
|
193
|
+
"api:app/dialog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
194
194
|
kind: "api";
|
|
195
195
|
name: "dialog";
|
|
196
196
|
config: {};
|
|
@@ -199,7 +199,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
199
199
|
inputs: {};
|
|
200
200
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
201
201
|
}>;
|
|
202
|
-
"api:app/discovery": _backstage_frontend_plugin_api.
|
|
202
|
+
"api:app/discovery": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
203
203
|
kind: "api";
|
|
204
204
|
name: "discovery";
|
|
205
205
|
config: {};
|
|
@@ -208,7 +208,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
208
208
|
inputs: {};
|
|
209
209
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
210
210
|
}>;
|
|
211
|
-
"api:app/error": _backstage_frontend_plugin_api.
|
|
211
|
+
"api:app/error": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
212
212
|
kind: "api";
|
|
213
213
|
name: "error";
|
|
214
214
|
config: {};
|
|
@@ -217,7 +217,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
217
217
|
inputs: {};
|
|
218
218
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
219
219
|
}>;
|
|
220
|
-
"api:app/feature-flags": _backstage_frontend_plugin_api.
|
|
220
|
+
"api:app/feature-flags": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
221
221
|
kind: "api";
|
|
222
222
|
name: "feature-flags";
|
|
223
223
|
config: {};
|
|
@@ -226,7 +226,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
226
226
|
inputs: {};
|
|
227
227
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
228
228
|
}>;
|
|
229
|
-
"api:app/fetch": _backstage_frontend_plugin_api.
|
|
229
|
+
"api:app/fetch": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
230
230
|
kind: "api";
|
|
231
231
|
name: "fetch";
|
|
232
232
|
config: {};
|
|
@@ -235,7 +235,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
235
235
|
inputs: {};
|
|
236
236
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
237
237
|
}>;
|
|
238
|
-
"api:app/github-auth": _backstage_frontend_plugin_api.
|
|
238
|
+
"api:app/github-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
239
239
|
kind: "api";
|
|
240
240
|
name: "github-auth";
|
|
241
241
|
config: {};
|
|
@@ -244,7 +244,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
244
244
|
inputs: {};
|
|
245
245
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
246
246
|
}>;
|
|
247
|
-
"api:app/gitlab-auth": _backstage_frontend_plugin_api.
|
|
247
|
+
"api:app/gitlab-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
248
248
|
kind: "api";
|
|
249
249
|
name: "gitlab-auth";
|
|
250
250
|
config: {};
|
|
@@ -253,7 +253,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
253
253
|
inputs: {};
|
|
254
254
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
255
255
|
}>;
|
|
256
|
-
"api:app/google-auth": _backstage_frontend_plugin_api.
|
|
256
|
+
"api:app/google-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
257
257
|
kind: "api";
|
|
258
258
|
name: "google-auth";
|
|
259
259
|
config: {};
|
|
@@ -262,7 +262,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
262
262
|
inputs: {};
|
|
263
263
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
264
264
|
}>;
|
|
265
|
-
"api:app/icons": _backstage_frontend_plugin_api.
|
|
265
|
+
"api:app/icons": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
266
266
|
config: {};
|
|
267
267
|
configInput: {};
|
|
268
268
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -278,7 +278,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
278
278
|
name: "icons";
|
|
279
279
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
280
280
|
}>;
|
|
281
|
-
"api:app/microsoft-auth": _backstage_frontend_plugin_api.
|
|
281
|
+
"api:app/microsoft-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
282
282
|
kind: "api";
|
|
283
283
|
name: "microsoft-auth";
|
|
284
284
|
config: {};
|
|
@@ -287,7 +287,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
287
287
|
inputs: {};
|
|
288
288
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
289
289
|
}>;
|
|
290
|
-
"api:app/oauth-request": _backstage_frontend_plugin_api.
|
|
290
|
+
"api:app/oauth-request": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
291
291
|
kind: "api";
|
|
292
292
|
name: "oauth-request";
|
|
293
293
|
config: {};
|
|
@@ -296,7 +296,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
296
296
|
inputs: {};
|
|
297
297
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
298
298
|
}>;
|
|
299
|
-
"api:app/okta-auth": _backstage_frontend_plugin_api.
|
|
299
|
+
"api:app/okta-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
300
300
|
kind: "api";
|
|
301
301
|
name: "okta-auth";
|
|
302
302
|
config: {};
|
|
@@ -305,7 +305,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
305
305
|
inputs: {};
|
|
306
306
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
307
307
|
}>;
|
|
308
|
-
"api:app/onelogin-auth": _backstage_frontend_plugin_api.
|
|
308
|
+
"api:app/onelogin-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
309
309
|
kind: "api";
|
|
310
310
|
name: "onelogin-auth";
|
|
311
311
|
config: {};
|
|
@@ -314,7 +314,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
314
314
|
inputs: {};
|
|
315
315
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
316
316
|
}>;
|
|
317
|
-
"api:app/openshift-auth": _backstage_frontend_plugin_api.
|
|
317
|
+
"api:app/openshift-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
318
318
|
kind: "api";
|
|
319
319
|
name: "openshift-auth";
|
|
320
320
|
config: {};
|
|
@@ -323,7 +323,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
323
323
|
inputs: {};
|
|
324
324
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
325
325
|
}>;
|
|
326
|
-
"api:app/permission": _backstage_frontend_plugin_api.
|
|
326
|
+
"api:app/permission": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
327
327
|
kind: "api";
|
|
328
328
|
name: "permission";
|
|
329
329
|
config: {};
|
|
@@ -332,7 +332,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
332
332
|
inputs: {};
|
|
333
333
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
334
334
|
}>;
|
|
335
|
-
"api:app/scm-auth": _backstage_frontend_plugin_api.
|
|
335
|
+
"api:app/scm-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
336
336
|
kind: "api";
|
|
337
337
|
name: "scm-auth";
|
|
338
338
|
config: {};
|
|
@@ -341,7 +341,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
341
341
|
inputs: {};
|
|
342
342
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
343
343
|
}>;
|
|
344
|
-
"api:app/scm-integrations": _backstage_frontend_plugin_api.
|
|
344
|
+
"api:app/scm-integrations": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
345
345
|
kind: "api";
|
|
346
346
|
name: "scm-integrations";
|
|
347
347
|
config: {};
|
|
@@ -350,7 +350,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
350
350
|
inputs: {};
|
|
351
351
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
352
352
|
}>;
|
|
353
|
-
"api:app/storage": _backstage_frontend_plugin_api.
|
|
353
|
+
"api:app/storage": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
354
354
|
kind: "api";
|
|
355
355
|
name: "storage";
|
|
356
356
|
config: {};
|
|
@@ -359,7 +359,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
359
359
|
inputs: {};
|
|
360
360
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
361
361
|
}>;
|
|
362
|
-
"api:app/swappable-components": _backstage_frontend_plugin_api.
|
|
362
|
+
"api:app/swappable-components": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
363
363
|
config: {};
|
|
364
364
|
configInput: {};
|
|
365
365
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -376,7 +376,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
376
376
|
name: "swappable-components";
|
|
377
377
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
378
378
|
}>;
|
|
379
|
-
"api:app/translations": _backstage_frontend_plugin_api.
|
|
379
|
+
"api:app/translations": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
380
380
|
config: {};
|
|
381
381
|
configInput: {};
|
|
382
382
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
@@ -392,7 +392,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
392
392
|
name: "translations";
|
|
393
393
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
394
394
|
}>;
|
|
395
|
-
"api:app/vmware-cloud-auth": _backstage_frontend_plugin_api.
|
|
395
|
+
"api:app/vmware-cloud-auth": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
396
396
|
kind: "api";
|
|
397
397
|
name: "vmware-cloud-auth";
|
|
398
398
|
config: {};
|
|
@@ -401,7 +401,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
401
401
|
inputs: {};
|
|
402
402
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
403
403
|
}>;
|
|
404
|
-
"app-root-element:app/alert-display": _backstage_frontend_plugin_api.
|
|
404
|
+
"app-root-element:app/alert-display": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
405
405
|
config: {
|
|
406
406
|
transientTimeoutMs: number;
|
|
407
407
|
anchorOrigin: {
|
|
@@ -419,8 +419,8 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
419
419
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
420
420
|
inputs: {
|
|
421
421
|
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef, {
|
|
422
|
-
optional: boolean;
|
|
423
422
|
singleton: boolean;
|
|
423
|
+
optional: boolean;
|
|
424
424
|
}>;
|
|
425
425
|
};
|
|
426
426
|
kind: "app-root-element";
|
|
@@ -429,14 +429,14 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
429
429
|
element: JSX.Element;
|
|
430
430
|
};
|
|
431
431
|
}>;
|
|
432
|
-
"app-root-element:app/dialog-display": _backstage_frontend_plugin_api.
|
|
432
|
+
"app-root-element:app/dialog-display": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
433
433
|
config: {};
|
|
434
434
|
configInput: {};
|
|
435
435
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
436
436
|
inputs: {
|
|
437
437
|
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef, {
|
|
438
|
-
optional: boolean;
|
|
439
438
|
singleton: boolean;
|
|
439
|
+
optional: boolean;
|
|
440
440
|
}>;
|
|
441
441
|
};
|
|
442
442
|
kind: "app-root-element";
|
|
@@ -445,7 +445,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
445
445
|
element: JSX.Element;
|
|
446
446
|
};
|
|
447
447
|
}>;
|
|
448
|
-
"app-root-element:app/oauth-request-dialog": _backstage_frontend_plugin_api.
|
|
448
|
+
"app-root-element:app/oauth-request-dialog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
449
449
|
kind: "app-root-element";
|
|
450
450
|
name: "oauth-request-dialog";
|
|
451
451
|
config: {};
|
|
@@ -456,7 +456,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
456
456
|
element: JSX.Element;
|
|
457
457
|
};
|
|
458
458
|
}>;
|
|
459
|
-
"component:app/core-error-display": _backstage_frontend_plugin_api.
|
|
459
|
+
"component:app/core-error-display": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
460
460
|
kind: "component";
|
|
461
461
|
name: "core-error-display";
|
|
462
462
|
config: {};
|
|
@@ -478,7 +478,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
478
478
|
loader: Ref extends _backstage_frontend_plugin_api.SwappableComponentRef<infer IInnerComponentProps, any> ? (() => (props: IInnerComponentProps) => JSX.Element | null) | (() => Promise<(props: IInnerComponentProps) => JSX.Element | null>) : never;
|
|
479
479
|
}>;
|
|
480
480
|
}>;
|
|
481
|
-
"component:app/core-not-found-error-page": _backstage_frontend_plugin_api.
|
|
481
|
+
"component:app/core-not-found-error-page": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
482
482
|
kind: "component";
|
|
483
483
|
name: "core-not-found-error-page";
|
|
484
484
|
config: {};
|
|
@@ -500,7 +500,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
500
500
|
loader: Ref extends _backstage_frontend_plugin_api.SwappableComponentRef<infer IInnerComponentProps, any> ? (() => (props: IInnerComponentProps) => JSX.Element | null) | (() => Promise<(props: IInnerComponentProps) => JSX.Element | null>) : never;
|
|
501
501
|
}>;
|
|
502
502
|
}>;
|
|
503
|
-
"component:app/core-progress": _backstage_frontend_plugin_api.
|
|
503
|
+
"component:app/core-progress": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
504
504
|
kind: "component";
|
|
505
505
|
name: "core-progress";
|
|
506
506
|
config: {};
|
|
@@ -522,7 +522,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
522
522
|
loader: Ref extends _backstage_frontend_plugin_api.SwappableComponentRef<infer IInnerComponentProps, any> ? (() => (props: IInnerComponentProps) => JSX.Element | null) | (() => Promise<(props: IInnerComponentProps) => JSX.Element | null>) : never;
|
|
523
523
|
}>;
|
|
524
524
|
}>;
|
|
525
|
-
"sign-in-page:app": _backstage_frontend_plugin_api.
|
|
525
|
+
"sign-in-page:app": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
526
526
|
kind: "sign-in-page";
|
|
527
527
|
name: undefined;
|
|
528
528
|
config: {};
|
|
@@ -533,7 +533,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
533
533
|
loader: () => Promise<react.ComponentType<_backstage_core_plugin_api.SignInPageProps>>;
|
|
534
534
|
};
|
|
535
535
|
}>;
|
|
536
|
-
"theme:app/dark": _backstage_frontend_plugin_api.
|
|
536
|
+
"theme:app/dark": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
537
537
|
kind: "theme";
|
|
538
538
|
name: "dark";
|
|
539
539
|
config: {};
|
|
@@ -544,7 +544,7 @@ declare const appPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlugi
|
|
|
544
544
|
theme: _backstage_frontend_plugin_api.AppTheme;
|
|
545
545
|
};
|
|
546
546
|
}>;
|
|
547
|
-
"theme:app/light": _backstage_frontend_plugin_api.
|
|
547
|
+
"theme:app/light": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
548
548
|
kind: "theme";
|
|
549
549
|
name: "light";
|
|
550
550
|
config: {};
|
package/dist/packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorAlerter.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts"],"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 */\nimport {\n ErrorApi,\n ErrorApiError,\n ErrorApiErrorContext,\n AlertApi,\n} from '@backstage/core-plugin-api';\n\n/**\n * Decorates an ErrorApi by also forwarding error messages\n * to the alertApi with an 'error' severity.\n *\n * @public\n */\nexport class ErrorAlerter implements ErrorApi {\n
|
|
1
|
+
{"version":3,"file":"ErrorAlerter.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/ErrorApi/ErrorAlerter.ts"],"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 */\nimport {\n ErrorApi,\n ErrorApiError,\n ErrorApiErrorContext,\n AlertApi,\n} from '@backstage/core-plugin-api';\n\n/**\n * Decorates an ErrorApi by also forwarding error messages\n * to the alertApi with an 'error' severity.\n *\n * @public\n */\nexport class ErrorAlerter implements ErrorApi {\n private readonly alertApi: AlertApi;\n private readonly errorApi: ErrorApi;\n\n constructor(alertApi: AlertApi, errorApi: ErrorApi) {\n this.alertApi = alertApi;\n this.errorApi = errorApi;\n }\n\n post(error: ErrorApiError, context?: ErrorApiErrorContext) {\n if (!context?.hidden) {\n this.alertApi.post({ message: error.message, severity: 'error' });\n }\n\n return this.errorApi.post(error, context);\n }\n\n error$() {\n return this.errorApi.error$();\n }\n}\n"],"names":[],"mappings":"AA4BO,MAAM,YAAA,CAAiC;AAAA,EAC3B,QAAA;AAAA,EACA,QAAA;AAAA,EAEjB,WAAA,CAAY,UAAoB,QAAA,EAAoB;AAClD,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AAAA,EAEA,IAAA,CAAK,OAAsB,OAAA,EAAgC;AACzD,IAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,QAAA,CAAS,KAAK,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAAA,IAClE;AAEA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,KAAA,EAAO,OAAO,CAAA;AAAA,EAC1C;AAAA,EAEA,MAAA,GAAS;AACP,IAAA,OAAO,IAAA,CAAK,SAAS,MAAA,EAAO;AAAA,EAC9B;AACF;;;;"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
class IdentityAuthInjectorFetchMiddleware {
|
|
2
|
-
constructor(identityApi, allowUrl, headerName, headerValue) {
|
|
3
|
-
this.identityApi = identityApi;
|
|
4
|
-
this.allowUrl = allowUrl;
|
|
5
|
-
this.headerName = headerName;
|
|
6
|
-
this.headerValue = headerValue;
|
|
7
|
-
}
|
|
8
2
|
static create(options) {
|
|
9
3
|
const matcher = buildMatcher(options);
|
|
10
4
|
const headerName = options.header?.name || "authorization";
|
|
@@ -30,6 +24,16 @@ class IdentityAuthInjectorFetchMiddleware {
|
|
|
30
24
|
);
|
|
31
25
|
});
|
|
32
26
|
}
|
|
27
|
+
identityApi;
|
|
28
|
+
allowUrl;
|
|
29
|
+
headerName;
|
|
30
|
+
headerValue;
|
|
31
|
+
constructor(identityApi, allowUrl, headerName, headerValue) {
|
|
32
|
+
this.identityApi = identityApi;
|
|
33
|
+
this.allowUrl = allowUrl;
|
|
34
|
+
this.headerName = headerName;
|
|
35
|
+
this.headerValue = headerValue;
|
|
36
|
+
}
|
|
33
37
|
apply(next) {
|
|
34
38
|
return async (input, init) => {
|
|
35
39
|
const request = new Request(input, init);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityAuthInjectorFetchMiddleware.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.ts"],"sourcesContent":["/*\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 { Config } from '@backstage/config';\nimport { IdentityApi } from '@backstage/core-plugin-api';\nimport { FetchMiddleware } from './types';\n\n/**\n * A fetch middleware, which injects a Backstage token header when the user is\n * signed in.\n */\nexport class IdentityAuthInjectorFetchMiddleware implements FetchMiddleware {\n static create(options: {\n identityApi: IdentityApi;\n config?: Config;\n urlPrefixAllowlist?: string[];\n allowUrl?: (url: string) => boolean;\n header?: {\n name: string;\n value: (backstageToken: string) => string;\n };\n }): IdentityAuthInjectorFetchMiddleware {\n const matcher = buildMatcher(options);\n const headerName = options.header?.name || 'authorization';\n const headerValue = options.header?.value || (token => `Bearer ${token}`);\n\n return new IdentityAuthInjectorFetchMiddleware(\n options.identityApi,\n matcher,\n headerName,\n headerValue,\n );\n }\n\n /**\n * Returns an array of plugin URL prefixes derived from the static `discovery`\n * configuration, to be used as `urlPrefixAllowlist` option of {@link create}.\n */\n static getDiscoveryUrlPrefixes(config: Config): string[] {\n const endpointConfigs =\n config.getOptionalConfigArray('discovery.endpoints') || [];\n return endpointConfigs.flatMap(c => {\n const target =\n typeof c.get('target') === 'object'\n ? c.getString('target.external')\n : c.getString('target');\n const plugins = c.getStringArray('plugins');\n return plugins.map(pluginId =>\n target.replace(/\\{\\{\\s*pluginId\\s*\\}\\}/g, pluginId),\n );\n });\n }\n\n
|
|
1
|
+
{"version":3,"file":"IdentityAuthInjectorFetchMiddleware.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/FetchApi/IdentityAuthInjectorFetchMiddleware.ts"],"sourcesContent":["/*\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 { Config } from '@backstage/config';\nimport { IdentityApi } from '@backstage/core-plugin-api';\nimport { FetchMiddleware } from './types';\n\n/**\n * A fetch middleware, which injects a Backstage token header when the user is\n * signed in.\n */\nexport class IdentityAuthInjectorFetchMiddleware implements FetchMiddleware {\n static create(options: {\n identityApi: IdentityApi;\n config?: Config;\n urlPrefixAllowlist?: string[];\n allowUrl?: (url: string) => boolean;\n header?: {\n name: string;\n value: (backstageToken: string) => string;\n };\n }): IdentityAuthInjectorFetchMiddleware {\n const matcher = buildMatcher(options);\n const headerName = options.header?.name || 'authorization';\n const headerValue = options.header?.value || (token => `Bearer ${token}`);\n\n return new IdentityAuthInjectorFetchMiddleware(\n options.identityApi,\n matcher,\n headerName,\n headerValue,\n );\n }\n\n /**\n * Returns an array of plugin URL prefixes derived from the static `discovery`\n * configuration, to be used as `urlPrefixAllowlist` option of {@link create}.\n */\n static getDiscoveryUrlPrefixes(config: Config): string[] {\n const endpointConfigs =\n config.getOptionalConfigArray('discovery.endpoints') || [];\n return endpointConfigs.flatMap(c => {\n const target =\n typeof c.get('target') === 'object'\n ? c.getString('target.external')\n : c.getString('target');\n const plugins = c.getStringArray('plugins');\n return plugins.map(pluginId =>\n target.replace(/\\{\\{\\s*pluginId\\s*\\}\\}/g, pluginId),\n );\n });\n }\n\n public readonly identityApi: IdentityApi;\n public readonly allowUrl: (url: string) => boolean;\n public readonly headerName: string;\n public readonly headerValue: (pluginId: string) => string;\n\n constructor(\n identityApi: IdentityApi,\n allowUrl: (url: string) => boolean,\n headerName: string,\n headerValue: (pluginId: string) => string,\n ) {\n this.identityApi = identityApi;\n this.allowUrl = allowUrl;\n this.headerName = headerName;\n this.headerValue = headerValue;\n }\n\n apply(next: typeof fetch): typeof fetch {\n return async (input, init) => {\n // Skip this middleware if the header already exists, or if the URL\n // doesn't match any of the allowlist items, or if there was no token.\n // NOTE(freben): The \"as any\" casts here and below are because of subtle\n // undici type differences that happened in a node types bump. Those are\n // immaterial to the code at hand at runtime, as the global fetch and\n // Request are always taken from the same place.\n const request = new Request(input as any, init);\n const { token } = await this.identityApi.getCredentials();\n if (\n request.headers.get(this.headerName) ||\n typeof token !== 'string' ||\n !token ||\n !this.allowUrl(request.url)\n ) {\n return next(input as any, init);\n }\n\n request.headers.set(this.headerName, this.headerValue(token));\n return next(request);\n };\n }\n}\n\nfunction buildMatcher(options: {\n config?: Config;\n urlPrefixAllowlist?: string[];\n allowUrl?: (url: string) => boolean;\n}): (url: string) => boolean {\n if (options.allowUrl) {\n return options.allowUrl;\n } else if (options.urlPrefixAllowlist) {\n return buildPrefixMatcher(options.urlPrefixAllowlist);\n } else if (options.config) {\n return buildPrefixMatcher([\n options.config.getString('backend.baseUrl'),\n ...IdentityAuthInjectorFetchMiddleware.getDiscoveryUrlPrefixes(\n options.config,\n ),\n ]);\n }\n return () => false;\n}\n\nfunction buildPrefixMatcher(prefixes: string[]): (url: string) => boolean {\n const trimmedPrefixes = prefixes.map(prefix => prefix.replace(/\\/$/, ''));\n return url =>\n trimmedPrefixes.some(\n prefix => url === prefix || url.startsWith(`${prefix}/`),\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebStorage.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts"],"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 StorageApi,\n StorageValueSnapshot,\n ErrorApi,\n} from '@backstage/core-plugin-api';\nimport { JsonValue, Observable } from '@backstage/types';\nimport ObservableImpl from 'zen-observable';\n\nexport const buckets = new Map<string, WebStorage>();\n\n/**\n * An implementation of the storage API, that uses the browser's local storage.\n *\n * @public\n */\nexport class WebStorage implements StorageApi {\n
|
|
1
|
+
{"version":3,"file":"WebStorage.esm.js","sources":["../../../../../../../../../packages/core-app-api/src/apis/implementations/StorageApi/WebStorage.ts"],"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 StorageApi,\n StorageValueSnapshot,\n ErrorApi,\n} from '@backstage/core-plugin-api';\nimport { JsonValue, Observable } from '@backstage/types';\nimport ObservableImpl from 'zen-observable';\n\nexport const buckets = new Map<string, WebStorage>();\n\n/**\n * An implementation of the storage API, that uses the browser's local storage.\n *\n * @public\n */\nexport class WebStorage implements StorageApi {\n private readonly namespace: string;\n private readonly errorApi: ErrorApi;\n\n constructor(namespace: string, errorApi: ErrorApi) {\n this.namespace = namespace;\n this.errorApi = errorApi;\n }\n\n private static hasSubscribed = false;\n\n static create(options: {\n errorApi: ErrorApi;\n namespace?: string;\n }): WebStorage {\n return new WebStorage(options.namespace ?? '', options.errorApi);\n }\n\n private static addStorageEventListener() {\n window.addEventListener('storage', event => {\n for (const [bucketPath, webStorage] of buckets.entries()) {\n if (event.key?.startsWith(bucketPath)) {\n webStorage.handleStorageChange(event.key);\n }\n }\n });\n }\n\n get<T>(key: string): T | undefined {\n return this.snapshot(key).value as T | undefined;\n }\n\n snapshot<T extends JsonValue>(key: string): StorageValueSnapshot<T> {\n let value = undefined;\n let presence: 'present' | 'absent' = 'absent';\n try {\n const item = localStorage.getItem(this.getKeyName(key));\n if (item) {\n value = JSON.parse(item, (_key, val) => {\n if (typeof val === 'object' && val !== null) {\n Object.freeze(val);\n }\n return val;\n });\n presence = 'present';\n }\n } catch (e) {\n this.errorApi.post(\n new Error(`Error when parsing JSON config from storage for: ${key}`),\n );\n }\n return { key, value, presence };\n }\n\n forBucket(name: string): WebStorage {\n const bucketPath = `${this.namespace}/${name}`;\n if (!buckets.has(bucketPath)) {\n buckets.set(bucketPath, new WebStorage(bucketPath, this.errorApi));\n }\n return buckets.get(bucketPath)!;\n }\n\n async set<T>(key: string, data: T): Promise<void> {\n localStorage.setItem(this.getKeyName(key), JSON.stringify(data));\n this.notifyChanges(key);\n }\n\n async remove(key: string): Promise<void> {\n localStorage.removeItem(this.getKeyName(key));\n this.notifyChanges(key);\n }\n\n observe$<T extends JsonValue>(\n key: string,\n ): Observable<StorageValueSnapshot<T>> {\n if (!WebStorage.hasSubscribed) {\n WebStorage.addStorageEventListener();\n WebStorage.hasSubscribed = true;\n }\n return this.observable.filter(({ key: messageKey }) => messageKey === key);\n }\n\n private handleStorageChange(eventKey: StorageEvent['key']) {\n if (!eventKey?.startsWith(this.namespace)) {\n return;\n }\n // Grab the part of this key that is local to this bucket\n const trimmedKey = eventKey?.slice(`${this.namespace}/`.length);\n\n // If the key still contains a slash, it means it's a sub-bucket\n if (!trimmedKey.includes('/')) {\n this.notifyChanges(decodeURIComponent(trimmedKey));\n }\n }\n\n private getKeyName(key: string) {\n return `${this.namespace}/${encodeURIComponent(key)}`;\n }\n\n private notifyChanges(key: string) {\n const snapshot = this.snapshot(key);\n for (const subscription of this.subscribers) {\n subscription.next(snapshot);\n }\n }\n\n private subscribers = new Set<\n ZenObservable.SubscriptionObserver<StorageValueSnapshot<JsonValue>>\n >();\n\n private readonly observable = new ObservableImpl<\n StorageValueSnapshot<JsonValue>\n >(subscriber => {\n this.subscribers.add(subscriber);\n return () => {\n this.subscribers.delete(subscriber);\n };\n });\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalExtensionDefinition.esm.js","sources":["../../../../../../../packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts"],"sourcesContent":["/*\n * Copyright 2024 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 ApiHolder,\n AppNode,\n
|
|
1
|
+
{"version":3,"file":"InternalExtensionDefinition.esm.js","sources":["../../../../../../../packages/frontend-internal/src/wiring/InternalExtensionDefinition.ts"],"sourcesContent":["/*\n * Copyright 2024 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 ApiHolder,\n AppNode,\n ExtensionDefinitionAttachTo,\n ExtensionDataValue,\n ExtensionDataRef,\n OverridableExtensionDefinition,\n ExtensionDefinitionParameters,\n ExtensionInput,\n PortableSchema,\n ResolvedExtensionInputs,\n} from '@backstage/frontend-plugin-api';\nimport { OpaqueType } from '@internal/opaque';\n\nexport const OpaqueExtensionDefinition = OpaqueType.create<{\n public: OverridableExtensionDefinition<ExtensionDefinitionParameters>;\n versions:\n | {\n readonly version: 'v1';\n readonly kind?: string;\n readonly namespace?: string;\n readonly name?: string;\n readonly attachTo: ExtensionDefinitionAttachTo;\n readonly disabled: boolean;\n readonly configSchema?: PortableSchema<any, any>;\n readonly inputs: {\n [inputName in string]: {\n $$type: '@backstage/ExtensionInput';\n extensionData: {\n [name in string]: ExtensionDataRef;\n };\n config: { optional: boolean; singleton: boolean };\n };\n };\n readonly output: {\n [name in string]: ExtensionDataRef;\n };\n factory(context: {\n node: AppNode;\n apis: ApiHolder;\n config: object;\n inputs: {\n [inputName in string]: unknown;\n };\n }): {\n [inputName in string]: unknown;\n };\n }\n | {\n readonly version: 'v2';\n readonly kind?: string;\n readonly namespace?: string;\n readonly name?: string;\n readonly attachTo: ExtensionDefinitionAttachTo;\n readonly disabled: boolean;\n readonly configSchema?: PortableSchema<any, any>;\n readonly inputs: { [inputName in string]: ExtensionInput };\n readonly output: Array<ExtensionDataRef>;\n factory(context: {\n node: AppNode;\n apis: ApiHolder;\n config: object;\n inputs: ResolvedExtensionInputs<{\n [inputName in string]: ExtensionInput;\n }>;\n }): Iterable<ExtensionDataValue<any, any>>;\n };\n}>({\n type: '@backstage/ExtensionDefinition',\n versions: ['v1', 'v2'],\n});\n"],"names":[],"mappings":";;AA8ByC,WAAW,MAAA,CAqDjD;AAAA,EACD,IAAA,EAAM,gCAAA;AAAA,EACN,QAAA,EAAU,CAAC,IAAA,EAAM,IAAI;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalExtensionInput.esm.js","sources":["../../../../../../../packages/frontend-internal/src/wiring/InternalExtensionInput.ts"],"sourcesContent":["/*\n * Copyright 2024 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 { ExtensionInput } from '@backstage/frontend-plugin-api';\nimport { OpaqueType } from '@internal/opaque';\n\nexport type ExtensionInputContext = {\n input: string;\n kind?: string;\n name?: string;\n};\n\nexport const OpaqueExtensionInput = OpaqueType.create<{\n public: ExtensionInput;\n versions: {\n readonly version: undefined;\n readonly context?: ExtensionInputContext;\n withContext(context: ExtensionInputContext): ExtensionInput;\n };\n}>({\n type: '@backstage/ExtensionInput',\n versions: [undefined],\n});\n"],"names":[],"mappings":";;AAyBoC,WAAW,MAAA,CAO5C;AAAA,EACD,IAAA,EAAM,2BAAA;AAAA,EACN,QAAA,EAAU,CAAC,MAAS;AACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-app",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"backstage": {
|
|
5
5
|
"role": "frontend-plugin",
|
|
6
6
|
"pluginId": "app",
|
|
@@ -62,11 +62,11 @@
|
|
|
62
62
|
"test": "backstage-cli package test"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@backstage/core-components": "^0.18.
|
|
66
|
-
"@backstage/core-plugin-api": "^1.
|
|
67
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
68
|
-
"@backstage/integration-react": "^1.2.
|
|
69
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
65
|
+
"@backstage/core-components": "^0.18.3",
|
|
66
|
+
"@backstage/core-plugin-api": "^1.12.0",
|
|
67
|
+
"@backstage/frontend-plugin-api": "^0.13.0",
|
|
68
|
+
"@backstage/integration-react": "^1.2.12",
|
|
69
|
+
"@backstage/plugin-permission-react": "^0.4.38",
|
|
70
70
|
"@backstage/theme": "^0.7.0",
|
|
71
71
|
"@backstage/types": "^1.2.2",
|
|
72
72
|
"@backstage/version-bridge": "^1.0.11",
|
|
@@ -78,11 +78,11 @@
|
|
|
78
78
|
"zod": "^3.22.4"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@backstage/cli": "^0.34.
|
|
82
|
-
"@backstage/dev-utils": "^1.1.
|
|
83
|
-
"@backstage/frontend-defaults": "^0.3.
|
|
84
|
-
"@backstage/frontend-test-utils": "^0.4.
|
|
85
|
-
"@backstage/test-utils": "^1.7.
|
|
81
|
+
"@backstage/cli": "^0.34.5",
|
|
82
|
+
"@backstage/dev-utils": "^1.1.17",
|
|
83
|
+
"@backstage/frontend-defaults": "^0.3.3",
|
|
84
|
+
"@backstage/frontend-test-utils": "^0.4.1",
|
|
85
|
+
"@backstage/test-utils": "^1.7.13",
|
|
86
86
|
"@testing-library/jest-dom": "^6.0.0",
|
|
87
87
|
"@testing-library/react": "^16.0.0",
|
|
88
88
|
"@testing-library/user-event": "^14.0.0",
|