feat: added input types for the config to the extensions

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2024-07-24 14:36:22 +02:00
parent b424956a35
commit 0ad542cbc7
26 changed files with 300 additions and 116 deletions
@@ -70,7 +70,7 @@ function createTestExtension(options: {
});
}
function routeInfoFromExtensions(extensions: ExtensionDefinition<unknown>[]) {
function routeInfoFromExtensions(extensions: ExtensionDefinition<any, any>[]) {
const plugin = createPlugin({
id: 'test',
extensions,
@@ -25,7 +25,7 @@ import { instantiateAppNodeTree } from './instantiateAppNodeTree';
/** @internal */
export interface CreateAppTreeOptions {
features: FrontendFeature[];
builtinExtensions: Extension<unknown>[];
builtinExtensions: Extension<any, any>[];
config: Config;
}
@@ -59,22 +59,22 @@ const simpleExtension = resolveExtensionDefinition(
}),
);
function makeSpec<TConfig>(
extension: Extension<TConfig>,
function makeSpec<TConfig, TConfigInput>(
extension: Extension<TConfig, TConfigInput>,
spec?: Partial<AppNodeSpec>,
): AppNodeSpec {
return {
id: extension.id,
attachTo: extension.attachTo,
disabled: extension.disabled,
extension,
extension: extension as Extension<unknown, unknown>,
source: undefined,
...spec,
};
}
function makeNode<TConfig>(
extension: Extension<TConfig>,
function makeNode<TConfig, TConfigInput>(
extension: Extension<TConfig, TConfigInput>,
spec?: Partial<AppNodeSpec>,
): AppNode {
return {
@@ -85,8 +85,8 @@ function makeNode<TConfig>(
};
}
function makeInstanceWithId<TConfig>(
extension: Extension<TConfig>,
function makeInstanceWithId<TConfig, TConfigInput>(
extension: Extension<TConfig, TConfigInput>,
config?: TConfig,
): AppNode {
const node = makeNode(extension, { config });
@@ -14,7 +14,7 @@
* limitations under the License.
*/
import { createExtension } from '@backstage/frontend-plugin-api';
import { createExtension, Extension } from '@backstage/frontend-plugin-api';
import { resolveAppTree } from './resolveAppTree';
// eslint-disable-next-line @backstage/no-relative-monorepo-imports
import { resolveExtensionDefinition } from '../../../frontend-plugin-api/src/wiring/resolveExtensionDefinition';
@@ -26,7 +26,7 @@ const extension = resolveExtensionDefinition(
output: {},
factory: () => ({}),
}),
);
) as Extension<unknown, unknown>;
const baseSpec = {
extension,