123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- const FileSerializerPlugin = require('./SerializerFilePlugin');
- const Append2SerializerPlugin = require('./SerializerAppend2Plugin');
- const pluginCompat = require('./util/plugin-compat');
- class CacheSerializerFactory {
- constructor(compiler) {
- this.compiler = compiler;
- pluginCompat.register(compiler, 'hardSourceCacheFactory', 'syncWaterfall', [
- 'factory',
- ]);
- pluginCompat.tap(
- compiler,
- 'hardSourceCacheFactory',
- 'default factory',
- factory => info => {
-
-
-
- if (factory) {
- serializer = factory(info);
- if (serializer) {
- return serializer;
- }
- }
-
- switch (info.type) {
- case 'data':
- return CacheSerializerFactory.dataSerializer.createSerializer(info);
- break;
- case 'file':
- return CacheSerializerFactory.fileSerializer.createSerializer(info);
- break;
- default:
- throw new Error(
- `Unknown hard-source cache serializer type: ${info.type}`,
- );
- break;
- }
- },
- );
- }
-
- create(info) {
- const factory = pluginCompat.call(this.compiler, 'hardSourceCacheFactory', [
- null,
- ]);
- const serializer = factory(info);
- return serializer;
- }
- }
- CacheSerializerFactory.dataSerializer = Append2SerializerPlugin;
- CacheSerializerFactory.fileSerializer = FileSerializerPlugin;
- module.exports = CacheSerializerFactory;
|