UNPKG

cobolget

Version:
172 lines (171 loc) 7.37 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tableView = exports.wordTrim = exports.downloadZip = exports.validateManifest = exports.getPackages = exports.getPackage = exports.indexPackage = exports.graph = exports.MANIFEST_INIT = exports.MANIFEST_SCHEMA = exports.LIBRARY_NAME = exports.COPYBOOK_NAME = exports.LOCK_NAME = exports.MANIFEST_NAME = exports.MODULES_DIR = exports.API_AGENT = void 0; const rc = require("typed-rest-client/HttpClient"); const BASE_URL = 'https://cobolget.com'; exports.API_AGENT = 'cobolget'; exports.MODULES_DIR = 'modules'; exports.MANIFEST_NAME = 'modules.json'; exports.LOCK_NAME = 'modules-lock.json'; exports.COPYBOOK_NAME = 'modules.cpy'; exports.LIBRARY_NAME = 'modules.cbl'; exports.MANIFEST_SCHEMA = BASE_URL + '/schema.json'; exports.MANIFEST_INIT = { "$schema": exports.MANIFEST_SCHEMA, "name": "package-name", "description": "Short description", "modules": [], "dialect": "gnucobol", "licenses": ["MIT"], "authors": ["Author"], "dependencies": {}, "dependencies-debug": {}, "scripts": {} }; const client = new rc.HttpClient(exports.API_AGENT); function graph(name, packages = {}) { return __awaiter(this, void 0, void 0, function* () { if (name in packages) { return packages[name]; } const response = yield client.get(`${BASE_URL}/api/packages/${encodeURIComponent(name)}`); if (response.message.statusCode !== 200) { const error = JSON.parse(yield response.readBody()); throw Error(error.message); } const pkg = JSON.parse(yield response.readBody()); packages[name] = {}; for (let version of pkg.versions) { packages[name][version.tag] = {}; for (let dependency of version.dependencies) { if (!dependency.isDebug) { yield graph(dependency.package, packages); packages[name][version.tag][dependency.package] = dependency.satisfies; } } } return packages; }); } exports.graph = graph; function indexPackage(nameOrUrl, token = null, name = null) { return __awaiter(this, void 0, void 0, function* () { if (token && !name) { throw new Error(`Organization name is required`); } const url = name ? `${BASE_URL}/api/organizations/${encodeURIComponent(name)}/packages/${encodeURIComponent(nameOrUrl)}` : `${BASE_URL}/api/packages/${encodeURIComponent(nameOrUrl)}`; const response = yield client.post(url, token); const body = JSON.parse(yield response.readBody()); if (response.message.statusCode === 200) { return body; } if (response.message.statusCode === 400) { throw new Error(body.message); } throw new Error(`HTTP ${response.message.statusCode}`); }); } exports.indexPackage = indexPackage; function getPackage(name) { return __awaiter(this, void 0, void 0, function* () { const response = yield client.get(`${BASE_URL}/api/packages/${encodeURIComponent(name)}`); const body = JSON.parse(yield response.readBody()); if (response.message.statusCode === 200) { return body; } if (response.message.statusCode === 400) { throw new Error(body.message); } throw new Error(`HTTP ${response.message.statusCode}`); }); } exports.getPackage = getPackage; function getPackages(keyword) { return __awaiter(this, void 0, void 0, function* () { const response = yield client.get(`${BASE_URL}/api/packages?q=${encodeURIComponent(keyword)}`); const body = JSON.parse(yield response.readBody()); if (response.message.statusCode === 200) { return body; } if (response.message.statusCode === 400) { throw new Error(body.message); } throw new Error(`HTTP ${response.message.statusCode}`); }); } exports.getPackages = getPackages; function validateManifest(manifest) { return __awaiter(this, void 0, void 0, function* () { const response = yield client.post(`${BASE_URL}/api/schema/validate`, manifest); const body = JSON.parse(yield response.readBody()); if (response.message.statusCode === 200) { return manifest; } if (response.message.statusCode === 400) { throw new Error(body.message); } throw new Error(`HTTP ${response.message.statusCode}`); }); } exports.validateManifest = validateManifest; function downloadZip(name, version, token = null) { return __awaiter(this, void 0, void 0, function* () { let response = yield client.put(`${BASE_URL}/api/packages/${encodeURIComponent(name)}/${encodeURIComponent(version)}/download`, token); if (response.message.statusCode === 302) { const redirect = JSON.parse(yield response.readBody()); response = yield client.get(redirect.url); } if (response.message.statusCode === 200) { return yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { let chunks = []; response.message.on('data', (chunk) => { chunks.push(chunk); }); response.message.on('end', () => { resolve(Buffer.concat(chunks)); }); response.message.on('error', (error) => { reject(error); }); })); } if (response.message.statusCode === 400) { const body = JSON.parse(yield response.readBody()); throw new Error(body.message); } throw new Error(`HTTP ${response.message.statusCode}`); }); } exports.downloadZip = downloadZip; const columns = process.stdout.columns ? process.stdout.columns : 80; function wordTrim(text, width = columns, indicator = '...') { if (text.length > width) { return text.substr(0, width - indicator.length) + indicator; } return text; } exports.wordTrim = wordTrim; function repeatString(text, count) { let result = ''; for (let i = 0; i < count; i++) { result += text; } return result; } function tableView(table, spacing = 2) { const maxLen = {}; table.forEach(row => row.forEach((cell, i) => maxLen[i] = Math.max(maxLen[i] || 0, cell.length))); return table.map(row => row.map((cell, i) => `${cell}${repeatString(' ', maxLen[i] - cell.length + spacing)}`).join('')); } exports.tableView = tableView;