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

atlassian-connect-js-request

Package Overview
Dependencies
Maintainers
5
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

atlassian-connect-js-request - npm Package Compare versions

Comparing version 0.2.3 to 0.2.4

77

dist/connect-host-request.js

@@ -22,9 +22,2 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.connectHostRequest = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){

});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _dollar = _dereq_('./dollar');
var _dollar2 = _interopRequireDefault(_dollar);
var XHR_PROPERTIES = ['status', 'statusText', 'responseText'];

@@ -50,3 +43,3 @@ var XHR_HEADERS = ['Content-Type', 'ETag'];

// only copy key properties and headers for transport across the bridge
_dollar2['default'].each(XHR_PROPERTIES, function (i, v) {
XHR_PROPERTIES.forEach(function (v, i) {
json[v] = xhr[v];

@@ -60,7 +53,7 @@ if (v === 'responseText') {

}
});
}, this);
// only copy key response headers for transport across the bridge
_dollar2['default'].each(XHR_HEADERS, function (i, v) {
XHR_HEADERS.forEach(function (v, i) {
json.headers[v] = xhr.getResponseHeader(v);
});
}, this);
return json;

@@ -162,7 +155,7 @@ }

url = url.replace(/\/\.\.\//ig, ''); // strip /../ from urls
args.headers = args.headers || {};
Object.getOwnPropertyNames(args.headers).forEach(function (k) {
headers[k.toLowerCase()] = args.headers[k];
}, this);
_dollar2['default'].each(args.headers || {}, function (k, v) {
headers[k.toLowerCase()] = v;
});
function done(data, textStatus, xhr) {

@@ -175,5 +168,2 @@ callback(false, toJSON(xhr), data);

// Disable system ajax settings. This stops confluence mobile from injecting callbacks and then throwing exceptions.
// $.ajaxSettings = {};
// execute the request with our restricted set of inputs

@@ -202,23 +192,52 @@ var ajaxOptions = {

if (args.experimental === true) {
ajaxOptions.headers["X-ExperimentalApi"] = "opt-in";
ajaxOptions.headers['X-ExperimentalApi'] = 'opt-in';
}
_dollar2['default'].each(REQUEST_HEADERS_WHITELIST, function (index, header) {
REQUEST_HEADERS_WHITELIST.forEach(function (header, index) {
if (headers[header.toLowerCase()]) {
ajaxOptions.headers[header] = headers[header.toLowerCase()];
}
}, this);
if (!ajaxOptions.cache) {
ajaxOptions.url += (ajaxOptions.url.indexOf('?') >= 0 ? '&' : '?') + '_r=' + new Date().getTime();
}
var request = new XMLHttpRequest();
request.open(ajaxOptions.type, ajaxOptions.url, true);
// set headers
if (ajaxOptions.contentType) {
ajaxOptions.headers['Content-type'] = ajaxOptions.contentType;
}
Object.getOwnPropertyNames(ajaxOptions.headers).forEach(function (headerName) {
request.setRequestHeader(headerName, ajaxOptions.headers[headerName]);
});
_dollar2['default'].ajax(ajaxOptions).then(done, fail);
// response loaded
request.onload = function () {
if (this.status >= 200 && this.status < 300) {
// Success!
done(request.responseText, request.statusText, request);
} else {
fail(request, request.statusText, request.responseText);
// We reached our target server, but it returned an error
}
};
// response failed to load
request.onerror = function () {
// There was a connection error of some sort
fail(request, request.statusText, request.responseText);
};
try {
request.send(ajaxOptions.data || null);
} catch (e) {
fail(request, undefined, e);
console.error('ACJS Request: ', e.message, e);
}
}
};
},{"./dollar":2}],2:[function(_dereq_,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = AJS.$;
module.exports = exports["default"];
},{}]},{},[1])(1)
});
{
"name": "atlassian-connect-js-request",
"version": "0.2.3",
"version": "0.2.4",
"description": "Request module for Atlassian Connect",

@@ -23,2 +23,2 @@ "devDependencies": {

}
}
}

@@ -5,2 +5,10 @@ import requestHost, { stripJWTUrls } from '../../src/host';

beforeEach(function() {
jasmine.Ajax.install();
});
afterEach(function() {
jasmine.Ajax.uninstall();
});
window.AJS.contextPath = () => '';

@@ -61,3 +69,3 @@

it('calls $.ajax with correct options', () => {
it('calls ajax with correct options', () => {
const requestOptions = {

@@ -69,15 +77,13 @@ url: '/some/url'

spyOn($, 'ajax').and.callFake((options) => {
expect(options.url).toEqual(requestOptions.url);
expect(options.type).toEqual('GET');
expect(options.data).not.toBeDefined();
expect(options.headers['Accept']).toEqual('*/*');
expect(options.headers['AP-Client-Key']).toEqual(defaultContext.extension.addon_key);
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'immediate response'
});
requestHost.request(requestOptions, callback);
expect($.ajax).toHaveBeenCalled();
expect(jasmine.Ajax.requests.mostRecent().method).toBe('GET');
expect(jasmine.Ajax.requests.mostRecent().params).toEqual(null);
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['Accept']).toEqual('*/*');
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['AP-Client-Key']).toEqual(defaultContext.extension.addon_key);
expect(jasmine.Ajax.requests.mostRecent().url).toContain(requestOptions.url);
});

@@ -99,13 +105,10 @@

spyOn($, 'ajax').and.callFake((options) => {
expect(options.headers['If-Match']).toEqual(ifMatchVal);
expect(options.headers['If-None-Match']).toEqual(ifNoneMatchVal);
expect(options.headers['Not-Valid-Header']).not.toBeDefined();
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(requestOptions, callback);
expect($.ajax).toHaveBeenCalled();
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['If-Match']).toEqual(ifMatchVal);
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['If-None-Match']).toEqual(ifNoneMatchVal);
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['Not-Valid-Header']).not.toBeDefined();
});

@@ -121,11 +124,8 @@

spyOn($, 'ajax').and.callFake((options) => {
expect(options.headers['X-ExperimentalApi']).not.toBeDefined();
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(requestOptions, callback);
expect($.ajax).toHaveBeenCalled()
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['X-ExperimentalApi']).not.toBeDefined();
});

@@ -141,11 +141,7 @@

spyOn($, 'ajax').and.callFake((options) => {
expect(options.headers['X-ExperimentalApi']).toEqual('opt-in');
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(requestOptions, callback);
expect($.ajax).toHaveBeenCalled()
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['X-ExperimentalApi']).toEqual('opt-in');
});

@@ -172,19 +168,15 @@ });

it('adds the X-Atlassian-Token header to the request', () => {
spyOn($, 'ajax').and.callFake((options) => {
expect(options.headers['X-Atlassian-Token']).toEqual('no-check');
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(requestOptions, callback);
expect(jasmine.Ajax.requests.mostRecent().requestHeaders['X-Atlassian-Token']).toEqual('no-check');
});
it('constructs the FormData', () => {
spyOn($, 'ajax').and.callFake((options) => {
expect(options.data instanceof FormData).toBe(true);
return $.Deferred((defer) => {
defer.resolve('data', 'statusText', new XMLHttpRequest());
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(requestOptions, callback);
expect(jasmine.Ajax.requests.mostRecent().params instanceof FormData).toBe(true);
});

@@ -200,2 +192,5 @@

try {
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': 'response text'
});
requestHost.request(badrequestOptions, callback);

@@ -226,7 +221,7 @@ } catch (e) {

spyOn($, 'ajax').and.callFake((options) => {
return $.Deferred((defer) => {
defer.resolve(data, statusText, xhr);
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': data,
'status': statusText
});
requestHost.request(requestOptions, callback);

@@ -239,3 +234,2 @@ expect(callback).toHaveBeenCalled();

const statusText = '500';
const xhr = new XMLHttpRequest();

@@ -250,6 +244,5 @@ const callback = jasmine.createSpy('callback').and.callFake((errorThrown, textStatus, error2) => {

spyOn($, 'ajax').and.callFake((options) => {
return $.Deferred((defer) => {
defer.reject(xhr, statusText, 'some error');
});
jasmine.Ajax.stubRequest(/.*/).andReturn({
'responseText': error,
'status': statusText
});

@@ -256,0 +249,0 @@ requestHost.request(requestOptions, callback);

@@ -16,4 +16,2 @@ /**

import $ from './dollar';
const XHR_PROPERTIES = ['status', 'statusText', 'responseText'];

@@ -40,3 +38,3 @@ const XHR_HEADERS = ['Content-Type', 'ETag'];

// only copy key properties and headers for transport across the bridge
$.each(XHR_PROPERTIES, function (i, v) {
XHR_PROPERTIES.forEach(function (v, i) {
json[v] = xhr[v];

@@ -50,5 +48,7 @@ if(v === 'responseText'){

}
});
}, this);
// only copy key response headers for transport across the bridge
$.each(XHR_HEADERS, function (i, v) { json.headers[v] = xhr.getResponseHeader(v); });
XHR_HEADERS.forEach(function (v, i) {
json.headers[v] = xhr.getResponseHeader(v);
}, this);
return json;

@@ -152,7 +152,7 @@ }

url = url.replace(/\/\.\.\//ig,''); // strip /../ from urls
args.headers = args.headers || {}
Object.getOwnPropertyNames(args.headers).forEach(function(k) {
headers[k.toLowerCase()] = args.headers[k];
}, this);
$.each(args.headers || {}, function (k, v) {
headers[k.toLowerCase()] = v;
});
function done(data, textStatus, xhr) {

@@ -165,5 +165,2 @@ callback(false, toJSON(xhr), data);

// Disable system ajax settings. This stops confluence mobile from injecting callbacks and then throwing exceptions.
// $.ajaxSettings = {};
// execute the request with our restricted set of inputs

@@ -192,13 +189,50 @@ var ajaxOptions = {

if (args.experimental === true) {
ajaxOptions.headers["X-ExperimentalApi"] = "opt-in";
ajaxOptions.headers['X-ExperimentalApi'] = 'opt-in';
}
$.each(REQUEST_HEADERS_WHITELIST, function (index, header) {
REQUEST_HEADERS_WHITELIST.forEach(function (header, index) {
if (headers[header.toLowerCase()]) {
ajaxOptions.headers[header] = headers[header.toLowerCase()];
}
}, this);
if(!ajaxOptions.cache) {
ajaxOptions.url += (ajaxOptions.url.indexOf('?') >= 0 ? '&' : '?') + '_r=' + new Date().getTime();
}
var request = new XMLHttpRequest();
request.open(ajaxOptions.type, ajaxOptions.url, true);
// set headers
if(ajaxOptions.contentType) {
ajaxOptions.headers['Content-type'] = ajaxOptions.contentType;
}
Object.getOwnPropertyNames(ajaxOptions.headers).forEach((headerName) => {
request.setRequestHeader(headerName, ajaxOptions.headers[headerName]);
});
$.ajax(ajaxOptions).then(done, fail);
// response loaded
request.onload = function() {
if (this.status >= 200 && this.status < 300) {
// Success!
done(request.responseText, request.statusText, request);
} else {
fail(request, request.statusText, request.responseText);
// We reached our target server, but it returned an error
}
};
// response failed to load
request.onerror = function() {
// There was a connection error of some sort
fail(request, request.statusText, request.responseText);
};
try {
request.send(ajaxOptions.data || null);
} catch ( e ) {
fail(request, undefined, e);
console.error('ACJS Request: ', e.message, e);
}
}
};
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