New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@nosana/sdk

Package Overview
Dependencies
Maintainers
5
Versions
151
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nosana/sdk - npm Package Compare versions

Comparing version 0.1.49 to 0.1.50

3

dist/cli.js

@@ -26,3 +26,3 @@ #!/usr/bin/env node

.addOption(new Option('--raw', 'display raw json job and result'))
.addOption(new Option('--finish, --completed', 'wait for job to be completed and show result'))
.addOption(new Option('--completed', 'wait for job to be completed and show result'))
.action(run);

@@ -34,2 +34,3 @@ program

.addOption(new Option('--raw', 'display raw json job and result'))
.addOption(new Option('--completed', 'wait for job to be completed and show result'))
.action(get);

@@ -36,0 +37,0 @@ async function startCLI() {

@@ -0,3 +1,5 @@

import { Command } from 'commander';
import { Client } from '../';
export declare function get(jobAddress: string, options: {
[key: string]: any;
}): Promise<void>;
}, cmd: Command | undefined, nosana?: Client): Promise<void>;
import { getSDK } from './index.js';
import util from 'util';
import { sleep } from '../utils.js';
/**

@@ -14,42 +15,135 @@ * Shell swag colors for logging

};
export async function get(jobAddress, options) {
const nosana = getSDK();
const job = await nosana.jobs.get(jobAddress);
if (options.raw) {
console.log(util.inspect(job, { showHidden: false, depth: null, colors: true }));
export async function get(jobAddress, options, cmd, nosana) {
if (!nosana) {
nosana = getSDK();
}
else {
console.log(`Job:\t\t${colors.BLUE}https://explorer.nosana.io/jobs/${jobAddress}${nosana.solana.config.network.includes('devnet') ? '?network=devnet' : ''}${colors.RESET}`);
console.log(`JSON flow:\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsJob}${colors.RESET}`);
console.log(`Result:\t\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsResult}${colors.RESET}`);
console.log(`Node:\t\t${colors.BLUE}https://explorer.nosana.io/nodes/${job.node}${nosana.solana.config.network.includes('devnet') ? '?network=devnet' : ''}${colors.RESET}`);
console.log(`Market:\t\t${colors.BLUE}https://explorer.nosana.io/markets/${job.market}${nosana.solana.config.network.includes('devnet') ? '?network=devnet' : ''}${colors.RESET}`);
console.log(`Price:\t\t${colors.CYAN}${job.price} NOS/s${colors.RESET}`);
if (job.timeStart) {
console.log(`Start Time:\t${colors.CYAN}${new Date(job.timeStart * 1000)}${colors.RESET}`);
let job;
while (!job ||
(options.completed && job.state !== 'COMPLETED' && job.state !== 'STOPPED')) {
console.log('retrieving job...');
try {
job = await nosana.jobs.get(jobAddress);
}
if (job.timeEnd) {
console.log(`Duration:\t${colors.CYAN}${job.timeEnd - job.timeStart} s${colors.RESET}`);
catch (e) {
console.error(e);
}
console.log(`Status:\t\t${job.state === 'COMPLETED' ? colors.GREEN : colors.CYAN}${job.state}${colors.RESET}`);
if (job) {
if (!options.completed ||
job.state === 'COMPLETED' ||
job.state === 'STOPPED') {
if (options.raw) {
console.log(util.inspect(job, { showHidden: false, depth: null, colors: true }));
}
else {
console.log(`Job:\t\t${colors.BLUE}https://explorer.nosana.io/jobs/${jobAddress}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`JSON flow:\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsJob}${colors.RESET}`);
console.log(`Result:\t\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsResult}${colors.RESET}`);
console.log(`Node:\t\t${colors.BLUE}https://explorer.nosana.io/nodes/${job.node}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`Market:\t\t${colors.BLUE}https://explorer.nosana.io/markets/${job.market}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`Price:\t\t${colors.CYAN}${job.price} NOS/s${colors.RESET}`);
if (job.timeStart) {
console.log(`Start Time:\t${colors.CYAN}${new Date(job.timeStart * 1000)}${colors.RESET}`);
}
if (job.timeEnd) {
console.log(`Duration:\t${colors.CYAN}${job.timeEnd - job.timeStart} s${colors.RESET}`);
}
console.log(`Status:\t\t${job.state === 'COMPLETED' ? colors.GREEN : colors.CYAN}${job.state}${colors.RESET}`);
}
}
else {
console.log(`${job.state === 'COMPLETED' ? colors.GREEN : colors.CYAN}${job.state}${colors.RESET}`);
await sleep(5);
}
}
else {
await sleep(1);
}
}
if (job.state === 'COMPLETED') {
const result = await nosana.ipfs.retrieve(job.ipfsResult);
const ipfsResult = await nosana.ipfs.retrieve(job.ipfsResult);
if (options.raw) {
console.log(util.inspect(result, { showHidden: false, depth: null, colors: true }));
console.log(util.inspect(ipfsResult, {
showHidden: false,
depth: null,
colors: true,
}));
}
else {
if (result.results) {
if (result.results.run) {
console.log('Logs:');
const logs = result.results.run[1][1].log;
let logString = '';
for (let i = 0; i < logs.length; i++) {
logString += logs[i][1];
console.log('Logs:');
const result = ipfsResult?.results;
if (result) {
let commands = [];
if (result['run-from-cli']) {
commands.push('run-from-cli');
}
else {
const jsonFlow = await nosana.ipfs.retrieve(job.ipfsJob);
if (jsonFlow.ops) {
commands = jsonFlow.ops.map((j) => j.name || j.id);
const type = jsonFlow.state && jsonFlow.state['nosana/job-type'];
switch (type) {
case 'Github':
case 'github-flow':
if (!commands.includes('checkout'))
commands.unshift('checkout');
break;
case 'gitlab':
break;
}
}
console.log(logString);
}
for (let i = 0; i < commands.length; i++) {
const command = commands[i];
if (result[command] && !command.endsWith('-volume')) {
console.log(`${colors.GREEN}- Executed step ${command}${colors.RESET}`);
// const commandStatus = result[command][0];
const steps = result[command][1];
if (Array.isArray(steps)) {
for (let j = 0; j < steps.length; j++) {
const step = steps[j];
if (step.cmd) {
if (step.cmd.cmd) {
if (!step.cmd.cmd.startsWith('sh -c')) {
console.log(`${colors.CYAN}$ ${step.cmd.cmd}${colors.RESET}`);
}
}
else {
console.log(`${colors.CYAN}$ ${step.cmd}${colors.RESET}`);
}
}
if (step.log && Array.isArray(step.log)) {
let logString = '';
for (let k = 0; k < step.log.length; k++) {
const log = step.log[k];
const color = log[0] === 2 && step.status ? colors.RED : '';
logString += `${color}${log[1]}${colors.RESET}`;
}
console.log(logString);
}
if (step.error) {
console.log(`${colors.RED}${step.error}${colors.RESET}`);
}
if (step.status) {
console.log(`${colors.RED}Exited with code ${step.status}${colors.RESET}`);
}
}
}
else {
console.log('TODO: print nicely');
console.log(steps);
}
}
}
}
else {
console.log(`${colors.RED}Cannot log results${colors.RESET}`);
}
}
}
}

@@ -1,4 +0,4 @@

import { sleep } from '../utils.js';
import { colors } from './terminal.js';
import { getSDK } from './index.js';
import { get } from './get.js';
import util from 'util';

@@ -48,3 +48,3 @@ import fs from 'node:fs';

op: 'container/run',
id: 'run',
id: 'run-from-cli',
args: {

@@ -67,72 +67,6 @@ cmds: runThroughShellFile([command.join(' ')]),

console.log('job posted!', response);
let job;
while (!job ||
(options.finish && job.state !== 'COMPLETED' && job.state !== 'STOPPED')) {
console.log('retrieving job..');
try {
job = await nosana.jobs.get(response.job);
}
catch (e) {
console.error(e);
}
if (job) {
if (!options.finish ||
job.state === 'COMPLETED' ||
job.state === 'STOPPED') {
if (options.raw) {
console.log(util.inspect(job, { showHidden: false, depth: null, colors: true }));
}
else {
console.log(`Job:\t\t${colors.BLUE}https://explorer.nosana.io/jobs/${response.job}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`JSON flow:\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsJob}${colors.RESET}`);
console.log(`Result:\t\t${colors.BLUE}${nosana.ipfs.config.gateway}${job.ipfsResult}${colors.RESET}`);
console.log(`Node:\t\t${colors.BLUE}https://explorer.nosana.io/nodes/${job.node}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`Market:\t\t${colors.BLUE}https://explorer.nosana.io/markets/${job.market}${nosana.solana.config.network.includes('devnet')
? '?network=devnet'
: ''}${colors.RESET}`);
console.log(`Price:\t\t${colors.CYAN}${job.price} NOS/s${colors.RESET}`);
if (job.timeStart) {
console.log(`Start Time:\t${colors.CYAN}${new Date(job.timeStart * 1000)}${colors.RESET}`);
}
if (job.timeEnd) {
console.log(`Duration:\t${colors.CYAN}${job.timeEnd - job.timeStart} s${colors.RESET}`);
}
console.log(`Status:\t\t${job.state === 'COMPLETED' ? colors.GREEN : colors.CYAN}${job.state}${colors.RESET}`);
}
}
else {
console.log(`${job.state === 'COMPLETED' ? colors.GREEN : colors.CYAN}${job.state}${colors.RESET}`);
await sleep(5);
}
}
else {
await sleep(1);
}
}
if (options.finish) {
const result = await nosana.ipfs.retrieve(job.ipfsResult);
if (options.raw) {
console.log(util.inspect(result, { showHidden: false, depth: null, colors: true }));
}
else {
if (result.results) {
if (result.results.run) {
console.log('Logs:');
const logs = result.results.run[1][1].log;
let logString = '';
for (let i = 0; i < logs.length; i++) {
logString += logs[i][1];
}
console.log(logString);
}
}
}
}
else {
await get(response.job, options, undefined, nosana);
if (!options.completed) {
console.log(`\nrun ${colors.CYAN}\`nosana get ${response.job}\`${colors.RESET} to retrieve job and result`);
}
}
{
"name": "@nosana/sdk",
"version": "0.1.49",
"version": "0.1.50",
"description": "",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc