webpack
Version:
Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.
76 lines (67 loc) • 2.5 kB
JavaScript
/*
MIT License http://www.opensource.org/licenses/mit-license.php
*/
;
const BinaryMiddleware = require("../serialization/BinaryMiddleware");
const FileMiddleware = require("../serialization/FileMiddleware");
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
const Serializer = require("../serialization/Serializer");
const SerializerMiddleware = require("../serialization/SerializerMiddleware");
const SingleItemMiddleware = require("../serialization/SingleItemMiddleware");
const internalSerializables = require("./internalSerializables");
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
const { register, registerLoader, registerNotSerializable } = ObjectMiddleware;
const binaryMiddleware = new BinaryMiddleware();
// Expose serialization API
exports.register = register;
exports.registerLoader = registerLoader;
exports.registerNotSerializable = registerNotSerializable;
exports.NOT_SERIALIZABLE = ObjectMiddleware.NOT_SERIALIZABLE;
exports.MEASURE_START_OPERATION = BinaryMiddleware.MEASURE_START_OPERATION;
exports.MEASURE_END_OPERATION = BinaryMiddleware.MEASURE_END_OPERATION;
exports.buffersSerializer = new Serializer([
new SingleItemMiddleware(),
new ObjectMiddleware(context => {
if (context.write) {
context.writeLazy = value => {
context.write(SerializerMiddleware.createLazy(value, binaryMiddleware));
};
}
}),
binaryMiddleware
]);
exports.createFileSerializer = fs => {
const fileMiddleware = new FileMiddleware(fs);
return new Serializer([
new SingleItemMiddleware(),
new ObjectMiddleware(context => {
if (context.write) {
context.writeLazy = value => {
context.write(
SerializerMiddleware.createLazy(value, binaryMiddleware)
);
};
context.writeSeparate = (value, options) => {
context.write(
SerializerMiddleware.createLazy(value, fileMiddleware, options)
);
};
}
}),
binaryMiddleware,
fileMiddleware
]);
};
require("./registerExternalSerializer");
// Load internal paths with a relative require
// This allows bundling all internal serializers
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;
});