front page mainly

This commit is contained in:
William Blythe
2019-01-11 06:28:32 +11:00
parent 48bad2fda6
commit 7ccbe93a72
14 changed files with 694 additions and 107 deletions

View File

@@ -79,7 +79,7 @@ module.exports = {
mode: 'development',
// You may want 'eval' instead if you prefer to see the compiled output in DevTools.
// See the discussion in https://github.com/facebook/create-react-app/issues/343
devtool: 'cheap-module-source-map',
devtool: 'source-map',
// These are the "entry points" to our application.
// This means they will be the "root" imports that are included in JS bundle.
entry: [

360
package-lock.json generated
View File

@@ -2793,7 +2793,7 @@
},
"content-disposition": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
"resolved": "http://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
},
"content-type": {
@@ -3582,14 +3582,15 @@
"requires": {
"ajv": "^6.5.4",
"auto-bind": "^1.2.1",
"coriolis-data": "github:edcd/coriolis-data",
"i18next": "^13.0.0",
"jsdoc": "^3.5.5",
"lodash": "^4.17.11",
"pako": "^1.0.6",
"tsd-jsdoc": "^2.0.0-beta.6"
"pako": "^1.0.6"
},
"dependencies": {
"@babel/cli": {
"version": "7.2.0",
"version": "7.2.3",
"bundled": true,
"requires": {
"chokidar": "^2.0.3",
@@ -3612,16 +3613,16 @@
}
},
"@babel/core": {
"version": "7.2.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"@babel/generator": "^7.2.0",
"@babel/generator": "^7.2.2",
"@babel/helpers": "^7.2.0",
"@babel/parser": "^7.2.0",
"@babel/template": "^7.1.2",
"@babel/traverse": "^7.1.6",
"@babel/types": "^7.2.0",
"@babel/parser": "^7.2.2",
"@babel/template": "^7.2.2",
"@babel/traverse": "^7.2.2",
"@babel/types": "^7.2.2",
"convert-source-map": "^1.1.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -3645,10 +3646,10 @@
}
},
"@babel/generator": {
"version": "7.2.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/types": "^7.2.0",
"@babel/types": "^7.2.2",
"jsesc": "^2.5.1",
"lodash": "^4.17.10",
"source-map": "^0.5.0",
@@ -3734,14 +3735,14 @@
}
},
"@babel/helper-module-transforms": {
"version": "7.1.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/helper-simple-access": "^7.1.0",
"@babel/helper-split-export-declaration": "^7.0.0",
"@babel/template": "^7.1.0",
"@babel/types": "^7.0.0",
"@babel/template": "^7.2.2",
"@babel/types": "^7.2.2",
"lodash": "^4.17.10"
}
},
@@ -3775,12 +3776,12 @@
}
},
"@babel/helper-replace-supers": {
"version": "7.1.0",
"version": "7.2.3",
"bundled": true,
"requires": {
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/traverse": "^7.1.0",
"@babel/traverse": "^7.2.3",
"@babel/types": "^7.0.0"
}
},
@@ -3828,7 +3829,7 @@
}
},
"@babel/parser": {
"version": "7.2.0",
"version": "7.2.3",
"bundled": true
},
"@babel/plugin-proposal-async-generator-functions": {
@@ -3933,7 +3934,7 @@
}
},
"@babel/plugin-transform-classes": {
"version": "7.2.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.0.0",
@@ -4078,7 +4079,7 @@
}
},
"@babel/plugin-transform-spread": {
"version": "7.2.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -4117,7 +4118,7 @@
}
},
"@babel/preset-env": {
"version": "7.2.0",
"version": "7.2.3",
"bundled": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
@@ -4164,24 +4165,24 @@
}
},
"@babel/template": {
"version": "7.1.2",
"version": "7.2.2",
"bundled": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"@babel/parser": "^7.1.2",
"@babel/types": "^7.1.2"
"@babel/parser": "^7.2.2",
"@babel/types": "^7.2.2"
}
},
"@babel/traverse": {
"version": "7.1.6",
"version": "7.2.3",
"bundled": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"@babel/generator": "^7.1.6",
"@babel/generator": "^7.2.2",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-split-export-declaration": "^7.0.0",
"@babel/parser": "^7.1.6",
"@babel/types": "^7.1.6",
"@babel/parser": "^7.2.3",
"@babel/types": "^7.2.2",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.10"
@@ -4201,7 +4202,7 @@
}
},
"@babel/types": {
"version": "7.2.0",
"version": "7.2.2",
"bundled": true,
"requires": {
"esutils": "^2.0.2",
@@ -4216,6 +4217,17 @@
"any-observable": "^0.3.0"
}
},
"@sindresorhus/is": {
"version": "0.14.0",
"bundled": true
},
"@szmarczak/http-timer": {
"version": "1.1.1",
"bundled": true,
"requires": {
"defer-to-connect": "^1.0.1"
}
},
"@types/auto-bind": {
"version": "1.2.0",
"bundled": true
@@ -4249,7 +4261,7 @@
}
},
"@types/handlebars": {
"version": "4.0.39",
"version": "4.0.40",
"bundled": true
},
"@types/highlight.js": {
@@ -4257,7 +4269,7 @@
"bundled": true
},
"@types/lodash": {
"version": "4.14.118",
"version": "4.14.119",
"bundled": true
},
"@types/marked": {
@@ -4269,7 +4281,7 @@
"bundled": true
},
"@types/node": {
"version": "10.12.15",
"version": "10.12.18",
"bundled": true
},
"@types/pako": {
@@ -4289,7 +4301,7 @@
"bundled": true
},
"ajv": {
"version": "6.6.1",
"version": "6.6.2",
"bundled": true,
"requires": {
"fast-deep-equal": "^2.0.1",
@@ -4498,18 +4510,22 @@
}
},
"browserslist": {
"version": "4.3.5",
"version": "4.3.6",
"bundled": true,
"requires": {
"caniuse-lite": "^1.0.30000912",
"electron-to-chromium": "^1.3.86",
"node-releases": "^1.0.5"
"caniuse-lite": "^1.0.30000921",
"electron-to-chromium": "^1.3.92",
"node-releases": "^1.1.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true
},
"builtins": {
"version": "1.0.3",
"bundled": true
},
"cache-base": {
"version": "1.0.1",
"bundled": true,
@@ -4525,6 +4541,28 @@
"unset-value": "^1.0.0"
}
},
"cacheable-request": {
"version": "5.2.0",
"bundled": true,
"requires": {
"clone-response": "^1.0.2",
"get-stream": "^4.0.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^3.0.0",
"lowercase-keys": "^1.0.1",
"normalize-url": "^3.1.0",
"responselike": "^1.0.2"
},
"dependencies": {
"get-stream": {
"version": "4.1.0",
"bundled": true,
"requires": {
"pump": "^3.0.0"
}
}
}
},
"camelcase": {
"version": "4.1.0",
"bundled": true
@@ -4539,7 +4577,7 @@
}
},
"caniuse-lite": {
"version": "1.0.30000916",
"version": "1.0.30000923",
"bundled": true
},
"capture-stack-trace": {
@@ -4659,6 +4697,13 @@
"version": "2.2.0",
"bundled": true
},
"clone-response": {
"version": "1.0.2",
"bundled": true,
"requires": {
"mimic-response": "^1.0.0"
}
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
@@ -4721,6 +4766,11 @@
"version": "1.0.2",
"bundled": true
},
"coriolis-data": {
"version": "3.0.0",
"from": "github:edcd/coriolis-data",
"bundled": true
},
"create-error-class": {
"version": "3.0.2",
"bundled": true,
@@ -4751,7 +4801,7 @@
}
},
"date-fns": {
"version": "1.29.0",
"version": "1.30.1",
"bundled": true
},
"debug": {
@@ -4783,10 +4833,21 @@
"version": "0.2.0",
"bundled": true
},
"decompress-response": {
"version": "3.3.0",
"bundled": true,
"requires": {
"mimic-response": "^1.0.0"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true
},
"defer-to-connect": {
"version": "1.0.1",
"bundled": true
},
"define-property": {
"version": "2.0.2",
"bundled": true,
@@ -4839,22 +4900,25 @@
"is-obj": "^1.0.0"
}
},
"dts-dom": {
"version": "3.1.0",
"bundled": true
},
"duplexer3": {
"version": "0.1.4",
"bundled": true
},
"electron-to-chromium": {
"version": "1.3.88",
"version": "1.3.95",
"bundled": true
},
"elegant-spinner": {
"version": "1.0.1",
"bundled": true
},
"end-of-stream": {
"version": "1.4.1",
"bundled": true,
"requires": {
"once": "^1.4.0"
}
},
"error-ex": {
"version": "1.3.2",
"bundled": true,
@@ -5130,20 +5194,29 @@
}
},
"got": {
"version": "6.7.1",
"version": "9.5.0",
"bundled": true,
"requires": {
"create-error-class": "^3.0.0",
"@sindresorhus/is": "^0.14.0",
"@szmarczak/http-timer": "^1.1.0",
"cacheable-request": "^5.1.0",
"decompress-response": "^3.3.0",
"duplexer3": "^0.1.4",
"get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
"safe-buffer": "^5.0.1",
"timed-out": "^4.0.0",
"unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
"get-stream": "^4.1.0",
"lowercase-keys": "^1.0.1",
"mimic-response": "^1.0.1",
"p-cancelable": "^1.0.0",
"to-readable-stream": "^1.0.0",
"url-parse-lax": "^3.0.0"
},
"dependencies": {
"get-stream": {
"version": "4.1.0",
"bundled": true,
"requires": {
"pump": "^3.0.0"
}
}
}
},
"graceful-fs": {
@@ -5221,6 +5294,14 @@
"version": "2.7.1",
"bundled": true
},
"http-cache-semantics": {
"version": "4.0.1",
"bundled": true
},
"i18next": {
"version": "13.0.0",
"bundled": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
@@ -5480,6 +5561,13 @@
"version": "1.1.0",
"bundled": true
},
"is-scoped": {
"version": "1.0.0",
"bundled": true,
"requires": {
"scoped-regex": "^1.0.0"
}
},
"is-stream": {
"version": "1.1.0",
"bundled": true
@@ -5541,6 +5629,10 @@
"version": "2.5.2",
"bundled": true
},
"json-buffer": {
"version": "3.0.0",
"bundled": true
},
"json-parse-better-errors": {
"version": "1.0.2",
"bundled": true
@@ -5569,6 +5661,13 @@
"graceful-fs": "^4.1.6"
}
},
"keyv": {
"version": "3.1.0",
"bundled": true,
"requires": {
"json-buffer": "3.0.0"
}
},
"kind-of": {
"version": "6.0.2",
"bundled": true
@@ -5747,6 +5846,10 @@
"version": "4.0.8",
"bundled": true
},
"lodash.zip": {
"version": "4.2.0",
"bundled": true
},
"log-symbols": {
"version": "2.2.0",
"bundled": true,
@@ -5854,6 +5957,10 @@
"version": "1.2.0",
"bundled": true
},
"mimic-response": {
"version": "1.0.1",
"bundled": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
@@ -5927,26 +6034,26 @@
"bundled": true
},
"node-releases": {
"version": "1.1.0",
"version": "1.1.2",
"bundled": true,
"requires": {
"semver": "^5.3.0"
}
},
"nodemon": {
"version": "1.18.7",
"version": "1.18.9",
"bundled": true,
"requires": {
"chokidar": "^2.0.4",
"debug": "^3.1.0",
"ignore-by-default": "^1.0.1",
"minimatch": "^3.0.4",
"pstree.remy": "^1.1.2",
"pstree.remy": "^1.1.6",
"semver": "^5.5.0",
"supports-color": "^5.2.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.2",
"update-notifier": "^2.3.0"
"update-notifier": "^2.5.0"
},
"dependencies": {
"debug": {
@@ -5986,8 +6093,12 @@
"remove-trailing-separator": "^1.0.1"
}
},
"normalize-url": {
"version": "3.3.0",
"bundled": true
},
"np": {
"version": "3.0.4",
"version": "3.1.0",
"bundled": true,
"requires": {
"@samverschueren/stream-to-observable": "^0.3.0",
@@ -5998,11 +6109,13 @@
"github-url-from-git": "^1.5.0",
"has-yarn": "^1.0.0",
"inquirer": "^5.2.0",
"is-scoped": "^1.0.0",
"issue-regex": "^2.0.0",
"listr": "^0.14.1",
"listr-input": "^0.1.1",
"log-symbols": "^2.1.0",
"meow": "^5.0.0",
"npm-name": "^5.0.0",
"p-timeout": "^2.0.1",
"read-pkg-up": "^3.0.0",
"rxjs": "^6.2.0",
@@ -6012,6 +6125,17 @@
"update-notifier": "^2.1.0"
}
},
"npm-name": {
"version": "5.0.1",
"bundled": true,
"requires": {
"got": "^9.0.0",
"is-scoped": "^1.0.0",
"lodash.zip": "^4.0.0",
"registry-url": "^4.0.0",
"validate-npm-package-name": "^3.0.0"
}
},
"npm-run-path": {
"version": "2.0.2",
"bundled": true,
@@ -6109,6 +6233,10 @@
"mkdirp": "^0.5.1"
}
},
"p-cancelable": {
"version": "1.0.0",
"bundled": true
},
"p-finally": {
"version": "1.0.0",
"bundled": true
@@ -6150,6 +6278,43 @@
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
},
"dependencies": {
"got": {
"version": "6.7.1",
"bundled": true,
"requires": {
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
"get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
"safe-buffer": "^5.0.1",
"timed-out": "^4.0.0",
"unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
}
},
"prepend-http": {
"version": "1.0.4",
"bundled": true
},
"registry-url": {
"version": "3.1.0",
"bundled": true,
"requires": {
"rc": "^1.0.1"
}
},
"url-parse-lax": {
"version": "1.0.0",
"bundled": true,
"requires": {
"prepend-http": "^1.0.1"
}
}
}
},
"pako": {
@@ -6219,7 +6384,7 @@
"bundled": true
},
"prepend-http": {
"version": "1.0.4",
"version": "2.0.0",
"bundled": true
},
"private": {
@@ -6239,9 +6404,17 @@
"bundled": true
},
"pstree.remy": {
"version": "1.1.2",
"version": "1.1.6",
"bundled": true
},
"pump": {
"version": "3.0.0",
"bundled": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"punycode": {
"version": "2.1.1",
"bundled": true
@@ -6367,10 +6540,10 @@
}
},
"registry-url": {
"version": "3.1.0",
"version": "4.0.0",
"bundled": true,
"requires": {
"rc": "^1.0.1"
"rc": "^1.2.7"
}
},
"regjsgen": {
@@ -6416,16 +6589,23 @@
}
},
"resolve": {
"version": "1.8.1",
"version": "1.9.0",
"bundled": true,
"requires": {
"path-parse": "^1.0.5"
"path-parse": "^1.0.6"
}
},
"resolve-url": {
"version": "0.2.1",
"bundled": true
},
"responselike": {
"version": "1.0.2",
"bundled": true,
"requires": {
"lowercase-keys": "^1.0.0"
}
},
"restore-cursor": {
"version": "2.0.0",
"bundled": true,
@@ -6485,6 +6665,10 @@
"version": "2.1.2",
"bundled": true
},
"scoped-regex": {
"version": "1.0.0",
"bundled": true
},
"semver": {
"version": "5.6.0",
"bundled": true
@@ -6674,7 +6858,7 @@
}
},
"spdx-license-ids": {
"version": "3.0.2",
"version": "3.0.3",
"bundled": true
},
"split": {
@@ -6857,6 +7041,10 @@
}
}
},
"to-readable-stream": {
"version": "1.0.0",
"bundled": true
},
"to-regex": {
"version": "3.0.2",
"bundled": true,
@@ -6891,10 +7079,10 @@
"bundled": true
},
"tsd-jsdoc": {
"version": "2.0.0-beta.6",
"version": "2.0.4",
"bundled": true,
"requires": {
"dts-dom": "^3.1.0"
"typescript": "^3.2.1"
}
},
"tslib": {
@@ -6938,6 +7126,10 @@
"version": "0.5.0",
"bundled": true
},
"typedoc-plugin-external-module-name": {
"version": "1.1.3",
"bundled": true
},
"typescript": {
"version": "3.2.2",
"bundled": true
@@ -7115,10 +7307,10 @@
"bundled": true
},
"url-parse-lax": {
"version": "1.0.0",
"version": "3.0.0",
"bundled": true,
"requires": {
"prepend-http": "^1.0.1"
"prepend-http": "^2.0.0"
}
},
"use": {
@@ -7137,6 +7329,13 @@
"spdx-expression-parse": "^3.0.0"
}
},
"validate-npm-package-name": {
"version": "3.0.0",
"bundled": true,
"requires": {
"builtins": "^1.0.3"
}
},
"which": {
"version": "1.3.1",
"bundled": true,
@@ -8270,8 +8469,7 @@
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"optional": true
"bundled": true
},
"concat-map": {
"version": "0.0.1",
@@ -8382,8 +8580,7 @@
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"optional": true
"bundled": true
},
"ini": {
"version": "1.3.5",
@@ -8393,7 +8590,6 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -8505,8 +8701,7 @@
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"optional": true
"bundled": true
},
"object-assign": {
"version": "4.1.1",
@@ -8621,7 +8816,6 @@
"string-width": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -9572,7 +9766,7 @@
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"requires": {
"kind-of": "^3.0.2"
@@ -9632,7 +9826,7 @@
},
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"requires": {
"kind-of": "^3.0.2"
@@ -14580,7 +14774,7 @@
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"sshpk": {
@@ -16287,7 +16481,7 @@
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "^1.0.0",

View File

@@ -18,7 +18,7 @@
"css-loader": "1.0.0",
"dotenv": "6.0.0",
"dotenv-expand": "4.2.0",
"ed-forge": "file:../ed-forge",
"ed-forge": "../ed-forge",
"eslint": "5.6.0",
"eslint-config-react-app": "^3.0.5",
"eslint-loader": "2.1.1",

View File

@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://coriolis.edcd.io/schemas/ship-loadout/1.json#",
"id": "https://coriolis.io/schemas/ship-loadout/1.json#",
"title": "Ship Loadout",
"type": "object",
"description": "The details for a specific ship build/loadout. DEPRECATED in favor of Version 3",

View File

@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://coriolis.edcd.io/schemas/ship-loadout/2.json#",
"id": "https://coriolis.io/schemas/ship-loadout/2.json#",
"title": "Ship Loadout",
"type": "object",
"description": "The details for a specific ship build/loadout. DEPRECATED in favor of Version 3",

View File

@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://coriolis.edcd.io/schemas/ship-loadout/3.json#",
"id": "https://coriolis.io/schemas/ship-loadout/3.json#",
"title": "Ship Loadout",
"type": "object",
"description": "The details for a specific ship build/loadout",

View File

@@ -1,6 +1,6 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://coriolis.edcd.io/schemas/ship-loadout/4.json#",
"id": "https://coriolis.io/schemas/ship-loadout/4.json#",
"title": "Ship Loadout",
"type": "object",
"description": "The details for a specific ship build/loadout",

View File

@@ -41,7 +41,7 @@ if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
}
// Tools like Cloud9 rely on this.
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3300;
const HOST = process.env.HOST || '0.0.0.0';
if (process.env.HOST) {

View File

@@ -0,0 +1,98 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import cn from 'classnames';
import {Ship, Module, Factory} from 'ed-forge'
class ShipSummaryTable extends Component {
/**
* The ShipSummaryTable constructor
* @param {Object} props The props
*/
constructor(props) {
super(props);
this.state = {
shieldColour: 'blue'
};
}
render() {
const ship = this.props.ship;
console.log(ship)
return <div></div>
// return <div id='summary'>
// <div style={{display: "table", width: "100%"}}>
// <div style={{display: "table-row"}}>
// <table className={'summaryTable'}>
// <thead>
// <tr className='main'>
// <th rowSpan={2} className={ cn({ 'bg-warning-disabled': !canThrust }) }>{translate('speed')}</th>
// <th rowSpan={2} className={ cn({ 'bg-warning-disabled': !canBoost }) }>{translate('boost')}</th>
// <th colSpan={5}>{translate('jump range')}</th>
// <th rowSpan={2}>{translate('shield')}</th>
// <th rowSpan={2}>{translate('integrity')}</th>
// <th rowSpan={2}>{translate('DPS')}</th>
// <th rowSpan={2}>{translate('EPS')}</th>
// <th rowSpan={2}>{translate('TTD')}</th>
// {/* <th onMouseEnter={termtip.bind(null, 'heat per second')} onMouseLeave={hide} rowSpan={2}>{translate('HPS')}</th> */}
// <th rowSpan={2}>{translate('cargo')}</th>
// <th rowSpan={2} onMouseEnter={termtip.bind(null, 'passenger capacity', { cap: 0 })} onMouseLeave={hide}>{translate('pax')}</th>
// <th rowSpan={2}>{translate('fuel')}</th>
// <th colSpan={3}>{translate('mass')}</th>
// <th onMouseEnter={termtip.bind(null, 'hull hardness', { cap: 0 })} onMouseLeave={hide} rowSpan={2}>{translate('hrd')}</th>
// <th rowSpan={2}>{translate('crew')}</th>
// <th onMouseEnter={termtip.bind(null, 'mass lock factor', { cap: 0 })} onMouseLeave={hide} rowSpan={2}>{translate('MLF')}</th>
// <th onMouseEnter={termtip.bind(null, 'TT_SUMMARY_BOOST_TIME', { cap: 0 })} onMouseLeave={hide} rowSpan={2}>{translate('boost time')}</th>
// <th rowSpan={2}>{translate('resting heat (Beta)')}</th>
// </tr>
// <tr>
// <th className='lft'>{translate('max')}</th>
// <th>{translate('unladen')}</th>
// <th>{translate('laden')}</th>
// <th>{translate('total unladen')}</th>
// <th>{translate('total laden')}</th>
// <th className='lft'>{translate('hull')}</th>
// <th>{translate('unladen')}</th>
// <th>{translate('laden')}</th>
// </tr>
// </thead>
// <tbody>
// <tr>
// <td onMouseEnter={termtip.bind(null, speedTooltip, { cap: 0 })} onMouseLeave={hide}>{ canThrust ? <span>{int(ship.calcSpeed(4, ship.fuelCapacity, 0, false))}{u['m/s']}</span> : <span className='warning'>0 <Warning/></span> }</td>
// <td onMouseEnter={termtip.bind(null, boostTooltip, { cap: 0 })} onMouseLeave={hide}>{ canBoost ? <span>{int(ship.calcSpeed(4, ship.fuelCapacity, 0, true))}{u['m/s']}</span> : <span className='warning'>0 <Warning/></span> }</td>
// <td><span onMouseEnter={termtip.bind(null, 'TT_SUMMARY_MAX_SINGLE_JUMP', { cap: 0 })} onMouseLeave={hide}>{f2(Calc.jumpRange(ship.unladenMass + ship.standard[2].m.getMaxFuelPerJump(), ship.standard[2].m, ship.standard[2].m.getMaxFuelPerJump(), ship))}{u.LY}</span></td>
// <td><span onMouseEnter={termtip.bind(null, 'TT_SUMMARY_UNLADEN_SINGLE_JUMP', { cap: 0 })} onMouseLeave={hide}>{f2(Calc.jumpRange(ship.unladenMass + ship.fuelCapacity, ship.standard[2].m, ship.fuelCapacity, ship))}{u.LY}</span></td>
// <td><span onMouseEnter={termtip.bind(null, 'TT_SUMMARY_LADEN_SINGLE_JUMP', { cap: 0 })} onMouseLeave={hide}>{f2(Calc.jumpRange(ship.unladenMass + ship.fuelCapacity + ship.cargoCapacity, ship.standard[2].m, ship.fuelCapacity, ship))}{u.LY}</span></td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_UNLADEN_TOTAL_JUMP', { cap: 0 })} onMouseLeave={hide}>{f2(Calc.totalJumpRange(ship.unladenMass + ship.fuelCapacity, ship.standard[2].m, ship.fuelCapacity, ship))}{u.LY}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_LADEN_TOTAL_JUMP', { cap: 0 })} onMouseLeave={hide}>{f2(Calc.totalJumpRange(ship.unladenMass + ship.fuelCapacity + ship.cargoCapacity, ship.standard[2].m, ship.fuelCapacity, ship))}{u.LY}</td>
// <td className={sgClassNames} onMouseEnter={termtip.bind(null, sgTooltip, { cap: 0 })} onMouseLeave={hide}>{int(ship.shield)}{u.MJ}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_INTEGRITY', { cap: 0 })} onMouseLeave={hide}>{int(ship.armour)}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_DPS', { cap: 0 })} onMouseLeave={hide}>{f1(ship.totalDps)}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_EPS', { cap: 0 })} onMouseLeave={hide}>{f1(ship.totalEps)}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_TTD', { cap: 0 })} onMouseLeave={hide}>{timeToDrain === Infinity ? '∞' : time(timeToDrain)}</td>
// {/* <td>{f1(ship.totalHps)}</td> */}
// <td>{round(ship.cargoCapacity)}{u.T}</td>
// <td>{ship.passengerCapacity}</td>
// <td>{round(ship.fuelCapacity)}{u.T}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_HULL_MASS', { cap: 0 })} onMouseLeave={hide}>{ship.hullMass}{u.T}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_UNLADEN_MASS', { cap: 0 })} onMouseLeave={hide}>{int(ship.unladenMass)}{u.T}</td>
// <td onMouseEnter={termtip.bind(null, 'TT_SUMMARY_LADEN_MASS', { cap: 0 })} onMouseLeave={hide}>{int(ship.ladenMass)}{u.T}</td>
// <td>{int(ship.hardness)}</td>
// <td>{ship.crew}</td>
// <td>{ship.masslock}</td>
// <td>{shipBoost !== 'No Boost' ? formats.time(shipBoost) : 'No Boost'}</td>
// <td>{formats.pct(restingHeat)}</td>
// </tr>
// </tbody>
// </table>
// </div>
// </div>
// </div>;
}
}
ShipSummaryTable.propTypes = {
ship: PropTypes.any.isRequired,
};
export default ShipSummaryTable;

View File

@@ -1,15 +1,21 @@
import React, { Component } from 'react';
import * as Forge from 'ed-forge';
import {getShipMetaProperty} from 'ed-forge/lib/data/ships';
import {getShipMetaProperty, getShipProperty} from 'ed-forge/lib/data/ships';
import {FORGE_SHIPS} from '../utils/Constants';
import {Link} from 'react-router-dom';
import cn from 'classnames';
export const SizeMap = ['', 'small', 'medium', 'large', 'capital'];
const sortShips = () => {};
const translate = args => args;
const hide = args => args;
const termtip = args => args;
const units = {};
const formats = {
round: val => Math.round(val),
f1: val => val,
int: val => val
};
/**
* Generate Ship summary and aggregated properties
@@ -17,7 +23,12 @@ const units = {};
* @return {Object} Ship summary and aggregated properties
*/
function shipSummary(shipId) {
const forgeShip = Forge.Factory.newShip(shipId);
let forgeShip;
try {
forgeShip = Forge.Factory.newShip(shipId);
} catch (e) {
console.error(e)
}
let summary = {
id: shipId,
hpCount: 0,
@@ -26,8 +37,11 @@ function shipSummary(shipId) {
maxPassengers: 0,
hp: [0, 0, 0, 0, 0], // Utility, Small, Medium, Large, Huge
int: [0, 0, 0, 0, 0, 0, 0, 0], // Sizes 1 - 8
standard: forgeShip.getCoreModules().map(e => e.getSize()),
agility: 0
standard: forgeShip.getCoreModules().map(e => {
console.log(e)
return 0 //e.getClass();
}),
agility: forgeShip.readProp('pitch') + forgeShip.readProp('yaw') + forgeShip.readProp('roll')
// shipData.properties.pitch +
// shipData.properties.yaw +
// shipData.properties.roll
@@ -68,8 +82,8 @@ class ShipTable extends Component {
}
if (
this.state.shipPredicate == shipPredicate &&
this.state.shipPredicateIndex == shipPredicateIndex
this.state.shipPredicate === shipPredicate &&
this.state.shipPredicateIndex === shipPredicateIndex
) {
shipDesc = !shipDesc;
}
@@ -83,10 +97,22 @@ class ShipTable extends Component {
_genShipRows() {
const shipRows = [];
const detailRows = [];
for (const shipName of FORGE_SHIPS) {
const ship = Forge.Factory.newShip(shipName);
let name = shipName
console.log(ship);
let ship;
try {
ship = Forge.Factory.newShip(shipName);
} catch (e) {
console.error(e)
}
let name = shipName;
detailRows.push(this._shipRowElement(
ship,
translate,
units,
formats.int,
formats.f1,
));
shipRows.push(<tr
key={shipName}
style={{ height: '1.5em' }}
@@ -99,10 +125,71 @@ class ShipTable extends Component {
<Link to={'/outfit/' + shipName}>{name}</Link>
</td>
</tr>);
this.setState({shipRows})
this.setState({shipRows, detailRows})
}
}
/**
* Generate the table row summary for the ship
* @param {Object} s Ship summary
* @param {Function} translate Translate function
* @param {Object} u Localized unit map
* @param {Function} fInt Localized integer formatter
* @param {Function} fRound Localized round formatter
* @return {React.Component} Table Row
*/
_shipRowElement(s, translate, u, fInt, fRound) {
let noTouch = this.context.noTouch;
return (
<tr
style={{ height: '1.5em' }}
className={cn({
highlighted: noTouch && this.state.shipId === s.id,
})}
onMouseEnter={noTouch && this._highlightShip.bind(this, s.id)}
>
<td className="ri">{s.readMeta('manufacturer')}</td>
<td className="ri">{fInt(s.readMeta('retailCost'))}</td>
<td className="ri cap">{translate(SizeMap[s.readMeta('class')])}</td>
<td className="ri">{fInt(s.readMeta('crew'))}</td>
<td className="ri">{s.readProp('masslock')}</td>
<td className="ri">{fInt(s.readProp('pitch') + s.readProp('yaw') + s.readProp('roll'))}</td>
<td className="ri">{fInt(s.readProp('hardness'))}</td>
<td className="ri">{fInt(s.readProp('hullmass'))}</td>
<td className="ri">{fInt(s.get('speed'))}</td>
<td className="ri">{fInt(s.get('boost'))}</td>
<td className="ri">{fInt(s.get('basearmour'))}</td>
<td className="ri">{fInt(s.get('baseshieldstrength'))}</td>
<td className="ri">{fInt(s.topSpeed)}</td>
<td className="ri">{fInt(s.topBoost)}</td>
<td className="ri">{fRound(s.maxJumpRange)}</td>
<td className="ri">{fInt(s.maxCargo)}</td>
<td className="ri">{fInt(s.maxPassengers)}</td>
<td className="cn">{s.getPowerPlant().getSize()}</td>
<td className="cn">{s.getThrusters().getSize()}</td>
<td className="cn">{s.getFSD().getSize()}</td>
<td className="cn">{s.getLifeSupport().getSize()}</td>
<td className="cn">{s.getPowerDistributor().getSize()}</td>
<td className="cn">{s.getSensors().getSize()}</td>
<td className="cn">{s.getCoreFuelTank().getSize()}</td>
{/*<td className={cn({ disabled: !s.hp[1] })}>{s.hp[1]}</td>*/}
{/*<td className={cn({ disabled: !s.hp[2] })}>{s.hp[2]}</td>*/}
{/*<td className={cn({ disabled: !s.hp[3] })}>{s.hp[3]}</td>*/}
{/*<td className={cn({ disabled: !s.hp[4] })}>{s.hp[4]}</td>*/}
{/*<td className={cn({ disabled: !s.hp[0] })}>{s.hp[0]}</td>*/}
{/*<td className={cn({ disabled: !s.int[0] })}>{s.int[0]}</td>*/}
{/*<td className={cn({ disabled: !s.int[1] })}>{s.int[1]}</td>*/}
{/*<td className={cn({ disabled: !s.int[2] })}>{s.int[2]}</td>*/}
{/*<td className={cn({ disabled: !s.int[3] })}>{s.int[3]}</td>*/}
{/*<td className={cn({ disabled: !s.int[4] })}>{s.int[4]}</td>*/}
{/*<td className={cn({ disabled: !s.int[5] })}>{s.int[5]}</td>*/}
{/*<td className={cn({ disabled: !s.int[6] })}>{s.int[6]}</td>*/}
{/*<td className={cn({ disabled: !s.int[7] })}>{s.int[7]}</td>*/}
</tr>
);
}
_highlightShip() {}
render() {
@@ -120,7 +207,7 @@ class ShipTable extends Component {
maxWidth: '100%'
}}
>
<table style={{ width: '12em', position: 'absolute', zIndex: 1 }}>
<table style={{ width: '13em', position: 'absolute', zIndex: 1 }}>
<thead>
<tr>
<th className="le rgt">&nbsp;</th>
@@ -131,7 +218,7 @@ class ShipTable extends Component {
</th>
</tr>
<tr>
<th className="le rgt invisible">{units['m/s']}</th>
<th className="le rgt">&nbsp;</th>
</tr>
</thead>
<tbody onMouseLeave={this._highlightShip.bind(this, null)}>
@@ -139,7 +226,7 @@ class ShipTable extends Component {
</tbody>
</table>
<div style={{ overflowX: 'scroll', maxWidth: '100%' }}>
<table style={{ marginLeft: 'calc(12em - 1px)', zIndex: 0 }}>
<table style={{ marginLeft: 'calc(13em - 1px)', zIndex: 0 }}>
<thead>
<tr className="main">
<th

48
src/components/Slot.jsx Normal file
View File

@@ -0,0 +1,48 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import cn from 'classnames';
class Slot extends Component {
render() {
const m = this.props.mod;
const warning = () => false;
const slot = {};
const classRating = 0;
const mass = 0;
const translate = arg => arg;
const formats = {
round: a => Math.round(a)
};
const units = {};
return (
<div className={'slot'}>
<div className={'cb'}>
<div className={'r'}>{formats.round(mass)}</div>
</div>
<div className={cn('slot', { selected: this.props.selected })} onClick={this.props.onOpen}
onKeyDown={this._keyDown} tabIndex="0" ref={slotDiv => this.slotDiv = slotDiv}>
<div className={cn('details-container', {
warning: warning && warning(slot.m),
disabled: m.grp !== 'bh' && !slot.enabled
})}>
<div className={'sz'}>{m.grp == 'bh' ? m.name.charAt(0) : m.getSize()}</div>
<div>
<div className={'l'}>{classRating} {translate(m.name || m.grp)}{m.mods && Object.keys(m.mods).length > 0 ?
<span className='r'></span> : null}</div>
<div className={'r'}>{formats.round(mass)}{units.T}</div>
<div/>
<div className={'cb'}>
</div>
</div>
</div>
</div>
</div>
);
}
}
Slot.propTypes = {
mod: PropTypes.any
};
export default Slot;

View File

@@ -1,10 +1,33 @@
import React, { Component } from 'react';
import { Factory } from 'ed-forge';
import Slot from '../components/Slot';
import ShipSummaryTable from '../components/ShipSummaryTable';
class Outfit extends Component {
constructor(props) {
super(props);
const ship = Factory.newShip(this.props.match.params.ship);
this.state = {
ship
};
}
render() {
return (
<div>
Hi
<div
id="outfit"
className={'page'}
>
<ShipSummaryTable ship={this.state.ship}/>
{this.state.ship.getCoreModules().map(core =>
<Slot mod={core}/>
)}
{this.state.ship.getHardpoints().map(core =>
<Slot mod={core}/>
)}
</div>
);
}

View File

@@ -1,5 +1,4 @@
console.log('Hello from sw.js');
if (workbox) {
console.log('Yay! Workbox is loaded 🎉');
workbox.precaching.precacheAndRoute(self.__precacheManifest);

140
yarn.lock
View File

@@ -1067,6 +1067,16 @@ ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.3:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^6.5.4:
version "6.6.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
alphanum-sort@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
@@ -1319,6 +1329,11 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
auto-bind@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.2.1.tgz#807f7910b0210db9eefe133f3492c28e89698b96"
integrity sha512-/W9yj1yKmBLwpexwAujeD9YHwYmRuWFGV8HWE7smQab797VeHa4/cnE2NFeDhA+E+5e/OGBI8763EhLjfZ/MXA==
autoprefixer@^9.1.5:
version "9.3.1"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.3.1.tgz#71b622174de2b783d5fd99f9ad617b7a3c78443e"
@@ -1596,6 +1611,11 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0:
lodash "^4.17.4"
to-fast-properties "^1.0.3"
babylon@7.0.0-beta.19:
version "7.0.0-beta.19"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503"
integrity sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==
babylon@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
@@ -1661,6 +1681,11 @@ bluebird@^3.5.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==
bluebird@~3.5.0:
version "3.5.3"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
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"
@@ -1998,6 +2023,13 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
catharsis@~0.8.9:
version "0.8.9"
resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b"
integrity sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=
dependencies:
underscore-contrib "~0.3.0"
chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
@@ -2088,6 +2120,11 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
classnames@^2.2.6:
version "2.2.6"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
clean-css@4.2.x:
version "4.2.1"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17"
@@ -2363,6 +2400,10 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
"coriolis-data@github:edcd/coriolis-data":
version "3.0.0"
resolved "https://codeload.github.com/edcd/coriolis-data/tar.gz/daa1cd28a11ceeb6d59edf5b58144940fdc0853f"
cosmiconfig@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
@@ -3023,6 +3064,17 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
ed-forge@../ed-forge:
version "1.4.0"
dependencies:
ajv "^6.5.4"
auto-bind "^1.2.1"
coriolis-data "github:edcd/coriolis-data"
i18next "^13.0.0"
jsdoc "^3.5.5"
lodash "^4.17.11"
pako "^1.0.6"
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -3121,7 +3173,7 @@ escape-html@~1.0.3:
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, 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"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -4047,6 +4099,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
graceful-fs@^4.1.9:
version "4.1.15"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
@@ -4409,6 +4466,11 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
i18next@^13.0.0:
version "13.1.0"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-13.1.0.tgz#d8656bbc53216ffcd428364fbfb75f75647846a5"
integrity sha512-BuDhYRFReCXJiUJ8GdC2m0wXw4vC/BS6e7UJO+wTrkE3K+92VmJn5p/wxqEE+pdffquh9GYYAMfK9rUlb48pcg==
iconv-lite@0.4.23:
version "0.4.23"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
@@ -5393,11 +5455,36 @@ js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0:
argparse "^1.0.7"
esprima "^4.0.0"
js2xmlparser@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733"
integrity sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=
dependencies:
xmlcreate "^1.0.1"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
jsdoc@^3.5.5:
version "3.5.5"
resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d"
integrity sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==
dependencies:
babylon "7.0.0-beta.19"
bluebird "~3.5.0"
catharsis "~0.8.9"
escape-string-regexp "~1.0.5"
js2xmlparser "~3.0.0"
klaw "~2.0.0"
marked "~0.3.6"
mkdirp "~0.5.1"
requizzle "~0.2.1"
strip-json-comments "~2.0.1"
taffydb "2.6.2"
underscore "~1.8.3"
jsdom@>=11.0.0:
version "13.0.0"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.0.0.tgz#f1df2411b714a4e08d1bdc343c0a0889c688210f"
@@ -5589,6 +5676,13 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
klaw@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6"
integrity sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=
dependencies:
graceful-fs "^4.1.9"
kleur@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300"
@@ -5846,6 +5940,11 @@ map-visit@^1.0.0:
dependencies:
object-visit "^1.0.0"
marked@~0.3.6:
version "0.3.19"
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790"
integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==
math-random@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
@@ -6627,6 +6726,11 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
pako@^1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27"
integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==
pako@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
@@ -8114,6 +8218,13 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
requizzle@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde"
integrity sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=
dependencies:
underscore "~1.6.0"
resolve-cwd@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -8905,6 +9016,11 @@ table@^4.0.3:
slice-ansi "1.0.0"
string-width "^2.1.1"
taffydb@2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=
tapable@^1.0.0, tapable@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c"
@@ -9153,6 +9269,23 @@ uglifyjs-webpack-plugin@^1.2.4:
webpack-sources "^1.1.0"
worker-farm "^1.5.2"
underscore-contrib@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7"
integrity sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=
dependencies:
underscore "1.6.0"
underscore@1.6.0, underscore@~1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
integrity sha1-izixDKze9jM3uLJOT/htRa6lKag=
underscore@~1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
@@ -9795,6 +9928,11 @@ xmlchars@^1.3.1:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf"
integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==
xmlcreate@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f"
integrity sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=
xregexp@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"