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
ruby2js-4.0.4 lib/tasks/testrails/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/loader-utils/lib/urlToRequest.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/loader-utils/lib/urlToRequest.js
tang-0.2.0 spec/tang_app/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
tang-0.2.0 spec/tang_app/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
tang-0.2.0 spec/tang_app/node_modules/loader-utils/lib/urlToRequest.js
tang-0.1.0 spec/tang_app/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
tang-0.1.0 spec/tang_app/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
tang-0.1.0 spec/tang_app/node_modules/loader-utils/lib/urlToRequest.js
tang-0.0.9 spec/tang_app/node_modules/style-loader/node_modules/loader-utils/lib/urlToRequest.js
tang-0.0.9 spec/tang_app/node_modules/loader-utils/lib/urlToRequest.js
tang-0.0.9 spec/tang_app/node_modules/file-loader/node_modules/loader-utils/lib/urlToRequest.js
enju_library-0.3.8 spec/dummy/node_modules/loader-utils/lib/urlToRequest.js
ilog-0.4.1 node_modules/laravel-mix/node_modules/vue-style-loader/node_modules/loader-utils/lib/urlToRequest.js
ilog-0.4.1 node_modules/loader-utils/lib/urlToRequest.js
ilog-0.4.0 node_modules/laravel-mix/node_modules/vue-style-loader/node_modules/loader-utils/lib/urlToRequest.js
ilog-0.4.0 node_modules/loader-utils/lib/urlToRequest.js
ilog-0.3.3 node_modules/laravel-mix/node_modules/vue-style-loader/node_modules/loader-utils/lib/urlToRequest.js