1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

chore: rule for description on properties (#3523)

## About the changes
This rule defines that all properties should have a description

We also considered enforcing an example but we noticed that in some
cases that's not needed.
This commit is contained in:
Gastón Fournier 2023-04-14 13:38:58 +02:00 committed by GitHub
parent 98e536bf2c
commit ff99ffc27c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,6 +14,21 @@ type Rule = {
knownExceptions?: string[];
};
/**
* These rules are applied to all schemas in the spec.
*
* The rules usually start as a meta schema, which is a schema that describes
* the shape of the OpenAPI schemas. Usually they look like this:
*
* <code>
* const metaSchema: Schema = {
* type: 'object',
* properties: {
* // what we want to specify about the schema
* }
* }
* </code>
*/
const metaRules: Rule[] = [
{
name: 'should have a type',
@ -39,6 +54,155 @@ const metaRules: Rule[] = [
required: ['$id'],
},
},
{
name: 'should have properties with descriptions',
match: (_, schema) => {
// only match schemas that have a properties field
return 'properties' in schema;
},
metaSchema: {
type: 'object',
// properties of the meta schema
properties: {
// the schema should have a field called properties
properties: {
type: 'object', // properties of the schema should be an object
additionalProperties: {
// with the following shape
type: 'object',
properties: {
description: { type: 'string' },
},
required: ['description'],
},
},
},
},
knownExceptions: [
'addonParameterSchema',
'addonSchema',
'addonsSchema',
'addonTypeSchema',
'apiTokenSchema',
'apiTokensSchema',
'applicationSchema',
'applicationsSchema',
'batchFeaturesSchema',
'batchStaleSchema',
'bulkRegistrationSchema',
'bulkMetricsSchema',
'changePasswordSchema',
'clientApplicationSchema',
'clientFeatureSchema',
'clientFeaturesQuerySchema',
'clientFeaturesSchema',
'clientMetricsSchema',
'clientMetricsEnvSchema',
'cloneFeatureSchema',
'contextFieldSchema',
'createApiTokenSchema',
'createFeatureSchema',
'createFeatureStrategySchema',
'createInvitedUserSchema',
'createUserSchema',
'edgeTokenSchema',
'emailSchema',
'environmentsSchema',
'environmentsProjectSchema',
'eventSchema',
'eventsSchema',
'exportResultSchema',
'exportQuerySchema',
'featureEnvironmentMetricsSchema',
'featureEnvironmentSchema',
'featureEventsSchema',
'featureMetricsSchema',
'featureSchema',
'featuresSchema',
'featureStrategySchema',
'featureStrategySegmentSchema',
'featureTagSchema',
'featureTypeSchema',
'featureTypesSchema',
'featureUsageSchema',
'featureVariantsSchema',
'feedbackSchema',
'groupSchema',
'groupsSchema',
'groupUserModelSchema',
'healthCheckSchema',
'healthOverviewSchema',
'healthReportSchema',
'idSchema',
'instanceAdminStatsSchema',
'legalValueSchema',
'loginSchema',
'maintenanceSchema',
'toggleMaintenanceSchema',
'meSchema',
'nameSchema',
'overrideSchema',
'passwordSchema',
'patchSchema',
'patSchema',
'patsSchema',
'permissionSchema',
'playgroundFeatureSchema',
'playgroundRequestSchema',
'profileSchema',
'projectEnvironmentSchema',
'projectSchema',
'projectsSchema',
'proxyClientSchema',
'proxyFeatureSchema',
'proxyFeaturesSchema',
'publicSignupTokenSchema',
'publicSignupTokensSchema',
'publicSignupTokenUpdateSchema',
'pushVariantsSchema',
'resetPasswordSchema',
'requestsPerSecondSchema',
'requestsPerSecondSegmentedSchema',
'roleSchema',
'sdkContextSchema',
'searchEventsSchema',
'segmentSchema',
'setUiConfigSchema',
'splashSchema',
'stateSchema',
'strategiesSchema',
'strategySchema',
'tagsBulkAddSchema',
'tagSchema',
'tagsSchema',
'tagTypeSchema',
'tagTypesSchema',
'tagWithVersionSchema',
'tokenUserSchema',
'uiConfigSchema',
'updateApiTokenSchema',
'updateFeatureSchema',
'updateFeatureStrategySchema',
'updateTagTypeSchema',
'updateUserSchema',
'updateTagsSchema',
'upsertContextFieldSchema',
'upsertSegmentSchema',
'upsertStrategySchema',
'userSchema',
'usersGroupsBaseSchema',
'usersSchema',
'validateEdgeTokensSchema',
'validatePasswordSchema',
'validateTagTypeSchema',
'variantSchema',
'versionSchema',
'projectOverviewSchema',
'importTogglesSchema',
'importTogglesValidateSchema',
'importTogglesValidateItemSchema',
],
},
{
name: 'should have a description',
metaSchema: {