123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- var createInnerCallback = require("./createInnerCallback");
- function startsWith(string, searchString) {
- var stringLength = string.length;
- var searchLength = searchString.length;
- // early out if the search length is greater than the search string
- if(searchLength > stringLength) {
- return false;
- }
- var index = -1;
- while(++index < searchLength) {
- if(string.charCodeAt(index) !== searchString.charCodeAt(index)) {
- return false;
- }
- }
- return true;
- }
- function AliasPlugin(source, options, target) {
- this.source = source;
- this.name = options.name;
- this.alias = options.alias;
- this.onlyModule = options.onlyModule;
- this.target = target;
- }
- module.exports = AliasPlugin;
- AliasPlugin.prototype.apply = function(resolver) {
- var target = this.target;
- var name = this.name;
- var alias = this.alias;
- var onlyModule = this.onlyModule;
- resolver.plugin(this.source, function(request, callback) {
- var innerRequest = request.request;
- if(!innerRequest) return callback();
- if(innerRequest === name || (!onlyModule && startsWith(innerRequest, name + "/"))) {
- if(innerRequest !== alias && !startsWith(innerRequest, alias + "/")) {
- var newRequestStr = alias + innerRequest.substr(name.length);
- var obj = Object.assign({}, request, {
- request: newRequestStr
- });
- return resolver.doResolve(target, obj, "aliased with mapping '" + name + "': '" + alias + "' to '" + newRequestStr + "'", createInnerCallback(function(err, result) {
- if(arguments.length > 0) return callback(err, result);
- // don't allow other aliasing or raw request
- callback(null, null);
- }, callback));
- }
- }
- return callback();
- });
- };
|