typings-core
Version:
The logic of Typings
141 lines • 4.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = require("path");
var url_1 = require("url");
var isAbsolute = require("is-absolute");
var config_1 = require("./config");
exports.EOL = '\n';
function isHttp(url) {
return /^https?\:\/\//i.test(url);
}
exports.isHttp = isHttp;
function isDefinition(path) {
if (isHttp(path)) {
return isDefinition(url_1.parse(path).pathname);
}
return /\.d\.ts$/.test(path);
}
exports.isDefinition = isDefinition;
function isModuleName(value) {
return !isHttp(value) && !isAbsolute(value) && value.charAt(0) !== '.';
}
exports.isModuleName = isModuleName;
function normalizeSlashes(path) {
return path.replace(/\\/g, '/');
}
exports.normalizeSlashes = normalizeSlashes;
function joinUrl(from, to) {
return from.replace(/\/$/, '') + "/" + to.replace(/^\//, '');
}
exports.joinUrl = joinUrl;
function resolveFrom(from, to) {
if (isHttp(to)) {
return to;
}
if (isHttp(from)) {
var url = url_1.parse(from);
url.pathname = url_1.resolve(url.pathname, to);
return url_1.format(url);
}
return path_1.resolve(path_1.dirname(from), to);
}
exports.resolveFrom = resolveFrom;
function relativeTo(from, to) {
if (isHttp(from)) {
var fromUrl = url_1.parse(from);
if (isHttp(to)) {
var toUrl = url_1.parse(to);
if (toUrl.auth !== fromUrl.auth || toUrl.host !== fromUrl.host) {
return to;
}
var relativeUrl = relativeTo(fromUrl.pathname, toUrl.pathname);
if (toUrl.search) {
relativeUrl += toUrl.search;
}
if (toUrl.hash) {
relativeUrl += toUrl.hash;
}
return relativeUrl;
}
return relativeTo(fromUrl.pathname, to);
}
return path_1.relative(path_1.dirname(from), to);
}
exports.relativeTo = relativeTo;
function appendToPath(path, suffix) {
if (isHttp(path)) {
var url = url_1.parse(path);
url.pathname = appendToPath(url.pathname, suffix);
return url_1.format(url);
}
return path + path_1.normalize(suffix);
}
exports.appendToPath = appendToPath;
function pathFromDefinition(path) {
if (isHttp(path)) {
return pathFromDefinition(url_1.parse(path).pathname);
}
return path.replace(/\.d\.ts$/, '');
}
exports.pathFromDefinition = pathFromDefinition;
function normalizeToDefinition(path) {
if (isDefinition(path)) {
return path;
}
if (isHttp(path)) {
var url = url_1.parse(path);
url.pathname = normalizeToDefinition(path);
return url_1.format(url);
}
var ext = path_1.extname(path);
return appendToPath(ext ? path.slice(0, -ext.length) : path, '.d.ts');
}
exports.normalizeToDefinition = normalizeToDefinition;
function getDefinitionPath(path) {
return path_1.join(path, 'index.d.ts');
}
exports.getDefinitionPath = getDefinitionPath;
function getDependencyPath(options) {
var type = options.global ? 'globals' : 'modules';
var directory = path_1.join(options.path, type, options.name);
var definition = getDefinitionPath(directory);
var config = path_1.join(directory, 'typings.json');
return { directory: directory, definition: definition, config: config };
}
exports.getDependencyPath = getDependencyPath;
function getInfoFromDependencyLocation(location, bundle) {
var parts = relativeTo(bundle, location).split(path_1.sep);
return {
location: location,
global: parts[0] === 'globals',
name: parts.slice(1, -1).join('/')
};
}
exports.getInfoFromDependencyLocation = getInfoFromDependencyLocation;
function detectEOL(contents) {
var match = contents.match(/\r\n|\r|\n/);
return match ? match[0] : undefined;
}
exports.detectEOL = detectEOL;
function normalizeEOL(contents, eol) {
return contents.replace(/\r\n|\r|\n/g, eol);
}
exports.normalizeEOL = normalizeEOL;
function normalizeResolutions(resolutions, options) {
var resolutionMap = {};
if (typeof resolutions === 'object') {
for (var _i = 0, _a = Object.keys(resolutions); _i < _a.length; _i++) {
var type = _a[_i];
resolutionMap[type] = path_1.join(options.cwd, resolutions[type]);
}
}
else if (typeof resolutions === 'string') {
resolutionMap.main = path_1.join(options.cwd, resolutions);
}
else {
resolutionMap.main = path_1.join(options.cwd, config_1.DEFAULT_TYPINGS_DIR);
}
return resolutionMap;
}
exports.normalizeResolutions = normalizeResolutions;
//# sourceMappingURL=path.js.map