mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-01-13 22:48:31 -05:00
6c1eb021ba
* feat: use warning codes for deprecation warnings * Update logger.spec.ts * Update package.json
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import { warningUtils } from '@verdaccio/core';
|
|
|
|
export const DEFAULT_PORT = '4873';
|
|
export const DEFAULT_PROTOCOL = 'http';
|
|
export const DEFAULT_DOMAIN = 'localhost';
|
|
/**
|
|
* Parse an internet address
|
|
* Allow:
|
|
- https:localhost:1234 - protocol + host + port
|
|
- localhost:1234 - host + port
|
|
- 1234 - port
|
|
- http::1234 - protocol + port
|
|
- https://localhost:443/ - full url + https
|
|
- http://[::1]:443/ - ipv6
|
|
- unix:/tmp/http.sock - unix sockets
|
|
- https://unix:/tmp/http.sock - unix sockets (https)
|
|
* @param {*} urlAddress the internet address definition
|
|
* @return {Object|Null} literal object that represent the address parsed
|
|
*/
|
|
export function parseAddress(urlAddress: any): any {
|
|
//
|
|
// TODO: refactor it to something more reasonable?
|
|
//
|
|
// protocol : // ( host )|( ipv6 ): port /
|
|
let urlPattern = /^((https?):(\/\/)?)?((([^\/:]*)|\[([^\[\]]+)\]):)?(\d+)\/?$/.exec(urlAddress);
|
|
|
|
if (urlPattern) {
|
|
return {
|
|
proto: urlPattern[2] || DEFAULT_PROTOCOL,
|
|
host: urlPattern[6] || urlPattern[7] || DEFAULT_DOMAIN,
|
|
port: urlPattern[8] || DEFAULT_PORT,
|
|
};
|
|
}
|
|
|
|
urlPattern = /^((https?):(\/\/)?)?unix:(.*)$/.exec(urlAddress);
|
|
|
|
if (urlPattern) {
|
|
return {
|
|
proto: urlPattern[2] || DEFAULT_PROTOCOL,
|
|
path: urlPattern[4],
|
|
};
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Retrieve all addresses defined in the config file.
|
|
* Verdaccio is able to listen multiple ports
|
|
* @param {String} argListen
|
|
* @param {String} configListen
|
|
* eg:
|
|
* listen:
|
|
- localhost:5555
|
|
- localhost:5557
|
|
@return {Array}
|
|
*/
|
|
export function getListListenAddresses(argListen: string | void, configListen: any): any {
|
|
// command line || config file || default
|
|
let addresses;
|
|
if (argListen) {
|
|
addresses = [argListen];
|
|
} else if (Array.isArray(configListen)) {
|
|
addresses = configListen;
|
|
process.emitWarning('multiple addresses will be deprecated in the next major, only use one');
|
|
} else if (configListen) {
|
|
addresses = [configListen];
|
|
} else {
|
|
addresses = [DEFAULT_PORT];
|
|
}
|
|
addresses = addresses
|
|
.map(function (addr): string {
|
|
const parsedAddr = parseAddress(addr);
|
|
|
|
if (!parsedAddr) {
|
|
warningUtils.emit(warningUtils.Codes.VERWAR004, addr);
|
|
}
|
|
|
|
return parsedAddr;
|
|
})
|
|
.filter(Boolean);
|
|
|
|
return addresses;
|
|
}
|