Files
old-kitabcitab-frontend/kitabcitab/node_modules/next/dist/build/webpack/plugins/font-loader-manifest-plugin.js
2022-12-27 12:05:56 +01:00

81 lines
4.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _webpack = require("next/dist/compiled/webpack/webpack");
var _getRouteFromEntrypoint = _interopRequireDefault(require("../../../server/get-route-from-entrypoint"));
var _constants = require("../../../shared/lib/constants");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const PLUGIN_NAME = "FontLoaderManifestPlugin";
class FontLoaderManifestPlugin {
constructor(options){
this.appDirEnabled = options.appDirEnabled;
this.fontLoaderTargets = options.fontLoaderTargets;
}
apply(compiler) {
compiler.hooks.make.tap(PLUGIN_NAME, (compilation)=>{
let fontLoaderModules;
// Get all font loader modules
if (this.appDirEnabled) {
compilation.hooks.finishModules.tap(PLUGIN_NAME, (modules)=>{
const modulesArr = Array.from(modules);
fontLoaderModules = modulesArr.filter((mod)=>{
return this.fontLoaderTargets.some((fontLoaderTarget)=>{
var ref;
return (ref = mod.userRequest) == null ? void 0 : ref.startsWith(`${fontLoaderTarget}?`);
});
});
});
}
compilation.hooks.processAssets.tap({
name: PLUGIN_NAME,
stage: _webpack.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS
}, (assets)=>{
const fontLoaderManifest = {
pages: {},
app: {}
};
if (this.appDirEnabled) {
for (const mod of fontLoaderModules){
var ref;
if (!((ref = mod.buildInfo) == null ? void 0 : ref.assets)) continue;
const modAssets = Object.keys(mod.buildInfo.assets);
const fontFiles = modAssets.filter((file)=>/\.(woff|woff2|eot|ttf|otf)$/.test(file));
// Font files ending with .p.(woff|woff2|eot|ttf|otf) are preloaded
const preloadedFontFiles = fontFiles.filter((file)=>/\.p.(woff|woff2|eot|ttf|otf)$/.test(file));
// Create an entry for the request even if no files should preload. If that's the case a preconnect tag is added.
if (fontFiles.length > 0) {
fontLoaderManifest.app[mod.userRequest] = preloadedFontFiles;
}
}
}
for (const entrypoint of compilation.entrypoints.values()){
const pagePath = (0, _getRouteFromEntrypoint).default(entrypoint.name);
if (!pagePath) {
continue;
}
const fontFiles = entrypoint.chunks.flatMap((chunk)=>[
...chunk.auxiliaryFiles
]).filter((file)=>/\.(woff|woff2|eot|ttf|otf)$/.test(file));
// Font files ending with .p.(woff|woff2|eot|ttf|otf) are preloaded
const preloadedFontFiles = fontFiles.filter((file)=>/\.p.(woff|woff2|eot|ttf|otf)$/.test(file));
// Create an entry for the path even if no files should preload. If that's the case a preconnect tag is added.
if (fontFiles.length > 0) {
fontLoaderManifest.pages[pagePath] = preloadedFontFiles;
}
}
const manifest = JSON.stringify(fontLoaderManifest, null, 2);
assets[`server/${_constants.FONT_LOADER_MANIFEST}.js`] = new _webpack.sources.RawSource(`self.__FONT_LOADER_MANIFEST=${manifest}`);
assets[`server/${_constants.FONT_LOADER_MANIFEST}.json`] = new _webpack.sources.RawSource(manifest);
});
});
return;
}
}
exports.FontLoaderManifestPlugin = FontLoaderManifestPlugin;
//# sourceMappingURL=font-loader-manifest-plugin.js.map