UNPKG

@omnia/tooling-composers

Version:

Provide tooling to work with manifest things.

255 lines (254 loc) • 8.32 kB
import { ServerManifestTypes, RequestedResourceTypes } from "./Enums"; import { SecurityProviderTypes, SecurityRoleScopes, RuleLogicalOperator, ServiceTypes } from "./index"; import { IIcon } from '../../../fx-models/Icon'; import { ServiceParam } from '../../../fx-models/ServiceParam'; import { FeatureUIOption, IFeatureConfiguration } from '../../../fx-models/Feature'; import { GuidValue } from '../../../fx-models'; import { OmniaBackendRuntimes, OmniaRoleTypes, PersistentDiskTypes } from "../../../fx-models/Enums"; import { AzureAdAppPermissionInfo, AzureAdAppResourceAccessWithAlternate } from "../../../fx-models/AzureAdAppPermissions"; import { AzureAdAppPermissionOption } from "../AzureAdAppPermissionHelper"; export interface ServiceFeatureOption { /** * Title * Feature title * */ title: string; /** * Description * Feature description * */ description: string; /** * ConsentInformation * Feature consent information * */ consentInformation?: string; /** * Version * Feature version * */ version: string; /** * Icons * Array of supported icon formats, i.e. the same icon different formats * */ icons: Array<IIcon>; /** * Category * Logical group of Feature * */ category: string; /** * TargetResolverType * Server-side type used to resolve feature target based on the context parameters * */ targetResolverType: string; /** * HasProviderHandling * Specify whether this feature needs to be handled with a Queue Message * */ hasProviderHandling: boolean; /** * Parameters * Parameters required for activating/upgrading/deactivating features * (exclude parameters required to resolve target) * */ parameters: Array<ServiceParam>; /** * PermissionRole * Permission Role required for activating/upgrading/deactivating feature * */ permissionRole: GuidValue; /** * UIOptions * Optional - used to specify the client-side control which will display the wizard when activating/upgrading/deactivating feature * */ uiOptions?: FeatureUIOption; /** * Hidden * Optional - used to specify whether the feature is hidden in the UI and only available to be activated from api * */ hidden?: boolean; /** * requiresLicense * Optional - Specify license id(s) if the feature requires license to be activated * */ requiresLicense?: Array<GuidValue>; /** * requiresBackendEnvironment * Optional - Specify Backend runtime evironment to be activated * */ requiresBackendEnvironment?: OmniaBackendRuntimes[]; /** * Require an Azure Ad App permissions */ requiresAzureAdAppPermissions?: AzureAdAppPermissionOption; /** * Feature configuration */ configuration?: IFeatureConfiguration; } export interface OnTheFlyServiceRequest { serviceId: GuidValue; } export interface ServiceFeatureManifest extends Omit<ServiceFeatureOption, 'requiresAzureAdAppPermissions'>, ServerManifest { uniqueId: GuidValue; requiresAzureAdAppPermissions?: AzureAdAppPermissionInfo[]; requestedResources?: RequestedResourceManifest[]; requestedOnTheFlyServices?: OnTheFlyServiceRequest[]; } export interface AppResourceType { id: GuidValue; title: string; icon: IIcon; parameters: Array<ServiceParam>; providedParameters: Array<ServiceParam>; requiredFeatures?: Array<GuidValue>; requiredEnvironments?: Array<string>; } export interface ServiceAppDefinitionOption { title: string; description: string; /** * Each app will connected to an Omnia Route * * An Omnia Route is combination between {Prefix} and {Alias} * e.g. /_/app-1 is combine between '_' as {Prefix} and 'app-1' as {Alias} * * */ defaultRoutePrefix: string; icons: Array<IIcon>; version: string; /** * requiresLicense * Optional - Specify license id(s) if the app requires license * */ requiresLicense?: Array<GuidValue>; /** * Hidden * Optional - used to specify whether the app is hidden in the UI and only available to be activated from api * */ hidden?: boolean; /** * Define at least one resource type * */ resourceTypes: AppResourceType[]; } export interface ServiceAppDefinitionManifest extends ServiceAppDefinitionOption, ServerManifest { uniqueId: GuidValue; } export interface ServiceRoleDefinitionOption { name: string; permissionEvaluatorType?: string; resourceEvaluatorType?: string; roleType: OmniaRoleTypes; parameters?: ServiceParam[]; parentRole?: GuidValue; rules?: SecurityRule[]; editableRoles?: GuidValue[]; systemDefinedRuleMappingRoles?: GuidValue[]; isBindable?: boolean; isExtensionOnly?: boolean; } export interface ServiceRoleDefinitionManifest extends ServiceRoleDefinitionOption, ServerManifest { uniqueId: GuidValue; } export interface SecurityRule { roleId: GuidValue; logicalOperator: "OR" | "AND"; } export interface RequestedResourceManifest extends ServerManifest { resourceType: RequestedResourceTypes; } export interface ResourceOptionBase { uniqueId: GuidValue; } export interface SqlResourceOption extends ResourceOptionBase { } export interface PersistentDiskResourceOption extends ResourceOptionBase { type?: PersistentDiskTypes; } export interface SqlElasticPoolResourceOption extends ResourceOptionBase { elasticPoolId: GuidValue; } export interface SqlResourceManifest extends SqlResourceOption, RequestedResourceManifest { } export interface SqlElasticPoolResourceManifest extends SqlElasticPoolResourceOption, RequestedResourceManifest { } export interface PeristentDiskResourceManifest extends PersistentDiskResourceOption, RequestedResourceManifest { } export interface ServerManifestByTypeCollection { [manifestType: string]: Array<ServerManifest>; } export interface ServerManifest { manifestType: ServerManifestTypes; } export interface SecurityProviderManifest extends ServerManifest { securityProviders: Array<SecurityProvider>; } export interface AzureAdAppPermissionManifest extends ServerManifest { name?: string; resourceAppId: GuidValue; resourceAccess: AzureAdAppResourceAccessWithAlternate[]; } export interface AzureAdAppPermission { id: string; value: string; } export interface AzureAdAppApiPermission { uiName: string; appId: string; appRoles: { [value: string]: AzureAdAppPermission; }; oauth2Permissions: { [value: string]: AzureAdAppPermission; }; } export interface AzureAdAppPermissionInputWithAlternate { require: string; alternatePermissions?: string[]; } export interface AzureAdAppPermissionInput { appPermissions?: string[]; appPermissionsWithAlternate?: AzureAdAppPermissionInputWithAlternate[]; delegatedPermissions?: string[]; delegatedPermissionsWithAlternate?: AzureAdAppPermissionInputWithAlternate[]; } export interface ServiceOptions { description?: string; } export interface ServiceBase extends ServiceOptions { id: string; title?: string; serviceType: ServiceTypes; optionalService: boolean; isOnTheFlyService?: boolean; } export interface CustomService extends ServiceBase { helmCommand?: string; } export interface ServiceManifest extends ServiceBase, ServerManifest { } export interface SecurityProviderIdentity { providerId: string; } export interface SecurityProvider extends SecurityProviderIdentity { type: SecurityProviderTypes; } export interface SecurityRoleIdentity { roleName: string; scope: SecurityRoleScopes; } export interface RoleBasedSecurityProviderOptions extends SecurityProviderIdentity, SecurityRoleIdentity { } export interface CombinedSecurityProviderOptions extends SecurityProviderIdentity { } export interface RoleBasedSecurityProvider extends RoleBasedSecurityProviderOptions, SecurityProvider { } export interface SecurityProviderRule extends SecurityProviderIdentity { logicalOperator: RuleLogicalOperator; } export interface CombinedSecurityProviders extends SecurityProvider { securityProviderRules: Array<SecurityProviderRule>; }