return (request, callback) => {
            let innerRequest = getInnerRequest(resolver, request);
            if (!innerRequest) {
                return callback();
            }

            let match = innerRequest.match(mapping.aliasPattern);
            if (!match) {
                return callback();
            }

            let newRequestStr = mapping.target;
            if (!mapping.onlyModule) {
                newRequestStr = newRequestStr.replace('*', match[1]);
            }

            if (newRequestStr[0] === '.') {
                newRequestStr = path.resolve(this.absoluteBaseUrl, newRequestStr);
            }

            let newRequest = _.extend({}, request, {
                request: newRequestStr
            }) as Request;

            return resolver.doResolve(
                this.target,
                newRequest,
                "aliased with mapping '" + innerRequest  + "': '" + mapping.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
                )
            );
        };
Example #2
0
      async (request: NormalModuleFactoryRequest, resolveContext: {}) => {
        if (!request || request.typescriptPathMapped) {
          return;
        }

        const originalRequest = getInnerRequest(resolver, request);
        if (!originalRequest) {
          return;
        }

        // Only work on Javascript/TypeScript issuers.
        if (!request.context.issuer || !request.context.issuer.match(/\.[jt]sx?$/)) {
          return;
        }

        // Relative or absolute requests are not mapped
        if (originalRequest.startsWith('.') || originalRequest.startsWith('/')) {
          return;
        }

        // Amd requests are not mapped
        if (originalRequest.startsWith('!!webpack amd')) {
          return;
        }

        const replacements = findReplacements(originalRequest, this._options.paths || {});
        for (const potential of replacements) {
          const potentialRequest = {
            ...request,
            request: path.resolve(this._options.baseUrl || '', potential),
            typescriptPathMapped: true,
          };
          const result = await resolveAsync(potentialRequest, resolveContext);

          if (result) {
            return result;
          }
        }
      },