You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					48 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					48 lines
				
				1.7 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								const util_1 = require("../../compile/util");
							 | 
						||
| 
								 | 
							
								const codegen_1 = require("../../compile/codegen");
							 | 
						||
| 
								 | 
							
								const metadata_1 = require("./metadata");
							 | 
						||
| 
								 | 
							
								const nullable_1 = require("./nullable");
							 | 
						||
| 
								 | 
							
								const error_1 = require("./error");
							 | 
						||
| 
								 | 
							
								const def = {
							 | 
						||
| 
								 | 
							
								    keyword: "values",
							 | 
						||
| 
								 | 
							
								    schemaType: "object",
							 | 
						||
| 
								 | 
							
								    error: (0, error_1.typeError)("object"),
							 | 
						||
| 
								 | 
							
								    code(cxt) {
							 | 
						||
| 
								 | 
							
								        (0, metadata_1.checkMetadata)(cxt);
							 | 
						||
| 
								 | 
							
								        const { gen, data, schema, it } = cxt;
							 | 
						||
| 
								 | 
							
								        if ((0, util_1.alwaysValidSchema)(it, schema))
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        const [valid, cond] = (0, nullable_1.checkNullableObject)(cxt, data);
							 | 
						||
| 
								 | 
							
								        gen.if(cond);
							 | 
						||
| 
								 | 
							
								        gen.assign(valid, validateMap());
							 | 
						||
| 
								 | 
							
								        gen.elseIf((0, codegen_1.not)(valid));
							 | 
						||
| 
								 | 
							
								        cxt.error();
							 | 
						||
| 
								 | 
							
								        gen.endIf();
							 | 
						||
| 
								 | 
							
								        cxt.ok(valid);
							 | 
						||
| 
								 | 
							
								        function validateMap() {
							 | 
						||
| 
								 | 
							
								            const _valid = gen.name("valid");
							 | 
						||
| 
								 | 
							
								            if (it.allErrors) {
							 | 
						||
| 
								 | 
							
								                const validMap = gen.let("valid", true);
							 | 
						||
| 
								 | 
							
								                validateValues(() => gen.assign(validMap, false));
							 | 
						||
| 
								 | 
							
								                return validMap;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            gen.var(_valid, true);
							 | 
						||
| 
								 | 
							
								            validateValues(() => gen.break());
							 | 
						||
| 
								 | 
							
								            return _valid;
							 | 
						||
| 
								 | 
							
								            function validateValues(notValid) {
							 | 
						||
| 
								 | 
							
								                gen.forIn("key", data, (key) => {
							 | 
						||
| 
								 | 
							
								                    cxt.subschema({
							 | 
						||
| 
								 | 
							
								                        keyword: "values",
							 | 
						||
| 
								 | 
							
								                        dataProp: key,
							 | 
						||
| 
								 | 
							
								                        dataPropType: util_1.Type.Str,
							 | 
						||
| 
								 | 
							
								                    }, _valid);
							 | 
						||
| 
								 | 
							
								                    gen.if((0, codegen_1.not)(_valid), notValid);
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.default = def;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=values.js.map
							 |