export function getPkgsObj(jsonString) { if (!jsonString) { return null; } try { const str = escapeSpecialChars(jsonString); return JSON.parse(str); } catch (err) { console.log('err', err); return null; } } export function escapeSpecialChars(jsonString) { try { return jsonString .replace(/\\n/g, '') .replace(/\\r/g, '') .replace(/\\t/g, '') .replace(/\\f/g, ''); } catch (err) { console.log('err', err); return jsonString; } } export function getPkgs(packagejson) { if (!packagejson || (!packagejson.dependencies && !packagejson.devDependencies)) { return null; } let deps: any = []; let devs: any = []; if (packagejson && packagejson.dependencies) { deps = Object.keys(packagejson.dependencies) || []; } if (packagejson && packagejson.devDependencies) { devs = Object.keys(packagejson.devDependencies) || []; } let pkgs = deps.concat(devs); pkgs.filter(function (a, index) { return pkgs.indexOf(a) === index; }); pkgs = pkgs.map((i) => i.replace(/"/g, '')); return pkgs; } export function getNpmPkgs(packagejson) { if (!packagejson || (!packagejson.dependencies && !packagejson.devDependencies)) { return null; } let deps: any = []; let devs: any = []; if (packagejson && packagejson.dependencies) { deps = (Object.keys(packagejson.dependencies) || []).map(key => { return `${key}/${packagejson.dependencies[key]}` }) } if (packagejson && packagejson.devDependencies) { devs = (Object.keys(packagejson.devDependencies) || []).map(key => { return `${key}/${packagejson.devDependencies[key]}` }) } return [...deps, ...devs] } // export async function getConsumeChannel(ctx) { // // aabbcc console.log('dependent.service getConsumeChannel'); // if (!ctx.consumeChannel) { // ctx.consumeChannel = await ctx.rabbitConnection.createChannel(); // } // return ctx.consumeChannel; // } // export async function publishQueue({ ctx, queueName, }, message) { // // // aabbcc console.log('publishDependent', JSON.stringify(message)); // try { // const channel = await ctx.getPublishChannel(); // await channel.assertQueue(queueName); // const jsonMessage = JSON.stringify(message); // channel.sendToQueue(queueName, Buffer.from(jsonMessage, "utf8"), { // persistent: true, // ...message.options, // }); // } catch (e) { // // aabbcc console.log(`publishDependent error: ${e}`); // } // } // let Lock = {}; // export function once(key) { // if (Lock[key]) { return false; } // Lock[key] = (Lock[key] || 0) + 1; // return true; // } // export async function initConsumeQueue({ ctx, prefetch, queueName, handler, }) { // if (!once(queueName)) return; // try { // const channel = await getConsumeChannel(ctx); // await channel.prefetch(prefetch); // await channel.assertQueue(queueName); // await channel.consume(queueName, async (message) => { // const data = JSON.parse(message.content.toString("utf8")); // try { // await handler({ ...data, }); // channel.ack(message); // } catch (error) { // channel.ack(message); // } // }); // } catch (e) { // // aabbcc console.log(`consume error: ${e}`); // } // } // export async function parseGithubUrl(q) { // let owner, subname, name, depUrl; // if (q.includes('network/dependents')) { // const repoReg = /https?:\/\/github\.com\/(.*?)\/(.*?)\/.*/; // const match = repoReg.exec(q); // if (!match) { return 0; } // owner = match[1]; // subname = match[2]; // name = `${owner}/${subname}`; // depUrl = q; // } else { // const repoReg = /https?:\/\/github\.com\/(.*?)\/(.*)/; // const match = repoReg.exec(q); // if (match) { // owner = match[1]; // subname = match[2]; // name = `${owner}/${subname}`; // depUrl = this.getDepUrlByName(name); // } else { // name = q; // } // } // return { // owner, // subname, // name, // depUrl, // }; // }