summaryrefslogtreecommitdiffstats
path: root/node_modules/loader-utils/lib/urlToRequest.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/loader-utils/lib/urlToRequest.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/loader-utils/lib/urlToRequest.js')
-rw-r--r--node_modules/loader-utils/lib/urlToRequest.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/loader-utils/lib/urlToRequest.js b/node_modules/loader-utils/lib/urlToRequest.js
new file mode 100644
index 0000000..e2b60d3
--- /dev/null
+++ b/node_modules/loader-utils/lib/urlToRequest.js
@@ -0,0 +1,60 @@
+'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;