diff --git a/app/imports/api/properties/Actions.js b/app/imports/api/properties/Actions.js index 0cd20fc6..2f9f3997 100644 --- a/app/imports/api/properties/Actions.js +++ b/app/imports/api/properties/Actions.js @@ -1,7 +1,9 @@ import SimpleSchema from 'simpl-schema'; import ErrorSchema from '/imports/api/properties/subSchemas/ErrorSchema.js'; import InlineComputationSchema from '/imports/api/properties/subSchemas/InlineComputationSchema.js'; -import { storedIconsSchema } from '/imports/api/icons/Icons.js' +import { storedIconsSchema } from '/imports/api/icons/Icons.js'; +import STORAGE_LIMITS from '/imports/constants/STORAGE_LIMITS.js'; + /* * Actions are things a character can do * Any rolls that are children of actions will be rolled when taking the action @@ -12,14 +14,17 @@ let ActionSchema = new SimpleSchema({ name: { type: String, optional: true, + max: STORAGE_LIMITS.name, }, summary: { type: String, optional: true, + max: STORAGE_LIMITS.summary, }, description: { type: String, optional: true, + max: STORAGE_LIMITS.description, }, // What time-resource is used to take the action in combat // long actions take longer than 1 round to cast @@ -41,9 +46,11 @@ let ActionSchema = new SimpleSchema({ tags: { type: Array, defaultValue: [], + maxCount: STORAGE_LIMITS.tagCount, }, 'tags.$': { type: String, + max: STORAGE_LIMITS.tagLength, }, // Duplicate the ResourceSchema here so we can extend it elegantly. resources: { @@ -53,6 +60,7 @@ let ActionSchema = new SimpleSchema({ 'resources.itemsConsumed': { type: Array, defaultValue: [], + maxCount: STORAGE_LIMITS.resourcesCount, }, 'resources.itemsConsumed.$': { type: Object, @@ -79,6 +87,7 @@ let ActionSchema = new SimpleSchema({ 'resources.attributesConsumed': { type: Array, defaultValue: [], + maxCount: STORAGE_LIMITS.resourcesCount, }, 'resources.attributesConsumed.$': { type: Object, @@ -102,6 +111,7 @@ let ActionSchema = new SimpleSchema({ uses: { type: String, optional: true, + max: STORAGE_LIMITS.calculation, }, // Integer of how many times it has already been used usesUsed: { @@ -120,14 +130,14 @@ const ComputedOnlyActionSchema = new SimpleSchema({ summaryCalculations: { type: Array, defaultValue: [], - maxCount: 32, + maxCount: STORAGE_LIMITS.inlineCalculationCount, }, 'summaryCalculations.$': InlineComputationSchema, descriptionCalculations: { type: Array, defaultValue: [], - maxCount: 32, + maxCount: STORAGE_LIMITS.inlineCalculationCount, }, 'descriptionCalculations.$': InlineComputationSchema, @@ -138,6 +148,7 @@ const ComputedOnlyActionSchema = new SimpleSchema({ usesErrors: { type: Array, optional: true, + maxCount: STORAGE_LIMITS.errorCount, }, 'usesErrors.$':{ type: ErrorSchema, @@ -158,6 +169,7 @@ const ComputedOnlyActionSchema = new SimpleSchema({ }, 'resources.itemsConsumed.$.itemName': { type: String, + max: STORAGE_LIMITS.name, optional: true, }, 'resources.itemsConsumed.$.itemIcon': { @@ -167,6 +179,7 @@ const ComputedOnlyActionSchema = new SimpleSchema({ 'resources.itemsConsumed.$.itemColor': { type: String, optional: true, + max: STORAGE_LIMITS.color, }, 'resources.attributesConsumed': Array, 'resources.attributesConsumed.$': Object, @@ -182,6 +195,7 @@ const ComputedOnlyActionSchema = new SimpleSchema({ 'resources.attributesConsumed.$.statName': { type: String, optional: true, + max: STORAGE_LIMITS.name, }, // True if the uses left is zero, or any item or attribute consumed is // insufficient diff --git a/app/imports/constants/STORAGE_LIMITS.js b/app/imports/constants/STORAGE_LIMITS.js new file mode 100644 index 00000000..86c38731 --- /dev/null +++ b/app/imports/constants/STORAGE_LIMITS.js @@ -0,0 +1,14 @@ +const STORAGE_LIMITS = Object.freeze({ + name: 140, + color: 10000, + summary: 10000, + description: 49473, //the length of the Bee Movie script + inlineCalculationCount: 32, + errorCount: 32, + tagCount: 64, + tagLength: 140, + resourcesCount: 32, + calculation: 280, +}); + +export default STORAGE_LIMITS;