From 505f7ae403e8ff1384267087e263fde00b41945d Mon Sep 17 00:00:00 2001 From: wanji Date: Mon, 19 Mar 2018 17:16:57 +0100 Subject: [PATCH 01/19] init the repo to rewrite it as a module --- .gitignore | 62 +++++ .idea/jsdap.iml | 12 + .idea/markdown-navigator.xml | 71 ++++++ .../markdown-navigator/profiles_settings.xml | 3 + .idea/modules.xml | 8 + .idea/preferred-vcs.xml | 6 + .idea/vcs.xml | 6 + .idea/workspace.xml | 228 ++++++++++++++++++ package.json | 10 + 9 files changed, 406 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/jsdap.iml create mode 100644 .idea/markdown-navigator.xml create mode 100644 .idea/markdown-navigator/profiles_settings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/preferred-vcs.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3ef67a --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + diff --git a/.idea/jsdap.iml b/.idea/jsdap.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/jsdap.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml new file mode 100644 index 0000000..3efe9d6 --- /dev/null +++ b/.idea/markdown-navigator.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..1d9b017 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/preferred-vcs.xml b/.idea/preferred-vcs.xml new file mode 100644 index 0000000..a45e7e0 --- /dev/null +++ b/.idea/preferred-vcs.xml @@ -0,0 +1,6 @@ + + + + Git + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..dabeda0 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - 1521470052338 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 6cea37b534b2e706cca7e6fbe0c7f5faa7af397a Mon Sep 17 00:00:00 2001 From: wanji Date: Mon, 19 Mar 2018 17:52:49 +0100 Subject: [PATCH 03/19] add babel --- .babelrc | 5 +++++ .editorconfig | 20 ++++++++++++++++++++ package.json | 6 +++++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 .babelrc create mode 100644 .editorconfig diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..b207aef --- /dev/null +++ b/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "env" + ] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..48d2c75 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 120 + +[*.json] +indent_style = space +indent_size = 2 + +[.*rc] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/package.json b/package.json index a4794da..53c9435 100644 --- a/package.json +++ b/package.json @@ -6,5 +6,9 @@ "repository": "https://github.com/omarbenhamid/jsdap", "author": "OMAR BENHAMID ", "license": "MIT", - "private": false + "private": false, + "devDependencies": { + "babel-core": "^6.26.0", + "babel-preset-env": "^1.6.1" + } } From 68c821f87d80b535828794b4f4207b04b460b119 Mon Sep 17 00:00:00 2001 From: Wanji Date: Mon, 19 Mar 2018 21:56:40 +0100 Subject: [PATCH 04/19] reconstruct the codebase in es6 --- jsdap.js | 71 +++++++------ parser.js | 204 +++++++++++++++++------------------ xdr.js | 311 ++++++++++++++++++++++++++++-------------------------- 3 files changed, 304 insertions(+), 282 deletions(-) diff --git a/jsdap.js b/jsdap.js index 6c363d2..10396a8 100644 --- a/jsdap.js +++ b/jsdap.js @@ -1,10 +1,16 @@ +"use strict"; + +import {ddsParser, dasParser} from './parser.js'; +import {getBuffer, dapUnpacker} from 'xdr.js' + function proxyUrl(url, callback, binary, extraheaders) { + // Mozilla/Safari/IE7+ if (window.XMLHttpRequest) { - var xml = new XMLHttpRequest(); - // IE6 + let xml = new XMLHttpRequest(); + // IE6 } else if (window.ActiveXObject) { - var xml = new ActiveXObject("Microsoft.XMLHTTP"); + let xml = new ActiveXObject("Microsoft.XMLHTTP"); } xml.open("GET", url, true); @@ -13,10 +19,10 @@ function proxyUrl(url, callback, binary, extraheaders) { } else { xml.setRequestHeader('Accept-Charset', 'x-user-defined'); } - if(extraheaders) { - for(var key in extraheaders) { - xml.setRequestHeader(key,extraheaders[key]); - } + if (extraheaders) { + for (let key in extraheaders) { + xml.setRequestHeader(key, extraheaders[key]); + } } xml.onreadystatechange = function() { @@ -35,36 +41,37 @@ function proxyUrl(url, callback, binary, extraheaders) { /** * Load the dataset and call the callback with (dataset) where dataset is the dataset "metadata"; - * - url (string): the url (must be a bare OPeNDAP url, without "format extension" nor query parameters). + * - url (string): the url (must be a bare OPeNDAP url, without "format extension" nor query parameters). * - callback (function(data)): the callback which will receive parsed data. * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. */ -function loadDataset(url, callback, extraheaders) { +export function loadDataset(url, callback, extraheaders) { // Load DDS. proxyUrl(url + '.dds', function(dds) { - var dataset = new ddsParser(dds).parse(); + let dataset = new ddsParser(dds).parse(); // Load DAS. proxyUrl(url + '.das', function(das) { dataset = new dasParser(das, dataset).parse(); callback(dataset); - },false,extraheaders); - },false,extraheaders); + }, false, extraheaders); + }, false, extraheaders); } -/** Flatten the data array as data attributes of elements of dapvar */ -function _applydata(data,dapvar) { - var i = 0; - for(child in dapvar) { - if(!dapvar[child].type) continue; - dapvar[child].data=data[i++]; - if(dapvar[child].type == 'Structure') { - _applydata(dapvar[child].data,dapvar[child]); - } - } - +/** Flatten the data array as data attributes of elements of daplet */ +function _applydata(data, daplet) { + let i = 0; + for (let child in daplet) { + if (!daplet[child].type) continue; + daplet[child].data = data[i++]; + if (daplet[child].type == 'Structure') { + _applydata(daplet[child].data, daplet[child]); + } + } + } + /** * Load the dataset and call the callback with (data) where data is an array of data * the url must be a url with .dods extension. @@ -73,20 +80,20 @@ function _applydata(data,dapvar) { * - callback (function(data)): the callback which will receive parsed data. * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. */ -function loadData(url, callback, extraheaders) { +export function loadData(url, callback, extraheaders) { proxyUrl(url, function(dods) { - var dds = ''; + let dds = ''; while (!dds.match(/\nData:\n$/)) { - var c = dods.splice(0, 1); - if(c.length === 0) throw new Error("Error reading data, are you sur this is a .dods request ?"); + let c = dods.splice(0, 1); + if (c.length === 0) throw new Error("Error reading data, are you sur this is a .dods request ?"); dds += String.fromCharCode(c); } - dds = dds.substr(0, dds.length-7); + dds = dds.substr(0, dds.length - 7); - var dapvar = new ddsParser(dds).parse(); - var data = new dapUnpacker(dods, dapvar).getValue(); - _applydata(data,dapvar); - callback(dapvar); + let daplet = new ddsParser(dds).parse(); + let data = new dapUnpacker(dods, daplet).getValue(); + _applydata(data, daplet); + callback(daplet); }, true, extraheaders); } diff --git a/parser.js b/parser.js index 24d6eaf..e4620b7 100644 --- a/parser.js +++ b/parser.js @@ -1,52 +1,50 @@ -var atomicTypes = ['byte', 'int', 'uint', 'int16', 'uint16', 'int32', 'uint32', 'float32', 'float64', 'string', 'url', 'alias']; -var structures = ['Sequence', 'Structure', 'Dataset']; +"use strict"; -var IDENTIFIER_REGEX = '[\\w-/]' +const atomicTypes = ['byte', 'int', 'uint', 'int16', 'uint16', 'int32', 'uint32', 'float32', 'float64', 'string', 'url', 'alias']; +const structures = ['Sequence', 'Structure', 'Dataset']; +const IDENTIFIER_REGEX = '[\\w-/]'; - -Array.prototype.contains = function (item) { - for (i = 0, el = this[i]; i < this.length; el = this[++i]) { +Array.prototype.contains = (item) => { + for (let i = 0, el = this[i]; i < this.length; el = this[++i]) { if (item == el) return true; } return false; }; - -String.prototype.trim = function() { +String.prototype.trim = () => { return this.replace(/^\s+|\s+$/g, ''); }; -String.prototype.ltrim = function() { +String.prototype.ltrim = () => { return this.replace(/^[\s\n\r\t]+/, ''); }; -String.prototype.rtrim = function() { +String.prototype.rtrim = () => { return this.replace(/\s+$/, ''); }; - function pseudoSafeEval(str) { - if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(str. - replace(/\\./g, '@'). - replace(/"[^"\\\n\r]*"/g, ''))) { + if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(str.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) { return eval('(' + str + ')'); } return str; } - -function dapType(type) { - this.type = type; - this.attributes = {}; +class dapType { + constructor(type) { + this.type = type; + this.attributes = {}; + } } +class simpleParser { + constructor(input) { + this.stream = input; + } -function simpleParser(input) { - this.stream = input; - - this.peek = function(expr) { - var regExp = new RegExp('^' + expr, 'i'); - m = this.stream.match(regExp); + peek(expr) { + let regExp = new RegExp('^' + expr, 'i'); + let m = this.stream.match(regExp); if (m) { return m[0]; } else { @@ -54,9 +52,9 @@ function simpleParser(input) { } }; - this.consume = function(expr) { - var regExp = new RegExp('^' + expr, 'i'); - m = this.stream.match(regExp); + consume(expr) { + let regExp = new RegExp('^' + expr, 'i'); + let m = this.stream.match(regExp); if (m) { this.stream = this.stream.substr(m[0].length).ltrim(); return m[0]; @@ -66,17 +64,20 @@ function simpleParser(input) { }; } +export class ddsParser extends simpleParser { -function ddsParser(dds) { - this.stream = this.dds = dds; + constructor(dds) { + super(dds); + this.dds = dds; + } - this._dataset = function() { - var dataset = new dapType('Dataset'); + _dataset() { + let dataset = new dapType('Dataset'); this.consume('dataset'); this.consume('{'); while (!this.peek('}')) { - var declaration = this._declaration(); + let declaration = this._declaration(); dataset[declaration.name] = declaration; } this.consume('}'); @@ -85,49 +86,55 @@ function ddsParser(dds) { this.consume(';'); // Set id. - function walk(dapvar, includeParent) { - for (attr in dapvar) { - child = dapvar[attr]; + function walk(daplet, includeParent) { + for (let attr in daplet) { + let child = daplet[attr]; if (child.type) { child.id = child.name; if (includeParent) { - child.id = dapvar.id + '.' + child.id; + child.id = daplet.id + '.' + child.id; } walk(child, true); } } } + walk(dataset, false); return dataset; }; - this.parse = this._dataset; - this._declaration = function() { - var type = this.peek(IDENTIFIER_REGEX+'+').toLowerCase(); + parse = this._dataset; + + _declaration() { + let type = this.peek(IDENTIFIER_REGEX + '+').toLowerCase(); switch (type) { - case 'grid' : return this._grid(); - case 'structure': return this._structure(); - case 'sequence' : return this._sequence(); - default : return this._base_declaration(); + case 'grid' : + return this._grid(); + case 'structure': + return this._structure(); + case 'sequence' : + return this._sequence(); + default : + return this._base_declaration(); } }; - this._base_declaration = function() { - var baseType = new dapType(); + _base_declaration() { + let baseType = new dapType(); - baseType.type = this.consume(IDENTIFIER_REGEX+'+'); - baseType.name = this.consume(IDENTIFIER_REGEX+'+'); + baseType.type = this.consume(IDENTIFIER_REGEX + '+'); + baseType.name = this.consume(IDENTIFIER_REGEX + '+'); baseType.dimensions = []; baseType.shape = []; while (!this.peek(';')) { this.consume('\\['); - token = this.consume(IDENTIFIER_REGEX+'+'); + let token = this.consume(IDENTIFIER_REGEX + '+'); if (this.peek('=')) { baseType.dimensions.push(token); this.consume('='); - token = this.consume('\\d+'); + let token = this.consume('\\d+'); } baseType.shape.push(parseInt(token)); this.consume('\\]'); @@ -137,8 +144,8 @@ function ddsParser(dds) { return baseType; }; - this._grid = function() { - var grid = new dapType('Grid'); + _grid() { + let grid = new dapType('Grid'); this.consume('grid'); this.consume('{'); @@ -151,52 +158,52 @@ function ddsParser(dds) { this.consume(':'); grid.maps = {}; while (!this.peek('}')) { - var map_ = this._base_declaration(); + let map_ = this._base_declaration(); grid.maps[map_.name] = map_; } this.consume('}'); - grid.name = this.consume(IDENTIFIER_REGEX+'+'); + grid.name = this.consume(IDENTIFIER_REGEX + '+'); this.consume(';'); - + return grid; }; - this._sequence = function() { - var sequence = new dapType('Sequence'); + _sequence() { + let sequence = new dapType('Sequence'); this.consume('sequence'); this.consume('{'); while (!this.peek('}')) { - var declaration = this._declaration(); + let declaration = this._declaration(); sequence[declaration.name] = declaration; } this.consume('}'); - sequence.name = this.consume(IDENTIFIER_REGEX+'+'); + sequence.name = this.consume(IDENTIFIER_REGEX + '+'); this.consume(';'); return sequence; }; - this._structure = function() { - var structure = new dapType('Structure'); + _structure() { + let structure = new dapType('Structure'); this.consume('structure'); this.consume('{'); while (!this.peek('}')) { - var declaration = this._declaration(); + let declaration = this._declaration(); structure[declaration.name] = declaration; } this.consume('}'); - structure.name = this.consume(IDENTIFIER_REGEX+'+'); + structure.name = this.consume(IDENTIFIER_REGEX + '+'); - structure.dimensions = []; + structure.dimensions = []; structure.shape = []; while (!this.peek(';')) { this.consume('\\['); - token = this.consume(IDENTIFIER_REGEX+'+'); + let token = this.consume(IDENTIFIER_REGEX + '+'); if (this.peek('=')) { structure.dimensions.push(token); this.consume('='); @@ -211,14 +218,16 @@ function ddsParser(dds) { return structure; }; } -ddsParser.prototype = new simpleParser; +export class dasParser extends simpleParser { -function dasParser(das, dataset) { - this.stream = this.das = das; - this.dataset = dataset; + constructor(das, dataset) { + super(das); + this.das = das; + this.dataset = dataset; + } - this.parse = function() { + parse = function() { this._target = this.dataset; this.consume('attributes'); @@ -231,33 +240,33 @@ function dasParser(das, dataset) { return this.dataset; }; - this._attr_container = function() { - if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX+'+').toLowerCase())) { + _attr_container = function() { + if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + '+').toLowerCase())) { this._attribute(this._target.attributes); if (this._target.type == 'Grid') { - for (map in this._target.maps) { + for (let map in this._target.maps) { if (this.dataset[map]) { - var map = this._target.maps[map]; - for (name in map.attributes) { + let map = this._target.maps[map]; + for (let name in map.attributes) { this.dataset[map].attributes[name] = map.attributes[name]; } } } - } + } } else { this._container(); } }; - this._container = function() { - var name = this.consume('[\\w-_\\./]+'); + _container = function() { + let name = this.consume('[\\w-_\\./]+'); this.consume('{'); if (name.indexOf('.') > -1) { - var names = name.split('.'); - var target = this._target; - for (var i=0; i> 3) - 1, - lastByte = buffer.length + (-(start + length) >> 3), diff = curByte - lastByte, - sum = ((buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) - + (diff && (offsetLeft = (start + length) % 8) ? (buffer[ lastByte++ ] & ((1 << offsetLeft) - 1)) - << (diff-- << 3) - offsetRight : 0); diff; sum += shl(buffer[ lastByte++ ], (diff-- << 3) - offsetRight)); + for (let offsetLeft, offsetRight = start % 8, curByte = buffer.length - (start >> 3) - 1, + lastByte = buffer.length + (-(start + length) >> 3), diff = curByte - lastByte, + sum = ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + + (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) + << (diff-- << 3) - offsetRight : 0); diff; sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)) ; return sum; } -function getBuffer(data) { - var b = new Array(data.length); - for (var i=0; i= (max / 2)) { integer = x - max; } else { integer = x; } - return integer; + return integer; } function decodeFloat(buffer, precisionBits, exponentBits) { - var buffer = data; + let buffer = data; - var bias = Math.pow(2, exponentBits - 1) - 1; - var signal = readBits(buffer, precisionBits + exponentBits, 1); - var exponent = readBits(buffer, precisionBits, exponentBits); - var significand = 0; - var divisor = 2; - var curByte = buffer.length + (-precisionBits >> 3) - 1; - var byteValue, startBit, mask; + let bias = Math.pow(2, exponentBits - 1) - 1; + let signal = readBits(buffer, precisionBits + exponentBits, 1); + let exponent = readBits(buffer, precisionBits, exponentBits); + let significand = 0; + let divisor = 2; + let curByte = buffer.length + (-precisionBits >> 3) - 1; + let byteValue, startBit, mask; do - for(byteValue = buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; - mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2); + for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; + mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2) ; while (precisionBits -= startBit); return exponent == (bias << 1) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : (1 + signal * -2) * (exponent || significand ? !exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand) : 0); } - - -exports.getBuffer = getBuffer; -exports.dapUnpacker = dapUnpacker; From d7b5d5b3fa30d6f188915eadd519518f9d43f600 Mon Sep 17 00:00:00 2001 From: Wanji Date: Mon, 19 Mar 2018 23:09:03 +0100 Subject: [PATCH 05/19] have the structure and dependencies --- .eslintignore | 2 + .eslintrc | 26 + .prettierrc | 5 + index.js | 3 + jsdap.js | 99 - lib/jsdap.js | 120 + parser.js => lib/parser.js | 256 +- lib/vbscript.js | 15 + xdr.js => lib/xdr.js | 3 +- package.json | 11 +- test.html | 8 +- vbscript.js | 10 - yarn.lock | 4923 ++++++++++++++++++++++++++++++++++++ 13 files changed, 5241 insertions(+), 240 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .prettierrc create mode 100644 index.js delete mode 100644 jsdap.js create mode 100644 lib/jsdap.js rename parser.js => lib/parser.js (56%) create mode 100644 lib/vbscript.js rename xdr.js => lib/xdr.js (99%) delete mode 100644 vbscript.js create mode 100644 yarn.lock diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b947077 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +node_modules/ +dist/ diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..8cfdbd5 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,26 @@ +{ + "root": true, + "plugins": [ + "prettier" + ], + "extends": [ + "eslint:recommended" + ], + "env": { + "browser": true, + "es6": true + }, + "globals": { + "BinaryToArray": true + }, + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "rules": { + "prettier/prettier": "error", + "no-unused-vars": "warn", + "no-useless-escape": "warn", + "no-console": "warn" + } +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..47b748f --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 4, + "useTabs": false, + "printWidth": 120 +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..600838d --- /dev/null +++ b/index.js @@ -0,0 +1,3 @@ +import JsDap from "./lib/jsdap.js"; + +export default JsDap; diff --git a/jsdap.js b/jsdap.js deleted file mode 100644 index 10396a8..0000000 --- a/jsdap.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict"; - -import {ddsParser, dasParser} from './parser.js'; -import {getBuffer, dapUnpacker} from 'xdr.js' - -function proxyUrl(url, callback, binary, extraheaders) { - - // Mozilla/Safari/IE7+ - if (window.XMLHttpRequest) { - let xml = new XMLHttpRequest(); - // IE6 - } else if (window.ActiveXObject) { - let xml = new ActiveXObject("Microsoft.XMLHTTP"); - } - - xml.open("GET", url, true); - if (xml.overrideMimeType) { - xml.overrideMimeType('text/plain; charset=x-user-defined'); - } else { - xml.setRequestHeader('Accept-Charset', 'x-user-defined'); - } - if (extraheaders) { - for (let key in extraheaders) { - xml.setRequestHeader(key, extraheaders[key]); - } - } - - xml.onreadystatechange = function() { - if (xml.readyState == 4) { - if (!binary) { - callback(xml.responseText); - } else if (IE_HACK) { - callback(BinaryToArray(xml.responseBody).toArray()); - } else { - callback(getBuffer(xml.responseText)); - } - } - }; - xml.send(''); -} - -/** - * Load the dataset and call the callback with (dataset) where dataset is the dataset "metadata"; - * - url (string): the url (must be a bare OPeNDAP url, without "format extension" nor query parameters). - * - callback (function(data)): the callback which will receive parsed data. - * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. - */ -export function loadDataset(url, callback, extraheaders) { - - // Load DDS. - proxyUrl(url + '.dds', function(dds) { - let dataset = new ddsParser(dds).parse(); - - // Load DAS. - proxyUrl(url + '.das', function(das) { - dataset = new dasParser(das, dataset).parse(); - callback(dataset); - }, false, extraheaders); - }, false, extraheaders); -} - -/** Flatten the data array as data attributes of elements of daplet */ -function _applydata(data, daplet) { - let i = 0; - for (let child in daplet) { - if (!daplet[child].type) continue; - daplet[child].data = data[i++]; - if (daplet[child].type == 'Structure') { - _applydata(daplet[child].data, daplet[child]); - } - } - -} - -/** - * Load the dataset and call the callback with (data) where data is an array of data - * the url must be a url with .dods extension. - * @params: - * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string) - * - callback (function(data)): the callback which will receive parsed data. - * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. - */ -export function loadData(url, callback, extraheaders) { - - proxyUrl(url, function(dods) { - let dds = ''; - while (!dds.match(/\nData:\n$/)) { - let c = dods.splice(0, 1); - if (c.length === 0) throw new Error("Error reading data, are you sur this is a .dods request ?"); - dds += String.fromCharCode(c); - } - dds = dds.substr(0, dds.length - 7); - - let daplet = new ddsParser(dds).parse(); - let data = new dapUnpacker(dods, daplet).getValue(); - _applydata(data, daplet); - callback(daplet); - }, true, extraheaders); -} diff --git a/lib/jsdap.js b/lib/jsdap.js new file mode 100644 index 0000000..59da0f6 --- /dev/null +++ b/lib/jsdap.js @@ -0,0 +1,120 @@ +"use strict"; + +import { ddsParser, dasParser } from "./parser.js"; +import { getBuffer, dapUnpacker } from "./xdr.js"; +import ieHack from "vbscript.js"; + +export default class JsDap { + constructor(IE_HACK = false) { + this.IE_HACK = IE_HACK; + ieHack(this.IE_HACK); + } + + proxyUrl(url, callback, binary, extraheaders) { + let xml = undefined; + + // Mozilla/Safari/IE7+ + if (window.XMLHttpRequest) { + xml = new XMLHttpRequest(); + // IE6 + } else if (window.ActiveXObject) { + xml = new window.ActiveXObject("Microsoft.XMLHTTP"); + } + + xml.open("GET", url, true); + if (xml.overrideMimeType) { + xml.overrideMimeType("text/plain; charset=x-user-defined"); + } else { + xml.setRequestHeader("Accept-Charset", "x-user-defined"); + } + if (extraheaders) { + for (let key in extraheaders) { + xml.setRequestHeader(key, extraheaders[key]); + } + } + + xml.onreadystatechange = function() { + if (xml.readyState == 4) { + if (!binary) { + callback(xml.responseText); + } else if (this.IE_HACK) { + callback(BinaryToArray(xml.responseBody).toArray()); + } else { + callback(getBuffer(xml.responseText)); + } + } + }; + xml.send(""); + } + + /** Flatten the data array as data attributes of elements of daplet */ + _applydata(data, daplet) { + let i = 0; + for (let child in daplet) { + if (!daplet[child].type) continue; + daplet[child].data = data[i++]; + if (daplet[child].type == "Structure") { + this._applydata(daplet[child].data, daplet[child]); + } + } + } + + /** + * Load the dataset and call the callback with (data) where data is an array of data + * the url must be a url with .dods extension. + * @params: + * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string) + * - callback (function(data)): the callback which will receive parsed data. + * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. + */ + loadData(url, callback, extraheaders) { + this.proxyUrl( + url, + function(dods) { + let dds = ""; + while (!dds.match(/\nData:\n$/)) { + let c = dods.splice(0, 1); + if (c.length === 0) throw new Error("Error reading data, are you sur this is a .dods request ?"); + dds += String.fromCharCode(c); + } + dds = dds.substr(0, dds.length - 7); + + let daplet = new ddsParser(dds).parse(); + let data = new dapUnpacker(dods, daplet).getValue(); + this._applydata(data, daplet); + callback(daplet); + }, + true, + extraheaders + ); + } + + /** + * Load the dataset and call the callback with (dataset) where dataset is the dataset "metadata"; + * - url (string): the url (must be a bare OPeNDAP url, without "format extension" nor query parameters). + * - callback (function(data)): the callback which will receive parsed data. + * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request. + */ + loadDataset(url, callback, extraheaders) { + // Load DDS. + this.proxyUrl( + url + ".dds", + function(dds) { + let dataset = new ddsParser(dds).parse(); + + // Load DAS. + this.proxyUrl( + url + ".das", + function(das) { + dataset = new dasParser(das, dataset).parse(); + callback(dataset); + }, + false, + extraheaders + ); + }, + false, + extraheaders + ); + } +} diff --git a/parser.js b/lib/parser.js similarity index 56% rename from parser.js rename to lib/parser.js index e4620b7..de339a5 100644 --- a/parser.js +++ b/lib/parser.js @@ -1,10 +1,23 @@ "use strict"; -const atomicTypes = ['byte', 'int', 'uint', 'int16', 'uint16', 'int32', 'uint32', 'float32', 'float64', 'string', 'url', 'alias']; -const structures = ['Sequence', 'Structure', 'Dataset']; -const IDENTIFIER_REGEX = '[\\w-/]'; - -Array.prototype.contains = (item) => { +const atomicTypes = [ + "byte", + "int", + "uint", + "int16", + "uint16", + "int32", + "uint32", + "float32", + "float64", + "string", + "url", + "alias" +]; +const structures = ["Sequence", "Structure", "Dataset"]; +const IDENTIFIER_REGEX = "[\\w-/]"; + +Array.prototype.contains = item => { for (let i = 0, el = this[i]; i < this.length; el = this[++i]) { if (item == el) return true; } @@ -12,20 +25,20 @@ Array.prototype.contains = (item) => { }; String.prototype.trim = () => { - return this.replace(/^\s+|\s+$/g, ''); + return this.replace(/^\s+|\s+$/g, ""); }; String.prototype.ltrim = () => { - return this.replace(/^[\s\n\r\t]+/, ''); + return this.replace(/^[\s\n\r\t]+/, ""); }; String.prototype.rtrim = () => { - return this.replace(/\s+$/, ''); + return this.replace(/\s+$/, ""); }; function pseudoSafeEval(str) { - if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(str.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) { - return eval('(' + str + ')'); + if (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(str.replace(/\\./g, "@").replace(/"[^"\\\n\r]*"/g, ""))) { + return eval("(" + str + ")"); } return str; } @@ -43,17 +56,17 @@ class simpleParser { } peek(expr) { - let regExp = new RegExp('^' + expr, 'i'); + let regExp = new RegExp("^" + expr, "i"); let m = this.stream.match(regExp); if (m) { return m[0]; } else { - return ''; + return ""; } - }; + } consume(expr) { - let regExp = new RegExp('^' + expr, 'i'); + let regExp = new RegExp("^" + expr, "i"); let m = this.stream.match(regExp); if (m) { this.stream = this.stream.substr(m[0].length).ltrim(); @@ -61,29 +74,28 @@ class simpleParser { } else { throw new Error("Unable to parse stream: " + this.stream.substr(0, 10)); } - }; + } } export class ddsParser extends simpleParser { - constructor(dds) { super(dds); this.dds = dds; } - _dataset() { - let dataset = new dapType('Dataset'); + parse() { + let dataset = new dapType("Dataset"); - this.consume('dataset'); - this.consume('{'); - while (!this.peek('}')) { + this.consume("dataset"); + this.consume("{"); + while (!this.peek("}")) { let declaration = this._declaration(); dataset[declaration.name] = declaration; } - this.consume('}'); + this.consume("}"); - dataset.id = dataset.name = this.consume('[^;]+'); - this.consume(';'); + dataset.id = dataset.name = this.consume("[^;]+"); + this.consume(";"); // Set id. function walk(daplet, includeParent) { @@ -92,7 +104,7 @@ export class ddsParser extends simpleParser { if (child.type) { child.id = child.name; if (includeParent) { - child.id = daplet.id + '.' + child.id; + child.id = daplet.id + "." + child.id; } walk(child, true); } @@ -102,149 +114,146 @@ export class ddsParser extends simpleParser { walk(dataset, false); return dataset; - }; - - parse = this._dataset; + } _declaration() { - let type = this.peek(IDENTIFIER_REGEX + '+').toLowerCase(); + let type = this.peek(IDENTIFIER_REGEX + "+").toLowerCase(); switch (type) { - case 'grid' : + case "grid": return this._grid(); - case 'structure': + case "structure": return this._structure(); - case 'sequence' : + case "sequence": return this._sequence(); - default : + default: return this._base_declaration(); } - }; + } _base_declaration() { let baseType = new dapType(); - baseType.type = this.consume(IDENTIFIER_REGEX + '+'); - baseType.name = this.consume(IDENTIFIER_REGEX + '+'); + baseType.type = this.consume(IDENTIFIER_REGEX + "+"); + baseType.name = this.consume(IDENTIFIER_REGEX + "+"); baseType.dimensions = []; baseType.shape = []; - while (!this.peek(';')) { - this.consume('\\['); - let token = this.consume(IDENTIFIER_REGEX + '+'); - if (this.peek('=')) { + while (!this.peek(";")) { + this.consume("\\["); + let token = this.consume(IDENTIFIER_REGEX + "+"); + if (this.peek("=")) { baseType.dimensions.push(token); - this.consume('='); - let token = this.consume('\\d+'); + this.consume("="); + let token = this.consume("\\d+"); } baseType.shape.push(parseInt(token)); - this.consume('\\]'); + this.consume("\\]"); } - this.consume(';'); + this.consume(";"); return baseType; - }; + } _grid() { - let grid = new dapType('Grid'); + let grid = new dapType("Grid"); - this.consume('grid'); - this.consume('{'); + this.consume("grid"); + this.consume("{"); - this.consume('array'); - this.consume(':'); + this.consume("array"); + this.consume(":"); grid.array = this._base_declaration(); - this.consume('maps'); - this.consume(':'); + this.consume("maps"); + this.consume(":"); grid.maps = {}; - while (!this.peek('}')) { + while (!this.peek("}")) { let map_ = this._base_declaration(); grid.maps[map_.name] = map_; } - this.consume('}'); + this.consume("}"); - grid.name = this.consume(IDENTIFIER_REGEX + '+'); - this.consume(';'); + grid.name = this.consume(IDENTIFIER_REGEX + "+"); + this.consume(";"); return grid; - }; + } _sequence() { - let sequence = new dapType('Sequence'); + let sequence = new dapType("Sequence"); - this.consume('sequence'); - this.consume('{'); - while (!this.peek('}')) { + this.consume("sequence"); + this.consume("{"); + while (!this.peek("}")) { let declaration = this._declaration(); sequence[declaration.name] = declaration; } - this.consume('}'); + this.consume("}"); - sequence.name = this.consume(IDENTIFIER_REGEX + '+'); - this.consume(';'); + sequence.name = this.consume(IDENTIFIER_REGEX + "+"); + this.consume(";"); return sequence; - }; + } _structure() { - let structure = new dapType('Structure'); + let structure = new dapType("Structure"); - this.consume('structure'); - this.consume('{'); - while (!this.peek('}')) { + this.consume("structure"); + this.consume("{"); + while (!this.peek("}")) { let declaration = this._declaration(); structure[declaration.name] = declaration; } - this.consume('}'); + this.consume("}"); - structure.name = this.consume(IDENTIFIER_REGEX + '+'); + structure.name = this.consume(IDENTIFIER_REGEX + "+"); structure.dimensions = []; structure.shape = []; - while (!this.peek(';')) { - this.consume('\\['); - let token = this.consume(IDENTIFIER_REGEX + '+'); - if (this.peek('=')) { + while (!this.peek(";")) { + this.consume("\\["); + let token = this.consume(IDENTIFIER_REGEX + "+"); + if (this.peek("=")) { structure.dimensions.push(token); - this.consume('='); - token = this.consume('\\d+'); + this.consume("="); + token = this.consume("\\d+"); } structure.shape.push(parseInt(token)); - this.consume('\\]'); + this.consume("\\]"); } - this.consume(';'); + this.consume(";"); return structure; - }; + } } export class dasParser extends simpleParser { - constructor(das, dataset) { super(das); this.das = das; this.dataset = dataset; } - parse = function() { + parse() { this._target = this.dataset; - this.consume('attributes'); - this.consume('{'); - while (!this.peek('}')) { + this.consume("attributes"); + this.consume("{"); + while (!this.peek("}")) { this._attr_container(); } - this.consume('}'); + this.consume("}"); return this.dataset; - }; + } - _attr_container = function() { - if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + '+').toLowerCase())) { + _attr_container() { + if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + "+").toLowerCase())) { this._attribute(this._target.attributes); - if (this._target.type == 'Grid') { + if (this._target.type == "Grid") { for (let map in this._target.maps) { if (this.dataset[map]) { let map = this._target.maps[map]; @@ -257,74 +266,73 @@ export class dasParser extends simpleParser { } else { this._container(); } - }; + } - _container = function() { - let name = this.consume('[\\w-_\\./]+'); - this.consume('{'); + _container() { + let name = this.consume("[\\w-_\\./]+"); + this.consume("{"); - if (name.indexOf('.') > -1) { - let names = name.split('.'); + if (name.indexOf(".") > -1) { + let names = name.split("."); let target = this._target; for (let i = 0; i < names.length; i++) { this._target = this._target[names[i]]; } - while (!this.peek('}')) { + while (!this.peek("}")) { this._attr_container(); } - this.consume('}'); + this.consume("}"); this._target = target; - } else if ((structures.contains(this._target.type)) && (this._target[name])) { + } else if (structures.contains(this._target.type) && this._target[name]) { let target = this._target; this._target = target[name]; - while (!this.peek('}')) { + while (!this.peek("}")) { this._attr_container(); } - this.consume('}'); + this.consume("}"); this._target = target; } else { this._target.attributes[name] = this._metadata(); - this.consume('}'); + this.consume("}"); } - }; + } - _metadata = function() { + _metadata() { let output = {}; - while (!this.peek('}')) { - if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + '+').toLowerCase())) { + while (!this.peek("}")) { + if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + "+").toLowerCase())) { this._attribute(output); } else { - let name = this.consume(IDENTIFIER_REGEX + '+'); - this.consume('{'); + let name = this.consume(IDENTIFIER_REGEX + "+"); + this.consume("{"); output[name] = this._metadata(); - this.consume('}'); + this.consume("}"); } } return output; - }; + } - _attribute = function(object) { - let type = this.consume(IDENTIFIER_REGEX + '+'); - let name = this.consume(IDENTIFIER_REGEX + '+'); + _attribute(object) { + let type = this.consume(IDENTIFIER_REGEX + "+"); + let name = this.consume(IDENTIFIER_REGEX + "+"); let values = []; - while (!this.peek(';')) { + while (!this.peek(";")) { let value = this.consume('".*?[^\\\\]"|[^;,]+'); - if ((type.toLowerCase() == 'string') || - (type.toLowerCase() == 'url')) { + if (type.toLowerCase() == "string" || type.toLowerCase() == "url") { value = pseudoSafeEval(value); - } else if (type.toLowerCase() == 'alias') { + } else if (type.toLowerCase() == "alias") { let target, tokens; if (value.match(/^\\./)) { - tokens = value.substring(1).split('.'); + tokens = value.substring(1).split("."); target = this.dataset; } else { - tokens = value.split('.'); + tokens = value.split("."); target = this._target; } @@ -342,23 +350,23 @@ export class dasParser extends simpleParser { value = target; } } else { - if (value.toLowerCase() == 'nan') { + if (value.toLowerCase() == "nan") { value = NaN; } else { value = pseudoSafeEval(value); } } values.push(value); - if (this.peek(',')) { - this.consume(','); + if (this.peek(",")) { + this.consume(","); } } - this.consume(';'); + this.consume(";"); if (values.length == 1) { values = values[0]; } object[name] = values; - }; + } } diff --git a/lib/vbscript.js b/lib/vbscript.js new file mode 100644 index 0000000..b47192a --- /dev/null +++ b/lib/vbscript.js @@ -0,0 +1,15 @@ +export default function(IE_HACK) { + if (IE_HACK) + document.write( + '' + ); +} diff --git a/xdr.js b/lib/xdr.js similarity index 99% rename from xdr.js rename to lib/xdr.js index e3af8b1..4a573e5 100644 --- a/xdr.js +++ b/lib/xdr.js @@ -2,11 +2,11 @@ // Jonas Raoni Soares Silva // http://jsfromhell.com/classes/binary-parser [v1.0] +"use strict" const END_OF_SEQUENCE = '\xa5\x00\x00\x00'; const START_OF_SEQUENCE = '\x5a\x00\x00\x00'; - export class dapUnpacker { constructor(xdrdata, daplet) { this._buf = xdrdata; @@ -252,7 +252,6 @@ export function getBuffer(data) { return b; } - function reshape(array, shape) { if (!shape.length) return array[0]; let out = []; diff --git a/package.json b/package.json index 53c9435..3c488ea 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,15 @@ "private": false, "devDependencies": { "babel-core": "^6.26.0", - "babel-preset-env": "^1.6.1" + "babel-preset-env": "^1.6.1", + "eslint": "^4.19.0", + "eslint-plugin-prettier": "^2.6.0", + "prettier": "^1.11.1", + "webpack": "^4.1.1", + "webpack-cli": "^2.0.12" + }, + "scripts": { + "lint": "eslint --format table --debug ./", + "lint:fix": "eslint --format table --debug --fix ./" } } diff --git a/test.html b/test.html index 1ebf531..4f7e7f3 100644 --- a/test.html +++ b/test.html @@ -4,10 +4,10 @@ var exports=window; var IE_HACK=false; - - - - + + + + '); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..033976d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4923 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + dependencies: + acorn "^5.0.0" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.0.0, acorn@^5.5.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.3.0.tgz#1650a41114ef00574cac10b8032d8f4c14812da7" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +any-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +ast-types@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + +ast-types@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-es2015@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-stage-1@^6.5.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0, babel-register@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.3, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +babylon@^7.0.0-beta.30: + version "7.0.0-beta.42" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.42.tgz#67cfabcd4f3ec82999d29031ccdea89d0ba99657" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +binaryextensions@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^2.1.2: + version "2.11.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" + dependencies: + caniuse-lite "^1.0.30000792" + electron-to-chromium "^1.3.30" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-lite@^1.0.30000792: + version "1.0.30000815" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz#3a4258e6850362185adb11b0d754a48402d35bf6" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chokidar@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +chrome-trace-event@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz#90f36885d5345a50621332f0717b595883d5d982" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + dependencies: + mimic-response "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.1.tgz#261b8f518301f1d834e36342b9fea095d2620a26" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + +deep-extend@^0.4.0, deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-conflict@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +diff@^3.3.1, diff@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexify@^3.4.2, duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +editions@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + +ejs@^2.3.1: + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" + +electron-to-chromium@^1.3.30: + version "1.3.39" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.39.tgz#d7a4696409ca0995e2750156da612c221afad84d" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +error@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +eslint-plugin-prettier@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.19.0: + version "4.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.0.tgz#9e900efb5506812ac374557034ef6f5c3642fc4c" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4, external-editor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-diff@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flow-parser@^0.*: + version "0.68.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.68.0.tgz#9cc96620a102e316a314b6bcd56205ceace862d8" + +flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0, from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +gh-got@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" + dependencies: + got "^7.0.0" + is-plain-obj "^1.1.0" + +github-username@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" + dependencies: + gh-got "^6.0.0" + +glob-all@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" + dependencies: + glob "^7.0.5" + yargs "~1.2.6" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.0.1: + version "11.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.2.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.0.tgz#6ba26e75f8a6cc4c6b3eb1fe7ce4fec7abac8533" + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +grouped-queue@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" + dependencies: + lodash "^4.17.2" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +ieee754@^1.1.4: + version "1.1.10" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.10.tgz#719a6f7b026831e64bdb838b0de1bb0029bbf716" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore@^3.3.3: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@^3.0.6, inquirer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.1.0.tgz#19da508931892328abbbdd4c477f1efc65abfd67" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + dependencies: + scoped-regex "^1.0.0" + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istextorbinary@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + dependencies: + binaryextensions "2" + editions "^1.3.3" + textextensions "2" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.9.1: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jscodeshift@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" + dependencies: + async "^1.5.0" + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^6.17.3" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.12.5" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jscodeshift@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748" + dependencies: + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^7.0.0-beta.30" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + neo-async "^2.5.0" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.14.1" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + +json-parse-better-errors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + dependencies: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.4.2" + stream-to-observable "^0.2.0" + strip-ansi "^3.0.1" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-symbols@^2.1.0, log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lowercase-keys@1.0.0, lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0, make-dir@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +mem-fs-editor@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" + dependencies: + commondir "^1.0.1" + deep-extend "^0.4.0" + ejs "^2.3.1" + glob "^7.0.3" + globby "^6.1.0" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^2.0.1" + +mem-fs@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" + dependencies: + through2 "^2.0.0" + vinyl "^1.1.0" + vinyl-file "^2.0.0" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +neo-async@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" + +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + +node-dir@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nomnom@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-cancelable@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.0.tgz#bcb41d35bf6097fc4367a065b6eb84b9b124eff0" + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + +p-lazy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" + +p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +prettier@^1.11.1, prettier@^1.5.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-chunk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" + dependencies: + pify "^3.0.0" + safe-buffer "^5.1.1" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@^0.12.5: + version "0.12.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" + dependencies: + ast-types "0.10.1" + core-js "^2.4.1" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +recast@^0.14.1: + version "0.14.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.5.tgz#53f1f6edf7810bdfb39a25d0ff97d315bad7c314" + dependencies: + ast-types "0.11.3" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.0.1.tgz#d857c3a741dce075c2848dcb019a0a975b190d43" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.6: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.0.0, run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +rxjs@^5.4.2, rxjs@^5.5.2: + version "5.5.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.7.tgz#afb3d1642b069b2fbf203903d6501d1acb4cda27" + dependencies: + symbol-observable "1.0.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +schema-utils@^0.4.2, schema-utils@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +serialize-javascript@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + dependencies: + safe-buffer "^5.1.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.1.tgz#d0441be1a457a73a733a8a7b53570bebd9ef66a4" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +stream-to-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" + dependencies: + any-observable "^0.2.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.0.tgz#384f322ee8a848e500effde99901bba849c5d403" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + dependencies: + has-flag "^3.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +temp@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +textextensions@2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + dependencies: + setimmediate "^1.0.4" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" + +upath@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + dependencies: + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +uuid@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +v8-compile-cache@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" + +vinyl@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +watchpack@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +webpack-addons@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" + dependencies: + jscodeshift "^0.4.0" + +webpack-cli@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.12.tgz#64db876d044f03d8d6544281854b71a3a3c77dd3" + dependencies: + chalk "^2.3.2" + cross-spawn "^6.0.5" + diff "^3.5.0" + enhanced-resolve "^4.0.0" + glob-all "^3.1.0" + global-modules "^1.0.0" + got "^8.2.0" + inquirer "^5.1.0" + interpret "^1.0.4" + jscodeshift "^0.5.0" + listr "^0.13.0" + loader-utils "^1.1.0" + lodash "^4.17.5" + log-symbols "^2.2.0" + mkdirp "^0.5.1" + p-each-series "^1.0.0" + p-lazy "^1.0.0" + prettier "^1.5.3" + resolve-cwd "^2.0.0" + supports-color "^5.3.0" + v8-compile-cache "^1.1.2" + webpack-addons "^1.1.5" + yargs "^11.0.0" + yeoman-environment "^2.0.0" + yeoman-generator "^2.0.3" + +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.1.1.tgz#44e4d6a869dd36fdfc0b227f9bd865a4bccfd81c" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.2" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.1.1" + watchpack "^1.5.0" + webpack-sources "^1.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + +yargs@~1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" + dependencies: + minimist "^0.1.0" + +yeoman-environment@^2.0.0, yeoman-environment@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.5.tgz#84f22bafa84088971fe99ea85f654a3a3dd2b693" + dependencies: + chalk "^2.1.0" + debug "^3.1.0" + diff "^3.3.1" + escape-string-regexp "^1.0.2" + globby "^6.1.0" + grouped-queue "^0.3.3" + inquirer "^3.3.0" + is-scoped "^1.0.0" + lodash "^4.17.4" + log-symbols "^2.1.0" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^3.0.2" + +yeoman-generator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.3.tgz#19426ed22687ffe05d31526c3f1c2cf67ba768f3" + dependencies: + async "^2.6.0" + chalk "^2.3.0" + cli-table "^0.3.1" + cross-spawn "^5.1.0" + dargs "^5.1.0" + dateformat "^3.0.2" + debug "^3.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^2.1.0" + github-username "^4.0.0" + istextorbinary "^2.1.0" + lodash "^4.17.4" + make-dir "^1.1.0" + mem-fs-editor "^3.0.2" + minimist "^1.2.0" + pretty-bytes "^4.0.2" + read-chunk "^2.1.0" + read-pkg-up "^3.0.0" + rimraf "^2.6.2" + run-async "^2.0.0" + shelljs "^0.8.0" + text-table "^0.2.0" + through2 "^2.0.0" + yeoman-environment "^2.0.5" From 28b15bb9c4f1f6d028c724aec0e03d63ed03f55d Mon Sep 17 00:00:00 2001 From: Wanji Date: Mon, 19 Mar 2018 23:20:43 +0100 Subject: [PATCH 06/19] fix eslint error but possibly with potential bug --- lib/xdr.js | 173 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 97 insertions(+), 76 deletions(-) diff --git a/lib/xdr.js b/lib/xdr.js index 4a573e5..2539189 100644 --- a/lib/xdr.js +++ b/lib/xdr.js @@ -2,10 +2,10 @@ // Jonas Raoni Soares Silva // http://jsfromhell.com/classes/binary-parser [v1.0] -"use strict" +"use strict"; -const END_OF_SEQUENCE = '\xa5\x00\x00\x00'; -const START_OF_SEQUENCE = '\x5a\x00\x00\x00'; +const END_OF_SEQUENCE = "\xa5\x00\x00\x00"; +const START_OF_SEQUENCE = "\x5a\x00\x00\x00"; export class dapUnpacker { constructor(xdrdata, daplet) { @@ -18,10 +18,11 @@ export class dapUnpacker { let i = this._pos; let type = this.daplet.type.toLowerCase(); - if (type == 'structure' || type == 'dataset') { - let out = [], tmp; - daplet = this.daplet; - for (child in daplet) { + if (type == "structure" || type == "dataset") { + let out = [], + tmp; + let daplet = this.daplet; + for (let child in daplet) { if (daplet[child].type) { this.daplet = daplet[child]; tmp = this.getValue(); @@ -30,16 +31,16 @@ export class dapUnpacker { } this.daplet = daplet; return out; - - } else if (type == 'grid') { - let out = [], tmp; - daplet = this.daplet; + } else if (type == "grid") { + let out = [], + tmp; + let daplet = this.daplet; this.daplet = daplet.array; tmp = this.getValue(); out.push(tmp); - for (map in daplet.maps) { + for (let map in daplet.maps) { this.daplet = daplet.maps[map]; tmp = this.getValue(); out.push(tmp); @@ -47,14 +48,15 @@ export class dapUnpacker { this.daplet = daplet; return out; - - } else if (type == 'sequence') { + } else if (type == "sequence") { let mark = this._unpack_uint32(); - let out = [], struct, tmp; - daplet = this.daplet; + let out = [], + struct, + tmp; + let daplet = this.daplet; while (mark != 2768240640) { struct = []; - for (child in daplet) { + for (let child in daplet) { if (daplet[child].type) { this.daplet = daplet[child]; tmp = this.getValue(); @@ -70,7 +72,8 @@ export class dapUnpacker { // sequence. } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) { let mark = this._unpack_uint32(); - let out = [], tmp; + let out = [], + tmp; while (mark != 2768240640) { tmp = this.getValue(); out.push(tmp); @@ -82,45 +85,45 @@ export class dapUnpacker { let n = 1; if (this.daplet.shape.length) { n = this._unpack_uint32(); - if (type != 'url' && type != 'string') { + if (type != "url" && type != "string") { this._unpack_uint32(); } } // Bytes? let out; - if (type == 'byte') { + if (type == "byte") { out = this._unpack_bytes(n); // String? - } else if (type == 'url' || type == 'string') { + } else if (type == "url" || type == "string") { out = this._unpack_string(n); } else { out = []; let func; switch (type) { - case 'float32': - func = '_unpack_float32'; + case "float32": + func = "_unpack_float32"; break; - case 'float64': - func = '_unpack_float64'; + case "float64": + func = "_unpack_float64"; break; - case 'int' : - func = '_unpack_int32'; + case "int": + func = "_unpack_int32"; break; - case 'uint' : - func = '_unpack_uint32'; + case "uint": + func = "_unpack_uint32"; break; - case 'int16' : - func = '_unpack_int16'; + case "int16": + func = "_unpack_int16"; break; - case 'uint16' : - func = '_unpack_uint16'; + case "uint16": + func = "_unpack_uint16"; break; - case 'int32' : - func = '_unpack_int32'; + case "int32": + func = "_unpack_int32"; break; - case 'uint32' : - func = '_unpack_uint32'; + case "uint32": + func = "_unpack_uint32"; break; } for (let i = 0; i < n; i++) { @@ -135,7 +138,7 @@ export class dapUnpacker { } return out; - }; + } _unpack_byte() { let bytes = 1; @@ -143,9 +146,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } _unpack_uint16() { let bytes = 4; @@ -153,9 +156,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } _unpack_uint32() { let bytes = 4; @@ -163,9 +166,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } _unpack_int16() { let bytes = 4; @@ -173,9 +176,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } _unpack_int32() { let bytes = 4; @@ -183,9 +186,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } _unpack_float32() { let precision = 23; @@ -194,9 +197,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - }; + } _unpack_float64() { let precision = 52; @@ -205,9 +208,9 @@ export class dapUnpacker { let i = this._pos; this._pos = i + bytes; - data = this._buf.slice(i, i + bytes); + let data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - }; + } _unpack_bytes(count) { let i = this._pos; @@ -215,25 +218,25 @@ export class dapUnpacker { for (let c = 0; c < count; c++) { out.push(this._unpack_byte()); } - let padding = (4 - (count % 4)) % 4; + let padding = (4 - count % 4) % 4; this._pos = i + count + padding; return out; - }; + } _unpack_string(count) { let out = []; - let n, i, j; + let n, i, j, data; for (let c = 0; c < count; c++) { n = this._unpack_uint32(); i = this._pos; data = this._buf.slice(i, i + n); - padding = (4 - (n % 4)) % 4; + let padding = (4 - n % 4) % 4; this._pos = i + n + padding; // convert back to string - let str = ''; + let str = ""; for (let i = 0; i < n; i++) { str += String.fromCharCode(data[i]); } @@ -241,7 +244,7 @@ export class dapUnpacker { } return out; - }; + } } export function getBuffer(data) { @@ -266,28 +269,41 @@ function reshape(array, shape) { } function shl(a, b) { - for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1) ; + for ( + ++b; + --b; + a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1 + ); return a; } - function readBits(buffer, start, length) { + let sum = 0; + if (start < 0 || length <= 0) return 0; - for (let offsetLeft, offsetRight = start % 8, curByte = buffer.length - (start >> 3) - 1, - lastByte = buffer.length + (-(start + length) >> 3), diff = curByte - lastByte, - sum = ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) - + (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) - << (diff-- << 3) - offsetRight : 0); diff; sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)) ; + for ( + let offsetLeft, + offsetRight = start % 8, + curByte = buffer.length - (start >> 3) - 1, + lastByte = buffer.length + (-(start + length) >> 3), + diff = curByte - lastByte, + sum = + ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + + (diff && (offsetLeft = (start + length) % 8) + ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) + : 0); + diff; + sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight) + ); return sum; } - function decodeInt(data, bytes, signed) { let x = readBits(data, 0, bytes * 8); let max = Math.pow(2, bytes * 8); let integer; - if (signed && x >= (max / 2)) { + if (signed && x >= max / 2) { integer = x - max; } else { integer = x; @@ -295,8 +311,7 @@ function decodeInt(data, bytes, signed) { return integer; } - -function decodeFloat(buffer, precisionBits, exponentBits) { +function decodeFloat(data, precisionBits, exponentBits) { let buffer = data; let bias = Math.pow(2, exponentBits - 1) - 1; @@ -308,11 +323,17 @@ function decodeFloat(buffer, precisionBits, exponentBits) { let byteValue, startBit, mask; do - for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; - mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2) ; - while (precisionBits -= startBit); - - return exponent == (bias << 1) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity - : (1 + signal * -2) * (exponent || significand ? !exponent ? Math.pow(2, -bias + 1) * significand - : Math.pow(2, exponent - bias) * (1 + significand) : 0); + for ( + byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; + (mask >>= 1); + byteValue & mask && (significand += 1 / divisor), divisor *= 2 + ); + while ((precisionBits -= startBit)); + + return exponent == (bias << 1) + 1 + ? significand ? NaN : signal ? -Infinity : +Infinity + : (1 + signal * -2) * + (exponent || significand + ? !exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand) + : 0); } From 30bbecb52688ea37787b42d3f97a3bc20ecb4af5 Mon Sep 17 00:00:00 2001 From: Wanji Date: Tue, 20 Mar 2018 00:36:09 +0100 Subject: [PATCH 07/19] setup webpack --- .gitignore | 1 + index.js | 4 +- lib/jsdap.js | 4 +- package.json | 11 +- template/index.html | 27 + test.html | 30 -- webpack.config.js | 69 +++ yarn.lock | 1196 ++++++++++++++++++++++++++++++++++++++++++- 8 files changed, 1285 insertions(+), 57 deletions(-) create mode 100644 template/index.html delete mode 100644 test.html create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index ac12f42..86837c5 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,4 @@ typings/ # idea stuff .idea/ +.cache/ diff --git a/index.js b/index.js index 600838d..c67dbe9 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,3 @@ -import JsDap from "./lib/jsdap.js"; +import DapClient from "./lib/jsdap.js"; -export default JsDap; +export default DapClient; diff --git a/lib/jsdap.js b/lib/jsdap.js index 59da0f6..d8efa26 100644 --- a/lib/jsdap.js +++ b/lib/jsdap.js @@ -2,9 +2,9 @@ import { ddsParser, dasParser } from "./parser.js"; import { getBuffer, dapUnpacker } from "./xdr.js"; -import ieHack from "vbscript.js"; +import ieHack from "./vbscript.js"; -export default class JsDap { +export class DapClient { constructor(IE_HACK = false) { this.IE_HACK = IE_HACK; ieHack(this.IE_HACK); diff --git a/package.json b/package.json index 3c488ea..0e3fd80 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,22 @@ "private": false, "devDependencies": { "babel-core": "^6.26.0", + "babel-loader": "^7.1.4", "babel-preset-env": "^1.6.1", + "clean-webpack-plugin": "^0.1.19", "eslint": "^4.19.0", "eslint-plugin-prettier": "^2.6.0", + "html-webpack-plugin": "^3.0.7", "prettier": "^1.11.1", + "uglifyjs-webpack-plugin": "^1.2.4", "webpack": "^4.1.1", - "webpack-cli": "^2.0.12" + "webpack-cli": "^2.0.12", + "webpack-dev-server": "^3.1.1" }, "scripts": { "lint": "eslint --format table --debug ./", - "lint:fix": "eslint --format table --debug --fix ./" + "lint:fix": "eslint --format table --debug --fix ./", + "serve": "webpack-dev-server --open --progress", + "build": "webpack --env.production --progress" } } diff --git a/template/index.html b/template/index.html new file mode 100644 index 0000000..7eb117c --- /dev/null +++ b/template/index.html @@ -0,0 +1,27 @@ + + + + + OpenDap + + + +
+ + +
+ + + diff --git a/test.html b/test.html deleted file mode 100644 index 4f7e7f3..0000000 --- a/test.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - -
- - -
- - - - diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..aed50d6 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,69 @@ +"use strict"; + +const path = require("path"); +const webpack = require("webpack"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const CleanWebpackPlugin = require("clean-webpack-plugin"); +const UglifyJSPlugin = require("uglifyjs-webpack-plugin"); + +module.exports = (env = {}) => { + let mode = env.production ? "production" : "development"; + + let devtool = env.production ? "source-map" : "inline-source-map"; + + let devServer = env.production + ? undefined + : { + contentBase: "./dist", + hot: true + }; + + let plugins = [ + new CleanWebpackPlugin(["dist"], {verbose: true}), + new HtmlWebpackPlugin({ + title: "Output Management", + filename: "index.html", + inject: 'head', + template: './template/index.html' + }) + ]; + + plugins = env.production + ? plugins.concat([ + new UglifyJSPlugin({sourceMap: true}), + new webpack.DefinePlugin({ + "process.env.NODE_ENV": JSON.stringify("production") + }) + ]) + : plugins.concat([new webpack.NamedModulesPlugin(), new webpack.HotModuleReplacementPlugin()]); + + return { + mode: mode, + entry: "./lib/jsdap.js", + devtool: devtool, + devServer: devServer, + module: { + rules: [ + { + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + use: { + loader: "babel-loader", + options: { + cacheDirectory: path.resolve(__dirname, ".cache", "babel") + // presets: [['env', {modules: false}]] + } + } + } + ] + }, + plugins: plugins, + output: { + path: path.resolve(__dirname, './dist'), + filename: 'jsdap.js', + libraryTarget: 'umd', + // libraryExport: 'default', + library: 'jsdap' + } + }; +}; diff --git a/yarn.lock b/yarn.lock index 033976d..dbcae95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,13 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + acorn-dynamic-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" @@ -70,6 +77,10 @@ ansi-escapes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -142,6 +153,25 @@ array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -206,7 +236,7 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@^1.5.0: +async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -395,6 +425,14 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-loader@^7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.4.tgz#e3463938bd4e6d55d1c174c5485d406a188ed015" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -875,6 +913,10 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -907,6 +949,36 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -1008,6 +1080,10 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000792" electron-to-chromium "^1.3.30" +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -1028,6 +1104,10 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" @@ -1082,6 +1162,24 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1124,7 +1222,7 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" -chokidar@^2.0.2: +chokidar@^2.0.0, chokidar@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" dependencies: @@ -1170,6 +1268,18 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-css@4.1.x: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + dependencies: + source-map "0.5.x" + +clean-webpack-plugin@^0.1.19: + version "0.1.19" + resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz#ceda8bb96b00fe168e9b080272960d20fdcadd6d" + dependencies: + rimraf "^2.6.1" + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -1203,6 +1313,14 @@ cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" @@ -1284,6 +1402,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@2.15.x, commander@~2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -1296,6 +1418,24 @@ component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + dependencies: + mime-db ">= 1.33.0 < 2" + +compression@^1.5.2: + version "1.7.2" + resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1308,6 +1448,10 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -1322,10 +1466,26 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -1416,6 +1576,25 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -1442,7 +1621,7 @@ dateformat@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -1454,7 +1633,7 @@ debug@^3.1.0: dependencies: ms "2.0.0" -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1468,6 +1647,10 @@ decompress-response@^3.2.0, decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + deep-extend@^0.4.0, deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -1476,6 +1659,13 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1507,6 +1697,17 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1515,6 +1716,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -1522,6 +1731,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + detect-conflict@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" @@ -1536,6 +1749,10 @@ detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + diff@^3.3.1, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -1548,16 +1765,73 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" dependencies: esutils "^2.0.2" +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1581,6 +1855,10 @@ editions@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + ejs@^2.3.1: version "2.5.7" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" @@ -1609,6 +1887,10 @@ emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -1623,13 +1905,17 @@ enhanced-resolve@^4.0.0: memory-fs "^0.4.0" tapable "^1.0.0" +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: @@ -1642,6 +1928,28 @@ error@^7.0.2: string-template "~0.2.1" xtend "~4.0.0" +es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1738,10 +2046,24 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -1795,6 +2117,41 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +express@^4.16.2: + version "4.16.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1863,6 +2220,18 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -1906,6 +2275,18 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" @@ -1914,6 +2295,13 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1956,6 +2344,10 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1968,12 +2360,20 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" dependencies: map-cache "^0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -2018,6 +2418,10 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -2039,6 +2443,10 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2202,6 +2610,10 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -2268,6 +2680,12 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + hash-base@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" @@ -2297,6 +2715,10 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2326,10 +2748,90 @@ hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.12" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.12.tgz#6bfad4d0327f5b8d2b62f5854654ac3703b9b031" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.15.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + +html-webpack-plugin@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.0.7.tgz#b46074f6a76e791581ffe9bb059a72b452d99907" + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + http-cache-semantics@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-parser-js@>=0.4.0: + version "0.4.11" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.11.tgz#5b720849c650903c27e521633d94696ee95f3529" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -2342,7 +2844,7 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -iconv-lite@^0.4.17: +iconv-lite@0.4.19, iconv-lite@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -2358,6 +2860,13 @@ ignore@^3.3.3: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2383,7 +2892,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2432,6 +2941,12 @@ inquirer@^5.1.0: strip-ansi "^4.0.0" through "^2.3.6" +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + interpret@^1.0.0, interpret@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" @@ -2453,6 +2968,14 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2485,6 +3008,10 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2497,6 +3024,10 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -2645,6 +3176,12 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -2663,6 +3200,10 @@ is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2675,6 +3216,14 @@ is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2809,6 +3358,10 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -2832,6 +3385,10 @@ keyv@3.0.0: dependencies: json-buffer "3.0.0" +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -2913,6 +3470,25 @@ listr@^0.13.0: stream-to-observable "^0.2.0" strip-ansi "^3.0.1" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -2926,7 +3502,16 @@ loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^1.1.0: +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" dependencies: @@ -2941,7 +3526,7 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -2964,12 +3549,31 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + +loglevelnext@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.3.tgz#0f69277e73bbbf2cd61b94d82313216bf87ac66e" + loose-envify@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: js-tokens "^3.0.0" +loud-rejection@^1.0.0, loud-rejection@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + lowercase-keys@1.0.0, lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" @@ -2991,6 +3595,10 @@ map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -3004,6 +3612,10 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + mem-fs-editor@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" @@ -3040,7 +3652,30 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -micromatch@^2.3.7: +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -3083,16 +3718,24 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@~1.33.0: +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: mime-db "~1.33.0" +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -3123,7 +3766,7 @@ minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.2.0: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3149,7 +3792,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -3170,6 +3813,17 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + multimatch@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" @@ -3208,6 +3862,16 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + neo-async@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" @@ -3216,10 +3880,20 @@ nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + node-dir@0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" +node-forge@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" + node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" @@ -3278,7 +3952,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -3316,6 +3990,12 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -3336,12 +4016,23 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" dependencies: isobject "^3.0.0" +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -3355,6 +4046,20 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3371,6 +4076,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opn@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" + optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -3391,6 +4102,12 @@ ora@^0.2.3: cli-spinners "^0.1.2" object-assign "^4.0.1" +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -3492,6 +4209,12 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" @@ -3511,6 +4234,12 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -3522,6 +4251,10 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -3534,6 +4267,12 @@ path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -3554,6 +4293,24 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -3602,6 +4359,14 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -3630,6 +4395,13 @@ pretty-bytes@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + private@^0.1.6, private@^0.1.7, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -3650,6 +4422,13 @@ promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" +proxy-addr@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.6.0" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -3691,6 +4470,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -3711,6 +4494,14 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -3731,6 +4522,19 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + rc@^1.1.7: version "1.2.6" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" @@ -3747,6 +4551,20 @@ read-chunk@^2.1.0: pify "^3.0.0" safe-buffer "^5.1.1" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -3754,6 +4572,22 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -3762,7 +4596,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: @@ -3774,6 +4608,15 @@ read-pkg@^3.0.0: string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3808,6 +4651,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" @@ -3859,10 +4709,24 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -3927,6 +4791,10 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" +requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -4027,7 +4895,7 @@ rxjs@^5.4.2, rxjs@^5.5.2: dependencies: symbol-observable "1.0.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -4048,14 +4916,63 @@ scoped-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758" + dependencies: + node-forge "0.7.1" + "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + serialize-javascript@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4086,6 +5003,14 @@ setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.10" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" @@ -4166,6 +5091,24 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -4196,7 +5139,7 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" -source-map@^0.5.6, source-map@^0.5.7: +source-map@0.5.x, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -4226,6 +5169,29 @@ spdx-license-ids@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" +spdy-transport@^2.0.18: + version "2.0.20" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -4263,6 +5229,10 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +"statuses@>= 1.3.1 < 2", statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -4326,6 +5296,10 @@ string_decoder@^1.0.0: dependencies: safe-buffer "~5.1.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" @@ -4373,6 +5347,12 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -4381,7 +5361,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^5.3.0: +supports-color@^5.1.0, supports-color@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" dependencies: @@ -4457,6 +5437,10 @@ through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +thunky@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -4503,12 +5487,20 @@ to-regex@^3.0.1: regex-not "^1.0.2" safe-regex "^1.1.0" +toposort@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec" + tough-cookie@~2.3.0: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" dependencies: punycode "^1.4.1" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -4533,6 +5525,13 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -4544,7 +5543,14 @@ uglify-es@^3.3.4: commander "~2.13.0" source-map "~0.6.1" -uglifyjs-webpack-plugin@^1.1.1: +uglify-js@3.3.x: + version "3.3.16" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.16.tgz#23ba13efa27aa00885be7417819e8a9787f94028" + dependencies: + commander "~2.15.0" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.1.1, uglifyjs-webpack-plugin@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043" dependencies: @@ -4586,6 +5592,10 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -4601,10 +5611,18 @@ upath@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +url-join@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -4617,6 +5635,20 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" + dependencies: + querystringify "~1.0.0" + requires-port "~1.0.0" + url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" @@ -4638,13 +5670,32 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: inherits "2.0.1" -uuid@^3.0.0: +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" @@ -4659,6 +5710,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -4711,6 +5766,12 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + dependencies: + minimalistic-assert "^1.0.0" + webpack-addons@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" @@ -4747,6 +5808,60 @@ webpack-cli@^2.0.12: yeoman-environment "^2.0.0" yeoman-generator "^2.0.3" +webpack-dev-middleware@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.0.1.tgz#7ffd6d0192883c83d3f262e8d7dec822493c6166" + dependencies: + loud-rejection "^1.6.0" + memory-fs "~0.4.1" + mime "^2.1.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + url-join "^4.0.0" + webpack-log "^1.0.1" + +webpack-dev-server@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.1.tgz#3c0fdd1ba3b50ebc79858a0e6b9ccdd1565b0c24" + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + import-local "^1.0.0" + internal-ip "1.2.0" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "3.0.1" + webpack-log "^1.1.2" + yargs "9.0.1" + +webpack-log@^1.0.1, webpack-log@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.1.2.tgz#cdc76016537eed24708dc6aa3d1e52189efee107" + dependencies: + chalk "^2.1.0" + log-symbols "^2.1.0" + loglevelnext "^1.0.1" + uuid "^3.1.0" + webpack-sources@^1.0.1, webpack-sources@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" @@ -4778,6 +5893,17 @@ webpack@^4.1.1: watchpack "^1.5.0" webpack-sources "^1.0.1" +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -4829,6 +5955,10 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4845,12 +5975,36 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" +yargs@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yargs@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" From 61e10bec47e2101649a6600a5b41773a26580bd9 Mon Sep 17 00:00:00 2001 From: Wanji Date: Tue, 20 Mar 2018 00:41:08 +0100 Subject: [PATCH 08/19] provide dist --- dist/index.html | 27 +++++++++++++++++++++++++++ dist/jsdap.js | 2 ++ dist/jsdap.js.map | 1 + 3 files changed, 30 insertions(+) create mode 100644 dist/index.html create mode 100644 dist/jsdap.js create mode 100644 dist/jsdap.js.map diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..e5265cd --- /dev/null +++ b/dist/index.html @@ -0,0 +1,27 @@ + + + + + OpenDap + + + +
+ + +
+ + + diff --git a/dist/jsdap.js b/dist/jsdap.js new file mode 100644 index 0000000..d168324 --- /dev/null +++ b/dist/jsdap.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.jsdap=e():t.jsdap=e()}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){t&&document.write(''\n );\n}\n","// Lots of code from http://jsfromhell.com/classes/binary-parser\n// Jonas Raoni Soares Silva\n// http://jsfromhell.com/classes/binary-parser [v1.0]\n\n\"use strict\";\n\nconst END_OF_SEQUENCE = \"\\xa5\\x00\\x00\\x00\";\nconst START_OF_SEQUENCE = \"\\x5a\\x00\\x00\\x00\";\n\nexport class dapUnpacker {\n constructor(xdrdata, daplet) {\n this._buf = xdrdata;\n this.daplet = daplet;\n this._pos = 0;\n }\n\n getValue() {\n let i = this._pos;\n let type = this.daplet.type.toLowerCase();\n\n if (type == \"structure\" || type == \"dataset\") {\n let out = [],\n tmp;\n let daplet = this.daplet;\n for (let child in daplet) {\n if (daplet[child].type) {\n this.daplet = daplet[child];\n tmp = this.getValue();\n out.push(tmp);\n }\n }\n this.daplet = daplet;\n return out;\n } else if (type == \"grid\") {\n let out = [],\n tmp;\n let daplet = this.daplet;\n\n this.daplet = daplet.array;\n tmp = this.getValue();\n out.push(tmp);\n\n for (let map in daplet.maps) {\n this.daplet = daplet.maps[map];\n tmp = this.getValue();\n out.push(tmp);\n }\n\n this.daplet = daplet;\n return out;\n } else if (type == \"sequence\") {\n let mark = this._unpack_uint32();\n let out = [],\n struct,\n tmp;\n let daplet = this.daplet;\n while (mark != 2768240640) {\n struct = [];\n for (let child in daplet) {\n if (daplet[child].type) {\n this.daplet = daplet[child];\n tmp = this.getValue();\n struct.push(tmp);\n }\n }\n out.push(struct);\n mark = this._unpack_uint32();\n }\n this.daplet = daplet;\n return out;\n // This is a request for a base type letiable inside a\n // sequence.\n } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) {\n let mark = this._unpack_uint32();\n let out = [],\n tmp;\n while (mark != 2768240640) {\n tmp = this.getValue();\n out.push(tmp);\n mark = this._unpack_uint32();\n }\n return out;\n }\n\n let n = 1;\n if (this.daplet.shape.length) {\n n = this._unpack_uint32();\n if (type != \"url\" && type != \"string\") {\n this._unpack_uint32();\n }\n }\n\n // Bytes?\n let out;\n if (type == \"byte\") {\n out = this._unpack_bytes(n);\n // String?\n } else if (type == \"url\" || type == \"string\") {\n out = this._unpack_string(n);\n } else {\n out = [];\n let func;\n switch (type) {\n case \"float32\":\n func = \"_unpack_float32\";\n break;\n case \"float64\":\n func = \"_unpack_float64\";\n break;\n case \"int\":\n func = \"_unpack_int32\";\n break;\n case \"uint\":\n func = \"_unpack_uint32\";\n break;\n case \"int16\":\n func = \"_unpack_int16\";\n break;\n case \"uint16\":\n func = \"_unpack_uint16\";\n break;\n case \"int32\":\n func = \"_unpack_int32\";\n break;\n case \"uint32\":\n func = \"_unpack_uint32\";\n break;\n }\n for (let i = 0; i < n; i++) {\n out.push(this[func]());\n }\n }\n\n if (this.daplet.shape) {\n out = reshape(out, this.daplet.shape);\n } else {\n out = out[0];\n }\n\n return out;\n }\n\n _unpack_byte() {\n let bytes = 1;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint16() {\n let bytes = 4;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint32() {\n let bytes = 4;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int16() {\n let bytes = 4;\n let signed = true;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int32() {\n let bytes = 4;\n let signed = true;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_float32() {\n let precision = 23;\n let exponent = 8;\n let bytes = 4;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_float64() {\n let precision = 52;\n let exponent = 11;\n let bytes = 8;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_bytes(count) {\n let i = this._pos;\n let out = [];\n for (let c = 0; c < count; c++) {\n out.push(this._unpack_byte());\n }\n let padding = (4 - count % 4) % 4;\n this._pos = i + count + padding;\n\n return out;\n }\n\n _unpack_string(count) {\n let out = [];\n let n, i, j, data;\n for (let c = 0; c < count; c++) {\n n = this._unpack_uint32();\n i = this._pos;\n data = this._buf.slice(i, i + n);\n\n let padding = (4 - n % 4) % 4;\n this._pos = i + n + padding;\n\n // convert back to string\n let str = \"\";\n for (let i = 0; i < n; i++) {\n str += String.fromCharCode(data[i]);\n }\n out.push(str);\n }\n\n return out;\n }\n}\n\nexport function getBuffer(data) {\n let b = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n b[i] = data.charCodeAt(i) & 0xff;\n }\n return b;\n}\n\nfunction reshape(array, shape) {\n if (!shape.length) return array[0];\n let out = [];\n let size, start, stop;\n for (let i = 0; i < shape[0]; i++) {\n size = array.length / shape[0];\n start = i * size;\n stop = start + size;\n out.push(reshape(array.slice(start, stop), shape.slice(1)));\n }\n return out;\n}\n\nfunction shl(a, b) {\n for (\n ++b;\n --b;\n a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1\n );\n return a;\n}\n\nfunction readBits(buffer, start, length) {\n let sum = 0;\n\n if (start < 0 || length <= 0) return 0;\n\n for (\n let offsetLeft,\n offsetRight = start % 8,\n curByte = buffer.length - (start >> 3) - 1,\n lastByte = buffer.length + (-(start + length) >> 3),\n diff = curByte - lastByte,\n sum =\n ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) +\n (diff && (offsetLeft = (start + length) % 8)\n ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight)\n : 0);\n diff;\n sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)\n );\n return sum;\n}\n\nfunction decodeInt(data, bytes, signed) {\n let x = readBits(data, 0, bytes * 8);\n let max = Math.pow(2, bytes * 8);\n let integer;\n if (signed && x >= max / 2) {\n integer = x - max;\n } else {\n integer = x;\n }\n return integer;\n}\n\nfunction decodeFloat(data, precisionBits, exponentBits) {\n let buffer = data;\n\n let bias = Math.pow(2, exponentBits - 1) - 1;\n let signal = readBits(buffer, precisionBits + exponentBits, 1);\n let exponent = readBits(buffer, precisionBits, exponentBits);\n let significand = 0;\n let divisor = 2;\n let curByte = buffer.length + (-precisionBits >> 3) - 1;\n let byteValue, startBit, mask;\n\n do\n for (\n byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit;\n (mask >>= 1);\n byteValue & mask && (significand += 1 / divisor), divisor *= 2\n );\n while ((precisionBits -= startBit));\n\n return exponent == (bias << 1) + 1\n ? significand ? NaN : signal ? -Infinity : +Infinity\n : (1 + signal * -2) *\n (exponent || significand\n ? !exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)\n : 0);\n}\n","\"use strict\";\n\nconst atomicTypes = [\n \"byte\",\n \"int\",\n \"uint\",\n \"int16\",\n \"uint16\",\n \"int32\",\n \"uint32\",\n \"float32\",\n \"float64\",\n \"string\",\n \"url\",\n \"alias\"\n];\nconst structures = [\"Sequence\", \"Structure\", \"Dataset\"];\nconst IDENTIFIER_REGEX = \"[\\\\w-/]\";\n\nArray.prototype.contains = item => {\n for (let i = 0, el = this[i]; i < this.length; el = this[++i]) {\n if (item == el) return true;\n }\n return false;\n};\n\nString.prototype.trim = () => {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n};\n\nString.prototype.ltrim = () => {\n return this.replace(/^[\\s\\n\\r\\t]+/, \"\");\n};\n\nString.prototype.rtrim = () => {\n return this.replace(/\\s+$/, \"\");\n};\n\nfunction pseudoSafeEval(str) {\n if (/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(str.replace(/\\\\./g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"/g, \"\"))) {\n return eval(\"(\" + str + \")\");\n }\n return str;\n}\n\nclass dapType {\n constructor(type) {\n this.type = type;\n this.attributes = {};\n }\n}\n\nclass simpleParser {\n constructor(input) {\n this.stream = input;\n }\n\n peek(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n return m[0];\n } else {\n return \"\";\n }\n }\n\n consume(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n this.stream = this.stream.substr(m[0].length).ltrim();\n return m[0];\n } else {\n throw new Error(\"Unable to parse stream: \" + this.stream.substr(0, 10));\n }\n }\n}\n\nexport class ddsParser extends simpleParser {\n constructor(dds) {\n super(dds);\n this.dds = dds;\n }\n\n parse() {\n let dataset = new dapType(\"Dataset\");\n\n this.consume(\"dataset\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n dataset[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n dataset.id = dataset.name = this.consume(\"[^;]+\");\n this.consume(\";\");\n\n // Set id.\n function walk(daplet, includeParent) {\n for (let attr in daplet) {\n let child = daplet[attr];\n if (child.type) {\n child.id = child.name;\n if (includeParent) {\n child.id = daplet.id + \".\" + child.id;\n }\n walk(child, true);\n }\n }\n }\n\n walk(dataset, false);\n\n return dataset;\n }\n\n _declaration() {\n let type = this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase();\n switch (type) {\n case \"grid\":\n return this._grid();\n case \"structure\":\n return this._structure();\n case \"sequence\":\n return this._sequence();\n default:\n return this._base_declaration();\n }\n }\n\n _base_declaration() {\n let baseType = new dapType();\n\n baseType.type = this.consume(IDENTIFIER_REGEX + \"+\");\n baseType.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n baseType.dimensions = [];\n baseType.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n baseType.dimensions.push(token);\n this.consume(\"=\");\n let token = this.consume(\"\\\\d+\");\n }\n baseType.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n this.consume(\";\");\n\n return baseType;\n }\n\n _grid() {\n let grid = new dapType(\"Grid\");\n\n this.consume(\"grid\");\n this.consume(\"{\");\n\n this.consume(\"array\");\n this.consume(\":\");\n grid.array = this._base_declaration();\n\n this.consume(\"maps\");\n this.consume(\":\");\n grid.maps = {};\n while (!this.peek(\"}\")) {\n let map_ = this._base_declaration();\n grid.maps[map_.name] = map_;\n }\n this.consume(\"}\");\n\n grid.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return grid;\n }\n\n _sequence() {\n let sequence = new dapType(\"Sequence\");\n\n this.consume(\"sequence\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n sequence[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n sequence.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return sequence;\n }\n\n _structure() {\n let structure = new dapType(\"Structure\");\n\n this.consume(\"structure\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n structure[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n structure.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n structure.dimensions = [];\n structure.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n structure.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n structure.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n\n this.consume(\";\");\n\n return structure;\n }\n}\n\nexport class dasParser extends simpleParser {\n constructor(das, dataset) {\n super(das);\n this.das = das;\n this.dataset = dataset;\n }\n\n parse() {\n this._target = this.dataset;\n\n this.consume(\"attributes\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n return this.dataset;\n }\n\n _attr_container() {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(this._target.attributes);\n\n if (this._target.type == \"Grid\") {\n for (let map in this._target.maps) {\n if (this.dataset[map]) {\n let map = this._target.maps[map];\n for (let name in map.attributes) {\n this.dataset[map].attributes[name] = map.attributes[name];\n }\n }\n }\n }\n } else {\n this._container();\n }\n }\n\n _container() {\n let name = this.consume(\"[\\\\w-_\\\\./]+\");\n this.consume(\"{\");\n\n if (name.indexOf(\".\") > -1) {\n let names = name.split(\".\");\n let target = this._target;\n for (let i = 0; i < names.length; i++) {\n this._target = this._target[names[i]];\n }\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else if (structures.contains(this._target.type) && this._target[name]) {\n let target = this._target;\n this._target = target[name];\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else {\n this._target.attributes[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n\n _metadata() {\n let output = {};\n while (!this.peek(\"}\")) {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(output);\n } else {\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\"{\");\n output[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n return output;\n }\n\n _attribute(object) {\n let type = this.consume(IDENTIFIER_REGEX + \"+\");\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n let values = [];\n while (!this.peek(\";\")) {\n let value = this.consume('\".*?[^\\\\\\\\]\"|[^;,]+');\n\n if (type.toLowerCase() == \"string\" || type.toLowerCase() == \"url\") {\n value = pseudoSafeEval(value);\n } else if (type.toLowerCase() == \"alias\") {\n let target, tokens;\n if (value.match(/^\\\\./)) {\n tokens = value.substring(1).split(\".\");\n target = this.dataset;\n } else {\n tokens = value.split(\".\");\n target = this._target;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (target[token]) {\n target = target[token];\n } else if (target.array.name == token) {\n target = target.array;\n } else if (target.maps[token]) {\n target = target.maps[token];\n } else {\n target = target.attributes[token];\n }\n value = target;\n }\n } else {\n if (value.toLowerCase() == \"nan\") {\n value = NaN;\n } else {\n value = pseudoSafeEval(value);\n }\n }\n values.push(value);\n if (this.peek(\",\")) {\n this.consume(\",\");\n }\n }\n this.consume(\";\");\n\n if (values.length == 1) {\n values = values[0];\n }\n\n object[name] = values;\n }\n}\n","\"use strict\";\n\nimport { ddsParser, dasParser } from \"./parser.js\";\nimport { getBuffer, dapUnpacker } from \"./xdr.js\";\nimport ieHack from \"./vbscript.js\";\n\nexport class DapClient {\n constructor(IE_HACK = false) {\n this.IE_HACK = IE_HACK;\n ieHack(this.IE_HACK);\n }\n\n proxyUrl(url, callback, binary, extraheaders) {\n let xml = undefined;\n\n // Mozilla/Safari/IE7+\n if (window.XMLHttpRequest) {\n xml = new XMLHttpRequest();\n // IE6\n } else if (window.ActiveXObject) {\n xml = new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n xml.open(\"GET\", url, true);\n if (xml.overrideMimeType) {\n xml.overrideMimeType(\"text/plain; charset=x-user-defined\");\n } else {\n xml.setRequestHeader(\"Accept-Charset\", \"x-user-defined\");\n }\n if (extraheaders) {\n for (let key in extraheaders) {\n xml.setRequestHeader(key, extraheaders[key]);\n }\n }\n\n xml.onreadystatechange = function() {\n if (xml.readyState == 4) {\n if (!binary) {\n callback(xml.responseText);\n } else if (this.IE_HACK) {\n callback(BinaryToArray(xml.responseBody).toArray());\n } else {\n callback(getBuffer(xml.responseText));\n }\n }\n };\n xml.send(\"\");\n }\n\n /** Flatten the data array as data attributes of elements of daplet */\n _applydata(data, daplet) {\n let i = 0;\n for (let child in daplet) {\n if (!daplet[child].type) continue;\n daplet[child].data = data[i++];\n if (daplet[child].type == \"Structure\") {\n this._applydata(daplet[child].data, daplet[child]);\n }\n }\n }\n\n /**\n * Load the dataset and call the callback with (data) where data is an array of data\n * the url must be a url with .dods extension.\n * @params:\n * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string)\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadData(url, callback, extraheaders) {\n this.proxyUrl(\n url,\n function(dods) {\n let dds = \"\";\n while (!dds.match(/\\nData:\\n$/)) {\n let c = dods.splice(0, 1);\n if (c.length === 0) throw new Error(\"Error reading data, are you sur this is a .dods request ?\");\n dds += String.fromCharCode(c);\n }\n dds = dds.substr(0, dds.length - 7);\n\n let daplet = new ddsParser(dds).parse();\n let data = new dapUnpacker(dods, daplet).getValue();\n this._applydata(data, daplet);\n callback(daplet);\n },\n true,\n extraheaders\n );\n }\n\n /**\n * Load the dataset and call the callback with (dataset) where dataset is the dataset \"metadata\";\n * - url (string): the url (must be a bare OPeNDAP url, without \"format extension\" nor query parameters).\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadDataset(url, callback, extraheaders) {\n // Load DDS.\n this.proxyUrl(\n url + \".dds\",\n function(dds) {\n let dataset = new ddsParser(dds).parse();\n\n // Load DAS.\n this.proxyUrl(\n url + \".das\",\n function(das) {\n dataset = new dasParser(das, dataset).parse();\n callback(dataset);\n },\n false,\n extraheaders\n );\n },\n false,\n extraheaders\n );\n }\n}\n"],"sourceRoot":""} \ No newline at end of file From d42c4c439f4feac0caebd74847cac2f7897fe96f Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 12:12:43 +0100 Subject: [PATCH 09/19] fix "this" issue in jsdap but dimensions and shape is potentially fucked up --- dist/index.html | 27 ----------------- dist/jsdap.js | 2 -- dist/jsdap.js.map | 1 - lib/jsdap.js | 8 ++--- lib/parser.js | 8 ++--- package.json | 2 +- template/index.html | 23 ++++++++++++++- yarn.lock | 71 ++++++++++++++++++++++++++++++++++++++++++--- 8 files changed, 98 insertions(+), 44 deletions(-) delete mode 100644 dist/index.html delete mode 100644 dist/jsdap.js delete mode 100644 dist/jsdap.js.map diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index e5265cd..0000000 --- a/dist/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - OpenDap - - - -
- - -
- - - diff --git a/dist/jsdap.js b/dist/jsdap.js deleted file mode 100644 index d168324..0000000 --- a/dist/jsdap.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.jsdap=e():t.jsdap=e()}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){t&&document.write(''\n );\n}\n","// Lots of code from http://jsfromhell.com/classes/binary-parser\n// Jonas Raoni Soares Silva\n// http://jsfromhell.com/classes/binary-parser [v1.0]\n\n\"use strict\";\n\nconst END_OF_SEQUENCE = \"\\xa5\\x00\\x00\\x00\";\nconst START_OF_SEQUENCE = \"\\x5a\\x00\\x00\\x00\";\n\nexport class dapUnpacker {\n constructor(xdrdata, daplet) {\n this._buf = xdrdata;\n this.daplet = daplet;\n this._pos = 0;\n }\n\n getValue() {\n let i = this._pos;\n let type = this.daplet.type.toLowerCase();\n\n if (type == \"structure\" || type == \"dataset\") {\n let out = [],\n tmp;\n let daplet = this.daplet;\n for (let child in daplet) {\n if (daplet[child].type) {\n this.daplet = daplet[child];\n tmp = this.getValue();\n out.push(tmp);\n }\n }\n this.daplet = daplet;\n return out;\n } else if (type == \"grid\") {\n let out = [],\n tmp;\n let daplet = this.daplet;\n\n this.daplet = daplet.array;\n tmp = this.getValue();\n out.push(tmp);\n\n for (let map in daplet.maps) {\n this.daplet = daplet.maps[map];\n tmp = this.getValue();\n out.push(tmp);\n }\n\n this.daplet = daplet;\n return out;\n } else if (type == \"sequence\") {\n let mark = this._unpack_uint32();\n let out = [],\n struct,\n tmp;\n let daplet = this.daplet;\n while (mark != 2768240640) {\n struct = [];\n for (let child in daplet) {\n if (daplet[child].type) {\n this.daplet = daplet[child];\n tmp = this.getValue();\n struct.push(tmp);\n }\n }\n out.push(struct);\n mark = this._unpack_uint32();\n }\n this.daplet = daplet;\n return out;\n // This is a request for a base type letiable inside a\n // sequence.\n } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) {\n let mark = this._unpack_uint32();\n let out = [],\n tmp;\n while (mark != 2768240640) {\n tmp = this.getValue();\n out.push(tmp);\n mark = this._unpack_uint32();\n }\n return out;\n }\n\n let n = 1;\n if (this.daplet.shape.length) {\n n = this._unpack_uint32();\n if (type != \"url\" && type != \"string\") {\n this._unpack_uint32();\n }\n }\n\n // Bytes?\n let out;\n if (type == \"byte\") {\n out = this._unpack_bytes(n);\n // String?\n } else if (type == \"url\" || type == \"string\") {\n out = this._unpack_string(n);\n } else {\n out = [];\n let func;\n switch (type) {\n case \"float32\":\n func = \"_unpack_float32\";\n break;\n case \"float64\":\n func = \"_unpack_float64\";\n break;\n case \"int\":\n func = \"_unpack_int32\";\n break;\n case \"uint\":\n func = \"_unpack_uint32\";\n break;\n case \"int16\":\n func = \"_unpack_int16\";\n break;\n case \"uint16\":\n func = \"_unpack_uint16\";\n break;\n case \"int32\":\n func = \"_unpack_int32\";\n break;\n case \"uint32\":\n func = \"_unpack_uint32\";\n break;\n }\n for (let i = 0; i < n; i++) {\n out.push(this[func]());\n }\n }\n\n if (this.daplet.shape) {\n out = reshape(out, this.daplet.shape);\n } else {\n out = out[0];\n }\n\n return out;\n }\n\n _unpack_byte() {\n let bytes = 1;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint16() {\n let bytes = 4;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint32() {\n let bytes = 4;\n let signed = false;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int16() {\n let bytes = 4;\n let signed = true;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int32() {\n let bytes = 4;\n let signed = true;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_float32() {\n let precision = 23;\n let exponent = 8;\n let bytes = 4;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_float64() {\n let precision = 52;\n let exponent = 11;\n let bytes = 8;\n\n let i = this._pos;\n this._pos = i + bytes;\n let data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_bytes(count) {\n let i = this._pos;\n let out = [];\n for (let c = 0; c < count; c++) {\n out.push(this._unpack_byte());\n }\n let padding = (4 - count % 4) % 4;\n this._pos = i + count + padding;\n\n return out;\n }\n\n _unpack_string(count) {\n let out = [];\n let n, i, j, data;\n for (let c = 0; c < count; c++) {\n n = this._unpack_uint32();\n i = this._pos;\n data = this._buf.slice(i, i + n);\n\n let padding = (4 - n % 4) % 4;\n this._pos = i + n + padding;\n\n // convert back to string\n let str = \"\";\n for (let i = 0; i < n; i++) {\n str += String.fromCharCode(data[i]);\n }\n out.push(str);\n }\n\n return out;\n }\n}\n\nexport function getBuffer(data) {\n let b = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n b[i] = data.charCodeAt(i) & 0xff;\n }\n return b;\n}\n\nfunction reshape(array, shape) {\n if (!shape.length) return array[0];\n let out = [];\n let size, start, stop;\n for (let i = 0; i < shape[0]; i++) {\n size = array.length / shape[0];\n start = i * size;\n stop = start + size;\n out.push(reshape(array.slice(start, stop), shape.slice(1)));\n }\n return out;\n}\n\nfunction shl(a, b) {\n for (\n ++b;\n --b;\n a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1\n );\n return a;\n}\n\nfunction readBits(buffer, start, length) {\n let sum = 0;\n\n if (start < 0 || length <= 0) return 0;\n\n for (\n let offsetLeft,\n offsetRight = start % 8,\n curByte = buffer.length - (start >> 3) - 1,\n lastByte = buffer.length + (-(start + length) >> 3),\n diff = curByte - lastByte,\n sum =\n ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) +\n (diff && (offsetLeft = (start + length) % 8)\n ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight)\n : 0);\n diff;\n sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)\n );\n return sum;\n}\n\nfunction decodeInt(data, bytes, signed) {\n let x = readBits(data, 0, bytes * 8);\n let max = Math.pow(2, bytes * 8);\n let integer;\n if (signed && x >= max / 2) {\n integer = x - max;\n } else {\n integer = x;\n }\n return integer;\n}\n\nfunction decodeFloat(data, precisionBits, exponentBits) {\n let buffer = data;\n\n let bias = Math.pow(2, exponentBits - 1) - 1;\n let signal = readBits(buffer, precisionBits + exponentBits, 1);\n let exponent = readBits(buffer, precisionBits, exponentBits);\n let significand = 0;\n let divisor = 2;\n let curByte = buffer.length + (-precisionBits >> 3) - 1;\n let byteValue, startBit, mask;\n\n do\n for (\n byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit;\n (mask >>= 1);\n byteValue & mask && (significand += 1 / divisor), divisor *= 2\n );\n while ((precisionBits -= startBit));\n\n return exponent == (bias << 1) + 1\n ? significand ? NaN : signal ? -Infinity : +Infinity\n : (1 + signal * -2) *\n (exponent || significand\n ? !exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)\n : 0);\n}\n","\"use strict\";\n\nconst atomicTypes = [\n \"byte\",\n \"int\",\n \"uint\",\n \"int16\",\n \"uint16\",\n \"int32\",\n \"uint32\",\n \"float32\",\n \"float64\",\n \"string\",\n \"url\",\n \"alias\"\n];\nconst structures = [\"Sequence\", \"Structure\", \"Dataset\"];\nconst IDENTIFIER_REGEX = \"[\\\\w-/]\";\n\nArray.prototype.contains = item => {\n for (let i = 0, el = this[i]; i < this.length; el = this[++i]) {\n if (item == el) return true;\n }\n return false;\n};\n\nString.prototype.trim = () => {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n};\n\nString.prototype.ltrim = () => {\n return this.replace(/^[\\s\\n\\r\\t]+/, \"\");\n};\n\nString.prototype.rtrim = () => {\n return this.replace(/\\s+$/, \"\");\n};\n\nfunction pseudoSafeEval(str) {\n if (/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(str.replace(/\\\\./g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"/g, \"\"))) {\n return eval(\"(\" + str + \")\");\n }\n return str;\n}\n\nclass dapType {\n constructor(type) {\n this.type = type;\n this.attributes = {};\n }\n}\n\nclass simpleParser {\n constructor(input) {\n this.stream = input;\n }\n\n peek(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n return m[0];\n } else {\n return \"\";\n }\n }\n\n consume(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n this.stream = this.stream.substr(m[0].length).ltrim();\n return m[0];\n } else {\n throw new Error(\"Unable to parse stream: \" + this.stream.substr(0, 10));\n }\n }\n}\n\nexport class ddsParser extends simpleParser {\n constructor(dds) {\n super(dds);\n this.dds = dds;\n }\n\n parse() {\n let dataset = new dapType(\"Dataset\");\n\n this.consume(\"dataset\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n dataset[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n dataset.id = dataset.name = this.consume(\"[^;]+\");\n this.consume(\";\");\n\n // Set id.\n function walk(daplet, includeParent) {\n for (let attr in daplet) {\n let child = daplet[attr];\n if (child.type) {\n child.id = child.name;\n if (includeParent) {\n child.id = daplet.id + \".\" + child.id;\n }\n walk(child, true);\n }\n }\n }\n\n walk(dataset, false);\n\n return dataset;\n }\n\n _declaration() {\n let type = this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase();\n switch (type) {\n case \"grid\":\n return this._grid();\n case \"structure\":\n return this._structure();\n case \"sequence\":\n return this._sequence();\n default:\n return this._base_declaration();\n }\n }\n\n _base_declaration() {\n let baseType = new dapType();\n\n baseType.type = this.consume(IDENTIFIER_REGEX + \"+\");\n baseType.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n baseType.dimensions = [];\n baseType.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n baseType.dimensions.push(token);\n this.consume(\"=\");\n let token = this.consume(\"\\\\d+\");\n }\n baseType.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n this.consume(\";\");\n\n return baseType;\n }\n\n _grid() {\n let grid = new dapType(\"Grid\");\n\n this.consume(\"grid\");\n this.consume(\"{\");\n\n this.consume(\"array\");\n this.consume(\":\");\n grid.array = this._base_declaration();\n\n this.consume(\"maps\");\n this.consume(\":\");\n grid.maps = {};\n while (!this.peek(\"}\")) {\n let map_ = this._base_declaration();\n grid.maps[map_.name] = map_;\n }\n this.consume(\"}\");\n\n grid.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return grid;\n }\n\n _sequence() {\n let sequence = new dapType(\"Sequence\");\n\n this.consume(\"sequence\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n sequence[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n sequence.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return sequence;\n }\n\n _structure() {\n let structure = new dapType(\"Structure\");\n\n this.consume(\"structure\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n structure[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n structure.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n structure.dimensions = [];\n structure.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n structure.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n structure.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n\n this.consume(\";\");\n\n return structure;\n }\n}\n\nexport class dasParser extends simpleParser {\n constructor(das, dataset) {\n super(das);\n this.das = das;\n this.dataset = dataset;\n }\n\n parse() {\n this._target = this.dataset;\n\n this.consume(\"attributes\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n return this.dataset;\n }\n\n _attr_container() {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(this._target.attributes);\n\n if (this._target.type == \"Grid\") {\n for (let map in this._target.maps) {\n if (this.dataset[map]) {\n let map = this._target.maps[map];\n for (let name in map.attributes) {\n this.dataset[map].attributes[name] = map.attributes[name];\n }\n }\n }\n }\n } else {\n this._container();\n }\n }\n\n _container() {\n let name = this.consume(\"[\\\\w-_\\\\./]+\");\n this.consume(\"{\");\n\n if (name.indexOf(\".\") > -1) {\n let names = name.split(\".\");\n let target = this._target;\n for (let i = 0; i < names.length; i++) {\n this._target = this._target[names[i]];\n }\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else if (structures.contains(this._target.type) && this._target[name]) {\n let target = this._target;\n this._target = target[name];\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else {\n this._target.attributes[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n\n _metadata() {\n let output = {};\n while (!this.peek(\"}\")) {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(output);\n } else {\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\"{\");\n output[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n return output;\n }\n\n _attribute(object) {\n let type = this.consume(IDENTIFIER_REGEX + \"+\");\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n let values = [];\n while (!this.peek(\";\")) {\n let value = this.consume('\".*?[^\\\\\\\\]\"|[^;,]+');\n\n if (type.toLowerCase() == \"string\" || type.toLowerCase() == \"url\") {\n value = pseudoSafeEval(value);\n } else if (type.toLowerCase() == \"alias\") {\n let target, tokens;\n if (value.match(/^\\\\./)) {\n tokens = value.substring(1).split(\".\");\n target = this.dataset;\n } else {\n tokens = value.split(\".\");\n target = this._target;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (target[token]) {\n target = target[token];\n } else if (target.array.name == token) {\n target = target.array;\n } else if (target.maps[token]) {\n target = target.maps[token];\n } else {\n target = target.attributes[token];\n }\n value = target;\n }\n } else {\n if (value.toLowerCase() == \"nan\") {\n value = NaN;\n } else {\n value = pseudoSafeEval(value);\n }\n }\n values.push(value);\n if (this.peek(\",\")) {\n this.consume(\",\");\n }\n }\n this.consume(\";\");\n\n if (values.length == 1) {\n values = values[0];\n }\n\n object[name] = values;\n }\n}\n","\"use strict\";\n\nimport { ddsParser, dasParser } from \"./parser.js\";\nimport { getBuffer, dapUnpacker } from \"./xdr.js\";\nimport ieHack from \"./vbscript.js\";\n\nexport class DapClient {\n constructor(IE_HACK = false) {\n this.IE_HACK = IE_HACK;\n ieHack(this.IE_HACK);\n }\n\n proxyUrl(url, callback, binary, extraheaders) {\n let xml = undefined;\n\n // Mozilla/Safari/IE7+\n if (window.XMLHttpRequest) {\n xml = new XMLHttpRequest();\n // IE6\n } else if (window.ActiveXObject) {\n xml = new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n xml.open(\"GET\", url, true);\n if (xml.overrideMimeType) {\n xml.overrideMimeType(\"text/plain; charset=x-user-defined\");\n } else {\n xml.setRequestHeader(\"Accept-Charset\", \"x-user-defined\");\n }\n if (extraheaders) {\n for (let key in extraheaders) {\n xml.setRequestHeader(key, extraheaders[key]);\n }\n }\n\n xml.onreadystatechange = function() {\n if (xml.readyState == 4) {\n if (!binary) {\n callback(xml.responseText);\n } else if (this.IE_HACK) {\n callback(BinaryToArray(xml.responseBody).toArray());\n } else {\n callback(getBuffer(xml.responseText));\n }\n }\n };\n xml.send(\"\");\n }\n\n /** Flatten the data array as data attributes of elements of daplet */\n _applydata(data, daplet) {\n let i = 0;\n for (let child in daplet) {\n if (!daplet[child].type) continue;\n daplet[child].data = data[i++];\n if (daplet[child].type == \"Structure\") {\n this._applydata(daplet[child].data, daplet[child]);\n }\n }\n }\n\n /**\n * Load the dataset and call the callback with (data) where data is an array of data\n * the url must be a url with .dods extension.\n * @params:\n * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string)\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadData(url, callback, extraheaders) {\n this.proxyUrl(\n url,\n function(dods) {\n let dds = \"\";\n while (!dds.match(/\\nData:\\n$/)) {\n let c = dods.splice(0, 1);\n if (c.length === 0) throw new Error(\"Error reading data, are you sur this is a .dods request ?\");\n dds += String.fromCharCode(c);\n }\n dds = dds.substr(0, dds.length - 7);\n\n let daplet = new ddsParser(dds).parse();\n let data = new dapUnpacker(dods, daplet).getValue();\n this._applydata(data, daplet);\n callback(daplet);\n },\n true,\n extraheaders\n );\n }\n\n /**\n * Load the dataset and call the callback with (dataset) where dataset is the dataset \"metadata\";\n * - url (string): the url (must be a bare OPeNDAP url, without \"format extension\" nor query parameters).\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadDataset(url, callback, extraheaders) {\n // Load DDS.\n this.proxyUrl(\n url + \".dds\",\n function(dds) {\n let dataset = new ddsParser(dds).parse();\n\n // Load DAS.\n this.proxyUrl(\n url + \".das\",\n function(das) {\n dataset = new dasParser(das, dataset).parse();\n callback(dataset);\n },\n false,\n extraheaders\n );\n },\n false,\n extraheaders\n );\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/jsdap.js b/lib/jsdap.js index d8efa26..06b05b6 100644 --- a/lib/jsdap.js +++ b/lib/jsdap.js @@ -1,7 +1,7 @@ "use strict"; -import { ddsParser, dasParser } from "./parser.js"; -import { getBuffer, dapUnpacker } from "./xdr.js"; +import {dasParser, ddsParser} from "./parser.js"; +import {dapUnpacker, getBuffer} from "./xdr.js"; import ieHack from "./vbscript.js"; export class DapClient { @@ -70,7 +70,7 @@ export class DapClient { loadData(url, callback, extraheaders) { this.proxyUrl( url, - function(dods) { + (dods) => { let dds = ""; while (!dds.match(/\nData:\n$/)) { let c = dods.splice(0, 1); @@ -99,7 +99,7 @@ export class DapClient { // Load DDS. this.proxyUrl( url + ".dds", - function(dds) { + (dds) => { let dataset = new ddsParser(dds).parse(); // Load DAS. diff --git a/lib/parser.js b/lib/parser.js index de339a5..2861eab 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -17,22 +17,22 @@ const atomicTypes = [ const structures = ["Sequence", "Structure", "Dataset"]; const IDENTIFIER_REGEX = "[\\w-/]"; -Array.prototype.contains = item => { +Array.prototype.contains = function(item) { for (let i = 0, el = this[i]; i < this.length; el = this[++i]) { if (item == el) return true; } return false; }; -String.prototype.trim = () => { +String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }; -String.prototype.ltrim = () => { +String.prototype.ltrim = function() { return this.replace(/^[\s\n\r\t]+/, ""); }; -String.prototype.rtrim = () => { +String.prototype.rtrim = function() { return this.replace(/\s+$/, ""); }; diff --git a/package.json b/package.json index 0e3fd80..eee462a 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ "lint": "eslint --format table --debug ./", "lint:fix": "eslint --format table --debug --fix ./", "serve": "webpack-dev-server --open --progress", - "build": "webpack --env.production --progress" + "build": "webpack --env.production --progress && cp dist/jsdap.js test/" } } diff --git a/template/index.html b/template/index.html index 7eb117c..1e19fc2 100644 --- a/template/index.html +++ b/template/index.html @@ -9,14 +9,35 @@ var dapClient = new jsdap.DapClient(false); + // for dods request + var dods = "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1004686/dataset.nc.dods?PID-WindTurbine,TIMESCALE-1_turbine_step,/Results/WindTurbine/Turbine_Type"; + // for dds & das + var das = 'https://curtis-dev.edf-labs.net/data/dods/results/CASE-1004686/dataset.nc'; + + var extraHeaders = {'X-SessionId' : '86489a676b73989dda6f2af3a04104a28c8c581b'}; + +// function load() { +// var url = document.getElementById('url').value; +// var url = dods; +// var ta = document.getElementById('textarea'); +// dapClient.loadData(url, function(data) { +// ta.value = JSON.stringify(data); +// }, extraHeaders); +// return false; +// } + function load() { var url = document.getElementById('url').value; + var url = das; var ta = document.getElementById('textarea'); dapClient.loadDataset(url, function(data) { ta.value = JSON.stringify(data); - }); + }, extraHeaders); return false; } + + +
diff --git a/yarn.lock b/yarn.lock index dbcae95..027151a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1509,6 +1509,10 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +corser@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1851,6 +1855,15 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecstatic@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.2.0.tgz#1b1aee1ca7c6b99cfb5cf6c9b26b481b90c4409f" + dependencies: + he "^1.1.1" + mime "^1.4.1" + minimist "^1.1.0" + url-join "^2.0.2" + editions@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" @@ -2715,7 +2728,7 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -he@1.1.x: +he@1.1.x, he@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -2825,13 +2838,26 @@ http-proxy-middleware@~0.17.4: lodash "^4.17.2" micromatch "^2.3.11" -http-proxy@^1.16.2: +http-proxy@^1.16.2, http-proxy@^1.8.1: version "1.16.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" dependencies: eventemitter3 "1.x.x" requires-port "1.x.x" +http-server@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b" + dependencies: + colors "1.0.3" + corser "~2.0.0" + ecstatic "^3.0.0" + http-proxy "^1.8.1" + opener "~1.4.0" + optimist "0.6.x" + portfinder "^1.0.13" + union "~0.4.3" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -3732,6 +3758,10 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + mime@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" @@ -3766,10 +3796,14 @@ minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" @@ -4076,12 +4110,23 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opener@~1.4.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" dependencies: is-wsl "^1.1.0" +optimist@0.6.x: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -4359,7 +4404,7 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" -portfinder@^1.0.9: +portfinder@^1.0.13, portfinder@^1.0.9: version "1.0.13" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" dependencies: @@ -4474,6 +4519,10 @@ qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" +qs@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" + qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -5580,6 +5629,12 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" +union@~0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" + dependencies: + qs "~2.3.3" + unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" @@ -5619,6 +5674,10 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +url-join@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" + url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" @@ -5920,6 +5979,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" From 18b81e5e9cfebaea6c7a87f321121d15ca446243 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 13:19:34 +0100 Subject: [PATCH 10/19] fix xdrdata issue --- lib/jsdap.js | 7 + lib/parser.js | 2 +- lib/xdr.js | 352 +++++++++++++++++++++----------------------- template/index.html | 27 ++-- 4 files changed, 188 insertions(+), 200 deletions(-) diff --git a/lib/jsdap.js b/lib/jsdap.js index 06b05b6..a178b5d 100644 --- a/lib/jsdap.js +++ b/lib/jsdap.js @@ -118,3 +118,10 @@ export class DapClient { ); } } + + +if (module.hot) { + module.hot.accept("./xdr.js", () => { + console.log("Accepting the updated printMe module"); + }); +} diff --git a/lib/parser.js b/lib/parser.js index 2861eab..7eaff3f 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -144,7 +144,7 @@ export class ddsParser extends simpleParser { if (this.peek("=")) { baseType.dimensions.push(token); this.consume("="); - let token = this.consume("\\d+"); + token = this.consume("\\d+"); } baseType.shape.push(parseInt(token)); this.consume("\\]"); diff --git a/lib/xdr.js b/lib/xdr.js index 2539189..37ca532 100644 --- a/lib/xdr.js +++ b/lib/xdr.js @@ -1,64 +1,62 @@ +"use strict"; + // Lots of code from http://jsfromhell.com/classes/binary-parser // Jonas Raoni Soares Silva // http://jsfromhell.com/classes/binary-parser [v1.0] -"use strict"; -const END_OF_SEQUENCE = "\xa5\x00\x00\x00"; -const START_OF_SEQUENCE = "\x5a\x00\x00\x00"; +const END_OF_SEQUENCE = '\xa5\x00\x00\x00'; +const START_OF_SEQUENCE = '\x5a\x00\x00\x00'; -export class dapUnpacker { - constructor(xdrdata, daplet) { - this._buf = xdrdata; - this.daplet = daplet; - this._pos = 0; - } - getValue() { - let i = this._pos; - let type = this.daplet.type.toLowerCase(); - - if (type == "structure" || type == "dataset") { - let out = [], - tmp; - let daplet = this.daplet; - for (let child in daplet) { - if (daplet[child].type) { - this.daplet = daplet[child]; +export function dapUnpacker(xdrdata, dapvar) { + this._buf = xdrdata; + this.dapvar = dapvar; + this._pos = 0; + + this.getValue = function() { + var i = this._pos; + var type = this.dapvar.type.toLowerCase(); + + if (type == 'structure' || type == 'dataset') { + var out = [], tmp; + dapvar = this.dapvar; + for (let child in dapvar) { + if (dapvar[child].type) { + this.dapvar = dapvar[child]; tmp = this.getValue(); out.push(tmp); } } - this.daplet = daplet; + this.dapvar = dapvar; return out; - } else if (type == "grid") { - let out = [], - tmp; - let daplet = this.daplet; - this.daplet = daplet.array; + } else if (type == 'grid') { + var out = [], tmp; + dapvar = this.dapvar; + + this.dapvar = dapvar.array; tmp = this.getValue(); out.push(tmp); - for (let map in daplet.maps) { - this.daplet = daplet.maps[map]; + for (var map in dapvar.maps) { + this.dapvar = dapvar.maps[map]; tmp = this.getValue(); out.push(tmp); } - this.daplet = daplet; + this.dapvar = dapvar; return out; - } else if (type == "sequence") { - let mark = this._unpack_uint32(); - let out = [], - struct, - tmp; - let daplet = this.daplet; + + } else if (type == 'sequence') { + var mark = this._unpack_uint32(); + var out = [], struct, tmp; + dapvar = this.dapvar; while (mark != 2768240640) { struct = []; - for (let child in daplet) { - if (daplet[child].type) { - this.daplet = daplet[child]; + for (var child in dapvar) { + if (dapvar[child].type) { + this.dapvar = dapvar[child]; tmp = this.getValue(); struct.push(tmp); } @@ -66,14 +64,13 @@ export class dapUnpacker { out.push(struct); mark = this._unpack_uint32(); } - this.daplet = daplet; + this.dapvar = dapvar; return out; - // This is a request for a base type letiable inside a + // This is a request for a base type variable inside a // sequence. } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) { - let mark = this._unpack_uint32(); - let out = [], - tmp; + var mark = this._unpack_uint32(); + var out = [], tmp; while (mark != 2768240640) { tmp = this.getValue(); out.push(tmp); @@ -82,184 +79,177 @@ export class dapUnpacker { return out; } - let n = 1; - if (this.daplet.shape.length) { + var n = 1; + if (this.dapvar.shape.length) { n = this._unpack_uint32(); - if (type != "url" && type != "string") { + if (type != 'url' && type != 'string') { this._unpack_uint32(); } } // Bytes? - let out; - if (type == "byte") { + var out; + if (type == 'byte') { out = this._unpack_bytes(n); // String? - } else if (type == "url" || type == "string") { + } else if (type == 'url' || type == 'string') { out = this._unpack_string(n); } else { out = []; - let func; + var func; switch (type) { - case "float32": - func = "_unpack_float32"; + case 'float32': + func = '_unpack_float32'; break; - case "float64": - func = "_unpack_float64"; + case 'float64': + func = '_unpack_float64'; break; - case "int": - func = "_unpack_int32"; + case 'int' : + func = '_unpack_int32'; break; - case "uint": - func = "_unpack_uint32"; + case 'uint' : + func = '_unpack_uint32'; break; - case "int16": - func = "_unpack_int16"; + case 'int16' : + func = '_unpack_int16'; break; - case "uint16": - func = "_unpack_uint16"; + case 'uint16' : + func = '_unpack_uint16'; break; - case "int32": - func = "_unpack_int32"; + case 'int32' : + func = '_unpack_int32'; break; - case "uint32": - func = "_unpack_uint32"; + case 'uint32' : + func = '_unpack_uint32'; break; } - for (let i = 0; i < n; i++) { + for (var i = 0; i < n; i++) { out.push(this[func]()); } } - if (this.daplet.shape) { - out = reshape(out, this.daplet.shape); + if (this.dapvar.shape) { + out = reshape(out, this.dapvar.shape); } else { out = out[0]; } return out; - } + }; - _unpack_byte() { - let bytes = 1; - let signed = false; + this._unpack_byte = function() { + var bytes = 1; + var signed = false; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - } + }; - _unpack_uint16() { - let bytes = 4; - let signed = false; + this._unpack_uint16 = function() { + var bytes = 4; + var signed = false; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - } + }; - _unpack_uint32() { - let bytes = 4; - let signed = false; + this._unpack_uint32 = function() { + var bytes = 4; + var signed = false; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - } + }; - _unpack_int16() { - let bytes = 4; - let signed = true; + this._unpack_int16 = function() { + var bytes = 4; + var signed = true; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - } + }; - _unpack_int32() { - let bytes = 4; - let signed = true; + this._unpack_int32 = function() { + var bytes = 4; + var signed = true; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - } + }; - _unpack_float32() { - let precision = 23; - let exponent = 8; - let bytes = 4; + this._unpack_float32 = function() { + var precision = 23; + var exponent = 8; + var bytes = 4; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - } + }; - _unpack_float64() { - let precision = 52; - let exponent = 11; - let bytes = 8; + this._unpack_float64 = function() { + var precision = 52; + var exponent = 11; + var bytes = 8; - let i = this._pos; + var i = this._pos; this._pos = i + bytes; - let data = this._buf.slice(i, i + bytes); + var data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - } + }; - _unpack_bytes(count) { - let i = this._pos; - let out = []; - for (let c = 0; c < count; c++) { + this._unpack_bytes = function(count) { + var i = this._pos; + var out = []; + for (var c = 0; c < count; c++) { out.push(this._unpack_byte()); } - let padding = (4 - count % 4) % 4; + var padding = (4 - (count % 4)) % 4; this._pos = i + count + padding; return out; - } + }; - _unpack_string(count) { - let out = []; - let n, i, j, data; - for (let c = 0; c < count; c++) { + this._unpack_string = function(count) { + var out = []; + var n, i, j, data, padding; + for (var c = 0; c < count; c++) { n = this._unpack_uint32(); i = this._pos; data = this._buf.slice(i, i + n); - let padding = (4 - n % 4) % 4; + padding = (4 - (n % 4)) % 4; this._pos = i + n + padding; // convert back to string - let str = ""; - for (let i = 0; i < n; i++) { + var str = ''; + for (var i = 0; i < n; i++) { str += String.fromCharCode(data[i]); } out.push(str); } return out; - } + }; } -export function getBuffer(data) { - let b = new Array(data.length); - for (let i = 0; i < data.length; i++) { - b[i] = data.charCodeAt(i) & 0xff; - } - return b; -} function reshape(array, shape) { if (!shape.length) return array[0]; - let out = []; - let size, start, stop; - for (let i = 0; i < shape[0]; i++) { + var out = []; + var size, start, stop; + for (var i = 0; i < shape[0]; i++) { size = array.length / shape[0]; start = i * size; stop = start + size; @@ -268,42 +258,39 @@ function reshape(array, shape) { return out; } + function shl(a, b) { - for ( - ++b; - --b; - a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1 - ); + for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1) ; return a; } -function readBits(buffer, start, length) { - let sum = 0; +function readBits(buffer, start, length) { if (start < 0 || length <= 0) return 0; - for ( - let offsetLeft, - offsetRight = start % 8, - curByte = buffer.length - (start >> 3) - 1, - lastByte = buffer.length + (-(start + length) >> 3), - diff = curByte - lastByte, - sum = - ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + - (diff && (offsetLeft = (start + length) % 8) - ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) - : 0); - diff; - sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight) - ); + for (var offsetLeft, offsetRight = start % 8, curByte = buffer.length - (start >> 3) - 1, + lastByte = buffer.length + (-(start + length) >> 3), diff = curByte - lastByte, + sum = ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + + (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) + << (diff-- << 3) - offsetRight : 0); diff; sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)) ; return sum; } + +export function getBuffer(data) { + var b = new Array(data.length); + for (var i = 0; i < data.length; i++) { + b[i] = data.charCodeAt(i) & 0xff; + } + return b; +} + + function decodeInt(data, bytes, signed) { - let x = readBits(data, 0, bytes * 8); - let max = Math.pow(2, bytes * 8); - let integer; - if (signed && x >= max / 2) { + var x = readBits(data, 0, bytes * 8); + var max = Math.pow(2, bytes * 8); + var integer; + if (signed && x >= (max / 2)) { integer = x - max; } else { integer = x; @@ -311,29 +298,24 @@ function decodeInt(data, bytes, signed) { return integer; } -function decodeFloat(data, precisionBits, exponentBits) { - let buffer = data; - let bias = Math.pow(2, exponentBits - 1) - 1; - let signal = readBits(buffer, precisionBits + exponentBits, 1); - let exponent = readBits(buffer, precisionBits, exponentBits); - let significand = 0; - let divisor = 2; - let curByte = buffer.length + (-precisionBits >> 3) - 1; - let byteValue, startBit, mask; +function decodeFloat(buffer, precisionBits, exponentBits) { + // var buffer = data; + + var bias = Math.pow(2, exponentBits - 1) - 1; + var signal = readBits(buffer, precisionBits + exponentBits, 1); + var exponent = readBits(buffer, precisionBits, exponentBits); + var significand = 0; + var divisor = 2; + var curByte = buffer.length + (-precisionBits >> 3) - 1; + var byteValue, startBit, mask; do - for ( - byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; - (mask >>= 1); - byteValue & mask && (significand += 1 / divisor), divisor *= 2 - ); - while ((precisionBits -= startBit)); - - return exponent == (bias << 1) + 1 - ? significand ? NaN : signal ? -Infinity : +Infinity - : (1 + signal * -2) * - (exponent || significand - ? !exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand) - : 0); + for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; + mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2) ; + while (precisionBits -= startBit); + + return exponent == (bias << 1) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity + : (1 + signal * -2) * (exponent || significand ? !exponent ? Math.pow(2, -bias + 1) * significand + : Math.pow(2, exponent - bias) * (1 + significand) : 0); } diff --git a/template/index.html b/template/index.html index 1e19fc2..b25e477 100644 --- a/template/index.html +++ b/template/index.html @@ -14,28 +14,27 @@ // for dds & das var das = 'https://curtis-dev.edf-labs.net/data/dods/results/CASE-1004686/dataset.nc'; - var extraHeaders = {'X-SessionId' : '86489a676b73989dda6f2af3a04104a28c8c581b'}; - -// function load() { -// var url = document.getElementById('url').value; -// var url = dods; -// var ta = document.getElementById('textarea'); -// dapClient.loadData(url, function(data) { -// ta.value = JSON.stringify(data); -// }, extraHeaders); -// return false; -// } + var extraHeaders = {'X-SessionId': '86489a676b73989dda6f2af3a04104a28c8c581b'}; function load() { var url = document.getElementById('url').value; - var url = das; + var url = dods; var ta = document.getElementById('textarea'); - dapClient.loadDataset(url, function(data) { - ta.value = JSON.stringify(data); + dapClient.loadData(url, function(data) { + ta.value = JSON.stringify(data, null, 2); }, extraHeaders); return false; } + // function load() { + // var url = document.getElementById('url').value; + // var url = das; + // var ta = document.getElementById('textarea'); + // dapClient.loadDataset(url, function(data) { + // ta.value = JSON.stringify(data, null, 2); + // }, extraHeaders); + // return false; + // } From 557d2464982167cc7b599b1479552028e3a3ca16 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 13:45:03 +0100 Subject: [PATCH 11/19] fix xdr data bugs --- .editorconfig | 2 +- .eslintrc | 6 +- .prettierrc | 3 +- lib/jsdap.js | 5 +- lib/parser.js | 15 +--- lib/xdr.js | 180 +++++++++++++++++++++++----------------------- webpack.config.js | 28 ++++---- 7 files changed, 115 insertions(+), 124 deletions(-) diff --git a/.editorconfig b/.editorconfig index 48d2c75..80f447d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,7 +6,7 @@ indent_size = 4 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -max_line_length = 120 +max_line_length = 233 [*.json] indent_style = space diff --git a/.eslintrc b/.eslintrc index 8cfdbd5..2da5baf 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,7 +8,8 @@ ], "env": { "browser": true, - "es6": true + "es6": true, + "node": true }, "globals": { "BinaryToArray": true @@ -21,6 +22,7 @@ "prettier/prettier": "error", "no-unused-vars": "warn", "no-useless-escape": "warn", - "no-console": "warn" + "no-console": "warn", + "no-redeclare": "warn" } } diff --git a/.prettierrc b/.prettierrc index 47b748f..bd3f737 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "tabWidth": 4, "useTabs": false, - "printWidth": 120 + "printWidth": 233, + "bracketSpacing": false } diff --git a/lib/jsdap.js b/lib/jsdap.js index a178b5d..eabab9e 100644 --- a/lib/jsdap.js +++ b/lib/jsdap.js @@ -70,7 +70,7 @@ export class DapClient { loadData(url, callback, extraheaders) { this.proxyUrl( url, - (dods) => { + dods => { let dds = ""; while (!dds.match(/\nData:\n$/)) { let c = dods.splice(0, 1); @@ -99,7 +99,7 @@ export class DapClient { // Load DDS. this.proxyUrl( url + ".dds", - (dds) => { + dds => { let dataset = new ddsParser(dds).parse(); // Load DAS. @@ -119,7 +119,6 @@ export class DapClient { } } - if (module.hot) { module.hot.accept("./xdr.js", () => { console.log("Accepting the updated printMe module"); diff --git a/lib/parser.js b/lib/parser.js index 7eaff3f..fca035f 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -1,19 +1,6 @@ "use strict"; -const atomicTypes = [ - "byte", - "int", - "uint", - "int16", - "uint16", - "int32", - "uint32", - "float32", - "float64", - "string", - "url", - "alias" -]; +const atomicTypes = ["byte", "int", "uint", "int16", "uint16", "int32", "uint32", "float32", "float64", "string", "url", "alias"]; const structures = ["Sequence", "Structure", "Dataset"]; const IDENTIFIER_REGEX = "[\\w-/]"; diff --git a/lib/xdr.js b/lib/xdr.js index 37ca532..6d0e1b0 100644 --- a/lib/xdr.js +++ b/lib/xdr.js @@ -4,24 +4,25 @@ // Jonas Raoni Soares Silva // http://jsfromhell.com/classes/binary-parser [v1.0] +const END_OF_SEQUENCE = "\xa5\x00\x00\x00"; +const START_OF_SEQUENCE = "\x5a\x00\x00\x00"; + +export class dapUnpacker { + constructor(xdrdata, dapvar) { + this._buf = xdrdata; + this.dapvar = dapvar; + this._pos = 0; + } -const END_OF_SEQUENCE = '\xa5\x00\x00\x00'; -const START_OF_SEQUENCE = '\x5a\x00\x00\x00'; - - -export function dapUnpacker(xdrdata, dapvar) { - this._buf = xdrdata; - this.dapvar = dapvar; - this._pos = 0; - - this.getValue = function() { + getValue() { var i = this._pos; var type = this.dapvar.type.toLowerCase(); - if (type == 'structure' || type == 'dataset') { - var out = [], tmp; - dapvar = this.dapvar; - for (let child in dapvar) { + if (type == "structure" || type == "dataset") { + var out = [], + tmp; + var dapvar = this.dapvar; + for (var child in dapvar) { if (dapvar[child].type) { this.dapvar = dapvar[child]; tmp = this.getValue(); @@ -30,9 +31,9 @@ export function dapUnpacker(xdrdata, dapvar) { } this.dapvar = dapvar; return out; - - } else if (type == 'grid') { - var out = [], tmp; + } else if (type == "grid") { + var out = [], + tmp; dapvar = this.dapvar; this.dapvar = dapvar.array; @@ -47,10 +48,11 @@ export function dapUnpacker(xdrdata, dapvar) { this.dapvar = dapvar; return out; - - } else if (type == 'sequence') { + } else if (type == "sequence") { var mark = this._unpack_uint32(); - var out = [], struct, tmp; + var out = [], + struct, + tmp; dapvar = this.dapvar; while (mark != 2768240640) { struct = []; @@ -70,7 +72,8 @@ export function dapUnpacker(xdrdata, dapvar) { // sequence. } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) { var mark = this._unpack_uint32(); - var out = [], tmp; + var out = [], + tmp; while (mark != 2768240640) { tmp = this.getValue(); out.push(tmp); @@ -82,45 +85,45 @@ export function dapUnpacker(xdrdata, dapvar) { var n = 1; if (this.dapvar.shape.length) { n = this._unpack_uint32(); - if (type != 'url' && type != 'string') { + if (type != "url" && type != "string") { this._unpack_uint32(); } } // Bytes? var out; - if (type == 'byte') { + if (type == "byte") { out = this._unpack_bytes(n); // String? - } else if (type == 'url' || type == 'string') { + } else if (type == "url" || type == "string") { out = this._unpack_string(n); } else { out = []; var func; switch (type) { - case 'float32': - func = '_unpack_float32'; + case "float32": + func = "_unpack_float32"; break; - case 'float64': - func = '_unpack_float64'; + case "float64": + func = "_unpack_float64"; break; - case 'int' : - func = '_unpack_int32'; + case "int": + func = "_unpack_int32"; break; - case 'uint' : - func = '_unpack_uint32'; + case "uint": + func = "_unpack_uint32"; break; - case 'int16' : - func = '_unpack_int16'; + case "int16": + func = "_unpack_int16"; break; - case 'uint16' : - func = '_unpack_uint16'; + case "uint16": + func = "_unpack_uint16"; break; - case 'int32' : - func = '_unpack_int32'; + case "int32": + func = "_unpack_int32"; break; - case 'uint32' : - func = '_unpack_uint32'; + case "uint32": + func = "_unpack_uint32"; break; } for (var i = 0; i < n; i++) { @@ -135,9 +138,9 @@ export function dapUnpacker(xdrdata, dapvar) { } return out; - }; + } - this._unpack_byte = function() { + _unpack_byte() { var bytes = 1; var signed = false; @@ -145,9 +148,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } - this._unpack_uint16 = function() { + _unpack_uint16() { var bytes = 4; var signed = false; @@ -155,9 +158,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } - this._unpack_uint32 = function() { + _unpack_uint32() { var bytes = 4; var signed = false; @@ -165,9 +168,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } - this._unpack_int16 = function() { + _unpack_int16() { var bytes = 4; var signed = true; @@ -175,9 +178,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } - this._unpack_int32 = function() { + _unpack_int32() { var bytes = 4; var signed = true; @@ -185,9 +188,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeInt(data, bytes, signed); - }; + } - this._unpack_float32 = function() { + _unpack_float32() { var precision = 23; var exponent = 8; var bytes = 4; @@ -196,9 +199,9 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - }; + } - this._unpack_float64 = function() { + _unpack_float64() { var precision = 52; var exponent = 11; var bytes = 8; @@ -207,21 +210,21 @@ export function dapUnpacker(xdrdata, dapvar) { this._pos = i + bytes; var data = this._buf.slice(i, i + bytes); return decodeFloat(data, precision, exponent); - }; + } - this._unpack_bytes = function(count) { + _unpack_bytes(count) { var i = this._pos; var out = []; for (var c = 0; c < count; c++) { out.push(this._unpack_byte()); } - var padding = (4 - (count % 4)) % 4; + var padding = (4 - count % 4) % 4; this._pos = i + count + padding; return out; - }; + } - this._unpack_string = function(count) { + _unpack_string(count) { var out = []; var n, i, j, data, padding; for (var c = 0; c < count; c++) { @@ -229,11 +232,11 @@ export function dapUnpacker(xdrdata, dapvar) { i = this._pos; data = this._buf.slice(i, i + n); - padding = (4 - (n % 4)) % 4; + padding = (4 - n % 4) % 4; this._pos = i + n + padding; // convert back to string - var str = ''; + var str = ""; for (var i = 0; i < n; i++) { str += String.fromCharCode(data[i]); } @@ -241,9 +244,16 @@ export function dapUnpacker(xdrdata, dapvar) { } return out; - }; + } } +export function getBuffer(data) { + var b = new Array(data.length); + for (var i = 0; i < data.length; i++) { + b[i] = data.charCodeAt(i) & 0xff; + } + return b; +} function reshape(array, shape) { if (!shape.length) return array[0]; @@ -258,39 +268,34 @@ function reshape(array, shape) { return out; } - function shl(a, b) { - for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1) ; + for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1); return a; } - function readBits(buffer, start, length) { if (start < 0 || length <= 0) return 0; - for (var offsetLeft, offsetRight = start % 8, curByte = buffer.length - (start >> 3) - 1, - lastByte = buffer.length + (-(start + length) >> 3), diff = curByte - lastByte, - sum = ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) - + (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) - << (diff-- << 3) - offsetRight : 0); diff; sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)) ; + for ( + var offsetLeft, + offsetRight = start % 8, + curByte = buffer.length - (start >> 3) - 1, + lastByte = buffer.length + (-(start + length) >> 3), + diff = curByte - lastByte, + sum = + ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + + (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) : 0); + diff; + sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight) + ); return sum; } - -export function getBuffer(data) { - var b = new Array(data.length); - for (var i = 0; i < data.length; i++) { - b[i] = data.charCodeAt(i) & 0xff; - } - return b; -} - - function decodeInt(data, bytes, signed) { var x = readBits(data, 0, bytes * 8); var max = Math.pow(2, bytes * 8); var integer; - if (signed && x >= (max / 2)) { + if (signed && x >= max / 2) { integer = x - max; } else { integer = x; @@ -298,7 +303,6 @@ function decodeInt(data, bytes, signed) { return integer; } - function decodeFloat(buffer, precisionBits, exponentBits) { // var buffer = data; @@ -310,12 +314,10 @@ function decodeFloat(buffer, precisionBits, exponentBits) { var curByte = buffer.length + (-precisionBits >> 3) - 1; var byteValue, startBit, mask; - do - for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; - mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2) ; - while (precisionBits -= startBit); + do for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; (mask >>= 1); byteValue & mask && (significand += 1 / divisor), divisor *= 2); + while ((precisionBits -= startBit)); - return exponent == (bias << 1) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity - : (1 + signal * -2) * (exponent || significand ? !exponent ? Math.pow(2, -bias + 1) * significand - : Math.pow(2, exponent - bias) * (1 + significand) : 0); + return exponent == (bias << 1) + 1 + ? significand ? NaN : signal ? -Infinity : +Infinity + : (1 + signal * -2) * (exponent || significand ? (!exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)) : 0); } diff --git a/webpack.config.js b/webpack.config.js index aed50d6..44da725 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,27 +14,27 @@ module.exports = (env = {}) => { let devServer = env.production ? undefined : { - contentBase: "./dist", - hot: true - }; + contentBase: "./dist", + hot: true + }; let plugins = [ new CleanWebpackPlugin(["dist"], {verbose: true}), new HtmlWebpackPlugin({ title: "Output Management", filename: "index.html", - inject: 'head', - template: './template/index.html' + inject: "head", + template: "./template/index.html" }) ]; plugins = env.production ? plugins.concat([ - new UglifyJSPlugin({sourceMap: true}), - new webpack.DefinePlugin({ - "process.env.NODE_ENV": JSON.stringify("production") - }) - ]) + new UglifyJSPlugin({sourceMap: true}), + new webpack.DefinePlugin({ + "process.env.NODE_ENV": JSON.stringify("production") + }) + ]) : plugins.concat([new webpack.NamedModulesPlugin(), new webpack.HotModuleReplacementPlugin()]); return { @@ -59,11 +59,11 @@ module.exports = (env = {}) => { }, plugins: plugins, output: { - path: path.resolve(__dirname, './dist'), - filename: 'jsdap.js', - libraryTarget: 'umd', + path: path.resolve(__dirname, "./dist"), + filename: "jsdap.js", + libraryTarget: "umd", // libraryExport: 'default', - library: 'jsdap' + library: "jsdap" } }; }; From bd606806ceb58064b5841afbcfcaaaf8eb1b5861 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 14:13:09 +0100 Subject: [PATCH 12/19] it seems alright with the actual result --- template/index.html | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/template/index.html b/template/index.html index b25e477..8e882a5 100644 --- a/template/index.html +++ b/template/index.html @@ -10,9 +10,9 @@ var dapClient = new jsdap.DapClient(false); // for dods request - var dods = "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1004686/dataset.nc.dods?PID-WindTurbine,TIMESCALE-1_turbine_step,/Results/WindTurbine/Turbine_Type"; + var dods = "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc.dods?PID-WindTurbine,TIMESCALE-1_turbine_step,/Results/WindTurbine/Turbine_Type"; // for dds & das - var das = 'https://curtis-dev.edf-labs.net/data/dods/results/CASE-1004686/dataset.nc'; + var das = 'https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc'; var extraHeaders = {'X-SessionId': '86489a676b73989dda6f2af3a04104a28c8c581b'}; @@ -26,15 +26,15 @@ return false; } - // function load() { - // var url = document.getElementById('url').value; - // var url = das; - // var ta = document.getElementById('textarea'); - // dapClient.loadDataset(url, function(data) { - // ta.value = JSON.stringify(data, null, 2); - // }, extraHeaders); - // return false; - // } +// function load() { +// var url = document.getElementById('url').value; +// var url = das; +// var ta = document.getElementById('textarea'); +// dapClient.loadDataset(url, function(data) { +// ta.value = JSON.stringify(data, null, 2); +// }, extraHeaders); +// return false; +// } From 77a23406d729bb10ace2dd9df6c42ee75bcf9c17 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 15:10:03 +0100 Subject: [PATCH 13/19] fix iehack should inserted in head --- index.js | 4 ++-- lib/jsdap.js | 8 +------- lib/vbscript.js | 27 ++++++++++++++------------- package.json | 2 +- template/index.html | 38 +++++++++++++++++++------------------- webpack.config.js | 7 ++++--- 6 files changed, 41 insertions(+), 45 deletions(-) diff --git a/index.js b/index.js index c67dbe9..600838d 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,3 @@ -import DapClient from "./lib/jsdap.js"; +import JsDap from "./lib/jsdap.js"; -export default DapClient; +export default JsDap; diff --git a/lib/jsdap.js b/lib/jsdap.js index eabab9e..e43a18c 100644 --- a/lib/jsdap.js +++ b/lib/jsdap.js @@ -4,7 +4,7 @@ import {dasParser, ddsParser} from "./parser.js"; import {dapUnpacker, getBuffer} from "./xdr.js"; import ieHack from "./vbscript.js"; -export class DapClient { +export default class JsDap { constructor(IE_HACK = false) { this.IE_HACK = IE_HACK; ieHack(this.IE_HACK); @@ -118,9 +118,3 @@ export class DapClient { ); } } - -if (module.hot) { - module.hot.accept("./xdr.js", () => { - console.log("Accepting the updated printMe module"); - }); -} diff --git a/lib/vbscript.js b/lib/vbscript.js index b47192a..a58fb5f 100644 --- a/lib/vbscript.js +++ b/lib/vbscript.js @@ -1,15 +1,16 @@ +"use strict"; + export default function(IE_HACK) { - if (IE_HACK) - document.write( - '' - ); + if (IE_HACK) { + let elem = document.createElement("script"); + elem.setAttribute("type", "text/vbscript"); + + elem.innerHTML = + "\n\ + Function BinaryToArray(Binary)\n Dim i\n ReDim byteArray(LenB(Binary))\n\ + For i = 1 To LenB(Binary)\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\n\ + Next\n BinaryToArray = byteArray\n End Function\n "; + + document.head.appendChild(elem); + } } diff --git a/package.json b/package.json index eee462a..0e3fd80 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ "lint": "eslint --format table --debug ./", "lint:fix": "eslint --format table --debug --fix ./", "serve": "webpack-dev-server --open --progress", - "build": "webpack --env.production --progress && cp dist/jsdap.js test/" + "build": "webpack --env.production --progress" } } diff --git a/template/index.html b/template/index.html index 8e882a5..954c701 100644 --- a/template/index.html +++ b/template/index.html @@ -7,7 +7,7 @@ diff --git a/webpack.config.js b/webpack.config.js index 44da725..6b3d7b4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -39,7 +39,8 @@ module.exports = (env = {}) => { return { mode: mode, - entry: "./lib/jsdap.js", + // entry: "./lib/jsdap.js", + entry: "./index.js", devtool: devtool, devServer: devServer, module: { @@ -62,8 +63,8 @@ module.exports = (env = {}) => { path: path.resolve(__dirname, "./dist"), filename: "jsdap.js", libraryTarget: "umd", - // libraryExport: 'default', - library: "jsdap" + libraryExport: "default", + library: "JsDap" } }; }; From a9ec4a03aff7d45cc39032ea52279e0c40b54d05 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:01:36 +0100 Subject: [PATCH 14/19] finish update to es6 and pack it as lib --- .gitignore | 1 + config.json | 4 +++ dist/index.html | 58 +++++++++++++++++++++++++++++++++++++++ dist/jsdap.js | 2 ++ dist/jsdap.js.map | 1 + template/index.html | 67 ++++++++++++++++++++++++++------------------- 6 files changed, 105 insertions(+), 28 deletions(-) create mode 100644 config.json create mode 100644 dist/index.html create mode 100644 dist/jsdap.js create mode 100644 dist/jsdap.js.map diff --git a/.gitignore b/.gitignore index 86837c5..2ed7b97 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ typings/ # idea stuff .idea/ .cache/ +config.json diff --git a/config.json b/config.json new file mode 100644 index 0000000..f8647a9 --- /dev/null +++ b/config.json @@ -0,0 +1,4 @@ +{ + "dods": "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc.dods?PID-WindTurbine,TIMESCALE-1_turbine_step,/Results/WindTurbine/Turbine_Type", + "dds": "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc" +} diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..f525ed7 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,58 @@ + + + + + OpenDap + + + + + + + + + + +
+ + + +
+ + diff --git a/dist/jsdap.js b/dist/jsdap.js new file mode 100644 index 0000000..b2cf4d7 --- /dev/null +++ b/dist/jsdap.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.JsDap=e():t.JsDap=e()}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if(t){var e=document.createElement("script");e.setAttribute("type","text/vbscript"),e.innerHTML="\n Function BinaryToArray(Binary)\n Dim i\n ReDim byteArray(LenB(Binary))\n For i = 1 To LenB(Binary)\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\n Next\n BinaryToArray = byteArray\n End Function\n ",document.head.appendChild(e)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var r=0;r>3)-1,u=t.length+(-(e+r)>>3),o=i-u,c=(t[i]>>a&(1<<(o?8-a:r))-1)+(o&&(n=(e+r)%8)?(t[u++]&(1<=s/2?n-s:n}function u(t,e,r){var n,s,i,u=Math.pow(2,r-1)-1,o=a(t,e+r,1),c=a(t,e,r),h=0,p=2,f=t.length+(-e>>3)-1;do{for(n=t[++f],i=1<<(s=e%8||8);i>>=1;n&i&&(h+=1/p),p*=2);}while(e-=s);return c==1+(u<<1)?h?NaN:o?-1/0:1/0:(1+-2*o)*(c||h?c?Math.pow(2,c-u)*(1+h):Math.pow(2,1-u)*h:0)}e.getBuffer=function(t){for(var e=new Array(t.length),r=0;r-1){for(var e=t.split("."),r=this._target,n=0;n0&&void 0!==arguments[0]&&arguments[0];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.IE_HACK=e,(0,u.default)(this.IE_HACK)}return s(t,[{key:"proxyUrl",value:function(t,e,r,n){var s=void 0;if(window.XMLHttpRequest?s=new XMLHttpRequest:window.ActiveXObject&&(s=new window.ActiveXObject("Microsoft.XMLHTTP")),s.open("GET",t,!0),s.overrideMimeType?s.overrideMimeType("text/plain; charset=x-user-defined"):s.setRequestHeader("Accept-Charset","x-user-defined"),n)for(var a in n)s.setRequestHeader(a,n[a]);s.onreadystatechange=function(){4==s.readyState&&(r?this.IE_HACK?e(BinaryToArray(s.responseBody).toArray()):e((0,i.getBuffer)(s.responseText)):e(s.responseText))},s.send("")}},{key:"_applydata",value:function(t,e){var r=0;for(var n in e)e[n].type&&(e[n].data=t[r++],"Structure"==e[n].type&&this._applydata(e[n].data,e[n]))}},{key:"loadData",value:function(t,e,r){var n=this;this.proxyUrl(t,function(t){for(var r="";!r.match(/\nData:\n$/);){var s=t.splice(0,1);if(0===s.length)throw new Error("Error reading data, are you sur this is a .dods request ?");r+=String.fromCharCode(s)}r=r.substr(0,r.length-7);var u=new a.ddsParser(r).parse(),o=new i.dapUnpacker(t,u).getValue();n._applydata(o,u),e(u)},!0,r)}},{key:"loadDataset",value:function(t,e,r){var n=this;this.proxyUrl(t+".dds",function(s){var i=new a.ddsParser(s).parse();n.proxyUrl(t+".das",function(t){i=new a.dasParser(t,i).parse(),e(i)},!1,r)},!1,r)}}]),t}();e.default=o},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,s=(n=r(3))&&n.__esModule?n:{default:n};e.default=s.default}]).default}); +//# sourceMappingURL=jsdap.js.map \ No newline at end of file diff --git a/dist/jsdap.js.map b/dist/jsdap.js.map new file mode 100644 index 0000000..ad44b90 --- /dev/null +++ b/dist/jsdap.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://JsDap/webpack/universalModuleDefinition","webpack://JsDap/webpack/bootstrap","webpack://JsDap/./lib/vbscript.js","webpack://JsDap/./lib/xdr.js","webpack://JsDap/./lib/parser.js","webpack://JsDap/./lib/jsdap.js","webpack://JsDap/./index.js"],"names":["root","factory","exports","module","define","amd","JsDap","window","t","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","e","IE_HACK","elem","document","createElement","setAttribute","innerHTML","head","appendChild","shl","a","b","readBits","buffer","start","length","offsetLeft","offsetRight","curByte","lastByte","diff","sum","decodeInt","data","bytes","signed","x","max","Math","pow","decodeFloat","precisionBits","exponentBits","byteValue","startBit","mask","bias","signal","exponent","significand","divisor","NaN","Infinity","getBuffer","Array","charCodeAt","dapUnpacker","xdrdata","dapvar","this","_buf","_pos","key","type","toLowerCase","out","child","tmp","getValue","push","map","array","maps","struct","mark","_unpack_uint32","slice","shape","_unpack_bytes","_unpack_string","func","reshape","size","stop","count","_unpack_byte","padding","str","String","fromCharCode","_createClass","writable","_possibleConstructorReturn","ReferenceError","_inherits","TypeError","create","constructor","setPrototypeOf","__proto__","_classCallCheck","atomicTypes","structures","IDENTIFIER_REGEX","pseudoSafeEval","test","replace","eval","contains","item","el","trim","ltrim","rtrim","dapType","attributes","simpleParser","input","stream","expr","regExp","RegExp","match","substr","Error","ddsParser","dds","_this","getPrototypeOf","dataset","consume","peek","declaration","_declaration","id","walk","daplet","includeParent","attr","_grid","_structure","_sequence","_base_declaration","baseType","dimensions","token","parseInt","grid","map_","sequence","structure","dasParser","das","_this2","_target","_attr_container","_attribute","_container","indexOf","names","split","target","_metadata","output","values","tokens","substring","_parser","_xdr","arguments","_vbscript2","url","callback","binary","extraheaders","xml","XMLHttpRequest","ActiveXObject","open","overrideMimeType","setRequestHeader","onreadystatechange","readyState","BinaryToArray","responseBody","toArray","responseText","send","_applydata","proxyUrl","dods","splice","parse"],"mappings":"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","file":"jsdap.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JsDap\"] = factory();\n\telse\n\t\troot[\"JsDap\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\n\nexport default function(IE_HACK) {\n if (IE_HACK) {\n let elem = document.createElement(\"script\");\n elem.setAttribute(\"type\", \"text/vbscript\");\n\n elem.innerHTML =\n \"\\n\\\n Function BinaryToArray(Binary)\\n Dim i\\n ReDim byteArray(LenB(Binary))\\n\\\n For i = 1 To LenB(Binary)\\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\\n\\\n Next\\n BinaryToArray = byteArray\\n End Function\\n \";\n\n document.head.appendChild(elem);\n }\n}\n","\"use strict\";\n\n// Lots of code from http://jsfromhell.com/classes/binary-parser\n// Jonas Raoni Soares Silva\n// http://jsfromhell.com/classes/binary-parser [v1.0]\n\nconst END_OF_SEQUENCE = \"\\xa5\\x00\\x00\\x00\";\nconst START_OF_SEQUENCE = \"\\x5a\\x00\\x00\\x00\";\n\nexport class dapUnpacker {\n constructor(xdrdata, dapvar) {\n this._buf = xdrdata;\n this.dapvar = dapvar;\n this._pos = 0;\n }\n\n getValue() {\n var i = this._pos;\n var type = this.dapvar.type.toLowerCase();\n\n if (type == \"structure\" || type == \"dataset\") {\n var out = [],\n tmp;\n var dapvar = this.dapvar;\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n out.push(tmp);\n }\n }\n this.dapvar = dapvar;\n return out;\n } else if (type == \"grid\") {\n var out = [],\n tmp;\n dapvar = this.dapvar;\n\n this.dapvar = dapvar.array;\n tmp = this.getValue();\n out.push(tmp);\n\n for (var map in dapvar.maps) {\n this.dapvar = dapvar.maps[map];\n tmp = this.getValue();\n out.push(tmp);\n }\n\n this.dapvar = dapvar;\n return out;\n } else if (type == \"sequence\") {\n var mark = this._unpack_uint32();\n var out = [],\n struct,\n tmp;\n dapvar = this.dapvar;\n while (mark != 2768240640) {\n struct = [];\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n struct.push(tmp);\n }\n }\n out.push(struct);\n mark = this._unpack_uint32();\n }\n this.dapvar = dapvar;\n return out;\n // This is a request for a base type variable inside a\n // sequence.\n } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) {\n var mark = this._unpack_uint32();\n var out = [],\n tmp;\n while (mark != 2768240640) {\n tmp = this.getValue();\n out.push(tmp);\n mark = this._unpack_uint32();\n }\n return out;\n }\n\n var n = 1;\n if (this.dapvar.shape.length) {\n n = this._unpack_uint32();\n if (type != \"url\" && type != \"string\") {\n this._unpack_uint32();\n }\n }\n\n // Bytes?\n var out;\n if (type == \"byte\") {\n out = this._unpack_bytes(n);\n // String?\n } else if (type == \"url\" || type == \"string\") {\n out = this._unpack_string(n);\n } else {\n out = [];\n var func;\n switch (type) {\n case \"float32\":\n func = \"_unpack_float32\";\n break;\n case \"float64\":\n func = \"_unpack_float64\";\n break;\n case \"int\":\n func = \"_unpack_int32\";\n break;\n case \"uint\":\n func = \"_unpack_uint32\";\n break;\n case \"int16\":\n func = \"_unpack_int16\";\n break;\n case \"uint16\":\n func = \"_unpack_uint16\";\n break;\n case \"int32\":\n func = \"_unpack_int32\";\n break;\n case \"uint32\":\n func = \"_unpack_uint32\";\n break;\n }\n for (var i = 0; i < n; i++) {\n out.push(this[func]());\n }\n }\n\n if (this.dapvar.shape) {\n out = reshape(out, this.dapvar.shape);\n } else {\n out = out[0];\n }\n\n return out;\n }\n\n _unpack_byte() {\n var bytes = 1;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint16() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint32() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int16() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int32() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_float32() {\n var precision = 23;\n var exponent = 8;\n var bytes = 4;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_float64() {\n var precision = 52;\n var exponent = 11;\n var bytes = 8;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_bytes(count) {\n var i = this._pos;\n var out = [];\n for (var c = 0; c < count; c++) {\n out.push(this._unpack_byte());\n }\n var padding = (4 - count % 4) % 4;\n this._pos = i + count + padding;\n\n return out;\n }\n\n _unpack_string(count) {\n var out = [];\n var n, i, j, data, padding;\n for (var c = 0; c < count; c++) {\n n = this._unpack_uint32();\n i = this._pos;\n data = this._buf.slice(i, i + n);\n\n padding = (4 - n % 4) % 4;\n this._pos = i + n + padding;\n\n // convert back to string\n var str = \"\";\n for (var i = 0; i < n; i++) {\n str += String.fromCharCode(data[i]);\n }\n out.push(str);\n }\n\n return out;\n }\n}\n\nexport function getBuffer(data) {\n var b = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n b[i] = data.charCodeAt(i) & 0xff;\n }\n return b;\n}\n\nfunction reshape(array, shape) {\n if (!shape.length) return array[0];\n var out = [];\n var size, start, stop;\n for (var i = 0; i < shape[0]; i++) {\n size = array.length / shape[0];\n start = i * size;\n stop = start + size;\n out.push(reshape(array.slice(start, stop), shape.slice(1)));\n }\n return out;\n}\n\nfunction shl(a, b) {\n for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);\n return a;\n}\n\nfunction readBits(buffer, start, length) {\n if (start < 0 || length <= 0) return 0;\n\n for (\n var offsetLeft,\n offsetRight = start % 8,\n curByte = buffer.length - (start >> 3) - 1,\n lastByte = buffer.length + (-(start + length) >> 3),\n diff = curByte - lastByte,\n sum =\n ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) +\n (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) : 0);\n diff;\n sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)\n );\n return sum;\n}\n\nfunction decodeInt(data, bytes, signed) {\n var x = readBits(data, 0, bytes * 8);\n var max = Math.pow(2, bytes * 8);\n var integer;\n if (signed && x >= max / 2) {\n integer = x - max;\n } else {\n integer = x;\n }\n return integer;\n}\n\nfunction decodeFloat(buffer, precisionBits, exponentBits) {\n // var buffer = data;\n\n var bias = Math.pow(2, exponentBits - 1) - 1;\n var signal = readBits(buffer, precisionBits + exponentBits, 1);\n var exponent = readBits(buffer, precisionBits, exponentBits);\n var significand = 0;\n var divisor = 2;\n var curByte = buffer.length + (-precisionBits >> 3) - 1;\n var byteValue, startBit, mask;\n\n do for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; (mask >>= 1); byteValue & mask && (significand += 1 / divisor), divisor *= 2);\n while ((precisionBits -= startBit));\n\n return exponent == (bias << 1) + 1\n ? significand ? NaN : signal ? -Infinity : +Infinity\n : (1 + signal * -2) * (exponent || significand ? (!exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)) : 0);\n}\n","\"use strict\";\n\nconst atomicTypes = [\"byte\", \"int\", \"uint\", \"int16\", \"uint16\", \"int32\", \"uint32\", \"float32\", \"float64\", \"string\", \"url\", \"alias\"];\nconst structures = [\"Sequence\", \"Structure\", \"Dataset\"];\nconst IDENTIFIER_REGEX = \"[\\\\w-/]\";\n\nArray.prototype.contains = function(item) {\n for (let i = 0, el = this[i]; i < this.length; el = this[++i]) {\n if (item == el) return true;\n }\n return false;\n};\n\nString.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n};\n\nString.prototype.ltrim = function() {\n return this.replace(/^[\\s\\n\\r\\t]+/, \"\");\n};\n\nString.prototype.rtrim = function() {\n return this.replace(/\\s+$/, \"\");\n};\n\nfunction pseudoSafeEval(str) {\n if (/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(str.replace(/\\\\./g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"/g, \"\"))) {\n return eval(\"(\" + str + \")\");\n }\n return str;\n}\n\nclass dapType {\n constructor(type) {\n this.type = type;\n this.attributes = {};\n }\n}\n\nclass simpleParser {\n constructor(input) {\n this.stream = input;\n }\n\n peek(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n return m[0];\n } else {\n return \"\";\n }\n }\n\n consume(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n this.stream = this.stream.substr(m[0].length).ltrim();\n return m[0];\n } else {\n throw new Error(\"Unable to parse stream: \" + this.stream.substr(0, 10));\n }\n }\n}\n\nexport class ddsParser extends simpleParser {\n constructor(dds) {\n super(dds);\n this.dds = dds;\n }\n\n parse() {\n let dataset = new dapType(\"Dataset\");\n\n this.consume(\"dataset\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n dataset[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n dataset.id = dataset.name = this.consume(\"[^;]+\");\n this.consume(\";\");\n\n // Set id.\n function walk(daplet, includeParent) {\n for (let attr in daplet) {\n let child = daplet[attr];\n if (child.type) {\n child.id = child.name;\n if (includeParent) {\n child.id = daplet.id + \".\" + child.id;\n }\n walk(child, true);\n }\n }\n }\n\n walk(dataset, false);\n\n return dataset;\n }\n\n _declaration() {\n let type = this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase();\n switch (type) {\n case \"grid\":\n return this._grid();\n case \"structure\":\n return this._structure();\n case \"sequence\":\n return this._sequence();\n default:\n return this._base_declaration();\n }\n }\n\n _base_declaration() {\n let baseType = new dapType();\n\n baseType.type = this.consume(IDENTIFIER_REGEX + \"+\");\n baseType.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n baseType.dimensions = [];\n baseType.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n baseType.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n baseType.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n this.consume(\";\");\n\n return baseType;\n }\n\n _grid() {\n let grid = new dapType(\"Grid\");\n\n this.consume(\"grid\");\n this.consume(\"{\");\n\n this.consume(\"array\");\n this.consume(\":\");\n grid.array = this._base_declaration();\n\n this.consume(\"maps\");\n this.consume(\":\");\n grid.maps = {};\n while (!this.peek(\"}\")) {\n let map_ = this._base_declaration();\n grid.maps[map_.name] = map_;\n }\n this.consume(\"}\");\n\n grid.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return grid;\n }\n\n _sequence() {\n let sequence = new dapType(\"Sequence\");\n\n this.consume(\"sequence\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n sequence[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n sequence.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return sequence;\n }\n\n _structure() {\n let structure = new dapType(\"Structure\");\n\n this.consume(\"structure\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n structure[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n structure.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n structure.dimensions = [];\n structure.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n structure.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n structure.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n\n this.consume(\";\");\n\n return structure;\n }\n}\n\nexport class dasParser extends simpleParser {\n constructor(das, dataset) {\n super(das);\n this.das = das;\n this.dataset = dataset;\n }\n\n parse() {\n this._target = this.dataset;\n\n this.consume(\"attributes\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n return this.dataset;\n }\n\n _attr_container() {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(this._target.attributes);\n\n if (this._target.type == \"Grid\") {\n for (let map in this._target.maps) {\n if (this.dataset[map]) {\n let map = this._target.maps[map];\n for (let name in map.attributes) {\n this.dataset[map].attributes[name] = map.attributes[name];\n }\n }\n }\n }\n } else {\n this._container();\n }\n }\n\n _container() {\n let name = this.consume(\"[\\\\w-_\\\\./]+\");\n this.consume(\"{\");\n\n if (name.indexOf(\".\") > -1) {\n let names = name.split(\".\");\n let target = this._target;\n for (let i = 0; i < names.length; i++) {\n this._target = this._target[names[i]];\n }\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else if (structures.contains(this._target.type) && this._target[name]) {\n let target = this._target;\n this._target = target[name];\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else {\n this._target.attributes[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n\n _metadata() {\n let output = {};\n while (!this.peek(\"}\")) {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(output);\n } else {\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\"{\");\n output[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n return output;\n }\n\n _attribute(object) {\n let type = this.consume(IDENTIFIER_REGEX + \"+\");\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n let values = [];\n while (!this.peek(\";\")) {\n let value = this.consume('\".*?[^\\\\\\\\]\"|[^;,]+');\n\n if (type.toLowerCase() == \"string\" || type.toLowerCase() == \"url\") {\n value = pseudoSafeEval(value);\n } else if (type.toLowerCase() == \"alias\") {\n let target, tokens;\n if (value.match(/^\\\\./)) {\n tokens = value.substring(1).split(\".\");\n target = this.dataset;\n } else {\n tokens = value.split(\".\");\n target = this._target;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (target[token]) {\n target = target[token];\n } else if (target.array.name == token) {\n target = target.array;\n } else if (target.maps[token]) {\n target = target.maps[token];\n } else {\n target = target.attributes[token];\n }\n value = target;\n }\n } else {\n if (value.toLowerCase() == \"nan\") {\n value = NaN;\n } else {\n value = pseudoSafeEval(value);\n }\n }\n values.push(value);\n if (this.peek(\",\")) {\n this.consume(\",\");\n }\n }\n this.consume(\";\");\n\n if (values.length == 1) {\n values = values[0];\n }\n\n object[name] = values;\n }\n}\n","\"use strict\";\n\nimport {dasParser, ddsParser} from \"./parser.js\";\nimport {dapUnpacker, getBuffer} from \"./xdr.js\";\nimport ieHack from \"./vbscript.js\";\n\nexport default class JsDap {\n constructor(IE_HACK = false) {\n this.IE_HACK = IE_HACK;\n ieHack(this.IE_HACK);\n }\n\n proxyUrl(url, callback, binary, extraheaders) {\n let xml = undefined;\n\n // Mozilla/Safari/IE7+\n if (window.XMLHttpRequest) {\n xml = new XMLHttpRequest();\n // IE6\n } else if (window.ActiveXObject) {\n xml = new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n xml.open(\"GET\", url, true);\n if (xml.overrideMimeType) {\n xml.overrideMimeType(\"text/plain; charset=x-user-defined\");\n } else {\n xml.setRequestHeader(\"Accept-Charset\", \"x-user-defined\");\n }\n if (extraheaders) {\n for (let key in extraheaders) {\n xml.setRequestHeader(key, extraheaders[key]);\n }\n }\n\n xml.onreadystatechange = function() {\n if (xml.readyState == 4) {\n if (!binary) {\n callback(xml.responseText);\n } else if (this.IE_HACK) {\n callback(BinaryToArray(xml.responseBody).toArray());\n } else {\n callback(getBuffer(xml.responseText));\n }\n }\n };\n xml.send(\"\");\n }\n\n /** Flatten the data array as data attributes of elements of daplet */\n _applydata(data, daplet) {\n let i = 0;\n for (let child in daplet) {\n if (!daplet[child].type) continue;\n daplet[child].data = data[i++];\n if (daplet[child].type == \"Structure\") {\n this._applydata(daplet[child].data, daplet[child]);\n }\n }\n }\n\n /**\n * Load the dataset and call the callback with (data) where data is an array of data\n * the url must be a url with .dods extension.\n * @params:\n * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string)\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadData(url, callback, extraheaders) {\n this.proxyUrl(\n url,\n dods => {\n let dds = \"\";\n while (!dds.match(/\\nData:\\n$/)) {\n let c = dods.splice(0, 1);\n if (c.length === 0) throw new Error(\"Error reading data, are you sur this is a .dods request ?\");\n dds += String.fromCharCode(c);\n }\n dds = dds.substr(0, dds.length - 7);\n\n let daplet = new ddsParser(dds).parse();\n let data = new dapUnpacker(dods, daplet).getValue();\n this._applydata(data, daplet);\n callback(daplet);\n },\n true,\n extraheaders\n );\n }\n\n /**\n * Load the dataset and call the callback with (dataset) where dataset is the dataset \"metadata\";\n * - url (string): the url (must be a bare OPeNDAP url, without \"format extension\" nor query parameters).\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadDataset(url, callback, extraheaders) {\n // Load DDS.\n this.proxyUrl(\n url + \".dds\",\n dds => {\n let dataset = new ddsParser(dds).parse();\n\n // Load DAS.\n this.proxyUrl(\n url + \".das\",\n function(das) {\n dataset = new dasParser(das, dataset).parse();\n callback(dataset);\n },\n false,\n extraheaders\n );\n },\n false,\n extraheaders\n );\n }\n}\n","import JsDap from \"./lib/jsdap.js\";\n\nexport default JsDap;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/template/index.html b/template/index.html index 954c701..ecd9e93 100644 --- a/template/index.html +++ b/template/index.html @@ -3,45 +3,56 @@ OpenDap +
- - + + + +
+ +
+ + +
- From 68771779b553b141f2a7f647d0514602c96e7fb7 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:04:06 +0100 Subject: [PATCH 15/19] ingore config.json --- config.json | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 config.json diff --git a/config.json b/config.json deleted file mode 100644 index f8647a9..0000000 --- a/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "dods": "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc.dods?PID-WindTurbine,TIMESCALE-1_turbine_step,/Results/WindTurbine/Turbine_Type", - "dds": "https://curtis-dev.edf-labs.net/data/dods/results/CASE-1005841/dataset.nc" -} From f5a6420b7768ece6c7159d147949f5325e461e37 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:08:21 +0100 Subject: [PATCH 16/19] have dist in master --- dist/index.html | 58 -------------------------------------- dist/jsdap.js | 2 -- dist/jsdap.js.map | 1 - yarn.lock | 71 +++-------------------------------------------- 4 files changed, 4 insertions(+), 128 deletions(-) delete mode 100644 dist/index.html delete mode 100644 dist/jsdap.js delete mode 100644 dist/jsdap.js.map diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index f525ed7..0000000 --- a/dist/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - OpenDap - - - - -
- - - -
- -
- - - -
- - diff --git a/dist/jsdap.js b/dist/jsdap.js deleted file mode 100644 index b2cf4d7..0000000 --- a/dist/jsdap.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.JsDap=e():t.JsDap=e()}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if(t){var e=document.createElement("script");e.setAttribute("type","text/vbscript"),e.innerHTML="\n Function BinaryToArray(Binary)\n Dim i\n ReDim byteArray(LenB(Binary))\n For i = 1 To LenB(Binary)\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\n Next\n BinaryToArray = byteArray\n End Function\n ",document.head.appendChild(e)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var r=0;r>3)-1,u=t.length+(-(e+r)>>3),o=i-u,c=(t[i]>>a&(1<<(o?8-a:r))-1)+(o&&(n=(e+r)%8)?(t[u++]&(1<=s/2?n-s:n}function u(t,e,r){var n,s,i,u=Math.pow(2,r-1)-1,o=a(t,e+r,1),c=a(t,e,r),h=0,p=2,f=t.length+(-e>>3)-1;do{for(n=t[++f],i=1<<(s=e%8||8);i>>=1;n&i&&(h+=1/p),p*=2);}while(e-=s);return c==1+(u<<1)?h?NaN:o?-1/0:1/0:(1+-2*o)*(c||h?c?Math.pow(2,c-u)*(1+h):Math.pow(2,1-u)*h:0)}e.getBuffer=function(t){for(var e=new Array(t.length),r=0;r-1){for(var e=t.split("."),r=this._target,n=0;n0&&void 0!==arguments[0]&&arguments[0];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.IE_HACK=e,(0,u.default)(this.IE_HACK)}return s(t,[{key:"proxyUrl",value:function(t,e,r,n){var s=void 0;if(window.XMLHttpRequest?s=new XMLHttpRequest:window.ActiveXObject&&(s=new window.ActiveXObject("Microsoft.XMLHTTP")),s.open("GET",t,!0),s.overrideMimeType?s.overrideMimeType("text/plain; charset=x-user-defined"):s.setRequestHeader("Accept-Charset","x-user-defined"),n)for(var a in n)s.setRequestHeader(a,n[a]);s.onreadystatechange=function(){4==s.readyState&&(r?this.IE_HACK?e(BinaryToArray(s.responseBody).toArray()):e((0,i.getBuffer)(s.responseText)):e(s.responseText))},s.send("")}},{key:"_applydata",value:function(t,e){var r=0;for(var n in e)e[n].type&&(e[n].data=t[r++],"Structure"==e[n].type&&this._applydata(e[n].data,e[n]))}},{key:"loadData",value:function(t,e,r){var n=this;this.proxyUrl(t,function(t){for(var r="";!r.match(/\nData:\n$/);){var s=t.splice(0,1);if(0===s.length)throw new Error("Error reading data, are you sur this is a .dods request ?");r+=String.fromCharCode(s)}r=r.substr(0,r.length-7);var u=new a.ddsParser(r).parse(),o=new i.dapUnpacker(t,u).getValue();n._applydata(o,u),e(u)},!0,r)}},{key:"loadDataset",value:function(t,e,r){var n=this;this.proxyUrl(t+".dds",function(s){var i=new a.ddsParser(s).parse();n.proxyUrl(t+".das",function(t){i=new a.dasParser(t,i).parse(),e(i)},!1,r)},!1,r)}}]),t}();e.default=o},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,s=(n=r(3))&&n.__esModule?n:{default:n};e.default=s.default}]).default}); -//# sourceMappingURL=jsdap.js.map \ No newline at end of file diff --git a/dist/jsdap.js.map b/dist/jsdap.js.map deleted file mode 100644 index ad44b90..0000000 --- a/dist/jsdap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://JsDap/webpack/universalModuleDefinition","webpack://JsDap/webpack/bootstrap","webpack://JsDap/./lib/vbscript.js","webpack://JsDap/./lib/xdr.js","webpack://JsDap/./lib/parser.js","webpack://JsDap/./lib/jsdap.js","webpack://JsDap/./index.js"],"names":["root","factory","exports","module","define","amd","JsDap","window","t","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","e","IE_HACK","elem","document","createElement","setAttribute","innerHTML","head","appendChild","shl","a","b","readBits","buffer","start","length","offsetLeft","offsetRight","curByte","lastByte","diff","sum","decodeInt","data","bytes","signed","x","max","Math","pow","decodeFloat","precisionBits","exponentBits","byteValue","startBit","mask","bias","signal","exponent","significand","divisor","NaN","Infinity","getBuffer","Array","charCodeAt","dapUnpacker","xdrdata","dapvar","this","_buf","_pos","key","type","toLowerCase","out","child","tmp","getValue","push","map","array","maps","struct","mark","_unpack_uint32","slice","shape","_unpack_bytes","_unpack_string","func","reshape","size","stop","count","_unpack_byte","padding","str","String","fromCharCode","_createClass","writable","_possibleConstructorReturn","ReferenceError","_inherits","TypeError","create","constructor","setPrototypeOf","__proto__","_classCallCheck","atomicTypes","structures","IDENTIFIER_REGEX","pseudoSafeEval","test","replace","eval","contains","item","el","trim","ltrim","rtrim","dapType","attributes","simpleParser","input","stream","expr","regExp","RegExp","match","substr","Error","ddsParser","dds","_this","getPrototypeOf","dataset","consume","peek","declaration","_declaration","id","walk","daplet","includeParent","attr","_grid","_structure","_sequence","_base_declaration","baseType","dimensions","token","parseInt","grid","map_","sequence","structure","dasParser","das","_this2","_target","_attr_container","_attribute","_container","indexOf","names","split","target","_metadata","output","values","tokens","substring","_parser","_xdr","arguments","_vbscript2","url","callback","binary","extraheaders","xml","XMLHttpRequest","ActiveXObject","open","overrideMimeType","setRequestHeader","onreadystatechange","readyState","BinaryToArray","responseBody","toArray","responseText","send","_applydata","proxyUrl","dods","splice","parse"],"mappings":"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","file":"jsdap.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JsDap\"] = factory();\n\telse\n\t\troot[\"JsDap\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\n\nexport default function(IE_HACK) {\n if (IE_HACK) {\n let elem = document.createElement(\"script\");\n elem.setAttribute(\"type\", \"text/vbscript\");\n\n elem.innerHTML =\n \"\\n\\\n Function BinaryToArray(Binary)\\n Dim i\\n ReDim byteArray(LenB(Binary))\\n\\\n For i = 1 To LenB(Binary)\\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\\n\\\n Next\\n BinaryToArray = byteArray\\n End Function\\n \";\n\n document.head.appendChild(elem);\n }\n}\n","\"use strict\";\n\n// Lots of code from http://jsfromhell.com/classes/binary-parser\n// Jonas Raoni Soares Silva\n// http://jsfromhell.com/classes/binary-parser [v1.0]\n\nconst END_OF_SEQUENCE = \"\\xa5\\x00\\x00\\x00\";\nconst START_OF_SEQUENCE = \"\\x5a\\x00\\x00\\x00\";\n\nexport class dapUnpacker {\n constructor(xdrdata, dapvar) {\n this._buf = xdrdata;\n this.dapvar = dapvar;\n this._pos = 0;\n }\n\n getValue() {\n var i = this._pos;\n var type = this.dapvar.type.toLowerCase();\n\n if (type == \"structure\" || type == \"dataset\") {\n var out = [],\n tmp;\n var dapvar = this.dapvar;\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n out.push(tmp);\n }\n }\n this.dapvar = dapvar;\n return out;\n } else if (type == \"grid\") {\n var out = [],\n tmp;\n dapvar = this.dapvar;\n\n this.dapvar = dapvar.array;\n tmp = this.getValue();\n out.push(tmp);\n\n for (var map in dapvar.maps) {\n this.dapvar = dapvar.maps[map];\n tmp = this.getValue();\n out.push(tmp);\n }\n\n this.dapvar = dapvar;\n return out;\n } else if (type == \"sequence\") {\n var mark = this._unpack_uint32();\n var out = [],\n struct,\n tmp;\n dapvar = this.dapvar;\n while (mark != 2768240640) {\n struct = [];\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n struct.push(tmp);\n }\n }\n out.push(struct);\n mark = this._unpack_uint32();\n }\n this.dapvar = dapvar;\n return out;\n // This is a request for a base type variable inside a\n // sequence.\n } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) {\n var mark = this._unpack_uint32();\n var out = [],\n tmp;\n while (mark != 2768240640) {\n tmp = this.getValue();\n out.push(tmp);\n mark = this._unpack_uint32();\n }\n return out;\n }\n\n var n = 1;\n if (this.dapvar.shape.length) {\n n = this._unpack_uint32();\n if (type != \"url\" && type != \"string\") {\n this._unpack_uint32();\n }\n }\n\n // Bytes?\n var out;\n if (type == \"byte\") {\n out = this._unpack_bytes(n);\n // String?\n } else if (type == \"url\" || type == \"string\") {\n out = this._unpack_string(n);\n } else {\n out = [];\n var func;\n switch (type) {\n case \"float32\":\n func = \"_unpack_float32\";\n break;\n case \"float64\":\n func = \"_unpack_float64\";\n break;\n case \"int\":\n func = \"_unpack_int32\";\n break;\n case \"uint\":\n func = \"_unpack_uint32\";\n break;\n case \"int16\":\n func = \"_unpack_int16\";\n break;\n case \"uint16\":\n func = \"_unpack_uint16\";\n break;\n case \"int32\":\n func = \"_unpack_int32\";\n break;\n case \"uint32\":\n func = \"_unpack_uint32\";\n break;\n }\n for (var i = 0; i < n; i++) {\n out.push(this[func]());\n }\n }\n\n if (this.dapvar.shape) {\n out = reshape(out, this.dapvar.shape);\n } else {\n out = out[0];\n }\n\n return out;\n }\n\n _unpack_byte() {\n var bytes = 1;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint16() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint32() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int16() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int32() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_float32() {\n var precision = 23;\n var exponent = 8;\n var bytes = 4;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_float64() {\n var precision = 52;\n var exponent = 11;\n var bytes = 8;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_bytes(count) {\n var i = this._pos;\n var out = [];\n for (var c = 0; c < count; c++) {\n out.push(this._unpack_byte());\n }\n var padding = (4 - count % 4) % 4;\n this._pos = i + count + padding;\n\n return out;\n }\n\n _unpack_string(count) {\n var out = [];\n var n, i, j, data, padding;\n for (var c = 0; c < count; c++) {\n n = this._unpack_uint32();\n i = this._pos;\n data = this._buf.slice(i, i + n);\n\n padding = (4 - n % 4) % 4;\n this._pos = i + n + padding;\n\n // convert back to string\n var str = \"\";\n for (var i = 0; i < n; i++) {\n str += String.fromCharCode(data[i]);\n }\n out.push(str);\n }\n\n return out;\n }\n}\n\nexport function getBuffer(data) {\n var b = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n b[i] = data.charCodeAt(i) & 0xff;\n }\n return b;\n}\n\nfunction reshape(array, shape) {\n if (!shape.length) return array[0];\n var out = [];\n var size, start, stop;\n for (var i = 0; i < shape[0]; i++) {\n size = array.length / shape[0];\n start = i * size;\n stop = start + size;\n out.push(reshape(array.slice(start, stop), shape.slice(1)));\n }\n return out;\n}\n\nfunction shl(a, b) {\n for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);\n return a;\n}\n\nfunction readBits(buffer, start, length) {\n if (start < 0 || length <= 0) return 0;\n\n for (\n var offsetLeft,\n offsetRight = start % 8,\n curByte = buffer.length - (start >> 3) - 1,\n lastByte = buffer.length + (-(start + length) >> 3),\n diff = curByte - lastByte,\n sum =\n ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) +\n (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) : 0);\n diff;\n sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)\n );\n return sum;\n}\n\nfunction decodeInt(data, bytes, signed) {\n var x = readBits(data, 0, bytes * 8);\n var max = Math.pow(2, bytes * 8);\n var integer;\n if (signed && x >= max / 2) {\n integer = x - max;\n } else {\n integer = x;\n }\n return integer;\n}\n\nfunction decodeFloat(buffer, precisionBits, exponentBits) {\n // var buffer = data;\n\n var bias = Math.pow(2, exponentBits - 1) - 1;\n var signal = readBits(buffer, precisionBits + exponentBits, 1);\n var exponent = readBits(buffer, precisionBits, exponentBits);\n var significand = 0;\n var divisor = 2;\n var curByte = buffer.length + (-precisionBits >> 3) - 1;\n var byteValue, startBit, mask;\n\n do for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; (mask >>= 1); byteValue & mask && (significand += 1 / divisor), divisor *= 2);\n while ((precisionBits -= startBit));\n\n return exponent == (bias << 1) + 1\n ? significand ? NaN : signal ? -Infinity : +Infinity\n : (1 + signal * -2) * (exponent || significand ? (!exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)) : 0);\n}\n","\"use strict\";\n\nconst atomicTypes = [\"byte\", \"int\", \"uint\", \"int16\", \"uint16\", \"int32\", \"uint32\", \"float32\", \"float64\", \"string\", \"url\", \"alias\"];\nconst structures = [\"Sequence\", \"Structure\", \"Dataset\"];\nconst IDENTIFIER_REGEX = \"[\\\\w-/]\";\n\nArray.prototype.contains = function(item) {\n for (let i = 0, el = this[i]; i < this.length; el = this[++i]) {\n if (item == el) return true;\n }\n return false;\n};\n\nString.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n};\n\nString.prototype.ltrim = function() {\n return this.replace(/^[\\s\\n\\r\\t]+/, \"\");\n};\n\nString.prototype.rtrim = function() {\n return this.replace(/\\s+$/, \"\");\n};\n\nfunction pseudoSafeEval(str) {\n if (/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(str.replace(/\\\\./g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"/g, \"\"))) {\n return eval(\"(\" + str + \")\");\n }\n return str;\n}\n\nclass dapType {\n constructor(type) {\n this.type = type;\n this.attributes = {};\n }\n}\n\nclass simpleParser {\n constructor(input) {\n this.stream = input;\n }\n\n peek(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n return m[0];\n } else {\n return \"\";\n }\n }\n\n consume(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n this.stream = this.stream.substr(m[0].length).ltrim();\n return m[0];\n } else {\n throw new Error(\"Unable to parse stream: \" + this.stream.substr(0, 10));\n }\n }\n}\n\nexport class ddsParser extends simpleParser {\n constructor(dds) {\n super(dds);\n this.dds = dds;\n }\n\n parse() {\n let dataset = new dapType(\"Dataset\");\n\n this.consume(\"dataset\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n dataset[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n dataset.id = dataset.name = this.consume(\"[^;]+\");\n this.consume(\";\");\n\n // Set id.\n function walk(daplet, includeParent) {\n for (let attr in daplet) {\n let child = daplet[attr];\n if (child.type) {\n child.id = child.name;\n if (includeParent) {\n child.id = daplet.id + \".\" + child.id;\n }\n walk(child, true);\n }\n }\n }\n\n walk(dataset, false);\n\n return dataset;\n }\n\n _declaration() {\n let type = this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase();\n switch (type) {\n case \"grid\":\n return this._grid();\n case \"structure\":\n return this._structure();\n case \"sequence\":\n return this._sequence();\n default:\n return this._base_declaration();\n }\n }\n\n _base_declaration() {\n let baseType = new dapType();\n\n baseType.type = this.consume(IDENTIFIER_REGEX + \"+\");\n baseType.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n baseType.dimensions = [];\n baseType.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n baseType.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n baseType.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n this.consume(\";\");\n\n return baseType;\n }\n\n _grid() {\n let grid = new dapType(\"Grid\");\n\n this.consume(\"grid\");\n this.consume(\"{\");\n\n this.consume(\"array\");\n this.consume(\":\");\n grid.array = this._base_declaration();\n\n this.consume(\"maps\");\n this.consume(\":\");\n grid.maps = {};\n while (!this.peek(\"}\")) {\n let map_ = this._base_declaration();\n grid.maps[map_.name] = map_;\n }\n this.consume(\"}\");\n\n grid.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return grid;\n }\n\n _sequence() {\n let sequence = new dapType(\"Sequence\");\n\n this.consume(\"sequence\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n sequence[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n sequence.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return sequence;\n }\n\n _structure() {\n let structure = new dapType(\"Structure\");\n\n this.consume(\"structure\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n structure[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n structure.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n structure.dimensions = [];\n structure.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n structure.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n structure.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n\n this.consume(\";\");\n\n return structure;\n }\n}\n\nexport class dasParser extends simpleParser {\n constructor(das, dataset) {\n super(das);\n this.das = das;\n this.dataset = dataset;\n }\n\n parse() {\n this._target = this.dataset;\n\n this.consume(\"attributes\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n return this.dataset;\n }\n\n _attr_container() {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(this._target.attributes);\n\n if (this._target.type == \"Grid\") {\n for (let map in this._target.maps) {\n if (this.dataset[map]) {\n let map = this._target.maps[map];\n for (let name in map.attributes) {\n this.dataset[map].attributes[name] = map.attributes[name];\n }\n }\n }\n }\n } else {\n this._container();\n }\n }\n\n _container() {\n let name = this.consume(\"[\\\\w-_\\\\./]+\");\n this.consume(\"{\");\n\n if (name.indexOf(\".\") > -1) {\n let names = name.split(\".\");\n let target = this._target;\n for (let i = 0; i < names.length; i++) {\n this._target = this._target[names[i]];\n }\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else if (structures.contains(this._target.type) && this._target[name]) {\n let target = this._target;\n this._target = target[name];\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else {\n this._target.attributes[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n\n _metadata() {\n let output = {};\n while (!this.peek(\"}\")) {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(output);\n } else {\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\"{\");\n output[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n return output;\n }\n\n _attribute(object) {\n let type = this.consume(IDENTIFIER_REGEX + \"+\");\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n let values = [];\n while (!this.peek(\";\")) {\n let value = this.consume('\".*?[^\\\\\\\\]\"|[^;,]+');\n\n if (type.toLowerCase() == \"string\" || type.toLowerCase() == \"url\") {\n value = pseudoSafeEval(value);\n } else if (type.toLowerCase() == \"alias\") {\n let target, tokens;\n if (value.match(/^\\\\./)) {\n tokens = value.substring(1).split(\".\");\n target = this.dataset;\n } else {\n tokens = value.split(\".\");\n target = this._target;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (target[token]) {\n target = target[token];\n } else if (target.array.name == token) {\n target = target.array;\n } else if (target.maps[token]) {\n target = target.maps[token];\n } else {\n target = target.attributes[token];\n }\n value = target;\n }\n } else {\n if (value.toLowerCase() == \"nan\") {\n value = NaN;\n } else {\n value = pseudoSafeEval(value);\n }\n }\n values.push(value);\n if (this.peek(\",\")) {\n this.consume(\",\");\n }\n }\n this.consume(\";\");\n\n if (values.length == 1) {\n values = values[0];\n }\n\n object[name] = values;\n }\n}\n","\"use strict\";\n\nimport {dasParser, ddsParser} from \"./parser.js\";\nimport {dapUnpacker, getBuffer} from \"./xdr.js\";\nimport ieHack from \"./vbscript.js\";\n\nexport default class JsDap {\n constructor(IE_HACK = false) {\n this.IE_HACK = IE_HACK;\n ieHack(this.IE_HACK);\n }\n\n proxyUrl(url, callback, binary, extraheaders) {\n let xml = undefined;\n\n // Mozilla/Safari/IE7+\n if (window.XMLHttpRequest) {\n xml = new XMLHttpRequest();\n // IE6\n } else if (window.ActiveXObject) {\n xml = new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n xml.open(\"GET\", url, true);\n if (xml.overrideMimeType) {\n xml.overrideMimeType(\"text/plain; charset=x-user-defined\");\n } else {\n xml.setRequestHeader(\"Accept-Charset\", \"x-user-defined\");\n }\n if (extraheaders) {\n for (let key in extraheaders) {\n xml.setRequestHeader(key, extraheaders[key]);\n }\n }\n\n xml.onreadystatechange = function() {\n if (xml.readyState == 4) {\n if (!binary) {\n callback(xml.responseText);\n } else if (this.IE_HACK) {\n callback(BinaryToArray(xml.responseBody).toArray());\n } else {\n callback(getBuffer(xml.responseText));\n }\n }\n };\n xml.send(\"\");\n }\n\n /** Flatten the data array as data attributes of elements of daplet */\n _applydata(data, daplet) {\n let i = 0;\n for (let child in daplet) {\n if (!daplet[child].type) continue;\n daplet[child].data = data[i++];\n if (daplet[child].type == \"Structure\") {\n this._applydata(daplet[child].data, daplet[child]);\n }\n }\n }\n\n /**\n * Load the dataset and call the callback with (data) where data is an array of data\n * the url must be a url with .dods extension.\n * @params:\n * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string)\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadData(url, callback, extraheaders) {\n this.proxyUrl(\n url,\n dods => {\n let dds = \"\";\n while (!dds.match(/\\nData:\\n$/)) {\n let c = dods.splice(0, 1);\n if (c.length === 0) throw new Error(\"Error reading data, are you sur this is a .dods request ?\");\n dds += String.fromCharCode(c);\n }\n dds = dds.substr(0, dds.length - 7);\n\n let daplet = new ddsParser(dds).parse();\n let data = new dapUnpacker(dods, daplet).getValue();\n this._applydata(data, daplet);\n callback(daplet);\n },\n true,\n extraheaders\n );\n }\n\n /**\n * Load the dataset and call the callback with (dataset) where dataset is the dataset \"metadata\";\n * - url (string): the url (must be a bare OPeNDAP url, without \"format extension\" nor query parameters).\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadDataset(url, callback, extraheaders) {\n // Load DDS.\n this.proxyUrl(\n url + \".dds\",\n dds => {\n let dataset = new ddsParser(dds).parse();\n\n // Load DAS.\n this.proxyUrl(\n url + \".das\",\n function(das) {\n dataset = new dasParser(das, dataset).parse();\n callback(dataset);\n },\n false,\n extraheaders\n );\n },\n false,\n extraheaders\n );\n }\n}\n","import JsDap from \"./lib/jsdap.js\";\n\nexport default JsDap;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 027151a..dbcae95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1509,10 +1509,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -corser@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" - create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1855,15 +1851,6 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -ecstatic@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.2.0.tgz#1b1aee1ca7c6b99cfb5cf6c9b26b481b90c4409f" - dependencies: - he "^1.1.1" - mime "^1.4.1" - minimist "^1.1.0" - url-join "^2.0.2" - editions@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" @@ -2728,7 +2715,7 @@ hawk@3.1.3, hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" -he@1.1.x, he@^1.1.1: +he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -2838,26 +2825,13 @@ http-proxy-middleware@~0.17.4: lodash "^4.17.2" micromatch "^2.3.11" -http-proxy@^1.16.2, http-proxy@^1.8.1: +http-proxy@^1.16.2: version "1.16.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" dependencies: eventemitter3 "1.x.x" requires-port "1.x.x" -http-server@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.11.1.tgz#2302a56a6ffef7f9abea0147d838a5e9b6b6a79b" - dependencies: - colors "1.0.3" - corser "~2.0.0" - ecstatic "^3.0.0" - http-proxy "^1.8.1" - opener "~1.4.0" - optimist "0.6.x" - portfinder "^1.0.13" - union "~0.4.3" - http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -3758,10 +3732,6 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - mime@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" @@ -3796,14 +3766,10 @@ minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" @@ -4110,23 +4076,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opener@~1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" - opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" dependencies: is-wsl "^1.1.0" -optimist@0.6.x: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -4404,7 +4359,7 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" -portfinder@^1.0.13, portfinder@^1.0.9: +portfinder@^1.0.9: version "1.0.13" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" dependencies: @@ -4519,10 +4474,6 @@ qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" - qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -5629,12 +5580,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" -union@~0.4.3: - version "0.4.6" - resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" - dependencies: - qs "~2.3.3" - unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" @@ -5674,10 +5619,6 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -url-join@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" - url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" @@ -5979,10 +5920,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" From 335e5f54f073c87118cf885abaa89fe37c4fe5da Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:49:53 +0100 Subject: [PATCH 17/19] update README and provide dist --- README.md | 98 +++++++++++++++++++++++++++++++++++++---------- dist/index.html | 58 ++++++++++++++++++++++++++++ dist/jsdap.js | 2 + dist/jsdap.js.map | 1 + 4 files changed, 139 insertions(+), 20 deletions(-) create mode 100644 dist/index.html create mode 100644 dist/jsdap.js create mode 100644 dist/jsdap.js.map diff --git a/README.md b/README.md index 0d190a4..7ff7b59 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,100 @@ # JavaScript AJAX client for DAP services ## Introduction + [OPeNDAP](http://www.opendap.org/) protocol allows publishing huge datasets over internet. The protocols allows describing and querying data in various formats. This library is designed to allow querying DAP dataset in AJAX based on the url. Main library code is from [Roberto De Almeida's jsdap project on google code](https://code.google.com/p/jsdap/). -## Setup -The javascript files need to be loaded to the HTML source code, the **test.html** file is a good quickstart to load the libraries. +## Setup + +The script is packed as `UMD` module and transpile down to `ES5` (`dist/jsdap`). However, you can only use it as `ES6 module` or `AMD` module. Since +the script relies on `window.XMLHttpRequest`, it is not available on `NODE` environment. + +The **dist/index.html** is a good quickstart to load the libraries. Notice also that the cross domain limitations apply to OPeNDAP servers and thus requests must be properly managed or CORS enabled. -## Usage +A quick start (make sure you have `yarn` or `npm` install), following is example with `yarn`: + + // Download the dependencies (in the proj folder) + $ yarn + + // Then you bring the webpack-dev server up and checkout the example + $ yarn serve + + // If you want to rebuild the dist again, then + $ yarn build + +## Usage + +To load a dataset the _loadData_ function can be used this way (`ES6` exampe) : + + import JsDap from './dist/jsdap.js'; + + // if you want the IE_HACK, set the flag as true + let jsdap = new JsDap(false); -To load a dataset the *loadData* function must be used this way : + jsdap.loadData("http://www.example.com/dapserver/mydataset.nc.dods?time[1][1:5]", + function(data) { + console.log("Received data"); + console.log(data); + }); - loadData("http://www.example.com/dapserver/mydataset.nc.dods?time[1][1:5]", - function(data) { - console.log("Received data"); - console.log(data); - }); -Notice that the url **MUST** be a .dods request and that you *CAN* add additionnaly DAP query. +Notice that the url **MUST** be a .dods request and that you _CAN_ add additionnaly DAP query. To only load the dataset (ie. information about the structure of data) : - - loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", i - function(info) { - console.log(info); - }); +import JsDap from './dist/jsdap.js'; + + # if you want the IE_HACK, set the flag as true +let jsdap = new JsDap(false); +jsdap.loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", +function(info) { +console.log(info); +}); Notice that the url **MUST** be a .dds request and you **CANNOT** add additonnal DAP query/ An extra parameter can be added to send additionnal headers to the request. -## Troubleshooting +Of cause, you can still go with the old school way, load the script into the ` + + + + + +## Troubleshooting + +1. Your requests fail ? Careful about **cross domain requests** +2. You have parsing errors in loadData ? Ensure you passed in .dods request not .ascii or other. +3. You have parsing errors with loadDataset ? Ensure you are doing a .dds request. + +Not enought ? Contact me at contact@obenhamid.me or http://obenhamid.me diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..f525ed7 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,58 @@ + + + + + OpenDap + + + + +
+ + + +
+ +
+ + + +
+ + diff --git a/dist/jsdap.js b/dist/jsdap.js new file mode 100644 index 0000000..b2cf4d7 --- /dev/null +++ b/dist/jsdap.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.JsDap=e():t.JsDap=e()}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var s=e[n]={i:n,l:!1,exports:{}};return t[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if(t){var e=document.createElement("script");e.setAttribute("type","text/vbscript"),e.innerHTML="\n Function BinaryToArray(Binary)\n Dim i\n ReDim byteArray(LenB(Binary))\n For i = 1 To LenB(Binary)\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\n Next\n BinaryToArray = byteArray\n End Function\n ",document.head.appendChild(e)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var r=0;r>3)-1,u=t.length+(-(e+r)>>3),o=i-u,c=(t[i]>>a&(1<<(o?8-a:r))-1)+(o&&(n=(e+r)%8)?(t[u++]&(1<=s/2?n-s:n}function u(t,e,r){var n,s,i,u=Math.pow(2,r-1)-1,o=a(t,e+r,1),c=a(t,e,r),h=0,p=2,f=t.length+(-e>>3)-1;do{for(n=t[++f],i=1<<(s=e%8||8);i>>=1;n&i&&(h+=1/p),p*=2);}while(e-=s);return c==1+(u<<1)?h?NaN:o?-1/0:1/0:(1+-2*o)*(c||h?c?Math.pow(2,c-u)*(1+h):Math.pow(2,1-u)*h:0)}e.getBuffer=function(t){for(var e=new Array(t.length),r=0;r-1){for(var e=t.split("."),r=this._target,n=0;n0&&void 0!==arguments[0]&&arguments[0];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.IE_HACK=e,(0,u.default)(this.IE_HACK)}return s(t,[{key:"proxyUrl",value:function(t,e,r,n){var s=void 0;if(window.XMLHttpRequest?s=new XMLHttpRequest:window.ActiveXObject&&(s=new window.ActiveXObject("Microsoft.XMLHTTP")),s.open("GET",t,!0),s.overrideMimeType?s.overrideMimeType("text/plain; charset=x-user-defined"):s.setRequestHeader("Accept-Charset","x-user-defined"),n)for(var a in n)s.setRequestHeader(a,n[a]);s.onreadystatechange=function(){4==s.readyState&&(r?this.IE_HACK?e(BinaryToArray(s.responseBody).toArray()):e((0,i.getBuffer)(s.responseText)):e(s.responseText))},s.send("")}},{key:"_applydata",value:function(t,e){var r=0;for(var n in e)e[n].type&&(e[n].data=t[r++],"Structure"==e[n].type&&this._applydata(e[n].data,e[n]))}},{key:"loadData",value:function(t,e,r){var n=this;this.proxyUrl(t,function(t){for(var r="";!r.match(/\nData:\n$/);){var s=t.splice(0,1);if(0===s.length)throw new Error("Error reading data, are you sur this is a .dods request ?");r+=String.fromCharCode(s)}r=r.substr(0,r.length-7);var u=new a.ddsParser(r).parse(),o=new i.dapUnpacker(t,u).getValue();n._applydata(o,u),e(u)},!0,r)}},{key:"loadDataset",value:function(t,e,r){var n=this;this.proxyUrl(t+".dds",function(s){var i=new a.ddsParser(s).parse();n.proxyUrl(t+".das",function(t){i=new a.dasParser(t,i).parse(),e(i)},!1,r)},!1,r)}}]),t}();e.default=o},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,s=(n=r(3))&&n.__esModule?n:{default:n};e.default=s.default}]).default}); +//# sourceMappingURL=jsdap.js.map \ No newline at end of file diff --git a/dist/jsdap.js.map b/dist/jsdap.js.map new file mode 100644 index 0000000..ad44b90 --- /dev/null +++ b/dist/jsdap.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://JsDap/webpack/universalModuleDefinition","webpack://JsDap/webpack/bootstrap","webpack://JsDap/./lib/vbscript.js","webpack://JsDap/./lib/xdr.js","webpack://JsDap/./lib/parser.js","webpack://JsDap/./lib/jsdap.js","webpack://JsDap/./index.js"],"names":["root","factory","exports","module","define","amd","JsDap","window","t","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","default","object","property","prototype","hasOwnProperty","p","s","e","IE_HACK","elem","document","createElement","setAttribute","innerHTML","head","appendChild","shl","a","b","readBits","buffer","start","length","offsetLeft","offsetRight","curByte","lastByte","diff","sum","decodeInt","data","bytes","signed","x","max","Math","pow","decodeFloat","precisionBits","exponentBits","byteValue","startBit","mask","bias","signal","exponent","significand","divisor","NaN","Infinity","getBuffer","Array","charCodeAt","dapUnpacker","xdrdata","dapvar","this","_buf","_pos","key","type","toLowerCase","out","child","tmp","getValue","push","map","array","maps","struct","mark","_unpack_uint32","slice","shape","_unpack_bytes","_unpack_string","func","reshape","size","stop","count","_unpack_byte","padding","str","String","fromCharCode","_createClass","writable","_possibleConstructorReturn","ReferenceError","_inherits","TypeError","create","constructor","setPrototypeOf","__proto__","_classCallCheck","atomicTypes","structures","IDENTIFIER_REGEX","pseudoSafeEval","test","replace","eval","contains","item","el","trim","ltrim","rtrim","dapType","attributes","simpleParser","input","stream","expr","regExp","RegExp","match","substr","Error","ddsParser","dds","_this","getPrototypeOf","dataset","consume","peek","declaration","_declaration","id","walk","daplet","includeParent","attr","_grid","_structure","_sequence","_base_declaration","baseType","dimensions","token","parseInt","grid","map_","sequence","structure","dasParser","das","_this2","_target","_attr_container","_attribute","_container","indexOf","names","split","target","_metadata","output","values","tokens","substring","_parser","_xdr","arguments","_vbscript2","url","callback","binary","extraheaders","xml","XMLHttpRequest","ActiveXObject","open","overrideMimeType","setRequestHeader","onreadystatechange","readyState","BinaryToArray","responseBody","toArray","responseText","send","_applydata","proxyUrl","dods","splice","parse"],"mappings":"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","file":"jsdap.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"JsDap\"] = factory();\n\telse\n\t\troot[\"JsDap\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\n\nexport default function(IE_HACK) {\n if (IE_HACK) {\n let elem = document.createElement(\"script\");\n elem.setAttribute(\"type\", \"text/vbscript\");\n\n elem.innerHTML =\n \"\\n\\\n Function BinaryToArray(Binary)\\n Dim i\\n ReDim byteArray(LenB(Binary))\\n\\\n For i = 1 To LenB(Binary)\\n byteArray(i-1) = AscB(MidB(Binary, i, 1))\\n\\\n Next\\n BinaryToArray = byteArray\\n End Function\\n \";\n\n document.head.appendChild(elem);\n }\n}\n","\"use strict\";\n\n// Lots of code from http://jsfromhell.com/classes/binary-parser\n// Jonas Raoni Soares Silva\n// http://jsfromhell.com/classes/binary-parser [v1.0]\n\nconst END_OF_SEQUENCE = \"\\xa5\\x00\\x00\\x00\";\nconst START_OF_SEQUENCE = \"\\x5a\\x00\\x00\\x00\";\n\nexport class dapUnpacker {\n constructor(xdrdata, dapvar) {\n this._buf = xdrdata;\n this.dapvar = dapvar;\n this._pos = 0;\n }\n\n getValue() {\n var i = this._pos;\n var type = this.dapvar.type.toLowerCase();\n\n if (type == \"structure\" || type == \"dataset\") {\n var out = [],\n tmp;\n var dapvar = this.dapvar;\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n out.push(tmp);\n }\n }\n this.dapvar = dapvar;\n return out;\n } else if (type == \"grid\") {\n var out = [],\n tmp;\n dapvar = this.dapvar;\n\n this.dapvar = dapvar.array;\n tmp = this.getValue();\n out.push(tmp);\n\n for (var map in dapvar.maps) {\n this.dapvar = dapvar.maps[map];\n tmp = this.getValue();\n out.push(tmp);\n }\n\n this.dapvar = dapvar;\n return out;\n } else if (type == \"sequence\") {\n var mark = this._unpack_uint32();\n var out = [],\n struct,\n tmp;\n dapvar = this.dapvar;\n while (mark != 2768240640) {\n struct = [];\n for (var child in dapvar) {\n if (dapvar[child].type) {\n this.dapvar = dapvar[child];\n tmp = this.getValue();\n struct.push(tmp);\n }\n }\n out.push(struct);\n mark = this._unpack_uint32();\n }\n this.dapvar = dapvar;\n return out;\n // This is a request for a base type variable inside a\n // sequence.\n } else if (this._buf.slice(i, i + 4) == START_OF_SEQUENCE) {\n var mark = this._unpack_uint32();\n var out = [],\n tmp;\n while (mark != 2768240640) {\n tmp = this.getValue();\n out.push(tmp);\n mark = this._unpack_uint32();\n }\n return out;\n }\n\n var n = 1;\n if (this.dapvar.shape.length) {\n n = this._unpack_uint32();\n if (type != \"url\" && type != \"string\") {\n this._unpack_uint32();\n }\n }\n\n // Bytes?\n var out;\n if (type == \"byte\") {\n out = this._unpack_bytes(n);\n // String?\n } else if (type == \"url\" || type == \"string\") {\n out = this._unpack_string(n);\n } else {\n out = [];\n var func;\n switch (type) {\n case \"float32\":\n func = \"_unpack_float32\";\n break;\n case \"float64\":\n func = \"_unpack_float64\";\n break;\n case \"int\":\n func = \"_unpack_int32\";\n break;\n case \"uint\":\n func = \"_unpack_uint32\";\n break;\n case \"int16\":\n func = \"_unpack_int16\";\n break;\n case \"uint16\":\n func = \"_unpack_uint16\";\n break;\n case \"int32\":\n func = \"_unpack_int32\";\n break;\n case \"uint32\":\n func = \"_unpack_uint32\";\n break;\n }\n for (var i = 0; i < n; i++) {\n out.push(this[func]());\n }\n }\n\n if (this.dapvar.shape) {\n out = reshape(out, this.dapvar.shape);\n } else {\n out = out[0];\n }\n\n return out;\n }\n\n _unpack_byte() {\n var bytes = 1;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint16() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_uint32() {\n var bytes = 4;\n var signed = false;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int16() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_int32() {\n var bytes = 4;\n var signed = true;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeInt(data, bytes, signed);\n }\n\n _unpack_float32() {\n var precision = 23;\n var exponent = 8;\n var bytes = 4;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_float64() {\n var precision = 52;\n var exponent = 11;\n var bytes = 8;\n\n var i = this._pos;\n this._pos = i + bytes;\n var data = this._buf.slice(i, i + bytes);\n return decodeFloat(data, precision, exponent);\n }\n\n _unpack_bytes(count) {\n var i = this._pos;\n var out = [];\n for (var c = 0; c < count; c++) {\n out.push(this._unpack_byte());\n }\n var padding = (4 - count % 4) % 4;\n this._pos = i + count + padding;\n\n return out;\n }\n\n _unpack_string(count) {\n var out = [];\n var n, i, j, data, padding;\n for (var c = 0; c < count; c++) {\n n = this._unpack_uint32();\n i = this._pos;\n data = this._buf.slice(i, i + n);\n\n padding = (4 - n % 4) % 4;\n this._pos = i + n + padding;\n\n // convert back to string\n var str = \"\";\n for (var i = 0; i < n; i++) {\n str += String.fromCharCode(data[i]);\n }\n out.push(str);\n }\n\n return out;\n }\n}\n\nexport function getBuffer(data) {\n var b = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n b[i] = data.charCodeAt(i) & 0xff;\n }\n return b;\n}\n\nfunction reshape(array, shape) {\n if (!shape.length) return array[0];\n var out = [];\n var size, start, stop;\n for (var i = 0; i < shape[0]; i++) {\n size = array.length / shape[0];\n start = i * size;\n stop = start + size;\n out.push(reshape(array.slice(start, stop), shape.slice(1)));\n }\n return out;\n}\n\nfunction shl(a, b) {\n for (++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);\n return a;\n}\n\nfunction readBits(buffer, start, length) {\n if (start < 0 || length <= 0) return 0;\n\n for (\n var offsetLeft,\n offsetRight = start % 8,\n curByte = buffer.length - (start >> 3) - 1,\n lastByte = buffer.length + (-(start + length) >> 3),\n diff = curByte - lastByte,\n sum =\n ((buffer[curByte] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) +\n (diff && (offsetLeft = (start + length) % 8) ? (buffer[lastByte++] & ((1 << offsetLeft) - 1)) << ((diff-- << 3) - offsetRight) : 0);\n diff;\n sum += shl(buffer[lastByte++], (diff-- << 3) - offsetRight)\n );\n return sum;\n}\n\nfunction decodeInt(data, bytes, signed) {\n var x = readBits(data, 0, bytes * 8);\n var max = Math.pow(2, bytes * 8);\n var integer;\n if (signed && x >= max / 2) {\n integer = x - max;\n } else {\n integer = x;\n }\n return integer;\n}\n\nfunction decodeFloat(buffer, precisionBits, exponentBits) {\n // var buffer = data;\n\n var bias = Math.pow(2, exponentBits - 1) - 1;\n var signal = readBits(buffer, precisionBits + exponentBits, 1);\n var exponent = readBits(buffer, precisionBits, exponentBits);\n var significand = 0;\n var divisor = 2;\n var curByte = buffer.length + (-precisionBits >> 3) - 1;\n var byteValue, startBit, mask;\n\n do for (byteValue = buffer[++curByte], startBit = precisionBits % 8 || 8, mask = 1 << startBit; (mask >>= 1); byteValue & mask && (significand += 1 / divisor), divisor *= 2);\n while ((precisionBits -= startBit));\n\n return exponent == (bias << 1) + 1\n ? significand ? NaN : signal ? -Infinity : +Infinity\n : (1 + signal * -2) * (exponent || significand ? (!exponent ? Math.pow(2, -bias + 1) * significand : Math.pow(2, exponent - bias) * (1 + significand)) : 0);\n}\n","\"use strict\";\n\nconst atomicTypes = [\"byte\", \"int\", \"uint\", \"int16\", \"uint16\", \"int32\", \"uint32\", \"float32\", \"float64\", \"string\", \"url\", \"alias\"];\nconst structures = [\"Sequence\", \"Structure\", \"Dataset\"];\nconst IDENTIFIER_REGEX = \"[\\\\w-/]\";\n\nArray.prototype.contains = function(item) {\n for (let i = 0, el = this[i]; i < this.length; el = this[++i]) {\n if (item == el) return true;\n }\n return false;\n};\n\nString.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n};\n\nString.prototype.ltrim = function() {\n return this.replace(/^[\\s\\n\\r\\t]+/, \"\");\n};\n\nString.prototype.rtrim = function() {\n return this.replace(/\\s+$/, \"\");\n};\n\nfunction pseudoSafeEval(str) {\n if (/^[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]*$/.test(str.replace(/\\\\./g, \"@\").replace(/\"[^\"\\\\\\n\\r]*\"/g, \"\"))) {\n return eval(\"(\" + str + \")\");\n }\n return str;\n}\n\nclass dapType {\n constructor(type) {\n this.type = type;\n this.attributes = {};\n }\n}\n\nclass simpleParser {\n constructor(input) {\n this.stream = input;\n }\n\n peek(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n return m[0];\n } else {\n return \"\";\n }\n }\n\n consume(expr) {\n let regExp = new RegExp(\"^\" + expr, \"i\");\n let m = this.stream.match(regExp);\n if (m) {\n this.stream = this.stream.substr(m[0].length).ltrim();\n return m[0];\n } else {\n throw new Error(\"Unable to parse stream: \" + this.stream.substr(0, 10));\n }\n }\n}\n\nexport class ddsParser extends simpleParser {\n constructor(dds) {\n super(dds);\n this.dds = dds;\n }\n\n parse() {\n let dataset = new dapType(\"Dataset\");\n\n this.consume(\"dataset\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n dataset[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n dataset.id = dataset.name = this.consume(\"[^;]+\");\n this.consume(\";\");\n\n // Set id.\n function walk(daplet, includeParent) {\n for (let attr in daplet) {\n let child = daplet[attr];\n if (child.type) {\n child.id = child.name;\n if (includeParent) {\n child.id = daplet.id + \".\" + child.id;\n }\n walk(child, true);\n }\n }\n }\n\n walk(dataset, false);\n\n return dataset;\n }\n\n _declaration() {\n let type = this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase();\n switch (type) {\n case \"grid\":\n return this._grid();\n case \"structure\":\n return this._structure();\n case \"sequence\":\n return this._sequence();\n default:\n return this._base_declaration();\n }\n }\n\n _base_declaration() {\n let baseType = new dapType();\n\n baseType.type = this.consume(IDENTIFIER_REGEX + \"+\");\n baseType.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n baseType.dimensions = [];\n baseType.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n baseType.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n baseType.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n this.consume(\";\");\n\n return baseType;\n }\n\n _grid() {\n let grid = new dapType(\"Grid\");\n\n this.consume(\"grid\");\n this.consume(\"{\");\n\n this.consume(\"array\");\n this.consume(\":\");\n grid.array = this._base_declaration();\n\n this.consume(\"maps\");\n this.consume(\":\");\n grid.maps = {};\n while (!this.peek(\"}\")) {\n let map_ = this._base_declaration();\n grid.maps[map_.name] = map_;\n }\n this.consume(\"}\");\n\n grid.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return grid;\n }\n\n _sequence() {\n let sequence = new dapType(\"Sequence\");\n\n this.consume(\"sequence\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n sequence[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n sequence.name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\";\");\n\n return sequence;\n }\n\n _structure() {\n let structure = new dapType(\"Structure\");\n\n this.consume(\"structure\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n let declaration = this._declaration();\n structure[declaration.name] = declaration;\n }\n this.consume(\"}\");\n\n structure.name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n structure.dimensions = [];\n structure.shape = [];\n while (!this.peek(\";\")) {\n this.consume(\"\\\\[\");\n let token = this.consume(IDENTIFIER_REGEX + \"+\");\n if (this.peek(\"=\")) {\n structure.dimensions.push(token);\n this.consume(\"=\");\n token = this.consume(\"\\\\d+\");\n }\n structure.shape.push(parseInt(token));\n this.consume(\"\\\\]\");\n }\n\n this.consume(\";\");\n\n return structure;\n }\n}\n\nexport class dasParser extends simpleParser {\n constructor(das, dataset) {\n super(das);\n this.das = das;\n this.dataset = dataset;\n }\n\n parse() {\n this._target = this.dataset;\n\n this.consume(\"attributes\");\n this.consume(\"{\");\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n return this.dataset;\n }\n\n _attr_container() {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(this._target.attributes);\n\n if (this._target.type == \"Grid\") {\n for (let map in this._target.maps) {\n if (this.dataset[map]) {\n let map = this._target.maps[map];\n for (let name in map.attributes) {\n this.dataset[map].attributes[name] = map.attributes[name];\n }\n }\n }\n }\n } else {\n this._container();\n }\n }\n\n _container() {\n let name = this.consume(\"[\\\\w-_\\\\./]+\");\n this.consume(\"{\");\n\n if (name.indexOf(\".\") > -1) {\n let names = name.split(\".\");\n let target = this._target;\n for (let i = 0; i < names.length; i++) {\n this._target = this._target[names[i]];\n }\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else if (structures.contains(this._target.type) && this._target[name]) {\n let target = this._target;\n this._target = target[name];\n\n while (!this.peek(\"}\")) {\n this._attr_container();\n }\n this.consume(\"}\");\n\n this._target = target;\n } else {\n this._target.attributes[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n\n _metadata() {\n let output = {};\n while (!this.peek(\"}\")) {\n if (atomicTypes.contains(this.peek(IDENTIFIER_REGEX + \"+\").toLowerCase())) {\n this._attribute(output);\n } else {\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n this.consume(\"{\");\n output[name] = this._metadata();\n this.consume(\"}\");\n }\n }\n return output;\n }\n\n _attribute(object) {\n let type = this.consume(IDENTIFIER_REGEX + \"+\");\n let name = this.consume(IDENTIFIER_REGEX + \"+\");\n\n let values = [];\n while (!this.peek(\";\")) {\n let value = this.consume('\".*?[^\\\\\\\\]\"|[^;,]+');\n\n if (type.toLowerCase() == \"string\" || type.toLowerCase() == \"url\") {\n value = pseudoSafeEval(value);\n } else if (type.toLowerCase() == \"alias\") {\n let target, tokens;\n if (value.match(/^\\\\./)) {\n tokens = value.substring(1).split(\".\");\n target = this.dataset;\n } else {\n tokens = value.split(\".\");\n target = this._target;\n }\n\n for (let i = 0; i < tokens.length; i++) {\n let token = tokens[i];\n if (target[token]) {\n target = target[token];\n } else if (target.array.name == token) {\n target = target.array;\n } else if (target.maps[token]) {\n target = target.maps[token];\n } else {\n target = target.attributes[token];\n }\n value = target;\n }\n } else {\n if (value.toLowerCase() == \"nan\") {\n value = NaN;\n } else {\n value = pseudoSafeEval(value);\n }\n }\n values.push(value);\n if (this.peek(\",\")) {\n this.consume(\",\");\n }\n }\n this.consume(\";\");\n\n if (values.length == 1) {\n values = values[0];\n }\n\n object[name] = values;\n }\n}\n","\"use strict\";\n\nimport {dasParser, ddsParser} from \"./parser.js\";\nimport {dapUnpacker, getBuffer} from \"./xdr.js\";\nimport ieHack from \"./vbscript.js\";\n\nexport default class JsDap {\n constructor(IE_HACK = false) {\n this.IE_HACK = IE_HACK;\n ieHack(this.IE_HACK);\n }\n\n proxyUrl(url, callback, binary, extraheaders) {\n let xml = undefined;\n\n // Mozilla/Safari/IE7+\n if (window.XMLHttpRequest) {\n xml = new XMLHttpRequest();\n // IE6\n } else if (window.ActiveXObject) {\n xml = new window.ActiveXObject(\"Microsoft.XMLHTTP\");\n }\n\n xml.open(\"GET\", url, true);\n if (xml.overrideMimeType) {\n xml.overrideMimeType(\"text/plain; charset=x-user-defined\");\n } else {\n xml.setRequestHeader(\"Accept-Charset\", \"x-user-defined\");\n }\n if (extraheaders) {\n for (let key in extraheaders) {\n xml.setRequestHeader(key, extraheaders[key]);\n }\n }\n\n xml.onreadystatechange = function() {\n if (xml.readyState == 4) {\n if (!binary) {\n callback(xml.responseText);\n } else if (this.IE_HACK) {\n callback(BinaryToArray(xml.responseBody).toArray());\n } else {\n callback(getBuffer(xml.responseText));\n }\n }\n };\n xml.send(\"\");\n }\n\n /** Flatten the data array as data attributes of elements of daplet */\n _applydata(data, daplet) {\n let i = 0;\n for (let child in daplet) {\n if (!daplet[child].type) continue;\n daplet[child].data = data[i++];\n if (daplet[child].type == \"Structure\") {\n this._applydata(daplet[child].data, daplet[child]);\n }\n }\n }\n\n /**\n * Load the dataset and call the callback with (data) where data is an array of data\n * the url must be a url with .dods extension.\n * @params:\n * - url (string): the url (must be a .dods url, it might have additonnal slicing OpENDAP query string)\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadData(url, callback, extraheaders) {\n this.proxyUrl(\n url,\n dods => {\n let dds = \"\";\n while (!dds.match(/\\nData:\\n$/)) {\n let c = dods.splice(0, 1);\n if (c.length === 0) throw new Error(\"Error reading data, are you sur this is a .dods request ?\");\n dds += String.fromCharCode(c);\n }\n dds = dds.substr(0, dds.length - 7);\n\n let daplet = new ddsParser(dds).parse();\n let data = new dapUnpacker(dods, daplet).getValue();\n this._applydata(data, daplet);\n callback(daplet);\n },\n true,\n extraheaders\n );\n }\n\n /**\n * Load the dataset and call the callback with (dataset) where dataset is the dataset \"metadata\";\n * - url (string): the url (must be a bare OPeNDAP url, without \"format extension\" nor query parameters).\n * - callback (function(data)): the callback which will receive parsed data.\n * - extraheaders (map/object) : Javascript Object or map that contains keys and values of additonnal headers for the request.\n */\n loadDataset(url, callback, extraheaders) {\n // Load DDS.\n this.proxyUrl(\n url + \".dds\",\n dds => {\n let dataset = new ddsParser(dds).parse();\n\n // Load DAS.\n this.proxyUrl(\n url + \".das\",\n function(das) {\n dataset = new dasParser(das, dataset).parse();\n callback(dataset);\n },\n false,\n extraheaders\n );\n },\n false,\n extraheaders\n );\n }\n}\n","import JsDap from \"./lib/jsdap.js\";\n\nexport default JsDap;\n"],"sourceRoot":""} \ No newline at end of file From 2a882ffb4d3cd789f4b5638bfbd67c5409d9f449 Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:53:33 +0100 Subject: [PATCH 18/19] update README --- README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7ff7b59..3ab5546 100644 --- a/README.md +++ b/README.md @@ -43,14 +43,16 @@ To load a dataset the _loadData_ function can be used this way (`ES6` exampe) : Notice that the url **MUST** be a .dods request and that you _CAN_ add additionnaly DAP query. To only load the dataset (ie. information about the structure of data) : -import JsDap from './dist/jsdap.js'; - - # if you want the IE_HACK, set the flag as true -let jsdap = new JsDap(false); -jsdap.loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", -function(info) { -console.log(info); -}); + + import JsDap from './dist/jsdap.js'; + + // if you want the IE_HACK, set the flag as true + let jsdap = new JsDap(false); + + jsdap.loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", + function(info) { + console.log(info); + }); Notice that the url **MUST** be a .dds request and you **CANNOT** add additonnal DAP query/ From 6840741977ef1e5cb422be5a42886ae2a6f0b76b Mon Sep 17 00:00:00 2001 From: wanji Date: Tue, 20 Mar 2018 16:56:51 +0100 Subject: [PATCH 19/19] fix tab issue of the code block in README.md --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3ab5546..37ea1cf 100644 --- a/README.md +++ b/README.md @@ -84,11 +84,10 @@ there you go: }); // load dataset - jsdap.loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", - function(info) { - console.log(info); - }); - + jsdap.loadDataset("http://www.example.com/dapserver/mydataset.nc.dds", + function(info) { + console.log(info); + });