forked from mirrors/gecko-dev
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
const path = require("path");
|
|
|
|
// This plugin supports finding files for resource:/activity-stream/ uris,
|
|
// translating the uri into a path relative to the browser/components/newtab/
|
|
// directory where the file may be found.
|
|
|
|
module.exports = {
|
|
ResourceUriPlugin: class ResourceUriPlugin {
|
|
#resourcePathRegEx;
|
|
|
|
constructor({ resourcePathRegEx }) {
|
|
this.#resourcePathRegEx = resourcePathRegEx;
|
|
}
|
|
|
|
apply(compiler) {
|
|
compiler.hooks.compilation.tap(
|
|
"ResourceUriPlugin",
|
|
(compilation, { normalModuleFactory }) => {
|
|
normalModuleFactory.hooks.resolveForScheme
|
|
.for("resource")
|
|
.tap("ResourceUriPlugin", resourceData => {
|
|
const url = new URL(resourceData.resource);
|
|
if (!url.href.match(this.#resourcePathRegEx)) {
|
|
return true;
|
|
}
|
|
const pathname = path.join(__dirname, "..", url.pathname);
|
|
resourceData.path = pathname;
|
|
resourceData.query = url.search;
|
|
resourceData.fragment = url.hash;
|
|
resourceData.resource = pathname + url.search + url.hash;
|
|
return true;
|
|
});
|
|
}
|
|
);
|
|
}
|
|
},
|
|
};
|