feat: support exporting of dataRefs through blueprints
Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
@@ -16,8 +16,9 @@
|
||||
import { IconComponent } from '../icons';
|
||||
import { createExtensionBlueprint, createExtensionDataRef } from '../wiring';
|
||||
|
||||
const iconsDataRef =
|
||||
createExtensionDataRef<{ [key in string]: IconComponent }>('core.icons');
|
||||
const iconsDataRef = createExtensionDataRef<{
|
||||
[key in string]: IconComponent;
|
||||
}>().with({ id: 'core.icons' });
|
||||
|
||||
/** @public */
|
||||
export const IconBundleBlueprint = createExtensionBlueprint({
|
||||
@@ -27,5 +28,8 @@ export const IconBundleBlueprint = createExtensionBlueprint({
|
||||
output: {
|
||||
icons: iconsDataRef,
|
||||
},
|
||||
factory: (_, params: { icons: { [key in string]: IconComponent } }) => params,
|
||||
factory: (params: { icons: { [key in string]: IconComponent } }) => params,
|
||||
dataRefs: {
|
||||
icons: iconsDataRef,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -25,3 +25,4 @@ export { createSignInPageExtension } from './createSignInPageExtension';
|
||||
export { createThemeExtension } from './createThemeExtension';
|
||||
export { createComponentExtension } from './createComponentExtension';
|
||||
export { createTranslationExtension } from './createTranslationExtension';
|
||||
export { IconBundleBlueprint } from './IconBundleBlueprint';
|
||||
|
||||
@@ -34,6 +34,7 @@ export interface CreateExtensionBlueprintOptions<
|
||||
TInputs extends AnyExtensionInputMap,
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TConfig,
|
||||
TDataRefs extends AnyExtensionDataMap,
|
||||
> {
|
||||
kind: string;
|
||||
namespace?: string;
|
||||
@@ -50,6 +51,8 @@ export interface CreateExtensionBlueprintOptions<
|
||||
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
||||
},
|
||||
): Expand<ExtensionDataValues<TOutput>>;
|
||||
|
||||
dataRefs?: TDataRefs;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,7 +63,10 @@ export interface ExtensionBlueprint<
|
||||
TInputs extends AnyExtensionInputMap,
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TConfig,
|
||||
TDataRefs extends AnyExtensionDataMap,
|
||||
> {
|
||||
dataRefs: TDataRefs;
|
||||
|
||||
make(args: {
|
||||
namespace?: string;
|
||||
name?: string;
|
||||
@@ -97,15 +103,21 @@ class ExtensionBlueprintImpl<
|
||||
TInputs extends AnyExtensionInputMap,
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TConfig,
|
||||
TDataRefs extends AnyExtensionDataMap,
|
||||
> {
|
||||
constructor(
|
||||
private readonly options: CreateExtensionBlueprintOptions<
|
||||
TParams,
|
||||
TInputs,
|
||||
TOutput,
|
||||
TConfig
|
||||
TConfig,
|
||||
TDataRefs
|
||||
>,
|
||||
) {}
|
||||
) {
|
||||
this.dataRefs = options.dataRefs!;
|
||||
}
|
||||
|
||||
dataRefs: TDataRefs;
|
||||
|
||||
public make(args: {
|
||||
namespace?: string;
|
||||
@@ -184,8 +196,15 @@ export function createExtensionBlueprint<
|
||||
TInputs extends AnyExtensionInputMap,
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TConfig,
|
||||
TDataRefs extends AnyExtensionDataMap = never,
|
||||
>(
|
||||
options: CreateExtensionBlueprintOptions<TParams, TInputs, TOutput, TConfig>,
|
||||
): ExtensionBlueprint<TParams, TInputs, TOutput, TConfig> {
|
||||
options: CreateExtensionBlueprintOptions<
|
||||
TParams,
|
||||
TInputs,
|
||||
TOutput,
|
||||
TConfig,
|
||||
TDataRefs
|
||||
>,
|
||||
): ExtensionBlueprint<TParams, TInputs, TOutput, TConfig, TDataRefs> {
|
||||
return new ExtensionBlueprintImpl(options);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user