1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00

feat: improved transition condition schema to be more explicit (#10773)

This commit is contained in:
Mateusz Kwasniewski 2025-10-10 12:16:58 +02:00 committed by GitHub
parent d5a91a60e1
commit 0b7c141e70
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 40 additions and 5 deletions

View File

@ -18,6 +18,7 @@ import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { createFeatureStrategySchema } from './create-feature-strategy-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
import { dependentFeatureSchema } from './dependent-feature-schema.js';
import { tagSchema } from './tag-schema.js';
import { featureLinksSchema } from './feature-links-schema.js';
@ -217,6 +218,7 @@ export const exportResultSchema = {
releasePlanMilestoneStrategySchema,
createFeatureStrategySchema,
createStrategyVariantSchema,
transitionConditionSchema,
},
},
} as const;

View File

@ -9,6 +9,7 @@ import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { createFeatureStrategySchema } from './create-feature-strategy-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
export const featureEnvironmentSchema = {
$id: '#/components/schemas/featureEnvironmentSchema',
@ -132,6 +133,7 @@ export const featureEnvironmentSchema = {
releasePlanMilestoneStrategySchema,
createFeatureStrategySchema,
createStrategyVariantSchema,
transitionConditionSchema,
},
},
} as const;

View File

@ -12,6 +12,7 @@ import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { createFeatureStrategySchema } from './create-feature-strategy-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
export const featureSchema = {
$id: '#/components/schemas/featureSchema',
@ -298,6 +299,7 @@ export const featureSchema = {
releasePlanMilestoneStrategySchema,
createFeatureStrategySchema,
createStrategyVariantSchema,
transitionConditionSchema,
},
},
} as const;

View File

@ -10,6 +10,7 @@ import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { createFeatureStrategySchema } from './create-feature-strategy-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
export const featureSearchEnvironmentSchema = {
$id: '#/components/schemas/featureSearchEnvironmentSchema',
@ -45,6 +46,7 @@ export const featureSearchEnvironmentSchema = {
releasePlanSchema,
releasePlanMilestoneSchema,
releasePlanMilestoneStrategySchema,
transitionConditionSchema,
createFeatureStrategySchema,
createStrategyVariantSchema,
},

View File

@ -13,6 +13,7 @@ import { projectEnvironmentSchema } from './project-environment-schema.js';
import { releasePlanSchema } from './release-plan-schema.js';
import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { strategyVariantSchema } from './strategy-variant-schema.js';
import { createFeatureNamingPatternSchema } from './create-feature-naming-pattern-schema.js';
@ -150,6 +151,7 @@ export const healthOverviewSchema = {
releasePlanSchema,
releasePlanMilestoneSchema,
releasePlanMilestoneStrategySchema,
transitionConditionSchema,
strategyVariantSchema,
variantSchema,
projectStatsSchema,

View File

@ -18,6 +18,7 @@ import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { createFeatureStrategySchema } from './create-feature-strategy-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
import { strategyVariantSchema } from './strategy-variant-schema.js';
import { featureDependenciesSchema } from './feature-dependencies-schema.js';
import { dependentFeatureSchema } from './dependent-feature-schema.js';
@ -63,6 +64,7 @@ export const importTogglesSchema = {
releasePlanMilestoneStrategySchema,
createFeatureStrategySchema,
createStrategyVariantSchema,
transitionConditionSchema,
variantsSchema,
variantSchema,
overrideSchema,

View File

@ -205,6 +205,7 @@ export * from './telemetry-settings-schema.js';
export * from './toggle-maintenance-schema.js';
export * from './token-string-list-schema.js';
export * from './token-user-schema.js';
export * from './transition-condition-schema.js';
export * from './ui-config-schema.js';
export * from './unknown-flag-schema.js';
export * from './unknown-flags-response-schema.js';

View File

@ -18,6 +18,7 @@ import { projectLinkTemplateSchema } from './project-link-template-schema.js';
import { releasePlanSchema } from './release-plan-schema.js';
import { releasePlanMilestoneSchema } from './release-plan-milestone-schema.js';
import { releasePlanMilestoneStrategySchema } from './release-plan-milestone-strategy-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
export const projectOverviewSchema = {
$id: '#/components/schemas/projectOverviewSchema',
@ -208,6 +209,7 @@ export const projectOverviewSchema = {
releasePlanSchema,
releasePlanMilestoneSchema,
releasePlanMilestoneStrategySchema,
transitionConditionSchema,
projectStatsSchema,
createFeatureNamingPatternSchema,
featureTypeCountSchema,

View File

@ -4,6 +4,7 @@ import { createFeatureStrategySchema } from './create-feature-strategy-schema.js
import { parametersSchema } from './parameters-schema.js';
import { constraintSchema } from './constraint-schema.js';
import { createStrategyVariantSchema } from './create-strategy-variant-schema.js';
import { transitionConditionSchema } from './transition-condition-schema.js';
export const releasePlanMilestoneSchema = {
$id: '#/components/schemas/releasePlanMilestoneSchema',
@ -43,11 +44,8 @@ export const releasePlanMilestoneSchema = {
nullable: true,
},
transitionCondition: {
type: 'object',
description:
'The transition condition for the next automated milestone progression.',
additionalProperties: true,
nullable: true,
description: 'The condition configuration for the transition',
$ref: '#/components/schemas/transitionConditionSchema',
},
progressionExecutedAt: {
type: 'string',
@ -73,6 +71,7 @@ export const releasePlanMilestoneSchema = {
parametersSchema,
constraintSchema,
createStrategyVariantSchema,
transitionConditionSchema,
},
},
} as const;

View File

@ -0,0 +1,21 @@
import type { FromSchema } from 'json-schema-to-ts';
export const transitionConditionSchema = {
$id: '#/components/schemas/transitionConditionSchema',
type: 'object',
additionalProperties: false,
required: ['intervalMinutes'],
description: 'A transition condition for milestone progression',
properties: {
intervalMinutes: {
type: 'number',
description: 'The interval in minutes before transitioning',
example: 30,
},
},
components: {},
} as const;
export type TransitionConditionSchema = FromSchema<
typeof transitionConditionSchema
>;