1
0
mirror of https://github.com/dzeiocom/libs.git synced 2025-06-06 08:19:53 +00:00

Fixed Path not correctly compiling with only a protocol

Signed-off-by: Florian Bouillon <florian.bouillon@delta-wings.net>
This commit is contained in:
Florian Bouillon 2020-10-20 15:39:48 +02:00
parent 5c230d74e5
commit db2474b594
4 changed files with 43 additions and 5 deletions

View File

@ -21,10 +21,6 @@ describe('Basic tests', () => {
expect(url.toString())
.toBe('git+ssh://username:password@domain.com:65565/path?test=true#hash')
})
it('should parse and give back the same url', () => {
const url = 'git+ssh://username:password@domain.com:65565/path?test=true&test=false#hash'
expect(new URLManager(url).toString()).toBe(url)
})
it('should be able to add and delete query', () => {
const url = new URLManager()

View File

@ -0,0 +1,35 @@
/// <reference types="jest" />
import URLManager from '../src/URLManager'
describe('Query Test', () => {
it('should parse basic query', () => {
const url = '?test=true'
expect(new URLManager(url).toString()).toBe(url)
})
it('should parse query without value', () => {
const url = '?test='
const url2 = '?test'
expect(new URLManager(url).toString()).toBe(url)
expect(new URLManager(url2).toString()).toBe(url)
})
it('should ignore query without value while one has a value', () => {
const url = '?test&test=pouet'
expect(new URLManager(url).toString()).toBe('?test=pouet')
})
it('should parse array query', () => {
const url = '?test=true&test=false&test=pouet'
expect(new URLManager(url).toString()).toBe(url)
})
it('should parse all at once', () => {
const url = '?test1=true&test2=&test3=true&test3=false'
expect(new URLManager(url).toString()).toBe(url)
})
})
describe('Global Tests', () => {
it('should parse a monstrous url', () => {
const url = 'git+ssh://username:password@domain.com:65565/path?test=true&test=false#hash'
expect(new URLManager(url).toString()).toBe(url)
})
})

View File

@ -3,6 +3,7 @@
"version": "1.0.2",
"description": "Manage URL",
"repository": "https://github.com/dzeiocom/libs.git",
"homepage": "https://github.com/dzeiocom/libs/tree/master/packages/url-manager#readme",
"author": "Aviortheking",
"license": "MIT",
"main": "./dist/URLManager.js",

View File

@ -32,7 +32,13 @@ export default class URLManager {
private fromURL(url: string) {
const protocolIndex = url.indexOf('://')
const indexOfPath = url.indexOf('/', protocolIndex !== -1 ? protocolIndex + 3 : undefined)
let indexOfPath = url.indexOf('/', protocolIndex !== -1 ? protocolIndex + 3 : undefined)
if (indexOfPath === -1) {
indexOfPath = url.indexOf('?', protocolIndex !== -1 ? protocolIndex + 3 : undefined)
}
if (indexOfPath === -1) {
indexOfPath = url.indexOf('#', protocolIndex !== -1 ? protocolIndex + 3 : undefined)
}
const firstPart = url.substr(0, indexOfPath !== -1 ? indexOfPath : undefined)
const path = url.substr(firstPart.length)