Socket
Socket
Sign inDemoInstall

28

Package Overview
Dependencies
Maintainers
1
Versions
100
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

28 - npm Package Compare versions

Comparing version 1.9.9 to 2.0.0

66

lib/28.js

@@ -6,4 +6,18 @@ 'use strict';

var Client = syncLib.Client;
var Download = require('download');
var path = require('path');
var _ = require('lodash');
var fs = require('fs');
var URL = require('url');
var Q = require('q');
var $28 = (function(){
var $28 = (function() {
var toPath = function(ns) {
var url = URL.parse(ns);
var segments = url.hostname.split('.').reverse();
segments = segments.concat(url.path.split('/').slice(1));
return segments.join('/') + '.jq';
};
function $28(apiEndpoint){

@@ -33,2 +47,52 @@ this.api = require('28.io-nodejs').$28(apiEndpoint);

$28.prototype.install = function(){
var defered = Q.defer();
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8'));
var root = path.dirname(path.resolve('28.json')) + '/';
_.forEach(manifest.dependencies, function(url, name){
url = URL.parse(url);
url.hash = url.hash.substring(1);
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path;
var href = _.template('<%= protocol %>//<%= hostname %><%= path %>/archive/<%= hash %>.zip')(url);
console.log('Installing ' + name + '...');
var output = root + 'jsoniq_modules/';
var base = output + name + '-' + url.hash;
new Download({ mode: '755', extract: true })
.get(href)
.dest(output)
.run(function(){
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8'));
manifest.exports.forEach(function(ns){
var path = toPath(ns);
fs.createReadStream(base + '/queries/modules/' + path)
.pipe(fs.createWriteStream('queries/modules/' + path)).on('finish', function(){
defered.resolve();
});
});
});
});
return defered.promise;
};
$28.prototype.uninstall = function(){
var defered = Q.defer();
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8'));
var root = path.dirname(path.resolve('28.json')) + '/';
_.forEach(manifest.dependencies, function(url, name){
url = URL.parse(url);
url.hash = url.hash.substring(1);
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path;
console.log('Uninstalling ' + name + '...');
var output = root + 'jsoniq_modules/';
var base = output + name + '-' + url.hash;
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8'));
manifest.exports.forEach(function(ns){
var path = toPath(ns);
fs.unlinkSync('queries/modules/' + path);
});
defered.resolve();
});
return defered.promise;
};
$28.prototype.refreshTokens = function(email, token){

@@ -35,0 +99,0 @@ return this.api.Auth.authenticate({

45

lib/commands/install.js
'use strict';
var fs = require('fs');
var URL = require('url');
var cli = require('commander');
var _ = require('lodash');
var Download = require('download');
var path = require('path');
var Config = require('../config').Config;
var $28 = Config.getAPIClient();
var toPath = function(ns) {
var url = URL.parse(ns);
var segments = url.hostname.split('.').reverse();
segments = segments.concat(url.path.split('/').slice(1));
return segments.join('/') + '.jq';
};
//Install command

@@ -22,26 +12,11 @@ cli

.action(function() {
var manifest = JSON.parse(fs.readFileSync('28.json', 'utf-8'));
var root = path.dirname(path.resolve('28.json')) + '/';
_.forEach(manifest.dependencies, function(url, name){
url = URL.parse(url);
url.hash = url.hash.substring(1);
url.path = _.endsWith(url.path, '.git') ? url.path.substring(0, url.path.length - 4) : url.path;
var href = _.template('<%= protocol %>//<%= hostname %><%= path %>/archive/<%= hash %>.zip')(url);
return $28.install();
});
console.log('Installing ' + name + '...');
var output = root + 'jsoniq_modules/';
var base = output + name + '-' + url.hash;
new Download({ mode: '755', extract: true })
.get(href)
.dest(output)
.run(function(){
var manifest = JSON.parse(fs.readFileSync(base + '/28.json', 'utf-8'));
manifest.exports.forEach(function(ns){
var path = toPath(ns);
console.log(path);
fs.createReadStream(base + '/queries/modules/' + path)
.pipe(fs.createWriteStream('queries/modules/' + path));
});
});
});
//Install command
cli
.command('uninstall')
.description('This command uninstalls a JSONiq package, and any packages that it depends on..')
.action(function() {
return $28.uninstall();
});

@@ -9,3 +9,3 @@ {

"description": "Command line utility to download and upload 28.io queries.",
"version": "1.9.9",
"version": "2.0.0",
"keywords": [

@@ -12,0 +12,0 @@ "jsoniq",

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