| 
									
										
										
										
											2018-12-28 20:18:02 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | const BinaryMiddleware = require("../serialization/BinaryMiddleware"); | 
					
						
							|  |  |  | const FileMiddleware = require("../serialization/FileMiddleware"); | 
					
						
							| 
									
										
										
										
											2018-12-28 20:18:02 +08:00
										 |  |  | const ObjectMiddleware = require("../serialization/ObjectMiddleware"); | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | const Serializer = require("../serialization/Serializer"); | 
					
						
							| 
									
										
										
										
											2019-01-24 23:54:56 +08:00
										 |  |  | const SingleItemMiddleware = require("../serialization/SingleItemMiddleware"); | 
					
						
							| 
									
										
										
										
											2019-10-11 16:01:08 +08:00
										 |  |  | const internalSerializables = require("./internalSerializables"); | 
					
						
							| 
									
										
										
										
											2018-12-28 20:18:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 21:48:18 +08:00
										 |  |  | /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ | 
					
						
							|  |  |  | /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | const { register, registerLoader, registerNotSerializable } = ObjectMiddleware; | 
					
						
							| 
									
										
										
										
											2018-12-28 20:18:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | // Expose serialization API
 | 
					
						
							|  |  |  | exports.register = register; | 
					
						
							|  |  |  | exports.registerLoader = registerLoader; | 
					
						
							|  |  |  | exports.registerNotSerializable = registerNotSerializable; | 
					
						
							| 
									
										
										
										
											2019-01-19 18:47:19 +08:00
										 |  |  | exports.NOT_SERIALIZABLE = ObjectMiddleware.NOT_SERIALIZABLE; | 
					
						
							| 
									
										
										
										
											2019-01-22 01:24:57 +08:00
										 |  |  | exports.MEASURE_START_OPERATION = BinaryMiddleware.MEASURE_START_OPERATION; | 
					
						
							|  |  |  | exports.MEASURE_END_OPERATION = BinaryMiddleware.MEASURE_END_OPERATION; | 
					
						
							| 
									
										
										
										
											2019-06-11 19:09:42 +08:00
										 |  |  | exports.createFileSerializer = fs => | 
					
						
							|  |  |  | 	new Serializer([ | 
					
						
							|  |  |  | 		new SingleItemMiddleware(), | 
					
						
							|  |  |  | 		new ObjectMiddleware(), | 
					
						
							|  |  |  | 		new BinaryMiddleware(), | 
					
						
							|  |  |  | 		new FileMiddleware(fs) | 
					
						
							|  |  |  | 	]); | 
					
						
							| 
									
										
										
										
											2019-01-24 23:54:56 +08:00
										 |  |  | exports.buffersSerializer = new Serializer([ | 
					
						
							|  |  |  | 	new SingleItemMiddleware(), | 
					
						
							|  |  |  | 	new ObjectMiddleware(), | 
					
						
							|  |  |  | 	new BinaryMiddleware() | 
					
						
							|  |  |  | ]); | 
					
						
							| 
									
										
										
										
											2018-12-28 20:54:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | require("./registerExternalSerializer"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Load internal paths with a relative require
 | 
					
						
							|  |  |  | // This allows bundling all internal serializers
 | 
					
						
							| 
									
										
										
										
											2019-10-11 16:01:08 +08:00
										 |  |  | registerLoader(/^webpack\/lib\//, req => { | 
					
						
							|  |  |  | 	const loader = internalSerializables[req.slice("webpack/lib/".length)]; | 
					
						
							|  |  |  | 	if (loader) { | 
					
						
							|  |  |  | 		loader(); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		console.warn(`${req} not found in internalSerializables`); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return true; | 
					
						
							|  |  |  | }); |