@backstage/frontend-plugin-api 0.7.0-next.2 → 0.7.0

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +244 -0
  2. package/dist/blueprints/ApiBlueprint.esm.js +23 -0
  3. package/dist/blueprints/ApiBlueprint.esm.js.map +1 -0
  4. package/dist/blueprints/AppRootElementBlueprint.esm.js +18 -0
  5. package/dist/blueprints/AppRootElementBlueprint.esm.js.map +1 -0
  6. package/dist/blueprints/AppRootWrapperBlueprint.esm.js +25 -0
  7. package/dist/blueprints/AppRootWrapperBlueprint.esm.js.map +1 -0
  8. package/dist/blueprints/IconBundleBlueprint.esm.js.map +1 -0
  9. package/dist/blueprints/NavItemBlueprint.esm.js +34 -0
  10. package/dist/blueprints/NavItemBlueprint.esm.js.map +1 -0
  11. package/dist/blueprints/NavLogoBlueprint.esm.js +27 -0
  12. package/dist/blueprints/NavLogoBlueprint.esm.js.map +1 -0
  13. package/dist/blueprints/PageBlueprint.esm.js +34 -0
  14. package/dist/blueprints/PageBlueprint.esm.js.map +1 -0
  15. package/dist/blueprints/RouterBlueprint.esm.js +21 -0
  16. package/dist/blueprints/RouterBlueprint.esm.js.map +1 -0
  17. package/dist/blueprints/SignInPageBlueprint.esm.js +28 -0
  18. package/dist/blueprints/SignInPageBlueprint.esm.js.map +1 -0
  19. package/dist/blueprints/ThemeBlueprint.esm.js +22 -0
  20. package/dist/blueprints/ThemeBlueprint.esm.js.map +1 -0
  21. package/dist/blueprints/TranslationBlueprint.esm.js +21 -0
  22. package/dist/blueprints/TranslationBlueprint.esm.js.map +1 -0
  23. package/dist/components/ExtensionBoundary.esm.js +10 -1
  24. package/dist/components/ExtensionBoundary.esm.js.map +1 -1
  25. package/dist/extensions/createApiExtension.esm.js +3 -5
  26. package/dist/extensions/createApiExtension.esm.js.map +1 -1
  27. package/dist/extensions/createAppRootElementExtension.esm.js.map +1 -1
  28. package/dist/extensions/createAppRootWrapperExtension.esm.js +3 -3
  29. package/dist/extensions/createAppRootWrapperExtension.esm.js.map +1 -1
  30. package/dist/extensions/createComponentExtension.esm.js.map +1 -1
  31. package/dist/extensions/createNavItemExtension.esm.js +3 -3
  32. package/dist/extensions/createNavItemExtension.esm.js.map +1 -1
  33. package/dist/extensions/createNavLogoExtension.esm.js +3 -3
  34. package/dist/extensions/createNavLogoExtension.esm.js.map +1 -1
  35. package/dist/extensions/createPageExtension.esm.js.map +1 -1
  36. package/dist/extensions/createRouterExtension.esm.js +3 -3
  37. package/dist/extensions/createRouterExtension.esm.js.map +1 -1
  38. package/dist/extensions/createSignInPageExtension.esm.js +12 -2
  39. package/dist/extensions/createSignInPageExtension.esm.js.map +1 -1
  40. package/dist/extensions/createThemeExtension.esm.js +3 -5
  41. package/dist/extensions/createThemeExtension.esm.js.map +1 -1
  42. package/dist/extensions/createTranslationExtension.esm.js +3 -3
  43. package/dist/extensions/createTranslationExtension.esm.js.map +1 -1
  44. package/dist/index.d.ts +517 -128
  45. package/dist/index.esm.js +12 -2
  46. package/dist/index.esm.js.map +1 -1
  47. package/dist/wiring/createExtension.esm.js +75 -8
  48. package/dist/wiring/createExtension.esm.js.map +1 -1
  49. package/dist/wiring/createExtensionBlueprint.esm.js +38 -27
  50. package/dist/wiring/createExtensionBlueprint.esm.js.map +1 -1
  51. package/dist/wiring/createExtensionDataContainer.esm.js +31 -0
  52. package/dist/wiring/createExtensionDataContainer.esm.js.map +1 -0
  53. package/dist/wiring/createExtensionDataRef.esm.js.map +1 -1
  54. package/dist/wiring/createFrontendPlugin.esm.js +59 -0
  55. package/dist/wiring/createFrontendPlugin.esm.js.map +1 -0
  56. package/dist/wiring/resolveExtensionDefinition.esm.js +7 -1
  57. package/dist/wiring/resolveExtensionDefinition.esm.js.map +1 -1
  58. package/dist/wiring/resolveInputOverrides.esm.js +76 -0
  59. package/dist/wiring/resolveInputOverrides.esm.js.map +1 -0
  60. package/package.json +6 -6
  61. package/dist/extensions/IconBundleBlueprint.esm.js.map +0 -1
  62. package/dist/wiring/createPlugin.esm.js +0 -35
  63. package/dist/wiring/createPlugin.esm.js.map +0 -1
  64. /package/dist/{extensions → blueprints}/IconBundleBlueprint.esm.js +0 -0
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  /// <reference types="react" />
2
- import React, { ReactNode, JSX as JSX$1, ComponentType, PropsWithChildren } from 'react';
2
+ import * as React from 'react';
3
+ import React__default, { ReactNode, JSX as JSX$1, ComponentType, PropsWithChildren } from 'react';
3
4
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
4
- import { ApiRef, AnyApiRef, AnyApiFactory, IconComponent as IconComponent$1, SignInPageProps, AppTheme } from '@backstage/core-plugin-api';
5
+ import { ApiRef, AnyApiFactory, IconComponent as IconComponent$1, SignInPageProps, AppTheme, AnyApiRef } from '@backstage/core-plugin-api';
5
6
  export { AlertApi, AlertMessage, AnyApiFactory, AnyApiRef, ApiFactory, ApiHolder, ApiRef, ApiRefConfig, AppTheme, AppThemeApi, AuthProviderInfo, AuthRequestOptions, BackstageIdentityApi, BackstageIdentityResponse, BackstageUserIdentity, ConfigApi, DiscoveryApi, ErrorApi, ErrorApiError, ErrorApiErrorContext, FeatureFlag, FeatureFlagState, FeatureFlagsApi, FeatureFlagsSaveOptions, FetchApi, IdentityApi, OAuthApi, OAuthRequestApi, OAuthRequester, OAuthRequesterOptions, OAuthScope, OpenIdConnectApi, PendingOAuthRequest, ProfileInfo, ProfileInfoApi, SessionApi, SessionState, StorageApi, StorageValueSnapshot, TypesToApiRefs, alertApiRef, appThemeApiRef, atlassianAuthApiRef, bitbucketAuthApiRef, bitbucketServerAuthApiRef, configApiRef, createApiFactory, createApiRef, discoveryApiRef, errorApiRef, featureFlagsApiRef, fetchApiRef, githubAuthApiRef, gitlabAuthApiRef, googleAuthApiRef, identityApiRef, microsoftAuthApiRef, oauthRequestApiRef, oktaAuthApiRef, oneloginAuthApiRef, storageApiRef, useApi, useApiHolder, vmwareCloudAuthApiRef, withApis } from '@backstage/core-plugin-api';
6
- import { JsonObject } from '@backstage/types';
7
7
  import { z, ZodSchema, ZodTypeDef } from 'zod';
8
+ import { JsonObject } from '@backstage/types';
8
9
  import { TranslationResource, TranslationMessages } from '@backstage/core-plugin-api/alpha';
9
10
  export { TranslationMessages, TranslationMessagesOptions, TranslationRef, TranslationRefOptions, TranslationResource, TranslationResourceOptions, createTranslationMessages, createTranslationRef, createTranslationResource, useTranslationRef } from '@backstage/core-plugin-api/alpha';
10
11
 
@@ -46,7 +47,7 @@ type AnalyticsContextValue = CommonAnalyticsContext & {
46
47
  declare const AnalyticsContext: (options: {
47
48
  attributes: Partial<AnalyticsContextValue>;
48
49
  children: ReactNode;
49
- }) => React.JSX.Element;
50
+ }) => React__default.JSX.Element;
50
51
 
51
52
  /**
52
53
  * Catch-all type for route params.
@@ -237,7 +238,7 @@ type AnyExtensionDataRef = ExtensionDataRef<unknown, string, {
237
238
  interface ConfigurableExtensionDataRef<TData, TId extends string, TConfig extends {
238
239
  optional?: true;
239
240
  } = {}> extends ExtensionDataRef<TData, TId, TConfig> {
240
- optional(): ConfigurableExtensionDataRef<TData, TId, TData & {
241
+ optional(): ConfigurableExtensionDataRef<TData, TId, TConfig & {
241
242
  optional: true;
242
243
  }>;
243
244
  (t: TData): ExtensionDataValue<TData, TId>;
@@ -338,6 +339,40 @@ declare function createExtensionInput<UExtensionData extends ExtensionDataRef<un
338
339
  optional: TConfig['optional'] extends true ? true : false;
339
340
  }>;
340
341
 
342
+ /** @public */
343
+ type ResolveInputValueOverrides<TInputs extends {
344
+ [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
345
+ optional: boolean;
346
+ singleton: boolean;
347
+ }>;
348
+ } = {
349
+ [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
350
+ optional: boolean;
351
+ singleton: boolean;
352
+ }>;
353
+ }> = Expand<{
354
+ [KName in keyof TInputs as TInputs[KName] extends ExtensionInput<any, {
355
+ optional: infer IOptional extends boolean;
356
+ singleton: boolean;
357
+ }> ? IOptional extends true ? never : KName : never]: TInputs[KName] extends ExtensionInput<infer IDataRefs, {
358
+ optional: boolean;
359
+ singleton: infer ISingleton extends boolean;
360
+ }> ? ISingleton extends true ? Iterable<ExtensionDataRefToValue<IDataRefs>> : Array<Iterable<ExtensionDataRefToValue<IDataRefs>>> : never;
361
+ } & {
362
+ [KName in keyof TInputs as TInputs[KName] extends ExtensionInput<any, {
363
+ optional: infer IOptional extends boolean;
364
+ singleton: boolean;
365
+ }> ? IOptional extends true ? KName : never : never]?: TInputs[KName] extends ExtensionInput<infer IDataRefs, {
366
+ optional: boolean;
367
+ singleton: infer ISingleton extends boolean;
368
+ }> ? ISingleton extends true ? Iterable<ExtensionDataRefToValue<IDataRefs>> : Array<Iterable<ExtensionDataRefToValue<IDataRefs>>> : never;
369
+ }>;
370
+
371
+ /** @public */
372
+ type ExtensionDataContainer<UExtensionData extends AnyExtensionDataRef> = Iterable<UExtensionData extends ExtensionDataRef<infer IData, infer IId, infer IConfig> ? IConfig['optional'] extends true ? never : ExtensionDataValue<IData, IId> : never> & {
373
+ get<TId extends UExtensionData['id']>(ref: ExtensionDataRef<any, TId, any>): UExtensionData extends ExtensionDataRef<infer IData, TId, infer IConfig> ? IConfig['optional'] extends true ? IData | undefined : IData : never;
374
+ };
375
+
341
376
  /**
342
377
  * @public
343
378
  * @deprecated Extension data maps will be removed.
@@ -369,10 +404,6 @@ type ExtensionDataValues<TExtensionData extends AnyExtensionDataMap> = {
369
404
  optional: true;
370
405
  } ? DataName : never]?: TExtensionData[DataName]['T'];
371
406
  };
372
- /** @public */
373
- type ExtensionDataContainer<UExtensionData extends AnyExtensionDataRef> = {
374
- get<TId extends UExtensionData['id']>(ref: ExtensionDataRef<any, TId, any>): UExtensionData extends ExtensionDataRef<infer IData, TId, infer IConfig> ? IConfig['optional'] extends true ? IData | undefined : IData : never;
375
- };
376
407
  /**
377
408
  * Convert a single extension input into a matching resolved input.
378
409
  * @public
@@ -396,9 +427,7 @@ type ResolvedExtensionInputs<TInputs extends {
396
427
  * @public
397
428
  * @deprecated This way of structuring the options is deprecated, this type will be removed in the future
398
429
  */
399
- interface LegacyCreateExtensionOptions<TOutput extends AnyExtensionDataMap, TInputs extends AnyExtensionInputMap, TConfig, TConfigInput, TConfigSchema extends {
400
- [key: string]: (zImpl: typeof z) => z.ZodType;
401
- }> {
430
+ interface LegacyCreateExtensionOptions<TOutput extends AnyExtensionDataMap, TInputs extends AnyExtensionInputMap, TConfig, TConfigInput> {
402
431
  kind?: string;
403
432
  namespace?: string;
404
433
  name?: string;
@@ -409,37 +438,31 @@ interface LegacyCreateExtensionOptions<TOutput extends AnyExtensionDataMap, TInp
409
438
  disabled?: boolean;
410
439
  inputs?: TInputs;
411
440
  output: TOutput;
412
- /** @deprecated - use `config.schema` instead */
413
441
  configSchema?: PortableSchema<TConfig, TConfigInput>;
414
- config?: {
415
- schema: TConfigSchema;
416
- };
417
442
  factory(context: {
418
443
  node: AppNode;
419
- config: TConfig & (string extends keyof TConfigSchema ? {} : {
420
- [key in keyof TConfigSchema]: z.infer<ReturnType<TConfigSchema[key]>>;
421
- });
444
+ config: TConfig;
422
445
  inputs: Expand<ResolvedExtensionInputs<TInputs>>;
423
446
  }): Expand<ExtensionDataValues<TOutput>>;
424
447
  }
448
+ type ToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
449
+ type PopUnion<U> = ToIntersection<U extends any ? () => U : never> extends () => infer R ? [rest: Exclude<U, R>, next: R] : undefined;
425
450
  /** @ignore */
426
- type VerifyExtensionFactoryOutput<UDeclaredOutput extends AnyExtensionDataRef, UFactoryOutput extends ExtensionDataValue<any, any>> = (UDeclaredOutput extends any ? UDeclaredOutput['config']['optional'] extends true ? never : UDeclaredOutput['id'] : never) extends infer IRequiredOutputIds ? [IRequiredOutputIds] extends [UFactoryOutput['id']] ? [UFactoryOutput['id']] extends [UDeclaredOutput['id']] ? {} : {
427
- 'Error: The extension factory has undeclared output(s)': Exclude<UFactoryOutput['id'], UDeclaredOutput['id']>;
428
- } : {
429
- 'Error: The extension factory is missing the following output(s)': Exclude<IRequiredOutputIds, UFactoryOutput['id']>;
430
- } : never;
451
+ type JoinStringUnion<U, TDiv extends string = ', ', TResult extends string = ''> = PopUnion<U> extends [infer IRest extends string, infer INext extends string] ? TResult extends '' ? JoinStringUnion<IRest, TDiv, INext> : JoinStringUnion<IRest, TDiv, `${TResult}${TDiv}${INext}`> : TResult;
452
+ /** @ignore */
453
+ type VerifyExtensionFactoryOutput<UDeclaredOutput extends AnyExtensionDataRef, UFactoryOutput extends ExtensionDataValue<any, any>> = (UDeclaredOutput extends any ? UDeclaredOutput['config']['optional'] extends true ? never : UDeclaredOutput['id'] : never) extends infer IRequiredOutputIds ? [IRequiredOutputIds] extends [UFactoryOutput['id']] ? [UFactoryOutput['id']] extends [UDeclaredOutput['id']] ? {} : `Error: The extension factory has undeclared output(s): ${JoinStringUnion<Exclude<UFactoryOutput['id'], UDeclaredOutput['id']>>}` : `Error: The extension factory is missing the following output(s): ${JoinStringUnion<Exclude<IRequiredOutputIds, UFactoryOutput['id']>>}` : never;
431
454
  /** @public */
432
- type CreateExtensionOptions<UOutput extends AnyExtensionDataRef, TInputs extends {
455
+ type CreateExtensionOptions<TKind extends string | undefined, TNamespace extends string | undefined, TName extends string | undefined, UOutput extends AnyExtensionDataRef, TInputs extends {
433
456
  [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
434
457
  optional: boolean;
435
458
  singleton: boolean;
436
459
  }>;
437
- }, TConfig, TConfigInput, TConfigSchema extends {
460
+ }, TConfigSchema extends {
438
461
  [key: string]: (zImpl: typeof z) => z.ZodType;
439
462
  }, UFactoryOutput extends ExtensionDataValue<any, any>> = {
440
- kind?: string;
441
- namespace?: string;
442
- name?: string;
463
+ kind?: TKind;
464
+ namespace?: TNamespace;
465
+ name?: TName;
443
466
  attachTo: {
444
467
  id: string;
445
468
  input: string;
@@ -447,31 +470,79 @@ type CreateExtensionOptions<UOutput extends AnyExtensionDataRef, TInputs extends
447
470
  disabled?: boolean;
448
471
  inputs?: TInputs;
449
472
  output: Array<UOutput>;
450
- /** @deprecated - use `config.schema` instead */
451
- configSchema?: PortableSchema<TConfig, TConfigInput>;
452
473
  config?: {
453
474
  schema: TConfigSchema;
454
475
  };
455
476
  factory(context: {
456
477
  node: AppNode;
457
- config: TConfig & (string extends keyof TConfigSchema ? {} : {
478
+ config: {
458
479
  [key in keyof TConfigSchema]: z.infer<ReturnType<TConfigSchema[key]>>;
459
- });
480
+ };
460
481
  inputs: Expand<ResolvedExtensionInputs<TInputs>>;
461
482
  }): Iterable<UFactoryOutput>;
462
483
  } & VerifyExtensionFactoryOutput<UOutput, UFactoryOutput>;
463
484
  /** @public */
464
- interface ExtensionDefinition<TConfig, TConfigInput = TConfig> {
485
+ interface ExtensionDefinition<TConfig, TConfigInput = TConfig, UOutput extends AnyExtensionDataRef = AnyExtensionDataRef, TInputs extends {
486
+ [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
487
+ optional: boolean;
488
+ singleton: boolean;
489
+ }>;
490
+ } = {}, TIdParts extends {
491
+ kind?: string;
492
+ namespace?: string;
493
+ name?: string;
494
+ } = {
495
+ kind?: string;
496
+ namespace?: string;
497
+ name?: string;
498
+ }> {
465
499
  $$type: '@backstage/ExtensionDefinition';
466
- readonly kind?: string;
467
- readonly namespace?: string;
468
- readonly name?: string;
500
+ readonly kind?: TIdParts['kind'];
501
+ readonly namespace?: TIdParts['namespace'];
502
+ readonly name?: TIdParts['name'];
469
503
  readonly attachTo: {
470
504
  id: string;
471
505
  input: string;
472
506
  };
473
507
  readonly disabled: boolean;
474
508
  readonly configSchema?: PortableSchema<TConfig, TConfigInput>;
509
+ override<TExtensionConfigSchema extends {
510
+ [key in string]: (zImpl: typeof z) => z.ZodType;
511
+ }, UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends AnyExtensionDataRef, TExtraInputs extends {
512
+ [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
513
+ optional: boolean;
514
+ singleton: boolean;
515
+ }>;
516
+ }>(args: {
517
+ attachTo?: {
518
+ id: string;
519
+ input: string;
520
+ };
521
+ disabled?: boolean;
522
+ inputs?: TExtraInputs & {
523
+ [KName in keyof TInputs]?: `Error: Input '${KName & string}' is already defined in parent definition`;
524
+ };
525
+ output?: Array<UNewOutput>;
526
+ config?: {
527
+ schema: TExtensionConfigSchema & {
528
+ [KName in keyof TConfig]?: `Error: Config key '${KName & string}' is already defined in parent schema`;
529
+ };
530
+ };
531
+ factory(originalFactory: (context?: {
532
+ config?: TConfig;
533
+ inputs?: ResolveInputValueOverrides<TInputs>;
534
+ }) => ExtensionDataContainer<UOutput>, context: {
535
+ node: AppNode;
536
+ config: TConfig & {
537
+ [key in keyof TExtensionConfigSchema]: z.infer<ReturnType<TExtensionConfigSchema[key]>>;
538
+ };
539
+ inputs: Expand<ResolvedExtensionInputs<TInputs & TExtraInputs>>;
540
+ }): Iterable<UFactoryOutput>;
541
+ } & VerifyExtensionFactoryOutput<AnyExtensionDataRef extends UNewOutput ? UOutput : UNewOutput, UFactoryOutput>): ExtensionDefinition<{
542
+ [key in keyof TExtensionConfigSchema]: z.infer<ReturnType<TExtensionConfigSchema[key]>>;
543
+ } & TConfig, z.input<z.ZodObject<{
544
+ [key in keyof TExtensionConfigSchema]: ReturnType<TExtensionConfigSchema[key]>;
545
+ }>> & TConfigInput, AnyExtensionDataRef extends UNewOutput ? UOutput : UNewOutput, TInputs & TExtraInputs, TIdParts>;
475
546
  }
476
547
  /** @public */
477
548
  declare function createExtension<UOutput extends AnyExtensionDataRef, TInputs extends {
@@ -479,24 +550,22 @@ declare function createExtension<UOutput extends AnyExtensionDataRef, TInputs ex
479
550
  optional: boolean;
480
551
  singleton: boolean;
481
552
  }>;
482
- }, TConfig, TConfigInput, TConfigSchema extends {
553
+ }, TConfigSchema extends {
483
554
  [key: string]: (zImpl: typeof z) => z.ZodType;
484
- }, UFactoryOutput extends ExtensionDataValue<any, any>>(options: CreateExtensionOptions<UOutput, TInputs, TConfig, TConfigInput, TConfigSchema, UFactoryOutput>): ExtensionDefinition<TConfig & (string extends keyof TConfigSchema ? {} : {
555
+ }, UFactoryOutput extends ExtensionDataValue<any, any>, const TKind extends string | undefined = undefined, const TNamespace extends string | undefined = undefined, const TName extends string | undefined = undefined>(options: CreateExtensionOptions<TKind, TNamespace, TName, UOutput, TInputs, TConfigSchema, UFactoryOutput>): ExtensionDefinition<{
485
556
  [key in keyof TConfigSchema]: z.infer<ReturnType<TConfigSchema[key]>>;
486
- }), TConfigInput & (string extends keyof TConfigSchema ? {} : z.input<z.ZodObject<{
557
+ }, z.input<z.ZodObject<{
487
558
  [key in keyof TConfigSchema]: ReturnType<TConfigSchema[key]>;
488
- }>>)>;
559
+ }>>, UOutput, TInputs, {
560
+ kind: string | undefined extends TKind ? undefined : TKind;
561
+ namespace: string | undefined extends TNamespace ? undefined : TNamespace;
562
+ name: string | undefined extends TName ? undefined : TName;
563
+ }>;
489
564
  /**
490
565
  * @public
491
566
  * @deprecated - use the array format of `output` instead, see TODO-doc-link
492
567
  */
493
- declare function createExtension<TOutput extends AnyExtensionDataMap, TInputs extends AnyExtensionInputMap, TConfig, TConfigInput, TConfigSchema extends {
494
- [key: string]: (zImpl: typeof z) => z.ZodType;
495
- }>(options: LegacyCreateExtensionOptions<TOutput, TInputs, TConfig, TConfigInput, TConfigSchema>): ExtensionDefinition<TConfig & (string extends keyof TConfigSchema ? {} : {
496
- [key in keyof TConfigSchema]: z.infer<ReturnType<TConfigSchema[key]>>;
497
- }), TConfigInput & (string extends keyof TConfigSchema ? {} : z.input<z.ZodObject<{
498
- [key in keyof TConfigSchema]: ReturnType<TConfigSchema[key]>;
499
- }>>)>;
568
+ declare function createExtension<TOutput extends AnyExtensionDataMap, TInputs extends AnyExtensionInputMap, TConfig, TConfigInput>(options: LegacyCreateExtensionOptions<TOutput, TInputs, TConfig, TConfigInput>): ExtensionDefinition<TConfig, TConfigInput, never, never>;
500
569
 
501
570
  /** @public */
502
571
  interface Extension<TConfig, TConfigInput = TConfig> {
@@ -509,6 +578,12 @@ interface Extension<TConfig, TConfigInput = TConfig> {
509
578
  readonly disabled: boolean;
510
579
  readonly configSchema?: PortableSchema<TConfig, TConfigInput>;
511
580
  }
581
+ /** @ignore */
582
+ type ResolveExtensionId<TExtension extends ExtensionDefinition<any>, TDefaultNamespace extends string | undefined> = TExtension extends ExtensionDefinition<any, any, any, any, {
583
+ kind: infer IKind extends string | undefined;
584
+ namespace: infer INamespace extends string | undefined;
585
+ name: infer IName extends string | undefined;
586
+ }> ? [string | undefined] extends [IKind | INamespace | IName] ? never : ((undefined extends TDefaultNamespace ? INamespace : TDefaultNamespace) extends infer ISelectedNamespace extends string ? undefined extends IName ? ISelectedNamespace : `${ISelectedNamespace}/${IName}` : IName) extends infer INamePart extends string ? IKind extends string ? `${IKind}:${INamePart}` : INamePart : never : never;
512
587
 
513
588
  /**
514
589
  * Feature flag configuration.
@@ -528,11 +603,17 @@ type AnyExternalRoutes = {
528
603
  [name in string]: ExternalRouteRef;
529
604
  };
530
605
  /** @public */
531
- interface BackstagePlugin<Routes extends AnyRoutes = AnyRoutes, ExternalRoutes extends AnyExternalRoutes = AnyExternalRoutes> {
606
+ interface BackstagePlugin<TRoutes extends AnyRoutes = AnyRoutes, TExternalRoutes extends AnyExternalRoutes = AnyExternalRoutes, TExtensionMap extends {
607
+ [id in string]: ExtensionDefinition<any, any>;
608
+ } = {}> {
532
609
  readonly $$type: '@backstage/BackstagePlugin';
533
610
  readonly id: string;
534
- readonly routes: Routes;
535
- readonly externalRoutes: ExternalRoutes;
611
+ readonly routes: TRoutes;
612
+ readonly externalRoutes: TExternalRoutes;
613
+ getExtension<TId extends keyof TExtensionMap>(id: TId): TExtensionMap[TId];
614
+ withOverrides(options: {
615
+ extensions: Array<ExtensionDefinition<any, any>>;
616
+ }): BackstagePlugin<TRoutes, TExternalRoutes, TExtensionMap>;
536
617
  }
537
618
  /** @public */
538
619
  interface ExtensionOverrides {
@@ -542,15 +623,22 @@ interface ExtensionOverrides {
542
623
  type FrontendFeature = BackstagePlugin | ExtensionOverrides;
543
624
 
544
625
  /** @public */
545
- interface PluginOptions<Routes extends AnyRoutes, ExternalRoutes extends AnyExternalRoutes> {
546
- id: string;
547
- routes?: Routes;
548
- externalRoutes?: ExternalRoutes;
549
- extensions?: ExtensionDefinition<any, any>[];
626
+ interface PluginOptions<TId extends string, TRoutes extends AnyRoutes, TExternalRoutes extends AnyExternalRoutes, TExtensions extends readonly ExtensionDefinition<any, any>[]> {
627
+ id: TId;
628
+ routes?: TRoutes;
629
+ externalRoutes?: TExternalRoutes;
630
+ extensions?: TExtensions;
550
631
  featureFlags?: FeatureFlagConfig[];
551
632
  }
552
633
  /** @public */
553
- declare function createPlugin<Routes extends AnyRoutes = {}, ExternalRoutes extends AnyExternalRoutes = {}>(options: PluginOptions<Routes, ExternalRoutes>): BackstagePlugin<Routes, ExternalRoutes>;
634
+ declare function createFrontendPlugin<TId extends string, TRoutes extends AnyRoutes = {}, TExternalRoutes extends AnyExternalRoutes = {}, TExtensions extends readonly ExtensionDefinition<any, any>[] = []>(options: PluginOptions<TId, TRoutes, TExternalRoutes, TExtensions>): BackstagePlugin<TRoutes, TExternalRoutes, {
635
+ [KExtension in TExtensions[number] as ResolveExtensionId<KExtension, TId>]: KExtension;
636
+ }>;
637
+ /**
638
+ * @public
639
+ * @deprecated Use {@link createFrontendPlugin} instead.
640
+ */
641
+ declare const createPlugin: typeof createFrontendPlugin;
554
642
 
555
643
  /** @public */
556
644
  interface ExtensionOverridesOptions {
@@ -563,7 +651,7 @@ declare function createExtensionOverrides(options: ExtensionOverridesOptions): E
563
651
  /**
564
652
  * @public
565
653
  */
566
- type CreateExtensionBlueprintOptions<TParams, UOutput extends AnyExtensionDataRef, TInputs extends {
654
+ type CreateExtensionBlueprintOptions<TKind extends string, TNamespace extends string | undefined, TName extends string | undefined, TParams, UOutput extends AnyExtensionDataRef, TInputs extends {
567
655
  [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
568
656
  optional: boolean;
569
657
  singleton: boolean;
@@ -573,8 +661,8 @@ type CreateExtensionBlueprintOptions<TParams, UOutput extends AnyExtensionDataRe
573
661
  }, UFactoryOutput extends ExtensionDataValue<any, any>, TDataRefs extends {
574
662
  [name in string]: AnyExtensionDataRef;
575
663
  }> = {
576
- kind: string;
577
- namespace?: string | ((params: TParams) => string);
664
+ kind: TKind;
665
+ namespace?: TNamespace;
578
666
  attachTo: {
579
667
  id: string;
580
668
  input: string;
@@ -582,9 +670,9 @@ type CreateExtensionBlueprintOptions<TParams, UOutput extends AnyExtensionDataRe
582
670
  disabled?: boolean;
583
671
  inputs?: TInputs;
584
672
  output: Array<UOutput>;
585
- name?: string | ((params: TParams) => string);
673
+ name?: TName;
586
674
  config?: {
587
- schema: TConfigSchema | ((params: TParams) => TConfigSchema);
675
+ schema: TConfigSchema;
588
676
  };
589
677
  factory(params: TParams, context: {
590
678
  node: AppNode;
@@ -598,12 +686,16 @@ type CreateExtensionBlueprintOptions<TParams, UOutput extends AnyExtensionDataRe
598
686
  /**
599
687
  * @public
600
688
  */
601
- interface ExtensionBlueprint<TParams, UOutput extends AnyExtensionDataRef, TInputs extends {
689
+ interface ExtensionBlueprint<TIdParts extends {
690
+ kind: string;
691
+ namespace?: string;
692
+ name?: string;
693
+ }, TParams, UOutput extends AnyExtensionDataRef, TInputs extends {
602
694
  [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
603
695
  optional: boolean;
604
696
  singleton: boolean;
605
697
  }>;
606
- }, UExtraOutput extends AnyExtensionDataRef, TConfig extends {
698
+ }, TConfig extends {
607
699
  [key in string]: unknown;
608
700
  }, TConfigInput extends {
609
701
  [key in string]: unknown;
@@ -611,47 +703,69 @@ interface ExtensionBlueprint<TParams, UOutput extends AnyExtensionDataRef, TInpu
611
703
  [name in string]: AnyExtensionDataRef;
612
704
  }> {
613
705
  dataRefs: TDataRefs;
706
+ make<TNewNamespace extends string | undefined, TNewName extends string | undefined>(args: {
707
+ namespace?: TNewNamespace;
708
+ name?: TNewName;
709
+ attachTo?: {
710
+ id: string;
711
+ input: string;
712
+ };
713
+ disabled?: boolean;
714
+ params: TParams;
715
+ }): ExtensionDefinition<TConfig, TConfigInput, UOutput, TInputs, {
716
+ kind: TIdParts['kind'];
717
+ namespace: string | undefined extends TNewNamespace ? TIdParts['namespace'] : TNewNamespace;
718
+ name: string | undefined extends TNewName ? TIdParts['name'] : TNewName;
719
+ }>;
614
720
  /**
615
721
  * Creates a new extension from the blueprint.
616
722
  *
617
723
  * You must either pass `params` directly, or define a `factory` that can
618
724
  * optionally call the original factory with the same params.
619
725
  */
620
- make<TExtensionConfigSchema extends {
726
+ makeWithOverrides<TNewNamespace extends string | undefined, TNewName extends string | undefined, TExtensionConfigSchema extends {
621
727
  [key in string]: (zImpl: typeof z) => z.ZodType;
622
- }, UFactoryOutput extends ExtensionDataValue<any, any>>(args: {
623
- namespace?: string;
624
- name?: string;
728
+ }, UFactoryOutput extends ExtensionDataValue<any, any>, UNewOutput extends AnyExtensionDataRef, TExtraInputs extends {
729
+ [inputName in string]: ExtensionInput<AnyExtensionDataRef, {
730
+ optional: boolean;
731
+ singleton: boolean;
732
+ }>;
733
+ }>(args: {
734
+ namespace?: TNewNamespace;
735
+ name?: TNewName;
625
736
  attachTo?: {
626
737
  id: string;
627
738
  input: string;
628
739
  };
629
740
  disabled?: boolean;
630
- inputs?: TInputs;
631
- output?: Array<UExtraOutput>;
741
+ inputs?: TExtraInputs & {
742
+ [KName in keyof TInputs]?: `Error: Input '${KName & string}' is already defined in parent definition`;
743
+ };
744
+ output?: Array<UNewOutput>;
632
745
  config?: {
633
746
  schema: TExtensionConfigSchema & {
634
747
  [KName in keyof TConfig]?: `Error: Config key '${KName & string}' is already defined in parent schema`;
635
748
  };
636
749
  };
637
- } & (({
638
750
  factory(originalFactory: (params: TParams, context?: {
639
751
  config?: TConfig;
640
- inputs?: Expand<ResolvedExtensionInputs<TInputs>>;
641
- }) => Iterable<ExtensionDataRefToValue<UOutput>>, context: {
752
+ inputs?: ResolveInputValueOverrides<TInputs>;
753
+ }) => ExtensionDataContainer<UOutput>, context: {
642
754
  node: AppNode;
643
755
  config: TConfig & {
644
756
  [key in keyof TExtensionConfigSchema]: z.infer<ReturnType<TExtensionConfigSchema[key]>>;
645
757
  };
646
- inputs: Expand<ResolvedExtensionInputs<TInputs>>;
647
- }): Iterable<UFactoryOutput>;
648
- } & VerifyExtensionFactoryOutput<UOutput & UExtraOutput, UFactoryOutput>) | {
649
- params: TParams;
650
- })): ExtensionDefinition<{
758
+ inputs: Expand<ResolvedExtensionInputs<TInputs & TExtraInputs>>;
759
+ }): Iterable<UFactoryOutput> & VerifyExtensionFactoryOutput<AnyExtensionDataRef extends UNewOutput ? UOutput : UNewOutput, UFactoryOutput>;
760
+ }): ExtensionDefinition<{
651
761
  [key in keyof TExtensionConfigSchema]: z.infer<ReturnType<TExtensionConfigSchema[key]>>;
652
762
  } & TConfig, z.input<z.ZodObject<{
653
763
  [key in keyof TExtensionConfigSchema]: ReturnType<TExtensionConfigSchema[key]>;
654
- }>> & TConfigInput>;
764
+ }>> & TConfigInput, AnyExtensionDataRef extends UNewOutput ? UOutput : UNewOutput, TInputs & TExtraInputs, {
765
+ kind: TIdParts['kind'];
766
+ namespace: string | undefined extends TNewNamespace ? TIdParts['namespace'] : TNewNamespace;
767
+ name: string | undefined extends TNewName ? TIdParts['name'] : TNewName;
768
+ }>;
655
769
  }
656
770
  /**
657
771
  * A simpler replacement for wrapping up `createExtension` inside a kind or type. This allows for a cleaner API for creating
@@ -664,11 +778,15 @@ declare function createExtensionBlueprint<TParams, UOutput extends AnyExtensionD
664
778
  optional: boolean;
665
779
  singleton: boolean;
666
780
  }>;
667
- }, UExtraOutput extends AnyExtensionDataRef, TConfigSchema extends {
781
+ }, TConfigSchema extends {
668
782
  [key in string]: (zImpl: typeof z) => z.ZodType;
669
- }, UFactoryOutput extends ExtensionDataValue<any, any>, TDataRefs extends {
783
+ }, UFactoryOutput extends ExtensionDataValue<any, any>, TKind extends string, TNamespace extends string | undefined = undefined, TName extends string | undefined = undefined, TDataRefs extends {
670
784
  [name in string]: AnyExtensionDataRef;
671
- } = never>(options: CreateExtensionBlueprintOptions<TParams, UOutput, TInputs, TConfigSchema, UFactoryOutput, TDataRefs>): ExtensionBlueprint<TParams, UOutput, TInputs, UExtraOutput, string extends keyof TConfigSchema ? {} : {
785
+ } = never>(options: CreateExtensionBlueprintOptions<TKind, TNamespace, TName, TParams, UOutput, TInputs, TConfigSchema, UFactoryOutput, TDataRefs>): ExtensionBlueprint<{
786
+ kind: TKind;
787
+ namespace: TNamespace;
788
+ name: TName;
789
+ }, TParams, UOutput, string extends keyof TInputs ? {} : TInputs, string extends keyof TConfigSchema ? {} : {
672
790
  [key in keyof TConfigSchema]: z.infer<ReturnType<TConfigSchema[key]>>;
673
791
  }, string extends keyof TConfigSchema ? {} : z.input<z.ZodObject<{
674
792
  [key in keyof TConfigSchema]: ReturnType<TConfigSchema[key]>;
@@ -784,7 +902,11 @@ interface ExtensionBoundaryProps {
784
902
  children: ReactNode;
785
903
  }
786
904
  /** @public */
787
- declare function ExtensionBoundary(props: ExtensionBoundaryProps): React.JSX.Element;
905
+ declare function ExtensionBoundary(props: ExtensionBoundaryProps): React__default.JSX.Element;
906
+ /** @public */
907
+ declare namespace ExtensionBoundary {
908
+ function lazy(appNode: AppNode, lazyElement: () => Promise<JSX.Element>): JSX.Element;
909
+ }
788
910
 
789
911
  /** @public */
790
912
  type ComponentRef<T extends {} = {}> = {
@@ -1004,7 +1126,215 @@ declare const analyticsApiRef: ApiRef<AnalyticsApi>;
1004
1126
  */
1005
1127
  declare function useAnalytics(): AnalyticsTracker;
1006
1128
 
1129
+ /**
1130
+ * Creates utility API extensions.
1131
+ *
1132
+ * @public
1133
+ */
1134
+ declare const ApiBlueprint: ExtensionBlueprint<{
1135
+ kind: "api";
1136
+ namespace: undefined;
1137
+ name: undefined;
1138
+ }, {
1139
+ factory: AnyApiFactory;
1140
+ }, ConfigurableExtensionDataRef<AnyApiFactory, "core.api.factory", {}>, {}, {}, {}, {
1141
+ factory: ConfigurableExtensionDataRef<AnyApiFactory, "core.api.factory", {}>;
1142
+ }>;
1143
+
1144
+ /**
1145
+ * Creates extensions that render a React element at the app root, outside of
1146
+ * the app layout. This is useful for example for shared popups and similar.
1147
+ *
1148
+ * @public
1149
+ */
1150
+ declare const AppRootElementBlueprint: ExtensionBlueprint<{
1151
+ kind: "app-root-element";
1152
+ namespace: undefined;
1153
+ name: undefined;
1154
+ }, {
1155
+ element: JSX.Element | (() => JSX.Element);
1156
+ }, ConfigurableExtensionDataRef<React.JSX.Element, "core.reactElement", {}>, {}, {}, {}, never>;
1157
+
1158
+ /**
1159
+ * Creates a extensions that render a React wrapper at the app root, enclosing
1160
+ * the app layout. This is useful for example for adding global React contexts
1161
+ * and similar.
1162
+ *
1163
+ * @public
1164
+ */
1165
+ declare const AppRootWrapperBlueprint: ExtensionBlueprint<{
1166
+ kind: "app-root-wrapper";
1167
+ namespace: undefined;
1168
+ name: undefined;
1169
+ }, {
1170
+ Component: ComponentType<PropsWithChildren<{}>>;
1171
+ }, ConfigurableExtensionDataRef<React__default.ComponentType<{
1172
+ children?: React__default.ReactNode;
1173
+ }>, "app.root.wrapper", {}>, {}, {}, {}, {
1174
+ component: ConfigurableExtensionDataRef<React__default.ComponentType<{
1175
+ children?: React__default.ReactNode;
1176
+ }>, "app.root.wrapper", {}>;
1177
+ }>;
1178
+
1179
+ /** @public */
1180
+ declare const IconBundleBlueprint: ExtensionBlueprint<{
1181
+ kind: "icon-bundle";
1182
+ namespace: "app";
1183
+ name: undefined;
1184
+ }, {
1185
+ icons: {
1186
+ [x: string]: IconComponent;
1187
+ };
1188
+ }, ConfigurableExtensionDataRef<{
1189
+ [x: string]: IconComponent;
1190
+ }, "core.icons", {}>, {}, {
1191
+ icons: string;
1192
+ test: string;
1193
+ }, {
1194
+ test: string;
1195
+ icons?: string | undefined;
1196
+ }, {
1197
+ icons: ConfigurableExtensionDataRef<{
1198
+ [x: string]: IconComponent;
1199
+ }, "core.icons", {}>;
1200
+ }>;
1201
+
1202
+ /**
1203
+ * Creates extensions that make up the items of the nav bar.
1204
+ *
1205
+ * @public
1206
+ */
1207
+ declare const NavItemBlueprint: ExtensionBlueprint<{
1208
+ kind: "nav-item";
1209
+ namespace: undefined;
1210
+ name: undefined;
1211
+ }, {
1212
+ title: string;
1213
+ icon: IconComponent$1;
1214
+ routeRef: RouteRef<undefined>;
1215
+ }, ConfigurableExtensionDataRef<{
1216
+ title: string;
1217
+ icon: IconComponent$1;
1218
+ routeRef: RouteRef<undefined>;
1219
+ }, "core.nav-item.target", {}>, {}, {}, {}, {
1220
+ target: ConfigurableExtensionDataRef<{
1221
+ title: string;
1222
+ icon: IconComponent$1;
1223
+ routeRef: RouteRef<undefined>;
1224
+ }, "core.nav-item.target", {}>;
1225
+ }>;
1226
+
1227
+ /**
1228
+ * Creates an extension that replaces the logo in the nav bar with your own.
1229
+ *
1230
+ * @public
1231
+ */
1232
+ declare const NavLogoBlueprint: ExtensionBlueprint<{
1233
+ kind: "nav-logo";
1234
+ namespace: undefined;
1235
+ name: undefined;
1236
+ }, {
1237
+ logoIcon: JSX.Element;
1238
+ logoFull: JSX.Element;
1239
+ }, ConfigurableExtensionDataRef<{
1240
+ logoIcon?: JSX.Element | undefined;
1241
+ logoFull?: JSX.Element | undefined;
1242
+ }, "core.nav-logo.logo-elements", {}>, {}, {}, {}, {
1243
+ logoElements: ConfigurableExtensionDataRef<{
1244
+ logoIcon?: JSX.Element | undefined;
1245
+ logoFull?: JSX.Element | undefined;
1246
+ }, "core.nav-logo.logo-elements", {}>;
1247
+ }>;
1248
+
1249
+ /**
1250
+ * Createx extensions that are routable React page components.
1251
+ *
1252
+ * @public
1253
+ */
1254
+ declare const PageBlueprint: ExtensionBlueprint<{
1255
+ kind: "page";
1256
+ namespace: undefined;
1257
+ name: undefined;
1258
+ }, {
1259
+ defaultPath: string;
1260
+ loader: () => Promise<JSX.Element>;
1261
+ routeRef?: RouteRef<AnyRouteRefParams> | undefined;
1262
+ }, ConfigurableExtensionDataRef<React.JSX.Element, "core.reactElement", {}> | ConfigurableExtensionDataRef<string, "core.routing.path", {}> | ConfigurableExtensionDataRef<RouteRef<AnyRouteRefParams>, "core.routing.ref", {
1263
+ optional: true;
1264
+ }>, {}, {
1265
+ path: string | undefined;
1266
+ }, {
1267
+ path?: string | undefined;
1268
+ }, never>;
1269
+
1007
1270
  /** @public */
1271
+ declare const RouterBlueprint: ExtensionBlueprint<{
1272
+ kind: "app-router-component";
1273
+ namespace: undefined;
1274
+ name: undefined;
1275
+ }, {
1276
+ Component: ComponentType<PropsWithChildren<{}>>;
1277
+ }, ConfigurableExtensionDataRef<ComponentType<{
1278
+ children?: React.ReactNode;
1279
+ }>, "app.router.wrapper", {}>, {}, {}, {}, {
1280
+ component: ConfigurableExtensionDataRef<ComponentType<{
1281
+ children?: React.ReactNode;
1282
+ }>, "app.router.wrapper", {}>;
1283
+ }>;
1284
+
1285
+ /**
1286
+ * Creates an extension that replaces the sign in page.
1287
+ *
1288
+ * @public
1289
+ */
1290
+ declare const SignInPageBlueprint: ExtensionBlueprint<{
1291
+ kind: "sign-in-page";
1292
+ namespace: undefined;
1293
+ name: undefined;
1294
+ }, {
1295
+ loader: () => Promise<ComponentType<SignInPageProps>>;
1296
+ }, ConfigurableExtensionDataRef<React__default.ComponentType<SignInPageProps>, "core.sign-in-page.component", {}>, {}, {}, {}, {
1297
+ component: ConfigurableExtensionDataRef<React__default.ComponentType<SignInPageProps>, "core.sign-in-page.component", {}>;
1298
+ }>;
1299
+
1300
+ /**
1301
+ * Creates an extension that adds/replaces an app theme.
1302
+ *
1303
+ * @public
1304
+ */
1305
+ declare const ThemeBlueprint: ExtensionBlueprint<{
1306
+ kind: "theme";
1307
+ namespace: "app";
1308
+ name: undefined;
1309
+ }, {
1310
+ theme: AppTheme;
1311
+ }, ConfigurableExtensionDataRef<AppTheme, "core.theme.theme", {}>, {}, {}, {}, {
1312
+ theme: ConfigurableExtensionDataRef<AppTheme, "core.theme.theme", {}>;
1313
+ }>;
1314
+
1315
+ /**
1316
+ * Creates an extension that adds translations to your app.
1317
+ *
1318
+ * @public
1319
+ */
1320
+ declare const TranslationBlueprint: ExtensionBlueprint<{
1321
+ kind: "translation";
1322
+ namespace: undefined;
1323
+ name: undefined;
1324
+ }, {
1325
+ resource: TranslationResource | TranslationMessages;
1326
+ }, ConfigurableExtensionDataRef<TranslationResource<string> | TranslationMessages<string, {
1327
+ [x: string]: string;
1328
+ }, boolean>, "core.translation.translation", {}>, {}, {}, {}, {
1329
+ translation: ConfigurableExtensionDataRef<TranslationResource<string> | TranslationMessages<string, {
1330
+ [x: string]: string;
1331
+ }, boolean>, "core.translation.translation", {}>;
1332
+ }>;
1333
+
1334
+ /**
1335
+ * @public
1336
+ * @deprecated Use {@link ApiBlueprint} instead.
1337
+ */
1008
1338
  declare function createApiExtension<TConfig extends {}, TInputs extends AnyExtensionInputMap>(options: ({
1009
1339
  api: AnyApiRef;
1010
1340
  factory: (options: {
@@ -1016,9 +1346,19 @@ declare function createApiExtension<TConfig extends {}, TInputs extends AnyExten
1016
1346
  }) & {
1017
1347
  configSchema?: PortableSchema<TConfig>;
1018
1348
  inputs?: TInputs;
1019
- }): ExtensionDefinition<TConfig & {}, TConfig & {}>;
1020
- /** @public */
1349
+ }): ExtensionDefinition<TConfig, TConfig, never, never, {
1350
+ kind?: string | undefined;
1351
+ namespace?: string | undefined;
1352
+ name?: string | undefined;
1353
+ }>;
1354
+ /**
1355
+ * @public
1356
+ * @deprecated Use {@link ApiBlueprint} instead.
1357
+ */
1021
1358
  declare namespace createApiExtension {
1359
+ /**
1360
+ * @deprecated Use {@link ApiBlueprint} instead.
1361
+ */
1022
1362
  const factoryDataRef: ConfigurableExtensionDataRef<AnyApiFactory, "core.api.factory", {}>;
1023
1363
  }
1024
1364
 
@@ -1027,6 +1367,7 @@ declare namespace createApiExtension {
1027
1367
  * the app layout. This is useful for example for shared popups and similar.
1028
1368
  *
1029
1369
  * @public
1370
+ * @deprecated Use {@link AppRootElementBlueprint} instead.
1030
1371
  */
1031
1372
  declare function createAppRootElementExtension<TConfig extends {}, TInputs extends AnyExtensionInputMap>(options: {
1032
1373
  namespace?: string;
@@ -1050,6 +1391,7 @@ declare function createAppRootElementExtension<TConfig extends {}, TInputs exten
1050
1391
  * and similar.
1051
1392
  *
1052
1393
  * @public
1394
+ * @deprecated Use {@link AppRootWrapperBlueprint} instead.
1053
1395
  */
1054
1396
  declare function createAppRootWrapperExtension<TConfig extends {}, TInputs extends AnyExtensionInputMap>(options: {
1055
1397
  namespace?: string;
@@ -1066,10 +1408,16 @@ declare function createAppRootWrapperExtension<TConfig extends {}, TInputs exten
1066
1408
  config: TConfig;
1067
1409
  }>>;
1068
1410
  }): ExtensionDefinition<TConfig>;
1069
- /** @public */
1411
+ /**
1412
+ * @public
1413
+ * @deprecated Use {@link AppRootWrapperBlueprint} instead.
1414
+ */
1070
1415
  declare namespace createAppRootWrapperExtension {
1071
- const componentDataRef: ConfigurableExtensionDataRef<React.ComponentType<{
1072
- children?: React.ReactNode;
1416
+ /**
1417
+ * @deprecated Use {@link AppRootWrapperBlueprint} instead.
1418
+ */
1419
+ const componentDataRef: ConfigurableExtensionDataRef<React__default.ComponentType<{
1420
+ children?: React__default.ReactNode;
1073
1421
  }>, "app.root.wrapper", {}>;
1074
1422
  }
1075
1423
 
@@ -1079,6 +1427,7 @@ declare namespace createAppRootWrapperExtension {
1079
1427
  * MemoryRouter in tests, or to add additional props to a BrowserRouter.
1080
1428
  *
1081
1429
  * @public
1430
+ * @deprecated Use {@link RouterBlueprint} instead.
1082
1431
  */
1083
1432
  declare function createRouterExtension<TConfig extends {}, TInputs extends AnyExtensionInputMap>(options: {
1084
1433
  namespace?: string;
@@ -1095,10 +1444,16 @@ declare function createRouterExtension<TConfig extends {}, TInputs extends AnyEx
1095
1444
  config: TConfig;
1096
1445
  }>>;
1097
1446
  }): ExtensionDefinition<TConfig>;
1098
- /** @public */
1447
+ /**
1448
+ * @public
1449
+ * @deprecated Use {@link RouterBlueprint} instead.
1450
+ */
1099
1451
  declare namespace createRouterExtension {
1100
- const componentDataRef: ConfigurableExtensionDataRef<React.ComponentType<{
1101
- children?: React.ReactNode;
1452
+ /**
1453
+ * @deprecated Use {@link RouterBlueprint} instead.
1454
+ */
1455
+ const componentDataRef: ConfigurableExtensionDataRef<React__default.ComponentType<{
1456
+ children?: React__default.ReactNode;
1102
1457
  }>, "app.router.wrapper", {}>;
1103
1458
  }
1104
1459
 
@@ -1106,6 +1461,7 @@ declare namespace createRouterExtension {
1106
1461
  * Helper for creating extensions for a routable React page component.
1107
1462
  *
1108
1463
  * @public
1464
+ * @deprecated Use {@link PageBlueprint} instead.
1109
1465
  */
1110
1466
  declare function createPageExtension<TConfig extends {
1111
1467
  path: string;
@@ -1131,7 +1487,9 @@ declare function createPageExtension<TConfig extends {
1131
1487
 
1132
1488
  /**
1133
1489
  * Helper for creating extensions for a nav item.
1490
+ *
1134
1491
  * @public
1492
+ * @deprecated Use {@link NavItemBlueprint} instead.
1135
1493
  */
1136
1494
  declare function createNavItemExtension(options: {
1137
1495
  namespace?: string;
@@ -1143,9 +1501,19 @@ declare function createNavItemExtension(options: {
1143
1501
  title: string;
1144
1502
  }, {
1145
1503
  title?: string | undefined;
1504
+ }, never, never, {
1505
+ kind?: string | undefined;
1506
+ namespace?: string | undefined;
1507
+ name?: string | undefined;
1146
1508
  }>;
1147
- /** @public */
1509
+ /**
1510
+ * @public
1511
+ * @deprecated Use {@link NavItemBlueprint} instead.
1512
+ */
1148
1513
  declare namespace createNavItemExtension {
1514
+ /**
1515
+ * @deprecated Use {@link NavItemBlueprint} instead.
1516
+ */
1149
1517
  const targetDataRef: ConfigurableExtensionDataRef<{
1150
1518
  title: string;
1151
1519
  icon: IconComponent$1;
@@ -1155,16 +1523,28 @@ declare namespace createNavItemExtension {
1155
1523
 
1156
1524
  /**
1157
1525
  * Helper for creating extensions for a nav logos.
1526
+ *
1158
1527
  * @public
1528
+ * @deprecated Use {@link NavLogoBlueprint} instead.
1159
1529
  */
1160
1530
  declare function createNavLogoExtension(options: {
1161
1531
  name?: string;
1162
1532
  namespace?: string;
1163
1533
  logoIcon: JSX.Element;
1164
1534
  logoFull: JSX.Element;
1165
- }): ExtensionDefinition<{}, {}>;
1166
- /** @public */
1535
+ }): ExtensionDefinition<unknown, unknown, never, never, {
1536
+ kind?: string | undefined;
1537
+ namespace?: string | undefined;
1538
+ name?: string | undefined;
1539
+ }>;
1540
+ /**
1541
+ * @public
1542
+ * @deprecated Use {@link NavLogoBlueprint} instead.
1543
+ */
1167
1544
  declare namespace createNavLogoExtension {
1545
+ /**
1546
+ * @deprecated Use {@link NavLogoBlueprint} instead.
1547
+ */
1168
1548
  const logoElementsDataRef: ConfigurableExtensionDataRef<{
1169
1549
  logoIcon?: JSX.Element | undefined;
1170
1550
  logoFull?: JSX.Element | undefined;
@@ -1174,6 +1554,7 @@ declare namespace createNavLogoExtension {
1174
1554
  /**
1175
1555
  *
1176
1556
  * @public
1557
+ * @deprecated Use {@link SignInPageBlueprint} instead.
1177
1558
  */
1178
1559
  declare function createSignInPageExtension<TConfig extends {}, TInputs extends AnyExtensionInputMap>(options: {
1179
1560
  namespace?: string;
@@ -1190,14 +1571,30 @@ declare function createSignInPageExtension<TConfig extends {}, TInputs extends A
1190
1571
  inputs: Expand<ResolvedExtensionInputs<TInputs>>;
1191
1572
  }) => Promise<ComponentType<SignInPageProps>>;
1192
1573
  }): ExtensionDefinition<TConfig>;
1193
- /** @public */
1574
+ /**
1575
+ * @public
1576
+ * @deprecated Use {@link SignInPageBlueprint} instead.
1577
+ */
1194
1578
  declare namespace createSignInPageExtension {
1195
- const componentDataRef: ConfigurableExtensionDataRef<React.ComponentType<SignInPageProps>, "core.sign-in-page.component", {}>;
1579
+ /**
1580
+ * @deprecated Use {@link SignInPageBlueprint} instead.
1581
+ */
1582
+ const componentDataRef: ConfigurableExtensionDataRef<React__default.ComponentType<SignInPageProps>, "core.sign-in-page.component", {}>;
1196
1583
  }
1197
1584
 
1198
- /** @public */
1199
- declare function createThemeExtension(theme: AppTheme): ExtensionDefinition<{}, {}>;
1200
- /** @public */
1585
+ /**
1586
+ * @public
1587
+ * @deprecated Use {@link ThemeBlueprint} instead.
1588
+ */
1589
+ declare function createThemeExtension(theme: AppTheme): ExtensionDefinition<unknown, unknown, never, never, {
1590
+ kind?: string | undefined;
1591
+ namespace?: string | undefined;
1592
+ name?: string | undefined;
1593
+ }>;
1594
+ /**
1595
+ * @public
1596
+ * @deprecated Use {@link ThemeBlueprint} instead.
1597
+ */
1201
1598
  declare namespace createThemeExtension {
1202
1599
  const themeDataRef: ConfigurableExtensionDataRef<AppTheme, "core.theme.theme", {}>;
1203
1600
  }
@@ -1207,7 +1604,9 @@ declare function createComponentExtension<TProps extends {}, TConfig extends {},
1207
1604
  ref: ComponentRef<TProps>;
1208
1605
  name?: string;
1209
1606
  disabled?: boolean;
1607
+ /** @deprecated these will be removed in the future */
1210
1608
  inputs?: TInputs;
1609
+ /** @deprecated these will be removed in the future */
1211
1610
  configSchema?: PortableSchema<TConfig>;
1212
1611
  loader: {
1213
1612
  lazy: (values: {
@@ -1220,7 +1619,11 @@ declare function createComponentExtension<TProps extends {}, TConfig extends {},
1220
1619
  inputs: Expand<ResolvedExtensionInputs<TInputs>>;
1221
1620
  }) => ComponentType<TProps>;
1222
1621
  };
1223
- }): ExtensionDefinition<TConfig & {}, TConfig & {}>;
1622
+ }): ExtensionDefinition<TConfig, TConfig, never, never, {
1623
+ kind?: string | undefined;
1624
+ namespace?: string | undefined;
1625
+ name?: string | undefined;
1626
+ }>;
1224
1627
  /** @public */
1225
1628
  declare namespace createComponentExtension {
1226
1629
  const componentDataRef: ConfigurableExtensionDataRef<{
@@ -1229,40 +1632,26 @@ declare namespace createComponentExtension {
1229
1632
  }, "core.component.component", {}>;
1230
1633
  }
1231
1634
 
1232
- /** @public */
1635
+ /**
1636
+ * @public
1637
+ * @deprecated Use {@link TranslationBlueprint} instead.
1638
+ */
1233
1639
  declare function createTranslationExtension(options: {
1234
1640
  name?: string;
1235
1641
  resource: TranslationResource | TranslationMessages;
1236
- }): ExtensionDefinition<{}, {}>;
1237
- /** @public */
1642
+ }): ExtensionDefinition<unknown, unknown, never, never, {
1643
+ kind?: string | undefined;
1644
+ namespace?: string | undefined;
1645
+ name?: string | undefined;
1646
+ }>;
1647
+ /**
1648
+ * @public
1649
+ * @deprecated Use {@link TranslationBlueprint} instead.
1650
+ */
1238
1651
  declare namespace createTranslationExtension {
1239
1652
  const translationDataRef: ConfigurableExtensionDataRef<TranslationResource<string> | TranslationMessages<string, {
1240
1653
  [x: string]: string;
1241
1654
  }, boolean>, "core.translation.translation", {}>;
1242
1655
  }
1243
1656
 
1244
- /** @public */
1245
- declare const IconBundleBlueprint: ExtensionBlueprint<{
1246
- icons: {
1247
- [x: string]: IconComponent;
1248
- };
1249
- }, ConfigurableExtensionDataRef<{
1250
- [x: string]: IconComponent;
1251
- }, "core.icons", {}>, {
1252
- [x: string]: ExtensionInput<AnyExtensionDataRef, {
1253
- optional: boolean;
1254
- singleton: boolean;
1255
- }>;
1256
- }, AnyExtensionDataRef, {
1257
- icons: string;
1258
- test: string;
1259
- }, {
1260
- test: string;
1261
- icons?: string | undefined;
1262
- }, {
1263
- icons: ConfigurableExtensionDataRef<{
1264
- [x: string]: IconComponent;
1265
- }, "core.icons", {}>;
1266
- }>;
1267
-
1268
- export { type AnalyticsApi, AnalyticsContext, type AnalyticsContextValue, type AnalyticsEvent, type AnalyticsEventAttributes, type AnalyticsTracker, type AnyExtensionDataMap, type AnyExtensionDataRef, type AnyExtensionInputMap, type AnyExternalRoutes, type AnyRouteRefParams, type AnyRoutes, type AppNode, type AppNodeEdges, type AppNodeInstance, type AppNodeSpec, type AppTree, type AppTreeApi, type BackstagePlugin, type CommonAnalyticsContext, type ComponentRef, type ComponentsApi, type ConfigurableExtensionDataRef, type CoreErrorBoundaryFallbackProps, type CoreNotFoundErrorPageProps, type CoreProgressProps, type CreateExtensionBlueprintOptions, type CreateExtensionOptions, type Extension, type ExtensionBlueprint, ExtensionBoundary, type ExtensionBoundaryProps, type ExtensionDataContainer, type ExtensionDataRef, type ExtensionDataRefToValue, type ExtensionDataValue, type ExtensionDataValues, type ExtensionDefinition, type ExtensionInput, type ExtensionOverrides, type ExtensionOverridesOptions, type ExternalRouteRef, type FeatureFlagConfig, type FrontendFeature, IconBundleBlueprint, type IconComponent, type IconsApi, type LegacyCreateExtensionOptions, type LegacyExtensionInput, type PluginOptions, type PortableSchema, type ResolvedExtensionInput, type ResolvedExtensionInputs, type RouteFunc, type RouteRef, type RouteResolutionApi, type RouteResolutionApiResolveOptions, type SubRouteRef, analyticsApiRef, appTreeApiRef, componentsApiRef, coreComponentRefs, coreExtensionData, createApiExtension, createAppRootElementExtension, createAppRootWrapperExtension, createComponentExtension, createComponentRef, createExtension, createExtensionBlueprint, createExtensionDataRef, createExtensionInput, createExtensionOverrides, createExternalRouteRef, createNavItemExtension, createNavLogoExtension, createPageExtension, createPlugin, createRouteRef, createRouterExtension, createSchemaFromZod, createSignInPageExtension, createSubRouteRef, createThemeExtension, createTranslationExtension, iconsApiRef, routeResolutionApiRef, useAnalytics, useComponentRef, useRouteRef, useRouteRefParams };
1657
+ export { type AnalyticsApi, AnalyticsContext, type AnalyticsContextValue, type AnalyticsEvent, type AnalyticsEventAttributes, type AnalyticsTracker, type AnyExtensionDataMap, type AnyExtensionDataRef, type AnyExtensionInputMap, type AnyExternalRoutes, type AnyRouteRefParams, type AnyRoutes, ApiBlueprint, type AppNode, type AppNodeEdges, type AppNodeInstance, type AppNodeSpec, AppRootElementBlueprint, AppRootWrapperBlueprint, type AppTree, type AppTreeApi, type BackstagePlugin, type CommonAnalyticsContext, type ComponentRef, type ComponentsApi, type ConfigurableExtensionDataRef, type CoreErrorBoundaryFallbackProps, type CoreNotFoundErrorPageProps, type CoreProgressProps, type CreateExtensionBlueprintOptions, type CreateExtensionOptions, type Extension, type ExtensionBlueprint, ExtensionBoundary, type ExtensionBoundaryProps, type ExtensionDataContainer, type ExtensionDataRef, type ExtensionDataRefToValue, type ExtensionDataValue, type ExtensionDataValues, type ExtensionDefinition, type ExtensionInput, type ExtensionOverrides, type ExtensionOverridesOptions, type ExternalRouteRef, type FeatureFlagConfig, type FrontendFeature, IconBundleBlueprint, type IconComponent, type IconsApi, type LegacyCreateExtensionOptions, type LegacyExtensionInput, NavItemBlueprint, NavLogoBlueprint, PageBlueprint, type PluginOptions, type PortableSchema, type ResolveInputValueOverrides, type ResolvedExtensionInput, type ResolvedExtensionInputs, type RouteFunc, type RouteRef, type RouteResolutionApi, type RouteResolutionApiResolveOptions, RouterBlueprint, SignInPageBlueprint, type SubRouteRef, ThemeBlueprint, TranslationBlueprint, analyticsApiRef, appTreeApiRef, componentsApiRef, coreComponentRefs, coreExtensionData, createApiExtension, createAppRootElementExtension, createAppRootWrapperExtension, createComponentExtension, createComponentRef, createExtension, createExtensionBlueprint, createExtensionDataRef, createExtensionInput, createExtensionOverrides, createExternalRouteRef, createFrontendPlugin, createNavItemExtension, createNavLogoExtension, createPageExtension, createPlugin, createRouteRef, createRouterExtension, createSchemaFromZod, createSignInPageExtension, createSubRouteRef, createThemeExtension, createTranslationExtension, iconsApiRef, routeResolutionApiRef, useAnalytics, useComponentRef, useRouteRef, useRouteRefParams };