浏览代码

Merge branch 'lib-update'

n1474335 8 年之前
父节点
当前提交
bd000d2d2c

+ 3 - 0
.eslintrc.json

@@ -52,6 +52,9 @@
         "no-trailing-spaces": "warn",
         "eol-last": "error",
         "func-call-spacing": "error",
+        "key-spacing": ["warn", {
+            "mode": "minimum"
+        }],
         "indent": ["error", 4, {
             "ArrayExpression": "first",
             "SwitchCase": 1

文件差异内容过多而无法显示
+ 490 - 93
package-lock.json


+ 18 - 18
package.json

@@ -31,36 +31,36 @@
   "bugs": "https://github.com/gchq/CyberChef/issues",
   "devDependencies": {
     "babel-core": "^6.24.0",
-    "babel-loader": "^6.4.0",
+    "babel-loader": "^7.1.1",
     "babel-polyfill": "^6.23.0",
-    "babel-preset-env": "^1.2.2",
-    "css-loader": "^0.27.3",
+    "babel-preset-env": "^1.6.0",
+    "css-loader": "^0.28.4",
     "exports-loader": "^0.6.4",
-    "extract-text-webpack-plugin": "^2.1.0",
-    "file-loader": "^0.10.1",
+    "extract-text-webpack-plugin": "^3.0.0",
+    "file-loader": "^0.11.2",
     "grunt": ">=0.4.5",
     "grunt-accessibility": "~5.0.0",
     "grunt-chmod": "~1.1.1",
-    "grunt-contrib-clean": "~1.0.0",
+    "grunt-contrib-clean": "~1.1.0",
     "grunt-contrib-copy": "~1.0.0",
-    "grunt-eslint": "^19.0.0",
-    "grunt-exec": "~1.0.1",
+    "grunt-eslint": "^20.0.0",
+    "grunt-exec": "~2.0.0",
     "grunt-execute": "^0.2.2",
     "grunt-jsdoc": "^2.1.0",
-    "grunt-webpack": "^2.0.1",
-    "html-webpack-plugin": "^2.28.0",
+    "grunt-webpack": "^3.0.2",
+    "html-webpack-plugin": "^2.29.0",
     "imports-loader": "^0.7.1",
     "ink-docstrap": "^1.1.4",
     "jsdoc-babel": "^0.3.0",
     "less": "^2.7.2",
-    "less-loader": "^4.0.3",
+    "less-loader": "^4.0.5",
     "postcss-css-variables": "^0.7.0",
     "postcss-import": "^10.0.0",
     "postcss-loader": "^2.0.5",
-    "style-loader": "^0.15.0",
+    "style-loader": "^0.18.2",
     "url-loader": "^0.5.8",
     "web-resource-inliner": "^4.1.0",
-    "webpack": "^2.2.1"
+    "webpack": "^3.3.0"
   },
   "dependencies": {
     "bootstrap": "^3.3.7",
@@ -68,15 +68,15 @@
     "bootstrap-switch": "^3.3.4",
     "crypto-api": "^0.6.2",
     "crypto-js": "^3.1.9-1",
-    "diff": "^3.2.0",
+    "diff": "^3.3.0",
     "escodegen": "^1.8.1",
     "esmangle": "^1.0.1",
-    "esprima": "^3.1.3",
-    "exif-parser": "^0.1.9",
+    "esprima": "^4.0.0",
+    "exif-parser": "^0.1.12",
     "google-code-prettify": "^1.0.5",
     "jquery": "^3.1.1",
     "jsbn": "^1.1.0",
-    "jsrsasign": "7.1.3",
+    "jsrsasign": "8.0.3",
     "lodash": "^4.17.4",
     "moment": "^2.17.1",
     "moment-timezone": "^0.5.11",
@@ -86,7 +86,7 @@
     "vkbeautify": "^0.99.1",
     "xmldom": "^0.1.27",
     "xpath": "0.0.24",
-    "zlibjs": "^0.2.0"
+    "zlibjs": "^0.3.1"
   },
   "scripts": {
     "build": "grunt prod",

+ 4 - 4
src/core/Recipe.js

@@ -164,10 +164,10 @@ Recipe.prototype.execute = async function(dish, startFrom) {
             if (op.isFlowControl()) {
                 // Package up the current state
                 let state = {
-                    "progress" : i,
-                    "dish"     : dish,
-                    "opList"  : this.opList,
-                    "numJumps" : numJumps
+                    "progress": i,
+                    "dish":     dish,
+                    "opList":   this.opList,
+                    "numJumps": numJumps
                 };
 
                 state = await op.run(state);

+ 3 - 3
src/core/Utils.js

@@ -293,7 +293,7 @@ const Utils = {
      * Utils.escapeRegex("[example]");
      */
     escapeRegex: function(str) {
-        return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
+        return str.replace(/([.*+?^=!:${}()|[\]/\\])/g, "\\$1");
     },
 
 
@@ -592,7 +592,7 @@ const Utils = {
             i = 0;
 
         if (removeNonAlphChars) {
-            const re = new RegExp("[^" + alphabet.replace(/[\[\]\\\-^$]/g, "\\$&") + "]", "g");
+            const re = new RegExp("[^" + alphabet.replace(/[[\]\\\-^$]/g, "\\$&") + "]", "g");
             data = data.replace(re, "");
         }
 
@@ -810,7 +810,7 @@ const Utils = {
             "`": "`"
         };
 
-        return str.replace(/[&<>"'\/`]/g, function (match) {
+        return str.replace(/[&<>"'/`]/g, function (match) {
             return HTML_CHARS[match];
         });
     },

+ 2 - 2
src/core/config/OperationConfig.js

@@ -2292,7 +2292,7 @@ const OperationConfig = {
             }
         ]
     },
-    "Windows Filetime to UNIX Timestamp":{
+    "Windows Filetime to UNIX Timestamp": {
         description: "Converts a Windows Filetime value to a UNIX timestamp.<br><br>A Windows Filetime is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 UTC.<br><br>A UNIX timestamp is a 32-bit value representing the number of seconds since January 1, 1970 UTC (the UNIX epoch).<br><br>This operation also supports UNIX timestamps in milliseconds, microseconds and nanoseconds.",
         run: DateTime.runFromFiletimeToUnix,
         inputType: "string",
@@ -2310,7 +2310,7 @@ const OperationConfig = {
             }
         ]
     },
-    "UNIX Timestamp to Windows Filetime":{
+    "UNIX Timestamp to Windows Filetime": {
         description: "Converts a UNIX timestamp to a Windows Filetime value.<br><br>A Windows Filetime is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 UTC.<br><br>A UNIX timestamp is a 32-bit value representing the number of seconds since January 1, 1970 UTC (the UNIX epoch).<br><br>This operation also supports UNIX timestamps in milliseconds, microseconds and nanoseconds.",
         run: DateTime.runToFiletimeFromUnix,
         inputType: "string",

+ 35 - 35
src/core/operations/Code.js

@@ -228,19 +228,19 @@ const Code = {
         }
 
         code = code
-                // Create newlines after ;
-                .replace(/;/g, ";\n")
-                // Create newlines after { and around }
-                .replace(/{/g, "{\n")
-                .replace(/}/g, "\n}\n")
-                // Remove carriage returns
-                .replace(/\r/g, "")
-                // Remove all indentation
-                .replace(/^\s+/g, "")
-                .replace(/\n\s+/g, "\n")
-                // Remove trailing spaces
-                .replace(/\s*$/g, "")
-                .replace(/\n{/g, "{");
+            // Create newlines after ;
+            .replace(/;/g, ";\n")
+            // Create newlines after { and around }
+            .replace(/{/g, "{\n")
+            .replace(/}/g, "\n}\n")
+            // Remove carriage returns
+            .replace(/\r/g, "")
+            // Remove all indentation
+            .replace(/^\s+/g, "")
+            .replace(/\n\s+/g, "\n")
+            // Remove trailing spaces
+            .replace(/\s*$/g, "")
+            .replace(/\n{/g, "{");
 
         // Indent
         let i = 0,
@@ -265,27 +265,27 @@ const Code = {
         }
 
         code = code
-                // Add strategic spaces
-                .replace(/\s*([!<>=+-/*]?)=\s*/g, " $1= ")
-                .replace(/\s*<([=]?)\s*/g, " <$1 ")
-                .replace(/\s*>([=]?)\s*/g, " >$1 ")
-                .replace(/([^+])\+([^+=])/g, "$1 + $2")
-                .replace(/([^-])-([^-=])/g, "$1 - $2")
-                .replace(/([^*])\*([^*=])/g, "$1 * $2")
-                .replace(/([^/])\/([^/=])/g, "$1 / $2")
-                .replace(/\s*,\s*/g, ", ")
-                .replace(/\s*{/g, " {")
-                .replace(/}\n/g, "}\n\n")
-                // Hacky horribleness
-                .replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim, "$1 ($2)\n    $3")
-                .replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim, "$1 ($2) $3")
-                .replace(/else\s*\n([^{])/gim, "else\n    $1")
-                .replace(/else\s+([^{])/gim, "else $1")
-                // Remove strategic spaces
-                .replace(/\s+;/g, ";")
-                .replace(/\{\s+\}/g, "{}")
-                .replace(/\[\s+\]/g, "[]")
-                .replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi, "} $1");
+            // Add strategic spaces
+            .replace(/\s*([!<>=+-/*]?)=\s*/g, " $1= ")
+            .replace(/\s*<([=]?)\s*/g, " <$1 ")
+            .replace(/\s*>([=]?)\s*/g, " >$1 ")
+            .replace(/([^+])\+([^+=])/g, "$1 + $2")
+            .replace(/([^-])-([^-=])/g, "$1 - $2")
+            .replace(/([^*])\*([^*=])/g, "$1 * $2")
+            .replace(/([^/])\/([^/=])/g, "$1 / $2")
+            .replace(/\s*,\s*/g, ", ")
+            .replace(/\s*{/g, " {")
+            .replace(/}\n/g, "}\n\n")
+            // Hacky horribleness
+            .replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)\s*\n([^{])/gim, "$1 ($2)\n    $3")
+            .replace(/(if|for|while|with|elif|elseif)\s*\(([^\n]*)\)([^{])/gim, "$1 ($2) $3")
+            .replace(/else\s*\n([^{])/gim, "else\n    $1")
+            .replace(/else\s+([^{])/gim, "else $1")
+            // Remove strategic spaces
+            .replace(/\s+;/g, ";")
+            .replace(/\{\s+\}/g, "{}")
+            .replace(/\[\s+\]/g, "[]")
+            .replace(/}\s*(else|catch|except|finally|elif|elseif|else if)/gi, "} $1");
 
         // Replace preserved tokens
         const ptokens = /###preservedToken(\d+)###/g;
@@ -329,7 +329,7 @@ const Code = {
      * @param {Object[]} args
      * @returns {string}
      */
-    runXpath:function(input, args) {
+    runXpath: function(input, args) {
         let query = args[0],
             delimiter = args[1];
 

+ 21 - 21
src/core/operations/Compress.js

@@ -9,12 +9,12 @@ import bzip2 from "exports-loader?bzip2!../lib/bzip2.js";
 const Zlib = {
     RawDeflate: rawdeflate.Zlib.RawDeflate,
     RawInflate: rawinflate.Zlib.RawInflate,
-    Deflate: zlibAndGzip.Zlib.Deflate,
-    Inflate: zlibAndGzip.Zlib.Inflate,
-    Gzip: zlibAndGzip.Zlib.Gzip,
-    Gunzip: zlibAndGzip.Zlib.Gunzip,
-    Zip: zip.Zlib.Zip,
-    Unzip: unzip.Zlib.Unzip,
+    Deflate:    zlibAndGzip.Zlib.Deflate,
+    Inflate:    zlibAndGzip.Zlib.Inflate,
+    Gzip:       zlibAndGzip.Zlib.Gzip,
+    Gunzip:     zlibAndGzip.Zlib.Gunzip,
+    Zip:        zip.Zlib.Zip,
+    Unzip:      unzip.Zlib.Unzip,
 };
 
 
@@ -54,9 +54,9 @@ const Compress = {
      * @default
      */
     RAW_COMPRESSION_TYPE_LOOKUP: {
-        "Fixed Huffman Coding"   : Zlib.RawDeflate.CompressionType.FIXED,
-        "Dynamic Huffman Coding" : Zlib.RawDeflate.CompressionType.DYNAMIC,
-        "None (Store)"           : Zlib.RawDeflate.CompressionType.NONE,
+        "Fixed Huffman Coding":   Zlib.RawDeflate.CompressionType.FIXED,
+        "Dynamic Huffman Coding": Zlib.RawDeflate.CompressionType.DYNAMIC,
+        "None (Store)":           Zlib.RawDeflate.CompressionType.NONE,
     },
 
     /**
@@ -99,8 +99,8 @@ const Compress = {
      * @default
      */
     RAW_BUFFER_TYPE_LOOKUP: {
-        "Adaptive" : Zlib.RawInflate.BufferType.ADAPTIVE,
-        "Block"    : Zlib.RawInflate.BufferType.BLOCK,
+        "Adaptive": Zlib.RawInflate.BufferType.ADAPTIVE,
+        "Block":    Zlib.RawInflate.BufferType.BLOCK,
     },
 
     /**
@@ -150,9 +150,9 @@ const Compress = {
      * @default
      */
     ZLIB_COMPRESSION_TYPE_LOOKUP: {
-        "Fixed Huffman Coding"   : Zlib.Deflate.CompressionType.FIXED,
-        "Dynamic Huffman Coding" : Zlib.Deflate.CompressionType.DYNAMIC,
-        "None (Store)"           : Zlib.Deflate.CompressionType.NONE,
+        "Fixed Huffman Coding":   Zlib.Deflate.CompressionType.FIXED,
+        "Dynamic Huffman Coding": Zlib.Deflate.CompressionType.DYNAMIC,
+        "None (Store)":           Zlib.Deflate.CompressionType.NONE,
     },
 
     /**
@@ -175,8 +175,8 @@ const Compress = {
      * @default
      */
     ZLIB_BUFFER_TYPE_LOOKUP: {
-        "Adaptive" : Zlib.Inflate.BufferType.ADAPTIVE,
-        "Block"    : Zlib.Inflate.BufferType.BLOCK,
+        "Adaptive": Zlib.Inflate.BufferType.ADAPTIVE,
+        "Block":    Zlib.Inflate.BufferType.BLOCK,
     },
 
     /**
@@ -264,17 +264,17 @@ const Compress = {
      * @default
      */
     ZIP_COMPRESSION_METHOD_LOOKUP: {
-        "Deflate"      : Zlib.Zip.CompressionMethod.DEFLATE,
-        "None (Store)" : Zlib.Zip.CompressionMethod.STORE
+        "Deflate":      Zlib.Zip.CompressionMethod.DEFLATE,
+        "None (Store)": Zlib.Zip.CompressionMethod.STORE
     },
     /**
      * @constant
      * @default
      */
     ZIP_OS_LOOKUP: {
-        "MSDOS"     : Zlib.Zip.OperatingSystem.MSDOS,
-        "Unix"      : Zlib.Zip.OperatingSystem.UNIX,
-        "Macintosh" : Zlib.Zip.OperatingSystem.MACINTOSH
+        "MSDOS":     Zlib.Zip.OperatingSystem.MSDOS,
+        "Unix":      Zlib.Zip.OperatingSystem.UNIX,
+        "Macintosh": Zlib.Zip.OperatingSystem.MACINTOSH
     },
 
     /**

+ 190 - 190
src/core/operations/Convert.js

@@ -25,36 +25,36 @@ const Convert = {
      * @default
      */
     DISTANCE_FACTOR: { // Multiples of a metre
-        "Nanometres (nm)"   : 1e-9,
-        "Micrometres (µm)"  : 1e-6,
-        "Millimetres (mm)"  : 1e-3,
-        "Centimetres (cm)"  : 1e-2,
-        "Metres (m)"        : 1,
-        "Kilometers (km)"   : 1e3,
-
-        "Thou (th)"         : 0.0000254,
-        "Inches (in)"       : 0.0254,
-        "Feet (ft)"         : 0.3048,
-        "Yards (yd)"        : 0.9144,
-        "Chains (ch)"       : 20.1168,
-        "Furlongs (fur)"    : 201.168,
-        "Miles (mi)"        : 1609.344,
-        "Leagues (lea)"     : 4828.032,
-
-        "Fathoms (ftm)"     : 1.853184,
-        "Cables"            : 185.3184,
-        "Nautical miles"    : 1853.184,
-
-        "Cars (4m)"         : 4,
-        "Buses (8.4m)"      : 8.4,
+        "Nanometres (nm)":         1e-9,
+        "Micrometres (µm)":        1e-6,
+        "Millimetres (mm)":        1e-3,
+        "Centimetres (cm)":        1e-2,
+        "Metres (m)":              1,
+        "Kilometers (km)":         1e3,
+
+        "Thou (th)":               0.0000254,
+        "Inches (in)":             0.0254,
+        "Feet (ft)":               0.3048,
+        "Yards (yd)":              0.9144,
+        "Chains (ch)":             20.1168,
+        "Furlongs (fur)":          201.168,
+        "Miles (mi)":              1609.344,
+        "Leagues (lea)":           4828.032,
+
+        "Fathoms (ftm)":           1.853184,
+        "Cables":                  185.3184,
+        "Nautical miles":          1853.184,
+
+        "Cars (4m)":               4,
+        "Buses (8.4m)":            8.4,
         "American football fields (91m)": 91,
         "Football pitches (105m)": 105,
 
-        "Earth-to-Moons"    : 380000000,
-        "Earth's equators"  : 40075016.686,
+        "Earth-to-Moons":          380000000,
+        "Earth's equators":        40075016.686,
         "Astronomical units (au)": 149597870700,
-        "Light-years (ly)"  : 9460730472580800,
-        "Parsecs (pc)"      : 3.0856776e16
+        "Light-years (ly)":        9460730472580800,
+        "Parsecs (pc)":            3.0856776e16
     },
 
     /**
@@ -90,52 +90,52 @@ const Convert = {
      * @default
      */
     DATA_FACTOR: { // Multiples of a bit
-        "Bits (b)"        : 1,
-        "Nibbles"         : 4,
-        "Octets"          : 8,
-        "Bytes (B)"       : 8,
+        "Bits (b)":        1,
+        "Nibbles":         4,
+        "Octets":          8,
+        "Bytes (B)":       8,
 
         // Binary bits (2^n)
-        "Kibibits (Kib)"  : 1024,
-        "Mebibits (Mib)"  : 1048576,
-        "Gibibits (Gib)"  : 1073741824,
-        "Tebibits (Tib)"  : 1099511627776,
-        "Pebibits (Pib)"  : 1125899906842624,
-        "Exbibits (Eib)"  : 1152921504606846976,
-        "Zebibits (Zib)"  : 1180591620717411303424,
-        "Yobibits (Yib)"  : 1208925819614629174706176,
+        "Kibibits (Kib)":  1024,
+        "Mebibits (Mib)":  1048576,
+        "Gibibits (Gib)":  1073741824,
+        "Tebibits (Tib)":  1099511627776,
+        "Pebibits (Pib)":  1125899906842624,
+        "Exbibits (Eib)":  1152921504606846976,
+        "Zebibits (Zib)":  1180591620717411303424,
+        "Yobibits (Yib)":  1208925819614629174706176,
 
         // Decimal bits (10^n)
-        "Decabits"        : 10,
-        "Hectobits"       : 100,
-        "Kilobits (Kb)"   : 1e3,
-        "Megabits (Mb)"   : 1e6,
-        "Gigabits (Gb)"   : 1e9,
-        "Terabits (Tb)"   : 1e12,
-        "Petabits (Pb)"   : 1e15,
-        "Exabits (Eb)"    : 1e18,
-        "Zettabits (Zb)"  : 1e21,
-        "Yottabits (Yb)"  : 1e24,
+        "Decabits":        10,
+        "Hectobits":       100,
+        "Kilobits (Kb)":   1e3,
+        "Megabits (Mb)":   1e6,
+        "Gigabits (Gb)":   1e9,
+        "Terabits (Tb)":   1e12,
+        "Petabits (Pb)":   1e15,
+        "Exabits (Eb)":    1e18,
+        "Zettabits (Zb)":  1e21,
+        "Yottabits (Yb)":  1e24,
 
         // Binary bytes (8 x 2^n)
-        "Kibibytes (KiB)" : 8192,
-        "Mebibytes (MiB)" : 8388608,
-        "Gibibytes (GiB)" : 8589934592,
-        "Tebibytes (TiB)" : 8796093022208,
-        "Pebibytes (PiB)" : 9007199254740992,
-        "Exbibytes (EiB)" : 9223372036854775808,
-        "Zebibytes (ZiB)" : 9444732965739290427392,
-        "Yobibytes (YiB)" : 9671406556917033397649408,
+        "Kibibytes (KiB)": 8192,
+        "Mebibytes (MiB)": 8388608,
+        "Gibibytes (GiB)": 8589934592,
+        "Tebibytes (TiB)": 8796093022208,
+        "Pebibytes (PiB)": 9007199254740992,
+        "Exbibytes (EiB)": 9223372036854775808,
+        "Zebibytes (ZiB)": 9444732965739290427392,
+        "Yobibytes (YiB)": 9671406556917033397649408,
 
         // Decimal bytes (8 x 10^n)
-        "Kilobytes (KB)"  : 8e3,
-        "Megabytes (MB)"  : 8e6,
-        "Gigabytes (GB)"  : 8e9,
-        "Terabytes (TB)"  : 8e12,
-        "Petabytes (PB)"  : 8e15,
-        "Exabytes (EB)"   : 8e18,
-        "Zettabytes (ZB)" : 8e21,
-        "Yottabytes (YB)" : 8e24,
+        "Kilobytes (KB)":  8e3,
+        "Megabytes (MB)":  8e6,
+        "Gigabytes (GB)":  8e9,
+        "Terabytes (TB)":  8e12,
+        "Petabytes (PB)":  8e15,
+        "Exabytes (EB)":   8e18,
+        "Zettabytes (ZB)": 8e21,
+        "Yottabytes (YB)": 8e24,
     },
 
     /**
@@ -171,51 +171,51 @@ const Convert = {
      */
     AREA_FACTOR: { // Multiples of a square metre
         // Metric
-        "Square metre (sq m)"       : 1,
-        "Square kilometre (sq km)"  : 1e6,
+        "Square metre (sq m)":      1,
+        "Square kilometre (sq km)": 1e6,
 
-        "Centiare (ca)"             : 1,
-        "Deciare (da)"              : 10,
-        "Are (a)"                   : 100,
-        "Decare (daa)"              : 1e3,
-        "Hectare (ha)"              : 1e4,
+        "Centiare (ca)":            1,
+        "Deciare (da)":             10,
+        "Are (a)":                  100,
+        "Decare (daa)":             1e3,
+        "Hectare (ha)":             1e4,
 
         // Imperial
-        "Square inch (sq in)"       : 0.00064516,
-        "Square foot (sq ft)"       : 0.09290304,
-        "Square yard (sq yd)"       : 0.83612736,
-        "Square mile (sq mi)"       : 2589988.110336,
-        "Perch (sq per)"            : 42.21,
-        "Rood (ro)"                 : 1011,
-        "International acre (ac)"   : 4046.8564224,
+        "Square inch (sq in)":      0.00064516,
+        "Square foot (sq ft)":      0.09290304,
+        "Square yard (sq yd)":      0.83612736,
+        "Square mile (sq mi)":      2589988.110336,
+        "Perch (sq per)":           42.21,
+        "Rood (ro)":                1011,
+        "International acre (ac)":  4046.8564224,
 
         // US customary units
-        "US survey acre (ac)"       : 4046.87261,
-        "US survey square mile (sq mi)" : 2589998.470305239,
-        "US survey township"        : 93239944.9309886,
+        "US survey acre (ac)":      4046.87261,
+        "US survey square mile (sq mi)": 2589998.470305239,
+        "US survey township":       93239944.9309886,
 
         // Nuclear physics
-        "Yoctobarn (yb)"            : 1e-52,
-        "Zeptobarn (zb)"            : 1e-49,
-        "Attobarn (ab)"             : 1e-46,
-        "Femtobarn (fb)"            : 1e-43,
-        "Picobarn (pb)"             : 1e-40,
-        "Nanobarn (nb)"             : 1e-37,
-        "Microbarn (μb)"            : 1e-34,
-        "Millibarn (mb)"            : 1e-31,
-        "Barn (b)"                  : 1e-28,
-        "Kilobarn (kb)"             : 1e-25,
-        "Megabarn (Mb)"             : 1e-22,
-
-        "Planck area"               : 2.6e-70,
-        "Shed"                      : 1e-52,
-        "Outhouse"                  : 1e-34,
+        "Yoctobarn (yb)":           1e-52,
+        "Zeptobarn (zb)":           1e-49,
+        "Attobarn (ab)":            1e-46,
+        "Femtobarn (fb)":           1e-43,
+        "Picobarn (pb)":            1e-40,
+        "Nanobarn (nb)":            1e-37,
+        "Microbarn (μb)":           1e-34,
+        "Millibarn (mb)":           1e-31,
+        "Barn (b)":                 1e-28,
+        "Kilobarn (kb)":            1e-25,
+        "Megabarn (Mb)":            1e-22,
+
+        "Planck area":              2.6e-70,
+        "Shed":                     1e-52,
+        "Outhouse":                 1e-34,
 
         // Comparisons
-        "Washington D.C."           : 176119191.502848,
-        "Isle of Wight"             : 380000000,
-        "Wales"                     : 20779000000,
-        "Texas"                     : 696241000000,
+        "Washington D.C.":          176119191.502848,
+        "Isle of Wight":            380000000,
+        "Wales":                    20779000000,
+        "Texas":                    696241000000,
     },
 
     /**
@@ -252,81 +252,81 @@ const Convert = {
      */
     MASS_FACTOR: { // Multiples of a gram
         // Metric
-        "Yoctogram (yg)"    : 1e-24,
-        "Zeptogram (zg)"    : 1e-21,
-        "Attogram (ag)"     : 1e-18,
-        "Femtogram (fg)"    : 1e-15,
-        "Picogram (pg)"     : 1e-12,
-        "Nanogram (ng)"     : 1e-9,
-        "Microgram (μg)"    : 1e-6,
-        "Milligram (mg)"    : 1e-3,
-        "Centigram (cg)"    : 1e-2,
-        "Decigram (dg)"     : 1e-1,
-        "Gram (g)"          : 1,
-        "Decagram (dag)"    : 10,
-        "Hectogram (hg)"    : 100,
-        "Kilogram (kg)"     : 1000,
-        "Megagram (Mg)"     : 1e6,
-        "Tonne (t)"         : 1e6,
-        "Gigagram (Gg)"     : 1e9,
-        "Teragram (Tg)"     : 1e12,
-        "Petagram (Pg)"     : 1e15,
-        "Exagram (Eg)"      : 1e18,
-        "Zettagram (Zg)"    : 1e21,
-        "Yottagram (Yg)"    : 1e24,
+        "Yoctogram (yg)":     1e-24,
+        "Zeptogram (zg)":     1e-21,
+        "Attogram (ag)":      1e-18,
+        "Femtogram (fg)":     1e-15,
+        "Picogram (pg)":      1e-12,
+        "Nanogram (ng)":      1e-9,
+        "Microgram (μg)":     1e-6,
+        "Milligram (mg)":     1e-3,
+        "Centigram (cg)":     1e-2,
+        "Decigram (dg)":      1e-1,
+        "Gram (g)":           1,
+        "Decagram (dag)":     10,
+        "Hectogram (hg)":     100,
+        "Kilogram (kg)":      1000,
+        "Megagram (Mg)":      1e6,
+        "Tonne (t)":          1e6,
+        "Gigagram (Gg)":      1e9,
+        "Teragram (Tg)":      1e12,
+        "Petagram (Pg)":      1e15,
+        "Exagram (Eg)":       1e18,
+        "Zettagram (Zg)":     1e21,
+        "Yottagram (Yg)":     1e24,
 
         // Imperial Avoirdupois
-        "Grain (gr)"        : 64.79891e-3,
-        "Dram (dr)"         : 1.7718451953125,
-        "Ounce (oz)"        : 28.349523125,
-        "Pound (lb)"        : 453.59237,
-        "Nail"              : 3175.14659,
-        "Stone (st)"        : 6.35029318e3,
-        "Quarter (gr)"      : 12700.58636,
-        "Tod"               : 12700.58636,
-        "US hundredweight (cwt)" : 45.359237e3,
-        "Imperial hundredweight (cwt)" : 50.80234544e3,
-        "US ton (t)"        : 907.18474e3,
-        "Imperial ton (t)"  : 1016.0469088e3,
+        "Grain (gr)":         64.79891e-3,
+        "Dram (dr)":          1.7718451953125,
+        "Ounce (oz)":         28.349523125,
+        "Pound (lb)":         453.59237,
+        "Nail":               3175.14659,
+        "Stone (st)":         6.35029318e3,
+        "Quarter (gr)":       12700.58636,
+        "Tod":                12700.58636,
+        "US hundredweight (cwt)": 45.359237e3,
+        "Imperial hundredweight (cwt)": 50.80234544e3,
+        "US ton (t)":         907.18474e3,
+        "Imperial ton (t)":   1016.0469088e3,
 
         // Imperial Troy
-        "Pennyweight (dwt)" : 1.55517384,
-        "Troy dram (dr t)"  : 3.8879346,
-        "Troy ounce (oz t)" : 31.1034768,
-        "Troy pound (lb t)" : 373.2417216,
-        "Mark"              : 248.8278144,
+        "Pennyweight (dwt)":  1.55517384,
+        "Troy dram (dr t)":   3.8879346,
+        "Troy ounce (oz t)":  31.1034768,
+        "Troy pound (lb t)":  373.2417216,
+        "Mark":               248.8278144,
 
         // Archaic
-        "Wey"               : 76.5e3,
-        "Wool wey"          : 101.7e3,
-        "Suffolk wey"       : 161.5e3,
-        "Wool sack"         : 153000,
-        "Coal sack"         : 50.80234544e3,
-        "Load"              : 918000,
-        "Last"              : 1836000,
-        "Flax or feather last" : 770e3,
-        "Gunpowder last"    : 1090e3,
-        "Picul"             : 60.478982e3,
-        "Rice last"         : 1200e3,
+        "Wey":                76.5e3,
+        "Wool wey":           101.7e3,
+        "Suffolk wey":        161.5e3,
+        "Wool sack":          153000,
+        "Coal sack":          50.80234544e3,
+        "Load":               918000,
+        "Last":               1836000,
+        "Flax or feather last": 770e3,
+        "Gunpowder last":     1090e3,
+        "Picul":              60.478982e3,
+        "Rice last":          1200e3,
 
         // Comparisons
-        "Big Ben (14 tonnes)"                      : 14e6,
-        "Blue whale (180 tonnes)"                  : 180e6,
-        "International Space Station (417 tonnes)" : 417e6,
-        "Space Shuttle (2,041 tonnes)"             : 2041e6,
-        "RMS Titanic (52,000 tonnes)"              : 52000e6,
-        "Great Pyramid of Giza (6,000,000 tonnes)" : 6e12,
-        "Earth's oceans (1.4 yottagrams)"          : 1.4e24,
+        "Big Ben (14 tonnes)": 14e6,
+        "Blue whale (180 tonnes)": 180e6,
+        "International Space Station (417 tonnes)": 417e6,
+        "Space Shuttle (2,041 tonnes)": 2041e6,
+        "RMS Titanic (52,000 tonnes)": 52000e6,
+        "Great Pyramid of Giza (6,000,000 tonnes)": 6e12,
+        "Earth's oceans (1.4 yottagrams)": 1.4e24,
 
         // Astronomical
-        "A teaspoon of neutron star (5,500 million tonnes)" : 5.5e15,
-        "Lunar mass (ML)"                          : 7.342e25,
-        "Earth mass (M⊕)"                          : 5.97219e27,
-        "Jupiter mass (MJ)"                        : 1.8981411476999997e30,
-        "Solar mass (M☉)"                         : 1.98855e33,
-        "Sagittarius A* (7.5 x 10^36 kgs-ish)"     : 7.5e39,
-        "Milky Way galaxy (1.2 x 10^42 kgs)"       : 1.2e45,
-        "The observable universe (1.45 x 10^53 kgs)" : 1.45e56,
+        "A teaspoon of neutron star (5,500 million tonnes)": 5.5e15,
+        "Lunar mass (ML)":    7.342e25,
+        "Earth mass (M⊕)":    5.97219e27,
+        "Jupiter mass (MJ)":  1.8981411476999997e30,
+        "Solar mass (M☉)":    1.98855e33,
+        "Sagittarius A* (7.5 x 10^36 kgs-ish)": 7.5e39,
+        "Milky Way galaxy (1.2 x 10^42 kgs)": 1.2e45,
+        "The observable universe (1.45 x 10^53 kgs)": 1.45e56,
     },
 
     /**
@@ -361,37 +361,37 @@ const Convert = {
      */
     SPEED_FACTOR: { // Multiples of m/s
         // Metric
-        "Metres per second (m/s)"        : 1,
-        "Kilometres per hour (km/h)"     : 0.2778,
+        "Metres per second (m/s)":           1,
+        "Kilometres per hour (km/h)":        0.2778,
 
         // Imperial
-        "Miles per hour (mph)"           : 0.44704,
-        "Knots (kn)"                     : 0.5144,
+        "Miles per hour (mph)":              0.44704,
+        "Knots (kn)":                        0.5144,
 
         // Comparisons
-        "Human hair growth rate"         : 4.8e-9,
-        "Bamboo growth rate"             : 1.4e-5,
-        "World's fastest snail"          : 0.00275,
-        "Usain Bolt's top speed"         : 12.42,
-        "Jet airliner cruising speed"    : 250,
-        "Concorde"                       : 603,
-        "SR-71 Blackbird"                : 981,
-        "Space Shuttle"                  : 1400,
-        "International Space Station"    : 7700,
+        "Human hair growth rate":            4.8e-9,
+        "Bamboo growth rate":                1.4e-5,
+        "World's fastest snail":             0.00275,
+        "Usain Bolt's top speed":            12.42,
+        "Jet airliner cruising speed":       250,
+        "Concorde":                          603,
+        "SR-71 Blackbird":                   981,
+        "Space Shuttle":                     1400,
+        "International Space Station":       7700,
 
         // Scientific
-        "Sound in standard atmosphere"   : 340.3,
-        "Sound in water"                 : 1500,
-        "Lunar escape velocity"          : 2375,
-        "Earth escape velocity"          : 11200,
-        "Earth's solar orbit"            : 29800,
-        "Solar system's Milky Way orbit" : 200000,
-        "Milky Way relative to the cosmic microwave background" : 552000,
-        "Solar escape velocity"          : 617700,
-        "Neutron star escape velocity (0.3c)" : 100000000,
-        "Light in a diamond (0.4136c)"   : 124000000,
-        "Signal in an optical fibre (0.667c)" : 200000000,
-        "Light (c)"                      : 299792458,
+        "Sound in standard atmosphere":      340.3,
+        "Sound in water":                    1500,
+        "Lunar escape velocity":             2375,
+        "Earth escape velocity":             11200,
+        "Earth's solar orbit":               29800,
+        "Solar system's Milky Way orbit":    200000,
+        "Milky Way relative to the cosmic microwave background": 552000,
+        "Solar escape velocity":             617700,
+        "Neutron star escape velocity (0.3c)": 100000000,
+        "Light in a diamond (0.4136c)":      124000000,
+        "Signal in an optical fibre (0.667c)": 200000000,
+        "Light (c)":                         299792458,
     },
 
     /**

+ 512 - 511
src/core/operations/HTML.js

@@ -144,8 +144,9 @@ const HTML = {
         }
 
         if (removeLineBreaks) {
-            input = input.replace(/^\s*\n/, "") // first line
-                         .replace(/(\n\s*){2,}/g, "\n"); // all others
+            input = input
+                .replace(/^\s*\n/, "") // first line
+                .replace(/(\n\s*){2,}/g, "\n"); // all others
         }
 
         return input;
@@ -331,260 +332,260 @@ const HTML = {
      * @constant
      */
     _byteToEntity: {
-        34 : "&quot;",
-        38 : "&amp;",
-        39 : "&apos;",
-        60 : "&lt;",
-        62 : "&gt;",
-        160 : "&nbsp;",
-        161 : "&iexcl;",
-        162 : "&cent;",
-        163 : "&pound;",
-        164 : "&curren;",
-        165 : "&yen;",
-        166 : "&brvbar;",
-        167 : "&sect;",
-        168 : "&uml;",
-        169 : "&copy;",
-        170 : "&ordf;",
-        171 : "&laquo;",
-        172 : "&not;",
-        173 : "&shy;",
-        174 : "&reg;",
-        175 : "&macr;",
-        176 : "&deg;",
-        177 : "&plusmn;",
-        178 : "&sup2;",
-        179 : "&sup3;",
-        180 : "&acute;",
-        181 : "&micro;",
-        182 : "&para;",
-        183 : "&middot;",
-        184 : "&cedil;",
-        185 : "&sup1;",
-        186 : "&ordm;",
-        187 : "&raquo;",
-        188 : "&frac14;",
-        189 : "&frac12;",
-        190 : "&frac34;",
-        191 : "&iquest;",
-        192 : "&Agrave;",
-        193 : "&Aacute;",
-        194 : "&Acirc;",
-        195 : "&Atilde;",
-        196 : "&Auml;",
-        197 : "&Aring;",
-        198 : "&AElig;",
-        199 : "&Ccedil;",
-        200 : "&Egrave;",
-        201 : "&Eacute;",
-        202 : "&Ecirc;",
-        203 : "&Euml;",
-        204 : "&Igrave;",
-        205 : "&Iacute;",
-        206 : "&Icirc;",
-        207 : "&Iuml;",
-        208 : "&ETH;",
-        209 : "&Ntilde;",
-        210 : "&Ograve;",
-        211 : "&Oacute;",
-        212 : "&Ocirc;",
-        213 : "&Otilde;",
-        214 : "&Ouml;",
-        215 : "&times;",
-        216 : "&Oslash;",
-        217 : "&Ugrave;",
-        218 : "&Uacute;",
-        219 : "&Ucirc;",
-        220 : "&Uuml;",
-        221 : "&Yacute;",
-        222 : "&THORN;",
-        223 : "&szlig;",
-        224 : "&agrave;",
-        225 : "&aacute;",
-        226 : "&acirc;",
-        227 : "&atilde;",
-        228 : "&auml;",
-        229 : "&aring;",
-        230 : "&aelig;",
-        231 : "&ccedil;",
-        232 : "&egrave;",
-        233 : "&eacute;",
-        234 : "&ecirc;",
-        235 : "&euml;",
-        236 : "&igrave;",
-        237 : "&iacute;",
-        238 : "&icirc;",
-        239 : "&iuml;",
-        240 : "&eth;",
-        241 : "&ntilde;",
-        242 : "&ograve;",
-        243 : "&oacute;",
-        244 : "&ocirc;",
-        245 : "&otilde;",
-        246 : "&ouml;",
-        247 : "&divide;",
-        248 : "&oslash;",
-        249 : "&ugrave;",
-        250 : "&uacute;",
-        251 : "&ucirc;",
-        252 : "&uuml;",
-        253 : "&yacute;",
-        254 : "&thorn;",
-        255 : "&yuml;",
-        338 : "&OElig;",
-        339 : "&oelig;",
-        352 : "&Scaron;",
-        353 : "&scaron;",
-        376 : "&Yuml;",
-        402 : "&fnof;",
-        710 : "&circ;",
-        732 : "&tilde;",
-        913 : "&Alpha;",
-        914 : "&Beta;",
-        915 : "&Gamma;",
-        916 : "&Delta;",
-        917 : "&Epsilon;",
-        918 : "&Zeta;",
-        919 : "&Eta;",
-        920 : "&Theta;",
-        921 : "&Iota;",
-        922 : "&Kappa;",
-        923 : "&Lambda;",
-        924 : "&Mu;",
-        925 : "&Nu;",
-        926 : "&Xi;",
-        927 : "&Omicron;",
-        928 : "&Pi;",
-        929 : "&Rho;",
-        931 : "&Sigma;",
-        932 : "&Tau;",
-        933 : "&Upsilon;",
-        934 : "&Phi;",
-        935 : "&Chi;",
-        936 : "&Psi;",
-        937 : "&Omega;",
-        945 : "&alpha;",
-        946 : "&beta;",
-        947 : "&gamma;",
-        948 : "&delta;",
-        949 : "&epsilon;",
-        950 : "&zeta;",
-        951 : "&eta;",
-        952 : "&theta;",
-        953 : "&iota;",
-        954 : "&kappa;",
-        955 : "&lambda;",
-        956 : "&mu;",
-        957 : "&nu;",
-        958 : "&xi;",
-        959 : "&omicron;",
-        960 : "&pi;",
-        961 : "&rho;",
-        962 : "&sigmaf;",
-        963 : "&sigma;",
-        964 : "&tau;",
-        965 : "&upsilon;",
-        966 : "&phi;",
-        967 : "&chi;",
-        968 : "&psi;",
-        969 : "&omega;",
-        977 : "&thetasym;",
-        978 : "&upsih;",
-        982 : "&piv;",
-        8194 : "&ensp;",
-        8195 : "&emsp;",
-        8201 : "&thinsp;",
-        8204 : "&zwnj;",
-        8205 : "&zwj;",
-        8206 : "&lrm;",
-        8207 : "&rlm;",
-        8211 : "&ndash;",
-        8212 : "&mdash;",
-        8216 : "&lsquo;",
-        8217 : "&rsquo;",
-        8218 : "&sbquo;",
-        8220 : "&ldquo;",
-        8221 : "&rdquo;",
-        8222 : "&bdquo;",
-        8224 : "&dagger;",
-        8225 : "&Dagger;",
-        8226 : "&bull;",
-        8230 : "&hellip;",
-        8240 : "&permil;",
-        8242 : "&prime;",
-        8243 : "&Prime;",
-        8249 : "&lsaquo;",
-        8250 : "&rsaquo;",
-        8254 : "&oline;",
-        8260 : "&frasl;",
-        8364 : "&euro;",
-        8465 : "&image;",
-        8472 : "&weierp;",
-        8476 : "&real;",
-        8482 : "&trade;",
-        8501 : "&alefsym;",
-        8592 : "&larr;",
-        8593 : "&uarr;",
-        8594 : "&rarr;",
-        8595 : "&darr;",
-        8596 : "&harr;",
-        8629 : "&crarr;",
-        8656 : "&lArr;",
-        8657 : "&uArr;",
-        8658 : "&rArr;",
-        8659 : "&dArr;",
-        8660 : "&hArr;",
-        8704 : "&forall;",
-        8706 : "&part;",
-        8707 : "&exist;",
-        8709 : "&empty;",
-        8711 : "&nabla;",
-        8712 : "&isin;",
-        8713 : "&notin;",
-        8715 : "&ni;",
-        8719 : "&prod;",
-        8721 : "&sum;",
-        8722 : "&minus;",
-        8727 : "&lowast;",
-        8730 : "&radic;",
-        8733 : "&prop;",
-        8734 : "&infin;",
-        8736 : "&ang;",
-        8743 : "&and;",
-        8744 : "&or;",
-        8745 : "&cap;",
-        8746 : "&cup;",
-        8747 : "&int;",
-        8756 : "&there4;",
-        8764 : "&sim;",
-        8773 : "&cong;",
-        8776 : "&asymp;",
-        8800 : "&ne;",
-        8801 : "&equiv;",
-        8804 : "&le;",
-        8805 : "&ge;",
-        8834 : "&sub;",
-        8835 : "&sup;",
-        8836 : "&nsub;",
-        8838 : "&sube;",
-        8839 : "&supe;",
-        8853 : "&oplus;",
-        8855 : "&otimes;",
-        8869 : "&perp;",
-        8901 : "&sdot;",
-        8942 : "&vellip;",
-        8968 : "&lceil;",
-        8969 : "&rceil;",
-        8970 : "&lfloor;",
-        8971 : "&rfloor;",
-        9001 : "&lang;",
-        9002 : "&rang;",
-        9674 : "&loz;",
-        9824 : "&spades;",
-        9827 : "&clubs;",
-        9829 : "&hearts;",
-        9830 : "&diams;",
+        34: "&quot;",
+        38: "&amp;",
+        39: "&apos;",
+        60: "&lt;",
+        62: "&gt;",
+        160: "&nbsp;",
+        161: "&iexcl;",
+        162: "&cent;",
+        163: "&pound;",
+        164: "&curren;",
+        165: "&yen;",
+        166: "&brvbar;",
+        167: "&sect;",
+        168: "&uml;",
+        169: "&copy;",
+        170: "&ordf;",
+        171: "&laquo;",
+        172: "&not;",
+        173: "&shy;",
+        174: "&reg;",
+        175: "&macr;",
+        176: "&deg;",
+        177: "&plusmn;",
+        178: "&sup2;",
+        179: "&sup3;",
+        180: "&acute;",
+        181: "&micro;",
+        182: "&para;",
+        183: "&middot;",
+        184: "&cedil;",
+        185: "&sup1;",
+        186: "&ordm;",
+        187: "&raquo;",
+        188: "&frac14;",
+        189: "&frac12;",
+        190: "&frac34;",
+        191: "&iquest;",
+        192: "&Agrave;",
+        193: "&Aacute;",
+        194: "&Acirc;",
+        195: "&Atilde;",
+        196: "&Auml;",
+        197: "&Aring;",
+        198: "&AElig;",
+        199: "&Ccedil;",
+        200: "&Egrave;",
+        201: "&Eacute;",
+        202: "&Ecirc;",
+        203: "&Euml;",
+        204: "&Igrave;",
+        205: "&Iacute;",
+        206: "&Icirc;",
+        207: "&Iuml;",
+        208: "&ETH;",
+        209: "&Ntilde;",
+        210: "&Ograve;",
+        211: "&Oacute;",
+        212: "&Ocirc;",
+        213: "&Otilde;",
+        214: "&Ouml;",
+        215: "&times;",
+        216: "&Oslash;",
+        217: "&Ugrave;",
+        218: "&Uacute;",
+        219: "&Ucirc;",
+        220: "&Uuml;",
+        221: "&Yacute;",
+        222: "&THORN;",
+        223: "&szlig;",
+        224: "&agrave;",
+        225: "&aacute;",
+        226: "&acirc;",
+        227: "&atilde;",
+        228: "&auml;",
+        229: "&aring;",
+        230: "&aelig;",
+        231: "&ccedil;",
+        232: "&egrave;",
+        233: "&eacute;",
+        234: "&ecirc;",
+        235: "&euml;",
+        236: "&igrave;",
+        237: "&iacute;",
+        238: "&icirc;",
+        239: "&iuml;",
+        240: "&eth;",
+        241: "&ntilde;",
+        242: "&ograve;",
+        243: "&oacute;",
+        244: "&ocirc;",
+        245: "&otilde;",
+        246: "&ouml;",
+        247: "&divide;",
+        248: "&oslash;",
+        249: "&ugrave;",
+        250: "&uacute;",
+        251: "&ucirc;",
+        252: "&uuml;",
+        253: "&yacute;",
+        254: "&thorn;",
+        255: "&yuml;",
+        338: "&OElig;",
+        339: "&oelig;",
+        352: "&Scaron;",
+        353: "&scaron;",
+        376: "&Yuml;",
+        402: "&fnof;",
+        710: "&circ;",
+        732: "&tilde;",
+        913: "&Alpha;",
+        914: "&Beta;",
+        915: "&Gamma;",
+        916: "&Delta;",
+        917: "&Epsilon;",
+        918: "&Zeta;",
+        919: "&Eta;",
+        920: "&Theta;",
+        921: "&Iota;",
+        922: "&Kappa;",
+        923: "&Lambda;",
+        924: "&Mu;",
+        925: "&Nu;",
+        926: "&Xi;",
+        927: "&Omicron;",
+        928: "&Pi;",
+        929: "&Rho;",
+        931: "&Sigma;",
+        932: "&Tau;",
+        933: "&Upsilon;",
+        934: "&Phi;",
+        935: "&Chi;",
+        936: "&Psi;",
+        937: "&Omega;",
+        945: "&alpha;",
+        946: "&beta;",
+        947: "&gamma;",
+        948: "&delta;",
+        949: "&epsilon;",
+        950: "&zeta;",
+        951: "&eta;",
+        952: "&theta;",
+        953: "&iota;",
+        954: "&kappa;",
+        955: "&lambda;",
+        956: "&mu;",
+        957: "&nu;",
+        958: "&xi;",
+        959: "&omicron;",
+        960: "&pi;",
+        961: "&rho;",
+        962: "&sigmaf;",
+        963: "&sigma;",
+        964: "&tau;",
+        965: "&upsilon;",
+        966: "&phi;",
+        967: "&chi;",
+        968: "&psi;",
+        969: "&omega;",
+        977: "&thetasym;",
+        978: "&upsih;",
+        982: "&piv;",
+        8194: "&ensp;",
+        8195: "&emsp;",
+        8201: "&thinsp;",
+        8204: "&zwnj;",
+        8205: "&zwj;",
+        8206: "&lrm;",
+        8207: "&rlm;",
+        8211: "&ndash;",
+        8212: "&mdash;",
+        8216: "&lsquo;",
+        8217: "&rsquo;",
+        8218: "&sbquo;",
+        8220: "&ldquo;",
+        8221: "&rdquo;",
+        8222: "&bdquo;",
+        8224: "&dagger;",
+        8225: "&Dagger;",
+        8226: "&bull;",
+        8230: "&hellip;",
+        8240: "&permil;",
+        8242: "&prime;",
+        8243: "&Prime;",
+        8249: "&lsaquo;",
+        8250: "&rsaquo;",
+        8254: "&oline;",
+        8260: "&frasl;",
+        8364: "&euro;",
+        8465: "&image;",
+        8472: "&weierp;",
+        8476: "&real;",
+        8482: "&trade;",
+        8501: "&alefsym;",
+        8592: "&larr;",
+        8593: "&uarr;",
+        8594: "&rarr;",
+        8595: "&darr;",
+        8596: "&harr;",
+        8629: "&crarr;",
+        8656: "&lArr;",
+        8657: "&uArr;",
+        8658: "&rArr;",
+        8659: "&dArr;",
+        8660: "&hArr;",
+        8704: "&forall;",
+        8706: "&part;",
+        8707: "&exist;",
+        8709: "&empty;",
+        8711: "&nabla;",
+        8712: "&isin;",
+        8713: "&notin;",
+        8715: "&ni;",
+        8719: "&prod;",
+        8721: "&sum;",
+        8722: "&minus;",
+        8727: "&lowast;",
+        8730: "&radic;",
+        8733: "&prop;",
+        8734: "&infin;",
+        8736: "&ang;",
+        8743: "&and;",
+        8744: "&or;",
+        8745: "&cap;",
+        8746: "&cup;",
+        8747: "&int;",
+        8756: "&there4;",
+        8764: "&sim;",
+        8773: "&cong;",
+        8776: "&asymp;",
+        8800: "&ne;",
+        8801: "&equiv;",
+        8804: "&le;",
+        8805: "&ge;",
+        8834: "&sub;",
+        8835: "&sup;",
+        8836: "&nsub;",
+        8838: "&sube;",
+        8839: "&supe;",
+        8853: "&oplus;",
+        8855: "&otimes;",
+        8869: "&perp;",
+        8901: "&sdot;",
+        8942: "&vellip;",
+        8968: "&lceil;",
+        8969: "&rceil;",
+        8970: "&lfloor;",
+        8971: "&rfloor;",
+        9001: "&lang;",
+        9002: "&rang;",
+        9674: "&loz;",
+        9824: "&spades;",
+        9827: "&clubs;",
+        9829: "&hearts;",
+        9830: "&diams;",
     },
 
 
@@ -594,261 +595,261 @@ const HTML = {
      * @private
      * @constant
      */
-    _entityToByte : {
-        "quot" : 34,
-        "amp" : 38,
-        "apos" : 39,
-        "lt" : 60,
-        "gt" : 62,
-        "nbsp" : 160,
-        "iexcl" : 161,
-        "cent" : 162,
-        "pound" : 163,
-        "curren" : 164,
-        "yen" : 165,
-        "brvbar" : 166,
-        "sect" : 167,
-        "uml" : 168,
-        "copy" : 169,
-        "ordf" : 170,
-        "laquo" : 171,
-        "not" : 172,
-        "shy" : 173,
-        "reg" : 174,
-        "macr" : 175,
-        "deg" : 176,
-        "plusmn" : 177,
-        "sup2" : 178,
-        "sup3" : 179,
-        "acute" : 180,
-        "micro" : 181,
-        "para" : 182,
-        "middot" : 183,
-        "cedil" : 184,
-        "sup1" : 185,
-        "ordm" : 186,
-        "raquo" : 187,
-        "frac14" : 188,
-        "frac12" : 189,
-        "frac34" : 190,
-        "iquest" : 191,
-        "Agrave" : 192,
-        "Aacute" : 193,
-        "Acirc" : 194,
-        "Atilde" : 195,
-        "Auml" : 196,
-        "Aring" : 197,
-        "AElig" : 198,
-        "Ccedil" : 199,
-        "Egrave" : 200,
-        "Eacute" : 201,
-        "Ecirc" : 202,
-        "Euml" : 203,
-        "Igrave" : 204,
-        "Iacute" : 205,
-        "Icirc" : 206,
-        "Iuml" : 207,
-        "ETH" : 208,
-        "Ntilde" : 209,
-        "Ograve" : 210,
-        "Oacute" : 211,
-        "Ocirc" : 212,
-        "Otilde" : 213,
-        "Ouml" : 214,
-        "times" : 215,
-        "Oslash" : 216,
-        "Ugrave" : 217,
-        "Uacute" : 218,
-        "Ucirc" : 219,
-        "Uuml" : 220,
-        "Yacute" : 221,
-        "THORN" : 222,
-        "szlig" : 223,
-        "agrave" : 224,
-        "aacute" : 225,
-        "acirc" : 226,
-        "atilde" : 227,
-        "auml" : 228,
-        "aring" : 229,
-        "aelig" : 230,
-        "ccedil" : 231,
-        "egrave" : 232,
-        "eacute" : 233,
-        "ecirc" : 234,
-        "euml" : 235,
-        "igrave" : 236,
-        "iacute" : 237,
-        "icirc" : 238,
-        "iuml" : 239,
-        "eth" : 240,
-        "ntilde" : 241,
-        "ograve" : 242,
-        "oacute" : 243,
-        "ocirc" : 244,
-        "otilde" : 245,
-        "ouml" : 246,
-        "divide" : 247,
-        "oslash" : 248,
-        "ugrave" : 249,
-        "uacute" : 250,
-        "ucirc" : 251,
-        "uuml" : 252,
-        "yacute" : 253,
-        "thorn" : 254,
-        "yuml" : 255,
-        "OElig" : 338,
-        "oelig" : 339,
-        "Scaron" : 352,
-        "scaron" : 353,
-        "Yuml" : 376,
-        "fnof" : 402,
-        "circ" : 710,
-        "tilde" : 732,
-        "Alpha" : 913,
-        "Beta" : 914,
-        "Gamma" : 915,
-        "Delta" : 916,
-        "Epsilon" : 917,
-        "Zeta" : 918,
-        "Eta" : 919,
-        "Theta" : 920,
-        "Iota" : 921,
-        "Kappa" : 922,
-        "Lambda" : 923,
-        "Mu" : 924,
-        "Nu" : 925,
-        "Xi" : 926,
-        "Omicron" : 927,
-        "Pi" : 928,
-        "Rho" : 929,
-        "Sigma" : 931,
-        "Tau" : 932,
-        "Upsilon" : 933,
-        "Phi" : 934,
-        "Chi" : 935,
-        "Psi" : 936,
-        "Omega" : 937,
-        "alpha" : 945,
-        "beta" : 946,
-        "gamma" : 947,
-        "delta" : 948,
-        "epsilon" : 949,
-        "zeta" : 950,
-        "eta" : 951,
-        "theta" : 952,
-        "iota" : 953,
-        "kappa" : 954,
-        "lambda" : 955,
-        "mu" : 956,
-        "nu" : 957,
-        "xi" : 958,
-        "omicron" : 959,
-        "pi" : 960,
-        "rho" : 961,
-        "sigmaf" : 962,
-        "sigma" : 963,
-        "tau" : 964,
-        "upsilon" : 965,
-        "phi" : 966,
-        "chi" : 967,
-        "psi" : 968,
-        "omega" : 969,
-        "thetasym" : 977,
-        "upsih" : 978,
-        "piv" : 982,
-        "ensp" : 8194,
-        "emsp" : 8195,
-        "thinsp" : 8201,
-        "zwnj" : 8204,
-        "zwj" : 8205,
-        "lrm" : 8206,
-        "rlm" : 8207,
-        "ndash" : 8211,
-        "mdash" : 8212,
-        "lsquo" : 8216,
-        "rsquo" : 8217,
-        "sbquo" : 8218,
-        "ldquo" : 8220,
-        "rdquo" : 8221,
-        "bdquo" : 8222,
-        "dagger" : 8224,
-        "Dagger" : 8225,
-        "bull" : 8226,
-        "hellip" : 8230,
-        "permil" : 8240,
-        "prime" : 8242,
-        "Prime" : 8243,
-        "lsaquo" : 8249,
-        "rsaquo" : 8250,
-        "oline" : 8254,
-        "frasl" : 8260,
-        "euro" : 8364,
-        "image" : 8465,
-        "weierp" : 8472,
-        "real" : 8476,
-        "trade" : 8482,
-        "alefsym" : 8501,
-        "larr" : 8592,
-        "uarr" : 8593,
-        "rarr" : 8594,
-        "darr" : 8595,
-        "harr" : 8596,
-        "crarr" : 8629,
-        "lArr" : 8656,
-        "uArr" : 8657,
-        "rArr" : 8658,
-        "dArr" : 8659,
-        "hArr" : 8660,
-        "forall" : 8704,
-        "part" : 8706,
-        "exist" : 8707,
-        "empty" : 8709,
-        "nabla" : 8711,
-        "isin" : 8712,
-        "notin" : 8713,
-        "ni" : 8715,
-        "prod" : 8719,
-        "sum" : 8721,
-        "minus" : 8722,
-        "lowast" : 8727,
-        "radic" : 8730,
-        "prop" : 8733,
-        "infin" : 8734,
-        "ang" : 8736,
-        "and" : 8743,
-        "or" : 8744,
-        "cap" : 8745,
-        "cup" : 8746,
-        "int" : 8747,
-        "there4" : 8756,
-        "sim" : 8764,
-        "cong" : 8773,
-        "asymp" : 8776,
-        "ne" : 8800,
-        "equiv" : 8801,
-        "le" : 8804,
-        "ge" : 8805,
-        "sub" : 8834,
-        "sup" : 8835,
-        "nsub" : 8836,
-        "sube" : 8838,
-        "supe" : 8839,
-        "oplus" : 8853,
-        "otimes" : 8855,
-        "perp" : 8869,
-        "sdot" : 8901,
-        "vellip" : 8942,
-        "lceil" : 8968,
-        "rceil" : 8969,
-        "lfloor" : 8970,
-        "rfloor" : 8971,
-        "lang" : 9001,
-        "rang" : 9002,
-        "loz" : 9674,
-        "spades" : 9824,
-        "clubs" : 9827,
-        "hearts" : 9829,
-        "diams" : 9830,
+    _entityToByte: {
+        "quot": 34,
+        "amp": 38,
+        "apos": 39,
+        "lt": 60,
+        "gt": 62,
+        "nbsp": 160,
+        "iexcl": 161,
+        "cent": 162,
+        "pound": 163,
+        "curren": 164,
+        "yen": 165,
+        "brvbar": 166,
+        "sect": 167,
+        "uml": 168,
+        "copy": 169,
+        "ordf": 170,
+        "laquo": 171,
+        "not": 172,
+        "shy": 173,
+        "reg": 174,
+        "macr": 175,
+        "deg": 176,
+        "plusmn": 177,
+        "sup2": 178,
+        "sup3": 179,
+        "acute": 180,
+        "micro": 181,
+        "para": 182,
+        "middot": 183,
+        "cedil": 184,
+        "sup1": 185,
+        "ordm": 186,
+        "raquo": 187,
+        "frac14": 188,
+        "frac12": 189,
+        "frac34": 190,
+        "iquest": 191,
+        "Agrave": 192,
+        "Aacute": 193,
+        "Acirc": 194,
+        "Atilde": 195,
+        "Auml": 196,
+        "Aring": 197,
+        "AElig": 198,
+        "Ccedil": 199,
+        "Egrave": 200,
+        "Eacute": 201,
+        "Ecirc": 202,
+        "Euml": 203,
+        "Igrave": 204,
+        "Iacute": 205,
+        "Icirc": 206,
+        "Iuml": 207,
+        "ETH": 208,
+        "Ntilde": 209,
+        "Ograve": 210,
+        "Oacute": 211,
+        "Ocirc": 212,
+        "Otilde": 213,
+        "Ouml": 214,
+        "times": 215,
+        "Oslash": 216,
+        "Ugrave": 217,
+        "Uacute": 218,
+        "Ucirc": 219,
+        "Uuml": 220,
+        "Yacute": 221,
+        "THORN": 222,
+        "szlig": 223,
+        "agrave": 224,
+        "aacute": 225,
+        "acirc": 226,
+        "atilde": 227,
+        "auml": 228,
+        "aring": 229,
+        "aelig": 230,
+        "ccedil": 231,
+        "egrave": 232,
+        "eacute": 233,
+        "ecirc": 234,
+        "euml": 235,
+        "igrave": 236,
+        "iacute": 237,
+        "icirc": 238,
+        "iuml": 239,
+        "eth": 240,
+        "ntilde": 241,
+        "ograve": 242,
+        "oacute": 243,
+        "ocirc": 244,
+        "otilde": 245,
+        "ouml": 246,
+        "divide": 247,
+        "oslash": 248,
+        "ugrave": 249,
+        "uacute": 250,
+        "ucirc": 251,
+        "uuml": 252,
+        "yacute": 253,
+        "thorn": 254,
+        "yuml": 255,
+        "OElig": 338,
+        "oelig": 339,
+        "Scaron": 352,
+        "scaron": 353,
+        "Yuml": 376,
+        "fnof": 402,
+        "circ": 710,
+        "tilde": 732,
+        "Alpha": 913,
+        "Beta": 914,
+        "Gamma": 915,
+        "Delta": 916,
+        "Epsilon": 917,
+        "Zeta": 918,
+        "Eta": 919,
+        "Theta": 920,
+        "Iota": 921,
+        "Kappa": 922,
+        "Lambda": 923,
+        "Mu": 924,
+        "Nu": 925,
+        "Xi": 926,
+        "Omicron": 927,
+        "Pi": 928,
+        "Rho": 929,
+        "Sigma": 931,
+        "Tau": 932,
+        "Upsilon": 933,
+        "Phi": 934,
+        "Chi": 935,
+        "Psi": 936,
+        "Omega": 937,
+        "alpha": 945,
+        "beta": 946,
+        "gamma": 947,
+        "delta": 948,
+        "epsilon": 949,
+        "zeta": 950,
+        "eta": 951,
+        "theta": 952,
+        "iota": 953,
+        "kappa": 954,
+        "lambda": 955,
+        "mu": 956,
+        "nu": 957,
+        "xi": 958,
+        "omicron": 959,
+        "pi": 960,
+        "rho": 961,
+        "sigmaf": 962,
+        "sigma": 963,
+        "tau": 964,
+        "upsilon": 965,
+        "phi": 966,
+        "chi": 967,
+        "psi": 968,
+        "omega": 969,
+        "thetasym": 977,
+        "upsih": 978,
+        "piv": 982,
+        "ensp": 8194,
+        "emsp": 8195,
+        "thinsp": 8201,
+        "zwnj": 8204,
+        "zwj": 8205,
+        "lrm": 8206,
+        "rlm": 8207,
+        "ndash": 8211,
+        "mdash": 8212,
+        "lsquo": 8216,
+        "rsquo": 8217,
+        "sbquo": 8218,
+        "ldquo": 8220,
+        "rdquo": 8221,
+        "bdquo": 8222,
+        "dagger": 8224,
+        "Dagger": 8225,
+        "bull": 8226,
+        "hellip": 8230,
+        "permil": 8240,
+        "prime": 8242,
+        "Prime": 8243,
+        "lsaquo": 8249,
+        "rsaquo": 8250,
+        "oline": 8254,
+        "frasl": 8260,
+        "euro": 8364,
+        "image": 8465,
+        "weierp": 8472,
+        "real": 8476,
+        "trade": 8482,
+        "alefsym": 8501,
+        "larr": 8592,
+        "uarr": 8593,
+        "rarr": 8594,
+        "darr": 8595,
+        "harr": 8596,
+        "crarr": 8629,
+        "lArr": 8656,
+        "uArr": 8657,
+        "rArr": 8658,
+        "dArr": 8659,
+        "hArr": 8660,
+        "forall": 8704,
+        "part": 8706,
+        "exist": 8707,
+        "empty": 8709,
+        "nabla": 8711,
+        "isin": 8712,
+        "notin": 8713,
+        "ni": 8715,
+        "prod": 8719,
+        "sum": 8721,
+        "minus": 8722,
+        "lowast": 8727,
+        "radic": 8730,
+        "prop": 8733,
+        "infin": 8734,
+        "ang": 8736,
+        "and": 8743,
+        "or": 8744,
+        "cap": 8745,
+        "cup": 8746,
+        "int": 8747,
+        "there4": 8756,
+        "sim": 8764,
+        "cong": 8773,
+        "asymp": 8776,
+        "ne": 8800,
+        "equiv": 8801,
+        "le": 8804,
+        "ge": 8805,
+        "sub": 8834,
+        "sup": 8835,
+        "nsub": 8836,
+        "sube": 8838,
+        "supe": 8839,
+        "oplus": 8853,
+        "otimes": 8855,
+        "perp": 8869,
+        "sdot": 8901,
+        "vellip": 8942,
+        "lceil": 8968,
+        "rceil": 8969,
+        "lfloor": 8970,
+        "rfloor": 8971,
+        "lang": 9001,
+        "rang": 9002,
+        "loz": 9674,
+        "spades": 9824,
+        "clubs": 9827,
+        "hearts": 9829,
+        "diams": 9830,
     },
 
 };

+ 23 - 23
src/core/operations/HTTP.js

@@ -125,30 +125,30 @@ const HTTP = {
         }
 
         return fetch(url, config)
-        .then(r => {
-            if (r.status === 0 && r.type === "opaque") {
-                return "Error: Null response. Try setting the connection mode to CORS.";
-            }
-
-            if (showResponseMetadata) {
-                let headers = "";
-                for (let pair of r.headers.entries()) {
-                    headers += "    " + pair[0] + ": " + pair[1] + "\n";
+            .then(r => {
+                if (r.status === 0 && r.type === "opaque") {
+                    return "Error: Null response. Try setting the connection mode to CORS.";
                 }
-                return r.text().then(b => {
-                    return "####\n  Status: " + r.status + " " + r.statusText +
-                        "\n  Exposed headers:\n" + headers + "####\n\n" + b;
-                });
-            }
-            return r.text();
-        })
-        .catch(e => {
-            return e.toString() +
-                "\n\nThis error could be caused by one of the following:\n" +
-                " - An invalid URL\n" +
-                " - Making a request to an insecure resource (HTTP) from a secure source (HTTPS)\n" +
-                " - Making a cross-origin request to a server which does not support CORS\n";
-        });
+
+                if (showResponseMetadata) {
+                    let headers = "";
+                    for (let pair of r.headers.entries()) {
+                        headers += "    " + pair[0] + ": " + pair[1] + "\n";
+                    }
+                    return r.text().then(b => {
+                        return "####\n  Status: " + r.status + " " + r.statusText +
+                            "\n  Exposed headers:\n" + headers + "####\n\n" + b;
+                    });
+                }
+                return r.text();
+            })
+            .catch(e => {
+                return e.toString() +
+                    "\n\nThis error could be caused by one of the following:\n" +
+                    " - An invalid URL\n" +
+                    " - Making a request to an insecure resource (HTTP) from a secure source (HTTPS)\n" +
+                    " - Making a cross-origin request to a server which does not support CORS\n";
+            });
     },
 
 };

+ 4 - 4
src/core/operations/JS.js

@@ -1,4 +1,4 @@
-import esprima from "esprima";
+import * as esprima from "esprima";
 import escodegen from "escodegen";
 import esmangle from "esmangle";
 
@@ -62,7 +62,7 @@ const JS = {
                 tolerant: parseTolerant
             };
 
-        result = esprima.parse(input, options);
+        result = esprima.parseScript(input, options);
         return JSON.stringify(result, null, 2);
     },
 
@@ -104,7 +104,7 @@ const JS = {
             AST;
 
         try {
-            AST = esprima.parse(input, {
+            AST = esprima.parseScript(input, {
                 range: true,
                 tokens: true,
                 comment: true
@@ -142,7 +142,7 @@ const JS = {
      */
     runMinify: function(input, args) {
         let result = "",
-            AST = esprima.parse(input),
+            AST = esprima.parseScript(input),
             optimisedAST = esmangle.optimize(AST, null),
             mangledAST = esmangle.mangle(optimisedAST);
 

+ 19 - 19
src/core/operations/OS.js

@@ -18,25 +18,25 @@ const OS = {
      */
     runParseUnixPerms: function(input, args) {
         let perms = {
-                d : false,  // directory
-                sl : false, // symbolic link
-                np : false, // named pipe
-                s : false,  // socket
-                cd : false, // character device
-                bd : false, // block device
-                dr : false, // door
-                sb : false, // sticky bit
-                su : false, // setuid
-                sg : false, // setgid
-                ru : false, // read user
-                wu : false, // write user
-                eu : false, // execute user
-                rg : false, // read group
-                wg : false, // write group
-                eg : false, // execute group
-                ro : false, // read other
-                wo : false, // write other
-                eo : false // execute other
+                d:  false, // directory
+                sl: false, // symbolic link
+                np: false, // named pipe
+                s:  false, // socket
+                cd: false, // character device
+                bd: false, // block device
+                dr: false, // door
+                sb: false, // sticky bit
+                su: false, // setuid
+                sg: false, // setgid
+                ru: false, // read user
+                wu: false, // write user
+                eu: false, // execute user
+                rg: false, // read group
+                wg: false, // write group
+                eg: false, // execute group
+                ro: false, // read other
+                wo: false, // write other
+                eo: false  // execute other
             },
             d = 0,
             u = 0,

文件差异内容过多而无法显示
+ 519 - 539
src/core/operations/PublicKey.js


+ 7 - 7
src/core/operations/QuotedPrintable.js

@@ -61,7 +61,7 @@ const QuotedPrintable = {
      * @returns {byteArray}
      */
     runFrom: function (input, args) {
-        const str = input.replace(/\=(?:\r?\n|$)/g, "");
+        const str = input.replace(/=(?:\r?\n|$)/g, "");
         return QuotedPrintable.mimeDecode(str);
     },
 
@@ -73,7 +73,7 @@ const QuotedPrintable = {
      * @returns {byteArray}
      */
     mimeDecode: function(str) {
-        let encodedBytesCount = (str.match(/\=[\da-fA-F]{2}/g) || []).length,
+        let encodedBytesCount = (str.match(/=[\da-fA-F]{2}/g) || []).length,
             bufferLength = str.length - encodedBytesCount * 2,
             chr, hex,
             buffer = new Array(bufferLength),
@@ -219,21 +219,21 @@ const QuotedPrintable = {
                 result += line;
                 pos += line.length;
                 continue;
-            } else if (line.length > lineLengthMax - lineMargin && (match = line.substr(-lineMargin).match(/[ \t\.,!\?][^ \t\.,!\?]*$/))) {
+            } else if (line.length > lineLengthMax - lineMargin && (match = line.substr(-lineMargin).match(/[ \t.,!?][^ \t.,!?]*$/))) {
                 // truncate to nearest space
                 line = line.substr(0, line.length - (match[0].length - 1));
             } else if (line.substr(-1) === "\r") {
                 line = line.substr(0, line.length - 1);
             } else {
-                if (line.match(/\=[\da-f]{0,2}$/i)) {
+                if (line.match(/=[\da-f]{0,2}$/i)) {
 
                     // push incomplete encoding sequences to the next line
-                    if ((match = line.match(/\=[\da-f]{0,1}$/i))) {
+                    if ((match = line.match(/=[\da-f]{0,1}$/i))) {
                         line = line.substr(0, line.length - match[0].length);
                     }
 
                     // ensure that utf-8 sequences are not split
-                    while (line.length > 3 && line.length < len - pos && !line.match(/^(?:=[\da-f]{2}){1,4}$/i) && (match = line.match(/\=[\da-f]{2}$/ig))) {
+                    while (line.length > 3 && line.length < len - pos && !line.match(/^(?:=[\da-f]{2}){1,4}$/i) && (match = line.match(/=[\da-f]{2}$/ig))) {
                         code = parseInt(match[0].substr(1, 2), 16);
                         if (code < 128) {
                             break;
@@ -250,7 +250,7 @@ const QuotedPrintable = {
             }
 
             if (pos + line.length < len && line.substr(-1) !== "\n") {
-                if (line.length === 76 && line.match(/\=[\da-f]{2}$/i)) {
+                if (line.length === 76 && line.match(/=[\da-f]{2}$/i)) {
                     line = line.substr(0, line.length - 3);
                 } else if (line.length === 76) {
                     line = line.substr(0, line.length - 1);

+ 21 - 21
src/core/operations/StrUtils.js

@@ -193,17 +193,17 @@ const StrUtils = {
      * @constant
      * @default
      */
-    FIND_REPLACE_GLOBAL : true,
+    FIND_REPLACE_GLOBAL: true,
     /**
      * @constant
      * @default
      */
-    FIND_REPLACE_CASE : false,
+    FIND_REPLACE_CASE: false,
     /**
      * @constant
      * @default
      */
-    FIND_REPLACE_MULTILINE : true,
+    FIND_REPLACE_MULTILINE: true,
 
     /**
      * Find / Replace operation.
@@ -476,16 +476,16 @@ const StrUtils = {
         const splitInput = input.split(delimiter);
 
         return splitInput
-        .filter((line, lineIndex) => {
-            lineIndex += 1;
+            .filter((line, lineIndex) => {
+                lineIndex += 1;
 
-            if (number < 0) {
-                return lineIndex <= splitInput.length + number;
-            } else {
-                return lineIndex <= number;
-            }
-        })
-        .join(delimiter);
+                if (number < 0) {
+                    return lineIndex <= splitInput.length + number;
+                } else {
+                    return lineIndex <= number;
+                }
+            })
+            .join(delimiter);
     },
 
 
@@ -504,16 +504,16 @@ const StrUtils = {
         const splitInput = input.split(delimiter);
 
         return splitInput
-        .filter((line, lineIndex) => {
-            lineIndex += 1;
+            .filter((line, lineIndex) => {
+                lineIndex += 1;
 
-            if (number < 0) {
-                return lineIndex > -number;
-            } else {
-                return lineIndex > splitInput.length - number;
-            }
-        })
-        .join(delimiter);
+                if (number < 0) {
+                    return lineIndex > -number;
+                } else {
+                    return lineIndex > splitInput.length - number;
+                }
+            })
+            .join(delimiter);
     },
 
 

+ 12 - 12
src/core/operations/Tidy.js

@@ -16,32 +16,32 @@ const Tidy = {
      * @constant
      * @default
      */
-    REMOVE_SPACES : true,
+    REMOVE_SPACES: true,
     /**
      * @constant
      * @default
      */
-    REMOVE_CARIAGE_RETURNS : true,
+    REMOVE_CARIAGE_RETURNS: true,
     /**
      * @constant
      * @default
      */
-    REMOVE_LINE_FEEDS : true,
+    REMOVE_LINE_FEEDS: true,
     /**
      * @constant
      * @default
      */
-    REMOVE_TABS : true,
+    REMOVE_TABS: true,
     /**
      * @constant
      * @default
      */
-    REMOVE_FORM_FEEDS : true,
+    REMOVE_FORM_FEEDS: true,
     /**
      * @constant
      * @default
      */
-    REMOVE_FULL_STOPS : false,
+    REMOVE_FULL_STOPS: false,
 
     /**
      * Remove whitespace operation.
@@ -89,17 +89,17 @@ const Tidy = {
      * @constant
      * @default
      */
-    APPLY_TO_EACH_LINE : false,
+    APPLY_TO_EACH_LINE: false,
     /**
      * @constant
      * @default
      */
-    DROP_START : 0,
+    DROP_START: 0,
     /**
      * @constant
      * @default
      */
-    DROP_LENGTH : 5,
+    DROP_LENGTH: 5,
 
     /**
      * Drop bytes operation.
@@ -200,17 +200,17 @@ const Tidy = {
      * @constant
      * @default
      */
-    PAD_POSITION : ["Start", "End"],
+    PAD_POSITION: ["Start", "End"],
     /**
      * @constant
      * @default
      */
-    PAD_LENGTH : 5,
+    PAD_LENGTH: 5,
     /**
      * @constant
      * @default
      */
-    PAD_CHAR : " ",
+    PAD_CHAR: " ",
 
     /**
      * Pad lines operation.

+ 1 - 1
src/core/operations/URL.js

@@ -127,7 +127,7 @@ const URL_ = {
             .replace(/\(/g, "%28")
             .replace(/\)/g, "%29")
             .replace(/\*/g, "%2A")
-            .replace(/\-/g, "%2D")
+            .replace(/-/g, "%2D")
             .replace(/\./g, "%2E")
             .replace(/_/g, "%5F")
             .replace(/~/g, "%7E");

+ 6 - 6
src/node/index.js

@@ -14,12 +14,12 @@ const CyberChef = module.exports = {
     bake: function(input, recipeConfig) {
         this.chef = new Chef();
         return this.chef.bake(
-		input,
-		recipeConfig,
-		{},
-		0,
-		false
-	);
+            input,
+            recipeConfig,
+            {},
+            0,
+            false
+        );
     }
 
 };

+ 6 - 6
src/web/ControlsWaiter.js

@@ -183,9 +183,9 @@ ControlsWaiter.prototype.generateStateUrl = function(includeRecipe, includeInput
     ];
 
     const hash = params
-       .filter(v => v)
-       .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
-       .join("&");
+        .filter(v => v)
+        .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
+        .join("&");
 
     if (hash) {
         return `${link}#${hash}`;
@@ -288,7 +288,7 @@ ControlsWaiter.prototype.populateLoadRecipesList = function() {
 
     // Add recipes to select
     const savedRecipes = localStorage.savedRecipes ?
-            JSON.parse(localStorage.savedRecipes) : [];
+        JSON.parse(localStorage.savedRecipes) : [];
 
     for (i = 0; i < savedRecipes.length; i++) {
         const opt = document.createElement("option");
@@ -310,7 +310,7 @@ ControlsWaiter.prototype.populateLoadRecipesList = function() {
 ControlsWaiter.prototype.loadDeleteClick = function() {
     const id = parseInt(document.getElementById("load-name").value, 10);
     const rawSavedRecipes = localStorage.savedRecipes ?
-            JSON.parse(localStorage.savedRecipes) : [];
+        JSON.parse(localStorage.savedRecipes) : [];
 
     const savedRecipes = rawSavedRecipes.filter(r => r.id !== id);
 
@@ -325,7 +325,7 @@ ControlsWaiter.prototype.loadDeleteClick = function() {
 ControlsWaiter.prototype.loadNameChange = function(e) {
     const el = e.target;
     const savedRecipes = localStorage.savedRecipes ?
-            JSON.parse(localStorage.savedRecipes) : [];
+        JSON.parse(localStorage.savedRecipes) : [];
     const id = parseInt(el.value, 10);
 
     const recipe = savedRecipes.find(r => r.id === id);

+ 8 - 7
src/web/HighlighterWaiter.js

@@ -493,13 +493,14 @@ HighlighterWaiter.prototype.highlight = function(textarea, highlighter, pos) {
     //if (colour) cssClass += "-"+colour;
 
     // Remove HTML tags
-    text = text.replace(/&/g, "&amp;")
-                .replace(/</g, "&lt;")
-                .replace(/>/g, "&gt;")
-                .replace(/\n/g, "&#10;")
-                // Convert placeholders to tags
-                .replace(startPlaceholderRegex, "<span class=\""+cssClass+"\">")
-                .replace(endPlaceholderRegex, "</span>") + "&nbsp;";
+    text = text
+        .replace(/&/g, "&amp;")
+        .replace(/</g, "&lt;")
+        .replace(/>/g, "&gt;")
+        .replace(/\n/g, "&#10;")
+        // Convert placeholders to tags
+        .replace(startPlaceholderRegex, "<span class=\""+cssClass+"\">")
+        .replace(endPlaceholderRegex, "</span>") + "&nbsp;";
 
     // Adjust width to allow for scrollbars
     highlighter.style.width = textarea.clientWidth + "px";

+ 1 - 1
src/web/InputWaiter.js

@@ -166,7 +166,7 @@ InputWaiter.prototype.inputDrop = function(e) {
         this.set(inputCharcode);
         const recipeConfig = this.app.getRecipeConfig();
         if (!recipeConfig[0] || recipeConfig[0].op !== "From Hex") {
-            recipeConfig.unshift({op:"From Hex", args:["Space"]});
+            recipeConfig.unshift({op: "From Hex", args: ["Space"]});
             this.app.setRecipeConfig(recipeConfig);
         }
 

+ 9 - 9
src/web/index.js

@@ -38,15 +38,15 @@ function main() {
     ];
 
     const defaultOptions = {
-        updateUrl         : true,
-        showHighlighter   : true,
-        treatAsUtf8       : true,
-        wordWrap          : true,
-        showErrors        : true,
-        errorTimeout      : 4000,
-        autoBakeThreshold : 200,
-        attemptHighlight  : true,
-        theme             : "classic",
+        updateUrl:         true,
+        showHighlighter:   true,
+        treatAsUtf8:       true,
+        wordWrap:          true,
+        showErrors:        true,
+        errorTimeout:      4000,
+        autoBakeThreshold: 200,
+        attemptHighlight:  true,
+        theme:             "classic",
     };
 
     document.removeEventListener("DOMContentLoaded", main, false);

+ 1 - 2
test/TestRegister.js

@@ -46,8 +46,7 @@ import Chef from "../src/core/Chef.js";
                     {},
                     0,
                     false
-                )
-                .then(function(result) {
+                ).then(function(result) {
                     const ret = {
                         test: test,
                         status: null,

+ 4 - 4
test/tests/operations/Compress.js

@@ -14,12 +14,12 @@ TestRegister.addTests([
         expectedOutput: "The cat sat on the mat.",
         recipeConfig: [
             {
-                "op" : "From Hex",
-                "args" : ["Space"]
+                "op": "From Hex",
+                "args": ["Space"]
             },
             {
-                "op" : "Bzip2 Decompress",
-                "args" : []
+                "op": "Bzip2 Decompress",
+                "args": []
             }
         ],
     },

+ 5 - 5
test/tests/operations/FlowControl.js

@@ -59,11 +59,11 @@ TestRegister.addTests([
         input: "Some data with a 1 in it\nSome data with a 2 in it",
         expectedOutput: "U29tZSBkYXRhIHdpdGggYSAxIGluIGl0\n53 6f 6d 65 20 64 61 74 61 20 77 69 74 68 20 61 20 32 20 69 6e 20 69 74\n",
         recipeConfig: [
-            {"op":"Fork", "args":["\\n", "\\n", false]},
-            {"op":"Conditional Jump", "args":["1", "2", "10"]},
-            {"op":"To Hex", "args":["Space"]},
-            {"op":"Return", "args":[]},
-            {"op":"To Base64", "args":["A-Za-z0-9+/="]}
+            {"op": "Fork", "args": ["\\n", "\\n", false]},
+            {"op": "Conditional Jump", "args": ["1", "2", "10"]},
+            {"op": "To Hex", "args": ["Space"]},
+            {"op": "Return", "args": []},
+            {"op": "To Base64", "args": ["A-Za-z0-9+/="]}
         ]
     },
     {

+ 3 - 3
test/tests/operations/Image.js

@@ -73,11 +73,11 @@ TestRegister.addTests([
             "",
             "Make: SONY",
             "Model: DSC-H5",
-            "XResolution: 72",
-            "YResolution: 72",
+            "XResolution: 70",
+            "YResolution: 70",
             "ResolutionUnit: 2",
             "Software: Pictomio 1.2.31.0",
-            "ModifyDate: 2010:07:04 23:31:13",
+            "ModifyDate: 1278286273",
             "ExposureTime: 0.008",
             "FNumber: 3.7",
             "ExposureProgram: 3",

部分文件因为文件数量过多而无法显示