FRE-600: Fix code review blockers

- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 00:08:01 -04:00
parent 65b552bb08
commit 7c684a42cc
48450 changed files with 5679671 additions and 383 deletions

4
node_modules/fast-stable-stringify/.npmignore generated vendored Normal file
View File

@@ -0,0 +1,4 @@
node_modules
.idea
.zuulrc
*~

10
node_modules/fast-stable-stringify/.travis.yml generated vendored Normal file
View File

@@ -0,0 +1,10 @@
language: node_js
node_js:
- '6'
install: npm install
script: npm run test-browsers
env:
global:
- secure: dxsYyywaNs56mtg5zSJgA3GTUIzGKt6btJrE0+j0oB/6pwJt2GvPNetd6bCe9ddyvoRA1ZwW/PlL86tsLpSSM4hf3hySw9ozb0dC0wPDPN3rfHyI8sNW7LjcPAxCncVwJ1CQf3kO/NGVgQi4K8HCy0LkOPrQ0NCWhsnUaAtY0IOOdeBYahFoQ2boK6F5RFnK65gIaPdk9PqRiS7B43XPOFOSP/vVQd2AzcrZzMgjit505EF8oozlgMBM6eFQvX4vX1I4OgFuO1owOQBMrS/bvmeURoAt3313UvuMeezq7MgTWABo19WDHMg3KUs2aJO4QxiOiQek9jluKhOmjkNJ08lum5d2s6UnoD3MNoN7mdvy2DsifrzZzDzxjkvEsQ0E15+hyMdPpILBXqIXjXZdIs46TiGlX5No2In0zwfzuAXkJVgpQ7jTkqdvEejDk5Kf4nl01TscZFNMpmq9+gL6xUE95BCHLx8YwYZN9hME98CffSgWQTRGcOd9sI9SC3fgWr7k3GZtuuXMATc2U/cZtuJrClOGTaK0l3FEe9U0d6cf+rZDQh72iBHy4Y1/RERaoM37eOyKg7tngRIevmftnvRRALIeoIb2KAxV5XrxcwxQRumV7jbs8Y5g/gsFnwbJBgcn9a7tez/wQSVQ2/fiQn93OJOQrXHOywk3PV3PX0Y=
- secure: Nyatsejgr4rJfqCrhQ9U+mrx1hsGkP4qqZWVsc/MC8RG3XfmKuyJFGwbJAhAlGHiebG2a2PrErvwnr8Veo/QwkuDy5beQ+5KocCuIT/hIsGMIFuRDs0RRPMFPX0j4xQmZr47iCPdSHSh67jrURf/sXlIdCfrX1eYDsNiKfmS/mFAaQKkcnfJu0PO2IRmucHNKgU5jpH2SvVmEK0kxYIG8kkk5A8NUzbqJn3E7kVzZ3zslYT2gRDxSVP7Hb13LR1ZLDStKvAjuZHMckQYF6Wl8+vKja041yDgmh88+L6HoDPigKEGH5vJzaoBdoxT+asdsvDbMkbBVQMLm4RdkHIlRAUNASOfsUSOe9LBFRp6eSJkGRhc5JQxjf8G246dRae8dBIcloRMethGelc7WR4Pdm5u6ByswbfCIHFszIlJLWiq/QM81akHHbWcTUtaaM/8/s4R3luO/d6IL2RyTN9NZfoZmrCb7xF9UAVnlqogkrQ5VKvv+222Nmpa7jPhckJStURAKYi4IulYLWkBXv5uMvpKt8riCBQUft+arHwWOfJsT07ksYy/+K39t45ut1tKBjtInLErd7P/ROjPrsHSdMsdZspey7dpxXt3ePrUry+NgsLPwqOqo9wV+TZA3pBijxH93/C4eHCSOydKJ3+MGr2A+eLLjc3Ky8qG73trYdc=

21
node_modules/fast-stable-stringify/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Nicolaas Johannes Out
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

81
node_modules/fast-stable-stringify/README.md generated vendored Normal file
View File

@@ -0,0 +1,81 @@
# fast-stable-stringify
*Notice: The License of this repository has been changed from GPL-3.0 to MIT as of 2017-08-25. All following commits will fall under the MIT license.*
[![Build Status](https://travis-ci.org/nickyout/fast-stable-stringify.svg?branch=master)](https://travis-ci.org/nickyout/fast-stable-stringify)
[![Sauce Test Status](https://saucelabs.com/browser-matrix/nickyout_fast-stable.svg)](https://saucelabs.com/u/nickyout_fast-stable)
_The test only succeeds when mine is faster than substack's in a particular browser._
The most popular repository providing this feature is [substack's json-stable-stringify][sub]. The intent if this library is to provide a faster alternative for when performance is more important than features. It assumes you provide basic javascript values without circular references, and returns a non-indented string.
It currently offers a performance boost in popular browsers of about 40%. See the comparsion table below.
Usage:
```javascript
var stringify = require('fast-stable-stringify');
stringify({ d: 0, c: 1, a: 2, b: 3, e: 4 }); // '{"a":2,"b":3,"c":1,"d":0,"e":4}'
```
Just like substack's, it does:
* handle all variations of all basic javascript values (number, string, boolean, array, object, null, Date)
* handle undefined _and_ function in the same way as `JSON.stringify`
* **not support ie8 (and below) with complete certainty**.
Unlike substack's, it does:
* not implement the 'replacer' or 'space' arguments of the JSON.stringify method
* not check for circular references
## Test results
Tested validity (answer equal to substack's) and benchmark (faster than substack's). A test passes only if it has the same output as substack's but is faster (as concluded by [benchmark.js][ben]).
To (hopefully) prevent [certain smart browsers][cat] from concluding the stringification is not necessary because it is never used anywhere, I summed up all the lengths of the resulting strings of each benchmark contestant and printed it along with the result data.
### Latest interpreted result
See [caniuse browser usage][usg] for the 'most popular browsers'.
| Suite | Browser | JSON.stringify@native | fast-stable-stringify@a9f81e8 | json-stable-stringify@1.0.1 | faster-stable-stringify@1.0.0 |
| :---- | :-------------------------------------- | --------------------: | ----------------------------: | --------------------------: | ----------------------------: |
| libs | Chrome 60.0.3112 (Windows 7 0.0.0) | 414.45% (±2.67%) | *146.41% (±1.74%) | 100.00% (±1.11%) | 111.26% (±1.24%) |
| libs | Chrome Mobile 55.0.2883 (Android 6.0.0) | 495.16% (±16.9%) | *162.18% (±3.59%) | 100.00% (±5.44%) | 129.66% (±3.20%) |
| libs | Edge 14.14393.0 (Windows 10 0.0.0) | 487.88% (±11.9%) | *138.69% (±2.27%) | 100.00% (±1.51%) | 113.19% (±1.56%) |
| libs | Firefox 54.0.0 (Windows 7 0.0.0) | 530.66% (±17.6%) | *169.34% (±2.38%) | 100.00% (±1.68%) | 152.30% (±2.48%) |
| libs | IE 10.0.0 (Windows 7 0.0.0) | 427.80% (±10.9%) | *183.26% (±3.02%) | 100.00% (±2.42%) | ? |
| libs | IE 11.0.0 (Windows 7 0.0.0) | 298.01% (±4.35%) | *136.25% (±1.89%) | 100.00% (±1.73%) | ? |
| libs | IE 9.0.0 (Windows 7 0.0.0) | 316.18% (±4.01%) | *170.14% (±2.30%) | 100.00% (±1.52%) | ? |
| libs | Mobile Safari 10.0.0 (iOS 10.3.0) | 554.98% (±23.7%) | *115.33% (±4.23%) | 100.00% (±3.11%) | *118.66% (±2.96%) |
| libs | Safari 10.0.1 (Mac OS X 10.12.1) | 722.94% (±24.8%) | *119.49% (±3.62%) | 100.00% (±2.12%) | 106.06% (±3.12%) |
Click the build status badge to view the original output.
Disclaimer: the more I test the more I realize how many factors actually affect the outcome. Not only the browser and browser version, but particularly the json content and a random factor in every test run. Outcomes may sometimes vary more than 10% between tests, despite my attempt to reduce this by increasing the sample size to 2.5 times. Nevertheless, the overall picture typically still holds.
`JSON.stringify` has been added for reference. In general, aside from the cases where you need the guarantee of a stable result, I would recommend against using this library, or any stable stringification library for that matter.
[`faster-stable-stringify`][fss] has been added for comparison. It seems it does not work in IE 9 to 11 without a polyfill solution for WeakMap. It is displayed as somewhat slower, but as I decided on the JSON input to test and develop against, this result may be somewhat biased. In some test runs, [`faster-stable-stringify`][fss] will be faster in a browser. In fact, it is consistently somewhat faster in the Mobile Safari 10.
## Note about string escaping
The original implementation was with regexp. A pull request showed a literal string approach that was faster in some browsers. Other libraries would just use JSON.stringify. After a speed comparison between all three methods, it became clear that native JSON.stringify is generally much faster in string escaping than both these methods, even in the IE legacy browsers. The browsers that do not have `JSON.stringify` are not offered for test automation, and when looking at the [usage percentage][usg] of such browsers I no longer see a reason to not use `JSON.stringify`.
Therefore, the exposed regexp and string are removed from the API. If you still need this functionality, I simply encourage you to use `JSON.stringify`.
## Running tests
It runs karma-benchmark tests now. For testing in node, do:
```
npm test
```
This requires [saucelabs credentials in your env][env]. That, or edit the karma.conf.js to your liking.
Running this test will cause files in `./results/libs/` to update. Run `npm run table` to get a pretty md table of the results.
[sub]: https://github.com/substack/json-stable-stringify
[ben]: https://github.com/bestiejs/benchmark.js
[cat]: http://mrale.ph/blog/2014/02/23/the-black-cat-of-microbenchmarks.html
[usg]: http://caniuse.com/usage-table
[env]: https://wiki.saucelabs.com/display/DOCS/Best+Practice%3A+Use+Environment+Variables+for+Authentication+Credentials
[fss]: https://github.com/ppaskaris/faster-stable-stringify

View File

@@ -0,0 +1,67 @@
var fs = require('fs-extra');
var obj = require('../util/object-path');
/**
* Converts the file contents generated by BenchmarkStatsProcessor to a DataSetComparisonResult array.
* @param {Array} arrFileObj
* @returns {Object}
*/
function mergeToMap(arrFileObj) {
return arrFileObj.reduce(function(result, fileObj) {
var name;
var libData;
for (name in fileObj) {
libData = fileObj[name];
obj.setObject(result, [libData.suite, libData.browser, libData.name], libData);
}
return result;
}, {});
}
/**
* Since every machine has its own speed, absolute test results have no absolute value.
* However, (I suspect that) the one that is the fastest will relatively be faster than the others.
* @typedef {Object} DataSetComparisonResultItem
* @prop {string} name
* @prop {string} browser
* @prop {string} suite
* @prop {boolean} success
* @prop {number} hz
* @prop {boolean} fastest - is fastest or, statistic significantly speaking, no slower than the fastest
* @prop {number} rme - relative margin of error (expressed as decimal, NOT %)
* @prop {number} rhz - relative hz compared to the fastest (expressed as decimal, NOT %)
* @prop {number} sampleSize
*/
/**
* Describes all results of a single test suite within single browser
* @typedef {Object} DataSetComparisonResult
* @prop {string} browser
* @prop {string} suite
* @prop {Object<DataSetComparisonResultItem>} resultMap - key is libName
*/
/**
*
* @param {string[]} files
* @returns {Promise<DataSetComparisonResult[]>}
*/
module.exports = function(files) {
return Promise
.all(files.map(function(file) {
return fs.readJson(file);
}))
.then(function (arrFileObj) {
var map = mergeToMap(arrFileObj);
var result = [];
var suiteName;
var browserName;
var suite;
for (suiteName in map) {
suite = map[suiteName];
for (browserName in suite) {
result.push({ browser: browserName, suite: suiteName, resultMap: suite[browserName]})
}
}
return result;
});
};

70
node_modules/fast-stable-stringify/cli/format-table.js generated vendored Normal file
View File

@@ -0,0 +1,70 @@
var table = require('markdown-table');
// Crude, but should be enough internally
function toFixedWidth(value, maxChars) {
var result = value.toFixed(2).substr(0, maxChars);
if (result[result.length - 1] == '.') {
result = result.substr(0, result.length - 2) + ' ';
}
return result;
}
/**
*
* @param {DataSetComparisonResult[]} results
* @param {Object} [options]
*/
function createTable(results, options) {
options || (options = {});
var columnAlign = ['l', 'l'];
var header = ['Suite', 'Browser'];
var libNames = [];
var rows = [];
var errorCell = 'X';
var emptyCell = '?';
var hideColumns = options.hideColumns || [];
var compareTo = options.compareTo;
results.forEach(function(comparisonResult) {
var resultMap = comparisonResult.resultMap;
var libName;
var libResults;
var result;
var compareRHZ = resultMap[compareTo] && resultMap[compareTo].rhz || 1;
for (libName in resultMap) {
// dictates order
if (libNames.indexOf(libName) === -1 && hideColumns.indexOf(libName) === -1) {
libNames.push(libName);
columnAlign.push('r');
rows.forEach(function(row) {
// new column added, push empty element
row.push(emptyCell);
})
}
}
libResults = libNames.map(function(libName) {
result = resultMap[libName];
if (result) {
if (result.success) {
return (result.fastest ? '*' : '')
+ (100 * result.rhz / compareRHZ).toFixed(2) + '% '
+ '(\xb1' + toFixedWidth(100 * (result.rhz / compareRHZ) * result.rme, 4) + '%)';
} else {
return errorCell;
}
} else {
return emptyCell;
}
});
rows.push([comparisonResult.suite, comparisonResult.browser].concat(libResults));
});
// slap header before it
rows.unshift(header.concat(libNames));
return table(rows, { align: columnAlign });
}
module.exports = function(data, options) {
return createTable(data, options);
};

19
node_modules/fast-stable-stringify/cli/index.js generated vendored Normal file
View File

@@ -0,0 +1,19 @@
var argv = require('minimist')(process.argv.slice(2));
var formatTable = require('./format-table');
var glob = require('glob');
var filesToComparisonResults = require('./files-to-comparison-results');
var pattern = argv._.length > 1 ? '{' + argv._.slice(0).join(',') + '}' : argv._[0];
var fileList = glob.sync(pattern, { nodir: true });
//console.log(fileList);
filesToComparisonResults(fileList)
.then(function(comparisonResult) {
return formatTable(comparisonResult, { hideColumns: [], compareTo: 'json-stable-stringify@1.0.1' })
})
.then(function(str) {
console.log(str);
})
.catch(function(err) {
console.error(err);
});

5
node_modules/fast-stable-stringify/fixtures/index.js generated vendored Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
input: require('./input-data-types')
/*,
expected: require("./expected.json")*/
};

View File

@@ -0,0 +1,191 @@
function ImplementingToJSON() {}
ImplementingToJSON.prototype.toJSON = function() {
return 'dummy!';
};
function NotImplementingToJSON() {}
module.exports = {
"objects": {
"string": {
"VALUES_WITH_SPACES": "a b c",
"LOWERCASE": "abc",
"UPPERCASE": "ABC",
"NUMBER_ONLY": "123",
"EMPTY_STRING": "",
"ESCAPE_RANGE": "\u0000\u001F",
"NON_ESCAPE_RANGE": "\u0020\uFFFF",
"UTF16": "☃",
"QUOTATION_MARK": "\"",
"REVERSE_SOLIDUS": "\\",
"SOLIDUS": "\/",
"FORM_FEED": "\f",
"LINE_FEED": "\n",
"CARRIAGE_RETURN": "\r",
"TAB": "\t",
"BACKSPACE": "\b",
"MIXED": "Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b"
},
"key": {
"a b c": "VALUES_WITH_SPACES",
"abc": "LOWERCASE",
"ABC": "UPPERCASE",
"NUMBER_ONLY": "123",
"": "EMPTY_STRING",
"\u0000\u001F": "ESCAPE_RANGE",
"\u0020\uFFFF": "NON_ESCAPE_RANGE",
"☃": "UTF16",
"\"": "QUOTATION_MARK",
"\\": "REVERSE_SOLIDUS",
"\/": "SOLIDUS",
"\f": "FORM_FEED",
"\n": "LINE_FEED",
"\r": "CARRIAGE_RETURN",
"\t": "TAB",
"\b": "BACKSPACE",
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b": "MIXED"
},
"number": {
"MAX_SAFE_INTEGER": 9007199254740991,
"MIN_SAFE_INTEGER": -9007199254740991,
"FALSY": 0,
"NEGATIVE": -1,
"FLOAT": 0.1234567,
"NEGATIVE_FLOAT": -0.9876543,
"MAX_VALUE": 1.7976931348623157e+308,
"MIN_VALUE": 5e-324,
"NEGATIVE_MAX_VALUE": -1.7976931348623157e+308,
"NEGATIVE_MIN_VALUE": -5e-324,
"INFINITY": Infinity,
"NEG_INFINITY": -Infinity,
"NAN": NaN
},
"boolean": {
"TRUE": true,
"FALSE": false
},
"null": {
"NULL": null
},
"undefined": undefined,
"undefineds": {
"ONE": undefined,
"TWO": undefined,
"THREE": undefined
},
"date": new Date('2017'),
"function": function() {},
"instances": {
'implementingToJSON': new ImplementingToJSON(),
'notImplementingToJSON': new NotImplementingToJSON()
},
"mixed": {
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b": "MIXED",
"MIXED": "Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b",
"MAX_VALUE": 1.7976931348623157e+308,
"MIN_VALUE": 5e-324,
"NEGATIVE_MAX_VALUE": -1.7976931348623157e+308,
"NEGATIVE_MIN_VALUE": -5e-324,
"TRUE": true,
"FALSE": false,
"NULL": null,
"UNDEFINED": undefined,
"zzz": "ending"
}
},
"arrays": {
"number": [
9007199254740991,
-9007199254740991,
0,
-1,
0.1234567,
-0.9876543,
1.7976931348623157e+308,
5e-324,
-1.7976931348623157e+308,
-5e-324,
Infinity,
-Infinity,
NaN
],
"string": [
"a b c",
"abc",
"ABC",
"NUMBER_ONLY",
"",
"\u0000\u001F",
"\u0020\uFFFF",
"☃",
"\"",
"\\",
"\/",
"\f",
"\n",
"\r",
"\t",
"\b",
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b"
],
"boolean": [
true,
false
],
"null": [
null
],
"undefined": [
undefined
],
"date": [
new Date('2017')
],
"instances": [
new ImplementingToJSON(),
new NotImplementingToJSON()
],
"function": [
function(){}
],
"mixed": [
-1.7976931348623157e+308,
-5e-324,
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b",
true,
false,
null,
undefined
]
},
"mixed": [
{
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b": "MIXED",
"MIXED": "Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b",
"MAX_VALUE": 1.7976931348623157e+308,
"MIN_VALUE": 5e-324,
"NEGATIVE_MAX_VALUE": -1.7976931348623157e+308,
"NEGATIVE_MIN_VALUE": -5e-324,
"TRUE": true,
"FALSE": false,
"NULL": null,
"UNDEFINED": undefined,
"DATE": new Date('2017'),
"IMPLEMENTING_TO_JSON": new ImplementingToJSON(),
"NOT_IMPLEMENTING_TO_JSON": new NotImplementingToJSON(),
"FUNCTION": function(){},
"zzz": "ending"
},
-1.7976931348623157e+308,
-5e-324,
"Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b",
true,
false,
null,
undefined,
new Date('2017'),
function(){},
new ImplementingToJSON(),
new NotImplementingToJSON()
]
};

View File

@@ -0,0 +1,22 @@
{
"nickyout/fast-stable-stringify": {
"chrome 26": {
"Windows 2008": {
"opsPerSec": 6.025,
"percentage": 6.76,
"numSamples": 50,
"cumStrLength": 94425969
}
}
},
"substack/json-stable-stringify": {
"chrome 26": {
"Windows 2008": {
"opsPerSec": 4.114,
"percentage": 1.05,
"numSamples": 50,
"cumStrLength": 61301724
}
}
}
}

24
node_modules/fast-stable-stringify/fixtures/log.txt generated vendored Normal file
View File

@@ -0,0 +1,24 @@
- testing: chrome @ Windows 2008: 26
- testing: opera @ Windows 2003: 11 12
- queuing: <chrome 26 on Windows 2008>
- starting: <chrome 26 on Windows 2008>
<chrome 26 on Windows 2008> console
Finished benchmarking: nickyout/fast-stable-stringify x 6,025 ops/sec ±6.76% (50 runs sampled) (cumulative string length: 94425969)
Finished benchmarking: substack/json-stable-stringify x 4,114 ops/sec ±1.05% (50 runs sampled) (cumulative string length: 61301724)
- passed: <chrome 26 on Windows 2008>
- queuing: <opera 11 on Windows 2003>
- starting: <opera 11 on Windows 2003>
<opera 11 on Windows 2003> Benchmark :: fastest
Error: Benchmark.js was unable to find a working timer.
clock([arguments not available]) __zuul/test-bundle.js:4066
cycle([arguments not available]) __zuul/test-bundle.js:4301
run([arguments not available]) __zuul/test-bundle.js:4409
execute([arguments not available]) __zuul/test-bundle.js:3088
invoke([arguments not available]) __zuul/test-bundle.js:3202
compute([arguments not available]) __zuul/test-bundle.js:4259
run([arguments not available]) __zuul/test-bundle.js:4414
execute([arguments not available]) __zuul/test-bundle.js:3088
invoke([arguments not available]) __zuul/test-bundle.js:3202
runSuite([arguments not available]) __zuul/test-bundle.js:3451
- passed: <opera 11 on Windows 2003>

73
node_modules/fast-stable-stringify/index.js generated vendored Normal file
View File

@@ -0,0 +1,73 @@
var objToString = Object.prototype.toString;
var objKeys = Object.keys || function(obj) {
var keys = [];
for (var name in obj) {
keys.push(name);
}
return keys;
};
function stringify(val, isArrayProp) {
var i, max, str, keys, key, propVal, toStr;
if (val === true) {
return "true";
}
if (val === false) {
return "false";
}
switch (typeof val) {
case "object":
if (val === null) {
return null;
} else if (val.toJSON && typeof val.toJSON === "function") {
return stringify(val.toJSON(), isArrayProp);
} else {
toStr = objToString.call(val);
if (toStr === "[object Array]") {
str = '[';
max = val.length - 1;
for(i = 0; i < max; i++) {
str += stringify(val[i], true) + ',';
}
if (max > -1) {
str += stringify(val[i], true);
}
return str + ']';
} else if (toStr === "[object Object]") {
// only object is left
keys = objKeys(val).sort();
max = keys.length;
str = "";
i = 0;
while (i < max) {
key = keys[i];
propVal = stringify(val[key], false);
if (propVal !== undefined) {
if (str) {
str += ',';
}
str += JSON.stringify(key) + ':' + propVal;
}
i++;
}
return '{' + str + '}';
} else {
return JSON.stringify(val);
}
}
case "function":
case "undefined":
return isArrayProp ? null : undefined;
case "string":
return JSON.stringify(val);
default:
return isFinite(val) ? val : null;
}
}
module.exports = function(val) {
var returnVal = stringify(val, false);
if (returnVal !== undefined) {
return ''+ returnVal;
}
};

124
node_modules/fast-stable-stringify/karma.conf.js generated vendored Normal file
View File

@@ -0,0 +1,124 @@
// Karma configuration
// Generated on Sun Sep 03 2017 04:55:32 GMT+0200 (CEST)
module.exports = function(config) {
// in seconds
var TIMEOUT = 360;
var customLaunchers = {
// desktop evergreen
sl_chrome: { base: 'SauceLabs', browserName: 'chrome', version: '60', idleTimeout: TIMEOUT },
sl_firefox: { base: 'SauceLabs', browserName: 'firefox', version: '54', idleTimeout: TIMEOUT },
sl_safari: { base: "SauceLabs", browserName: "safari", version: '10', platform: 'macOS 10.12', idleTimeout: TIMEOUT },
sl_edge: { base: "SauceLabs", browserName: "microsoftedge", version: '14', platform: 'Windows 10', idleTimeout: TIMEOUT },
//sl_opera: { base: "SauceLabs", browsername: "opera", version: '12', platform: 'Windows 7', idleTimeout: TIMEOUT },
// desktop legacy
sl_ie_9: { base: 'SauceLabs', browserName: 'internet explorer', version: '9', idleTimeout: TIMEOUT },
sl_ie_10: { base: 'SauceLabs', browserName: 'internet explorer', version: '10', idleTimeout: TIMEOUT },
sl_ie_11: { base: 'SauceLabs', browserName: 'internet explorer', version: '11', idleTimeout: TIMEOUT },
// mobile
sl_iphone: { base: 'SauceLabs', browserName: 'iphone', version: '10.3', idleTimeout: TIMEOUT },
sl_android: { base: 'SauceLabs', browserName: 'android', version: '6.0', idleTimeout: TIMEOUT },
};
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['benchmark'],
// list of files / patterns to load in the browser
files: [
'test/index.js'
],
// list of files to exclude
exclude: [
],
client: {
captureConsole: true,
logLevel: config.LOG_LOG,
mocha: {
ui: 'tdd'
}
},
browserConsoleLogOptions: {
level: 'log',
format: '%b %T: %m',
terminal: true
},
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'test/index.js': ['webpack']
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['benchmark'],
benchmarkReporter: {
destDir: 'results',
exclude: ['native', 'faster-stable-stringify', 'fast-stable-stringify'],
resolveName: function(benchName, suiteName) {
if (suiteName == 'libs') {
var libInfo = require('./util/get-lib-info')(benchName);
return libInfo.name + '@' + libInfo.version;
} else {
return benchName;
}
},
logStyle: 'benchmark'
},
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
customLaunchers: customLaunchers,
browsers: Object.keys(customLaunchers),
//browsers: ['Chrome', 'Firefox'],
browserNoActivityTimeout: TIMEOUT * 1000,
captureTimeout: TIMEOUT * 1000,
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
// Concurrency level
// how many browser should be started simultaneous
concurrency: 5
})
};

View File

@@ -0,0 +1,95 @@
// Karma configuration
// Generated on Sun Sep 03 2017 04:55:32 GMT+0200 (CEST)
module.exports = function(config) {
// in seconds
var TIMEOUT = 360;
var customLaunchers = {
// desktop evergreen
sl_chrome: { base: 'SauceLabs', browserName: 'chrome', version: '60', idleTimeout: TIMEOUT },
sl_firefox: { base: 'SauceLabs', browserName: 'firefox', version: '54', idleTimeout: TIMEOUT },
sl_safari: { base: "SauceLabs", browserName: "safari", version: '10', platform: 'macOS 10.12', idleTimeout: TIMEOUT },
sl_edge: { base: "SauceLabs", browserName: "microsoftedge", version: '14', platform: 'Windows 10', idleTimeout: TIMEOUT },
//sl_opera: { base: "SauceLabs", browsername: "opera", version: '12', platform: 'Windows 7', idleTimeout: TIMEOUT },
// desktop legacy
sl_ie_9: { base: 'SauceLabs', browserName: 'internet explorer', version: '9', idleTimeout: TIMEOUT },
sl_ie_10: { base: 'SauceLabs', browserName: 'internet explorer', version: '10', idleTimeout: TIMEOUT },
sl_ie_11: { base: 'SauceLabs', browserName: 'internet explorer', version: '11', idleTimeout: TIMEOUT },
// mobile
sl_iphone: { base: 'SauceLabs', browserName: 'iphone', version: '10.3', idleTimeout: TIMEOUT },
sl_android: { base: 'SauceLabs', browserName: 'android', version: '6.0', idleTimeout: TIMEOUT },
};
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['benchmark'],
// list of files / patterns to load in the browser
files: [
'test/travis.js'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'test/travis.js': ['webpack']
},
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['benchmark'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: false,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: false,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
customLaunchers: customLaunchers,
browsers: Object.keys(customLaunchers),
//browsers: ['Chrome', 'Firefox'],
browserNoActivityTimeout: TIMEOUT * 1000,
captureTimeout: TIMEOUT * 1000,
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: true,
// Concurrency level
// how many browser should be started simultaneous
concurrency: 5
})
};

47
node_modules/fast-stable-stringify/package.json generated vendored Normal file
View File

@@ -0,0 +1,47 @@
{
"name": "fast-stable-stringify",
"version": "1.0.0",
"description": "Deterministic stringification for when performance matters",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "./node_modules/.bin/karma start",
"travis": "./node_modules/.bin/karma start ./karma.conf.travis.js",
"table": "node ./cli/index.js results/libs/*.json"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nickyout/fast-stable-stringify.git"
},
"keywords": [
"JSON",
"stable",
"deterministic",
"stringify",
"fast"
],
"author": "Nicky Out",
"license": "MIT",
"bugs": {
"url": "https://github.com/nickyout/fast-stable-stringify/issues"
},
"homepage": "https://github.com/nickyout/fast-stable-stringify#readme",
"devDependencies": {
"faster-stable-stringify": "^1.0.0",
"fs-extra": "^4.0.1",
"glob": "^7.1.2",
"json-stable-stringify": "^1.0.0",
"karma": "^1.7.1",
"karma-benchmark": "^0.7.1",
"karma-benchmark-reporter": "git+https://github.com/nickyout/karma-benchmark-reporter.git#4b570c9",
"karma-firefox-launcher": "^1.0.1",
"karma-sauce-launcher": "^1.2.0",
"karma-webpack": "^2.0.4",
"markdown-table": "^1.1.1",
"minimist": "^1.2.0",
"split": "^1.0.1",
"webpack": "^3.5.5"
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 253343.14412049987,
"success": true,
"fastest": false,
"rme": 0.014150323478317376,
"rhz": 0.8571066586149397,
"sampleSize": 173
},
"fn if": {
"name": "fn if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 152430.27131168763,
"success": true,
"fastest": false,
"rme": 0.009869184897547099,
"rhz": 0.5156997674805344,
"sampleSize": 173
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 134572.13503988463,
"success": true,
"fastest": false,
"rme": 0.00900151732022404,
"rhz": 0.4552823934002038,
"sampleSize": 171
},
"escape31": {
"name": "escape31",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 164000.28145229374,
"success": true,
"fastest": false,
"rme": 0.010577368405487704,
"rhz": 0.5548432492044333,
"sampleSize": 172
},
"native": {
"name": "native",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 295579.48427316535,
"success": true,
"fastest": true,
"rme": 0.01035041406915358,
"rhz": 1,
"sampleSize": 171
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-long",
"hz": 294647.6540008401,
"success": true,
"fastest": false,
"rme": 0.024928682964508394,
"rhz": 0.7543996843123166,
"sampleSize": 152
},
"fn if": {
"name": "fn if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-long",
"hz": 172908.7333875609,
"success": true,
"fastest": false,
"rme": 0.016138250187070446,
"rhz": 0.44270603248056595,
"sampleSize": 150
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-long",
"hz": 124965.18805848437,
"success": true,
"fastest": false,
"rme": 0.027301864775113205,
"rhz": 0.31995400995482254,
"sampleSize": 147
},
"escape31": {
"name": "escape31",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-long",
"hz": 188347.98186648387,
"success": true,
"fastest": false,
"rme": 0.026531318695469853,
"rhz": 0.48223583704668577,
"sampleSize": 144
},
"native": {
"name": "native",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-long",
"hz": 390572.3453071566,
"success": true,
"fastest": true,
"rme": 0.024051025167801422,
"rhz": 1,
"sampleSize": 149
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-long",
"hz": 456455.66360715276,
"success": true,
"fastest": false,
"rme": 0.01632374357524679,
"rhz": 0.6291712254945833,
"sampleSize": 169
},
"fn if": {
"name": "fn if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-long",
"hz": 193679.9495017831,
"success": true,
"fastest": false,
"rme": 0.01950064206644373,
"rhz": 0.2669653613645212,
"sampleSize": 169
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-long",
"hz": 103885.45242442277,
"success": true,
"fastest": false,
"rme": 0.02131717275903938,
"rhz": 0.14319405502915764,
"sampleSize": 165
},
"escape31": {
"name": "escape31",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-long",
"hz": 203638.06134905503,
"success": true,
"fastest": false,
"rme": 0.020628729439989432,
"rhz": 0.28069146432279773,
"sampleSize": 171
},
"native": {
"name": "native",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-long",
"hz": 725487.1887193171,
"success": true,
"fastest": true,
"rme": 0.020436075036992615,
"rhz": 1,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 292285.14849283424,
"success": true,
"fastest": false,
"rme": 0.029313572210377326,
"rhz": 0.6340733965180414,
"sampleSize": 170
},
"fn if": {
"name": "fn if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 163169.81969413554,
"success": true,
"fastest": false,
"rme": 0.024903199178875946,
"rhz": 0.35397502170806816,
"sampleSize": 163
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 164334.08219979555,
"success": true,
"fastest": false,
"rme": 0.022262815350227484,
"rhz": 0.3565007329363297,
"sampleSize": 163
},
"escape31": {
"name": "escape31",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 163872.13126377563,
"success": true,
"fastest": false,
"rme": 0.025364753280213054,
"rhz": 0.3554985923878372,
"sampleSize": 163
},
"native": {
"name": "native",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 460964.2197541997,
"success": true,
"fastest": true,
"rme": 0.04515613595385393,
"rhz": 1,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 384943.06980031956,
"success": true,
"fastest": false,
"rme": 0.020243907492717567,
"rhz": 0.6228702284653227,
"sampleSize": 167
},
"fn if": {
"name": "fn if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 110991.37890127092,
"success": true,
"fastest": false,
"rme": 0.028344902311864196,
"rhz": 0.17959337615761495,
"sampleSize": 171
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 78994.03583279483,
"success": true,
"fastest": false,
"rme": 0.012880272414078419,
"rhz": 0.12781898677145626,
"sampleSize": 169
},
"escape31": {
"name": "escape31",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 112745.75228367363,
"success": true,
"fastest": false,
"rme": 0.029183958343077552,
"rhz": 0.18243209968646687,
"sampleSize": 170
},
"native": {
"name": "native",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 618014.8804812408,
"success": true,
"fastest": true,
"rme": 0.025956314459866358,
"rhz": 1,
"sampleSize": 160
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 376419.7269868499,
"success": true,
"fastest": false,
"rme": 0.02384499571699006,
"rhz": 0.5037035677866308,
"sampleSize": 169
},
"fn if": {
"name": "fn if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 135765.75434799597,
"success": true,
"fastest": false,
"rme": 0.014645250447295578,
"rhz": 0.18167404613923935,
"sampleSize": 172
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 71111.50057399167,
"success": true,
"fastest": false,
"rme": 0.03988751428801817,
"rhz": 0.09515738411614111,
"sampleSize": 169
},
"escape31": {
"name": "escape31",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 139727.09470691156,
"success": true,
"fastest": false,
"rme": 0.019847762101041267,
"rhz": 0.18697488753768354,
"sampleSize": 161
},
"native": {
"name": "native",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 747304.0714023721,
"success": true,
"fastest": true,
"rme": 0.01350595023982867,
"rhz": 1,
"sampleSize": 167
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 295607.88583768904,
"success": true,
"fastest": false,
"rme": 0.007232800727358036,
"rhz": 0.4980642885243391,
"sampleSize": 170
},
"fn if": {
"name": "fn if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 89162.00387931858,
"success": true,
"fastest": false,
"rme": 0.014524314993346383,
"rhz": 0.15022742001524522,
"sampleSize": 168
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 58497.49421155238,
"success": true,
"fastest": false,
"rme": 0.019957328292353076,
"rhz": 0.09856135181363554,
"sampleSize": 158
},
"escape31": {
"name": "escape31",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 94657.77431504549,
"success": true,
"fastest": false,
"rme": 0.018818194357686804,
"rhz": 0.1594871425162423,
"sampleSize": 169
},
"native": {
"name": "native",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-long",
"hz": 593513.513513514,
"success": true,
"fastest": true,
"rme": 0.011966146496422055,
"rhz": 1,
"sampleSize": 159
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-long",
"hz": 402089.26277975074,
"success": true,
"fastest": false,
"rme": 0.009840618321492465,
"rhz": 0.33427940860849686,
"sampleSize": 176
},
"fn if": {
"name": "fn if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-long",
"hz": 92081.06960950758,
"success": true,
"fastest": false,
"rme": 0.00906764573748056,
"rhz": 0.07655216973541666,
"sampleSize": 177
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-long",
"hz": 82352.01198595639,
"success": true,
"fastest": false,
"rme": 0.016802527454663683,
"rhz": 0.06846385718950287,
"sampleSize": 174
},
"escape31": {
"name": "escape31",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-long",
"hz": 92918.88649108761,
"success": true,
"fastest": false,
"rme": 0.01548384596707835,
"rhz": 0.07724869400905834,
"sampleSize": 178
},
"native": {
"name": "native",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-long",
"hz": 1202853.8175699352,
"success": true,
"fastest": true,
"rme": 0.009327160436626335,
"rhz": 1,
"sampleSize": 176
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-long",
"hz": 338041.79919469816,
"success": true,
"fastest": false,
"rme": 0.028614838392745215,
"rhz": 0.37806329872403155,
"sampleSize": 167
},
"fn if": {
"name": "fn if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-long",
"hz": 93369.49659361344,
"success": true,
"fastest": false,
"rme": 0.02106853001441757,
"rhz": 0.10442371318125844,
"sampleSize": 167
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-long",
"hz": 83557.77738018853,
"success": true,
"fastest": false,
"rme": 0.016320452691922446,
"rhz": 0.09345036331500452,
"sampleSize": 169
},
"escape31": {
"name": "escape31",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-long",
"hz": 100947.54042740246,
"success": true,
"fastest": false,
"rme": 0.013158480020082207,
"rhz": 0.11289893800997104,
"sampleSize": 173
},
"native": {
"name": "native",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-long",
"hz": 894140.7439854478,
"success": true,
"fastest": true,
"rme": 0.028000583912129402,
"rhz": 1,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 421050.7010850686,
"success": true,
"fastest": false,
"rme": 0.017587416521659537,
"rhz": 0.3627606464390377,
"sampleSize": 172
},
"fn if": {
"name": "fn if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 612197.8607722911,
"success": true,
"fastest": false,
"rme": 0.014130797234954116,
"rhz": 0.5274454861375074,
"sampleSize": 171
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 638820.1263584908,
"success": true,
"fastest": false,
"rme": 0.015818194070298164,
"rhz": 0.5503821782005622,
"sampleSize": 172
},
"escape31": {
"name": "escape31",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 906462.1950352091,
"success": true,
"fastest": false,
"rme": 0.01609037527785378,
"rhz": 0.7809720088248596,
"sampleSize": 169
},
"native": {
"name": "native",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 1160684.6145474233,
"success": true,
"fastest": true,
"rme": 0.01621618746604937,
"rhz": 1,
"sampleSize": 171
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-short",
"hz": 383550.51167372527,
"success": true,
"fastest": false,
"rme": 0.07384001243033904,
"rhz": 0.29787002825625064,
"sampleSize": 146
},
"fn if": {
"name": "fn if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-short",
"hz": 618580.987554145,
"success": true,
"fastest": false,
"rme": 0.020759770661330924,
"rhz": 0.4803975764169341,
"sampleSize": 147
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-short",
"hz": 566687.2120246552,
"success": true,
"fastest": false,
"rme": 0.024273474903516126,
"rhz": 0.4400962343177167,
"sampleSize": 147
},
"escape31": {
"name": "escape31",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-short",
"hz": 924253.0121271972,
"success": true,
"fastest": false,
"rme": 0.022119683746745625,
"rhz": 0.7177862170927007,
"sampleSize": 148
},
"native": {
"name": "native",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "escape-short",
"hz": 1287643.8556744142,
"success": true,
"fastest": true,
"rme": 0.029172189762178075,
"rhz": 1,
"sampleSize": 145
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-short",
"hz": 613213.9007119045,
"success": true,
"fastest": false,
"rme": 0.014974749195626105,
"rhz": 0.4084658150744344,
"sampleSize": 172
},
"fn if": {
"name": "fn if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-short",
"hz": 714253.4975991725,
"success": true,
"fastest": false,
"rme": 0.018992545536700448,
"rhz": 0.4757689555437499,
"sampleSize": 168
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-short",
"hz": 595903.4738796077,
"success": true,
"fastest": false,
"rme": 0.017260970308691965,
"rhz": 0.3969352258344779,
"sampleSize": 167
},
"escape31": {
"name": "escape31",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-short",
"hz": 1013969.6558224236,
"success": true,
"fastest": false,
"rme": 0.01728600326103597,
"rhz": 0.6754118610902676,
"sampleSize": 172
},
"native": {
"name": "native",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "escape-short",
"hz": 1501261.2514468536,
"success": true,
"fastest": true,
"rme": 0.012863296877945634,
"rhz": 1,
"sampleSize": 172
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 419028.44034580654,
"success": true,
"fastest": false,
"rme": 0.025905905131812446,
"rhz": 0.4073284694703158,
"sampleSize": 171
},
"fn if": {
"name": "fn if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 902805.3886212112,
"success": true,
"fastest": false,
"rme": 0.026929282009452646,
"rhz": 0.877597560855661,
"sampleSize": 163
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 890390.3422737826,
"success": true,
"fastest": false,
"rme": 0.02730976550531793,
"rhz": 0.8655291632477855,
"sampleSize": 163
},
"escape31": {
"name": "escape31",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 1028723.6757369431,
"success": true,
"fastest": true,
"rme": 0.02519295334946404,
"rhz": 1,
"sampleSize": 161
},
"native": {
"name": "native",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 773500.4517877887,
"success": true,
"fastest": false,
"rme": 0.05956270707829001,
"rhz": 0.7519030328855597,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 581239.0461276657,
"success": true,
"fastest": false,
"rme": 0.024732909178170403,
"rhz": 0.44122546422972886,
"sampleSize": 170
},
"fn if": {
"name": "fn if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 555729.4222633594,
"success": true,
"fastest": false,
"rme": 0.027909801235014572,
"rhz": 0.42186080573536117,
"sampleSize": 169
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 501086.63136037166,
"success": true,
"fastest": false,
"rme": 0.01642873238900235,
"rhz": 0.38038081408028707,
"sampleSize": 169
},
"escape31": {
"name": "escape31",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 596529.88438048,
"success": true,
"fastest": false,
"rme": 0.02664240853437143,
"rhz": 0.4528329211814042,
"sampleSize": 169
},
"native": {
"name": "native",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 1317328.8788813811,
"success": true,
"fastest": true,
"rme": 0.02441843017891321,
"rhz": 1,
"sampleSize": 174
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 597081.931706083,
"success": true,
"fastest": false,
"rme": 0.016901868480679677,
"rhz": 0.4197455025738681,
"sampleSize": 174
},
"fn if": {
"name": "fn if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 663555.4809467852,
"success": true,
"fastest": false,
"rme": 0.019327894019762218,
"rhz": 0.4664760630753073,
"sampleSize": 162
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 427901.8236123469,
"success": true,
"fastest": false,
"rme": 0.02050123195761757,
"rhz": 0.30081276365410636,
"sampleSize": 169
},
"escape31": {
"name": "escape31",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 836386.5501103073,
"success": true,
"fastest": false,
"rme": 0.02042011161457491,
"rhz": 0.5879754086996735,
"sampleSize": 172
},
"native": {
"name": "native",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 1422485.5967361,
"success": true,
"fastest": true,
"rme": 0.018082968121653838,
"rhz": 1,
"sampleSize": 174
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 451918.6269906427,
"success": true,
"fastest": false,
"rme": 0.014367526545734477,
"rhz": 0.3631427610829891,
"sampleSize": 166
},
"fn if": {
"name": "fn if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 458041.9492929381,
"success": true,
"fastest": false,
"rme": 0.014164362470847206,
"rhz": 0.36806320479796495,
"sampleSize": 168
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 307481.77110852796,
"success": true,
"fastest": false,
"rme": 0.012392303592867627,
"rhz": 0.2470793914528124,
"sampleSize": 159
},
"escape31": {
"name": "escape31",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 521251.41025503376,
"success": true,
"fastest": false,
"rme": 0.01429694912407263,
"rhz": 0.41885566346070136,
"sampleSize": 159
},
"native": {
"name": "native",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "escape-short",
"hz": 1244465.4703921403,
"success": true,
"fastest": true,
"rme": 0.013138952266236287,
"rhz": 1,
"sampleSize": 164
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-short",
"hz": 537701.626064145,
"success": true,
"fastest": false,
"rme": 0.03257562097595429,
"rhz": 0.26353460226563175,
"sampleSize": 171
},
"fn if": {
"name": "fn if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-short",
"hz": 553756.7978187922,
"success": true,
"fastest": false,
"rme": 0.012983308427960112,
"rhz": 0.27140345200975097,
"sampleSize": 177
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-short",
"hz": 583552.7504135764,
"success": true,
"fastest": false,
"rme": 0.010066045577636453,
"rhz": 0.28600683822911,
"sampleSize": 177
},
"escape31": {
"name": "escape31",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-short",
"hz": 570858.7989009853,
"success": true,
"fastest": false,
"rme": 0.025407559708725852,
"rhz": 0.27978536650410013,
"sampleSize": 175
},
"native": {
"name": "native",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "escape-short",
"hz": 2040345.4477760172,
"success": true,
"fastest": true,
"rme": 0.025360418301269214,
"rhz": 1,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,57 @@
{
"reg": {
"name": "reg",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-short",
"hz": 533176.8779355418,
"success": true,
"fastest": false,
"rme": 0.029034713022792057,
"rhz": 0.282500548086439,
"sampleSize": 164
},
"fn if": {
"name": "fn if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-short",
"hz": 533457.5359566113,
"success": true,
"fastest": false,
"rme": 0.02156079440256287,
"rhz": 0.28264925304357064,
"sampleSize": 168
},
"fn if reverse": {
"name": "fn if reverse",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-short",
"hz": 603198.7984494594,
"success": true,
"fastest": false,
"rme": 0.013174622557629538,
"rhz": 0.3196012396990228,
"sampleSize": 175
},
"escape31": {
"name": "escape31",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-short",
"hz": 713978.8522159118,
"success": true,
"fastest": false,
"rme": 0.011570099195855615,
"rhz": 0.37829738201345275,
"sampleSize": 174
},
"native": {
"name": "native",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "escape-short",
"hz": 1887348.118604008,
"success": true,
"fastest": true,
"rme": 0.02768628880843476,
"rhz": 1,
"sampleSize": 171
}
}

20
node_modules/fast-stable-stringify/results/escape.md generated vendored Normal file
View File

@@ -0,0 +1,20 @@
| Suite | Browser | reg | fn if | fn if reverse | escape31 | native |
| :----------- | :-------------------------------------- | --------------: | --------------: | --------------: | ----------------: | ----------------: |
| escape-long | Chrome 60.0.3112 (Windows 7 0.0.0) | 85.71% (±1.21%) | 51.57% (±0.51%) | 45.53% (±0.41%) | 55.48% (±0.59%) | *100.00% (±1.04%) |
| escape-long | Chrome Mobile 55.0.2883 (Android 6.0.0) | 75.44% (±1.88%) | 44.27% (±0.71%) | 32.00% (±0.87%) | 48.22% (±1.28%) | *100.00% (±2.41%) |
| escape-long | Edge 14.14393.0 (Windows 10 0.0.0) | 62.92% (±1.03%) | 26.70% (±0.52%) | 14.32% (±0.31%) | 28.07% (±0.58%) | *100.00% (±2.04%) |
| escape-long | Firefox 54.0.0 (Windows 7 0.0.0) | 63.41% (±1.86%) | 35.40% (±0.88%) | 35.65% (±0.79%) | 35.55% (±0.90%) | *100.00% (±4.52%) |
| escape-long | IE 10.0.0 (Windows 7 0.0.0) | 62.29% (±1.26%) | 17.96% (±0.51%) | 12.78% (±0.16%) | 18.24% (±0.53%) | *100.00% (±2.60%) |
| escape-long | IE 11.0.0 (Windows 7 0.0.0) | 50.37% (±1.20%) | 18.17% (±0.27%) | 9.52% (±0.38%) | 18.70% (±0.37%) | *100.00% (±1.35%) |
| escape-long | IE 9.0.0 (Windows 7 0.0.0) | 49.81% (±0.36%) | 15.02% (±0.22%) | 9.86% (±0.20%) | 15.95% (±0.30%) | *100.00% (±1.20%) |
| escape-long | Mobile Safari 10.0.0 (iOS 10.3.0) | 33.43% (±0.33%) | 7.66% (±0.07%) | 6.85% (±0.12%) | 7.72% (±0.12%) | *100.00% (±0.93%) |
| escape-long | Safari 10.0.1 (Mac OS X 10.12.1) | 37.81% (±1.08%) | 10.44% (±0.22%) | 9.35% (±0.15%) | 11.29% (±0.15%) | *100.00% (±2.80%) |
| escape-short | Chrome 60.0.3112 (Windows 7 0.0.0) | 36.28% (±0.64%) | 52.74% (±0.75%) | 55.04% (±0.87%) | 78.10% (±1.26%) | *100.00% (±1.62%) |
| escape-short | Chrome Mobile 55.0.2883 (Android 6.0.0) | 29.79% (±2.20%) | 48.04% (±1.00%) | 44.01% (±1.07%) | 71.78% (±1.59%) | *100.00% (±2.92%) |
| escape-short | Edge 14.14393.0 (Windows 10 0.0.0) | 40.85% (±0.61%) | 47.58% (±0.90%) | 39.69% (±0.69%) | 67.54% (±1.17%) | *100.00% (±1.29%) |
| escape-short | Firefox 54.0.0 (Windows 7 0.0.0) | 40.73% (±1.06%) | 87.76% (±2.36%) | 86.55% (±2.36%) | *100.00% (±2.52%) | 75.19% (±4.48%) |
| escape-short | IE 10.0.0 (Windows 7 0.0.0) | 44.12% (±1.09%) | 42.19% (±1.18%) | 38.04% (±0.62%) | 45.28% (±1.21%) | *100.00% (±2.44%) |
| escape-short | IE 11.0.0 (Windows 7 0.0.0) | 41.97% (±0.71%) | 46.65% (±0.90%) | 30.08% (±0.62%) | 58.80% (±1.20%) | *100.00% (±1.81%) |
| escape-short | IE 9.0.0 (Windows 7 0.0.0) | 36.31% (±0.52%) | 36.81% (±0.52%) | 24.71% (±0.31%) | 41.89% (±0.60%) | *100.00% (±1.31%) |
| escape-short | Mobile Safari 10.0.0 (iOS 10.3.0) | 26.35% (±0.86%) | 27.14% (±0.35%) | 28.60% (±0.29%) | 27.98% (±0.71%) | *100.00% (±2.54%) |
| escape-short | Safari 10.0.1 (Mac OS X 10.12.1) | 28.25% (±0.82%) | 28.26% (±0.61%) | 31.96% (±0.42%) | 37.83% (±0.44%) | *100.00% (±2.77%) |

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 36411.53526294366,
"success": true,
"fastest": true,
"rme": 0.007522440507810787,
"rhz": 1,
"sampleSize": 211
},
"while + if": {
"name": "while + if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 36119.51959062462,
"success": true,
"fastest": true,
"rme": 0.009843502140930696,
"rhz": 0.9919801329383596,
"sampleSize": 211
},
"array join": {
"name": "array join",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 32849.563515559996,
"success": true,
"fastest": false,
"rme": 0.0115358668742216,
"rhz": 0.902174634448641,
"sampleSize": 213
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-long",
"hz": 26338.90022369847,
"success": true,
"fastest": true,
"rme": 0.025063817288098963,
"rhz": 1,
"sampleSize": 193
},
"while + if": {
"name": "while + if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-long",
"hz": 25959.375873252164,
"success": true,
"fastest": false,
"rme": 0.023417818686660433,
"rhz": 0.9855907290272952,
"sampleSize": 192
},
"array join": {
"name": "array join",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-long",
"hz": 25445.828238320097,
"success": true,
"fastest": false,
"rme": 0.02452188410321602,
"rhz": 0.9660930419344225,
"sampleSize": 191
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-long",
"hz": 26381.694221257356,
"success": true,
"fastest": false,
"rme": 0.014195682606163837,
"rhz": 0.9244556621814648,
"sampleSize": 210
},
"while + if": {
"name": "while + if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-long",
"hz": 23771.041213810397,
"success": true,
"fastest": false,
"rme": 0.020663938617191867,
"rhz": 0.8329743139979672,
"sampleSize": 206
},
"array join": {
"name": "array join",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-long",
"hz": 28537.544092708253,
"success": true,
"fastest": true,
"rme": 0.014926600493283032,
"rhz": 1,
"sampleSize": 209
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 14666.732983263433,
"success": true,
"fastest": true,
"rme": 0.017720925761977167,
"rhz": 1,
"sampleSize": 206
},
"while + if": {
"name": "while + if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 14304.32478751105,
"success": true,
"fastest": false,
"rme": 0.019517232560753738,
"rhz": 0.9752904620159148,
"sampleSize": 206
},
"array join": {
"name": "array join",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 14128.325816957695,
"success": true,
"fastest": false,
"rme": 0.02191559968248959,
"rhz": 0.9632905864639297,
"sampleSize": 212
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 24532.66436126496,
"success": true,
"fastest": false,
"rme": 0.024335714081936355,
"rhz": 0.8134502756892201,
"sampleSize": 210
},
"while + if": {
"name": "while + if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 22714.555324734756,
"success": true,
"fastest": false,
"rme": 0.02508863769322542,
"rhz": 0.7531656985548391,
"sampleSize": 210
},
"array join": {
"name": "array join",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 30158.775643021236,
"success": true,
"fastest": true,
"rme": 0.02294916733281892,
"rhz": 1,
"sampleSize": 214
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 23299.253985498104,
"success": true,
"fastest": false,
"rme": 0.012604441829821445,
"rhz": 0.7612665520486154,
"sampleSize": 213
},
"while + if": {
"name": "while + if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 21471.605639232734,
"success": true,
"fastest": false,
"rme": 0.016078837449727854,
"rhz": 0.7015510111225076,
"sampleSize": 211
},
"array join": {
"name": "array join",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 30605.907908075522,
"success": true,
"fastest": true,
"rme": 0.01788399233872233,
"rhz": 1,
"sampleSize": 215
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 19171.209140973908,
"success": true,
"fastest": false,
"rme": 0.007741079564622982,
"rhz": 0.7577476601195926,
"sampleSize": 207
},
"while + if": {
"name": "while + if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 18014.493794751823,
"success": true,
"fastest": false,
"rme": 0.007724848359851887,
"rhz": 0.7120281470425117,
"sampleSize": 217
},
"array join": {
"name": "array join",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-long",
"hz": 25300.255150835023,
"success": true,
"fastest": true,
"rme": 0.006573257208666089,
"rhz": 1,
"sampleSize": 214
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-long",
"hz": 23297.55521668556,
"success": true,
"fastest": false,
"rme": 0.00631699710436391,
"rhz": 0.9710234238747862,
"sampleSize": 207
},
"while + if": {
"name": "while + if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-long",
"hz": 22230.138102258647,
"success": true,
"fastest": false,
"rme": 0.026905685238200833,
"rhz": 0.9265343342894962,
"sampleSize": 212
},
"array join": {
"name": "array join",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-long",
"hz": 23992.783947187032,
"success": true,
"fastest": true,
"rme": 0.011710983965349786,
"rhz": 1,
"sampleSize": 209
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-long",
"hz": 24983.89047457792,
"success": true,
"fastest": false,
"rme": 0.014556136047743569,
"rhz": 0.9435641971541613,
"sampleSize": 206
},
"while + if": {
"name": "while + if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-long",
"hz": 24686.899076943977,
"success": true,
"fastest": false,
"rme": 0.014123011962622743,
"rhz": 0.9323477515027001,
"sampleSize": 209
},
"array join": {
"name": "array join",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-long",
"hz": 26478.209484771287,
"success": true,
"fastest": true,
"rme": 0.012780034002736902,
"rhz": 1,
"sampleSize": 209
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 310902.8640157301,
"success": true,
"fastest": true,
"rme": 0.01056819380382985,
"rhz": 0.9976547366334327,
"sampleSize": 211
},
"while + if": {
"name": "while + if",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 311633.7271798719,
"success": true,
"fastest": true,
"rme": 0.008028741690013557,
"rhz": 1,
"sampleSize": 212
},
"array join": {
"name": "array join",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 264982.8188203513,
"success": true,
"fastest": false,
"rme": 0.010026939975144393,
"rhz": 0.8503021197940038,
"sampleSize": 212
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-short",
"hz": 235578.4947828406,
"success": true,
"fastest": true,
"rme": 0.03974005580662533,
"rhz": 1,
"sampleSize": 190
},
"while + if": {
"name": "while + if",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-short",
"hz": 225073.11912308275,
"success": true,
"fastest": false,
"rme": 0.029700688684889318,
"rhz": 0.9554060498202867,
"sampleSize": 193
},
"array join": {
"name": "array join",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "itar-short",
"hz": 221468.15872985727,
"success": true,
"fastest": false,
"rme": 0.020249883449366055,
"rhz": 0.9401034628988931,
"sampleSize": 196
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-short",
"hz": 258326.20076670017,
"success": true,
"fastest": true,
"rme": 0.01562542930728137,
"rhz": 1,
"sampleSize": 210
},
"while + if": {
"name": "while + if",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-short",
"hz": 250131.81743630744,
"success": true,
"fastest": false,
"rme": 0.015426062316980953,
"rhz": 0.9682789306463216,
"sampleSize": 210
},
"array join": {
"name": "array join",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "itar-short",
"hz": 257660.10445245806,
"success": true,
"fastest": true,
"rme": 0.012689221094028156,
"rhz": 0.9974214914620926,
"sampleSize": 212
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 144024.47792698225,
"success": true,
"fastest": false,
"rme": 0.016729460336229386,
"rhz": 0.9777132666148783,
"sampleSize": 210
},
"while + if": {
"name": "while + if",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 147307.48046984777,
"success": true,
"fastest": true,
"rme": 0.013771889405180435,
"rhz": 1,
"sampleSize": 211
},
"array join": {
"name": "array join",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 126449.56973836492,
"success": true,
"fastest": false,
"rme": 0.015284854766094137,
"rhz": 0.8584056243107612,
"sampleSize": 206
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 267177.37118361465,
"success": true,
"fastest": false,
"rme": 0.027664987498672043,
"rhz": 0.8851453953349694,
"sampleSize": 209
},
"while + if": {
"name": "while + if",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 240946.1863334928,
"success": true,
"fastest": false,
"rme": 0.024334312597545857,
"rhz": 0.7982427793633902,
"sampleSize": 212
},
"array join": {
"name": "array join",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 301845.7448818401,
"success": true,
"fastest": true,
"rme": 0.025510367215445445,
"rhz": 1,
"sampleSize": 211
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 299157.6065641091,
"success": true,
"fastest": false,
"rme": 0.017444833079293707,
"rhz": 0.9755083449865074,
"sampleSize": 214
},
"while + if": {
"name": "while + if",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 285034.8470662392,
"success": true,
"fastest": false,
"rme": 0.015476162917584716,
"rhz": 0.9294561322327022,
"sampleSize": 213
},
"array join": {
"name": "array join",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 306668.42380343436,
"success": true,
"fastest": true,
"rme": 0.015684034742271553,
"rhz": 1,
"sampleSize": 215
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 240965.2696072598,
"success": true,
"fastest": false,
"rme": 0.013595390361967868,
"rhz": 0.8402592586317352,
"sampleSize": 209
},
"while + if": {
"name": "while + if",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 230187.22948896923,
"success": true,
"fastest": false,
"rme": 0.01328665941718909,
"rhz": 0.8026756350080547,
"sampleSize": 217
},
"array join": {
"name": "array join",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "itar-short",
"hz": 286774.90564000903,
"success": true,
"fastest": true,
"rme": 0.015580324289100318,
"rhz": 1,
"sampleSize": 198
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-short",
"hz": 203203.20404721753,
"success": true,
"fastest": false,
"rme": 0.031725599593069885,
"rhz": 0.8894144359714051,
"sampleSize": 201
},
"while + if": {
"name": "while + if",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-short",
"hz": 228468.5247156822,
"success": true,
"fastest": true,
"rme": 0.012472328119036293,
"rhz": 1,
"sampleSize": 211
},
"array join": {
"name": "array join",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "itar-short",
"hz": 227457.50626324932,
"success": true,
"fastest": false,
"rme": 0.02322443731392338,
"rhz": 0.9955748020271455,
"sampleSize": 206
}
}

View File

@@ -0,0 +1,35 @@
{
"for + if": {
"name": "for + if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-short",
"hz": 252961.02857752063,
"success": true,
"fastest": true,
"rme": 0.015411371090374376,
"rhz": 1,
"sampleSize": 205
},
"while + if": {
"name": "while + if",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-short",
"hz": 245223.46117305866,
"success": true,
"fastest": false,
"rme": 0.012279924013953218,
"rhz": 0.9694120179382067,
"sampleSize": 208
},
"array join": {
"name": "array join",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "itar-short",
"hz": 252326.4006791167,
"success": true,
"fastest": true,
"rme": 0.013639798860321599,
"rhz": 0.9974912028861811,
"sampleSize": 207
}
}

20
node_modules/fast-stable-stringify/results/itar.md generated vendored Normal file
View File

@@ -0,0 +1,20 @@
| Suite | Browser | for + if | while + if | array join |
| :--------- | :-------------------------------------- | ----------------: | ----------------: | ----------------: |
| itar-long | Chrome 60.0.3112 (Windows 7 0.0.0) | *100.00% (±0.75%) | *99.20% (±0.98%) | 90.22% (±1.04%) |
| itar-long | Chrome Mobile 55.0.2883 (Android 6.0.0) | *100.00% (±2.51%) | 98.56% (±2.31%) | 96.61% (±2.37%) |
| itar-long | Edge 14.14393.0 (Windows 10 0.0.0) | 92.45% (±1.31%) | 83.30% (±1.72%) | *100.00% (±1.49%) |
| itar-long | Firefox 54.0.0 (Windows 7 0.0.0) | *100.00% (±1.77%) | 97.53% (±1.90%) | 96.33% (±2.11%) |
| itar-long | IE 10.0.0 (Windows 7 0.0.0) | 81.35% (±1.98%) | 75.32% (±1.89%) | *100.00% (±2.29%) |
| itar-long | IE 11.0.0 (Windows 7 0.0.0) | 76.13% (±0.96%) | 70.16% (±1.13%) | *100.00% (±1.79%) |
| itar-long | IE 9.0.0 (Windows 7 0.0.0) | 75.77% (±0.59%) | 71.20% (±0.55%) | *100.00% (±0.66%) |
| itar-long | Mobile Safari 10.0.0 (iOS 10.3.0) | 97.10% (±0.61%) | 92.65% (±2.49%) | *100.00% (±1.17%) |
| itar-long | Safari 10.0.1 (Mac OS X 10.12.1) | 94.36% (±1.37%) | 93.23% (±1.32%) | *100.00% (±1.28%) |
| itar-short | Chrome 60.0.3112 (Windows 7 0.0.0) | *99.77% (±1.05%) | *100.00% (±0.80%) | 85.03% (±0.85%) |
| itar-short | Chrome Mobile 55.0.2883 (Android 6.0.0) | *100.00% (±3.97%) | 95.54% (±2.84%) | 94.01% (±1.90%) |
| itar-short | Edge 14.14393.0 (Windows 10 0.0.0) | *100.00% (±1.56%) | 96.83% (±1.49%) | *99.74% (±1.27%) |
| itar-short | Firefox 54.0.0 (Windows 7 0.0.0) | 97.77% (±1.64%) | *100.00% (±1.38%) | 85.84% (±1.31%) |
| itar-short | IE 10.0.0 (Windows 7 0.0.0) | 88.51% (±2.45%) | 79.82% (±1.94%) | *100.00% (±2.55%) |
| itar-short | IE 11.0.0 (Windows 7 0.0.0) | 97.55% (±1.70%) | 92.95% (±1.44%) | *100.00% (±1.57%) |
| itar-short | IE 9.0.0 (Windows 7 0.0.0) | 84.03% (±1.14%) | 80.27% (±1.07%) | *100.00% (±1.56%) |
| itar-short | Mobile Safari 10.0.0 (iOS 10.3.0) | 88.94% (±2.82%) | *100.00% (±1.25%) | 99.56% (±2.31%) |
| itar-short | Safari 10.0.1 (Mac OS X 10.12.1) | *100.00% (±1.54%) | 96.94% (±1.19%) | *99.75% (±1.36%) |

14
node_modules/fast-stable-stringify/results/iter.md generated vendored Normal file
View File

@@ -0,0 +1,14 @@
| Suite | Browser | keys-while | keys-for | incr-for |
| :---- | :-------------------------------------- | ----------------: | ----------------: | --------------: |
| iter | Chrome 60.0.3112 (Windows 7 0.0.0) | *100.00% (±1.19%) | *98.26% (±1.51%) | 30.51% (±0.67%) |
| iter | Chrome Mobile 39.0.0 (Android 5.1.1) | *100.00% (±2.29%) | 93.22% (±1.78%) | 37.71% (±0.67%) |
| iter | Chrome Mobile 55.0.2883 (Android 6.0.0) | *100.00% (±2.89%) | 95.03% (±2.24%) | 32.52% (±0.61%) |
| iter | Edge 14.14393.0 (Windows 10 0.0.0) | *100.00% (±1.79%) | *98.76% (±2.02%) | 37.88% (±0.64%) |
| iter | Firefox 54.0.0 (Windows 7 0.0.0) | *100.00% (±2.06%) | *99.28% (±2.17%) | 8.57% (±0.10%) |
| iter | IE 10.0.0 (Windows 7 0.0.0) | *100.00% (±2.27%) | *94.97% (±2.48%) | 41.65% (±1.21%) |
| iter | IE 11.0.0 (Windows 7 0.0.0) | *100.00% (±1.98%) | 95.75% (±1.72%) | 38.21% (±0.75%) |
| iter | IE 9.0.0 (Windows 7 0.0.0) | *100.00% (±1.37%) | 90.99% (±1.59%) | 45.06% (±0.93%) |
| iter | Mobile Safari 10.0.0 (iOS 10.3.0) | *100.00% (±3.09%) | *99.25% (±2.38%) | 47.22% (±1.16%) |
| iter | Mobile Safari 9.0.0 (iOS 9.2.0) | 97.40% (±2.65%) | *100.00% (±1.98%) | 57.77% (±1.32%) |
| iter | Safari 10.0.1 (Mac OS X 10.12.1) | *100.00% (±0.60%) | *93.17% (±2.38%) | 47.47% (±0.55%) |
| iter | Safari 9.1.2 (Mac OS X 10.11.6) | *100.00% (±1.96%) | 98.12% (±1.52%) | 51.10% (±0.89%) |

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 56574.051312644304,
"success": true,
"fastest": true,
"rme": 0.011898094024098757,
"rhz": 1,
"sampleSize": 172
},
"keys-for": {
"name": "keys-for",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 55589.971512360826,
"success": true,
"fastest": true,
"rme": 0.015368014920102797,
"rhz": 0.9826054564336365,
"sampleSize": 170
},
"incr-for": {
"name": "incr-for",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 17263.158679413995,
"success": true,
"fastest": false,
"rme": 0.022115589132274314,
"rhz": 0.3051426984433706,
"sampleSize": 170
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Chrome Mobile 39.0.0 (Android 5.1.1)",
"suite": "iter",
"hz": 41449.9799734825,
"success": true,
"fastest": true,
"rme": 0.022947386031672564,
"rhz": 1,
"sampleSize": 159
},
"keys-for": {
"name": "keys-for",
"browser": "Chrome Mobile 39.0.0 (Android 5.1.1)",
"suite": "iter",
"hz": 38639.94651532041,
"success": true,
"fastest": false,
"rme": 0.019140969586850222,
"rhz": 0.9322066389426532,
"sampleSize": 160
},
"incr-for": {
"name": "incr-for",
"browser": "Chrome Mobile 39.0.0 (Android 5.1.1)",
"suite": "iter",
"hz": 15632.699209216895,
"success": true,
"fastest": false,
"rme": 0.017769563380438193,
"rhz": 0.37714612212642484,
"sampleSize": 161
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "iter",
"hz": 50801.098785564085,
"success": true,
"fastest": true,
"rme": 0.028921852048030095,
"rhz": 1,
"sampleSize": 141
},
"keys-for": {
"name": "keys-for",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "iter",
"hz": 48275.00969473481,
"success": true,
"fastest": false,
"rme": 0.0235223967226664,
"rhz": 0.9502749123302997,
"sampleSize": 140
},
"incr-for": {
"name": "incr-for",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "iter",
"hz": 16517.995894922962,
"success": true,
"fastest": false,
"rme": 0.01887891379164421,
"rhz": 0.32515036662192837,
"sampleSize": 141
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "iter",
"hz": 39031.42857339076,
"success": true,
"fastest": true,
"rme": 0.017905605200443618,
"rhz": 1,
"sampleSize": 168
},
"keys-for": {
"name": "keys-for",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "iter",
"hz": 38547.41168447369,
"success": true,
"fastest": true,
"rme": 0.020491580283930267,
"rhz": 0.987599303776264,
"sampleSize": 170
},
"incr-for": {
"name": "incr-for",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "iter",
"hz": 14785.513229498973,
"success": true,
"fastest": false,
"rme": 0.016773346589086083,
"rhz": 0.37881045531545904,
"sampleSize": 168
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 51288.89848137886,
"success": true,
"fastest": true,
"rme": 0.02056985493082276,
"rhz": 1,
"sampleSize": 167
},
"keys-for": {
"name": "keys-for",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 50917.49218801942,
"success": true,
"fastest": true,
"rme": 0.0218368615440906,
"rhz": 0.9927585441614761,
"sampleSize": 170
},
"incr-for": {
"name": "incr-for",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 4396.20812127132,
"success": true,
"fastest": false,
"rme": 0.011792452259220165,
"rhz": 0.08571461371640539,
"sampleSize": 173
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 35966.149453114274,
"success": true,
"fastest": true,
"rme": 0.022718710100452157,
"rhz": 1,
"sampleSize": 170
},
"keys-for": {
"name": "keys-for",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 34156.64425441182,
"success": true,
"fastest": true,
"rme": 0.026098683427836902,
"rhz": 0.9496886593027886,
"sampleSize": 167
},
"incr-for": {
"name": "incr-for",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 14980.832916171697,
"success": true,
"fastest": false,
"rme": 0.029043619258269707,
"rhz": 0.416525904050441,
"sampleSize": 164
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 41364.6571228128,
"success": true,
"fastest": true,
"rme": 0.019812279223258095,
"rhz": 1,
"sampleSize": 168
},
"keys-for": {
"name": "keys-for",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 39608.00547823607,
"success": true,
"fastest": false,
"rme": 0.017923341293839844,
"rhz": 0.9575325467013739,
"sampleSize": 169
},
"incr-for": {
"name": "incr-for",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 15804.911836102421,
"success": true,
"fastest": false,
"rme": 0.019576578880425893,
"rhz": 0.3820873406293978,
"sampleSize": 170
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 25471.56659459879,
"success": true,
"fastest": true,
"rme": 0.013725500697529026,
"rhz": 1,
"sampleSize": 160
},
"keys-for": {
"name": "keys-for",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 23176.549771364575,
"success": true,
"fastest": false,
"rme": 0.017528369032824627,
"rhz": 0.9098988743110575,
"sampleSize": 171
},
"incr-for": {
"name": "incr-for",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "iter",
"hz": 11476.374922658983,
"success": true,
"fastest": false,
"rme": 0.02058629668256995,
"rhz": 0.45055630481293335,
"sampleSize": 163
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "iter",
"hz": 23603.301526308816,
"success": true,
"fastest": true,
"rme": 0.030880882113979637,
"rhz": 1,
"sampleSize": 167
},
"keys-for": {
"name": "keys-for",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "iter",
"hz": 23426.457275766345,
"success": true,
"fastest": true,
"rme": 0.02398797289803229,
"rhz": 0.9925076476972784,
"sampleSize": 171
},
"incr-for": {
"name": "incr-for",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "iter",
"hz": 11144.323028321938,
"success": true,
"fastest": false,
"rme": 0.024524181905002183,
"rhz": 0.47215102581730795,
"sampleSize": 164
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Mobile Safari 9.0.0 (iOS 9.2.0)",
"suite": "iter",
"hz": 22809.567212345646,
"success": true,
"fastest": false,
"rme": 0.027252985712392003,
"rhz": 0.974024526377425,
"sampleSize": 160
},
"keys-for": {
"name": "keys-for",
"browser": "Mobile Safari 9.0.0 (iOS 9.2.0)",
"suite": "iter",
"hz": 23417.857142857163,
"success": true,
"fastest": true,
"rme": 0.019752086707305883,
"rhz": 1,
"sampleSize": 166
},
"incr-for": {
"name": "incr-for",
"browser": "Mobile Safari 9.0.0 (iOS 9.2.0)",
"suite": "iter",
"hz": 13528.47751268248,
"success": true,
"fastest": false,
"rme": 0.022810499348243016,
"rhz": 0.5776992074959725,
"sampleSize": 170
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "iter",
"hz": 37350.5774949858,
"success": true,
"fastest": true,
"rme": 0.00603595175796559,
"rhz": 1,
"sampleSize": 178
},
"keys-for": {
"name": "keys-for",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "iter",
"hz": 34798.70521653226,
"success": true,
"fastest": true,
"rme": 0.025579700229008188,
"rhz": 0.9316778360710454,
"sampleSize": 165
},
"incr-for": {
"name": "incr-for",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "iter",
"hz": 17731.809750745466,
"success": true,
"fastest": false,
"rme": 0.011567636716923044,
"rhz": 0.4747399087236578,
"sampleSize": 176
}
}

View File

@@ -0,0 +1,35 @@
{
"keys-while": {
"name": "keys-while",
"browser": "Safari 9.1.2 (Mac OS X 10.11.6)",
"suite": "iter",
"hz": 28986.560290298727,
"success": true,
"fastest": true,
"rme": 0.01955387244622322,
"rhz": 1,
"sampleSize": 163
},
"keys-for": {
"name": "keys-for",
"browser": "Safari 9.1.2 (Mac OS X 10.11.6)",
"suite": "iter",
"hz": 28441.864683475418,
"success": true,
"fastest": false,
"rme": 0.015457331597656216,
"rhz": 0.9812086842533846,
"sampleSize": 168
},
"incr-for": {
"name": "incr-for",
"browser": "Safari 9.1.2 (Mac OS X 10.11.6)",
"suite": "iter",
"hz": 14812.329514457171,
"success": true,
"fastest": false,
"rme": 0.01749261318544788,
"rhz": 0.5110068033637847,
"sampleSize": 171
}
}

15
node_modules/fast-stable-stringify/results/libs.md generated vendored Normal file
View File

@@ -0,0 +1,15 @@
> fast-stable-stringify@0.2.0 table /var/www/fast-stable-stringify
> node ./cli/index.js results/libs/*.json
| Suite | Browser | JSON.stringify@native | fast-stable-stringify@48915d2 | json-stable-stringify@1.0.1 | faster-stable-stringify@1.0.0 |
| :---- | :-------------------------------------- | --------------------: | ----------------------------: | --------------------------: | ----------------------------: |
| libs | Chrome 60.0.3112 (Windows 7 0.0.0) | 401.69% (±8.33%) | *154.24% (±2.21%) | 100.00% (±2.08%) | 112.80% (±2.43%) |
| libs | Chrome Mobile 55.0.2883 (Android 6.0.0) | 442.96% (±24.6%) | *149.99% (±3.69%) | 100.00% (±4.11%) | 127.49% (±2.23%) |
| libs | Edge 14.14393.0 (Windows 10 0.0.0) | 452.54% (±8.66%) | *131.31% (±2.46%) | 100.00% (±1.38%) | 110.88% (±1.21%) |
| libs | Firefox 54.0.0 (Windows 7 0.0.0) | 486.58% (±18.1%) | *156.10% (±3.53%) | 100.00% (±3.59%) | 128.86% (±3.73%) |
| libs | IE 10.0.0 (Windows 7 0.0.0) | 419.75% (±13.8%) | *199.75% (±5.28%) | 100.00% (±1.91%) | ? |
| libs | IE 11.0.0 (Windows 7 0.0.0) | 314.45% (±5.07%) | *139.88% (±1.89%) | 100.00% (±1.14%) | ? |
| libs | IE 9.0.0 (Windows 7 0.0.0) | 317.90% (±3.63%) | *185.72% (±1.37%) | 100.00% (±1.62%) | ? |
| libs | Mobile Safari 10.0.0 (iOS 10.3.0) | 746.20% (±14.7%) | *128.14% (±2.21%) | 100.00% (±1.52%) | *123.21% (±3.26%) |
| libs | Safari 10.0.1 (Mac OS X 10.12.1) | 765.32% (±15.0%) | *125.73% (±2.62%) | 100.00% (±1.39%) | 106.87% (±2.29%) |

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 23318.188713986212,
"success": true,
"fastest": false,
"rme": 0.006452566696644349,
"rhz": 2.8306993977343704,
"sampleSize": 172
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 8237.60683760684,
"success": true,
"fastest": true,
"rme": 0.011894091296418823,
"rhz": 1,
"sampleSize": 158
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 5626.352941176469,
"success": true,
"fastest": false,
"rme": 0.011093377969860959,
"rhz": 0.683008190618019,
"sampleSize": 147
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Chrome 60.0.3112 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 6259.964985901354,
"success": true,
"fastest": false,
"rme": 0.011160692994486833,
"rhz": 0.7599251954248374,
"sampleSize": 171
}
}

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "libs",
"hz": 22212.791828443846,
"success": true,
"fastest": false,
"rme": 0.034133757882904736,
"rhz": 3.053112613993719,
"sampleSize": 168
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "libs",
"hz": 7275.4577497839855,
"success": true,
"fastest": true,
"rme": 0.022136656281279646,
"rhz": 1,
"sampleSize": 172
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "libs",
"hz": 4486.002693832929,
"success": true,
"fastest": false,
"rme": 0.05442614536157505,
"rhz": 0.6165938760301539,
"sampleSize": 168
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Chrome Mobile 55.0.2883 (Android 6.0.0)",
"suite": "libs",
"hz": 5816.35383305631,
"success": true,
"fastest": false,
"rme": 0.024694090743245932,
"rhz": 0.7994485066220063,
"sampleSize": 147
}
}

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "libs",
"hz": 21346.248036663714,
"success": true,
"fastest": false,
"rme": 0.02454137183514576,
"rhz": 3.51787999536997,
"sampleSize": 171
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "libs",
"hz": 6067.929566886422,
"success": true,
"fastest": true,
"rme": 0.01636142507497922,
"rhz": 1,
"sampleSize": 149
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "libs",
"hz": 4375.290115410294,
"success": true,
"fastest": false,
"rme": 0.015137049904064193,
"rhz": 0.7210515658070408,
"sampleSize": 141
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Edge 14.14393.0 (Windows 10 0.0.0)",
"suite": "libs",
"hz": 4952.367339646239,
"success": true,
"fastest": false,
"rme": 0.01379783018004576,
"rhz": 0.8161543875973826,
"sampleSize": 142
}
}

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 12763.618282362055,
"success": true,
"fastest": false,
"rme": 0.03332406073767073,
"rhz": 3.133737310719279,
"sampleSize": 171
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 4072.9700727316076,
"success": true,
"fastest": true,
"rme": 0.014051350129001836,
"rhz": 1,
"sampleSize": 140
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 2405.242424808171,
"success": true,
"fastest": false,
"rme": 0.016842437737423815,
"rhz": 0.5905377112665731,
"sampleSize": 132
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Firefox 54.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 3663.1315639282516,
"success": true,
"fastest": false,
"rme": 0.01626300385787352,
"rhz": 0.8993760078063892,
"sampleSize": 169
}
}

View File

@@ -0,0 +1,35 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 14399.576564897297,
"success": true,
"fastest": false,
"rme": 0.025493726819537762,
"rhz": 2.334401010263042,
"sampleSize": 171
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 6168.424577264358,
"success": true,
"fastest": true,
"rme": 0.016452779720660355,
"rhz": 1,
"sampleSize": 151
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "IE 10.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 3365.990566485956,
"success": true,
"fastest": false,
"rme": 0.02423016956488021,
"rhz": 0.5456807527309904,
"sampleSize": 172
}
}

View File

@@ -0,0 +1,35 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 14003.509566928884,
"success": true,
"fastest": false,
"rme": 0.014594535695529036,
"rhz": 2.187283150730621,
"sampleSize": 174
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 6402.239034416405,
"success": true,
"fastest": true,
"rme": 0.013900958827880387,
"rhz": 1,
"sampleSize": 150
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "IE 11.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 4699.054054054045,
"success": true,
"fastest": false,
"rme": 0.01732984212468934,
"rhz": 0.7339704170358873,
"sampleSize": 173
}
}

View File

@@ -0,0 +1,35 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 9927.615273483276,
"success": true,
"fastest": false,
"rme": 0.012686011907513476,
"rhz": 1.8583624088037056,
"sampleSize": 164
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 5342.1309139986515,
"success": true,
"fastest": true,
"rme": 0.013540097031428645,
"rhz": 1,
"sampleSize": 146
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "IE 9.0.0 (Windows 7 0.0.0)",
"suite": "libs",
"hz": 3139.8341435516154,
"success": true,
"fastest": false,
"rme": 0.015201173421442258,
"rhz": 0.5877493820535017,
"sampleSize": 135
}
}

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "libs",
"hz": 19950.666709438065,
"success": true,
"fastest": false,
"rme": 0.04273375035790549,
"rhz": 4.812102268741366,
"sampleSize": 159
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "libs",
"hz": 4145.935725230603,
"success": true,
"fastest": true,
"rme": 0.03670494962202425,
"rhz": 1,
"sampleSize": 162
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "libs",
"hz": 3594.843462246778,
"success": true,
"fastest": false,
"rme": 0.031147610553987737,
"rhz": 0.8670765058825961,
"sampleSize": 138
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Mobile Safari 10.0.0 (iOS 10.3.0)",
"suite": "libs",
"hz": 4265.550460127418,
"success": true,
"fastest": true,
"rme": 0.024960420577611418,
"rhz": 1.028851082801136,
"sampleSize": 142
}
}

View File

@@ -0,0 +1,46 @@
{
"JSON.stringify@native": {
"name": "JSON.stringify@native",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "libs",
"hz": 20880.94942943559,
"success": true,
"fastest": false,
"rme": 0.034431069225489566,
"rhz": 6.0500575134602785,
"sampleSize": 171
},
"fast-stable-stringify@a9f81e8": {
"name": "fast-stable-stringify@a9f81e8",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "libs",
"hz": 3451.36379001014,
"success": true,
"fastest": true,
"rme": 0.030283351076228322,
"rhz": 1,
"sampleSize": 136
},
"json-stable-stringify@1.0.1": {
"name": "json-stable-stringify@1.0.1",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "libs",
"hz": 2888.328126218209,
"success": true,
"fastest": false,
"rme": 0.021217425635208887,
"rhz": 0.8368657440801751,
"sampleSize": 171
},
"faster-stable-stringify@1.0.0": {
"name": "faster-stable-stringify@1.0.0",
"browser": "Safari 10.0.1 (Mac OS X 10.12.1)",
"suite": "libs",
"hz": 3063.3319729455015,
"success": true,
"fastest": false,
"rme": 0.029382106163122576,
"rhz": 0.887571452714494,
"sampleSize": 164
}
}

147
node_modules/fast-stable-stringify/test/escape-long.js generated vendored Normal file
View File

@@ -0,0 +1,147 @@
var assert = require('assert');
var stringTest = "Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b. Quisque id mi. Fusce egestas elit eget lorem. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, quis gravida magna mi a libero. Vivamus euismod mauris. Nam eget dui.";
var stringResult = JSON.stringify(stringTest);
var strReg = /[\u0000-\u001f"\\]/g;
function strReplace(str) {
var code = str.charCodeAt(0);
switch (code) {
case 34: return '\\"';
case 92: return '\\\\';
case 12: return "\\f";
case 10: return "\\n";
case 13: return "\\r";
case 9: return "\\t";
case 8: return "\\b";
default:
if (code > 15) {
return "\\u00" + code.toString(16);
} else {
return "\\u000" + code.toString(16);
}
}
}
function strEscapeIf(str){
var length = str.length;
var buffer = '';
var code = 0;
var i = 0;
for (; i < length; i++) {
code = str.charCodeAt(i);
if (code === 34) buffer += '\\"';
else if (code === 92) buffer += '\\\\';
else if (code > 31) buffer += str[i];
else if (code > 15) buffer += "\\u00" + code.toString(16);
else if (code === 12) buffer += "\\f";
else if (code === 10) buffer += "\\n";
else if (code === 13) buffer += "\\r";
else if (code === 9) buffer += "\\t";
else if (code === 8) buffer += "\\b";
else buffer += "\\u000" + code.toString(16);
}
return buffer;
}
function strEscapeIfReverse(str){
var buffer = '';
var code = 0;
var i = str.length - 1;
for (; i >= 0; i--) {
code = str.charCodeAt(i);
if (code === 34) buffer = '\\"' + buffer;
else if (code === 92) buffer = '\\\\' + buffer;
else if (code > 31) buffer = str[i] + buffer;
else if (code > 15) buffer = "\\u00" + code.toString(16) + buffer;
else if (code === 12) buffer = "\\f" + buffer;
else if (code === 10) buffer = "\\n" + buffer;
else if (code === 13) buffer = "\\r" + buffer;
else if (code === 9) buffer = "\\t" + buffer;
else if (code === 8) buffer = "\\b" + buffer;
else buffer = "\\u000" + code.toString(16) + buffer;
}
return buffer;
}
var escape31 = {
'31': "\\u001f",
'30': "\\u001e",
'29': "\\u001d",
'28': "\\u001c",
'27': "\\u001b",
'26': "\\u001a",
'25': "\\u0019",
'24': "\\u0018",
'23': "\\u0017",
'22': "\\u0016",
'21': "\\u0015",
'20': "\\u0014",
'19': "\\u0013",
'18': "\\u0012",
'17': "\\u0011",
'16': "\\u0010",
'15': "\\u000f",
'14': "\\u000e",
'13': "\\r",
'12': "\\f",
'11': "\\u000b",
'10': "\\n",
'9': "\\t",
'8': "\\b",
'7': "\\u0007",
'6': "\\u0006",
'5': "\\u0005",
'4': "\\u0004",
'3': "\\u0003",
'2': "\\u0002",
'1': "\\u0001",
'0': "\\u0000"
};
function stringEscapeObj(str) {
var i = 0;
var max = str.length;
var buffer = '';
var code = 0;
for (; i < max; i++) {
code = str.charCodeAt(i);
if (code <= 31) buffer += escape31[code];
else if (code === 34) buffer += '\\"';
else if (code === 92) buffer += '\\\\';
else buffer += str[i];
}
return buffer;
}
suite("escape-long", function() {
var minSamples = 120;
benchmark("reg", function() {
assert.equal('"'+stringTest.replace(strReg, strReplace)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("fn if", function() {
assert.equal('"'+strEscapeIf(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("fn if reverse", function() {
assert.equal('"'+strEscapeIfReverse(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("escape31", function() {
assert.equal('"'+stringEscapeObj(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("native", function() {
assert.equal(JSON.stringify(stringTest), stringResult);
}, { minSamples: minSamples })
});

147
node_modules/fast-stable-stringify/test/escape-short.js generated vendored Normal file
View File

@@ -0,0 +1,147 @@
var assert = require('assert');
var stringTest = "Aa1 Bb2 Cc3 \u0000\u001F\u0020\uFFFF☃\"\\\/\f\n\r\t\b";
var stringResult = JSON.stringify(stringTest);
var strReg = /[\u0000-\u001f"\\]/g;
function strReplace(str) {
var code = str.charCodeAt(0);
switch (code) {
case 34: return '\\"';
case 92: return '\\\\';
case 12: return "\\f";
case 10: return "\\n";
case 13: return "\\r";
case 9: return "\\t";
case 8: return "\\b";
default:
if (code > 15) {
return "\\u00" + code.toString(16);
} else {
return "\\u000" + code.toString(16);
}
}
}
function strEscapeIf(str){
var length = str.length;
var buffer = '';
var code = 0;
var i = 0;
for (; i < length; i++) {
code = str.charCodeAt(i);
if (code === 34) buffer += '\\"';
else if (code === 92) buffer += '\\\\';
else if (code > 31) buffer += str[i];
else if (code > 15) buffer += "\\u00" + code.toString(16);
else if (code === 12) buffer += "\\f";
else if (code === 10) buffer += "\\n";
else if (code === 13) buffer += "\\r";
else if (code === 9) buffer += "\\t";
else if (code === 8) buffer += "\\b";
else buffer += "\\u000" + code.toString(16);
}
return buffer;
}
function strEscapeIfReverse(str){
var buffer = '';
var code = 0;
var i = str.length - 1;
for (; i >= 0; i--) {
code = str.charCodeAt(i);
if (code === 34) buffer = '\\"' + buffer;
else if (code === 92) buffer = '\\\\' + buffer;
else if (code > 31) buffer = str[i] + buffer;
else if (code > 15) buffer = "\\u00" + code.toString(16) + buffer;
else if (code === 12) buffer = "\\f" + buffer;
else if (code === 10) buffer = "\\n" + buffer;
else if (code === 13) buffer = "\\r" + buffer;
else if (code === 9) buffer = "\\t" + buffer;
else if (code === 8) buffer = "\\b" + buffer;
else buffer = "\\u000" + code.toString(16) + buffer;
}
return buffer;
}
var escape31 = {
'31': "\\u001f",
'30': "\\u001e",
'29': "\\u001d",
'28': "\\u001c",
'27': "\\u001b",
'26': "\\u001a",
'25': "\\u0019",
'24': "\\u0018",
'23': "\\u0017",
'22': "\\u0016",
'21': "\\u0015",
'20': "\\u0014",
'19': "\\u0013",
'18': "\\u0012",
'17': "\\u0011",
'16': "\\u0010",
'15': "\\u000f",
'14': "\\u000e",
'13': "\\r",
'12': "\\f",
'11': "\\u000b",
'10': "\\n",
'9': "\\t",
'8': "\\b",
'7': "\\u0007",
'6': "\\u0006",
'5': "\\u0005",
'4': "\\u0004",
'3': "\\u0003",
'2': "\\u0002",
'1': "\\u0001",
'0': "\\u0000"
};
function stringEscapeObj(str) {
var i = 0;
var max = str.length;
var buffer = '';
var code = 0;
for (; i < max; i++) {
code = str.charCodeAt(i);
if (code <= 31) buffer += escape31[code];
else if (code === 34) buffer += '\\"';
else if (code === 92) buffer += '\\\\';
else buffer += str[i];
}
return buffer;
}
suite("escape-short", function() {
var minSamples = 120;
benchmark("reg", function() {
assert.equal('"'+stringTest.replace(strReg, strReplace)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("fn if", function() {
assert.equal('"'+strEscapeIf(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("fn if reverse", function() {
assert.equal('"'+strEscapeIfReverse(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("escape31", function() {
assert.equal('"'+stringEscapeObj(stringTest)+'"', stringResult);
}, { minSamples: minSamples });
benchmark("native", function() {
assert.equal(JSON.stringify(stringTest), stringResult);
}, { minSamples: minSamples })
});

6
node_modules/fast-stable-stringify/test/index.js generated vendored Normal file
View File

@@ -0,0 +1,6 @@
require('./libs');
//require('./escape-short');
//require('./escape-long');
//require('./itar-short');
//require('./itar-long');
//require('./iter');

52
node_modules/fast-stable-stringify/test/itar-long.js generated vendored Normal file
View File

@@ -0,0 +1,52 @@
var assert = require('assert');
var arrTest = [];
var arrExpected;
for (var i = 0; i < 100; i++) { arrTest[i] = i; }
arrExpected = JSON.stringify(arrTest);
var arrReuse = [];
suite('itar-long', function() {
var minSamples = 160;
benchmark("for + if", function() {
var val = arrTest.slice();
var str = '[';
var max = val.length - 1;
var i;
for (i = 0; i < max; i++) {
str += JSON.stringify(val[i]) + ',';
}
if (max > -1) {
str += JSON.stringify(val[i]);
}
assert.equal(str + ']', arrExpected);
}, { minSamples: minSamples });
benchmark("while + if", function() {
var val = arrTest.slice();
var str = '[';
var max = val.length - 1;
var i = 0;
while (i < max) {
str += JSON.stringify(val[i++]) + ',';
}
if (max > -1) {
str += JSON.stringify(val[i]);
}
assert.equal(str + ']', arrExpected);
}, { minSamples: minSamples });
benchmark("array join", function() {
arrReuse.length = 0;
var val = arrTest.slice();
var max = val.length;
var i;
for (i = 0; i < max; i++) {
arrReuse[i] = JSON.stringify(val[i]);
}
assert.equal('[' + arrReuse.join(',') + ']', arrExpected);
}, { minSamples: minSamples });
});

52
node_modules/fast-stable-stringify/test/itar-short.js generated vendored Normal file
View File

@@ -0,0 +1,52 @@
var assert = require('assert');
var arrTest = [];
var arrExpected;
for (var i = 0; i < 10; i++) { arrTest[i] = i; }
arrExpected = JSON.stringify(arrTest);
var arrReuse = [];
suite('itar-short', function() {
var minSamples = 160;
benchmark("for + if", function() {
var val = arrTest.slice();
var str = '[';
var max = val.length - 1;
var i;
for (i = 0; i < max; i++) {
str += JSON.stringify(val[i]) + ',';
}
if (max > -1) {
str += JSON.stringify(val[i]);
}
assert.equal(str + ']', arrExpected);
}, { minSamples: minSamples });
benchmark("while + if", function() {
var val = arrTest.slice();
var str = '[';
var max = val.length - 1;
var i = 0;
while (i < max) {
str += JSON.stringify(val[i++]) + ',';
}
if (max > -1) {
str += JSON.stringify(val[i]);
}
assert.equal(str + ']', arrExpected);
}, { minSamples: minSamples });
benchmark("array join", function() {
arrReuse.length = 0;
var val = arrTest.slice();
var max = val.length;
var i;
for (i = 0; i < max; i++) {
arrReuse[i] = JSON.stringify(val[i]);
}
assert.equal('[' + arrReuse.join(',') + ']', arrExpected);
}, { minSamples: minSamples });
});

84
node_modules/fast-stable-stringify/test/iter.js generated vendored Normal file
View File

@@ -0,0 +1,84 @@
var assert = require('assert');
var stringify = require('json-stable-stringify');
var objectTest = {};
for (var i = 35; i < 91; i++) {
objectTest[String.fromCharCode(i)] = i;
}
var objectExpected = stringify(objectTest);
var names = [];
var values = [];
var objKeys = Object.keys || function(obj) {
var keys = [];
for (var name in obj) {
if (obj[name] !== undefined) {
keys.push(name);
}
}
return keys;
};
suite('iter', function() {
var minSamples = 120;
benchmark('keys-while', function() {
// only object is left
var val = objectTest;
var key;
var keys = objKeys(val).sort();
var max = keys.length;
var str = "";
var i = 0;
while (i < max) {
key = keys[i++];
if (val[key] !== undefined) {
if (str) {
str += ',';
}
str += '"' + key + '":' + val[key];
}
}
assert.equal('{' + str + '}', objectExpected);
}, { minSamples: minSamples });
benchmark('keys-for', function() {
// only object is left
var val = objectTest;
var key;
var keys = objKeys(val).sort();
var max = keys.length;
var str = "";
var i = 0;
for (; i < max; i++) {
key = keys[i];
if (val[key] !== undefined) {
if (str) {
str += ',';
}
str += '"' + key + '":' + val[key];
}
}
assert.equal('{' + str + '}', objectExpected);
}, { minSamples: minSamples });
benchmark('incr-for', function() {
names.length = 0;
values.length = 0;
var val = objectTest;
var name;
var i;
var max = -1;
for (name in val) {
i = max;
while (names[i] > name) i--;
names.splice(i + 1, 0, name);
values.splice(i + 1, 0, '"' + name + '":' + JSON.stringify(val[name]));
max++;
}
assert.equal('{' + values.join(',') + '}', objectExpected);
}, { minSamples: minSamples });
});

57
node_modules/fast-stable-stringify/test/libs.js generated vendored Normal file
View File

@@ -0,0 +1,57 @@
var assert = require("assert");
var indexStringify = require('../index');
var jsonStableStringify = require('json-stable-stringify');
var fasterStableStringify = require('faster-stable-stringify');
var validateLibOutput = require('./validate');
var data = require("../fixtures/index").input;
var dataLength = JSON.stringify(data).length;
suite("libs", function() {
var minSamples = 120;
// This needs to be true before anything else
console.log('Checking index validity...');
validateLibOutput(indexStringify);
console.log('Checking index validity success');
benchmark('native', function () {
var result = JSON.stringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
benchmark('index', function () {
var result = indexStringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
benchmark('json-stable-stringify', function () {
var result = jsonStableStringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
benchmark('faster-stable-stringify', function () {
var result = fasterStableStringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
}, {
onComplete: function() {
var namesFastest = this
.filter(function(bench) {
return bench.name !== 'native';
})
.filter('fastest')
.map('name');
assert.notEqual(namesFastest.indexOf('index'), -1, "index should be among the fastest");
}
});

43
node_modules/fast-stable-stringify/test/travis.js generated vendored Normal file
View File

@@ -0,0 +1,43 @@
var assert = require("assert");
var indexStringify = require('../index');
var jsonStableStringify = require('json-stable-stringify');
var validateLibOutput = require('./validate');
var data = require("../fixtures/index").input;
var dataLength = JSON.stringify(data).length;
suite("libs", function() {
var minSamples = 120;
// This needs to be true before anything else
console.log('Checking index validity...');
validateLibOutput(indexStringify);
console.log('Checking index validity success');
benchmark('index', function () {
var result = indexStringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
benchmark('json-stable-stringify', function () {
var result = jsonStableStringify(data);
assert.equal(result.length, dataLength);
}, {
minSamples: minSamples
});
}, {
onComplete: function() {
var namesFastest = this
.filter(function(bench) {
return bench.name !== 'native';
})
.filter('fastest')
.map('name');
assert.notEqual(namesFastest.indexOf('index'), -1, "index should be among the fastest");
}
});

24
node_modules/fast-stable-stringify/test/validate.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
var assert = require('assert');
var eachRecursive = require('../util/eachRecursive');
var jsonStableStringify = require('json-stable-stringify');
var input = require('../fixtures').input;
/**
* Assumes json-stable-stringify is always right.
* @param {function(*):string} stringify
*/
module.exports = function validateLibOutput(stringify) {
var numComparisons = 0;
eachRecursive(input, function (val, path) {
var mine = stringify(val);
var expectedVal = jsonStableStringify(val);
if (mine !== expectedVal) {
console.log('expected', expectedVal);
console.log('actual', mine);
global.value = val;
}
assert.equal(mine, expectedVal);
numComparisons++;
});
assert.equal(numComparisons, 569);
};

View File

@@ -0,0 +1,9 @@
module.exports = function eachRecursive(obj, fn, path) {
path = path ? path + '.' : '';
for (var name in obj) {
if (typeof obj === "object" && obj !== null) {
eachRecursive(obj[name], fn, path + name);
}
fn(obj[name], path + name);
}
};

View File

@@ -0,0 +1,21 @@
var cp = require('child_process');
/**
* Returns the version string of the current working directory.
* It is the git short hash of the last commit that changed filePath
* If there are uncommitted changes to this filePath, this method will throw.
* @returns {string}
*/
module.exports = function getGitHashSync(filePath) {
var commandResult;
try {
cp.execSync('git diff-index --quiet HEAD -- ' + filePath, { encoding: 'utf-8' });
} catch (err) {
//throw new Error('Cannot resolve git hash of file ' + filePath + ': There are uncommitted changes to file ' + filePath);
}
commandResult = cp.execSync('git log -n1 --pretty=format:%h -- ' + filePath, { encoding: 'utf-8' });
if (!commandResult) {
throw new Error("Could not get hash: file " + filePath + " does not exist");
}
return commandResult;
};

View File

@@ -0,0 +1,22 @@
var getGitHashSync = require('./get-git-hash-sync');
var path = require('path');
module.exports = function(libName) {
var pkg;
var version;
if (libName == 'index') {
pkg = require('../package.json');
version = getGitHashSync(require.resolve('../index'));
} else if (libName == 'native') {
pkg = { name: 'JSON.stringify', url: 'n/a' };
version = 'native';
} else {
pkg = require(libName + '/package.json');
version = pkg.version;
}
return {
name: pkg.name,
url: pkg.url,
version: version
}
};

47
node_modules/fast-stable-stringify/util/object-path.js generated vendored Normal file
View File

@@ -0,0 +1,47 @@
/**
* Returns the element within root under the path given by pathSegments.
* @param {Object} root
* @param {string[]} pathSegments
* @param {boolean} [appendIfMissing=false] - all objects are created if they do not exist
* @returns {Object} - the object under the path. If appendIsMissing is false and the path does not exist, returns null
*/
module.exports.getObject = function getObject(root, pathSegments, appendIfMissing) {
var target = root;
var pathSeg;
var i;
for (i = 0; i < pathSegments.length; i++) {
pathSeg = pathSegments[i];
if (!target.hasOwnProperty(pathSeg)) {
if (appendIfMissing) {
target[pathSeg] = {};
} else {
return null;
}
}
target = target[pathSeg];
}
return target;
};
/**
* Writes the object to the path in root. Overwrites if an object exists.
* Note: root is edited in place!
* @param {Object} root
* @param {string[]} pathSegments
* @param {Object} obj
*/
module.exports.setObject = function setObject(root, pathSegments, obj) {
var target = root;
var pathSeg;
var i;
var max = pathSegments.length;
for (i = 0; i < max; i++) {
pathSeg = pathSegments[i];
if (i === max - 1) {
target[pathSeg] = obj;
} else if (!target.hasOwnProperty(pathSeg)) {
target[pathSeg] = {};
}
target = target[pathSeg];
}
};

View File

@@ -0,0 +1,8 @@
var myStringify = require('../index');
var data = require("../fixtures/index").input;
var result = 0;
for (var i = 0; i < 1000; i++) {
result += myStringify(data).length;
}
console.log('Finished running (cumulative string length: ' + result + ")");

2
node_modules/fast-stable-stringify/v8-profile/run.sh generated vendored Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
time node --allow-natives-syntax --trace_opt --trace_deopt --code_comments --print_code bench.js | less

2
node_modules/fast-stable-stringify/zuul-local.sh generated vendored Executable file
View File

@@ -0,0 +1,2 @@
#zuul --local 8080 --no-coverage -- test/index.js
zuul --local 8080 --no-coverage -- test/fastest.js