diff --git a/package-lock.json b/package-lock.json index 9d65a523..250c589a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1883,13 +1883,15 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "optional": true, "requires": { @@ -1899,18 +1901,21 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -1920,42 +1925,49 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { @@ -1964,7 +1976,8 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { "inherits": "2.0.3" @@ -1972,7 +1985,8 @@ }, "boom": { "version": "2.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.16.3" @@ -1980,7 +1994,8 @@ }, "brace-expansion": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { "balanced-match": "0.4.2", @@ -1989,29 +2004,34 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, "optional": true }, "co": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "combined-stream": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -2019,22 +2039,26 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cryptiles": { "version": "2.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.10.1" @@ -2042,7 +2066,8 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, "requires": { @@ -2051,7 +2076,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -2059,7 +2085,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "optional": true, "requires": { @@ -2068,30 +2095,35 @@ }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", + "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { @@ -2100,24 +2132,28 @@ }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, "optional": true }, "form-data": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "optional": true, "requires": { @@ -2128,12 +2164,14 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -2144,7 +2182,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "optional": true, "requires": { @@ -2155,7 +2194,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -2171,7 +2211,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "optional": true, "requires": { @@ -2180,7 +2221,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -2188,7 +2230,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -2201,18 +2244,21 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "har-schema": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "optional": true, "requires": { @@ -2222,13 +2268,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.10.1", @@ -2239,12 +2287,14 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "optional": true, "requires": { @@ -2255,7 +2305,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -2264,18 +2315,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -2283,24 +2337,28 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true, "requires": { @@ -2309,19 +2367,22 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "optional": true, "requires": { @@ -2330,19 +2391,22 @@ }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "optional": true, "requires": { @@ -2354,7 +2418,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -2362,12 +2427,14 @@ }, "mime-db": { "version": "1.27.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { "mime-db": "1.27.0" @@ -2375,7 +2442,8 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -2383,12 +2451,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -2396,13 +2466,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.39", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", + "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", "dev": true, "optional": true, "requires": { @@ -2421,7 +2493,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -2431,7 +2504,8 @@ }, "npmlog": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "dev": true, "optional": true, "requires": { @@ -2443,24 +2517,28 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "oauth-sign": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -2468,19 +2546,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, "optional": true, "requires": { @@ -2490,35 +2571,41 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "performance-now": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "punycode": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "optional": true, "requires": { @@ -2530,7 +2617,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -2538,7 +2626,8 @@ }, "readable-stream": { "version": "2.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -2552,7 +2641,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "optional": true, "requires": { @@ -2582,7 +2672,8 @@ }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { "glob": "7.1.2" @@ -2590,30 +2681,35 @@ }, "safe-buffer": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "semver": { "version": "5.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.16.3" @@ -2621,7 +2717,8 @@ }, "sshpk": { "version": "1.13.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "optional": true, "requires": { @@ -2638,7 +2735,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -2646,7 +2744,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -2656,7 +2755,8 @@ }, "string_decoder": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -2664,13 +2764,15 @@ }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -2678,13 +2780,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { "block-stream": "0.0.9", @@ -2694,7 +2798,8 @@ }, "tar-pack": { "version": "3.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "dev": true, "optional": true, "requires": { @@ -2710,7 +2815,8 @@ }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "optional": true, "requires": { @@ -2719,7 +2825,8 @@ }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "optional": true, "requires": { @@ -2728,30 +2835,35 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", "dev": true, "optional": true }, "verror": { "version": "1.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "optional": true, "requires": { @@ -2760,7 +2872,8 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -2769,7 +2882,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } @@ -3425,6 +3539,16 @@ "sshpk": "1.13.1" } }, + "i18next": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.3.0.tgz", + "integrity": "sha1-aGbRT2rns2KZIfeLwCjQSRTwZUw=" + }, + "i18next-xhr-backend": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/i18next-xhr-backend/-/i18next-xhr-backend-1.5.1.tgz", + "integrity": "sha512-9OLdC/9YxDvTFcgsH5t2BHCODHEotHCa6h7Ly0EUlUC7Y2GS09UeoHOGj3gWKQ3HCqXz8NlH4gOrK3NNc9vPuw==" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", diff --git a/package.json b/package.json index 7d971cf3..f9f1db9f 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,10 @@ }, "author": "The Betaflight open source project.", "license": "GPL-3.0", - "dependencies": {}, + "dependencies": { + "i18next": "^10.3.0", + "i18next-xhr-backend": "^1.5.1" + }, "devDependencies": { "del": "^3.0.0", "gulp": "~4.0.0", diff --git a/src/js/backup_restore.js b/src/js/backup_restore.js index 6fa08a95..8a191d47 100644 --- a/src/js/backup_restore.js +++ b/src/js/backup_restore.js @@ -306,7 +306,7 @@ function configuration_restore(callback) { if (typeof configuration.generatedBy !== 'undefined' && compareVersions(configuration.generatedBy, CONFIGURATOR.backupFileMinVersionAccepted)) { if (!compareVersions(configuration.generatedBy, "1.14.0") && !migrate(configuration)) { - GUI.log(chrome.i18n.getMessage('backupFileUnmigratable')); + GUI.log(i18n.getMessage('backupFileUnmigratable')); return; } @@ -319,7 +319,7 @@ function configuration_restore(callback) { configuration_upload(configuration, callback); } else { - GUI.log(chrome.i18n.getMessage('backupFileIncompatible')); + GUI.log(i18n.getMessage('backupFileIncompatible')); } @@ -341,7 +341,7 @@ function configuration_restore(callback) { function migrate(configuration) { var appliedMigrationsCount = 0; var migratedVersion = configuration.generatedBy; - GUI.log(chrome.i18n.getMessage('configMigrationFrom', [migratedVersion])); + GUI.log(i18n.getMessage('configMigrationFrom', [migratedVersion])); if (!compareVersions(migratedVersion, '0.59.1')) { @@ -350,7 +350,7 @@ function configuration_restore(callback) { configuration.MISC.rssi_aux_channel = undefined; migratedVersion = '0.59.1'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -362,7 +362,7 @@ function configuration_restore(callback) { } migratedVersion = '0.60.1'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -377,7 +377,7 @@ function configuration_restore(callback) { } migratedVersion = '0.61.0'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -408,7 +408,7 @@ function configuration_restore(callback) { } migratedVersion = '0.63.0'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -464,7 +464,7 @@ function configuration_restore(callback) { ports: ports }; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -484,7 +484,7 @@ function configuration_restore(callback) { }; } - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -525,7 +525,7 @@ function configuration_restore(callback) { migratedVersion = '0.66.0'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -543,7 +543,7 @@ function configuration_restore(callback) { configuration.profiles[profileIndex].PID.controller = newPidControllerIndex; } - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -560,7 +560,7 @@ function configuration_restore(callback) { }; } - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -628,7 +628,7 @@ function configuration_restore(callback) { } } - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -639,7 +639,7 @@ function configuration_restore(callback) { } migratedVersion = '1.2.0'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } @@ -655,12 +655,12 @@ function configuration_restore(callback) { migratedVersion = '1.3.1'; - GUI.log(chrome.i18n.getMessage('configMigratedTo', [migratedVersion])); + GUI.log(i18n.getMessage('configMigratedTo', [migratedVersion])); appliedMigrationsCount++; } if (appliedMigrationsCount > 0) { - GUI.log(chrome.i18n.getMessage('configMigrationSuccessful', [appliedMigrationsCount])); + GUI.log(i18n.getMessage('configMigrationSuccessful', [appliedMigrationsCount])); } return true; } @@ -852,7 +852,7 @@ function configuration_restore(callback) { } function reboot() { - GUI.log(chrome.i18n.getMessage('eeprom_saved_ok')); + GUI.log(i18n.getMessage('eeprom_saved_ok')); GUI.tab_switch_cleanup(function() { MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, reinitialize); @@ -860,11 +860,11 @@ function configuration_restore(callback) { } function reinitialize() { - GUI.log(chrome.i18n.getMessage('deviceRebooting')); + GUI.log(i18n.getMessage('deviceRebooting')); GUI.timeout_add('waiting_for_bootup', function waiting_for_bootup() { MSP.send_message(MSPCodes.MSP_STATUS, false, false, function() { - GUI.log(chrome.i18n.getMessage('deviceReady')); + GUI.log(i18n.getMessage('deviceReady')); if (callback) callback(); }); }, 1500); // 1500 ms seems to be just the right amount of delay to prevent data request timeouts diff --git a/src/js/eventPage.js b/src/js/eventPage.js index 09805cb2..58dc0e3f 100755 --- a/src/js/eventPage.js +++ b/src/js/eventPage.js @@ -1,5 +1,7 @@ /* If an id is also specified and a window with a matching id has been shown before, the remembered bounds of the window will be used instead. + + In this JS we cannot use the i18n wrapper used in the rest of the application (it is not available). We must remain with the chrome one. */ 'use strict'; diff --git a/src/js/localization.js b/src/js/localization.js index d472aefa..8d9ddbfb 100644 --- a/src/js/localization.js +++ b/src/js/localization.js @@ -1,12 +1,66 @@ 'use strict'; -function localize() { +/* + * Wrapper around the i18n system + */ + +var i18n = {} + +/** + * Functions that depend on the i18n framework + */ +i18n.init = function(cb) { + + var defaultLocale = window.navigator.userLanguage || window.navigator.language; + + i18next + .use(i18nextXHRBackend) + .init({ + lng: defaultLocale, + getAsync: false, + debug: true, + ns: ['messages'], + defaultNS:['messages'], + fallbackLng: 'en', + backend: { loadPath: '/_locales/{{lng}}/{{ns}}.json' } + }, function(err, t) { + if (err !== undefined) { + console.error('Error loading i18n ' + err); + } else { + console.log('i18n system loaded'); + } + if (cb !== undefined) { + cb(); + } + }); +} + +i18n.getMessage = function(messageID, parameters) { + var translatedString = i18next.t(messageID + '.message'); + + if (parameters !== undefined) { + parameters.forEach(function(element, index) { + translatedString = translatedString.replace('$' + (index + 1), element); + }); + } + + return translatedString; + + +} + +/** + * Helper functions, don't depend of the i18n framework + */ + +i18n.localizePage = function() { + var localized = 0; var translate = function(messageID) { localized++; - return chrome.i18n.getMessage(messageID); + return i18n.getMessage(messageID); }; $('[i18n]:not(.i18n-replaced)').each(function() { @@ -38,4 +92,4 @@ function localize() { }); return localized; -} \ No newline at end of file +} diff --git a/src/js/main.js b/src/js/main.js index 6fb4b0ff..2c3c03d9 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -1,27 +1,23 @@ 'use strict'; -// Open new windows in external browser -try { - var gui = require('nw.gui'); - - //Get the current window - var win = gui.Window.get(); - - //Listen to the new window event - win.on('new-win-policy', function (frame, url, policy) { - gui.Shell.openExternal(url); - policy.ignore(); - }); -} catch (ex) { - console.log("require does not exist, maybe inside chrome"); -} +openNewWindowsInExternalBrowser(); +//Asynchronous configuration to be done. +//When finish the startProcess() function must be called $(document).ready(function () { + i18n.init(function() { + startProcess(); + initializeSerialBackend(); + }); +}); + +//Process to execute to real start the app +function startProcess() { // translate to user-selected language - localize(); + i18n.localizePage(); // alternative - window.navigator.appVersion.match(/Chrome\/([0-9.]*)/)[1]; - GUI.log(chrome.i18n.getMessage('infoVersions',[GUI.operating_system, window.navigator.appVersion.replace(/.*Chrome\/([0-9.]*).*/, "$1"), getManifestVersion()])); + GUI.log(i18n.getMessage('infoVersions',[GUI.operating_system, window.navigator.appVersion.replace(/.*Chrome\/([0-9.]*).*/, "$1"), getManifestVersion()])); $('#logo .version').text(getManifestVersion()); updateStatusBarVersion(); @@ -73,17 +69,17 @@ $(document).ready(function () { var tabName = $(self).text(); if (tabRequiresConnection && !CONFIGURATOR.connectionValid) { - GUI.log(chrome.i18n.getMessage('tabSwitchConnectionRequired')); + GUI.log(i18n.getMessage('tabSwitchConnectionRequired')); return; } if (GUI.connect_lock) { // tab switching disabled while operation is in progress - GUI.log(chrome.i18n.getMessage('tabSwitchWaitForOperation')); + GUI.log(i18n.getMessage('tabSwitchWaitForOperation')); return; } if (GUI.allowedTabs.indexOf(tab) < 0) { - GUI.log(chrome.i18n.getMessage('tabSwitchUpgradeRequired', [tabName])); + GUI.log(i18n.getMessage('tabSwitchUpgradeRequired', [tabName])); return; } @@ -198,7 +194,7 @@ $(document).ready(function () { $('div#options-window').load('./tabs/options.html', function () { // translate to user-selected language - localize(); + i18n.localizePage(); chrome.storage.local.get('permanentExpertMode', function (result) { if (result.permanentExpertMode) { @@ -353,7 +349,7 @@ $(document).ready(function () { state = true; } - $(this).text(state ? chrome.i18n.getMessage('logActionHide') : chrome.i18n.getMessage('logActionShow')); + $(this).text(state ? i18n.getMessage('logActionHide') : i18n.getMessage('logActionShow')); $(this).data('state', state); }); @@ -368,7 +364,7 @@ $(document).ready(function () { } }).change(); }); -}); +} function checkForConfiguratorUpdates() { var releaseChecker = new ReleaseChecker('configurator', 'https://api.github.com/repos/betaflight/betaflight-configurator/releases'); @@ -396,11 +392,11 @@ function notifyOutdatedVersion(releaseData) { }); if (versions.length > 0 && semver.lt(getManifestVersion(), versions[0].tag_name)) { - GUI.log(chrome.i18n.getMessage('configuratorUpdateNotice', [versions[0].tag_name, versions[0].html_url])); + GUI.log(i18n.getMessage('configuratorUpdateNotice', [versions[0].tag_name, versions[0].html_url])); var dialog = $('.dialogConfiguratorUpdate')[0]; - $('.dialogConfiguratorUpdate-content').html(chrome.i18n.getMessage('configuratorUpdateNotice', [versions[0].tag_name, versions[0].html_url])); + $('.dialogConfiguratorUpdate-content').html(i18n.getMessage('configuratorUpdateNotice', [versions[0].tag_name, versions[0].html_url])); $('.dialogConfiguratorUpdate-closebtn').click(function() { dialog.close(); @@ -535,10 +531,10 @@ function generateFilename(prefix, suffix) { if (CONFIG) { if (CONFIG.flightControllerIdentifier) { - filename = CONFIG.flightControllerIdentifier + '_' + filename; + filename = CONFIG.flightControllerIdentifier + '_' + filename; } if(CONFIG.name && CONFIG.name.trim() !== '') { - filename = filename + '_' + CONFIG.name.trim().replace(' ', '_'); + filename = filename + '_' + CONFIG.name.trim().replace(' ', '_'); } } @@ -556,10 +552,10 @@ function getFirmwareVersion(firmwareVersion, firmwareId, hardwareId) { var versionText = ''; if (firmwareVersion) { - versionText += chrome.i18n.getMessage('versionLabelFirmware') + ': ' + firmwareId + ' ' + firmwareVersion; + versionText += i18n.getMessage('versionLabelFirmware') + ': ' + firmwareId + ' ' + firmwareVersion; if (hardwareId) { - versionText += ' (' + chrome.i18n.getMessage('versionLabelTarget') + ': ' + hardwareId + ')'; + versionText += ' (' + i18n.getMessage('versionLabelTarget') + ': ' + hardwareId + ')'; } } @@ -567,7 +563,7 @@ function getFirmwareVersion(firmwareVersion, firmwareId, hardwareId) { } function getConfiguratorVersion() { - return chrome.i18n.getMessage('versionLabelConfigurator') + ': ' + getManifestVersion(); + return i18n.getMessage('versionLabelConfigurator') + ': ' + getManifestVersion(); } function updateTopBarVersion(firmwareVersion, firmwareId, hardwareId) { @@ -604,3 +600,21 @@ function getManifestVersion(manifest) { return version; } + +function openNewWindowsInExternalBrowser() { + // Open new windows in external browser + try { + var gui = require('nw.gui'); + + //Get the current window + var win = gui.Window.get(); + + //Listen to the new window event + win.on('new-win-policy', function (frame, url, policy) { + gui.Shell.openExternal(url); + policy.ignore(); + }); + } catch (ex) { + console.warn("require does not exist, maybe inside chrome"); + } +} \ No newline at end of file diff --git a/src/js/msp/MSPHelper.js b/src/js/msp/MSPHelper.js index 67e73f39..a58b5c06 100644 --- a/src/js/msp/MSPHelper.js +++ b/src/js/msp/MSPHelper.js @@ -101,7 +101,7 @@ MspHelper.prototype.process_data = function(dataHandler) { sensor_status(CONFIG.activeSensors); $('span.i2c-error').text(CONFIG.i2cError); $('span.cycle-time').text(CONFIG.cycleTime); - $('span.cpu-load').text(chrome.i18n.getMessage('statusbar_cpu_load', [CONFIG.cpuload])); + $('span.cpu-load').text(i18n.getMessage('statusbar_cpu_load', [CONFIG.cpuload])); break; case MSPCodes.MSP_RAW_IMU: @@ -2028,9 +2028,9 @@ MspHelper.prototype.setArmingEnabled = function(doEnable, onCompleteCallback) { MSP.send_message(MSPCodes.MSP_ARMING_DISABLE, mspHelper.crunch(MSPCodes.MSP_ARMING_DISABLE), false, function () { if (doEnable) { - GUI.log(chrome.i18n.getMessage('armingEnabled')); + GUI.log(i18n.getMessage('armingEnabled')); } else { - GUI.log(chrome.i18n.getMessage('armingDisabled')); + GUI.log(i18n.getMessage('armingDisabled')); } if (onCompleteCallback) { diff --git a/src/js/peripherals.js b/src/js/peripherals.js index b093af2b..fd333c8e 100644 --- a/src/js/peripherals.js +++ b/src/js/peripherals.js @@ -17,11 +17,11 @@ function adjustBoxNameIfPeripheralWithModeID(modeId, defaultName) { if (isPeripheralSelected("RUNCAM_DEVICE_CONTROL")) { switch (modeId) { case 32: // BOXCAMERA1 - return chrome.i18n.getMessage('modeCameraWifi'); + return i18n.getMessage('modeCameraWifi'); case 33: // BOXCAMERA2 - return chrome.i18n.getMessage('modeCameraPower'); + return i18n.getMessage('modeCameraPower'); case 34: // BOXCAMERA3 - return chrome.i18n.getMessage('modeCameraChangeMode'); + return i18n.getMessage('modeCameraChangeMode'); default: return defaultName; } diff --git a/src/js/port_handler.js b/src/js/port_handler.js index aa1883e9..45c6f69b 100755 --- a/src/js/port_handler.js +++ b/src/js/port_handler.js @@ -171,7 +171,7 @@ PortHandler.update_port_select = function (ports) { $('div#port-picker #port').append($("", {value: ports[i], text: ports[i], data: {isManual: false}})); } - $('div#port-picker #port').append($("", {value: 'manual', text: chrome.i18n.getMessage('portsSelectManual'), data: {isManual: true}})); + $('div#port-picker #port').append($("", {value: 'manual', text: i18n.getMessage('portsSelectManual'), data: {isManual: true}})); }; PortHandler.port_detected = function(name, code, timeout, ignore_timeout) { diff --git a/src/js/port_usage.js b/src/js/port_usage.js index 548481ed..a1c0fffd 100644 --- a/src/js/port_usage.js +++ b/src/js/port_usage.js @@ -20,11 +20,11 @@ var PortUsage = { this.previous_sent = serial.bytesSent; // update UI - $('span.port_usage_down').text(chrome.i18n.getMessage('statusbar_usage_download', [port_usage_down])); - $('span.port_usage_up').text(chrome.i18n.getMessage('statusbar_usage_upload', [port_usage_up])); + $('span.port_usage_down').text(i18n.getMessage('statusbar_usage_download', [port_usage_down])); + $('span.port_usage_up').text(i18n.getMessage('statusbar_usage_upload', [port_usage_up])); } else { - $('span.port_usage_down').text(chrome.i18n.getMessage('statusbar_usage_download', [0])); - $('span.port_usage_up').text(chrome.i18n.getMessage('statusbar_usage_upload', [0])); + $('span.port_usage_down').text(i18n.getMessage('statusbar_usage_download', [0])); + $('span.port_usage_up').text(i18n.getMessage('statusbar_usage_upload', [0])); } }, reset: function() { diff --git a/src/js/protocols/stm32usbdfu.js b/src/js/protocols/stm32usbdfu.js index 9e59570c..b881f583 100644 --- a/src/js/protocols/stm32usbdfu.js +++ b/src/js/protocols/stm32usbdfu.js @@ -119,16 +119,16 @@ STM32DFU_protocol.prototype.openDevice = function (device) { chrome.usb.openDevice(device, function (handle) { if(self.checkChromeError()) { console.log('Failed to open USB device!'); - GUI.log(chrome.i18n.getMessage('usbDeviceOpenFail')); + GUI.log(i18n.getMessage('usbDeviceOpenFail')); if(GUI.operating_system === 'Linux') { - GUI.log(chrome.i18n.getMessage('usbDeviceUdevNotice')); + GUI.log(i18n.getMessage('usbDeviceUdevNotice')); } return; } self.handle = handle; - GUI.log(chrome.i18n.getMessage('usbDeviceOpened', handle.handle.toString())); + GUI.log(i18n.getMessage('usbDeviceOpened', handle.handle.toString())); console.log('Device opened with Handle ID: ' + handle.handle); self.claimInterface(0); }); @@ -140,10 +140,10 @@ STM32DFU_protocol.prototype.closeDevice = function () { chrome.usb.closeDevice(this.handle, function closed() { if(self.checkChromeError()) { console.log('Failed to close USB device!'); - GUI.log(chrome.i18n.getMessage('usbDeviceCloseFail')); + GUI.log(i18n.getMessage('usbDeviceCloseFail')); } - GUI.log(chrome.i18n.getMessage('usbDeviceClosed')); + GUI.log(i18n.getMessage('usbDeviceClosed')); console.log('Device closed with Handle ID: ' + self.handle.handle); self.handle = null; @@ -518,10 +518,10 @@ STM32DFU_protocol.prototype.upload_procedure = function (step) { self.flash_layout = chipInfo.internal_flash; self.available_flash_size = self.flash_layout.total_size - (self.hex.start_linear_address - self.flash_layout.start_address); - GUI.log(chrome.i18n.getMessage('dfu_device_flash_info', (self.flash_layout.total_size / 1024).toString())); + GUI.log(i18n.getMessage('dfu_device_flash_info', (self.flash_layout.total_size / 1024).toString())); if (self.hex.bytes_total > self.available_flash_size) { - GUI.log(chrome.i18n.getMessage('dfu_error_image_size', + GUI.log(i18n.getMessage('dfu_error_image_size', [(self.hex.bytes_total / 1024.0).toFixed(1), (self.available_flash_size / 1024.0).toFixed(1)])); self.upload_procedure(99); @@ -724,7 +724,7 @@ STM32DFU_protocol.prototype.upload_procedure = function (step) { if(page == erase_pages.length) { console.log("Erase: complete"); - GUI.log(chrome.i18n.getMessage('dfu_erased_kilobytes', (total_erased / 1024).toString())); + GUI.log(i18n.getMessage('dfu_erased_kilobytes', (total_erased / 1024).toString())); self.upload_procedure(4); } else diff --git a/src/js/release_checker.js b/src/js/release_checker.js index 4c6e5ada..21af9eec 100644 --- a/src/js/release_checker.js +++ b/src/js/release_checker.js @@ -19,7 +19,7 @@ ReleaseChecker.prototype.loadReleaseData = function (processFunction) { var cachedReleaseLastUpdate = result[self._releaseLastUpdateTag]; if (!cacheReleaseData || !cachedReleaseLastUpdate || releaseDataTimestamp - cachedReleaseLastUpdate > 3600 * 1000) { $.get(self._releaseUrl, function (releaseData) { - GUI.log(chrome.i18n.getMessage('releaseCheckLoaded',[self._releaseName])); + GUI.log(i18n.getMessage('releaseCheckLoaded',[self._releaseName])); var data = {}; data[self._releaseDataTag] = releaseData @@ -32,13 +32,13 @@ ReleaseChecker.prototype.loadReleaseData = function (processFunction) { if (data['responseJSON']) { message = data['responseJSON'].message; } - GUI.log(chrome.i18n.getMessage('releaseCheckFailed',[self._releaseName,message])); + GUI.log(i18n.getMessage('releaseCheckFailed',[self._releaseName,message])); self._processReleaseData(cacheReleaseData, processFunction); }); } else { if (cacheReleaseData) { - GUI.log(chrome.i18n.getMessage('releaseCheckCached',[self._releaseName])); + GUI.log(i18n.getMessage('releaseCheckCached',[self._releaseName])); } self._processReleaseData(cacheReleaseData, processFunction); @@ -51,7 +51,7 @@ ReleaseChecker.prototype._processReleaseData = function (releaseData, processFun if (releaseData) { processFunction(releaseData); } else { - GUI.log(chrome.i18n.getMessage('releaseCheckNoInfo',[self._releaseName])); + GUI.log(i18n.getMessage('releaseCheckNoInfo',[self._releaseName])); processFunction(); } diff --git a/src/js/serial.js b/src/js/serial.js index 6921b367..9cc6eedf 100644 --- a/src/js/serial.js +++ b/src/js/serial.js @@ -66,7 +66,7 @@ var serial = { self.failed = 0; } else { console.log('SERIAL: Connection did not recover from last onReceiveError, disconnecting'); - GUI.log(chrome.i18n.getMessage('serialUnrecoverable')); + GUI.log(i18n.getMessage('serialUnrecoverable')); if (GUI.connected_to || GUI.connecting_to) { $('a.connect').click(); @@ -96,7 +96,7 @@ var serial = { if (info.paused) { // assume unrecoverable, disconnect console.log('SERIAL: Connection did not recover from ' + self.error + ' condition, disconnecting'); - GUI.log(chrome.i18n.getMessage('serialUnrecoverable')); + GUI.log(i18n.getMessage('serialUnrecoverable')); if (GUI.connected_to || GUI.connecting_to) { $('a.connect').click(); diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js index 0c64506a..0afbea69 100755 --- a/src/js/serial_backend.js +++ b/src/js/serial_backend.js @@ -1,7 +1,7 @@ 'use strict'; var mspHelper; -$(document).ready(function () { +function initializeSerialBackend() { GUI.updateManualPortVisibility = function(){ var selected_port = $('div#port-picker #port option:selected'); @@ -48,7 +48,7 @@ $(document).ready(function () { $('#port-override').val() : String($('div#port-picker #port').val()); if (selected_port === 'DFU') { - GUI.log(chrome.i18n.getMessage('dfu_connect_message')); + GUI.log(i18n.getMessage('dfu_connect_message')); } else if (selected_port != '0') { if (!clicks) { @@ -57,7 +57,7 @@ $(document).ready(function () { // lock port select & baud while we are connecting / connected $('div#port-picker #port, div#port-picker #baud, div#port-picker #delay').prop('disabled', true); - $('div.connect_controls a.connect_state').text(chrome.i18n.getMessage('connecting')); + $('div.connect_controls a.connect_state').text(i18n.getMessage('connecting')); serial.connect(selected_port, {bitrate: selected_baud}, onOpen); @@ -85,7 +85,7 @@ $(document).ready(function () { GUI.auto_connect = true; $('input.auto_connect').prop('checked', true); - $('input.auto_connect, span.auto_connect').prop('title', chrome.i18n.getMessage('autoConnectEnabled')); + $('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectEnabled')); $('select#baud').val(115200).prop('disabled', true); } else { @@ -93,7 +93,7 @@ $(document).ready(function () { GUI.auto_connect = false; $('input.auto_connect').prop('checked', false); - $('input.auto_connect, span.auto_connect').prop('title', chrome.i18n.getMessage('autoConnectDisabled')); + $('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectDisabled')); } // bind UI hook to auto-connect checkbos @@ -102,11 +102,11 @@ $(document).ready(function () { // update title/tooltip if (GUI.auto_connect) { - $('input.auto_connect, span.auto_connect').prop('title', chrome.i18n.getMessage('autoConnectEnabled')); + $('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectEnabled')); $('select#baud').val(115200).prop('disabled', true); } else { - $('input.auto_connect, span.auto_connect').prop('title', chrome.i18n.getMessage('autoConnectDisabled')); + $('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectDisabled')); if (!GUI.connected_to && !GUI.connecting_to) $('select#baud').prop('disabled', false); } @@ -117,7 +117,7 @@ $(document).ready(function () { PortHandler.initialize(); PortUsage.initialize(); -}); +} function finishClose(finishedCallback) { var wasConnected = CONFIGURATOR.connectionValid; @@ -141,7 +141,7 @@ function finishClose(finishedCallback) { // reset connect / disconnect button $('div.connect_controls a.connect').removeClass('active'); - $('div.connect_controls a.connect_state').text(chrome.i18n.getMessage('connect')); + $('div.connect_controls a.connect_state').text(i18n.getMessage('connect')); // reset active sensor indicators sensor_status(0); @@ -165,7 +165,7 @@ function onOpen(openInfo) { // reset connecting_to GUI.connecting_to = false; - GUI.log(chrome.i18n.getMessage('serialPortOpened', [openInfo.connectionId])); + GUI.log(i18n.getMessage('serialPortOpened', [openInfo.connectionId])); // save selected port with chrome.storage if the port differs chrome.storage.local.get('last_used_port', function (result) { @@ -185,7 +185,7 @@ function onOpen(openInfo) { // disconnect after 10 seconds with error if we don't get IDENT data GUI.timeout_add('connecting', function () { if (!CONFIGURATOR.connectionValid) { - GUI.log(chrome.i18n.getMessage('noConfigurationReceived')); + GUI.log(i18n.getMessage('noConfigurationReceived')); $('div.connect_controls a.connect').click(); // disconnect } @@ -198,7 +198,7 @@ function onOpen(openInfo) { // request configuration data MSP.send_message(MSPCodes.MSP_API_VERSION, false, false, function () { - GUI.log(chrome.i18n.getMessage('apiVersionReceived', [CONFIG.apiVersion])); + GUI.log(i18n.getMessage('apiVersionReceived', [CONFIG.apiVersion])); if (semver.gte(CONFIG.apiVersion, CONFIGURATOR.apiVersionAccepted)) { @@ -206,26 +206,26 @@ function onOpen(openInfo) { if (CONFIG.flightControllerIdentifier === 'BTFL') { MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () { - GUI.log(chrome.i18n.getMessage('fcInfoReceived', [CONFIG.flightControllerIdentifier, CONFIG.flightControllerVersion])); + GUI.log(i18n.getMessage('fcInfoReceived', [CONFIG.flightControllerIdentifier, CONFIG.flightControllerVersion])); updateStatusBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier); updateTopBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier); MSP.send_message(MSPCodes.MSP_BUILD_INFO, false, false, function () { - GUI.log(chrome.i18n.getMessage('buildInfoReceived', [CONFIG.buildInfo])); + GUI.log(i18n.getMessage('buildInfoReceived', [CONFIG.buildInfo])); MSP.send_message(MSPCodes.MSP_BOARD_INFO, false, false, function () { - GUI.log(chrome.i18n.getMessage('boardInfoReceived', [CONFIG.boardIdentifier, CONFIG.boardVersion])); + GUI.log(i18n.getMessage('boardInfoReceived', [CONFIG.boardIdentifier, CONFIG.boardVersion])); updateStatusBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, CONFIG.boardIdentifier); updateTopBarVersion(CONFIG.flightControllerVersion, CONFIG.flightControllerIdentifier, CONFIG.boardIdentifier); MSP.send_message(MSPCodes.MSP_UID, false, false, function () { - GUI.log(chrome.i18n.getMessage('uniqueDeviceIdReceived', [CONFIG.uid[0].toString(16) + CONFIG.uid[1].toString(16) + CONFIG.uid[2].toString(16)])); + GUI.log(i18n.getMessage('uniqueDeviceIdReceived', [CONFIG.uid[0].toString(16) + CONFIG.uid[1].toString(16) + CONFIG.uid[2].toString(16)])); if (semver.gte(CONFIG.apiVersion, "1.20.0")) { MSP.send_message(MSPCodes.MSP_NAME, false, false, function () { - GUI.log(chrome.i18n.getMessage('craftNameReceived', [CONFIG.name])); + GUI.log(i18n.getMessage('craftNameReceived', [CONFIG.name])); CONFIG.arming_disabled = false; mspHelper.setArmingEnabled(false, finishOpen); @@ -240,7 +240,7 @@ function onOpen(openInfo) { } else { var dialog = $('.dialogConnectWarning')[0]; - $('.dialogConnectWarning-content').html(chrome.i18n.getMessage('firmwareTypeNotSupported')); + $('.dialogConnectWarning-content').html(i18n.getMessage('firmwareTypeNotSupported')); $('.dialogConnectWarning-closebtn').click(function() { dialog.close(); @@ -254,7 +254,7 @@ function onOpen(openInfo) { } else { var dialog = $('.dialogConnectWarning')[0]; - $('.dialogConnectWarning-content').html(chrome.i18n.getMessage('firmwareVersionNotSupported', [CONFIGURATOR.apiVersionAccepted])); + $('.dialogConnectWarning-content').html(i18n.getMessage('firmwareVersionNotSupported', [CONFIGURATOR.apiVersionAccepted])); $('.dialogConnectWarning-closebtn').click(function() { dialog.close(); @@ -267,9 +267,9 @@ function onOpen(openInfo) { }); } else { console.log('Failed to open serial port'); - GUI.log(chrome.i18n.getMessage('serialPortOpenFail')); + GUI.log(i18n.getMessage('serialPortOpenFail')); - $('div#connectbutton a.connect_state').text(chrome.i18n.getMessage('connect')); + $('div#connectbutton a.connect_state').text(i18n.getMessage('connect')); $('div#connectbutton a.connect').removeClass('active'); // unlock port select & baud @@ -301,7 +301,7 @@ function connectCli() { function onConnect() { GUI.timeout_remove('connecting'); // kill connecting timer - $('div#connectbutton a.connect_state').text(chrome.i18n.getMessage('disconnect')).addClass('active'); + $('div#connectbutton a.connect_state').text(i18n.getMessage('disconnect')).addClass('active'); $('div#connectbutton a.connect').addClass('active'); $('#tabs ul.mode-disconnected').hide(); @@ -359,9 +359,9 @@ function onConnect() { function onClosed(result) { if (result) { // All went as expected - GUI.log(chrome.i18n.getMessage('serialPortClosedOk')); + GUI.log(i18n.getMessage('serialPortClosedOk')); } else { // Something went wrong - GUI.log(chrome.i18n.getMessage('serialPortClosedFail')); + GUI.log(i18n.getMessage('serialPortClosedFail')); } $('#tabs ul.mode-connected').hide(); @@ -449,7 +449,7 @@ function sensor_status(sensors_detected) { if (have_sensor(sensors_detected, 'gps')) { $('.gps', e_sensor_status).addClass('on'); - $('.gpsicon', e_sensor_status).addClass('active'); + $('.gpsicon', e_sensor_status).addClass('active'); } else { $('.gps', e_sensor_status).removeClass('on'); $('.gpsicon', e_sensor_status).removeClass('active'); diff --git a/src/js/tabs/adjustments.js b/src/js/tabs/adjustments.js index 21e750c0..e5f723d8 100644 --- a/src/js/tabs/adjustments.js +++ b/src/js/tabs/adjustments.js @@ -162,7 +162,7 @@ TABS.adjustments.initialize = function (callback) { } // translate to user-selected language - localize(); + i18n.localizePage(); // UI Hooks $('a.save').click(function () { @@ -215,7 +215,7 @@ TABS.adjustments.initialize = function (callback) { function save_to_eeprom() { MSP.send_message(MSPCodes.MSP_EEPROM_WRITE, false, false, function () { - GUI.log(chrome.i18n.getMessage('adjustmentsEepromSaved')); + GUI.log(i18n.getMessage('adjustmentsEepromSaved')); }); } diff --git a/src/js/tabs/auxiliary.js b/src/js/tabs/auxiliary.js index ca71882d..ce987c5d 100644 --- a/src/js/tabs/auxiliary.js +++ b/src/js/tabs/auxiliary.js @@ -58,7 +58,7 @@ TABS.auxiliary.initialize = function (callback) { //add value to autodetect channel var channelOption = channelOptionTemplate.clone(); - channelOption.text(chrome.i18n.getMessage('auxiliaryAutoChannelSelect')); + channelOption.text(i18n.getMessage('auxiliaryAutoChannelSelect')); channelOption.val(-1); channelList.append(channelOption); @@ -161,7 +161,7 @@ TABS.auxiliary.initialize = function (callback) { }); // translate to user-selected language - localize(); + i18n.localizePage(); // UI Hooks $('a.save').click(function () { @@ -211,7 +211,7 @@ TABS.auxiliary.initialize = function (callback) { function save_to_eeprom() { MSP.send_message(MSPCodes.MSP_EEPROM_WRITE, false, false, function () { - GUI.log(chrome.i18n.getMessage('auxiliaryEepromSaved')); + GUI.log(i18n.getMessage('auxiliaryEepromSaved')); }); } }); diff --git a/src/js/tabs/cli.js b/src/js/tabs/cli.js index b9902c40..9859cb29 100644 --- a/src/js/tabs/cli.js +++ b/src/js/tabs/cli.js @@ -20,7 +20,7 @@ TABS.cli.initialize = function (callback) { $('#content').load("./tabs/cli.html", function () { // translate to user-selected language - localize(); + i18n.localizePage(); CONFIGURATOR.cliActive = true; @@ -203,8 +203,8 @@ TABS.cli.read = function (readInfo) { if (this.currentLine == 'Rebooting') { CONFIGURATOR.cliActive = false; CONFIGURATOR.cliValid = false; - GUI.log(chrome.i18n.getMessage('cliReboot')); - GUI.log(chrome.i18n.getMessage('deviceRebooting')); + GUI.log(i18n.getMessage('cliReboot')); + GUI.log(i18n.getMessage('deviceRebooting')); if (BOARD.find_board_definition(CONFIG.boardIdentifier).vcp) { // VCP-based flight controls may crash old drivers, we catch and reconnect $('a.connect').click(); @@ -215,7 +215,7 @@ TABS.cli.read = function (readInfo) { GUI.timeout_add('waiting_for_bootup', function waiting_for_bootup() { MSP.send_message(MSPCodes.MSP_STATUS, false, false, function() { - GUI.log(chrome.i18n.getMessage('deviceReady')); + GUI.log(i18n.getMessage('deviceReady')); if (!GUI.tab_switch_in_progress) { $('#tabs ul.mode-connected .tab_setup a').click(); } @@ -231,7 +231,7 @@ TABS.cli.read = function (readInfo) { } if (!CONFIGURATOR.cliValid && this.validateText.indexOf('CLI') != -1) { - GUI.log(chrome.i18n.getMessage('cliEnter')); + GUI.log(i18n.getMessage('cliEnter')); CONFIGURATOR.cliValid = true; this.validateText = ""; } diff --git a/src/js/tabs/configuration.js b/src/js/tabs/configuration.js index 3a754676..6ec71847 100644 --- a/src/js/tabs/configuration.js +++ b/src/js/tabs/configuration.js @@ -248,7 +248,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) { } // translate to user-selected language - localize(); + i18n.localizePage(); var alignments = [ 'CW 0°', @@ -1082,7 +1082,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) { } function reboot() { - GUI.log(chrome.i18n.getMessage('configurationEepromSaved')); + GUI.log(i18n.getMessage('configurationEepromSaved')); GUI.tab_switch_cleanup(function() { MSP.send_message(MSPCodes.MSP_SET_REBOOT, false, false, reinitialize); @@ -1090,7 +1090,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) { } function reinitialize() { - GUI.log(chrome.i18n.getMessage('deviceRebooting')); + GUI.log(i18n.getMessage('deviceRebooting')); if (BOARD.find_board_definition(CONFIG.boardIdentifier).vcp) { // VCP-based flight controls may crash old drivers, we catch and reconnect $('a.connect').click(); @@ -1101,7 +1101,7 @@ TABS.configuration.initialize = function (callback, scrollPosition) { GUI.timeout_add('waiting_for_bootup', function waiting_for_bootup() { MSP.send_message(MSPCodes.MSP_STATUS, false, false, function() { - GUI.log(chrome.i18n.getMessage('deviceReady')); + GUI.log(i18n.getMessage('deviceReady')); TABS.configuration.initialize(false, $('#content').scrollTop()); }); },1500); // 1500 ms seems to be just the right amount of delay to prevent data request timeouts diff --git a/src/js/tabs/failsafe.js b/src/js/tabs/failsafe.js index d3aec4c3..6adf8f0d 100644 --- a/src/js/tabs/failsafe.js +++ b/src/js/tabs/failsafe.js @@ -115,10 +115,10 @@ TABS.failsafe.initialize = function (callback, scrollPosition) { // generate full channel list var channelNames = [ - chrome.i18n.getMessage('controlAxisRoll'), - chrome.i18n.getMessage('controlAxisPitch'), - chrome.i18n.getMessage('controlAxisYaw'), - chrome.i18n.getMessage('controlAxisThrottle') + i18n.getMessage('controlAxisRoll'), + i18n.getMessage('controlAxisPitch'), + i18n.getMessage('controlAxisYaw'), + i18n.getMessage('controlAxisThrottle') ], fullChannels_e = $('div.activechannellist'), aux_index = 1, @@ -131,7 +131,7 @@ TABS.failsafe.initialize = function (callback, scrollPosition) {