mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-03 19:36:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const { yup, validateYupSchemaSync } = require('@strapi/utils');
 | 
						|
const validators = require('./common-validators');
 | 
						|
 | 
						|
const registerProviderActionSchema = yup
 | 
						|
  .array()
 | 
						|
  .required()
 | 
						|
  .of(
 | 
						|
    yup
 | 
						|
      .object()
 | 
						|
      .shape({
 | 
						|
        uid: yup
 | 
						|
          .string()
 | 
						|
          .matches(
 | 
						|
            /^[a-z]([a-z|.|-]+)[a-z]$/,
 | 
						|
            (v) => `${v.path}: The id can only contain lowercase letters, dots and hyphens.`
 | 
						|
          )
 | 
						|
          .required(),
 | 
						|
        section: yup.string().oneOf(['contentTypes', 'plugins', 'settings']).required(),
 | 
						|
        pluginName: yup.mixed().when('section', {
 | 
						|
          is: 'plugins',
 | 
						|
          then: validators.isAPluginName.required(),
 | 
						|
          otherwise: validators.isAPluginName,
 | 
						|
        }),
 | 
						|
        subjects: yup.mixed().when('section', {
 | 
						|
          is: 'contentTypes',
 | 
						|
          then: yup.array().of(yup.string()).required(),
 | 
						|
          otherwise: yup
 | 
						|
            .mixed()
 | 
						|
            .oneOf([undefined], 'subjects should only be defined for the "contentTypes" section'),
 | 
						|
        }),
 | 
						|
        displayName: yup.string().required(),
 | 
						|
        category: yup.mixed().when('section', {
 | 
						|
          is: 'settings',
 | 
						|
          then: yup.string().required(),
 | 
						|
          otherwise: yup
 | 
						|
            .mixed()
 | 
						|
            .test(
 | 
						|
              'settingsCategory',
 | 
						|
              'category should only be defined for the "settings" section',
 | 
						|
              (cat) => cat === undefined
 | 
						|
            ),
 | 
						|
        }),
 | 
						|
        subCategory: yup.mixed().when('section', {
 | 
						|
          is: (section) => ['settings', 'plugins'].includes(section),
 | 
						|
          then: yup.string(),
 | 
						|
          otherwise: yup
 | 
						|
            .mixed()
 | 
						|
            .test(
 | 
						|
              'settingsSubCategory',
 | 
						|
              'subCategory should only be defined for "plugins" and "settings" sections',
 | 
						|
              (subCat) => {
 | 
						|
                return subCat === undefined;
 | 
						|
              }
 | 
						|
            ),
 | 
						|
        }),
 | 
						|
        options: yup.object({
 | 
						|
          applyToProperties: yup.array().of(yup.string()),
 | 
						|
        }),
 | 
						|
      })
 | 
						|
      .noUnknown()
 | 
						|
  );
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  validateRegisterProviderAction: validateYupSchemaSync(registerProviderActionSchema),
 | 
						|
};
 |