mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 06:43:24 +00:00
Compare commits
67 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6922cfd047 | ||
|
|
d93fc1d2d0 | ||
|
|
48290b2e75 | ||
|
|
b62abef618 | ||
|
|
e0c0778d82 | ||
|
|
b4a82ae7c2 | ||
|
|
fc73102b30 | ||
|
|
b14e7473f3 | ||
|
|
f4cc9fc722 | ||
|
|
8d19ef7783 | ||
|
|
32be186ec5 | ||
|
|
abb0c7f90d | ||
|
|
71ddbdfe75 | ||
|
|
38463ad9a6 | ||
|
|
70375f94c8 | ||
|
|
2d4336116a | ||
|
|
f52880765e | ||
|
|
dbfe68decb | ||
|
|
659f337de9 | ||
|
|
1d36d41da1 | ||
|
|
0f90efaa54 | ||
|
|
4442930a82 | ||
|
|
912a775088 | ||
|
|
24a229d818 | ||
|
|
66afb61494 | ||
|
|
e7511cc05b | ||
|
|
926f19a936 | ||
|
|
9e6f86b963 | ||
|
|
059de43a9a | ||
|
|
e246b737b2 | ||
|
|
38842417b0 | ||
|
|
82d485a98e | ||
|
|
fac71feea7 | ||
|
|
445c63878b | ||
|
|
7df5953824 | ||
|
|
e391b563fb | ||
|
|
53f62f96d0 | ||
|
|
18745979a0 | ||
|
|
c1966a38ff | ||
|
|
d86973f3b1 | ||
|
|
56b8d19649 | ||
|
|
7cb037e0bc | ||
|
|
56e1b3f9e9 | ||
|
|
c792323a8a | ||
|
|
4d2865de13 | ||
|
|
0d360bc367 | ||
|
|
91c9b46b91 | ||
|
|
7e67bd80dd | ||
|
|
2f775ea09b | ||
|
|
0603c55089 | ||
|
|
41f25a44e9 | ||
|
|
35440b7273 | ||
|
|
7d68b91018 | ||
|
|
deaa61b848 | ||
|
|
2d00cbc41b | ||
|
|
57c1e83c67 | ||
|
|
b7079dbd4e | ||
|
|
be642a5373 | ||
|
|
ffc691c1a2 | ||
|
|
6122d99369 | ||
|
|
b73a8bcdab | ||
|
|
dd624537b7 | ||
|
|
50a67f73fd | ||
|
|
2262a980d4 | ||
|
|
84964ceb5f | ||
|
|
c4bdb7a66e | ||
|
|
21309e129f |
641
package-lock.json
generated
641
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "coriolis_shipyard",
|
"name": "coriolis_shipyard",
|
||||||
"version": "2.9.0",
|
"version": "2.9.11",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1810,6 +1810,260 @@
|
|||||||
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"bugsnag-build-reporter": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bugsnag-build-reporter/-/bugsnag-build-reporter-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-uYhbiTOEahw9+ewR4GYxHsBL7OSCbA8EtBnugtT27ZTU3dDZRPJWptzrlEe7O4blTSz7YcFCmTnaG+c5Ng04Jg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "2.3.2",
|
||||||
|
"concat-stream": "1.6.0",
|
||||||
|
"find-nearest-file": "1.1.0",
|
||||||
|
"meow": "4.0.0",
|
||||||
|
"minimist": "1.2.0",
|
||||||
|
"pino": "4.16.1",
|
||||||
|
"run-parallel": "1.1.8"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "1.9.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"camelcase": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
|
||||||
|
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"camelcase-keys": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
|
||||||
|
"integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"camelcase": "4.1.0",
|
||||||
|
"map-obj": "2.0.0",
|
||||||
|
"quick-lru": "1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "3.2.1",
|
||||||
|
"escape-string-regexp": "1.0.5",
|
||||||
|
"supports-color": "5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"indent-string": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
|
||||||
|
"integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"load-json-file": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
|
||||||
|
"integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "4.1.11",
|
||||||
|
"parse-json": "4.0.0",
|
||||||
|
"pify": "3.0.0",
|
||||||
|
"strip-bom": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"map-obj": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"meow": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"camelcase-keys": "4.2.0",
|
||||||
|
"decamelize-keys": "1.1.0",
|
||||||
|
"loud-rejection": "1.6.0",
|
||||||
|
"minimist": "1.2.0",
|
||||||
|
"minimist-options": "3.0.2",
|
||||||
|
"normalize-package-data": "2.4.0",
|
||||||
|
"read-pkg-up": "3.0.0",
|
||||||
|
"redent": "2.0.0",
|
||||||
|
"trim-newlines": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"parse-json": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
|
||||||
|
"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"error-ex": "1.3.1",
|
||||||
|
"json-parse-better-errors": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-type": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"pify": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pify": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"read-pkg": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"load-json-file": "4.0.0",
|
||||||
|
"normalize-package-data": "2.4.0",
|
||||||
|
"path-type": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"read-pkg-up": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"find-up": "2.1.0",
|
||||||
|
"read-pkg": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"redent": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"indent-string": "3.2.0",
|
||||||
|
"strip-indent": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-bom": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"strip-indent": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"trim-newlines": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bugsnag-sourcemaps": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/bugsnag-sourcemaps/-/bugsnag-sourcemaps-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-QZNG948Qh2qgcZI9pTE3mN6/Do5JVj+VzZkziNw0K6aqzijIvJQc0LDQYlrX0IEvPDuiOu+jAqd8fa0MfitbwA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "4.1.11",
|
||||||
|
"listr": "0.12.0",
|
||||||
|
"meow": "3.7.0",
|
||||||
|
"rc": "1.2.6",
|
||||||
|
"read-pkg-up": "2.0.0",
|
||||||
|
"request": "2.83.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"load-json-file": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "4.1.11",
|
||||||
|
"parse-json": "2.2.0",
|
||||||
|
"pify": "2.3.0",
|
||||||
|
"strip-bom": "3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-type": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"pify": "2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"read-pkg": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"load-json-file": "2.0.0",
|
||||||
|
"normalize-package-data": "2.4.0",
|
||||||
|
"path-type": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"read-pkg-up": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"find-up": "2.1.0",
|
||||||
|
"read-pkg": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-bom": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"builtin-modules": {
|
"builtin-modules": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
|
||||||
@@ -2011,6 +2265,22 @@
|
|||||||
"restore-cursor": "1.0.1"
|
"restore-cursor": "1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cli-spinners": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
|
||||||
|
"integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"cli-truncate": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
|
||||||
|
"integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"slice-ansi": "0.0.4",
|
||||||
|
"string-width": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cli-width": {
|
"cli-width": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
||||||
@@ -3496,6 +3766,16 @@
|
|||||||
"object-assign": "4.1.1"
|
"object-assign": "4.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"cross-env": {
|
||||||
|
"version": "5.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.4.tgz",
|
||||||
|
"integrity": "sha512-Mx8mw6JWhfpYoEk7PGvHxJMLQwQHORAs8+2bX+C1lGQ4h3GkDb1zbzC2Nw85YH9ZQMlO0BHZxMacgrfPmMFxbg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cross-spawn": "5.1.0",
|
||||||
|
"is-windows": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cross-spawn": {
|
"cross-spawn": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
|
||||||
@@ -3969,6 +4249,12 @@
|
|||||||
"assert-plus": "1.0.0"
|
"assert-plus": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"date-fns": {
|
||||||
|
"version": "1.29.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
|
||||||
|
"integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"date-now": {
|
"date-now": {
|
||||||
"version": "0.1.4",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
|
||||||
@@ -3989,12 +4275,28 @@
|
|||||||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"decamelize-keys": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"decamelize": "1.2.0",
|
||||||
|
"map-obj": "1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"deep-equal": {
|
"deep-equal": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
|
||||||
"integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
|
"integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"deep-extend": {
|
||||||
|
"version": "0.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
|
||||||
|
"integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"deep-is": {
|
"deep-is": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
||||||
@@ -4233,6 +4535,12 @@
|
|||||||
"integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=",
|
"integrity": "sha1-eOy4o5kGYYe7N07t412ccFZagD0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"elegant-spinner": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"elliptic": {
|
"elliptic": {
|
||||||
"version": "6.4.0",
|
"version": "6.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
|
||||||
@@ -4268,6 +4576,15 @@
|
|||||||
"iconv-lite": "0.4.19"
|
"iconv-lite": "0.4.19"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"end-of-stream": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"once": "1.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"enhanced-resolve": {
|
"enhanced-resolve": {
|
||||||
"version": "3.4.1",
|
"version": "3.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
|
||||||
@@ -4788,6 +5105,12 @@
|
|||||||
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
|
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-json-parse": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"fast-json-stable-stringify": {
|
"fast-json-stable-stringify": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||||
@@ -4800,6 +5123,12 @@
|
|||||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-safe-stringify": {
|
||||||
|
"version": "1.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz",
|
||||||
|
"integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"fastparse": {
|
"fastparse": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
|
||||||
@@ -4948,6 +5277,12 @@
|
|||||||
"pkg-dir": "2.0.0"
|
"pkg-dir": "2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"find-nearest-file": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/find-nearest-file/-/find-nearest-file-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"find-up": {
|
"find-up": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
||||||
@@ -4969,6 +5304,12 @@
|
|||||||
"write": "0.2.1"
|
"write": "0.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flatstr": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-W0UbCMvUji6sVKK74L9GFlqhS+M=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"flatten": {
|
"flatten": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
|
||||||
@@ -6586,6 +6927,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||||
},
|
},
|
||||||
|
"ini": {
|
||||||
|
"version": "1.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||||
|
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"inquirer": {
|
"inquirer": {
|
||||||
"version": "0.12.0",
|
"version": "0.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
|
||||||
@@ -6829,6 +7176,12 @@
|
|||||||
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
|
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-promise": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
|
||||||
|
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-property": {
|
"is-property": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||||
@@ -6885,6 +7238,12 @@
|
|||||||
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-windows": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-wsl": {
|
"is-wsl": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
||||||
@@ -8099,6 +8458,12 @@
|
|||||||
"integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
|
"integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"json-parse-better-errors": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"json-schema": {
|
"json-schema": {
|
||||||
"version": "0.2.3",
|
"version": "0.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||||
@@ -8400,6 +8765,72 @@
|
|||||||
"type-check": "0.3.2"
|
"type-check": "0.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"listr": {
|
||||||
|
"version": "0.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz",
|
||||||
|
"integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "1.1.3",
|
||||||
|
"cli-truncate": "0.2.1",
|
||||||
|
"figures": "1.7.0",
|
||||||
|
"indent-string": "2.1.0",
|
||||||
|
"is-promise": "2.1.0",
|
||||||
|
"is-stream": "1.1.0",
|
||||||
|
"listr-silent-renderer": "1.1.1",
|
||||||
|
"listr-update-renderer": "0.2.0",
|
||||||
|
"listr-verbose-renderer": "0.4.1",
|
||||||
|
"log-symbols": "1.0.2",
|
||||||
|
"log-update": "1.0.2",
|
||||||
|
"ora": "0.2.3",
|
||||||
|
"p-map": "1.2.0",
|
||||||
|
"rxjs": "5.5.10",
|
||||||
|
"stream-to-observable": "0.1.0",
|
||||||
|
"strip-ansi": "3.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"listr-silent-renderer": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"listr-update-renderer": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz",
|
||||||
|
"integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "1.1.3",
|
||||||
|
"cli-truncate": "0.2.1",
|
||||||
|
"elegant-spinner": "1.0.1",
|
||||||
|
"figures": "1.7.0",
|
||||||
|
"indent-string": "3.2.0",
|
||||||
|
"log-symbols": "1.0.2",
|
||||||
|
"log-update": "1.0.2",
|
||||||
|
"strip-ansi": "3.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"indent-string": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
|
||||||
|
"integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"listr-verbose-renderer": {
|
||||||
|
"version": "0.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
|
||||||
|
"integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "1.1.3",
|
||||||
|
"cli-cursor": "1.0.2",
|
||||||
|
"date-fns": "1.29.0",
|
||||||
|
"figures": "1.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"load-json-file": {
|
"load-json-file": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
||||||
@@ -8463,6 +8894,25 @@
|
|||||||
"integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
|
"integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"log-symbols": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"log-update": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-escapes": "1.4.0",
|
||||||
|
"cli-cursor": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"loglevel": {
|
"loglevel": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.5.1.tgz",
|
||||||
@@ -8729,6 +9179,16 @@
|
|||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"minimist-options": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"arrify": "1.0.1",
|
||||||
|
"is-plain-obj": "1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mkdirp": {
|
"mkdirp": {
|
||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||||
@@ -9064,6 +9524,18 @@
|
|||||||
"wordwrap": "1.0.0"
|
"wordwrap": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ora": {
|
||||||
|
"version": "0.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
|
||||||
|
"integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "1.1.3",
|
||||||
|
"cli-cursor": "1.0.2",
|
||||||
|
"cli-spinners": "0.1.2",
|
||||||
|
"object-assign": "4.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
|
||||||
@@ -9297,6 +9769,65 @@
|
|||||||
"pinkie": "2.0.4"
|
"pinkie": "2.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pino": {
|
||||||
|
"version": "4.16.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/pino/-/pino-4.16.1.tgz",
|
||||||
|
"integrity": "sha512-ST/IC5RMyqrOZL+Hq6LDwz5h4fGKABXzx2/5Ze7rz5TjuPvE8uI72dzj409xkq9JjyWsKoOOApgXn8kEjJ73yg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "2.3.2",
|
||||||
|
"fast-json-parse": "1.0.3",
|
||||||
|
"fast-safe-stringify": "1.2.3",
|
||||||
|
"flatstr": "1.0.5",
|
||||||
|
"pino-std-serializers": "2.0.0",
|
||||||
|
"pump": "3.0.0",
|
||||||
|
"quick-format-unescaped": "1.1.2",
|
||||||
|
"split2": "2.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "1.9.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "3.2.1",
|
||||||
|
"escape-string-regexp": "1.0.5",
|
||||||
|
"supports-color": "5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pino-std-serializers": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-8OtC69pAB3wixI521iDkdBkmWAGuNwSbUGAOaIK99whgusDm3/ST5EUlTSluBW2jsvjx3Khk5eBcm3CVl2IGMg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"pkg-dir": {
|
"pkg-dir": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
||||||
@@ -10015,6 +10546,16 @@
|
|||||||
"randombytes": "2.0.5"
|
"randombytes": "2.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pump": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"end-of-stream": "1.4.1",
|
||||||
|
"once": "1.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"punycode": {
|
"punycode": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||||
@@ -10060,6 +10601,21 @@
|
|||||||
"integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
|
"integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"quick-format-unescaped": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"fast-safe-stringify": "1.2.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quick-lru": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"raf": {
|
"raf": {
|
||||||
"version": "3.4.0",
|
"version": "3.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
|
||||||
@@ -10146,6 +10702,26 @@
|
|||||||
"unpipe": "1.0.0"
|
"unpipe": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rc": {
|
||||||
|
"version": "1.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz",
|
||||||
|
"integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"deep-extend": "0.4.2",
|
||||||
|
"ini": "1.3.5",
|
||||||
|
"minimist": "1.2.0",
|
||||||
|
"strip-json-comments": "2.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"react": {
|
"react": {
|
||||||
"version": "15.6.2",
|
"version": "15.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz",
|
||||||
@@ -10710,6 +11286,18 @@
|
|||||||
"once": "1.4.0"
|
"once": "1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"run-parallel": {
|
||||||
|
"version": "1.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.8.tgz",
|
||||||
|
"integrity": "sha512-e5t1NVhr5VWmD9V9U4KjjSGkf5w6CcTPgw11A3CfIvkkQxlAKzX3usPUp1NUQTmpOOjU+f9QRICU3tMbKwn9ZQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"run-parallel-limit": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-zpNZCoIA+x0fWw2tiD15lrGecycMbao/n4uBER53pcW5GB9TUEu4pZxd5CTgXLBh2MwI0E4nhRv7xymfo592vA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"rw": {
|
"rw": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
|
||||||
@@ -10721,6 +11309,15 @@
|
|||||||
"integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
|
"integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"rxjs": {
|
||||||
|
"version": "5.5.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
|
||||||
|
"integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"symbol-observable": "1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||||
@@ -11099,6 +11696,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"split2": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"through2": "2.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"sprintf-js": {
|
"sprintf-js": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
@@ -11150,6 +11756,12 @@
|
|||||||
"xtend": "4.0.1"
|
"xtend": "4.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stream-to-observable": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz",
|
||||||
|
"integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"strict-uri-encode": {
|
"strict-uri-encode": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
|
||||||
@@ -11294,6 +11906,12 @@
|
|||||||
"whet.extend": "0.9.9"
|
"whet.extend": "0.9.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"symbol-observable": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"symbol-tree": {
|
"symbol-tree": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
||||||
@@ -11384,6 +12002,16 @@
|
|||||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"through2": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
|
||||||
|
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "2.3.3",
|
||||||
|
"xtend": "4.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"thunky": {
|
"thunky": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz",
|
||||||
@@ -11861,6 +12489,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"webpack-bugsnag-plugins": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/webpack-bugsnag-plugins/-/webpack-bugsnag-plugins-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-QMjpQSBn4Et0q3OWVLEFTMuFrAwisKwpamq9bGG47ruRupBiiJC6n81pdUn3JYyRvMRDCviKvAO6P/0qs2179A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bugsnag-build-reporter": "1.0.0",
|
||||||
|
"bugsnag-sourcemaps": "1.0.3",
|
||||||
|
"run-parallel-limit": "1.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"webpack-dev-middleware": {
|
"webpack-dev-middleware": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "coriolis_shipyard",
|
"name": "coriolis_shipyard",
|
||||||
"version": "2.9.0",
|
"version": "2.9.11",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/EDCD/coriolis"
|
"url": "https://github.com/EDCD/coriolis"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
"test": "jest",
|
"test": "jest",
|
||||||
"prod-serve": "nginx -p $(pwd) -c nginx.conf",
|
"prod-serve": "nginx -p $(pwd) -c nginx.conf",
|
||||||
"prod-stop": "kill -QUIT $(cat nginx.pid)",
|
"prod-stop": "kill -QUIT $(cat nginx.pid)",
|
||||||
"build": "npm run clean && NODE_ENV=production webpack -p --config webpack.config.prod.js",
|
"build": "npm run clean && cross-env NODE_ENV=production webpack -p --config webpack.config.prod.js",
|
||||||
"rsync": "rsync -ae \"ssh -i $CORIOLIS_PEM\" --delete build/ $CORIOLIS_USER@$CORIOLIS_HOST:~/wwws",
|
"rsync": "rsync -ae \"ssh -i $CORIOLIS_PEM\" --delete build/ $CORIOLIS_USER@$CORIOLIS_HOST:~/wwws",
|
||||||
"deploy": "npm run lint && npm test && npm run build && npm run rsync"
|
"deploy": "npm run lint && npm test && npm run build && npm run rsync"
|
||||||
},
|
},
|
||||||
@@ -66,6 +66,7 @@
|
|||||||
"babel-preset-stage-0": "*",
|
"babel-preset-stage-0": "*",
|
||||||
"create-react-class": "^15.6.2",
|
"create-react-class": "^15.6.2",
|
||||||
"css-loader": "^0.28.0",
|
"css-loader": "^0.28.0",
|
||||||
|
"cross-env": "^5.1.4",
|
||||||
"d3-selection": "1",
|
"d3-selection": "1",
|
||||||
"eslint": "3.19.0",
|
"eslint": "3.19.0",
|
||||||
"eslint-plugin-react": "^6.10.3",
|
"eslint-plugin-react": "^6.10.3",
|
||||||
@@ -91,7 +92,8 @@
|
|||||||
"url-loader": "^0.5.8",
|
"url-loader": "^0.5.8",
|
||||||
"webpack": "^2.4.1",
|
"webpack": "^2.4.1",
|
||||||
"webpack-dev-server": "^2.4.4",
|
"webpack-dev-server": "^2.4.4",
|
||||||
"webpack-notifier": "^1.6.0"
|
"webpack-notifier": "^1.6.0",
|
||||||
|
"webpack-bugsnag-plugins": "^1.1.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel-polyfill": "*",
|
"babel-polyfill": "*",
|
||||||
|
|||||||
@@ -134,9 +134,9 @@ export default class Coriolis extends React.Component {
|
|||||||
console && console.error && console.error(arguments); // eslint-disable-line no-console
|
console && console.error && console.error(arguments); // eslint-disable-line no-console
|
||||||
if (errObj) {
|
if (errObj) {
|
||||||
if (errObj instanceof Error) {
|
if (errObj instanceof Error) {
|
||||||
Bugsnag.notifyException(errObj) // eslint-disable-line
|
bugsnagClient.notify(errObj) // eslint-disable-line
|
||||||
} else if (errObj instanceof String) {
|
} else if (errObj instanceof String) {
|
||||||
Bugsnag.notify(msg, errObj) // eslint-disable-line
|
bugsnagClient.notify(msg, errObj) // eslint-disable-line
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
|
|||||||
@@ -56,7 +56,11 @@ const GRPCAT = {
|
|||||||
'ch': 'defence',
|
'ch': 'defence',
|
||||||
'po': 'defence',
|
'po': 'defence',
|
||||||
'ec': 'defence',
|
'ec': 'defence',
|
||||||
'sfn': 'defence'
|
'sfn': 'defence',
|
||||||
|
// Standard
|
||||||
|
'gpp': 'guardian',
|
||||||
|
'gpc': 'guardian',
|
||||||
|
'ggc': 'guardian'
|
||||||
};
|
};
|
||||||
// Order here is the order in which items will be shown in the modules menu
|
// Order here is the order in which items will be shown in the modules menu
|
||||||
const CATEGORIES = {
|
const CATEGORIES = {
|
||||||
@@ -82,7 +86,10 @@ const CATEGORIES = {
|
|||||||
'defence': ['ch', 'po', 'ec'],
|
'defence': ['ch', 'po', 'ec'],
|
||||||
'scanners': ['sc', 'ss', 'cs', 'kw', 'ws'], // Overloaded with internal scanners
|
'scanners': ['sc', 'ss', 'cs', 'kw', 'ws'], // Overloaded with internal scanners
|
||||||
// Experimental
|
// Experimental
|
||||||
'experimental': ['axmc', 'axmr', 'rfl', 'xs', 'sfn']
|
'experimental': ['axmc', 'axmr', 'rfl', 'xs', 'sfn'],
|
||||||
|
|
||||||
|
// Guardian
|
||||||
|
'guardian': ['gpp', 'gpc', 'ggc']
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -199,8 +206,8 @@ export default class AvailableModulesMenu extends TranslatedComponent {
|
|||||||
/**
|
/**
|
||||||
* Generate React Components for Module Group
|
* Generate React Components for Module Group
|
||||||
* @param {Function} translate Translate function
|
* @param {Function} translate Translate function
|
||||||
* @param {Objecy} mountedModule Mounted Module
|
* @param {Object} mountedModule Mounted Module
|
||||||
* @param {Funciton} warningFunc Warning function
|
* @param {Function} warningFunc Warning function
|
||||||
* @param {number} mass Mass
|
* @param {number} mass Mass
|
||||||
* @param {function} onSelect Select/Mount callback
|
* @param {function} onSelect Select/Mount callback
|
||||||
* @param {string} grp Group name
|
* @param {string} grp Group name
|
||||||
@@ -208,7 +215,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
|
|||||||
* @return {React.Component} Available Module Group contents
|
* @return {React.Component} Available Module Group contents
|
||||||
*/
|
*/
|
||||||
_buildGroup(translate, mountedModule, warningFunc, mass, onSelect, grp, modules) {
|
_buildGroup(translate, mountedModule, warningFunc, mass, onSelect, grp, modules) {
|
||||||
let prevClass = null, prevRating = null;
|
let prevClass = null, prevRating = null, prevName;
|
||||||
let elems = [];
|
let elems = [];
|
||||||
|
|
||||||
const sortedModules = modules.sort(this._moduleOrder);
|
const sortedModules = modules.sort(this._moduleOrder);
|
||||||
@@ -223,6 +230,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
|
|||||||
let m = sortedModules[i];
|
let m = sortedModules[i];
|
||||||
let mount = null;
|
let mount = null;
|
||||||
let disabled = false;
|
let disabled = false;
|
||||||
|
prevName = m.name
|
||||||
if (ModuleUtils.isShieldGenerator(m.grp)) {
|
if (ModuleUtils.isShieldGenerator(m.grp)) {
|
||||||
// Shield generators care about maximum hull mass
|
// Shield generators care about maximum hull mass
|
||||||
disabled = mass > m.maxmass;
|
disabled = mass > m.maxmass;
|
||||||
@@ -258,7 +266,10 @@ export default class AvailableModulesMenu extends TranslatedComponent {
|
|||||||
case 'G': mount = <MountGimballed className={'lg'}/>; break;
|
case 'G': mount = <MountGimballed className={'lg'}/>; break;
|
||||||
case 'T': mount = <MountTurret className={'lg'}/>; break;
|
case 'T': mount = <MountTurret className={'lg'}/>; break;
|
||||||
}
|
}
|
||||||
|
if (m.name && m.name === prevName) {
|
||||||
|
// elems.push(<br key={'b' + m.grp + i} />);
|
||||||
|
itemsOnThisRow = 0;
|
||||||
|
}
|
||||||
if (itemsOnThisRow == 6 || i > 0 && sortedModules.length > 3 && itemsPerClass > 2 && m.class != prevClass && (m.rating != prevRating || m.mount)) {
|
if (itemsOnThisRow == 6 || i > 0 && sortedModules.length > 3 && itemsPerClass > 2 && m.class != prevClass && (m.rating != prevRating || m.mount)) {
|
||||||
elems.push(<br key={'b' + m.grp + i} />);
|
elems.push(<br key={'b' + m.grp + i} />);
|
||||||
itemsOnThisRow = 0;
|
itemsOnThisRow = 0;
|
||||||
@@ -273,6 +284,7 @@ export default class AvailableModulesMenu extends TranslatedComponent {
|
|||||||
itemsOnThisRow++;
|
itemsOnThisRow++;
|
||||||
prevClass = m.class;
|
prevClass = m.class;
|
||||||
prevRating = m.rating;
|
prevRating = m.rating;
|
||||||
|
prevName = m.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <ul key={'modules' + grp} >{elems}</ul>;
|
return <ul key={'modules' + grp} >{elems}</ul>;
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ export default class InternalSlot extends Slot {
|
|||||||
let modTT = translate('modified');
|
let modTT = translate('modified');
|
||||||
if (m && m.blueprint && m.blueprint.name) {
|
if (m && m.blueprint && m.blueprint.name) {
|
||||||
modTT = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
modTT = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
||||||
|
if (m.blueprint.special && m.blueprint.special.id >= 0) {
|
||||||
|
modTT += ', ' + translate(m.blueprint.special.name);
|
||||||
|
}
|
||||||
modTT = (
|
modTT = (
|
||||||
<div>
|
<div>
|
||||||
<div>{modTT}</div>
|
<div>{modTT}</div>
|
||||||
|
|||||||
@@ -6,7 +6,14 @@ import { isEmpty, stopCtxPropagation } from '../utils/UtilityFunctions';
|
|||||||
import cn from 'classnames';
|
import cn from 'classnames';
|
||||||
import { Modifications } from 'coriolis-data/dist';
|
import { Modifications } from 'coriolis-data/dist';
|
||||||
import Modification from './Modification';
|
import Modification from './Modification';
|
||||||
import { getBlueprint, blueprintTooltip, setWorst, setBest, setExtreme, setRandom } from '../utils/BlueprintFunctions';
|
import {
|
||||||
|
getBlueprint,
|
||||||
|
blueprintTooltip,
|
||||||
|
setPercent,
|
||||||
|
getPercent,
|
||||||
|
setRandom,
|
||||||
|
specialToolTip
|
||||||
|
} from '../utils/BlueprintFunctions'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modifications menu
|
* Modifications menu
|
||||||
@@ -30,14 +37,14 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
|
|
||||||
this._toggleBlueprintsMenu = this._toggleBlueprintsMenu.bind(this);
|
this._toggleBlueprintsMenu = this._toggleBlueprintsMenu.bind(this);
|
||||||
this._toggleSpecialsMenu = this._toggleSpecialsMenu.bind(this);
|
this._toggleSpecialsMenu = this._toggleSpecialsMenu.bind(this);
|
||||||
this._rollWorst = this._rollWorst.bind(this);
|
this._rollFifty = this._rollFifty.bind(this);
|
||||||
this._rollRandom = this._rollRandom.bind(this);
|
this._rollRandom = this._rollRandom.bind(this);
|
||||||
this._rollBest = this._rollBest.bind(this);
|
this._rollBest = this._rollBest.bind(this);
|
||||||
this._rollExtreme = this._rollExtreme.bind(this);
|
this._rollWorst = this._rollWorst.bind(this);
|
||||||
this._reset = this._reset.bind(this);
|
this._reset = this._reset.bind(this);
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
blueprintMenuOpened: false,
|
blueprintMenuOpened: !(props.m.blueprint && props.m.blueprint.name),
|
||||||
specialMenuOpened: false
|
specialMenuOpened: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -86,15 +93,33 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
const { m } = props;
|
const { m } = props;
|
||||||
const { language, tooltip, termtip } = context;
|
const { language, tooltip, termtip } = context;
|
||||||
const translate = language.translate;
|
const translate = language.translate;
|
||||||
|
|
||||||
const specials = [];
|
const specials = [];
|
||||||
const specialsId = m.missile && Modifications.modules[m.grp]['specials_' + m.missile] ? 'specials_' + m.missile : 'specials';
|
const specialsId = m.missile && Modifications.modules[m.grp]['specials_' + m.missile] ? 'specials_' + m.missile : 'specials';
|
||||||
if (Modifications.modules[m.grp][specialsId] && Modifications.modules[m.grp][specialsId].length > 0) {
|
if (Modifications.modules[m.grp][specialsId] && Modifications.modules[m.grp][specialsId].length > 0) {
|
||||||
const close = this._specialSelected.bind(this, null);
|
const close = this._specialSelected.bind(this, null);
|
||||||
specials.push(<div style={{ cursor: 'pointer' }} key={ 'none' } onClick={ close }>{translate('PHRASE_NO_SPECIAL')}</div>);
|
specials.push(<div style={{ cursor: 'pointer', fontWeight: 'bold' }} className={ 'button-inline-menu warning' } key={ 'none' } onClick={ close }>{translate('PHRASE_NO_SPECIAL')}</div>);
|
||||||
for (const specialName of Modifications.modules[m.grp][specialsId]) {
|
for (const specialName of Modifications.modules[m.grp][specialsId]) {
|
||||||
|
if (Modifications.specials[specialName].name.search('Legacy') >= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const classes = cn('button-inline-menu', {
|
||||||
|
active: m.blueprint && m.blueprint.special && m.blueprint.special.edname == specialName
|
||||||
|
});
|
||||||
const close = this._specialSelected.bind(this, specialName);
|
const close = this._specialSelected.bind(this, specialName);
|
||||||
specials.push(<div style={{ cursor: 'pointer' }} key={ specialName } onClick={ close }>{translate(Modifications.specials[specialName].name)}</div>);
|
if (m.blueprint && m.blueprint.name) {
|
||||||
|
let tmp = {};
|
||||||
|
if (m.blueprint.special) {
|
||||||
|
tmp = m.blueprint.special;
|
||||||
|
} else {
|
||||||
|
tmp = undefined;
|
||||||
|
}
|
||||||
|
m.blueprint.special = Modifications.specials[specialName];
|
||||||
|
let specialTt = specialToolTip(translate, m.blueprint.grades[m.blueprint.grade], m.grp, m, specialName);
|
||||||
|
m.blueprint.special = tmp;
|
||||||
|
specials.push(<div style={{ cursor: 'pointer' }} className={classes} key={ specialName } onMouseOver={termtip.bind(null, specialTt)} onMouseOut={tooltip.bind(null, null)} onClick={ close }>{translate(Modifications.specials[specialName].name)}</div>);
|
||||||
|
} else {
|
||||||
|
specials.push(<div style={{ cursor: 'pointer' }} className={classes} key={ specialName } onClick={ close }>{translate(Modifications.specials[specialName].name)}</div>);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return specials;
|
return specials;
|
||||||
@@ -136,8 +161,9 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
const blueprint = getBlueprint(fdname, m);
|
const blueprint = getBlueprint(fdname, m);
|
||||||
blueprint.grade = grade;
|
blueprint.grade = grade;
|
||||||
ship.setModuleBlueprint(m, blueprint);
|
ship.setModuleBlueprint(m, blueprint);
|
||||||
|
setPercent(ship, m, 100);
|
||||||
|
|
||||||
this.setState({ blueprintMenuOpened: false });
|
this.setState({ blueprintMenuOpened: false, specialMenuOpened: true });
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,11 +194,11 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide a 'worst' roll within the information we have
|
* Provide a '50%' roll within the information we have
|
||||||
*/
|
*/
|
||||||
_rollWorst() {
|
_rollFifty() {
|
||||||
const { m, ship } = this.props;
|
const { m, ship } = this.props;
|
||||||
setWorst(ship, m);
|
setPercent(ship, m, 50);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,16 +216,16 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
*/
|
*/
|
||||||
_rollBest() {
|
_rollBest() {
|
||||||
const { m, ship } = this.props;
|
const { m, ship } = this.props;
|
||||||
setBest(ship, m);
|
setPercent(ship, m, 100);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide an 'extreme' roll within the information we have
|
* Provide a 'worst' roll within the information we have
|
||||||
*/
|
*/
|
||||||
_rollExtreme() {
|
_rollWorst() {
|
||||||
const { m, ship } = this.props;
|
const { m, ship } = this.props;
|
||||||
setExtreme(ship, m);
|
setPercent(ship, m, 0);
|
||||||
this.props.onChange();
|
this.props.onChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,24 +252,28 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
|
|
||||||
const _toggleBlueprintsMenu = this._toggleBlueprintsMenu;
|
const _toggleBlueprintsMenu = this._toggleBlueprintsMenu;
|
||||||
const _toggleSpecialsMenu = this._toggleSpecialsMenu;
|
const _toggleSpecialsMenu = this._toggleSpecialsMenu;
|
||||||
const _rollBest = this._rollBest;
|
const _rollFull = this._rollBest;
|
||||||
const _rollExtreme = this._rollExtreme;
|
|
||||||
const _rollWorst = this._rollWorst;
|
const _rollWorst = this._rollWorst;
|
||||||
|
const _rollFifty = this._rollFifty;
|
||||||
const _rollRandom = this._rollRandom;
|
const _rollRandom = this._rollRandom;
|
||||||
const _reset = this._reset;
|
const _reset = this._reset;
|
||||||
|
|
||||||
let blueprintLabel;
|
let blueprintLabel;
|
||||||
let haveBlueprint = false;
|
let haveBlueprint = false;
|
||||||
let blueprintTt;
|
let blueprintTt;
|
||||||
|
let blueprintCv;
|
||||||
if (m.blueprint && m.blueprint.name) {
|
if (m.blueprint && m.blueprint.name) {
|
||||||
blueprintLabel = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
blueprintLabel = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
||||||
haveBlueprint = true;
|
haveBlueprint = true;
|
||||||
blueprintTt = blueprintTooltip(translate, m.blueprint.grades[m.blueprint.grade], Modifications.modules[m.grp].blueprints[m.blueprint.fdname].grades[m.blueprint.grade].engineers, m.grp);
|
blueprintTt = blueprintTooltip(translate, m.blueprint.grades[m.blueprint.grade], Modifications.modules[m.grp].blueprints[m.blueprint.fdname].grades[m.blueprint.grade].engineers, m.grp);
|
||||||
|
blueprintCv = getPercent(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
let specialLabel;
|
let specialLabel;
|
||||||
|
let specialTt;
|
||||||
if (m.blueprint && m.blueprint.special) {
|
if (m.blueprint && m.blueprint.special) {
|
||||||
specialLabel = m.blueprint.special.name;
|
specialLabel = m.blueprint.special.name;
|
||||||
|
specialTt = specialToolTip(translate, m.blueprint.grades[m.blueprint.grade], m.grp, m, m.blueprint.special.edname);
|
||||||
} else {
|
} else {
|
||||||
specialLabel = translate('PHRASE_SELECT_SPECIAL');
|
specialLabel = translate('PHRASE_SELECT_SPECIAL');
|
||||||
}
|
}
|
||||||
@@ -254,8 +284,8 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
const showSpecial = haveBlueprint && specials.length && !blueprintMenuOpened;
|
const showSpecial = haveBlueprint && specials.length && !blueprintMenuOpened;
|
||||||
const showSpecialsMenu = specialMenuOpened;
|
const showSpecialsMenu = specialMenuOpened;
|
||||||
const showRolls = haveBlueprint && !blueprintMenuOpened && !specialMenuOpened;
|
const showRolls = haveBlueprint && !blueprintMenuOpened && !specialMenuOpened;
|
||||||
const showReset = !blueprintMenuOpened && !specialMenuOpened;
|
const showReset = !blueprintMenuOpened && !specialMenuOpened && haveBlueprint;
|
||||||
const showMods = !blueprintMenuOpened && !specialMenuOpened;
|
const showMods = !blueprintMenuOpened && !specialMenuOpened && haveBlueprint;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
@@ -263,29 +293,28 @@ export default class ModificationsMenu extends TranslatedComponent {
|
|||||||
onClick={(e) => e.stopPropagation() }
|
onClick={(e) => e.stopPropagation() }
|
||||||
onContextMenu={stopCtxPropagation}
|
onContextMenu={stopCtxPropagation}
|
||||||
>
|
>
|
||||||
{ showBlueprintsMenu ? '' : haveBlueprint ?
|
{ showBlueprintsMenu | showSpecialsMenu ? '' : haveBlueprint ?
|
||||||
<div className={ cn('section-menu', { selected: blueprintMenuOpened })} style={{ cursor: 'pointer' }} onMouseOver={termtip.bind(null, blueprintTt)} onMouseOut={tooltip.bind(null, null)} onClick={_toggleBlueprintsMenu}>{blueprintLabel}</div> :
|
<div className={ cn('section-menu button-inline-menu', { selected: blueprintMenuOpened })} style={{ cursor: 'pointer' }} onMouseOver={termtip.bind(null, blueprintTt)} onMouseOut={tooltip.bind(null, null)} onClick={_toggleBlueprintsMenu}>{blueprintLabel}</div> :
|
||||||
<div className={ cn('section-menu', { selected: blueprintMenuOpened })} style={{ cursor: 'pointer' }} onClick={_toggleBlueprintsMenu}>{translate('PHRASE_SELECT_BLUEPRINT')}</div> }
|
<div className={ cn('section-menu button-inline-menu', { selected: blueprintMenuOpened })} style={{ cursor: 'pointer' }} onClick={_toggleBlueprintsMenu}>{translate('PHRASE_SELECT_BLUEPRINT')}</div> }
|
||||||
{ showBlueprintsMenu ? this._renderBlueprints(this.props, this.context) : null }
|
{ showBlueprintsMenu ? this._renderBlueprints(this.props, this.context) : null }
|
||||||
{ showSpecial ? <div className={ cn('section-menu', { selected: specialMenuOpened })} style={{ cursor: 'pointer' }} onClick={_toggleSpecialsMenu}>{specialLabel}</div> : null }
|
{ showSpecial & !showSpecialsMenu ? <div className={ cn('section-menu button-inline-menu', { selected: specialMenuOpened })} style={{ cursor: 'pointer' }} onMouseOver={specialTt ? termtip.bind(null, specialTt) : null} onMouseOut={specialTt ? tooltip.bind(null, null) : null} onClick={_toggleSpecialsMenu}>{specialLabel}</div> : null }
|
||||||
{ showSpecialsMenu ? specials : null }
|
{ showSpecialsMenu ? specials : null }
|
||||||
{ showRolls || showReset ?
|
{ showReset ? <div className={'section-menu button-inline-menu warning'} style={{ cursor: 'pointer' }} onClick={_reset} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_RESET')} onMouseOut={tooltip.bind(null, null)}> { translate('reset') } </div> : null }
|
||||||
|
{ showRolls ?
|
||||||
|
|
||||||
<table style={{ width: '100%', backgroundColor: 'transparent' }}>
|
<table style={{ width: '100%', backgroundColor: 'transparent' }}>
|
||||||
<tbody>
|
<tbody>
|
||||||
{ showRolls ?
|
{ showRolls ?
|
||||||
<tr>
|
<tr>
|
||||||
<td> { translate('roll') }: </td>
|
<td className={ cn('section-menu button-inline-menu', {active: false})}> { translate('roll') }: </td>
|
||||||
<td style={{ cursor: 'pointer' }} onClick={_rollWorst} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_WORST')} onMouseOut={tooltip.bind(null, null)}> { translate('worst') } </td>
|
<td className={ cn('section-menu button-inline-menu', { active: blueprintCv === 0 })} style={{ cursor: 'pointer' }} onClick={_rollWorst} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_WORST')} onMouseOut={tooltip.bind(null, null)}> { translate('0%') } </td>
|
||||||
<td style={{ cursor: 'pointer' }} onClick={_rollBest}onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_BEST')} onMouseOut={tooltip.bind(null, null)}> { translate('best') } </td>
|
<td className={ cn('section-menu button-inline-menu', { active: blueprintCv === 50 })} style={{ cursor: 'pointer' }} onClick={_rollFifty} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_FIFTY')} onMouseOut={tooltip.bind(null, null)}> { translate('50%') } </td>
|
||||||
<td style={{ cursor: 'pointer' }} onClick={_rollExtreme}onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_EXTREME')} onMouseOut={tooltip.bind(null, null)}> { translate('extreme') } </td>
|
<td className={ cn('section-menu button-inline-menu', { active: blueprintCv === 100 })} style={{ cursor: 'pointer' }} onClick={_rollFull} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_BEST')} onMouseOut={tooltip.bind(null, null)}> { translate('100%') } </td>
|
||||||
<td style={{ cursor: 'pointer' }} onClick={_rollRandom} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_RANDOM')} onMouseOut={tooltip.bind(null, null)}> { translate('random') } </td>
|
<td className={ cn('section-menu button-inline-menu', { active: blueprintCv === null || blueprintCv % 50 != 0 })} style={{ cursor: 'pointer' }} onClick={_rollRandom} onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_RANDOM')} onMouseOut={tooltip.bind(null, null)}> { translate('random') } </td>
|
||||||
</tr> : null }
|
|
||||||
{ showReset ?
|
|
||||||
<tr>
|
|
||||||
<td colSpan={'5'} style={{ cursor: 'pointer' }} onClick={_reset}onMouseOver={termtip.bind(null, 'PHRASE_BLUEPRINT_RESET')} onMouseOut={tooltip.bind(null, null)}> { translate('reset') } </td>
|
|
||||||
</tr> : null }
|
</tr> : null }
|
||||||
</tbody>
|
</tbody>
|
||||||
</table> : null }
|
</table> : null }
|
||||||
|
{ showMods ? <hr /> : null }
|
||||||
{ showMods ?
|
{ showMods ?
|
||||||
<span onMouseOver={termtip.bind(null, 'HELP_MODIFICATIONS_MENU')} onMouseOut={tooltip.bind(null, null)} >
|
<span onMouseOver={termtip.bind(null, 'HELP_MODIFICATIONS_MENU')} onMouseOut={tooltip.bind(null, null)} >
|
||||||
{ this._renderModifications(this.props) }
|
{ this._renderModifications(this.props) }
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export default class ShipSummaryTable extends TranslatedComponent {
|
|||||||
<th rowSpan={2}>{translate('TTD')}</th>
|
<th rowSpan={2}>{translate('TTD')}</th>
|
||||||
{/* <th onMouseEnter={termtip.bind(null, 'heat per second')} onMouseLeave={hide} rowSpan={2}>{translate('HPS')}</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}>{translate('cargo')}</th>
|
||||||
<th rowSpan={2}>{translate('passengers')}</th>
|
<th rowSpan={2}>{translate('pax')}</th>
|
||||||
<th rowSpan={2}>{translate('fuel')}</th>
|
<th rowSpan={2}>{translate('fuel')}</th>
|
||||||
<th colSpan={3}>{translate('mass')}</th>
|
<th colSpan={3}>{translate('mass')}</th>
|
||||||
<th onMouseEnter={termtip.bind(null, 'hull hardness', { cap: 0 })} onMouseLeave={hide} rowSpan={2}>{translate('hrd')}</th>
|
<th onMouseEnter={termtip.bind(null, 'hull hardness', { cap: 0 })} onMouseLeave={hide} rowSpan={2}>{translate('hrd')}</th>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export default class StandardSlot extends TranslatedComponent {
|
|||||||
let m = slot.m;
|
let m = slot.m;
|
||||||
let classRating = m.class + m.rating;
|
let classRating = m.class + m.rating;
|
||||||
let menu;
|
let menu;
|
||||||
let validMods = m == null ? [] : (Modifications.modules[m.grp].modifications || []);
|
let validMods = m == null || !Modifications.modules[m.grp] ? [] : (Modifications.modules[m.grp].modifications || []);
|
||||||
let showModuleResistances = Persist.showModuleResistances();
|
let showModuleResistances = Persist.showModuleResistances();
|
||||||
let mass = m.getMass() || m.cargo || m.fuel || 0;
|
let mass = m.getMass() || m.cargo || m.fuel || 0;
|
||||||
|
|
||||||
@@ -56,6 +56,9 @@ export default class StandardSlot extends TranslatedComponent {
|
|||||||
let modTT = translate('modified');
|
let modTT = translate('modified');
|
||||||
if (m && m.blueprint && m.blueprint.name) {
|
if (m && m.blueprint && m.blueprint.name) {
|
||||||
modTT = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
modTT = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
||||||
|
if (m.blueprint.special && m.blueprint.special.id >= 0) {
|
||||||
|
modTT += ', ' + translate(m.blueprint.special.name);
|
||||||
|
}
|
||||||
modTT = (
|
modTT = (
|
||||||
<div>
|
<div>
|
||||||
<div>{modTT}</div>
|
<div>{modTT}</div>
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
"PHRASE_ENGAGEMENT_RANGE": "The distance between your ship and its target",
|
"PHRASE_ENGAGEMENT_RANGE": "The distance between your ship and its target",
|
||||||
"PHRASE_SELECT_BLUEPRINT": "Click to select a blueprint",
|
"PHRASE_SELECT_BLUEPRINT": "Click to select a blueprint",
|
||||||
"PHRASE_BLUEPRINT_WORST": "Worst primary values for this blueprint",
|
"PHRASE_BLUEPRINT_WORST": "Worst primary values for this blueprint",
|
||||||
|
"PHRASE_BLUEPRINT_FIFTY": "50% of full values for this blueprint",
|
||||||
|
"PHRASE_BLUEPRINT_SEVEN_FIVE": "75% of full values for this blueprint",
|
||||||
"PHRASE_BLUEPRINT_RANDOM": "Random selection between worst and best primary values for this blueprint",
|
"PHRASE_BLUEPRINT_RANDOM": "Random selection between worst and best primary values for this blueprint",
|
||||||
"PHRASE_BLUEPRINT_BEST": "Best primary values for this blueprint",
|
"PHRASE_BLUEPRINT_BEST": "Best primary values for this blueprint",
|
||||||
"PHRASE_BLUEPRINT_EXTREME": "Best beneficial and worst detrimental primary values for this blueprint",
|
"PHRASE_BLUEPRINT_EXTREME": "Best beneficial and worst detrimental primary values for this blueprint",
|
||||||
@@ -115,6 +117,10 @@
|
|||||||
"pl": "Pulse Laser",
|
"pl": "Pulse Laser",
|
||||||
"po": "Point Defence",
|
"po": "Point Defence",
|
||||||
"pp": "Power Plant",
|
"pp": "Power Plant",
|
||||||
|
"gpp": "Guardian Hybrid Power Plant",
|
||||||
|
"gpd": "Guardian Hybrid Power Distributor",
|
||||||
|
"gpc": "Guardian Plasma Charger",
|
||||||
|
"ggc": "Guardian Gauss Cannon",
|
||||||
"psg": "Prismatic Shield Generator",
|
"psg": "Prismatic Shield Generator",
|
||||||
"pv": "Planetary Vehicle Hangar",
|
"pv": "Planetary Vehicle Hangar",
|
||||||
"rf": "Refinery",
|
"rf": "Refinery",
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ export default class AboutPage extends Page {
|
|||||||
|
|
||||||
<h3>Chat</h3>
|
<h3>Chat</h3>
|
||||||
<p>You can chat to us on our <a href='https://discord.gg/0uwCh6R62aPRjk9w' target='_blank'>EDCD Discord server</a>.</p>
|
<p>You can chat to us on our <a href='https://discord.gg/0uwCh6R62aPRjk9w' target='_blank'>EDCD Discord server</a>.</p>
|
||||||
|
|
||||||
|
<h3>Supporting Coriolis</h3>
|
||||||
|
<p>Coriolis is an open source project, and I work on it in my free time. I have set up a patreon at <a href='https://www.patreon.com/coriolis_elite'>patreon.com/coriolis_elite</a>, which will be used to keep Coriolis up to date and the servers running.</p>
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ export default class ShipyardPage extends Page {
|
|||||||
<th className='sortable' onClick={sortShips('topBoost')}>{translate('boost')}</th>
|
<th className='sortable' onClick={sortShips('topBoost')}>{translate('boost')}</th>
|
||||||
<th className='sortable' onClick={sortShips('maxJumpRange')}>{translate('jump')}</th>
|
<th className='sortable' onClick={sortShips('maxJumpRange')}>{translate('jump')}</th>
|
||||||
<th className='sortable' onClick={sortShips('maxCargo')}>{translate('cargo')}</th>
|
<th className='sortable' onClick={sortShips('maxCargo')}>{translate('cargo')}</th>
|
||||||
<th className='sortable' onClick={sortShips('maxPassengers')}>{translate('passengers')}</th>
|
<th className='sortable' onClick={sortShips('maxPassengers')}>{translate('pax')}</th>
|
||||||
|
|
||||||
<th className='lft' colSpan={7}>{translate('core module classes')}</th>
|
<th className='lft' colSpan={7}>{translate('core module classes')}</th>
|
||||||
<th colSpan={5} className='sortable lft' onClick={sortShips('hpCount')}>{translate('hardpoints')}</th>
|
<th colSpan={5} className='sortable lft' onClick={sortShips('hpCount')}>{translate('hardpoints')}</th>
|
||||||
|
|||||||
@@ -9,12 +9,16 @@ export const StandardArray = [
|
|||||||
'pd', // Power Distributor
|
'pd', // Power Distributor
|
||||||
's', // Sensors
|
's', // Sensors
|
||||||
'ft', // Fuel Tank
|
'ft', // Fuel Tank
|
||||||
|
'gpp', // Guardian Hybrid Power Plant
|
||||||
|
'gpd' // Guardian Hybrid Power Distributor
|
||||||
];
|
];
|
||||||
|
|
||||||
// Map to lookup group labels/names for component grp, used for JSON Serialization
|
// Map to lookup group labels/names for component grp, used for JSON Serialization
|
||||||
export const ModuleGroupToName = {
|
export const ModuleGroupToName = {
|
||||||
// Standard
|
// Standard
|
||||||
pp: 'Power Plant',
|
pp: 'Power Plant',
|
||||||
|
gpp: 'Guardian Hybrid Power Plant',
|
||||||
|
gpd: 'Guardian Hybrid Power Distributor',
|
||||||
t: 'Thrusters',
|
t: 'Thrusters',
|
||||||
fsd: 'Frame Shift Drive',
|
fsd: 'Frame Shift Drive',
|
||||||
ls: 'Life Support',
|
ls: 'Life Support',
|
||||||
@@ -75,7 +79,9 @@ export const ModuleGroupToName = {
|
|||||||
sb: 'Shield Booster',
|
sb: 'Shield Booster',
|
||||||
tp: 'Torpedo Pylon',
|
tp: 'Torpedo Pylon',
|
||||||
sfn: 'Shutdown Field Neutraliser',
|
sfn: 'Shutdown Field Neutraliser',
|
||||||
xs: 'Xeno Scanner'
|
xs: 'Xeno Scanner',
|
||||||
|
gpc: 'Guardian Plasma Charger',
|
||||||
|
ggc: 'Guardian Gauss Cannon',
|
||||||
};
|
};
|
||||||
|
|
||||||
let GrpNameToCodeMap = {};
|
let GrpNameToCodeMap = {};
|
||||||
|
|||||||
@@ -67,26 +67,6 @@ export default class Module {
|
|||||||
// Sanitise the resultant value to 4dp equivalent
|
// Sanitise the resultant value to 4dp equivalent
|
||||||
return isNaN(result) ? result : Math.round(result);
|
return isNaN(result) ? result : Math.round(result);
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Set a value for a given modification ID
|
|
||||||
* @param {Number} name The name of the modification
|
|
||||||
* @param {object} value The value of the modification. If it is a numeric value then it should be an integer scaled so that -2.34% == -234
|
|
||||||
*/
|
|
||||||
setModValueFromJournal(name, value, origVal) {
|
|
||||||
if (!this.mods) {
|
|
||||||
this.mods = {};
|
|
||||||
}
|
|
||||||
if (!this.origVals) {
|
|
||||||
this.origVals = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value == null || value == 0) {
|
|
||||||
delete this.mods[name];
|
|
||||||
} else {
|
|
||||||
this.mods[name] = value;
|
|
||||||
this.origVals[name] = origVal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a value for a given modification ID
|
* Set a value for a given modification ID
|
||||||
@@ -139,7 +119,6 @@ export default class Module {
|
|||||||
_getModifiedValue(name) {
|
_getModifiedValue(name) {
|
||||||
const modification = Modifications.modifications[name];
|
const modification = Modifications.modifications[name];
|
||||||
let result = this[name];
|
let result = this[name];
|
||||||
// console.log(`${name} = ${this[name]}`)
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
if (modification && modification.method === 'additive') {
|
if (modification && modification.method === 'additive') {
|
||||||
// Additive modifications start at 0 rather than NULL
|
// Additive modifications start at 0 rather than NULL
|
||||||
|
|||||||
@@ -464,7 +464,17 @@ export default class Ship {
|
|||||||
if (m.blueprint) {
|
if (m.blueprint) {
|
||||||
m.blueprint.special = special;
|
m.blueprint.special = special;
|
||||||
}
|
}
|
||||||
this.recalculateDps().recalculateHps().recalculateEps();
|
this.updatePowerGenerated()
|
||||||
|
.updatePowerUsed()
|
||||||
|
.recalculateMass()
|
||||||
|
.updateJumpStats()
|
||||||
|
.recalculateShield()
|
||||||
|
.recalculateShieldCells()
|
||||||
|
.recalculateArmour()
|
||||||
|
.recalculateDps()
|
||||||
|
.recalculateEps()
|
||||||
|
.recalculateHps()
|
||||||
|
.updateMovement();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1211,7 +1221,9 @@ export default class Ship {
|
|||||||
} else if (slot.m.grp === 'cr') {
|
} else if (slot.m.grp === 'cr') {
|
||||||
cargoCapacity += slot.m.cargo;
|
cargoCapacity += slot.m.cargo;
|
||||||
} else if (slot.m.grp.slice(0,2) === 'pc') {
|
} else if (slot.m.grp.slice(0,2) === 'pc') {
|
||||||
passengerCapacity += slot.m.passengers
|
if (slot.m.passengers) {
|
||||||
|
passengerCapacity += slot.m.passengers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,67 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Modifications } from 'coriolis-data/dist';
|
import { Modifications } from 'coriolis-data/dist';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a tooltip with details of a blueprint's specials
|
||||||
|
* @param {Object} translate The translate object
|
||||||
|
* @param {Object} blueprint The blueprint at the required grade
|
||||||
|
* @param {string} grp The group of the module
|
||||||
|
* @param {Object} m The module to compare with
|
||||||
|
* @param specialName
|
||||||
|
* @returns {Object} The react components
|
||||||
|
*/
|
||||||
|
export function specialToolTip(translate, blueprint, grp, m, specialName) {
|
||||||
|
const effects = [];
|
||||||
|
if (!blueprint || !blueprint.features) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
if (m) {
|
||||||
|
// We also add in any benefits from specials that aren't covered above
|
||||||
|
if (m.blueprint) {
|
||||||
|
for (const feature in Modifications.modifierActions[specialName]) {
|
||||||
|
// if (!blueprint.features[feature] && !m.mods.feature) {
|
||||||
|
const featureDef = Modifications.modifications[feature];
|
||||||
|
if (featureDef && !featureDef.hidden) {
|
||||||
|
let symbol = '';
|
||||||
|
if (feature === 'jitter') {
|
||||||
|
symbol = '°';
|
||||||
|
} else if (featureDef.type === 'percentage') {
|
||||||
|
symbol = '%';
|
||||||
|
}
|
||||||
|
let current = m.getModValue(feature) - m.getModValue(feature, true);
|
||||||
|
if (featureDef.type === 'percentage') {
|
||||||
|
current = Math.round(current / 10) / 10;
|
||||||
|
} else if (featureDef.type === 'numeric') {
|
||||||
|
current /= 100;
|
||||||
|
}
|
||||||
|
const currentIsBeneficial = isValueBeneficial(feature, current);
|
||||||
|
|
||||||
|
effects.push(
|
||||||
|
<tr key={feature + '_specialTT'}>
|
||||||
|
<td style={{textAlign: 'left'}}>{translate(feature, grp)}</td>
|
||||||
|
<td> </td>
|
||||||
|
<td className={current === 0 ? '' : currentIsBeneficial ? 'secondary' : 'warning'}
|
||||||
|
style={{textAlign: 'right'}}>{current}{symbol}</td>
|
||||||
|
<td> </td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<table width='100%'>
|
||||||
|
<tbody>
|
||||||
|
{effects}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a tooltip with details of a blueprint's effects
|
* Generate a tooltip with details of a blueprint's effects
|
||||||
* @param {Object} translate The translate object
|
* @param {Object} translate The translate object
|
||||||
@@ -12,6 +73,9 @@ import { Modifications } from 'coriolis-data/dist';
|
|||||||
*/
|
*/
|
||||||
export function blueprintTooltip(translate, blueprint, engineers, grp, m) {
|
export function blueprintTooltip(translate, blueprint, engineers, grp, m) {
|
||||||
const effects = [];
|
const effects = [];
|
||||||
|
if (!blueprint || !blueprint.features) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
for (const feature in blueprint.features) {
|
for (const feature in blueprint.features) {
|
||||||
const featureIsBeneficial = isBeneficial(feature, blueprint.features[feature]);
|
const featureIsBeneficial = isBeneficial(feature, blueprint.features[feature]);
|
||||||
const featureDef = Modifications.modifications[feature];
|
const featureDef = Modifications.modifications[feature];
|
||||||
@@ -228,30 +292,10 @@ export function getBlueprint(name, module) {
|
|||||||
const findMod = val => Object.keys(Modifications.blueprints).find(elem => elem.toString().toLowerCase().search(val.toString().toLowerCase().replace(/(OutfittingFieldType_|persecond)/igm, '')) >= 0)
|
const findMod = val => Object.keys(Modifications.blueprints).find(elem => elem.toString().toLowerCase().search(val.toString().toLowerCase().replace(/(OutfittingFieldType_|persecond)/igm, '')) >= 0)
|
||||||
const found = Modifications.blueprints[findMod(name)];
|
const found = Modifications.blueprints[findMod(name)];
|
||||||
if (!found || !found.fdname) {
|
if (!found || !found.fdname) {
|
||||||
return undefined;
|
return {};
|
||||||
}
|
}
|
||||||
const blueprint = JSON.parse(JSON.stringify(found));
|
const blueprint = JSON.parse(JSON.stringify(found));
|
||||||
console.log(blueprint)
|
|
||||||
if (module) {
|
if (module) {
|
||||||
if (module.grp === 'bh' || module.grp === 'hr' || module.grp === 'sg' || module.grp === 'psg' || module.grp === 'bsg') {
|
|
||||||
// Bulkheads, hull reinforcements and shield generators need to have their resistances altered by the base values
|
|
||||||
for (const grade in blueprint.grades) {
|
|
||||||
for (const feature in blueprint.grades[grade].features) {
|
|
||||||
if (feature === 'explres') {
|
|
||||||
blueprint.grades[grade].features[feature][0] *= (1 - module.explres);
|
|
||||||
blueprint.grades[grade].features[feature][1] *= (1 - module.explres);
|
|
||||||
}
|
|
||||||
if (feature === 'kinres') {
|
|
||||||
blueprint.grades[grade].features[feature][0] *= (1 - module.kinres);
|
|
||||||
blueprint.grades[grade].features[feature][1] *= (1 - module.kinres);
|
|
||||||
}
|
|
||||||
if (feature === 'thermres') {
|
|
||||||
blueprint.grades[grade].features[feature][0] *= (1 - module.thermres);
|
|
||||||
blueprint.grades[grade].features[feature][1] *= (1 - module.thermres);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (module.grp === 'sb') {
|
if (module.grp === 'sb') {
|
||||||
// Shield boosters are treated internally as straight modifiers, so rather than (for example)
|
// Shield boosters are treated internally as straight modifiers, so rather than (for example)
|
||||||
// being a 4% boost they are a 104% multiplier. We need to fix the values here so that they look
|
// being a 4% boost they are a 104% multiplier. We need to fix the values here so that they look
|
||||||
@@ -270,56 +314,31 @@ export function getBlueprint(name, module) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide 'worst' primary modifications
|
* Provide 'percent' primary modifications
|
||||||
* @param {Object} ship The ship for which to perform the modifications
|
* @param {Object} ship The ship for which to perform the modifications
|
||||||
* @param {Object} m The module for which to perform the modifications
|
* @param {Object} m The module for which to perform the modifications
|
||||||
|
* @param {Number} percent The percent to set values to of full.
|
||||||
*/
|
*/
|
||||||
export function setWorst(ship, m) {
|
export function setPercent(ship, m, percent) {
|
||||||
ship.clearModifications(m);
|
|
||||||
const features = m.blueprint.grades[m.blueprint.grade].features;
|
|
||||||
for (const featureName in features) {
|
|
||||||
const value = features[featureName][0];
|
|
||||||
_setValue(ship, m, featureName, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provide 'best' primary modifications
|
|
||||||
* @param {Object} ship The ship for which to perform the modifications
|
|
||||||
* @param {Object} m The module for which to perform the modifications
|
|
||||||
*/
|
|
||||||
export function setBest(ship, m) {
|
|
||||||
ship.clearModifications(m);
|
|
||||||
const features = m.blueprint.grades[m.blueprint.grade].features;
|
|
||||||
for (const featureName in features) {
|
|
||||||
const value = features[featureName][1];
|
|
||||||
_setValue(ship, m, featureName, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provide 'extreme' primary modifications
|
|
||||||
* @param {Object} ship The ship for which to perform the modifications
|
|
||||||
* @param {Object} m The module for which to perform the modifications
|
|
||||||
*/
|
|
||||||
export function setExtreme(ship, m) {
|
|
||||||
ship.clearModifications(m);
|
ship.clearModifications(m);
|
||||||
|
// Pick given value as multiplier
|
||||||
|
const mult = percent / 100;
|
||||||
const features = m.blueprint.grades[m.blueprint.grade].features;
|
const features = m.blueprint.grades[m.blueprint.grade].features;
|
||||||
for (const featureName in features) {
|
for (const featureName in features) {
|
||||||
let value;
|
let value;
|
||||||
if (Modifications.modifications[featureName].higherbetter) {
|
if (Modifications.modifications[featureName].higherbetter) {
|
||||||
// Higher is better, but is this making it better or worse?
|
// Higher is better, but is this making it better or worse?
|
||||||
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
||||||
value = features[featureName][0];
|
value = features[featureName][1] + ((features[featureName][0] - features[featureName][1]) * mult);
|
||||||
} else {
|
} else {
|
||||||
value = features[featureName][1];
|
value = features[featureName][0] + ((features[featureName][1] - features[featureName][0]) * mult);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Higher is worse, but is this making it better or worse?
|
// Higher is worse, but is this making it better or worse?
|
||||||
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
||||||
value = features[featureName][1];
|
value = features[featureName][0] + ((features[featureName][1] - features[featureName][0]) * mult);
|
||||||
} else {
|
} else {
|
||||||
value = features[featureName][0];
|
value = features[featureName][1] + ((features[featureName][0] - features[featureName][1]) * mult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,30 +352,8 @@ export function setExtreme(ship, m) {
|
|||||||
* @param {Object} m The module for which to perform the modifications
|
* @param {Object} m The module for which to perform the modifications
|
||||||
*/
|
*/
|
||||||
export function setRandom(ship, m) {
|
export function setRandom(ship, m) {
|
||||||
ship.clearModifications(m);
|
|
||||||
// Pick a single value for our randomness
|
// Pick a single value for our randomness
|
||||||
const mult = Math.random();
|
setPercent(ship, m, Math.random() * 100);
|
||||||
const features = m.blueprint.grades[m.blueprint.grade].features;
|
|
||||||
for (const featureName in features) {
|
|
||||||
let value;
|
|
||||||
if (Modifications.modifications[featureName].higherbetter) {
|
|
||||||
// Higher is better, but is this making it better or worse?
|
|
||||||
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
|
||||||
value = features[featureName][1] + ((features[featureName][0] - features[featureName][1]) * mult);
|
|
||||||
} else {
|
|
||||||
value = features[featureName][0] + ((features[featureName][1] - features[featureName][0]) * mult);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Higher is worse, but is this making it better or worse?
|
|
||||||
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
|
||||||
value = features[featureName][0] + ((features[featureName][1] - features[featureName][0]) * mult);
|
|
||||||
} else {
|
|
||||||
value = features[featureName][1] + ((features[featureName][0] - features[featureName][1]) * mult);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_setValue(ship, m, featureName, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -375,3 +372,60 @@ function _setValue(ship, m, featureName, value) {
|
|||||||
ship.setModification(m, featureName, value);
|
ship.setModification(m, featureName, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide 'percent' primary query
|
||||||
|
* @param {Object} m The module for which to perform the query
|
||||||
|
* @returns {Number} percent The percentage indicator of current applied values.
|
||||||
|
*/
|
||||||
|
export function getPercent(m) {
|
||||||
|
let result = null;
|
||||||
|
const features = m.blueprint.grades[m.blueprint.grade].features;
|
||||||
|
for (const featureName in features) {
|
||||||
|
|
||||||
|
if (features[featureName][0] === features[featureName][1]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let value = _getValue(m, featureName);
|
||||||
|
let mult;
|
||||||
|
if (Modifications.modifications[featureName].higherbetter) {
|
||||||
|
// Higher is better, but is this making it better or worse?
|
||||||
|
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
||||||
|
mult = Math.round((value - features[featureName][1]) / (features[featureName][0] - features[featureName][1]) * 100);
|
||||||
|
} else {
|
||||||
|
mult = Math.round((value - features[featureName][0]) / (features[featureName][1] - features[featureName][0]) * 100);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Higher is worse, but is this making it better or worse?
|
||||||
|
if (features[featureName][0] < 0 || (features[featureName][0] === 0 && features[featureName][1] < 0)) {
|
||||||
|
mult = Math.round((value - features[featureName][0]) / (features[featureName][1] - features[featureName][0]) * 100);
|
||||||
|
} else {
|
||||||
|
mult = Math.round((value - features[featureName][1]) / (features[featureName][0] - features[featureName][1]) * 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result && result != mult) {
|
||||||
|
return null;
|
||||||
|
} else if (result != mult) {
|
||||||
|
result = mult;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query a feature value
|
||||||
|
* @param {Object} m The module for which to perform the query
|
||||||
|
* @param {string} featureName The feature being queried
|
||||||
|
*/
|
||||||
|
function _getValue(m, featureName) {
|
||||||
|
if (Modifications.modifications[featureName].type == 'percentage') {
|
||||||
|
return m.getModValue(featureName, true) / 10000;
|
||||||
|
} else if (Modifications.modifications[featureName].type == 'numeric') {
|
||||||
|
return m.getModValue(featureName, true) / 100;
|
||||||
|
} else {
|
||||||
|
return m.getModValue(featureName, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -148,15 +148,15 @@ export function shipFromJson(json) {
|
|||||||
|
|
||||||
// Add the bulkheads
|
// Add the bulkheads
|
||||||
const armourJson = json.modules.Armour.module;
|
const armourJson = json.modules.Armour.module;
|
||||||
if (armourJson.name.endsWith('_Armour_Grade1')) {
|
if (armourJson.name.toLowerCase().endsWith('_armour_grade1')) {
|
||||||
ship.useBulkhead(0, true);
|
ship.useBulkhead(0, true);
|
||||||
} else if (armourJson.name.endsWith('_Armour_Grade2')) {
|
} else if (armourJson.name.toLowerCase().endsWith('_armour_grade2')) {
|
||||||
ship.useBulkhead(1, true);
|
ship.useBulkhead(1, true);
|
||||||
} else if (armourJson.name.endsWith('_Armour_Grade3')) {
|
} else if (armourJson.name.toLowerCase().endsWith('_armour_grade3')) {
|
||||||
ship.useBulkhead(2, true);
|
ship.useBulkhead(2, true);
|
||||||
} else if (armourJson.name.endsWith('_Armour_Mirrored')) {
|
} else if (armourJson.name.toLowerCase().endsWith('_armour_mirrored')) {
|
||||||
ship.useBulkhead(3, true);
|
ship.useBulkhead(3, true);
|
||||||
} else if (armourJson.name.endsWith('_Armour_Reactive')) {
|
} else if (armourJson.name.toLowerCase().endsWith('_armour_reactive')) {
|
||||||
ship.useBulkhead(4, true);
|
ship.useBulkhead(4, true);
|
||||||
} else {
|
} else {
|
||||||
throw 'Unknown bulkheads "' + armourJson.name + '"';
|
throw 'Unknown bulkheads "' + armourJson.name + '"';
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ function _moduleFromFdName (fdname) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(fdname)
|
|
||||||
|
|
||||||
// Not found
|
// Not found
|
||||||
return null
|
return null
|
||||||
@@ -71,16 +70,17 @@ export function shipFromLoadoutJSON (json) {
|
|||||||
let ship = new Ship(shipModel, shipTemplate.properties, shipTemplate.slots)
|
let ship = new Ship(shipModel, shipTemplate.properties, shipTemplate.slots)
|
||||||
ship.buildWith(null)
|
ship.buildWith(null)
|
||||||
// Initial Ship building, don't do engineering yet.
|
// Initial Ship building, don't do engineering yet.
|
||||||
|
let opts = [];
|
||||||
|
|
||||||
for (const module of json.Modules) {
|
for (const module of json.Modules) {
|
||||||
if (!module.Engineering) module.Engineering = {};
|
switch (module.Slot.toLowerCase()) {
|
||||||
switch (module.Slot) {
|
|
||||||
// Cargo Hatch.
|
// Cargo Hatch.
|
||||||
case 'CargoHatch':
|
case 'cargohatch':
|
||||||
ship.cargoHatch.enabled = module.On
|
ship.cargoHatch.enabled = module.On
|
||||||
ship.cargoHatch.priority = module.Priority
|
ship.cargoHatch.priority = module.Priority
|
||||||
break
|
break
|
||||||
// Add the bulkheads
|
// Add the bulkheads
|
||||||
case 'Armour':
|
case 'armour':
|
||||||
if (module.Item.toLowerCase().endsWith('_armour_grade1')) {
|
if (module.Item.toLowerCase().endsWith('_armour_grade1')) {
|
||||||
ship.useBulkhead(0, true)
|
ship.useBulkhead(0, true)
|
||||||
} else if (module.Item.toLowerCase().endsWith('_armour_grade2')) {
|
} else if (module.Item.toLowerCase().endsWith('_armour_grade2')) {
|
||||||
@@ -95,51 +95,51 @@ export function shipFromLoadoutJSON (json) {
|
|||||||
throw 'Unknown bulkheads "' + module.Item + '"'
|
throw 'Unknown bulkheads "' + module.Item + '"'
|
||||||
}
|
}
|
||||||
ship.bulkheads.enabled = true
|
ship.bulkheads.enabled = true
|
||||||
_addModifications(ship.bulkheads.m, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(ship.bulkheads.m, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'PowerPlant':
|
case 'powerplant':
|
||||||
const powerplant = _moduleFromFdName(module.Item)
|
const powerplant = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[0], powerplant, true)
|
ship.use(ship.standard[0], powerplant, true)
|
||||||
ship.standard[0].enabled = module.On
|
ship.standard[0].enabled = module.On
|
||||||
ship.standard[0].priority = module.Priority
|
ship.standard[0].priority = module.Priority
|
||||||
_addModifications(powerplant, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(powerplant, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'MainEngines':
|
case 'mainengines':
|
||||||
const thrusters = _moduleFromFdName(module.Item)
|
const thrusters = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[1], thrusters, true)
|
ship.use(ship.standard[1], thrusters, true)
|
||||||
ship.standard[1].enabled = module.On
|
ship.standard[1].enabled = module.On
|
||||||
ship.standard[1].priority = module.Priority
|
ship.standard[1].priority = module.Priority
|
||||||
_addModifications(thrusters, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(thrusters, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'FrameShiftDrive':
|
case 'frameshiftdrive':
|
||||||
const frameshiftdrive = _moduleFromFdName(module.Item)
|
const frameshiftdrive = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[2], frameshiftdrive, true)
|
ship.use(ship.standard[2], frameshiftdrive, true)
|
||||||
ship.standard[2].enabled = module.On
|
ship.standard[2].enabled = module.On
|
||||||
ship.standard[2].priority = module.Priority
|
ship.standard[2].priority = module.Priority
|
||||||
_addModifications(frameshiftdrive, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(frameshiftdrive, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'LifeSupport':
|
case 'lifesupport':
|
||||||
const lifesupport = _moduleFromFdName(module.Item)
|
const lifesupport = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[3], lifesupport, true)
|
ship.use(ship.standard[3], lifesupport, true)
|
||||||
ship.standard[3].enabled = module.On === true
|
ship.standard[3].enabled = module.On === true
|
||||||
ship.standard[3].priority = module.Priority
|
ship.standard[3].priority = module.Priority
|
||||||
_addModifications(lifesupport, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(lifesupport, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'PowerDistributor':
|
case 'powerdistributor':
|
||||||
const powerdistributor = _moduleFromFdName(module.Item)
|
const powerdistributor = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[4], powerdistributor, true)
|
ship.use(ship.standard[4], powerdistributor, true)
|
||||||
ship.standard[4].enabled = module.On
|
ship.standard[4].enabled = module.On
|
||||||
ship.standard[4].priority = module.Priority
|
ship.standard[4].priority = module.Priority
|
||||||
_addModifications(powerdistributor, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(powerdistributor, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'Radar':
|
case 'radar':
|
||||||
const sensors = _moduleFromFdName(module.Item)
|
const sensors = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[5], sensors, true)
|
ship.use(ship.standard[5], sensors, true)
|
||||||
ship.standard[5].enabled = module.On
|
ship.standard[5].enabled = module.On
|
||||||
ship.standard[5].priority = module.Priority
|
ship.standard[5].priority = module.Priority
|
||||||
_addModifications(sensors, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
if (module.Engineering) _addModifications(sensors, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
||||||
break
|
break
|
||||||
case 'FuelTank':
|
case 'fueltank':
|
||||||
const fueltank = _moduleFromFdName(module.Item)
|
const fueltank = _moduleFromFdName(module.Item)
|
||||||
ship.use(ship.standard[6], fueltank, true)
|
ship.use(ship.standard[6], fueltank, true)
|
||||||
ship.standard[6].enabled = true
|
ship.standard[6].enabled = true
|
||||||
@@ -147,80 +147,86 @@ export function shipFromLoadoutJSON (json) {
|
|||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if (module.Slot.search(/Hardpoint/) !== -1) {
|
for (const module of json.Modules) {
|
||||||
// Add hardpoints
|
if (module.Slot.toLowerCase().search(/hardpoint/) !== -1) {
|
||||||
let hardpointClassNum = -1
|
// Add hardpoints
|
||||||
let hardpointSlotNum = -1
|
let hardpoint;
|
||||||
let hardpointArrayNum = 0
|
let hardpointClassNum = -1
|
||||||
for (let i in shipTemplate.slots.hardpoints) {
|
let hardpointSlotNum = -1
|
||||||
if (shipTemplate.slots.hardpoints[i] === hardpointClassNum) {
|
let hardpointArrayNum = 0
|
||||||
// Another slot of the same class
|
for (let i in shipTemplate.slots.hardpoints) {
|
||||||
hardpointSlotNum++
|
if (shipTemplate.slots.hardpoints[i] === hardpointClassNum) {
|
||||||
} else {
|
// Another slot of the same class
|
||||||
// The first slot of a new class
|
hardpointSlotNum++
|
||||||
hardpointClassNum = shipTemplate.slots.hardpoints[i]
|
} else {
|
||||||
hardpointSlotNum = 1
|
// The first slot of a new class
|
||||||
}
|
hardpointClassNum = shipTemplate.slots.hardpoints[i]
|
||||||
|
hardpointSlotNum = 1
|
||||||
|
}
|
||||||
|
|
||||||
// Now that we know what we're looking for, find it
|
// Now that we know what we're looking for, find it
|
||||||
const hardpointName = HARDPOINT_NUM_TO_CLASS[hardpointClassNum] + 'Hardpoint' + hardpointSlotNum
|
const hardpointName = HARDPOINT_NUM_TO_CLASS[hardpointClassNum] + 'Hardpoint' + hardpointSlotNum
|
||||||
const hardpointSlot = json.Modules.find(elem => elem.Slot === hardpointName)
|
const hardpointSlot = json.Modules.find(elem => elem.Slot.toLowerCase() === hardpointName.toLowerCase())
|
||||||
if (!hardpointSlot) {
|
if (!hardpointSlot) {
|
||||||
// This can happen with old imports that don't contain new hardpoints
|
// This can happen with old imports that don't contain new hardpoints
|
||||||
} else if (!hardpointSlot) {
|
} else if (!hardpointSlot) {
|
||||||
// No module
|
// No module
|
||||||
} else {
|
} else {
|
||||||
const hardpoint = _moduleFromFdName(hardpointSlot.Item)
|
hardpoint = _moduleFromFdName(hardpointSlot.Item)
|
||||||
ship.use(ship.hardpoints[hardpointArrayNum], hardpoint, true)
|
ship.use(ship.hardpoints[hardpointArrayNum], hardpoint, true)
|
||||||
ship.hardpoints[hardpointArrayNum].enabled = hardpointSlot.On
|
ship.hardpoints[hardpointArrayNum].enabled = hardpointSlot.On
|
||||||
ship.hardpoints[hardpointArrayNum].priority = hardpointSlot.Priority
|
ship.hardpoints[hardpointArrayNum].priority = hardpointSlot.Priority
|
||||||
_addModifications(hardpoint, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
opts.push({coriolisMod: hardpoint, json: hardpointSlot});
|
||||||
|
}
|
||||||
|
hardpointArrayNum++
|
||||||
}
|
}
|
||||||
hardpointArrayNum++
|
|
||||||
}
|
}
|
||||||
}
|
if (module.Slot.toLowerCase().search(/slot\d/) !== -1) {
|
||||||
if (module.Slot.search(/Slot\d/) !== -1) {
|
let internalSlotNum = 1
|
||||||
let internalSlotNum = 1
|
let militarySlotNum = 1
|
||||||
let militarySlotNum = 1
|
for (let i in shipTemplate.slots.internal) {
|
||||||
for (let i in shipTemplate.slots.internal) {
|
const isMilitary = isNaN(shipTemplate.slots.internal[i]) ? shipTemplate.slots.internal[i].name = 'military' : false
|
||||||
const isMilitary = isNaN(shipTemplate.slots.internal[i]) ? shipTemplate.slots.internal[i].name = 'Military' : false
|
|
||||||
|
|
||||||
// The internal slot might be a standard or a military slot. Military slots have a different naming system
|
// The internal slot might be a standard or a military slot. Military slots have a different naming system
|
||||||
let internalSlot = null
|
let internalSlot = null
|
||||||
if (isMilitary) {
|
if (isMilitary) {
|
||||||
const internalName = 'Military0' + militarySlotNum
|
const internalName = 'Military0' + militarySlotNum
|
||||||
internalSlot = json.Modules.find(elem => elem.Slot === internalName)
|
internalSlot = json.Modules.find(elem => elem.Slot.toLowerCase() === internalName.toLowerCase())
|
||||||
militarySlotNum++
|
militarySlotNum++
|
||||||
} else {
|
} else {
|
||||||
// Slot numbers are not contiguous so handle skips.
|
// Slot numbers are not contiguous so handle skips.
|
||||||
while (internalSlot === null && internalSlotNum < 99) {
|
while (internalSlot === null && internalSlotNum < 99) {
|
||||||
// Slot sizes have no relationship to the actual size, either, so check all possibilities
|
// Slot sizes have no relationship to the actual size, either, so check all possibilities
|
||||||
for (let slotsize = 0; slotsize < 9; slotsize++) {
|
for (let slotsize = 0; slotsize < 9; slotsize++) {
|
||||||
const internalName = 'Slot' + (internalSlotNum <= 9 ? '0' : '') + internalSlotNum + '_Size' + slotsize
|
const internalName = 'Slot' + (internalSlotNum <= 9 ? '0' : '') + internalSlotNum + '_Size' + slotsize
|
||||||
if (json.Modules.find(elem => elem.Slot === internalName)) {
|
if (json.Modules.find(elem => elem.Slot.toLowerCase() === internalName.toLowerCase())) {
|
||||||
internalSlot = json.Modules.find(elem => elem.Slot === internalName)
|
internalSlot = json.Modules.find(elem => elem.Slot.toLowerCase() === internalName.toLowerCase());
|
||||||
break
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
internalSlotNum++
|
||||||
}
|
}
|
||||||
internalSlotNum++
|
}
|
||||||
|
|
||||||
|
if (!internalSlot) {
|
||||||
|
// This can happen with old imports that don't contain new slots
|
||||||
|
} else if (!internalSlot) {
|
||||||
|
// No module
|
||||||
|
} else {
|
||||||
|
const internalJson = internalSlot
|
||||||
|
const internal = _moduleFromFdName(internalJson.Item)
|
||||||
|
ship.use(ship.internal[i], internal, true)
|
||||||
|
ship.internal[i].enabled = internalJson.On === true
|
||||||
|
ship.internal[i].priority = internalJson.Priority
|
||||||
|
opts.push({coriolisMod: internal, json: internalSlot});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!internalSlot) {
|
|
||||||
// This can happen with old imports that don't contain new slots
|
|
||||||
} else if (!internalSlot) {
|
|
||||||
// No module
|
|
||||||
} else {
|
|
||||||
const internalJson = internalSlot
|
|
||||||
const internal = _moduleFromFdName(internalJson.Item)
|
|
||||||
ship.use(ship.internal[i], internal, true)
|
|
||||||
ship.internal[i].enabled = internalJson.On === true
|
|
||||||
ship.internal[i].priority = internalJson.Priority
|
|
||||||
_addModifications(internal, module.Engineering.Modifiers, module.Engineering.BlueprintName, module.Engineering.Level)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const i of opts) {
|
||||||
|
if (i.json.Engineering) _addModifications(i.coriolisMod, i.json.Engineering.Modifiers, i.json.Engineering.BlueprintName, i.json.Engineering.Level, i.json.Engineering.ExperimentalEffect)
|
||||||
}
|
}
|
||||||
// We don't have any information on it so guess it's priority 5 and disabled
|
// We don't have any information on it so guess it's priority 5 and disabled
|
||||||
if (!ship.cargoHatch) {
|
if (!ship.cargoHatch) {
|
||||||
@@ -245,33 +251,36 @@ function _addModifications (module, modifiers, blueprint, grade, specialModifica
|
|||||||
if (!modifiers) return
|
if (!modifiers) return
|
||||||
let special
|
let special
|
||||||
if (specialModifications) {
|
if (specialModifications) {
|
||||||
special = Modifications.specials[Object.keys(specialModifications)[0]]
|
special = Modifications.specials[specialModifications]
|
||||||
}
|
}
|
||||||
for (const i in modifiers) {
|
for (const i in modifiers) {
|
||||||
// Some special modifications
|
// Some special modifications
|
||||||
// Look up the modifiers to find what we need to do
|
// Look up the modifiers to find what we need to do
|
||||||
const findMod = val => Object.keys(Modifications.modifierActions).find(elem => elem.toString().toLowerCase().search(val.toString().toLowerCase().replace(/(OutfittingFieldType_|persecond)/igm, '')) >= 0)
|
const findMod = val => Object.keys(Modifications.modifierActions).find(elem => elem.toString().toLowerCase().search(val.toString().toLowerCase().replace(/(OutfittingFieldType_|persecond)/igm, '')) >= 0)
|
||||||
const modifierActions = Modifications.modifierActions[findMod(modifiers[i].Label)]
|
const modifierActions = Modifications.modifierActions[findMod(modifiers[i].Label)]
|
||||||
console.log(`${modifiers[i].Label}: ${findMod(modifiers[i].Label)}`)
|
|
||||||
//TODO: Figure out how to scale this value.
|
//TODO: Figure out how to scale this value.
|
||||||
if (!!modifiers[i].LessIsGood) {
|
if (!!modifiers[i].LessIsGood) {
|
||||||
|
|
||||||
}
|
}
|
||||||
let value = modifiers[i].Value / modifiers[i].OriginalValue * 100 - 100;
|
let value = (modifiers[i].Value / modifiers[i].OriginalValue * 100 - 100) * 100;
|
||||||
|
if (value === Infinity) {
|
||||||
|
value = modifiers[i].Value * 100;
|
||||||
|
}
|
||||||
|
if (modifiers[i].Label.search('Resistance') >= 0) {
|
||||||
|
value = (modifiers[i].Value * 100) - (modifiers[i].OriginalValue * 100)
|
||||||
|
}
|
||||||
// Carry out the required changes
|
// Carry out the required changes
|
||||||
for (const action in modifierActions) {
|
for (const action in modifierActions) {
|
||||||
if (isNaN(modifierActions[action])) {
|
if (isNaN(modifierActions[action])) {
|
||||||
module.setModValue(action, modifierActions[action])
|
module.setModValue(action, modifierActions[action])
|
||||||
} else {
|
} else {
|
||||||
const actionValue = modifierActions[action] * value
|
module.setModValue(action, value)
|
||||||
module.setModValue(action, value * 100)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the blueprint definition, grade and special
|
// Add the blueprint definition, grade and special
|
||||||
if (blueprint) {
|
if (blueprint) {
|
||||||
console.log(blueprint);
|
|
||||||
module.blueprint = getBlueprint(blueprint, module)
|
module.blueprint = getBlueprint(blueprint, module)
|
||||||
if (grade) {
|
if (grade) {
|
||||||
module.blueprint.grade = Number(grade)
|
module.blueprint.grade = Number(grade)
|
||||||
|
|||||||
@@ -55,10 +55,12 @@
|
|||||||
<!-- End Piwik Code -->
|
<!-- End Piwik Code -->
|
||||||
|
|
||||||
<!-- Bugsnag -->
|
<!-- Bugsnag -->
|
||||||
<script
|
<script src="//d2wy8f7a9ursnm.cloudfront.net/v4/bugsnag.min.js"></script>
|
||||||
src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-3.min.js"
|
<script src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-plugins/v1/bugsnag-react.min.js"></script>
|
||||||
data-apikey="ba9fae819372850fb660755341fa6ef5"></script>
|
<script>
|
||||||
|
window.bugsnagClient = bugsnag('ba9fae819372850fb660755341fa6ef5', {appVersion: window.CORIOLIS_VERSION || undefined})
|
||||||
|
window.Bugsnag = window.bugsnagClient
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body style="background-color:#000;">
|
<body style="background-color:#000;">
|
||||||
<section id="coriolis"></section>
|
<section id="coriolis"></section>
|
||||||
|
|||||||
@@ -31,6 +31,50 @@ button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button-inline-menu {
|
||||||
|
white-space: nowrap;
|
||||||
|
line-height: 1.5em;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
border-top: 1px solid @primary-disabled;
|
||||||
|
border-bottom: 1px solid @primary-disabled;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
background: @primary-bg;
|
||||||
|
|
||||||
|
&.warning {
|
||||||
|
border-color: @warning-disabled;
|
||||||
|
color: @warning-disabled;
|
||||||
|
stroke: @warning-disabled;
|
||||||
|
|
||||||
|
.no-touch &:hover {
|
||||||
|
border-color: @warning;
|
||||||
|
color: @warning;
|
||||||
|
stroke: @warning;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled, &.disabled:hover {
|
||||||
|
cursor: not-allowed;
|
||||||
|
border-color: @disabled;
|
||||||
|
color: @disabled;
|
||||||
|
stroke: @disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
border-color: @secondary;
|
||||||
|
color: @secondary;
|
||||||
|
stroke: @secondary;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: @primary;
|
||||||
|
color: @primary;
|
||||||
|
stroke: @primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.button-lbl {
|
.button-lbl {
|
||||||
margin-left: 0.5em;
|
margin-left: 0.5em;
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,30 @@
|
|||||||
var path = require('path');
|
const path = require('path')
|
||||||
var exec = require('child_process').exec;
|
const exec = require('child_process').exec
|
||||||
var webpack = require('webpack');
|
const webpack = require('webpack')
|
||||||
var pkgJson = require('./package');
|
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||||
var HtmlWebpackPlugin = require("html-webpack-plugin");
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
const WebpackNotifierPlugin = require('webpack-notifier')
|
||||||
var WebpackNotifierPlugin = require('webpack-notifier');
|
const pkgJson = require('./package')
|
||||||
|
|
||||||
function CopyDirPlugin(source, destination) {
|
function CopyDirPlugin(source, destination) {
|
||||||
this.source = source;
|
this.source = source
|
||||||
this.destination = destination;
|
this.destination = destination
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyDirPlugin.prototype.apply = function (compiler) {
|
||||||
|
compiler.plugin('done', () => {
|
||||||
|
console.log(compiler.outputPath, this.destination)
|
||||||
|
exec('cp -r ' + this.source + ' ' + path.join(compiler.outputPath, this.destination))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
CopyDirPlugin.prototype.apply = function(compiler) {
|
|
||||||
compiler.plugin('done', function() {
|
|
||||||
console.log(compiler.outputPath, this.destination);
|
|
||||||
exec('cp -r ' + this.source + ' ' + path.join(compiler.outputPath, this.destination));
|
|
||||||
}.bind(this));
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
devtool: 'eval',
|
devtool: 'source-map',
|
||||||
devServer: {
|
devServer: {
|
||||||
headers: { "Access-Control-Allow-Origin": "*" }
|
headers: {'Access-Control-Allow-Origin': '*'}
|
||||||
},
|
},
|
||||||
entry: {
|
entry: {
|
||||||
app: [ 'webpack-dev-server/client?http://0.0.0.0:3300', 'webpack/hot/only-dev-server', path.join(__dirname, "src/app/index.js") ],
|
app: ['webpack-dev-server/client?http://0.0.0.0:3300', 'webpack/hot/only-dev-server', path.join(__dirname, 'src/app/index.js')],
|
||||||
lib: ['d3', 'react', 'react-dom', 'classnames', 'fbemitter', 'lz-string']
|
lib: ['d3', 'react', 'react-dom', 'classnames', 'fbemitter', 'lz-string']
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
@@ -38,19 +39,19 @@ module.exports = {
|
|||||||
plugins: [
|
plugins: [
|
||||||
new CopyDirPlugin(path.join(__dirname, 'src/.htaccess'), ''),
|
new CopyDirPlugin(path.join(__dirname, 'src/.htaccess'), ''),
|
||||||
new webpack.optimize.CommonsChunkPlugin({
|
new webpack.optimize.CommonsChunkPlugin({
|
||||||
name: 'lib',
|
name: 'lib',
|
||||||
filename: 'lib.js'
|
filename: 'lib.js'
|
||||||
}),
|
}),
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
inject: false,
|
inject: false,
|
||||||
template: path.join(__dirname, "src/index.ejs"),
|
template: path.join(__dirname, 'src/index.ejs'),
|
||||||
version: pkgJson.version,
|
version: pkgJson.version,
|
||||||
gapiKey: process.env.CORIOLIS_GAPI_KEY || '',
|
gapiKey: process.env.CORIOLIS_GAPI_KEY || ''
|
||||||
}),
|
}),
|
||||||
new ExtractTextPlugin({
|
new ExtractTextPlugin({
|
||||||
filename: 'app.css',
|
filename: 'app.css',
|
||||||
disable: false,
|
disable: false,
|
||||||
allChunks: true
|
allChunks: true
|
||||||
}),
|
}),
|
||||||
new WebpackNotifierPlugin({alwaysNotify: true}),
|
new WebpackNotifierPlugin({alwaysNotify: true}),
|
||||||
new webpack.HotModuleReplacementPlugin(),
|
new webpack.HotModuleReplacementPlugin(),
|
||||||
@@ -58,14 +59,14 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{ test: /\.css$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader'}) },
|
{test: /\.css$/, loader: ExtractTextPlugin.extract({fallback: 'style-loader', use: 'css-loader'})},
|
||||||
{ test: /\.less$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader!less-loader'}) },
|
{test: /\.less$/, loader: ExtractTextPlugin.extract({fallback: 'style-loader', use: 'css-loader!less-loader'})},
|
||||||
{ test: /\.(js|jsx)$/, loaders: [ 'babel-loader' ], include: path.join(__dirname, 'src') },
|
{test: /\.(js|jsx)$/, loaders: ['babel-loader'], include: path.join(__dirname, 'src')},
|
||||||
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
|
{test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'},
|
||||||
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
|
{test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'},
|
||||||
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream' },
|
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'},
|
||||||
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader' },
|
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader'},
|
||||||
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' }
|
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,24 +1,27 @@
|
|||||||
var path = require('path');
|
const path = require('path')
|
||||||
var exec = require('child_process').exec;
|
const exec = require('child_process').exec
|
||||||
var webpack = require('webpack');
|
const webpack = require('webpack')
|
||||||
var pkgJson = require('./package');
|
const HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||||
var HtmlWebpackPlugin = require("html-webpack-plugin");
|
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||||
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
const AppCachePlugin = require('appcache-webpack-plugin')
|
||||||
var AppCachePlugin = require('appcache-webpack-plugin');
|
const {BugsnagSourceMapUploaderPlugin} = require('webpack-bugsnag-plugins')
|
||||||
|
const pkgJson = require('./package')
|
||||||
|
|
||||||
function CopyDirPlugin(source, destination) {
|
function CopyDirPlugin (source, destination) {
|
||||||
this.source = source;
|
this.source = source
|
||||||
this.destination = destination;
|
this.destination = destination
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyDirPlugin.prototype.apply = function (compiler) {
|
||||||
|
compiler.plugin('done', () => {
|
||||||
|
console.log(compiler.outputPath, this.destination)
|
||||||
|
exec('cp -r ' + this.source + ' ' + path.join(compiler.outputPath, this.destination))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
CopyDirPlugin.prototype.apply = function(compiler) {
|
|
||||||
compiler.plugin('done', function() {
|
|
||||||
console.log(compiler.outputPath, this.destination);
|
|
||||||
exec('cp -r ' + this.source + ' ' + path.join(compiler.outputPath, this.destination));
|
|
||||||
}.bind(this));
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
cache: true,
|
cache: true,
|
||||||
|
devtool: 'source-map',
|
||||||
entry: {
|
entry: {
|
||||||
app: ['babel-polyfill', path.resolve(__dirname, 'src/app/index')],
|
app: ['babel-polyfill', path.resolve(__dirname, 'src/app/index')],
|
||||||
lib: ['d3', 'react', 'react-dom', 'classnames', 'fbemitter', 'lz-string']
|
lib: ['d3', 'react', 'react-dom', 'classnames', 'fbemitter', 'lz-string']
|
||||||
@@ -34,34 +37,39 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.optimize.UglifyJsPlugin({
|
new webpack.optimize.UglifyJsPlugin({
|
||||||
'screw-ie8': true
|
'screw-ie8': true,
|
||||||
|
sourceMap: true
|
||||||
}),
|
}),
|
||||||
//new webpack.optimize.CommonsChunkPlugin({
|
//new webpack.optimize.CommonsChunkPlugin({
|
||||||
// name: 'lib',
|
// name: 'lib',
|
||||||
// filename: 'lib.[chunkhash:6].js'
|
// filename: 'lib.[chunkhash:6].js'
|
||||||
//}),
|
//}),
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
inject: false,
|
inject: false,
|
||||||
appCache: 'coriolis.appcache',
|
appCache: 'coriolis.appcache',
|
||||||
minify: {
|
minify: {
|
||||||
collapseBooleanAttributes: true,
|
collapseBooleanAttributes: true,
|
||||||
collapseWhitespace: true,
|
collapseWhitespace: true,
|
||||||
removeAttributeQuotes: true,
|
removeAttributeQuotes: true,
|
||||||
removeComments: true,
|
removeComments: true,
|
||||||
removeEmptyAttributes: true,
|
removeEmptyAttributes: true,
|
||||||
removeRedundantAttributes: true,
|
removeRedundantAttributes: true,
|
||||||
removeScriptTypeAttributes: true,
|
removeScriptTypeAttributes: true,
|
||||||
removeStyleLinkTypeAttributes: true
|
removeStyleLinkTypeAttributes: true
|
||||||
},
|
},
|
||||||
template: path.join(__dirname, "src/index.ejs"),
|
template: path.join(__dirname, 'src/index.ejs'),
|
||||||
uaTracking: process.env.CORIOLIS_UA_TRACKING || '',
|
uaTracking: process.env.CORIOLIS_UA_TRACKING || '',
|
||||||
gapiKey: process.env.CORIOLIS_GAPI_KEY || '',
|
gapiKey: process.env.CORIOLIS_GAPI_KEY || '',
|
||||||
version: pkgJson.version
|
version: pkgJson.version
|
||||||
}),
|
}),
|
||||||
new ExtractTextPlugin({
|
new ExtractTextPlugin({
|
||||||
filename: '[contenthash:6].css',
|
filename: '[contenthash:6].css',
|
||||||
disable: false,
|
disable: false,
|
||||||
allChunks: true
|
allChunks: true
|
||||||
|
}),
|
||||||
|
new BugsnagSourceMapUploaderPlugin({
|
||||||
|
apiKey: 'ba9fae819372850fb660755341fa6ef5',
|
||||||
|
appVersion: pkgJson.version
|
||||||
}),
|
}),
|
||||||
new CopyDirPlugin(path.join(__dirname, 'src/schemas'), 'schemas'),
|
new CopyDirPlugin(path.join(__dirname, 'src/schemas'), 'schemas'),
|
||||||
new CopyDirPlugin(path.join(__dirname, 'src/images/logo/*'), ''),
|
new CopyDirPlugin(path.join(__dirname, 'src/images/logo/*'), ''),
|
||||||
@@ -75,14 +83,14 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{ test: /\.css$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader'}) },
|
{test: /\.css$/, loader: ExtractTextPlugin.extract({fallback: 'style-loader', use: 'css-loader'})},
|
||||||
{ test: /\.less$/, loader: ExtractTextPlugin.extract({ fallback: 'style-loader',use: 'css-loader!less-loader'}) },
|
{test: /\.less$/, loader: ExtractTextPlugin.extract({fallback: 'style-loader', use: 'css-loader!less-loader'})},
|
||||||
{ test: /\.(js|jsx)$/, loader: 'babel-loader?cacheDirectory=true', include: path.join(__dirname, 'src') },
|
{test: /\.(js|jsx)$/, loader: 'babel-loader?cacheDirectory=true', include: path.join(__dirname, 'src')},
|
||||||
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
|
{test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'},
|
||||||
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
|
{test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'},
|
||||||
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream' },
|
{test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'},
|
||||||
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader' },
|
{test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file-loader'},
|
||||||
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml' }
|
{test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user