2 * ============LICENSE_START========================================================================
3 * ONAP : ccsdk feature sdnr wt odlux
4 * =================================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6 * =================================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software distributed under the License
13 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14 * or implied. See the License for the specific language governing permissions and limitations under
16 * ============LICENSE_END==========================================================================
18 export const resolvePath = (...paths: string[]): string => {
19 function resolve(pathA: string, pathB: string) {
21 // 'a/b' => ['a', 'b']
22 // '/a/b' => ['', 'a', 'b']
23 // '/a/b/' => ['', 'a', 'b', '']
24 const pathBParts = pathB.split('/');
25 if (pathBParts[0] === '') {
26 return pathBParts.join('/');
28 const pathAParts = pathA.split('/');
29 const aLastIndex = pathAParts.length - 1;
30 if (pathAParts[aLastIndex] !== '') {
31 pathAParts[aLastIndex] = '';
36 while (typeof (part = pathBParts[i]) === 'string') {
49 pathAParts.push(part);
55 if (pathBParts[pathBParts.length - 1] !== '') pathAParts.pop();
56 return pathAParts.join('/');
61 let r = location.pathname;
63 const urlRegex = /^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i;
64 const multiSlashReg = /\/\/+/g;
66 while (typeof (path = paths[i]) === 'string') {
68 const matches = path && path.match(urlRegex);
72 path = path.replace(multiSlashReg, '/');