@omnia/tooling-composers
Version:
Provide tooling to work with manifest things.
255 lines (254 loc) • 8.32 kB
TypeScript
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>;
}