Socket
Socket
Sign inDemoInstall

jscrambler

Package Overview
Dependencies
Maintainers
1
Versions
171
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jscrambler - npm Package Compare versions

Comparing version 0.4.0 to 0.5.0

2

jscrambler-client.js

@@ -161,3 +161,3 @@ 'use strict';

var signedData;
var options = {};
var options = {timeout: 0};
if (!params) params = {};

@@ -164,0 +164,0 @@ // If post sign data and set the request as multipart

@@ -10,2 +10,3 @@ /**

var fs = require('fs-extra');
var glob = require('glob');
var JScramblerClient = require('./jscrambler-client');

@@ -40,6 +41,13 @@ var JSZip = require('jszip');

client.get(path, null, function (err, res, body) {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(body);
try {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(body);
} catch (ex) {
deferred.reject(body);
}
});
})
.fail(function () {
deferred.reject.apply(null, arguments);
});

@@ -53,8 +61,13 @@ return deferred.promise;

*/
getInfo: function (client) {
getInfo: function (client, projectId) {
var deferred = Q.defer();
client.get('/code.json', null, function (err, res, body) {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
var path = projectId ? '/code/' + projectId + '.json' : '/code.json';
client.get(path, null, function (err, res, body) {
try {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
} catch (ex) {
deferred.reject(body);
}
});

@@ -70,16 +83,18 @@ return deferred.promise;

this
.getInfo(client)
.getInfo(client, projectId)
.then(function (res) {
for (var i = 0, l = res.length; i < l; ++i) {
// Find projectId inside the response
if (res[i].id === projectId) {
// Did it finish?
if (res[i].finished_at) {
deferred.resolve();
return;
}
// Did it finish?
if (res.finished_at) {
if (res.error_id && res.error_id !== '0') {
deferred.reject(res);
} else {
deferred.resolve();
}
return;
}
// Try again later...
setTimeout(isFinished, 1000);
})
.fail(function () {
deferred.reject.apply(null, arguments);
});

@@ -101,5 +116,9 @@ }.bind(this);

this.cleanZipProject();
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
try {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
} catch (ex) {
deferred.reject(body);
}
}.bind(this));

@@ -117,5 +136,9 @@ return deferred.promise;

client.delete('/code/' + projectId + '.zip', null, function (err, res, body) {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
try {
if (err) deferred.reject(err);
else if (res.statusCode >= 400) deferred.reject(JSON.parse(body));
else deferred.resolve(JSON.parse(body));
} catch (ex) {
deferred.reject(body);
}
});

@@ -125,2 +148,64 @@ return deferred.promise;

/**
* Common operation sequence intended when using the client. First it
* uploads a project, then it polls the server to download and unzip the
* project into a folder.
* @param {String|Object} configPathOrObject
* @returns {Q.promise}
*/
process: function (configPathOrObject, destCallback) {
var config = typeof configPathOrObject === 'string' ?
require(configPathOrObject) : configPathOrObject;
if (!config.keys || !config.keys.accessKey || !config.keys.secretKey) {
throw new Exception('Access key and secret key must be provided in the configuration file.');
}
var accessKey = config.keys.accessKey;
var secretKey = config.keys.secretKey;
var host = config.host;
var port = config.port;
var apiVersion = config.apiVersion;
// Instance a JScrambler client
var client = new this.Client({
accessKey: accessKey,
secretKey: secretKey,
host: host,
port: port,
apiVersion: apiVersion
});
// Check for source files and add them to the parameters
if (!config.filesSrc) {
throw new Exception('Source files must be provided.');
}
// Check if output directory was provided
if (!config.filesDest && !destCallback) {
throw new Exception('Output directory must be provided.');
}
var filesSrc = [];
for (var i = 0, l = config.filesSrc.length; i < l; ++i) {
if (typeof config.filesSrc[i] === 'string') {
filesSrc = filesSrc.concat(glob.sync(config.filesSrc[i]));
} else {
filesSrc.push(config.filesSrc[i]);
}
}
// Prepare object to post
var params = config.params || {};
params.files = filesSrc;
var self = this;
var projectId;
return this
.uploadCode(client, params)
.then(function (res) {
projectId = res.id;
return self.downloadCode(client, res.id);
})
.then(function (res) {
return self.unzipProject(res, config.filesDest || destCallback);
})
.then(function () {
if (config.deleteProject) {
return self.deleteCode(client, projectId);
}
});
},
/**
* It cleans the temporary zip project.

@@ -141,9 +226,13 @@ */

buffer = files[i].contents;
} else {
} else if (!fs.statSync(files[i]).isDirectory()) {
name = files[i];
buffer = fs.readFileSync(files[i]);
} else {
zip.folder(files[i]);
}
zip.file(name, buffer);
if (name) {
zip.file(name, buffer);
}
}
fs.outputFileSync('.tmp.zip', zip.generate(), {encoding: 'base64'});
fs.outputFileSync('.tmp.zip', zip.generate({type: 'nodebuffer'}), {encoding: 'base64'});
files[0] = '.tmp.zip';

@@ -150,0 +239,0 @@ files.length = 1;

{
"name": "jscrambler",
"description": "JScrambler API client.",
"version": "0.4.0",
"version": "0.5.0",
"homepage": "https://github.com/auditmark/node-jscrambler",

@@ -6,0 +6,0 @@ "author": {

Sorry, the diff of this file is not supported yet

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