mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.8 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/. */
 | 
						|
 | 
						|
// This plugin supports finding files with particular resource:// URIs
 | 
						|
// and translating the uri into a relative filesytem path where the file may be
 | 
						|
// found when running within the Karma / Mocha test framework.
 | 
						|
 | 
						|
/* eslint-env node */
 | 
						|
const path = require("path");
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  MozSrcUriPlugin: class MozSrcUriPlugin {
 | 
						|
    /**
 | 
						|
     * The base directory of the repository.
 | 
						|
     */
 | 
						|
    #baseDir;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param {object} options
 | 
						|
     *  Object passed during the instantiation of MozSrcUriPlugin
 | 
						|
     * @param {string} options.baseDir
 | 
						|
     *   The base directory of the repository.
 | 
						|
     */
 | 
						|
    constructor({ baseDir }) {
 | 
						|
      this.#baseDir = baseDir;
 | 
						|
    }
 | 
						|
 | 
						|
    apply(compiler) {
 | 
						|
      compiler.hooks.compilation.tap(
 | 
						|
        "MozSrcUriPlugin",
 | 
						|
        (compilation, { normalModuleFactory }) => {
 | 
						|
          normalModuleFactory.hooks.resolveForScheme
 | 
						|
            .for("moz-src")
 | 
						|
            .tap("MozSrcUriPlugin", resourceData => {
 | 
						|
              const url = new URL(resourceData.resource);
 | 
						|
 | 
						|
              // path.join() is necessary to normalize the path on Windows.
 | 
						|
              // Without it, the path may contain backslashes, resulting in
 | 
						|
              // different build output on Windows than on Unix systems.
 | 
						|
              const pathname = path.join(this.#baseDir, url.pathname);
 | 
						|
              resourceData.path = pathname;
 | 
						|
              resourceData.query = url.search;
 | 
						|
              resourceData.fragment = url.hash;
 | 
						|
              resourceData.resource = pathname + url.search + url.hash;
 | 
						|
              return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
      );
 | 
						|
    }
 | 
						|
  },
 | 
						|
};
 |