mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-21 13:47:39 +02:00
chore: feature links flag (#9896)
This commit is contained in:
parent
002233e7f6
commit
4860d73bf7
@ -12,6 +12,7 @@ import {
|
|||||||
} from '../../openapi/util/standard-responses';
|
} from '../../openapi/util/standard-responses';
|
||||||
import { createRequestSchema } from '../../openapi/util/create-request-schema';
|
import { createRequestSchema } from '../../openapi/util/create-request-schema';
|
||||||
import type { IFeatureLink } from './feature-link-store-type';
|
import type { IFeatureLink } from './feature-link-store-type';
|
||||||
|
import type { IFlagResolver } from '../../types';
|
||||||
|
|
||||||
interface FeatureLinkServices {
|
interface FeatureLinkServices {
|
||||||
transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
|
transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
|
||||||
@ -24,6 +25,7 @@ const PATH_LINK = '/:projectId/features/:featureName/link/:linkId';
|
|||||||
export default class FeatureLinkController extends Controller {
|
export default class FeatureLinkController extends Controller {
|
||||||
private transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
|
private transactionalFeatureLinkService: WithTransactional<FeatureLinkService>;
|
||||||
private openApiService: OpenApiService;
|
private openApiService: OpenApiService;
|
||||||
|
private flagResolver: IFlagResolver;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
config: IUnleashConfig,
|
config: IUnleashConfig,
|
||||||
@ -35,6 +37,7 @@ export default class FeatureLinkController extends Controller {
|
|||||||
super(config);
|
super(config);
|
||||||
this.transactionalFeatureLinkService = transactionalFeatureLinkService;
|
this.transactionalFeatureLinkService = transactionalFeatureLinkService;
|
||||||
this.openApiService = openApiService;
|
this.openApiService = openApiService;
|
||||||
|
this.flagResolver = config.flagResolver;
|
||||||
|
|
||||||
this.route({
|
this.route({
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@ -105,6 +108,9 @@ export default class FeatureLinkController extends Controller {
|
|||||||
>,
|
>,
|
||||||
res: Response,
|
res: Response,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!this.flagResolver.isEnabled('featureLinks')) {
|
||||||
|
res.status(404).end();
|
||||||
|
}
|
||||||
const { projectId, featureName } = req.params;
|
const { projectId, featureName } = req.params;
|
||||||
|
|
||||||
await this.transactionalFeatureLinkService.transactional((service) =>
|
await this.transactionalFeatureLinkService.transactional((service) =>
|
||||||
@ -126,6 +132,9 @@ export default class FeatureLinkController extends Controller {
|
|||||||
>,
|
>,
|
||||||
res: Response,
|
res: Response,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!this.flagResolver.isEnabled('featureLinks')) {
|
||||||
|
res.status(404).end();
|
||||||
|
}
|
||||||
const { projectId, linkId, featureName } = req.params;
|
const { projectId, linkId, featureName } = req.params;
|
||||||
|
|
||||||
await this.transactionalFeatureLinkService.transactional((service) =>
|
await this.transactionalFeatureLinkService.transactional((service) =>
|
||||||
@ -147,6 +156,9 @@ export default class FeatureLinkController extends Controller {
|
|||||||
>,
|
>,
|
||||||
res: Response,
|
res: Response,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
if (!this.flagResolver.isEnabled('featureLinks')) {
|
||||||
|
res.status(404).end();
|
||||||
|
}
|
||||||
const { projectId, linkId } = req.params;
|
const { projectId, linkId } = req.params;
|
||||||
|
|
||||||
await this.transactionalFeatureLinkService.transactional((service) =>
|
await this.transactionalFeatureLinkService.transactional((service) =>
|
||||||
|
@ -20,7 +20,9 @@ beforeAll(async () => {
|
|||||||
db.stores,
|
db.stores,
|
||||||
{
|
{
|
||||||
experimental: {
|
experimental: {
|
||||||
flags: {},
|
flags: {
|
||||||
|
featureLinks: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
db.rawDatabase,
|
db.rawDatabase,
|
||||||
|
@ -69,7 +69,8 @@ export type IFlagKey =
|
|||||||
| 'flagsReleaseManagementUI'
|
| 'flagsReleaseManagementUI'
|
||||||
| 'cleanupReminder'
|
| 'cleanupReminder'
|
||||||
| 'removeInactiveApplications'
|
| 'removeInactiveApplications'
|
||||||
| 'registerFrontendClient';
|
| 'registerFrontendClient'
|
||||||
|
| 'featureLinks';
|
||||||
|
|
||||||
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
|
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
|
||||||
|
|
||||||
@ -330,6 +331,10 @@ const flags: IFlags = {
|
|||||||
process.env.UNLEASH_EXPERIMENTAL_REGISTER_FRONTEND_CLIENT,
|
process.env.UNLEASH_EXPERIMENTAL_REGISTER_FRONTEND_CLIENT,
|
||||||
false,
|
false,
|
||||||
),
|
),
|
||||||
|
featureLinks: parseEnvVarBoolean(
|
||||||
|
process.env.UNLEASH_EXPERIMENTAL_FEATURE_LINKS,
|
||||||
|
false,
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const defaultExperimentalOptions: IExperimentalOptions = {
|
export const defaultExperimentalOptions: IExperimentalOptions = {
|
||||||
|
Loading…
Reference in New Issue
Block a user