🎉 initiate project *astro_rewrite*
This commit is contained in:
		
							parent
							
								
									ffd4d5e86c
								
							
						
					
					
						commit
						2ba37bfbe3
					
				
					 8658 changed files with 2268794 additions and 2538 deletions
				
			
		
							
								
								
									
										19
									
								
								node_modules/@jridgewell/resolve-uri/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								node_modules/@jridgewell/resolve-uri/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| Copyright 2019 Justin Ridgewell <jridgewell@google.com> | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
| 
 | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										40
									
								
								node_modules/@jridgewell/resolve-uri/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								node_modules/@jridgewell/resolve-uri/README.md
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| # @jridgewell/resolve-uri | ||||
| 
 | ||||
| > Resolve a URI relative to an optional base URI | ||||
| 
 | ||||
| Resolve any combination of absolute URIs, protocol-realtive URIs, absolute paths, or relative paths. | ||||
| 
 | ||||
| ## Installation | ||||
| 
 | ||||
| ```sh | ||||
| npm install @jridgewell/resolve-uri | ||||
| ``` | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| ```typescript | ||||
| function resolve(input: string, base?: string): string; | ||||
| ``` | ||||
| 
 | ||||
| ```js | ||||
| import resolve from '@jridgewell/resolve-uri'; | ||||
| 
 | ||||
| resolve('foo', 'https://example.com'); // => 'https://example.com/foo' | ||||
| ``` | ||||
| 
 | ||||
| | Input                 | Base                    | Resolution                     | Explanation                                                  | | ||||
| |-----------------------|-------------------------|--------------------------------|--------------------------------------------------------------| | ||||
| | `https://example.com` | _any_                   | `https://example.com/`         | Input is normalized only                                     | | ||||
| | `//example.com`       | `https://base.com/`     | `https://example.com/`         | Input inherits the base's protocol                           | | ||||
| | `//example.com`       | _rest_                  | `//example.com/`               | Input is normalized only                                     | | ||||
| | `/example`            | `https://base.com/`     | `https://base.com/example`     | Input inherits the base's origin                             | | ||||
| | `/example`            | `//base.com/`           | `//base.com/example`           | Input inherits the base's host and remains protocol relative | | ||||
| | `/example`            | _rest_                  | `/example`                     | Input is normalized only                                     | | ||||
| | `example`             | `https://base.com/dir/` | `https://base.com/dir/example` | Input is joined with the base                                | | ||||
| | `example`             | `https://base.com/file` | `https://base.com/example`     | Input is joined with the base without its file               | | ||||
| | `example`             | `//base.com/dir/`       | `//base.com/dir/example`       | Input is joined with the base's last directory               | | ||||
| | `example`             | `//base.com/file`       | `//base.com/example`           | Input is joined with the base without its file               | | ||||
| | `example`             | `/base/dir/`            | `/base/dir/example`            | Input is joined with the base's last directory               | | ||||
| | `example`             | `/base/file`            | `/base/example`                | Input is joined with the base without its file               | | ||||
| | `example`             | `base/dir/`             | `base/dir/example`             | Input is joined with the base's last directory               | | ||||
| | `example`             | `base/file`             | `base/example`                 | Input is joined with the base without its file               | | ||||
							
								
								
									
										242
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										242
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,242 @@ | |||
| // Matches the scheme of a URL, eg "http://"
 | ||||
| const schemeRegex = /^[\w+.-]+:\/\//; | ||||
| /** | ||||
|  * Matches the parts of a URL: | ||||
|  * 1. Scheme, including ":", guaranteed. | ||||
|  * 2. User/password, including "@", optional. | ||||
|  * 3. Host, guaranteed. | ||||
|  * 4. Port, including ":", optional. | ||||
|  * 5. Path, including "/", optional. | ||||
|  * 6. Query, including "?", optional. | ||||
|  * 7. Hash, including "#", optional. | ||||
|  */ | ||||
| const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; | ||||
| /** | ||||
|  * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start | ||||
|  * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). | ||||
|  * | ||||
|  * 1. Host, optional. | ||||
|  * 2. Path, which may include "/", guaranteed. | ||||
|  * 3. Query, including "?", optional. | ||||
|  * 4. Hash, including "#", optional. | ||||
|  */ | ||||
| const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; | ||||
| var UrlType; | ||||
| (function (UrlType) { | ||||
|     UrlType[UrlType["Empty"] = 1] = "Empty"; | ||||
|     UrlType[UrlType["Hash"] = 2] = "Hash"; | ||||
|     UrlType[UrlType["Query"] = 3] = "Query"; | ||||
|     UrlType[UrlType["RelativePath"] = 4] = "RelativePath"; | ||||
|     UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath"; | ||||
|     UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative"; | ||||
|     UrlType[UrlType["Absolute"] = 7] = "Absolute"; | ||||
| })(UrlType || (UrlType = {})); | ||||
| function isAbsoluteUrl(input) { | ||||
|     return schemeRegex.test(input); | ||||
| } | ||||
| function isSchemeRelativeUrl(input) { | ||||
|     return input.startsWith('//'); | ||||
| } | ||||
| function isAbsolutePath(input) { | ||||
|     return input.startsWith('/'); | ||||
| } | ||||
| function isFileUrl(input) { | ||||
|     return input.startsWith('file:'); | ||||
| } | ||||
| function isRelative(input) { | ||||
|     return /^[.?#]/.test(input); | ||||
| } | ||||
| function parseAbsoluteUrl(input) { | ||||
|     const match = urlRegex.exec(input); | ||||
|     return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); | ||||
| } | ||||
| function parseFileUrl(input) { | ||||
|     const match = fileRegex.exec(input); | ||||
|     const path = match[2]; | ||||
|     return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); | ||||
| } | ||||
| function makeUrl(scheme, user, host, port, path, query, hash) { | ||||
|     return { | ||||
|         scheme, | ||||
|         user, | ||||
|         host, | ||||
|         port, | ||||
|         path, | ||||
|         query, | ||||
|         hash, | ||||
|         type: UrlType.Absolute, | ||||
|     }; | ||||
| } | ||||
| function parseUrl(input) { | ||||
|     if (isSchemeRelativeUrl(input)) { | ||||
|         const url = parseAbsoluteUrl('http:' + input); | ||||
|         url.scheme = ''; | ||||
|         url.type = UrlType.SchemeRelative; | ||||
|         return url; | ||||
|     } | ||||
|     if (isAbsolutePath(input)) { | ||||
|         const url = parseAbsoluteUrl('http://foo.com' + input); | ||||
|         url.scheme = ''; | ||||
|         url.host = ''; | ||||
|         url.type = UrlType.AbsolutePath; | ||||
|         return url; | ||||
|     } | ||||
|     if (isFileUrl(input)) | ||||
|         return parseFileUrl(input); | ||||
|     if (isAbsoluteUrl(input)) | ||||
|         return parseAbsoluteUrl(input); | ||||
|     const url = parseAbsoluteUrl('http://foo.com/' + input); | ||||
|     url.scheme = ''; | ||||
|     url.host = ''; | ||||
|     url.type = input | ||||
|         ? input.startsWith('?') | ||||
|             ? UrlType.Query | ||||
|             : input.startsWith('#') | ||||
|                 ? UrlType.Hash | ||||
|                 : UrlType.RelativePath | ||||
|         : UrlType.Empty; | ||||
|     return url; | ||||
| } | ||||
| function stripPathFilename(path) { | ||||
|     // If a path ends with a parent directory "..", then it's a relative path with excess parent
 | ||||
|     // paths. It's not a file, so we can't strip it.
 | ||||
|     if (path.endsWith('/..')) | ||||
|         return path; | ||||
|     const index = path.lastIndexOf('/'); | ||||
|     return path.slice(0, index + 1); | ||||
| } | ||||
| function mergePaths(url, base) { | ||||
|     normalizePath(base, base.type); | ||||
|     // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
 | ||||
|     // path).
 | ||||
|     if (url.path === '/') { | ||||
|         url.path = base.path; | ||||
|     } | ||||
|     else { | ||||
|         // Resolution happens relative to the base path's directory, not the file.
 | ||||
|         url.path = stripPathFilename(base.path) + url.path; | ||||
|     } | ||||
| } | ||||
| /** | ||||
|  * The path can have empty directories "//", unneeded parents "foo/..", or current directory | ||||
|  * "foo/.". We need to normalize to a standard representation. | ||||
|  */ | ||||
| function normalizePath(url, type) { | ||||
|     const rel = type <= UrlType.RelativePath; | ||||
|     const pieces = url.path.split('/'); | ||||
|     // We need to preserve the first piece always, so that we output a leading slash. The item at
 | ||||
|     // pieces[0] is an empty string.
 | ||||
|     let pointer = 1; | ||||
|     // Positive is the number of real directories we've output, used for popping a parent directory.
 | ||||
|     // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
 | ||||
|     let positive = 0; | ||||
|     // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
 | ||||
|     // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
 | ||||
|     // real directory, we won't need to append, unless the other conditions happen again.
 | ||||
|     let addTrailingSlash = false; | ||||
|     for (let i = 1; i < pieces.length; i++) { | ||||
|         const piece = pieces[i]; | ||||
|         // An empty directory, could be a trailing slash, or just a double "//" in the path.
 | ||||
|         if (!piece) { | ||||
|             addTrailingSlash = true; | ||||
|             continue; | ||||
|         } | ||||
|         // If we encounter a real directory, then we don't need to append anymore.
 | ||||
|         addTrailingSlash = false; | ||||
|         // A current directory, which we can always drop.
 | ||||
|         if (piece === '.') | ||||
|             continue; | ||||
|         // A parent directory, we need to see if there are any real directories we can pop. Else, we
 | ||||
|         // have an excess of parents, and we'll need to keep the "..".
 | ||||
|         if (piece === '..') { | ||||
|             if (positive) { | ||||
|                 addTrailingSlash = true; | ||||
|                 positive--; | ||||
|                 pointer--; | ||||
|             } | ||||
|             else if (rel) { | ||||
|                 // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
 | ||||
|                 // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
 | ||||
|                 pieces[pointer++] = piece; | ||||
|             } | ||||
|             continue; | ||||
|         } | ||||
|         // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
 | ||||
|         // any popped or dropped directories.
 | ||||
|         pieces[pointer++] = piece; | ||||
|         positive++; | ||||
|     } | ||||
|     let path = ''; | ||||
|     for (let i = 1; i < pointer; i++) { | ||||
|         path += '/' + pieces[i]; | ||||
|     } | ||||
|     if (!path || (addTrailingSlash && !path.endsWith('/..'))) { | ||||
|         path += '/'; | ||||
|     } | ||||
|     url.path = path; | ||||
| } | ||||
| /** | ||||
|  * Attempts to resolve `input` URL/path relative to `base`. | ||||
|  */ | ||||
| function resolve(input, base) { | ||||
|     if (!input && !base) | ||||
|         return ''; | ||||
|     const url = parseUrl(input); | ||||
|     let inputType = url.type; | ||||
|     if (base && inputType !== UrlType.Absolute) { | ||||
|         const baseUrl = parseUrl(base); | ||||
|         const baseType = baseUrl.type; | ||||
|         switch (inputType) { | ||||
|             case UrlType.Empty: | ||||
|                 url.hash = baseUrl.hash; | ||||
|             // fall through
 | ||||
|             case UrlType.Hash: | ||||
|                 url.query = baseUrl.query; | ||||
|             // fall through
 | ||||
|             case UrlType.Query: | ||||
|             case UrlType.RelativePath: | ||||
|                 mergePaths(url, baseUrl); | ||||
|             // fall through
 | ||||
|             case UrlType.AbsolutePath: | ||||
|                 // The host, user, and port are joined, you can't copy one without the others.
 | ||||
|                 url.user = baseUrl.user; | ||||
|                 url.host = baseUrl.host; | ||||
|                 url.port = baseUrl.port; | ||||
|             // fall through
 | ||||
|             case UrlType.SchemeRelative: | ||||
|                 // The input doesn't have a schema at least, so we need to copy at least that over.
 | ||||
|                 url.scheme = baseUrl.scheme; | ||||
|         } | ||||
|         if (baseType > inputType) | ||||
|             inputType = baseType; | ||||
|     } | ||||
|     normalizePath(url, inputType); | ||||
|     const queryHash = url.query + url.hash; | ||||
|     switch (inputType) { | ||||
|         // This is impossible, because of the empty checks at the start of the function.
 | ||||
|         // case UrlType.Empty:
 | ||||
|         case UrlType.Hash: | ||||
|         case UrlType.Query: | ||||
|             return queryHash; | ||||
|         case UrlType.RelativePath: { | ||||
|             // The first char is always a "/", and we need it to be relative.
 | ||||
|             const path = url.path.slice(1); | ||||
|             if (!path) | ||||
|                 return queryHash || '.'; | ||||
|             if (isRelative(base || input) && !isRelative(path)) { | ||||
|                 // If base started with a leading ".", or there is no base and input started with a ".",
 | ||||
|                 // then we need to ensure that the relative path starts with a ".". We don't know if
 | ||||
|                 // relative starts with a "..", though, so check before prepending.
 | ||||
|                 return './' + path + queryHash; | ||||
|             } | ||||
|             return path + queryHash; | ||||
|         } | ||||
|         case UrlType.AbsolutePath: | ||||
|             return url.path + queryHash; | ||||
|         default: | ||||
|             return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export { resolve as default }; | ||||
| //# sourceMappingURL=resolve-uri.mjs.map
 | ||||
							
								
								
									
										1
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										250
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										250
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,250 @@ | |||
| (function (global, factory) { | ||||
|     typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||||
|     typeof define === 'function' && define.amd ? define(factory) : | ||||
|     (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.resolveURI = factory()); | ||||
| })(this, (function () { 'use strict'; | ||||
| 
 | ||||
|     // Matches the scheme of a URL, eg "http://"
 | ||||
|     const schemeRegex = /^[\w+.-]+:\/\//; | ||||
|     /** | ||||
|      * Matches the parts of a URL: | ||||
|      * 1. Scheme, including ":", guaranteed. | ||||
|      * 2. User/password, including "@", optional. | ||||
|      * 3. Host, guaranteed. | ||||
|      * 4. Port, including ":", optional. | ||||
|      * 5. Path, including "/", optional. | ||||
|      * 6. Query, including "?", optional. | ||||
|      * 7. Hash, including "#", optional. | ||||
|      */ | ||||
|     const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/; | ||||
|     /** | ||||
|      * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start | ||||
|      * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). | ||||
|      * | ||||
|      * 1. Host, optional. | ||||
|      * 2. Path, which may include "/", guaranteed. | ||||
|      * 3. Query, including "?", optional. | ||||
|      * 4. Hash, including "#", optional. | ||||
|      */ | ||||
|     const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i; | ||||
|     var UrlType; | ||||
|     (function (UrlType) { | ||||
|         UrlType[UrlType["Empty"] = 1] = "Empty"; | ||||
|         UrlType[UrlType["Hash"] = 2] = "Hash"; | ||||
|         UrlType[UrlType["Query"] = 3] = "Query"; | ||||
|         UrlType[UrlType["RelativePath"] = 4] = "RelativePath"; | ||||
|         UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath"; | ||||
|         UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative"; | ||||
|         UrlType[UrlType["Absolute"] = 7] = "Absolute"; | ||||
|     })(UrlType || (UrlType = {})); | ||||
|     function isAbsoluteUrl(input) { | ||||
|         return schemeRegex.test(input); | ||||
|     } | ||||
|     function isSchemeRelativeUrl(input) { | ||||
|         return input.startsWith('//'); | ||||
|     } | ||||
|     function isAbsolutePath(input) { | ||||
|         return input.startsWith('/'); | ||||
|     } | ||||
|     function isFileUrl(input) { | ||||
|         return input.startsWith('file:'); | ||||
|     } | ||||
|     function isRelative(input) { | ||||
|         return /^[.?#]/.test(input); | ||||
|     } | ||||
|     function parseAbsoluteUrl(input) { | ||||
|         const match = urlRegex.exec(input); | ||||
|         return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || ''); | ||||
|     } | ||||
|     function parseFileUrl(input) { | ||||
|         const match = fileRegex.exec(input); | ||||
|         const path = match[2]; | ||||
|         return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || ''); | ||||
|     } | ||||
|     function makeUrl(scheme, user, host, port, path, query, hash) { | ||||
|         return { | ||||
|             scheme, | ||||
|             user, | ||||
|             host, | ||||
|             port, | ||||
|             path, | ||||
|             query, | ||||
|             hash, | ||||
|             type: UrlType.Absolute, | ||||
|         }; | ||||
|     } | ||||
|     function parseUrl(input) { | ||||
|         if (isSchemeRelativeUrl(input)) { | ||||
|             const url = parseAbsoluteUrl('http:' + input); | ||||
|             url.scheme = ''; | ||||
|             url.type = UrlType.SchemeRelative; | ||||
|             return url; | ||||
|         } | ||||
|         if (isAbsolutePath(input)) { | ||||
|             const url = parseAbsoluteUrl('http://foo.com' + input); | ||||
|             url.scheme = ''; | ||||
|             url.host = ''; | ||||
|             url.type = UrlType.AbsolutePath; | ||||
|             return url; | ||||
|         } | ||||
|         if (isFileUrl(input)) | ||||
|             return parseFileUrl(input); | ||||
|         if (isAbsoluteUrl(input)) | ||||
|             return parseAbsoluteUrl(input); | ||||
|         const url = parseAbsoluteUrl('http://foo.com/' + input); | ||||
|         url.scheme = ''; | ||||
|         url.host = ''; | ||||
|         url.type = input | ||||
|             ? input.startsWith('?') | ||||
|                 ? UrlType.Query | ||||
|                 : input.startsWith('#') | ||||
|                     ? UrlType.Hash | ||||
|                     : UrlType.RelativePath | ||||
|             : UrlType.Empty; | ||||
|         return url; | ||||
|     } | ||||
|     function stripPathFilename(path) { | ||||
|         // If a path ends with a parent directory "..", then it's a relative path with excess parent
 | ||||
|         // paths. It's not a file, so we can't strip it.
 | ||||
|         if (path.endsWith('/..')) | ||||
|             return path; | ||||
|         const index = path.lastIndexOf('/'); | ||||
|         return path.slice(0, index + 1); | ||||
|     } | ||||
|     function mergePaths(url, base) { | ||||
|         normalizePath(base, base.type); | ||||
|         // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative
 | ||||
|         // path).
 | ||||
|         if (url.path === '/') { | ||||
|             url.path = base.path; | ||||
|         } | ||||
|         else { | ||||
|             // Resolution happens relative to the base path's directory, not the file.
 | ||||
|             url.path = stripPathFilename(base.path) + url.path; | ||||
|         } | ||||
|     } | ||||
|     /** | ||||
|      * The path can have empty directories "//", unneeded parents "foo/..", or current directory | ||||
|      * "foo/.". We need to normalize to a standard representation. | ||||
|      */ | ||||
|     function normalizePath(url, type) { | ||||
|         const rel = type <= UrlType.RelativePath; | ||||
|         const pieces = url.path.split('/'); | ||||
|         // We need to preserve the first piece always, so that we output a leading slash. The item at
 | ||||
|         // pieces[0] is an empty string.
 | ||||
|         let pointer = 1; | ||||
|         // Positive is the number of real directories we've output, used for popping a parent directory.
 | ||||
|         // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo".
 | ||||
|         let positive = 0; | ||||
|         // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will
 | ||||
|         // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a
 | ||||
|         // real directory, we won't need to append, unless the other conditions happen again.
 | ||||
|         let addTrailingSlash = false; | ||||
|         for (let i = 1; i < pieces.length; i++) { | ||||
|             const piece = pieces[i]; | ||||
|             // An empty directory, could be a trailing slash, or just a double "//" in the path.
 | ||||
|             if (!piece) { | ||||
|                 addTrailingSlash = true; | ||||
|                 continue; | ||||
|             } | ||||
|             // If we encounter a real directory, then we don't need to append anymore.
 | ||||
|             addTrailingSlash = false; | ||||
|             // A current directory, which we can always drop.
 | ||||
|             if (piece === '.') | ||||
|                 continue; | ||||
|             // A parent directory, we need to see if there are any real directories we can pop. Else, we
 | ||||
|             // have an excess of parents, and we'll need to keep the "..".
 | ||||
|             if (piece === '..') { | ||||
|                 if (positive) { | ||||
|                     addTrailingSlash = true; | ||||
|                     positive--; | ||||
|                     pointer--; | ||||
|                 } | ||||
|                 else if (rel) { | ||||
|                     // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute
 | ||||
|                     // URL, protocol relative URL, or an absolute path, we don't need to keep excess.
 | ||||
|                     pieces[pointer++] = piece; | ||||
|                 } | ||||
|                 continue; | ||||
|             } | ||||
|             // We've encountered a real directory. Move it to the next insertion pointer, which accounts for
 | ||||
|             // any popped or dropped directories.
 | ||||
|             pieces[pointer++] = piece; | ||||
|             positive++; | ||||
|         } | ||||
|         let path = ''; | ||||
|         for (let i = 1; i < pointer; i++) { | ||||
|             path += '/' + pieces[i]; | ||||
|         } | ||||
|         if (!path || (addTrailingSlash && !path.endsWith('/..'))) { | ||||
|             path += '/'; | ||||
|         } | ||||
|         url.path = path; | ||||
|     } | ||||
|     /** | ||||
|      * Attempts to resolve `input` URL/path relative to `base`. | ||||
|      */ | ||||
|     function resolve(input, base) { | ||||
|         if (!input && !base) | ||||
|             return ''; | ||||
|         const url = parseUrl(input); | ||||
|         let inputType = url.type; | ||||
|         if (base && inputType !== UrlType.Absolute) { | ||||
|             const baseUrl = parseUrl(base); | ||||
|             const baseType = baseUrl.type; | ||||
|             switch (inputType) { | ||||
|                 case UrlType.Empty: | ||||
|                     url.hash = baseUrl.hash; | ||||
|                 // fall through
 | ||||
|                 case UrlType.Hash: | ||||
|                     url.query = baseUrl.query; | ||||
|                 // fall through
 | ||||
|                 case UrlType.Query: | ||||
|                 case UrlType.RelativePath: | ||||
|                     mergePaths(url, baseUrl); | ||||
|                 // fall through
 | ||||
|                 case UrlType.AbsolutePath: | ||||
|                     // The host, user, and port are joined, you can't copy one without the others.
 | ||||
|                     url.user = baseUrl.user; | ||||
|                     url.host = baseUrl.host; | ||||
|                     url.port = baseUrl.port; | ||||
|                 // fall through
 | ||||
|                 case UrlType.SchemeRelative: | ||||
|                     // The input doesn't have a schema at least, so we need to copy at least that over.
 | ||||
|                     url.scheme = baseUrl.scheme; | ||||
|             } | ||||
|             if (baseType > inputType) | ||||
|                 inputType = baseType; | ||||
|         } | ||||
|         normalizePath(url, inputType); | ||||
|         const queryHash = url.query + url.hash; | ||||
|         switch (inputType) { | ||||
|             // This is impossible, because of the empty checks at the start of the function.
 | ||||
|             // case UrlType.Empty:
 | ||||
|             case UrlType.Hash: | ||||
|             case UrlType.Query: | ||||
|                 return queryHash; | ||||
|             case UrlType.RelativePath: { | ||||
|                 // The first char is always a "/", and we need it to be relative.
 | ||||
|                 const path = url.path.slice(1); | ||||
|                 if (!path) | ||||
|                     return queryHash || '.'; | ||||
|                 if (isRelative(base || input) && !isRelative(path)) { | ||||
|                     // If base started with a leading ".", or there is no base and input started with a ".",
 | ||||
|                     // then we need to ensure that the relative path starts with a ".". We don't know if
 | ||||
|                     // relative starts with a "..", though, so check before prepending.
 | ||||
|                     return './' + path + queryHash; | ||||
|                 } | ||||
|                 return path + queryHash; | ||||
|             } | ||||
|             case UrlType.AbsolutePath: | ||||
|                 return url.path + queryHash; | ||||
|             default: | ||||
|                 return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return resolve; | ||||
| 
 | ||||
| })); | ||||
| //# sourceMappingURL=resolve-uri.umd.js.map
 | ||||
							
								
								
									
										1
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										4
									
								
								node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| /** | ||||
|  * Attempts to resolve `input` URL/path relative to `base`. | ||||
|  */ | ||||
| export default function resolve(input: string, base: string | undefined): string; | ||||
							
								
								
									
										69
									
								
								node_modules/@jridgewell/resolve-uri/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								node_modules/@jridgewell/resolve-uri/package.json
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,69 @@ | |||
| { | ||||
|   "name": "@jridgewell/resolve-uri", | ||||
|   "version": "3.1.0", | ||||
|   "description": "Resolve a URI relative to an optional base URI", | ||||
|   "keywords": [ | ||||
|     "resolve", | ||||
|     "uri", | ||||
|     "url", | ||||
|     "path" | ||||
|   ], | ||||
|   "author": "Justin Ridgewell <justin@ridgewell.name>", | ||||
|   "license": "MIT", | ||||
|   "repository": "https://github.com/jridgewell/resolve-uri", | ||||
|   "main": "dist/resolve-uri.umd.js", | ||||
|   "module": "dist/resolve-uri.mjs", | ||||
|   "typings": "dist/types/resolve-uri.d.ts", | ||||
|   "exports": { | ||||
|     ".": [ | ||||
|       { | ||||
|         "types": "./dist/types/resolve-uri.d.ts", | ||||
|         "browser": "./dist/resolve-uri.umd.js", | ||||
|         "require": "./dist/resolve-uri.umd.js", | ||||
|         "import": "./dist/resolve-uri.mjs" | ||||
|       }, | ||||
|       "./dist/resolve-uri.umd.js" | ||||
|     ], | ||||
|     "./package.json": "./package.json" | ||||
|   }, | ||||
|   "files": [ | ||||
|     "dist" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">=6.0.0" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "prebuild": "rm -rf dist", | ||||
|     "build": "run-s -n build:*", | ||||
|     "build:rollup": "rollup -c rollup.config.js", | ||||
|     "build:ts": "tsc --project tsconfig.build.json", | ||||
|     "lint": "run-s -n lint:*", | ||||
|     "lint:prettier": "npm run test:lint:prettier -- --write", | ||||
|     "lint:ts": "npm run test:lint:ts -- --fix", | ||||
|     "pretest": "run-s build:rollup", | ||||
|     "test": "run-s -n test:lint test:only", | ||||
|     "test:debug": "mocha --inspect-brk", | ||||
|     "test:lint": "run-s -n test:lint:*", | ||||
|     "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", | ||||
|     "test:lint:ts": "eslint '{src,test}/**/*.ts'", | ||||
|     "test:only": "mocha", | ||||
|     "test:coverage": "c8 mocha", | ||||
|     "test:watch": "mocha --watch", | ||||
|     "prepublishOnly": "npm run preversion", | ||||
|     "preversion": "run-s test build" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@jridgewell/resolve-uri-latest": "npm:@jridgewell/resolve-uri@*", | ||||
|     "@rollup/plugin-typescript": "8.3.0", | ||||
|     "@typescript-eslint/eslint-plugin": "5.10.0", | ||||
|     "@typescript-eslint/parser": "5.10.0", | ||||
|     "c8": "7.11.0", | ||||
|     "eslint": "8.7.0", | ||||
|     "eslint-config-prettier": "8.3.0", | ||||
|     "mocha": "9.2.0", | ||||
|     "npm-run-all": "4.1.5", | ||||
|     "prettier": "2.5.1", | ||||
|     "rollup": "2.66.0", | ||||
|     "typescript": "4.5.5" | ||||
|   } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 sindrekjelsrud
						sindrekjelsrud