Socket
Socket
Sign inDemoInstall

nordnet-next-api

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nordnet-next-api - npm Package Compare versions

Comparing version 2.3.1 to 2.3.2

,babelrc

21

lib/__tests__/expectations/get-accounts.js

@@ -1,16 +0,6 @@

'use strict';
import api from '../../index';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _index = require('../../index');
var _index2 = _interopRequireDefault(_index);
exports['default'] = {
export default {
conditions: {
request: [_index2['default'].get, ['/api/2/accounts']],
request: [api.get, ['/api/2/accounts']],
response: ['GET', '/api/2/accounts', [401, { 'Content-Type': 'application/json; charset=UTF-8' }, JSON.stringify({ code: 'NEXT_INVALID_SESSION' })]]

@@ -20,3 +10,3 @@ },

url: '/api/2/accounts',
headers: { 'accept': 'application/json' },
headers: { accept: 'application/json', ntag: 'NO_NTAG_RECEIVED_YET' },
method: 'get',

@@ -29,3 +19,2 @@ credentials: true,

}
};
module.exports = exports['default'];
};

@@ -1,24 +0,14 @@

'use strict';
import api from '../../index';
Object.defineProperty(exports, '__esModule', {
value: true
});
const params = { instrument_id: 123, positions: [456, 789], accno: 987 };
const headers = { 'Accept-Language': 'sv' };
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _index = require('../../index');
var _index2 = _interopRequireDefault(_index);
var params = { instrument_id: 123, positions: [456, 789], accno: 987 };
var headers = { 'Accept-Language': 'sv' };
exports['default'] = {
export default {
conditions: {
request: [_index2['default'].get, ['/api/2/instruments/{instrument_id}?positions={positions}', params, headers]],
request: [api.get, ['/api/2/instruments/{instrument_id}?positions={positions}', params, headers]],
response: ['GET', '/api/2/instruments/123?positions=456%2C789&accno=987', [200, { 'Content-Type': 'application/json; charset=UTF-8' }, JSON.stringify({ instrument_id: 123 })]]
},
expected: {
url: '/api/2/instruments/123?positions=' + encodeURIComponent('456,789') + '&accno=987',
headers: { 'accept-language': 'sv', 'accept': 'application/json' },
url: `/api/2/instruments/123?positions=${ encodeURIComponent('456,789') }&accno=987`,
headers: { 'accept-language': 'sv', accept: 'application/json', ntag: 'NO_NTAG_RECEIVED_YET' },
method: 'get',

@@ -31,3 +21,2 @@ credentials: true,

}
};
module.exports = exports['default'];
};

@@ -1,36 +0,13 @@

'use strict';
import getInstrument from './get-instrument';
import getAccounts from './get-accounts';
import postUserSettings from './post-user-settings';
import postUserLists from './post-user-lists';
import ping from './ping';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _getInstrument = require('./get-instrument');
var _getInstrument2 = _interopRequireDefault(_getInstrument);
var _getAccounts = require('./get-accounts');
var _getAccounts2 = _interopRequireDefault(_getAccounts);
var _postUserSettings = require('./post-user-settings');
var _postUserSettings2 = _interopRequireDefault(_postUserSettings);
var _postUserLists = require('./post-user-lists');
var _postUserLists2 = _interopRequireDefault(_postUserLists);
var _ping = require('./ping');
var _ping2 = _interopRequireDefault(_ping);
exports['default'] = {
getInstrument: _getInstrument2['default'],
getAccounts: _getAccounts2['default'],
postUserSettings: _postUserSettings2['default'],
postUserLists: _postUserLists2['default'],
ping: _ping2['default']
};
module.exports = exports['default'];
export default {
getInstrument,
getAccounts,
postUserSettings,
postUserLists,
ping
};

@@ -1,16 +0,6 @@

'use strict';
import api from '../../index';
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _index = require('../../index');
var _index2 = _interopRequireDefault(_index);
exports['default'] = {
export default {
conditions: {
request: [_index2['default'].get, ['/api/2/ping']],
request: [api.get, ['/api/2/ping']],
response: ['GET', '/api/2/ping', [200, {}, 'pong']]

@@ -24,3 +14,2 @@ },

}
};
module.exports = exports['default'];
};

@@ -1,20 +0,10 @@

'use strict';
import api from '../../index';
Object.defineProperty(exports, '__esModule', {
value: true
});
const name = 'abc';
const params = { name };
const response = { id: 1, name };
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _index = require('../../index');
var _index2 = _interopRequireDefault(_index);
var name = 'abc';
var params = { name: name };
var response = { id: 1, name: name };
exports['default'] = {
export default {
conditions: {
request: [_index2['default'].post, ['/api/2/user/lists', params]],
request: [api.post, ['/api/2/user/lists', params]],
response: ['POST', '/api/2/user/lists', [201, { 'Content-type': 'application/json; charset=UTF-8' }, JSON.stringify(response)]]

@@ -27,3 +17,3 @@ },

credentials: true,
body: 'name=' + name,
body: `name=${ name }`,
status: 201,

@@ -33,3 +23,2 @@ data: response,

}
};
module.exports = exports['default'];
};

@@ -1,19 +0,9 @@

'use strict';
import api from '../../index';
Object.defineProperty(exports, '__esModule', {
value: true
});
const params = { key: 1, settings: { widgets: [{ id: 1, name: 'winners/losers' }] } };
const headers = { 'content-type': 'application/json' };
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _index = require('../../index');
var _index2 = _interopRequireDefault(_index);
var params = { key: 1, settings: { widgets: [{ id: 1, name: 'winners/losers' }] } };
var headers = { 'content-type': 'application/json' };
exports['default'] = {
export default {
conditions: {
request: [_index2['default'].post, ['/api/2/user/settings/{key}', params, headers]],
request: [api.post, ['/api/2/user/settings/{key}', params, headers]],
response: ['POST', '/api/2/user/settings/1', [201, { 'Content-type': 'application/json; charset=UTF-8' }, JSON.stringify(params)]]

@@ -31,3 +21,2 @@ },

}
};
module.exports = exports['default'];
};

@@ -1,48 +0,19 @@

'use strict';
import { initSandBox, respondWith, execute, expectations } from 'test-helper';
import tests from './expectations';
import api from '../index';
import { expect } from 'chai';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _testHelper = require('test-helper');
var _expectations = require('./expectations');
var _expectations2 = _interopRequireDefault(_expectations);
var _index = require('../index');
var _index2 = _interopRequireDefault(_index);
var _chai = require('chai');
function init(done, _ref) {
var _this = this;
var request = _ref.request;
var response = _ref.response;
_testHelper.initSandBox.apply(this);
_testHelper.respondWith.call(this, response);
_testHelper.execute.apply(null, request).then(function (res) {
return _this.response = res;
}, function (res) {
return _this.response = res;
}).then(function () {
return done();
})['catch'](function () {
return done();
});
function init(done, { request, response }) {
initSandBox.apply(this);
respondWith.call(this, response);
execute.apply(null, request).then(res => this.response = res, res => this.response = res).then(() => done()).catch(() => done());
}
function verifyExpectations(expected) {
Object.keys(expected).forEach(function (key) {
return it('should have expected ' + key, function () {
_testHelper.expectations[key].call(this, expected[key]);
});
});
Object.keys(expected).forEach(key => it(`should have expected ${ key }`, function () {
expectations[key].call(this, expected[key]);
}));
}
function test(_ref2) {
var conditions = _ref2.conditions;
var expected = _ref2.expected;
function test({ conditions, expected }) {
return function () {

@@ -63,5 +34,3 @@ beforeEach(function (done) {

return function () {
conditions.forEach(function (condition) {
return Object.keys(_index2['default']).forEach(testMethodThrows(condition));
});
conditions.forEach(condition => Object.keys(api).forEach(testMethodThrows(condition)));
};

@@ -71,9 +40,3 @@ }

function testMethodThrows(condition) {
return function (method) {
return it('should throw an error with ' + method + ' and url \'' + condition + '\'', function () {
return (0, _chai.expect)(function () {
return _index2['default'][method](condition);
}).to['throw'](Error);
});
};
return method => it(`should throw an error with ${ method } and url '${ condition }'`, () => expect(() => api[method](condition)).to.throw(Error));
}

@@ -83,7 +46,7 @@

describe('when url is invalid', testThrows([undefined, '', '/api/2/accounts/{accno}']));
describe('when request succeeded', test(_expectations2['default'].getInstrument));
describe('when request failed', test(_expectations2['default'].getAccounts));
describe('when response is not JSON', test(_expectations2['default'].ping));
describe('when making POST request', test(_expectations2['default'].postUserLists));
describe('when making POST request with JSON payload', test(_expectations2['default'].postUserSettings));
describe('when request succeeded', test(tests.getInstrument));
describe('when request failed', test(tests.getAccounts));
describe('when response is not JSON', test(tests.ping));
describe('when making POST request', test(tests.postUserLists));
describe('when making POST request with JSON payload', test(tests.postUserSettings));
});

@@ -1,49 +0,30 @@

'use strict';
import 'babel-polyfill';
import es6Promise from 'es6-promise';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.get = get;
exports.post = post;
exports.put = put;
exports.del = del;
es6Promise.polyfill();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
import 'isomorphic-fetch';
require('babel-core/polyfill');
const HTTP_NO_CONTENT = 204;
const HTTP_BAD_REQUEST = 400;
var _es6Promise = require('es6-promise');
var _es6Promise2 = _interopRequireDefault(_es6Promise);
require('isomorphic-fetch');
_es6Promise2['default'].polyfill();
var HTTP_NO_CONTENT = 204;
var HTTP_BAD_REQUEST = 400;
var HTTP_OK = 200;
var defaultHeaders = {
const defaultHeaders = {
accept: 'application/json'
};
var postDefaultHeaders = Object.assign({
const postDefaultHeaders = Object.assign({
'content-type': 'application/x-www-form-urlencoded'
}, defaultHeaders);
var state = {
const state = {
nTag: 'NO_NTAG_RECEIVED_YET'
};
var credentials = 'include';
const credentials = 'include';
function get(url) {
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var headers = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var options = {
url: url,
params: params,
headers: headers,
export function get(url, params = {}, headers = {}) {
const options = {
url,
params,
headers,
method: 'get'

@@ -55,10 +36,7 @@ };

function post(url) {
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var headers = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var options = {
url: url,
params: params,
headers: headers,
export function post(url, params = {}, headers = {}) {
const options = {
url,
params,
headers,
method: 'post'

@@ -70,10 +48,7 @@ };

function put(url) {
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var headers = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var options = {
url: url,
params: params,
headers: headers,
export function put(url, params = {}, headers = {}) {
const options = {
url,
params,
headers,
method: 'put'

@@ -85,10 +60,7 @@ };

function del(url) {
var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var headers = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var options = {
url: url,
params: params,
headers: headers,
export function del(url, params = {}, headers = {}) {
const options = {
url,
params,
headers,
method: 'delete'

@@ -100,7 +72,7 @@ };

exports['default'] = {
get: get,
post: post,
put: put,
del: del
export default {
get,
post,
put,
del
};

@@ -111,15 +83,15 @@

var path = buildPath(options.url, options.params);
var params = omit(options.params, getPathParams(options.url));
const path = buildPath(options.url, options.params);
const params = omit(options.params, getPathParams(options.url));
var query = hasQuery(options.method) ? buildParams(params) : undefined;
var headers = buildHeaders(options.method, options.headers);
var body = buildBody(options.method, params, headers);
const query = hasQuery(options.method) ? buildParams(params) : undefined;
const headers = buildHeaders(options.method, options.headers);
const body = buildBody(options.method, params, headers);
var fetchUrl = buildUrl(path, query);
const fetchUrl = buildUrl(path, query);
var fetchParams = {
headers: headers,
credentials: credentials,
body: body,
const fetchParams = {
headers,
credentials,
body,
method: options.method

@@ -140,5 +112,3 @@ };

function toErrorResponse(response) {
return parseContent(response).then(function (response) {
return Promise.reject(response);
});
return parseContent(response).then(res => Promise.reject(res));
}

@@ -153,3 +123,3 @@

if (response.status === HTTP_NO_CONTENT) {
return { response: response, status: response.status };
return { response, status: response.status };
}

@@ -161,8 +131,6 @@

function parseContent(response) {
var contentType = response.headers.get('Content-type');
var method = isJSON(contentType) ? 'json' : 'text';
const contentType = response.headers.get('Content-type');
const method = isJSON(contentType) ? 'json' : 'text';
return response[method]().then(function (data) {
return { response: response, data: data, status: response.status };
});
return response[method]().then(data => ({ response, data, status: response.status }));
}

@@ -181,15 +149,11 @@

function getPathParams(url) {
var keys = url.match(/{([\s\S]+?)}/g) || [];
return keys.map(function (key) {
return key.replace(/({|})/g, '');
});
const keys = url.match(/{([\s\S]+?)}/g) || [];
return keys.map(key => key.replace(/({|})/g, ''));
}
function buildUrl(path) {
var query = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];
function buildUrl(path, query = '') {
const queryParams = query.length ? query.join('&') : '';
const pathContainsQuery = path.indexOf('?') !== -1;
var queryParams = query.length ? query.join('&') : '';
var pathContainsQuery = path.indexOf('?') !== -1;
var delimiter = '';
let delimiter = '';
if (pathContainsQuery && queryParams) {

@@ -201,3 +165,3 @@ delimiter = '&';

return '' + path + delimiter + queryParams;
return `${ path }${ delimiter }${ queryParams }`;
}

@@ -212,3 +176,3 @@

if (params[key] === undefined) {
throw new Error('unknown parameter ' + key);
throw new Error(`unknown parameter ${ key }`);
}

@@ -220,23 +184,15 @@

function buildParams() {
var params = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
return Object.keys(params).map(function (key) {
return encodeURIComponent(key) + '=' + uriEncode(params[key]);
});
function buildParams(params = {}) {
return Object.keys(params).map(key => encodeURIComponent(key) + '=' + uriEncode(params[key]));
}
function buildHeaders(method, headers) {
var sanitisedHeaders = convertKeysToLowerCase(headers);
return Object.assign({ ntag: state.nTag }, getDefaultMethodHeaders(method), sanitizeHeaders(headers));
}
if (method === 'post' || method === 'put') {
return Object.assign({ ntag: state.nTag }, postDefaultHeaders, sanitisedHeaders);
} else if (method === 'delete') {
return Object.assign({ ntag: state.nTag }, defaultHeaders, sanitisedHeaders);
}
return Object.assign({}, sanitisedHeaders, defaultHeaders);
function getDefaultMethodHeaders(method) {
return method === 'post' || method === 'put' ? postDefaultHeaders : defaultHeaders;
}
function convertKeysToLowerCase(obj) {
function sanitizeHeaders(obj) {
return Object.keys(obj).reduce(keyToLowerCase(obj), {});

@@ -246,3 +202,3 @@ }

function keyToLowerCase(obj) {
return function (accumulator, key) {
return (accumulator, key) => {
accumulator[key.toLowerCase()] = obj[key];

@@ -255,3 +211,3 @@ return accumulator;

if (!hasBody(method)) {
return;
return undefined;
}

@@ -263,3 +219,3 @@

function isJsonContentType(headers) {
var contentType = Object.keys(headers).find(contains('content-type'));
const contentType = Object.keys(headers).find(contains('content-type'));
return isJSON(headers[contentType]);

@@ -269,3 +225,3 @@ }

function uriEncode(value) {
var encoded = undefined;
let encoded;
if (Array.isArray(value)) {

@@ -301,3 +257,3 @@ encoded = value.join(',');

function omitKey(source, props) {
return function (accumulator, key) {
return (accumulator, key) => {
if (props.indexOf(key) === -1) {

@@ -304,0 +260,0 @@ accumulator[key] = source[key];

{
"name": "nordnet-next-api",
"version": "2.3.1",
"version": "2.3.2",
"description": "Nordnet nExt API Javascript client",

@@ -10,3 +10,3 @@ "main": "lib/index.js",

"build:umd": "webpack --config ./webpack/webpack.config src/index.js dist/nordnet-next-api.js && NODE_ENV=production webpack --config ./webpack/webpack.config src/index.js dist/nordnet-next-api.min.js",
"eslint": "eslint --ext=.jsx --ext=.js -c .eslintrc src || echo \"Linting failed...\"",
"eslint": "eslint src || echo \"Linting failed...\"",
"lint": "npm run eslint",

@@ -34,11 +34,14 @@ "pretest": "rimraf reports/test-results.xml reports/coverage",

"devDependencies": {
"babel": "^5.5.8",
"babel-core": "^5.6.18",
"babel-eslint": "^3.1.23",
"babel-loader": "^5.1.4",
"babel-cli": "^6.6.5",
"babel-core": "6.4.0",
"babel-eslint": "4.1.6",
"babel-loader": "6.2.1",
"babel-plugin-add-module-exports": "0.1.2",
"babel-polyfill": "6.3.14",
"babel-preset-es2015": "6.3.13",
"chai": "^3.0.0",
"chai-as-promised": "^5.1.0",
"es5-shim": "^4.1.7",
"eslint": "^0.24.0",
"eslint-config-airbnb": "0.0.6",
"eslint": "1.10.3",
"eslint-config-airbnb": "3.1.0",
"husky": "^0.8.1",

@@ -45,0 +48,0 @@ "isparta": "^3.0.3",

@@ -17,3 +17,3 @@ import api from '../../index';

url: '/api/2/accounts',
headers: { 'accept': 'application/json' },
headers: { accept: 'application/json', ntag: 'NO_NTAG_RECEIVED_YET' },
method: 'get',

@@ -20,0 +20,0 @@ credentials: true,

@@ -20,3 +20,3 @@ import api from '../../index';

url: `/api/2/instruments/123?positions=${encodeURIComponent('456,789')}&accno=987`,
headers: { 'accept-language': 'sv', 'accept': 'application/json' },
headers: { 'accept-language': 'sv', accept: 'application/json', ntag: 'NO_NTAG_RECEIVED_YET' },
method: 'get',

@@ -23,0 +23,0 @@ credentials: true,

@@ -5,3 +5,3 @@ import api from '../../index';

const params = { name };
const response = { id: 1, name }
const response = { id: 1, name };

@@ -8,0 +8,0 @@ export default {

import api from '../../index';
const params = { key: 1, settings: { widgets: [{ id: 1, name: 'winners/losers' }] }};
const params = { key: 1, settings: { widgets: [{ id: 1, name: 'winners/losers' }] } };
const headers = { 'content-type': 'application/json' };

@@ -5,0 +5,0 @@

@@ -17,3 +17,3 @@ import { initSandBox, respondWith, execute, expectations } from 'test-helper';

Object.keys(expected)
.forEach(key => it(`should have expected ${key}`, function() {
.forEach(key => it(`should have expected ${key}`, function () {
expectations[key].call(this, expected[key]);

@@ -24,8 +24,8 @@ }));

function test({ conditions, expected }) {
return function() {
beforeEach(function(done) {
return function () {
beforeEach(function (done) {
init.call(this, done, conditions);
});
afterEach(function() {
afterEach(function () {
this.sandbox.restore();

@@ -39,3 +39,3 @@ });

function testThrows(conditions) {
return function() {
return function () {
conditions.forEach(condition => Object.keys(api).forEach(testMethodThrows(condition)));

@@ -50,3 +50,3 @@ };

describe('api', function() {
describe('api', function () {
describe('when url is invalid', testThrows([undefined, '', '/api/2/accounts/{accno}']));

@@ -53,0 +53,0 @@ describe('when request succeeded', test(tests.getInstrument));

@@ -1,2 +0,2 @@

import 'babel-core/polyfill';
import 'babel-polyfill';
import es6Promise from 'es6-promise';

@@ -10,3 +10,2 @@

const HTTP_BAD_REQUEST = 400;
const HTTP_OK = 200;

@@ -112,3 +111,3 @@ const defaultHeaders = {

function toErrorResponse(response) {
return parseContent(response).then(response => Promise.reject(response));
return parseContent(response).then(res => Promise.reject(res));
}

@@ -184,14 +183,10 @@

function buildHeaders(method, headers) {
const sanitisedHeaders = convertKeysToLowerCase(headers);
return Object.assign({ ntag: state.nTag }, getDefaultMethodHeaders(method), sanitizeHeaders(headers));
}
if (method === 'post' || method === 'put') {
return Object.assign({ ntag: state.nTag }, postDefaultHeaders, sanitisedHeaders);
} else if (method === 'delete') {
return Object.assign({ ntag: state.nTag }, defaultHeaders, sanitisedHeaders);
}
return Object.assign({}, sanitisedHeaders, defaultHeaders);
function getDefaultMethodHeaders(method) {
return method === 'post' || method === 'put' ? postDefaultHeaders : defaultHeaders;
}
function convertKeysToLowerCase(obj) {
function sanitizeHeaders(obj) {
return Object.keys(obj).reduce(keyToLowerCase(obj), {});

@@ -204,3 +199,3 @@ }

return accumulator;
}
};
}

@@ -210,3 +205,3 @@

if (!hasBody(method)) {
return;
return undefined;
}

@@ -244,3 +239,3 @@

function contains(string) {
return function(value) {
return function (value) {
return !!value && value.toLowerCase().indexOf(string) !== -1;

@@ -247,0 +242,0 @@ };

@@ -37,3 +37,7 @@ const webpack = require('webpack');

loaders: [
{ test: /\.js[x]?$/, loader: 'babel-loader', exclude: /node_module/ }
{
test: /\.js[x]?$/,
loader: 'babel?presets[]=es2015&plugins[]=add-module-exports',
exclude: /node_module/
}
]

@@ -40,0 +44,0 @@ },

@@ -25,3 +25,3 @@ var webpack = require('webpack');

test: /\.js$/,
loaders: ['babel-loader'],
loaders: ['babel?presets[]=es2015&plugins[]=add-module-exports'],
exclude: /node_modules/

@@ -28,0 +28,0 @@ }]

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