github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/gen/typescript/templates/server_helpers.ts.tmpl (about) 1 {{ define "server_helpers" }} 2 3 const JS_TYPES = [ 4 "bigint", 5 "boolean", 6 "function", 7 "number", 8 "object", 9 "string", 10 "symbol", 11 "undefined" 12 ] 13 14 {{ range .Messages }} 15 const validate{{ .Name }} = (value: any) => { 16 {{ range .Fields }} 17 {{ if .Optional }} 18 if ("{{ . | exportedJSONField }}" in value && !validateType(value["{{ . | exportedJSONField }}"], "{{ .Type | jsFieldType }}")) { 19 return false 20 } 21 {{ else }} 22 if (!("{{ . | exportedJSONField }}" in value) || !validateType(value["{{ . | exportedJSONField }}"], "{{ .Type | jsFieldType }}")) { 23 return false 24 } 25 {{ end }} 26 {{ end }} 27 28 return true 29 } 30 {{ end }} 31 32 const TYPE_VALIDATORS: { [type: string]: (value: any) => boolean } = { 33 {{ range .Messages }} 34 {{ .Name }}: validate{{ .Name }}, 35 {{ end }} 36 } 37 38 const validateType = (value: any, type: string) => { 39 if (JS_TYPES.indexOf(type) > -1) { 40 return typeof value === type; 41 } 42 43 const validator = TYPE_VALIDATORS[type]; 44 45 if (!validator) { 46 return false; 47 } 48 49 return validator(value); 50 } 51 52 {{ end }}