Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 13x 6x 7x 5x 13x 13x | /*
* Copyright 2022 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import type { BannerType } from '@common/layouts/Constants'
import type { StringsMap } from 'stringTypes'
import type { UsageAndLimitReturn } from '@common/hooks/useGetUsageAndLimit'
import type { FeatureIdentifier } from './FeatureIdentifier'
import type { CheckFeaturesReturn } from './featureStoreUtil'
import type { Module } from '../types/ModuleName'
export interface FeatureProps {
features: FeatureIdentifier[]
renderMessage(
props: CheckFeaturesReturn,
getString: (key: keyof StringsMap, vars?: Record<string, any> | undefined) => string,
additionalLicenseProps?: Record<string, any>,
usageAndLimitInfo?: UsageAndLimitReturn
): {
message: () => React.ReactNode
bannerType: BannerType
}
}
export type FeatureRegistry = Partial<Record<Module, FeatureProps>>
class FeatureFactory {
private featureRegistry: FeatureRegistry = {}
registerFeaturesByModule(module: Module, props: FeatureProps): void {
this.featureRegistry[module] = props
}
getFeaturesByModule(module: Module): FeatureProps | undefined {
return this.featureRegistry[module]
}
getAllFeatures(): FeatureRegistry {
return this.featureRegistry
}
unregisterFeaturesByModule(module: Module): void {
delete this.featureRegistry[module]
}
unregisterAllFeatures(): void {
this.featureRegistry = {}
}
}
const featureFactory = new FeatureFactory()
export default featureFactory
|