Files
config-pacs-docker/nv/html/nv-nopdf/styles/packages/ohif_dicomweb-client.js
2025-02-26 14:49:25 +07:00

2014 lines
65 KiB
JavaScript

//////////////////////////////////////////////////////////////////////////
// //
// This is a generated file. You can view the original //
// source in your browser if your browser supports source maps. //
// Source maps are supported by all recent versions of Chrome, Safari, //
// and Firefox, and by Internet Explorer 11. //
// //
//////////////////////////////////////////////////////////////////////////
(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var global = Package.meteor.global;
var meteorEnv = Package.meteor.meteorEnv;
var meteorInstall = Package.modules.meteorInstall;
var meteorBabelHelpers = Package['babel-runtime'].meteorBabelHelpers;
var Promise = Package.promise.Promise;
var Symbol = Package['ecmascript-runtime-client'].Symbol;
var Map = Package['ecmascript-runtime-client'].Map;
var Set = Package['ecmascript-runtime-client'].Set;
/* Package-scope variables */
var DICOMWeb;
var require = meteorInstall({"node_modules":{"meteor":{"ohif:dicomweb-client":{"src":{"index.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/index.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
module.export({
DICOMWeb: function () {
return DICOMWeb;
}
});
var get;
module.watch(require("./get.js"), {
"default": function (v) {
get = v;
}
}, 0);
var getAttribute;
module.watch(require("./getAttribute.js"), {
"default": function (v) {
getAttribute = v;
}
}, 1);
var getBulkData;
module.watch(require("./getBulkData.js"), {
"default": function (v) {
getBulkData = v;
}
}, 2);
var getJSON;
module.watch(require("./getJSON.js"), {
"default": function (v) {
getJSON = v;
}
}, 3);
var getModalities;
module.watch(require("./getModalities.js"), {
"default": function (v) {
getModalities = v;
}
}, 4);
var getName;
module.watch(require("./getName.js"), {
"default": function (v) {
getName = v;
}
}, 5);
var getNumber;
module.watch(require("./getNumber.js"), {
"default": function (v) {
getNumber = v;
}
}, 6);
var getString;
module.watch(require("./getString.js"), {
"default": function (v) {
getString = v;
}
}, 7);
var getAccessToken;
module.watch(require("./getAccessToken.js"), {
"default": function (v) {
getAccessToken = v;
}
}, 8);
var makeRequest;
module.watch(require("./makeRequest.js"), {
"default": function (v) {
makeRequest = v;
}
}, 9);
var DICOMWeb = {
get: get,
getAttribute: getAttribute,
getBulkData: getBulkData,
getJSON: getJSON,
getModalities: getModalities,
getName: getName,
getNumber: getNumber,
getString: getString,
getAccessToken: getAccessToken,
makeRequest: makeRequest
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"get.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/get.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var makeRequest;
module.watch(require("./makeRequest"), {
"default": function (v) {
makeRequest = v;
}
}, 0);
/**
* Make a request to the URL given a set of options.
* This function will add optional timing, request, and respone logging.
*
* @param {String} url
* @param {Object} options
* @return {Promise<*>}
*/
var get = function () {
function get(url, options) {
var result;
return _regenerator.default.async(function () {
function get$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (options.logRequests) {
console.log(url);
}
if (options.logTiming) {
console.time(url);
}
_context.next = 4;
return _regenerator.default.awrap(makeRequest(url, options));
case 4:
result = _context.sent;
if (options.logTiming) {
console.timeEnd(url);
}
if (options.logResponses) {
console.info(result);
}
return _context.abrupt("return", result);
case 8:
case "end":
return _context.stop();
}
}
}
return get$;
}(), null, this);
}
return get;
}();
module.exportDefault(get);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getAccessToken.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getAccessToken.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
module.export({
"default": function () {
return getAccessToken;
}
});
function getAccessToken() {
if (!global.window || !window.sessionStorage || !sessionStorage) {
return;
}
return sessionStorage.token;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getAttribute.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getAttribute.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
/**
* Returns the specified element as a dicom attribute group/element.
*
* @param element - The group/element of the element (e.g. '00280009')
* @param [defaultValue] - The value to return if the element is not present
* @returns {*}
*/
var getAttribute = function (element, defaultValue) {
if (!element) {
return defaultValue;
} // Value is not present if the attribute has a zero length value
if (!element.Value) {
return defaultValue;
} // Sanity check to make sure we have at least one entry in the array.
if (!element.Value.length) {
return defaultValue;
}
return convertToInt(element.Value);
};
function convertToInt(input) {
function padFour(input) {
var l = input.length;
if (l == 0) return '0000';
if (l == 1) return '000' + input;
if (l == 2) return '00' + input;
if (l == 3) return '0' + input;
return input;
}
var output = '';
for (var i = 0; i < input.length; i++) {
for (var j = 0; j < input[i].length; j++) {
output += padFour(input[i].charCodeAt(j).toString(16));
}
}
return parseInt(output, 16);
}
module.exportDefault(getAttribute);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getBulkData.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getBulkData.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var get;
module.watch(require("./get.js"), {
"default": function (v) {
get = v;
}
}, 0);
var ASCII = 'ascii';
function getMultipartContentInfo(headers) {
var multipartRegex = /^\s*multipart\/[^;]+/g;
var contentType = headers.get('content-type');
var dict = null;
if (typeof contentType === 'string' && multipartRegex.test(contentType)) {
var _match;
var pairRegex = /;\s*([^=]+)=([^;\r\n]+)/g;
pairRegex.lastIndex = multipartRegex.lastIndex;
while ((_match = pairRegex.exec(contentType)) !== null) {
var key = _match[1];
var value = _match[2];
if (dict === null) {
dict = {};
}
dict[key] = value;
}
}
return dict;
}
function parseContentHeader(data, offset) {
var endOfHeader = data.indexOf('\r\n\r\n', offset);
if (endOfHeader < 0 || endOfHeader <= offset || endOfHeader > data.length) {
throw new Error('End of content header cannot be determined...');
}
var header = {
start: offset,
end: endOfHeader + 4,
fields: {}
};
var headerRegex = /([\w\-]+):\s*([^\r\n]+)(?:\r\n)?/g;
var headerContentRegex = /\t([^\r\n]+)(?:\r\n)?/g;
var headerString = data.slice(offset, endOfHeader);
var match;
while ((match = headerRegex.exec(headerString)) !== null) {
var key = match[1].toLowerCase(),
value = match[2];
while (headerString.charAt(headerRegex.lastIndex) === '\t') {
headerContentRegex.lastIndex = headerRegex.lastIndex;
if ((match = headerContentRegex.exec(headerString)) !== null) {
headerRegex.lastIndex = headerContentRegex.lastIndex;
value += ' ' + match[1];
continue;
}
break;
}
header.fields[key] = value;
}
return header;
}
function toBytes(input) {
var data = [];
for (var i = 0; i < input.length; i++) {
data.push(input.charCodeAt(i));
}
return data;
}
function parseResponse(headers, data) {
var contentInfo = getMultipartContentInfo(headers);
if (!contentInfo || !contentInfo.boundary) {
throw new Error('Content boundary not specified...');
}
var boundary = contentInfo.boundary;
var delimiter = '--' + boundary + '\r\n';
var index = data.indexOf(delimiter, 0, ASCII);
if (index < 0) {
throw new Error('DICOMWeb: The specified boundary could not be found...');
}
var closingIndex;
var closingDelimiter = '\r\n--' + boundary + '--';
index += delimiter.length;
if (data[index] !== 0x0D || data[index + 1] !== 0x0A) {
// multipart content headers are present, so let's parse them...
var contentHeader = parseContentHeader(data, index);
if (contentHeader && contentHeader.end > index) {
if (contentHeader.fields['content-length'] > 0) {
var endOfData = contentHeader.end + parseInt(contentHeader.fields['content-length'], 10);
if (endOfData === data.indexOf(closingDelimiter, endOfData)) {
// content-length is valid...
return data.slice(contentHeader.end, endOfData);
}
}
index = contentHeader.end;
}
} else {
// no headers, the content comes right after...
index += 2;
}
closingIndex = data.indexOf(closingDelimiter, index);
if (closingIndex < 0 || closingIndex < index) {
throw new Error('DICOMWeb: The end of the content could not be determined...');
}
return toBytes(data.slice(index, closingIndex));
}
var getBulkData = function () {
function _callee(url) {
var options,
response,
data,
_args = arguments;
return _regenerator.default.async(function () {
function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
options.headers = options.headers || {};
options.headers.Accept = 'multipart/related; type=application/octet-stream';
_context.next = 5;
return _regenerator.default.awrap(get(url, options));
case 5:
response = _context.sent;
_context.next = 8;
return _regenerator.default.awrap(response.text());
case 8:
data = _context.sent;
return _context.abrupt("return", parseResponse(response.headers, data));
case 10:
case "end":
return _context.stop();
}
}
}
return _callee$;
}(), null, this);
}
return _callee;
}();
module.exportDefault(getBulkData);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getJSON.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getJSON.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var get;
module.watch(require("./get.js"), {
"default": function (v) {
get = v;
}
}, 0);
var getAttribute;
module.watch(require("./getAttribute"), {
"default": function (v) {
getAttribute = v;
}
}, 1);
var getJSON = function () {
function _callee(url, options) {
return _regenerator.default.async(function () {
function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
options.headers = options.headers || {};
options.headers.Accept = 'application/json';
return _context.abrupt("return", get(url, options).then(function (response) {
if (!(response instanceof Response)) {
return '';
}
return response.json();
}));
case 3:
case "end":
return _context.stop();
}
}
}
return _callee$;
}(), null, this);
}
return _callee;
}();
module.exportDefault(getJSON);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getModalities.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getModalities.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
var getModalities = function (modality, modalitiesInStudy) {
var modalities = {};
if (modality) {
modalities = modality;
}
if (modalitiesInStudy) {
// Find vr in modalities
if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {
for (var i = 0; i < modalitiesInStudy.Value.length; i++) {
var value = modalitiesInStudy.Value[i];
if (modalities.Value.indexOf(value) === -1) {
modalities.Value.push(value);
}
}
} else {
modalities = modalitiesInStudy;
}
}
return modalities;
};
module.exportDefault(getModalities);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getName.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getName.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
module.export({
"default": function () {
return getName;
}
});
function getName(element, defaultValue) {
if (!element) {
return defaultValue;
} // Value is not present if the attribute has a zero length value
if (!element.Value) {
return defaultValue;
} // Sanity check to make sure we have at least one entry in the array.
if (!element.Value.length) {
return defaultValue;
} // Return the Alphabetic component group
if (element.Value[0].Alphabetic) {
return element.Value[0].Alphabetic;
} // Orthanc does not return PN properly so this is a temporary workaround
return element.Value[0];
}
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getNumber.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getNumber.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
module.export({
"default": function () {
return getNumber;
}
});
function getNumber(element, defaultValue) {
if (!element) {
return defaultValue;
} // Value is not present if the attribute has a zero length value
if (!element.Value) {
return defaultValue;
} // Sanity check to make sure we have at least one entry in the array.
if (!element.Value.length) {
return defaultValue;
}
return parseFloat(element.Value[0]);
}
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"getString.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/getString.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
module.export({
"default": function () {
return getString;
}
});
function getString(element, defaultValue) {
if (!element) {
return defaultValue;
} // Value is not present if the attribute has a zero length value
if (!element.Value) {
return defaultValue;
} // Sanity check to make sure we have at least one entry in the array.
if (!element.Value.length) {
return defaultValue;
} // Join the array together separated by backslash
// NOTE: Orthanc does not correctly split values into an array so the join is a no-op
return element.Value.join('\\');
}
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"makeRequest.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/ohif_dicomweb-client/src/makeRequest.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var Meteor;
module.watch(require("meteor/meteor"), {
Meteor: function (v) {
Meteor = v;
}
}, 0);
var URL;
module.watch(require("url-parse"), {
"default": function (v) {
URL = v;
}
}, 1);
module.watch(require("isomorphic-fetch"));
var btoa;
module.watch(require("isomorphic-base64"), {
btoa: function (v) {
btoa = v;
}
}, 2);
var getAccessToken;
module.watch(require("./getAccessToken.js"), {
"default": function (v) {
getAccessToken = v;
}
}, 3);
function makeRequest(url, options) {
var parsed, requestOpt, accessToken;
return _regenerator.default.async(function () {
function makeRequest$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
parsed = new URL(url);
requestOpt = {
method: 'GET',
headers: {}
};
accessToken = getAccessToken();
if (accessToken) {
requestOpt.headers = {
Authorization: "Bearer " + accessToken
};
} else if (options.auth) {
requestOpt.headers = {
Authorization: "Basic " + btoa(options.auth)
};
}
if (options.headers) {
Object.keys(options.headers).forEach(function (key) {
requestOpt.headers[key] = options.headers[key];
});
}
if (options.method) {
requestOpt.method = options.method;
}
if (options.method === 'POST' && options.body) {
requestOpt.body = options.body;
}
return _context.abrupt("return", new Promise(function (resolve, reject) {
// TODO: Kept getting weird build errors from RegExp
var isAbsolute = parsed.href.indexOf('http://') === 0 || parsed.href.indexOf('https://') === 0;
var url = parsed.href;
if (isAbsolute === false) {
url = Meteor.absoluteUrl(parsed.href);
}
fetch(url, requestOpt).then(function (response) {
if (response.status >= 400) {
reject(new Error(response.status));
}
if (response.status === 204) {
resolve([]);
} else {
// TODO: Handle 204 no content
resolve(response);
}
}, function (error) {
console.error('There was an error in the DICOMWeb Server');
reject(new Error(error));
});
}));
case 8:
case "end":
return _context.stop();
}
}
}
return makeRequest$;
}(), null, this);
}
module.exportDefault(makeRequest);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}},"node_modules":{"url-parse":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/url-parse/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "url-parse";
exports.version = "1.4.1";
exports.main = "index.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"index.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/url-parse/index.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
'use strict';
var required = require('requires-port')
, qs = require('querystringify')
, protocolre = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\S\s]*)/i
, slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//;
/**
* These are the parse rules for the URL parser, it informs the parser
* about:
*
* 0. The char it Needs to parse, if it's a string it should be done using
* indexOf, RegExp using exec and NaN means set as current value.
* 1. The property we should set when parsing this value.
* 2. Indication if it's backwards or forward parsing, when set as number it's
* the value of extra chars that should be split off.
* 3. Inherit from location if non existing in the parser.
* 4. `toLowerCase` the resulting value.
*/
var rules = [
['#', 'hash'], // Extract from the back.
['?', 'query'], // Extract from the back.
['/', 'pathname'], // Extract from the back.
['@', 'auth', 1], // Extract from the front.
[NaN, 'host', undefined, 1, 1], // Set left over value.
[/:(\d+)$/, 'port', undefined, 1], // RegExp the back.
[NaN, 'hostname', undefined, 1, 1] // Set left over.
];
/**
* These properties should not be copied or inherited from. This is only needed
* for all non blob URL's as a blob URL does not include a hash, only the
* origin.
*
* @type {Object}
* @private
*/
var ignore = { hash: 1, query: 1 };
/**
* The location object differs when your code is loaded through a normal page,
* Worker or through a worker using a blob. And with the blobble begins the
* trouble as the location object will contain the URL of the blob, not the
* location of the page where our code is loaded in. The actual origin is
* encoded in the `pathname` so we can thankfully generate a good "default"
* location from it so we can generate proper relative URL's again.
*
* @param {Object|String} loc Optional default location object.
* @returns {Object} lolcation object.
* @api public
*/
function lolcation(loc) {
var location = global && global.location || {};
loc = loc || location;
var finaldestination = {}
, type = typeof loc
, key;
if ('blob:' === loc.protocol) {
finaldestination = new URL(unescape(loc.pathname), {});
} else if ('string' === type) {
finaldestination = new URL(loc, {});
for (key in ignore) delete finaldestination[key];
} else if ('object' === type) {
for (key in loc) {
if (key in ignore) continue;
finaldestination[key] = loc[key];
}
if (finaldestination.slashes === undefined) {
finaldestination.slashes = slashes.test(loc.href);
}
}
return finaldestination;
}
/**
* @typedef ProtocolExtract
* @type Object
* @property {String} protocol Protocol matched in the URL, in lowercase.
* @property {Boolean} slashes `true` if protocol is followed by "//", else `false`.
* @property {String} rest Rest of the URL that is not part of the protocol.
*/
/**
* Extract protocol information from a URL with/without double slash ("//").
*
* @param {String} address URL we want to extract from.
* @return {ProtocolExtract} Extracted information.
* @api private
*/
function extractProtocol(address) {
var match = protocolre.exec(address);
return {
protocol: match[1] ? match[1].toLowerCase() : '',
slashes: !!match[2],
rest: match[3]
};
}
/**
* Resolve a relative URL pathname against a base URL pathname.
*
* @param {String} relative Pathname of the relative URL.
* @param {String} base Pathname of the base URL.
* @return {String} Resolved pathname.
* @api private
*/
function resolve(relative, base) {
var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))
, i = path.length
, last = path[i - 1]
, unshift = false
, up = 0;
while (i--) {
if (path[i] === '.') {
path.splice(i, 1);
} else if (path[i] === '..') {
path.splice(i, 1);
up++;
} else if (up) {
if (i === 0) unshift = true;
path.splice(i, 1);
up--;
}
}
if (unshift) path.unshift('');
if (last === '.' || last === '..') path.push('');
return path.join('/');
}
/**
* The actual URL instance. Instead of returning an object we've opted-in to
* create an actual constructor as it's much more memory efficient and
* faster and it pleases my OCD.
*
* @constructor
* @param {String} address URL we want to parse.
* @param {Object|String} location Location defaults for relative paths.
* @param {Boolean|Function} parser Parser for the query string.
* @api public
*/
function URL(address, location, parser) {
if (!(this instanceof URL)) {
return new URL(address, location, parser);
}
var relative, extracted, parse, instruction, index, key
, instructions = rules.slice()
, type = typeof location
, url = this
, i = 0;
//
// The following if statements allows this module two have compatibility with
// 2 different API:
//
// 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments
// where the boolean indicates that the query string should also be parsed.
//
// 2. The `URL` interface of the browser which accepts a URL, object as
// arguments. The supplied object will be used as default values / fall-back
// for relative paths.
//
if ('object' !== type && 'string' !== type) {
parser = location;
location = null;
}
if (parser && 'function' !== typeof parser) parser = qs.parse;
location = lolcation(location);
//
// Extract protocol information before running the instructions.
//
extracted = extractProtocol(address || '');
relative = !extracted.protocol && !extracted.slashes;
url.slashes = extracted.slashes || relative && location.slashes;
url.protocol = extracted.protocol || location.protocol || '';
address = extracted.rest;
//
// When the authority component is absent the URL starts with a path
// component.
//
if (!extracted.slashes) instructions[2] = [/(.*)/, 'pathname'];
for (; i < instructions.length; i++) {
instruction = instructions[i];
parse = instruction[0];
key = instruction[1];
if (parse !== parse) {
url[key] = address;
} else if ('string' === typeof parse) {
if (~(index = address.indexOf(parse))) {
if ('number' === typeof instruction[2]) {
url[key] = address.slice(0, index);
address = address.slice(index + instruction[2]);
} else {
url[key] = address.slice(index);
address = address.slice(0, index);
}
}
} else if ((index = parse.exec(address))) {
url[key] = index[1];
address = address.slice(0, index.index);
}
url[key] = url[key] || (
relative && instruction[3] ? location[key] || '' : ''
);
//
// Hostname, host and protocol should be lowercased so they can be used to
// create a proper `origin`.
//
if (instruction[4]) url[key] = url[key].toLowerCase();
}
//
// Also parse the supplied query string in to an object. If we're supplied
// with a custom parser as function use that instead of the default build-in
// parser.
//
if (parser) url.query = parser(url.query);
//
// If the URL is relative, resolve the pathname against the base URL.
//
if (
relative
&& location.slashes
&& url.pathname.charAt(0) !== '/'
&& (url.pathname !== '' || location.pathname !== '')
) {
url.pathname = resolve(url.pathname, location.pathname);
}
//
// We should not add port numbers if they are already the default port number
// for a given protocol. As the host also contains the port number we're going
// override it with the hostname which contains no port number.
//
if (!required(url.port, url.protocol)) {
url.host = url.hostname;
url.port = '';
}
//
// Parse down the `auth` for the username and password.
//
url.username = url.password = '';
if (url.auth) {
instruction = url.auth.split(':');
url.username = instruction[0] || '';
url.password = instruction[1] || '';
}
url.origin = url.protocol && url.host && url.protocol !== 'file:'
? url.protocol +'//'+ url.host
: 'null';
//
// The href is just the compiled result.
//
url.href = url.toString();
}
/**
* This is convenience method for changing properties in the URL instance to
* insure that they all propagate correctly.
*
* @param {String} part Property we need to adjust.
* @param {Mixed} value The newly assigned value.
* @param {Boolean|Function} fn When setting the query, it will be the function
* used to parse the query.
* When setting the protocol, double slash will be
* removed from the final url if it is true.
* @returns {URL}
* @api public
*/
function set(part, value, fn) {
var url = this;
switch (part) {
case 'query':
if ('string' === typeof value && value.length) {
value = (fn || qs.parse)(value);
}
url[part] = value;
break;
case 'port':
url[part] = value;
if (!required(value, url.protocol)) {
url.host = url.hostname;
url[part] = '';
} else if (value) {
url.host = url.hostname +':'+ value;
}
break;
case 'hostname':
url[part] = value;
if (url.port) value += ':'+ url.port;
url.host = value;
break;
case 'host':
url[part] = value;
if (/:\d+$/.test(value)) {
value = value.split(':');
url.port = value.pop();
url.hostname = value.join(':');
} else {
url.hostname = value;
url.port = '';
}
break;
case 'protocol':
url.protocol = value.toLowerCase();
url.slashes = !fn;
break;
case 'pathname':
case 'hash':
if (value) {
var char = part === 'pathname' ? '/' : '#';
url[part] = value.charAt(0) !== char ? char + value : value;
} else {
url[part] = value;
}
break;
default:
url[part] = value;
}
for (var i = 0; i < rules.length; i++) {
var ins = rules[i];
if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();
}
url.origin = url.protocol && url.host && url.protocol !== 'file:'
? url.protocol +'//'+ url.host
: 'null';
url.href = url.toString();
return url;
}
/**
* Transform the properties back in to a valid and full URL string.
*
* @param {Function} stringify Optional query stringify function.
* @returns {String}
* @api public
*/
function toString(stringify) {
if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;
var query
, url = this
, protocol = url.protocol;
if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';
var result = protocol + (url.slashes ? '//' : '');
if (url.username) {
result += url.username;
if (url.password) result += ':'+ url.password;
result += '@';
}
result += url.host + url.pathname;
query = 'object' === typeof url.query ? stringify(url.query) : url.query;
if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;
if (url.hash) result += url.hash;
return result;
}
URL.prototype = { set: set, toString: toString };
//
// Expose the URL parser and some additional properties that might be useful for
// others or testing.
//
URL.extractProtocol = extractProtocol;
URL.location = lolcation;
URL.qs = qs;
module.exports = URL;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}},"requires-port":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/requires-port/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "requires-port";
exports.version = "1.0.0";
exports.main = "index.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"index.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/requires-port/index.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
'use strict';
/**
* Check if we're required to add a port number.
*
* @see https://url.spec.whatwg.org/#default-port
* @param {Number|String} port Port number we need to check
* @param {String} protocol Protocol we need to check against.
* @returns {Boolean} Is it a default port for the given protocol
* @api private
*/
module.exports = function required(port, protocol) {
protocol = protocol.split(':')[0];
port = +port;
if (!port) return false;
switch (protocol) {
case 'http':
case 'ws':
return port !== 80;
case 'https':
case 'wss':
return port !== 443;
case 'ftp':
return port !== 21;
case 'gopher':
return port !== 70;
case 'file':
return false;
}
return port !== 0;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}},"querystringify":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/querystringify/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "querystringify";
exports.version = "2.0.0";
exports.main = "index.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"index.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/querystringify/index.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
'use strict';
var has = Object.prototype.hasOwnProperty;
/**
* Decode a URI encoded string.
*
* @param {String} input The URI encoded string.
* @returns {String} The decoded string.
* @api private
*/
function decode(input) {
return decodeURIComponent(input.replace(/\+/g, ' '));
}
/**
* Simple query string parser.
*
* @param {String} query The query string that needs to be parsed.
* @returns {Object}
* @api public
*/
function querystring(query) {
var parser = /([^=?&]+)=?([^&]*)/g
, result = {}
, part;
while (part = parser.exec(query)) {
var key = decode(part[1])
, value = decode(part[2]);
//
// Prevent overriding of existing properties. This ensures that build-in
// methods like `toString` or __proto__ are not overriden by malicious
// querystrings.
//
if (key in result) continue;
result[key] = value;
}
return result;
}
/**
* Transform a query string to an object.
*
* @param {Object} obj Object that should be transformed.
* @param {String} prefix Optional prefix.
* @returns {String}
* @api public
*/
function querystringify(obj, prefix) {
prefix = prefix || '';
var pairs = [];
//
// Optionally prefix with a '?' if needed
//
if ('string' !== typeof prefix) prefix = '?';
for (var key in obj) {
if (has.call(obj, key)) {
pairs.push(encodeURIComponent(key) +'='+ encodeURIComponent(obj[key]));
}
}
return pairs.length ? prefix + pairs.join('&') : '';
}
//
// Expose the module.
//
exports.stringify = querystringify;
exports.parse = querystring;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}},"isomorphic-fetch":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/isomorphic-fetch/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "isomorphic-fetch";
exports.version = "2.2.1";
exports.browser = "fetch-npm-browserify.js";
exports.main = "fetch-npm-node.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"fetch-npm-browserify.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/isomorphic-fetch/fetch-npm-browserify.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// the whatwg-fetch polyfill installs the fetch() function
// on the global object (window or self)
//
// Return that as the export for use in Webpack, Browserify etc.
require('whatwg-fetch');
module.exports = self.fetch.bind(self);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}},"whatwg-fetch":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/whatwg-fetch/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "whatwg-fetch";
exports.version = "3.0.0";
exports.main = "./dist/fetch.umd.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"dist":{"fetch.umd.js":function(require,exports,module){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/whatwg-fetch/dist/fetch.umd.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.WHATWGFetch = {})));
}(this, (function (exports) { 'use strict';
var support = {
searchParams: 'URLSearchParams' in self,
iterable: 'Symbol' in self && 'iterator' in Symbol,
blob:
'FileReader' in self &&
'Blob' in self &&
(function() {
try {
new Blob();
return true
} catch (e) {
return false
}
})(),
formData: 'FormData' in self,
arrayBuffer: 'ArrayBuffer' in self
};
function isDataView(obj) {
return obj && DataView.prototype.isPrototypeOf(obj)
}
if (support.arrayBuffer) {
var viewClasses = [
'[object Int8Array]',
'[object Uint8Array]',
'[object Uint8ClampedArray]',
'[object Int16Array]',
'[object Uint16Array]',
'[object Int32Array]',
'[object Uint32Array]',
'[object Float32Array]',
'[object Float64Array]'
];
var isArrayBufferView =
ArrayBuffer.isView ||
function(obj) {
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
};
}
function normalizeName(name) {
if (typeof name !== 'string') {
name = String(name);
}
if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) {
throw new TypeError('Invalid character in header field name')
}
return name.toLowerCase()
}
function normalizeValue(value) {
if (typeof value !== 'string') {
value = String(value);
}
return value
}
// Build a destructive iterator for the value list
function iteratorFor(items) {
var iterator = {
next: function() {
var value = items.shift();
return {done: value === undefined, value: value}
}
};
if (support.iterable) {
iterator[Symbol.iterator] = function() {
return iterator
};
}
return iterator
}
function Headers(headers) {
this.map = {};
if (headers instanceof Headers) {
headers.forEach(function(value, name) {
this.append(name, value);
}, this);
} else if (Array.isArray(headers)) {
headers.forEach(function(header) {
this.append(header[0], header[1]);
}, this);
} else if (headers) {
Object.getOwnPropertyNames(headers).forEach(function(name) {
this.append(name, headers[name]);
}, this);
}
}
Headers.prototype.append = function(name, value) {
name = normalizeName(name);
value = normalizeValue(value);
var oldValue = this.map[name];
this.map[name] = oldValue ? oldValue + ', ' + value : value;
};
Headers.prototype['delete'] = function(name) {
delete this.map[normalizeName(name)];
};
Headers.prototype.get = function(name) {
name = normalizeName(name);
return this.has(name) ? this.map[name] : null
};
Headers.prototype.has = function(name) {
return this.map.hasOwnProperty(normalizeName(name))
};
Headers.prototype.set = function(name, value) {
this.map[normalizeName(name)] = normalizeValue(value);
};
Headers.prototype.forEach = function(callback, thisArg) {
for (var name in this.map) {
if (this.map.hasOwnProperty(name)) {
callback.call(thisArg, this.map[name], name, this);
}
}
};
Headers.prototype.keys = function() {
var items = [];
this.forEach(function(value, name) {
items.push(name);
});
return iteratorFor(items)
};
Headers.prototype.values = function() {
var items = [];
this.forEach(function(value) {
items.push(value);
});
return iteratorFor(items)
};
Headers.prototype.entries = function() {
var items = [];
this.forEach(function(value, name) {
items.push([name, value]);
});
return iteratorFor(items)
};
if (support.iterable) {
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
}
function consumed(body) {
if (body.bodyUsed) {
return Promise.reject(new TypeError('Already read'))
}
body.bodyUsed = true;
}
function fileReaderReady(reader) {
return new Promise(function(resolve, reject) {
reader.onload = function() {
resolve(reader.result);
};
reader.onerror = function() {
reject(reader.error);
};
})
}
function readBlobAsArrayBuffer(blob) {
var reader = new FileReader();
var promise = fileReaderReady(reader);
reader.readAsArrayBuffer(blob);
return promise
}
function readBlobAsText(blob) {
var reader = new FileReader();
var promise = fileReaderReady(reader);
reader.readAsText(blob);
return promise
}
function readArrayBufferAsText(buf) {
var view = new Uint8Array(buf);
var chars = new Array(view.length);
for (var i = 0; i < view.length; i++) {
chars[i] = String.fromCharCode(view[i]);
}
return chars.join('')
}
function bufferClone(buf) {
if (buf.slice) {
return buf.slice(0)
} else {
var view = new Uint8Array(buf.byteLength);
view.set(new Uint8Array(buf));
return view.buffer
}
}
function Body() {
this.bodyUsed = false;
this._initBody = function(body) {
this._bodyInit = body;
if (!body) {
this._bodyText = '';
} else if (typeof body === 'string') {
this._bodyText = body;
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
this._bodyBlob = body;
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
this._bodyFormData = body;
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
this._bodyText = body.toString();
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
this._bodyArrayBuffer = bufferClone(body.buffer);
// IE 10-11 can't handle a DataView body.
this._bodyInit = new Blob([this._bodyArrayBuffer]);
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
this._bodyArrayBuffer = bufferClone(body);
} else {
this._bodyText = body = Object.prototype.toString.call(body);
}
if (!this.headers.get('content-type')) {
if (typeof body === 'string') {
this.headers.set('content-type', 'text/plain;charset=UTF-8');
} else if (this._bodyBlob && this._bodyBlob.type) {
this.headers.set('content-type', this._bodyBlob.type);
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
}
}
};
if (support.blob) {
this.blob = function() {
var rejected = consumed(this);
if (rejected) {
return rejected
}
if (this._bodyBlob) {
return Promise.resolve(this._bodyBlob)
} else if (this._bodyArrayBuffer) {
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
} else if (this._bodyFormData) {
throw new Error('could not read FormData body as blob')
} else {
return Promise.resolve(new Blob([this._bodyText]))
}
};
this.arrayBuffer = function() {
if (this._bodyArrayBuffer) {
return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
} else {
return this.blob().then(readBlobAsArrayBuffer)
}
};
}
this.text = function() {
var rejected = consumed(this);
if (rejected) {
return rejected
}
if (this._bodyBlob) {
return readBlobAsText(this._bodyBlob)
} else if (this._bodyArrayBuffer) {
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
} else if (this._bodyFormData) {
throw new Error('could not read FormData body as text')
} else {
return Promise.resolve(this._bodyText)
}
};
if (support.formData) {
this.formData = function() {
return this.text().then(decode)
};
}
this.json = function() {
return this.text().then(JSON.parse)
};
return this
}
// HTTP methods whose capitalization should be normalized
var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
function normalizeMethod(method) {
var upcased = method.toUpperCase();
return methods.indexOf(upcased) > -1 ? upcased : method
}
function Request(input, options) {
options = options || {};
var body = options.body;
if (input instanceof Request) {
if (input.bodyUsed) {
throw new TypeError('Already read')
}
this.url = input.url;
this.credentials = input.credentials;
if (!options.headers) {
this.headers = new Headers(input.headers);
}
this.method = input.method;
this.mode = input.mode;
this.signal = input.signal;
if (!body && input._bodyInit != null) {
body = input._bodyInit;
input.bodyUsed = true;
}
} else {
this.url = String(input);
}
this.credentials = options.credentials || this.credentials || 'same-origin';
if (options.headers || !this.headers) {
this.headers = new Headers(options.headers);
}
this.method = normalizeMethod(options.method || this.method || 'GET');
this.mode = options.mode || this.mode || null;
this.signal = options.signal || this.signal;
this.referrer = null;
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
throw new TypeError('Body not allowed for GET or HEAD requests')
}
this._initBody(body);
}
Request.prototype.clone = function() {
return new Request(this, {body: this._bodyInit})
};
function decode(body) {
var form = new FormData();
body
.trim()
.split('&')
.forEach(function(bytes) {
if (bytes) {
var split = bytes.split('=');
var name = split.shift().replace(/\+/g, ' ');
var value = split.join('=').replace(/\+/g, ' ');
form.append(decodeURIComponent(name), decodeURIComponent(value));
}
});
return form
}
function parseHeaders(rawHeaders) {
var headers = new Headers();
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
var parts = line.split(':');
var key = parts.shift().trim();
if (key) {
var value = parts.join(':').trim();
headers.append(key, value);
}
});
return headers
}
Body.call(Request.prototype);
function Response(bodyInit, options) {
if (!options) {
options = {};
}
this.type = 'default';
this.status = options.status === undefined ? 200 : options.status;
this.ok = this.status >= 200 && this.status < 300;
this.statusText = 'statusText' in options ? options.statusText : 'OK';
this.headers = new Headers(options.headers);
this.url = options.url || '';
this._initBody(bodyInit);
}
Body.call(Response.prototype);
Response.prototype.clone = function() {
return new Response(this._bodyInit, {
status: this.status,
statusText: this.statusText,
headers: new Headers(this.headers),
url: this.url
})
};
Response.error = function() {
var response = new Response(null, {status: 0, statusText: ''});
response.type = 'error';
return response
};
var redirectStatuses = [301, 302, 303, 307, 308];
Response.redirect = function(url, status) {
if (redirectStatuses.indexOf(status) === -1) {
throw new RangeError('Invalid status code')
}
return new Response(null, {status: status, headers: {location: url}})
};
exports.DOMException = self.DOMException;
try {
new exports.DOMException();
} catch (err) {
exports.DOMException = function(message, name) {
this.message = message;
this.name = name;
var error = Error(message);
this.stack = error.stack;
};
exports.DOMException.prototype = Object.create(Error.prototype);
exports.DOMException.prototype.constructor = exports.DOMException;
}
function fetch(input, init) {
return new Promise(function(resolve, reject) {
var request = new Request(input, init);
if (request.signal && request.signal.aborted) {
return reject(new exports.DOMException('Aborted', 'AbortError'))
}
var xhr = new XMLHttpRequest();
function abortXhr() {
xhr.abort();
}
xhr.onload = function() {
var options = {
status: xhr.status,
statusText: xhr.statusText,
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
};
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
var body = 'response' in xhr ? xhr.response : xhr.responseText;
resolve(new Response(body, options));
};
xhr.onerror = function() {
reject(new TypeError('Network request failed'));
};
xhr.ontimeout = function() {
reject(new TypeError('Network request failed'));
};
xhr.onabort = function() {
reject(new exports.DOMException('Aborted', 'AbortError'));
};
xhr.open(request.method, request.url, true);
if (request.credentials === 'include') {
xhr.withCredentials = true;
} else if (request.credentials === 'omit') {
xhr.withCredentials = false;
}
if ('responseType' in xhr && support.blob) {
xhr.responseType = 'blob';
}
request.headers.forEach(function(value, name) {
xhr.setRequestHeader(name, value);
});
if (request.signal) {
request.signal.addEventListener('abort', abortXhr);
xhr.onreadystatechange = function() {
// DONE (success or failure)
if (xhr.readyState === 4) {
request.signal.removeEventListener('abort', abortXhr);
}
};
}
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
})
}
fetch.polyfill = true;
if (!self.fetch) {
self.fetch = fetch;
self.Headers = Headers;
self.Request = Request;
self.Response = Response;
}
exports.Headers = Headers;
exports.Request = Request;
exports.Response = Response;
exports.fetch = fetch;
Object.defineProperty(exports, '__esModule', { value: true });
})));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}}},"isomorphic-base64":{"package.json":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/isomorphic-base64/package.json //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
exports.name = "isomorphic-base64";
exports.version = "1.0.2";
exports.browser = "browser.js";
exports.main = "index.js";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
},"browser.js":function(require,exports){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// node_modules/meteor/ohif_dicomweb-client/node_modules/isomorphic-base64/browser.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
'use strict';
exports.atob = self.atob.bind(self);
exports.btoa = self.btoa.bind(self);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}}}}}}},{
"extensions": [
".js",
".json"
]
});
var exports = require("/node_modules/meteor/ohif:dicomweb-client/src/index.js");
/* Exports */
Package._define("ohif:dicomweb-client", exports, {
DICOMWeb: DICOMWeb
});
})();