MCPcopy Index your code
hub / github.com/parse-community/parse-server / validateValidator

Function validateValidator

src/cloud-code/Parse.Cloud.js:10–75  ·  view source on GitHub ↗
(validator)

Source from the content-addressed store, hash-verified

8}
9
10function validateValidator(validator) {
11 if (!validator || typeof validator === 'function') {
12 return;
13 }
14 const fieldOptions = {
15 type: ['Any'],
16 constant: [Boolean],
17 default: ['Any'],
18 options: [Array, 'function', 'Any'],
19 required: [Boolean],
20 error: [String],
21 };
22 const allowedKeys = {
23 requireUser: [Boolean],
24 requireAnyUserRoles: [Array, 'function'],
25 requireAllUserRoles: [Array, 'function'],
26 requireMaster: [Boolean],
27 validateMasterKey: [Boolean],
28 skipWithMasterKey: [Boolean],
29 requireUserKeys: [Array, Object],
30 fields: [Array, Object],
31 rateLimit: [Object],
32 };
33 const getType = fn => {
34 if (Array.isArray(fn)) {
35 return 'array';
36 }
37 if (fn === 'Any' || fn === 'function') {
38 return fn;
39 }
40 const type = typeof fn;
41 if (typeof fn === 'function') {
42 const match = fn && fn.toString().match(/^\s*function (\w+)/);
43 return (match ? match[1] : 'function').toLowerCase();
44 }
45 return type;
46 };
47 const checkKey = (key, data, validatorParam) => {
48 const parameter = data[key];
49 if (!parameter) {
50 throw `${key} is not a supported parameter for Cloud Function validations.`;
51 }
52 const types = parameter.map(type => getType(type));
53 const type = getType(validatorParam);
54 if (!types.includes(type) && !types.includes('Any')) {
55 throw `Invalid type for Cloud Function validation key ${key}. Expected ${types.join(
56 '|'
57 )}, actual ${type}`;
58 }
59 };
60 for (const key in validator) {
61 checkKey(key, allowedKeys, validator[key]);
62 if (key === 'fields' || key === 'requireUserKeys') {
63 const values = validator[key];
64 if (Array.isArray(values)) {
65 continue;
66 }
67 for (const value in values) {

Callers 1

Parse.Cloud.jsFile · 0.70

Calls 1

checkKeyFunction · 0.85

Tested by

no test coverage detected