mirror of https://github.com/webpack/webpack.git
Merge pull request #8570 from webpack/feature/serialization_api
Expose the serialization API
This commit is contained in:
commit
0ed58f42ea
|
|
@ -18,8 +18,8 @@ const {
|
|||
keepOriginalOrder
|
||||
} = require("./util/comparators");
|
||||
const { compareModulesById } = require("./util/comparators");
|
||||
const contextify = require("./util/identifier").contextify;
|
||||
const makeUnserializable = require("./util/makeUnserializable");
|
||||
const { contextify } = require("./util/identifier");
|
||||
const { registerNotSerializable } = require("./util/serialization");
|
||||
|
||||
/** @typedef {import("webpack-sources").Source} Source */
|
||||
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
||||
|
|
@ -890,6 +890,6 @@ webpackEmptyAsyncContext.id = ${JSON.stringify(id)};`;
|
|||
}
|
||||
}
|
||||
|
||||
makeUnserializable(ContextModule);
|
||||
registerNotSerializable(ContextModule);
|
||||
|
||||
module.exports = ContextModule;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
const path = require("path");
|
||||
const createHash = require("../util/createHash");
|
||||
const makeSerializable = require("../util/makeSerializable");
|
||||
const serializer = require("../util/serializer");
|
||||
const { serializer } = require("../util/serialization");
|
||||
|
||||
/** @typedef {import("webpack-sources").Source} Source */
|
||||
/** @typedef {import("../../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
|
||||
|
|
|
|||
|
|
@ -132,5 +132,6 @@ exportPlugins((exports.debug = {}), {
|
|||
|
||||
exportPlugins((exports.util = {}), {
|
||||
createHash: () => require("./util/createHash"),
|
||||
comparators: () => require("./util/comparators")
|
||||
comparators: () => require("./util/comparators"),
|
||||
serialization: () => require("./util/serialization")
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
"use strict";
|
||||
|
||||
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
|
||||
const createHash = require("./createHash");
|
||||
const { register } = require("./serialization");
|
||||
|
||||
const getPrototypeChain = C => {
|
||||
const chain = [];
|
||||
|
|
@ -64,10 +64,5 @@ class ClassSerializer {
|
|||
}
|
||||
|
||||
module.exports = (Constructor, request, name = null) => {
|
||||
ObjectMiddleware.register(
|
||||
Constructor,
|
||||
request,
|
||||
name,
|
||||
new ClassSerializer(Constructor)
|
||||
);
|
||||
register(Constructor, request, name, new ClassSerializer(Constructor));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
|
||||
|
||||
module.exports = Constructor => {
|
||||
ObjectMiddleware.registerNotSerializable(Constructor);
|
||||
};
|
||||
|
|
@ -5,31 +5,35 @@
|
|||
|
||||
"use strict";
|
||||
|
||||
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
|
||||
const { register } = require("./serialization");
|
||||
|
||||
const Position = /** @type {TODO} */ (require("acorn")).Position;
|
||||
const SourceLocation = require("acorn").SourceLocation;
|
||||
const CachedSource = require("webpack-sources").CachedSource;
|
||||
const ConcatSource = require("webpack-sources").ConcatSource;
|
||||
const OriginalSource = require("webpack-sources").OriginalSource;
|
||||
const PrefixSource = require("webpack-sources").PrefixSource;
|
||||
const RawSource = require("webpack-sources").RawSource;
|
||||
const ReplaceSource = require("webpack-sources").ReplaceSource;
|
||||
const SourceMapSource = require("webpack-sources").SourceMapSource;
|
||||
const {
|
||||
CachedSource,
|
||||
ConcatSource,
|
||||
OriginalSource,
|
||||
PrefixSource,
|
||||
RawSource,
|
||||
ReplaceSource,
|
||||
SourceMapSource
|
||||
} = require("webpack-sources");
|
||||
|
||||
/** @typedef {import("../Dependency").RealDependencyLocation} RealDependencyLocation */
|
||||
/** @typedef {import("../Dependency").SourcePosition} SourcePosition */
|
||||
/** @typedef {import("./serialization").ObjectDeserializerContext} ObjectDeserializerContext */
|
||||
/** @typedef {import("./serialization").ObjectSerializerContext} ObjectSerializerContext */
|
||||
|
||||
const CURRENT_MODULE = "webpack/lib/util/registerExternalSerializer";
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
CachedSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/CachedSource",
|
||||
new class CachedSourceSerializer {
|
||||
/**
|
||||
* @param {CachedSource} source the cached source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -40,7 +44,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {CachedSource} cached source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -53,14 +57,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
RawSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/RawSource",
|
||||
new class RawSourceSerializer {
|
||||
/**
|
||||
* @param {RawSource} source the raw source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -69,7 +73,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {RawSource} raw source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -79,14 +83,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
ConcatSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/ConcatSource",
|
||||
new class ConcatSourceSerializer {
|
||||
/**
|
||||
* @param {ConcatSource} source the concat source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -94,7 +98,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {ConcatSource} concat source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -106,14 +110,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
PrefixSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/PrefixSource",
|
||||
new class PrefixSourceSerializer {
|
||||
/**
|
||||
* @param {PrefixSource} source the prefix source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -122,7 +126,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {PrefixSource} prefix source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -131,14 +135,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
ReplaceSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/ReplaceSource",
|
||||
new class ReplaceSourceSerializer {
|
||||
/**
|
||||
* @param {ReplaceSource} source the replace source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -160,7 +164,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {ReplaceSource} replace source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -175,14 +179,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
OriginalSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/OriginalSource",
|
||||
new class OriginalSourceSerializer {
|
||||
/**
|
||||
* @param {OriginalSource} source the original source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -191,7 +195,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {OriginalSource} original source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -200,14 +204,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
SourceLocation,
|
||||
CURRENT_MODULE,
|
||||
"acorn/SourceLocation",
|
||||
new class SourceLocationSerializer {
|
||||
/**
|
||||
* @param {SourceLocation} loc the location to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(loc, { write }) {
|
||||
|
|
@ -218,7 +222,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {RealDependencyLocation} location
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -236,14 +240,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
Position,
|
||||
CURRENT_MODULE,
|
||||
"acorn/Position",
|
||||
new class PositionSerializer {
|
||||
/**
|
||||
* @param {Position} pos the position to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(pos, { write }) {
|
||||
|
|
@ -252,7 +256,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {SourcePosition} position
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
@ -264,14 +268,14 @@ ObjectMiddleware.register(
|
|||
}()
|
||||
);
|
||||
|
||||
ObjectMiddleware.register(
|
||||
register(
|
||||
SourceMapSource,
|
||||
CURRENT_MODULE,
|
||||
"webpack-sources/SourceMapSource",
|
||||
new class SourceMapSourceSerializer {
|
||||
/**
|
||||
* @param {SourceMapSource} source the source map source to be serialized
|
||||
* @param {ObjectMiddleware.ObjectSerializerContext} context context
|
||||
* @param {ObjectSerializerContext} context context
|
||||
* @returns {void}
|
||||
*/
|
||||
serialize(source, { write }) {
|
||||
|
|
@ -281,7 +285,7 @@ ObjectMiddleware.register(
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {ObjectMiddleware.ObjectDeserializerContext} context context
|
||||
* @param {ObjectDeserializerContext} context context
|
||||
* @returns {SourceMapSource} source source map source
|
||||
*/
|
||||
deserialize({ read }) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
|
@ -10,7 +9,16 @@ const FileMiddleware = require("../serialization/FileMiddleware");
|
|||
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
|
||||
const Serializer = require("../serialization/Serializer");
|
||||
|
||||
const serializer = new Serializer(
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
||||
|
||||
const { register, registerLoader, registerNotSerializable } = ObjectMiddleware;
|
||||
|
||||
// Expose serialization API
|
||||
exports.register = register;
|
||||
exports.registerLoader = registerLoader;
|
||||
exports.registerNotSerializable = registerNotSerializable;
|
||||
exports.serializer = new Serializer(
|
||||
[new ObjectMiddleware(), new BinaryMiddleware(), new FileMiddleware()],
|
||||
{
|
||||
singleItem: true
|
||||
|
|
@ -21,8 +29,6 @@ require("./registerExternalSerializer");
|
|||
|
||||
// Load internal paths with a relative require
|
||||
// This allows bundling all internal serializers
|
||||
ObjectMiddleware.registerLoader(/^webpack\/lib\//, req =>
|
||||
registerLoader(/^webpack\/lib\//, req =>
|
||||
require("../" + req.slice("webpack/lib/".length))
|
||||
);
|
||||
|
||||
module.exports = serializer;
|
||||
Loading…
Reference in New Issue