mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-30 17:37:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			162 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const getDefaultContentTypeConfig = () => ({
 | |
|   enabled: true,
 | |
| 
 | |
|   mutations: true,
 | |
|   queries: true,
 | |
| 
 | |
|   disabledActions: [],
 | |
|   fields: new Map(),
 | |
| });
 | |
| 
 | |
| const getDefaultFieldConfig = () => ({
 | |
|   enabled: true,
 | |
| 
 | |
|   input: true,
 | |
|   output: true,
 | |
| 
 | |
|   filters: true,
 | |
| });
 | |
| 
 | |
| const ALL_ACTIONS = '*';
 | |
| 
 | |
| module.exports = () => {
 | |
|   const configs = new Map();
 | |
| 
 | |
|   return (uid) => {
 | |
|     if (!configs.has(uid)) {
 | |
|       configs.set(uid, getDefaultContentTypeConfig());
 | |
|     }
 | |
| 
 | |
|     return {
 | |
|       isEnabled() {
 | |
|         return configs.get(uid).enabled;
 | |
|       },
 | |
| 
 | |
|       isDisabled() {
 | |
|         return !this.isEnabled();
 | |
|       },
 | |
| 
 | |
|       areQueriesEnabled() {
 | |
|         return configs.get(uid).queries;
 | |
|       },
 | |
| 
 | |
|       areQueriesDisabled() {
 | |
|         return !this.areQueriesEnabled();
 | |
|       },
 | |
| 
 | |
|       areMutationsEnabled() {
 | |
|         return configs.get(uid).mutations;
 | |
|       },
 | |
| 
 | |
|       areMutationsDisabled() {
 | |
|         return !this.areMutationsEnabled();
 | |
|       },
 | |
| 
 | |
|       isActionEnabled(action) {
 | |
|         const matchingActions = [action, ALL_ACTIONS];
 | |
| 
 | |
|         return configs
 | |
|           .get(uid)
 | |
|           .disabledActions.every((action) => !matchingActions.includes(action));
 | |
|       },
 | |
| 
 | |
|       isActionDisabled(action) {
 | |
|         return !this.isActionEnabled(action);
 | |
|       },
 | |
| 
 | |
|       disable() {
 | |
|         configs.get(uid).enabled = false;
 | |
| 
 | |
|         return this;
 | |
|       },
 | |
| 
 | |
|       disableQueries() {
 | |
|         configs.get(uid).queries = false;
 | |
| 
 | |
|         return this;
 | |
|       },
 | |
| 
 | |
|       disableMutations() {
 | |
|         configs.get(uid).mutations = false;
 | |
| 
 | |
|         return this;
 | |
|       },
 | |
| 
 | |
|       disableAction(action) {
 | |
|         const config = configs.get(uid);
 | |
| 
 | |
|         if (!config.disabledActions.includes(action)) {
 | |
|           config.disabledActions.push(action);
 | |
|         }
 | |
| 
 | |
|         return this;
 | |
|       },
 | |
| 
 | |
|       disableActions(actions = []) {
 | |
|         actions.forEach((action) => this.disableAction(action));
 | |
| 
 | |
|         return this;
 | |
|       },
 | |
| 
 | |
|       field(fieldName) {
 | |
|         const { fields } = configs.get(uid);
 | |
| 
 | |
|         if (!fields.has(fieldName)) {
 | |
|           fields.set(fieldName, getDefaultFieldConfig());
 | |
|         }
 | |
| 
 | |
|         return {
 | |
|           isEnabled() {
 | |
|             return fields.get(fieldName).enabled;
 | |
|           },
 | |
| 
 | |
|           hasInputEnabled() {
 | |
|             return fields.get(fieldName).input;
 | |
|           },
 | |
| 
 | |
|           hasOutputEnabled() {
 | |
|             return fields.get(fieldName).output;
 | |
|           },
 | |
| 
 | |
|           hasFiltersEnabeld() {
 | |
|             return fields.get(fieldName).filters;
 | |
|           },
 | |
| 
 | |
|           disable() {
 | |
|             fields.set(fieldName, {
 | |
|               enabled: false,
 | |
| 
 | |
|               output: false,
 | |
|               input: false,
 | |
| 
 | |
|               filters: false,
 | |
|             });
 | |
| 
 | |
|             return this;
 | |
|           },
 | |
| 
 | |
|           disableOutput() {
 | |
|             fields.get(fieldName).output = false;
 | |
| 
 | |
|             return this;
 | |
|           },
 | |
| 
 | |
|           disableInput() {
 | |
|             fields.get(fieldName).input = false;
 | |
| 
 | |
|             return this;
 | |
|           },
 | |
| 
 | |
|           disableFilters() {
 | |
|             fields.get(fieldName).filters = false;
 | |
| 
 | |
|             return this;
 | |
|           },
 | |
|         };
 | |
|       },
 | |
|     };
 | |
|   };
 | |
| };
 | 
