| 
									
										
										
										
											2018-10-09 20:30:59 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | const { register } = require("./serialization"); | 
					
						
							| 
									
										
										
										
											2018-10-09 20:30:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ClassSerializer { | 
					
						
							|  |  |  | 	constructor(Constructor) { | 
					
						
							|  |  |  | 		this.Constructor = Constructor; | 
					
						
							|  |  |  | 		this.hash = null; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	serialize(obj, context) { | 
					
						
							|  |  |  | 		obj.serialize(context); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	deserialize(context) { | 
					
						
							|  |  |  | 		if (typeof this.Constructor.deserialize === "function") { | 
					
						
							|  |  |  | 			return this.Constructor.deserialize(context); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		const obj = new this.Constructor(); | 
					
						
							|  |  |  | 		obj.deserialize(context); | 
					
						
							|  |  |  | 		return obj; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = (Constructor, request, name = null) => { | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | 	register(Constructor, request, name, new ClassSerializer(Constructor)); | 
					
						
							| 
									
										
										
										
											2018-10-09 20:30:59 +08:00
										 |  |  | }; |