Sha256: a2eb6d5c7090d0b07e383fb7c3d9890357d21e4fd1112f9d2ea7a5e2b5b6a59c

Contents?: true

Size: 1.66 KB

Versions: 88

Compression:

Stored size: 1.66 KB

Contents

'use strict';

// we can't use path.win32.isAbsolute because it also matches paths starting with a forward slash
const matchNativeWin32Path = /^[A-Z]:[/\\]|^\\\\/i;

function urlToRequest(url, root) {
  // Do not rewrite an empty url
  if (url === '') {
    return '';
  }

  const moduleRequestRegex = /^[^?]*~/;
  let request;

  if (matchNativeWin32Path.test(url)) {
    // absolute windows path, keep it
    request = url;
  } else if (root !== undefined && root !== false && /^\//.test(url)) {
    // if root is set and the url is root-relative
    switch (typeof root) {
      // 1. root is a string: root is prefixed to the url
      case 'string':
        // special case: `~` roots convert to module request
        if (moduleRequestRegex.test(root)) {
          request = root.replace(/([^~/])$/, '$1/') + url.slice(1);
        } else {
          request = root + url;
        }
        break;
      // 2. root is `true`: absolute paths are allowed
      //    *nix only, windows-style absolute paths are always allowed as they doesn't start with a `/`
      case 'boolean':
        request = url;
        break;
      default:
        throw new Error(
          "Unexpected parameters to loader-utils 'urlToRequest': url = " +
            url +
            ', root = ' +
            root +
            '.'
        );
    }
  } else if (/^\.\.?\//.test(url)) {
    // A relative url stays
    request = url;
  } else {
    // every other url is threaded like a relative url
    request = './' + url;
  }

  // A `~` makes the url an module
  if (moduleRequestRegex.test(request)) {
    request = request.replace(moduleRequestRegex, '');
  }

  return request;
}

module.exports = urlToRequest;

Version data entries

88 entries across 28 versions & 9 rubygems

Version Path
disco_app-0.18.4 test/dummy/node_modules/babel-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.4 test/dummy/node_modules/sass-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.4 test/dummy/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.4 test/dummy/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.4 test/dummy/node_modules/webpack-cli/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.4 test/dummy/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/babel-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/sass-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/webpack-cli/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.18.1 test/dummy/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/babel-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/webpack-cli/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/sass-loader/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.14.0 test/dummy/node_modules/loader-utils/lib/urlToRequest.js
disco_app-0.14.0 test/dummy/node_modules/sass-loader/node_modules/loader-utils/lib/urlToRequest.js