32 lines
942 B
JavaScript
32 lines
942 B
JavaScript
'use strict';
|
|
|
|
/** @type {(x: string) => { __proto__: null, name: string, subpath: string }} */
|
|
module.exports = function parsePackageSpecifier(x) {
|
|
if (x.charAt(0) === '@') {
|
|
var slashIndex = x.indexOf('/');
|
|
if (slashIndex === -1) {
|
|
return {
|
|
__proto__: null, name: x, subpath: '.'
|
|
};
|
|
}
|
|
var secondSlash = x.indexOf('/', slashIndex + 1);
|
|
if (secondSlash === -1) {
|
|
return {
|
|
__proto__: null, name: x, subpath: '.'
|
|
};
|
|
}
|
|
return {
|
|
__proto__: null, name: x.slice(0, secondSlash), subpath: '.' + x.slice(secondSlash)
|
|
};
|
|
}
|
|
var firstSlash = x.indexOf('/');
|
|
if (firstSlash === -1) {
|
|
return {
|
|
__proto__: null, name: x, subpath: '.'
|
|
};
|
|
}
|
|
return {
|
|
__proto__: null, name: x.slice(0, firstSlash), subpath: '.' + x.slice(firstSlash)
|
|
};
|
|
};
|