This commit is contained in:
Yamozha
2021-04-02 02:24:13 +03:00
parent c23950b545
commit 7256d79e2c
31493 changed files with 3036630 additions and 0 deletions

View File

@ -0,0 +1,42 @@
'use strict';
var test = require('tape');
var hasSymbols = require('has-symbols')();
var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
var defineProperty = require('./defineProperty');
test('OwnPropertyKeys', function (t) {
t.deepEqual(OwnPropertyKeys({ a: 1, b: 2 }).sort(), ['a', 'b'].sort(), 'returns own string keys');
t.test('Symbols', { skip: !hasSymbols }, function (st) {
var o = { a: 1 };
var sym = Symbol();
o[sym] = 2;
st.deepEqual(OwnPropertyKeys(o), ['a', sym], 'returns own string and symbol keys');
st.end();
});
t.test('non-enumerables', { skip: !defineProperty.oDP }, function (st) {
var o = { a: 1, b: 42, c: NaN };
defineProperty(o, 'b', { enumerable: false, value: 42 });
defineProperty(o, 'c', { enumerable: false, get: function () { return NaN; } });
if (hasSymbols) {
defineProperty(o, 'd', { enumerable: false, value: true });
defineProperty(o, 'e', { enumerable: false, get: function () { return true; } });
}
st.deepEqual(
OwnPropertyKeys(o).sort(),
(hasSymbols ? ['a', 'b', 'c', 'd', 'e'] : ['a', 'b', 'c']).sort(),
'returns non-enumerable own keys, including accessors and symbols if available'
);
st.end();
});
t.end();
});

60
node_modules/es-abstract/test/helpers/assertRecord.js generated vendored Normal file
View File

@ -0,0 +1,60 @@
'use strict';
var forEach = require('foreach');
var debug = require('object-inspect');
var assertRecord = require('../../helpers/assertRecord');
var v = require('es-value-fixtures');
module.exports = function assertRecordTests(ES, test) {
test('Property Descriptor', function (t) {
var record = 'Property Descriptor';
forEach(v.nonUndefinedPrimitives, function (primitive) {
t['throws'](
function () { assertRecord(ES.Type, record, 'arg', primitive); },
TypeError,
debug(primitive) + ' is not a Property Descriptor'
);
});
t['throws'](
function () { assertRecord(ES.Type, record, 'arg', { invalid: true }); },
TypeError,
'invalid keys not allowed on a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES.Type, record, 'arg', {}); },
'empty object is an incomplete Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES.Type, record, 'arg', v.accessorDescriptor()); },
'accessor descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES.Type, record, 'arg', v.mutatorDescriptor()); },
'mutator descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES.Type, record, 'arg', v.dataDescriptor()); },
'data descriptor is a Property Descriptor'
);
t.doesNotThrow(
function () { assertRecord(ES.Type, record, 'arg', v.genericDescriptor()); },
'generic descriptor is a Property Descriptor'
);
t['throws'](
function () { assertRecord(ES.Type, record, 'arg', v.bothDescriptor()); },
TypeError,
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
);
t.end();
});
};

View File

@ -0,0 +1,23 @@
'use strict';
var bind = require('function-bind');
var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
module.exports = function createBoundESNamespace(ES) {
var keys = OwnPropertyKeys(ES);
var result = {};
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var prop = ES[key];
if (typeof prop === 'function') {
prop = bind.call(prop, undefined);
} else if (prop && typeof prop === 'object') {
prop = createBoundESNamespace(prop);
}
result[key] = prop;
}
return result;
};

View File

@ -0,0 +1,27 @@
'use strict';
var GetIntrinsic = require('../../GetIntrinsic');
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
if ($defineProperty) {
try {
$defineProperty({}, 'a', { value: 1 });
} catch (e) {
// IE 8 has a broken defineProperty
$defineProperty = null;
}
}
module.exports = function defineProperty(O, P, Desc) {
if ($defineProperty) {
return $defineProperty(O, P, Desc);
}
if ((Desc.enumerable && Desc.configurable && Desc.writable) || !(P in O)) {
O[P] = Desc.value; // eslint-disable-line no-param-reassign
return O;
}
throw new SyntaxError('helper does not yet support this configuration');
};
module.exports.oDP = $defineProperty;

View File

@ -0,0 +1,67 @@
'use strict';
var test = require('tape');
var debug = require('object-inspect');
var forEach = require('foreach');
var has = require('has');
var v = require('es-value-fixtures');
var getSymbolDescription = require('../../helpers/getSymbolDescription');
var getInferredName = require('../../helpers/getInferredName');
test('getSymbolDescription', function (t) {
t.test('no symbols', { skip: v.hasSymbols }, function (st) {
st['throws'](
getSymbolDescription,
SyntaxError,
'requires Symbol support'
);
st.end();
});
forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
t['throws'](
function () { getSymbolDescription(nonSymbol); },
v.hasSymbols ? TypeError : SyntaxError,
debug(nonSymbol) + ' is not a Symbol'
);
});
t.test('with symbols', { skip: !v.hasSymbols }, function (st) {
forEach(
[
[Symbol(), undefined],
[Symbol(undefined), undefined],
[Symbol(null), 'null'],
[Symbol.iterator, 'Symbol.iterator'],
[Symbol('foo'), 'foo']
],
function (pair) {
var sym = pair[0];
var desc = pair[1];
st.equal(getSymbolDescription(sym), desc, debug(sym) + ' description is ' + debug(desc));
}
);
st.test('only possible when inference or native `Symbol.prototype.description` is supported', {
skip: !getInferredName && !has(Symbol.prototype, 'description')
}, function (s2t) {
s2t.equal(getSymbolDescription(Symbol('')), '', 'Symbol("") description is ""');
s2t.end();
});
st.test('only possible when global symbols are supported', {
skip: !has(Symbol, 'for') || !has(Symbol, 'keyFor')
}, function (s2t) {
// eslint-disable-next-line no-restricted-properties
s2t.equal(getSymbolDescription(Symbol['for']('')), '', 'Symbol.for("") description is ""');
s2t.end();
});
st.end();
});
t.end();
});

6
node_modules/es-abstract/test/helpers/index.js generated vendored Normal file
View File

@ -0,0 +1,6 @@
'use strict';
require('./getSymbolDescription');
require('./isByteValue');
require('./isCodePoint');
require('./OwnPropertyKeys');

28
node_modules/es-abstract/test/helpers/isByteValue.js generated vendored Normal file
View File

@ -0,0 +1,28 @@
'use strict';
var test = require('tape');
var forEach = require('foreach');
var debug = require('object-inspect');
var isByteValue = require('../../helpers/isByteValue');
var v = require('es-value-fixtures');
test('isByteValue', function (t) {
forEach([].concat(
v.notNonNegativeIntegers,
-1,
-42,
-Infinity,
Infinity,
v.nonIntegerNumbers
), function (nonByteValue) {
t.equal(isByteValue(nonByteValue), false, debug(nonByteValue) + ' is not a byte value');
});
for (var i = 0; i <= 255; i += 1) {
t.equal(isByteValue(i), true, i + ' is a byte value');
}
t.equal(isByteValue(256), false, '256 is not a byte value');
t.end();
});

20
node_modules/es-abstract/test/helpers/isCodePoint.js generated vendored Normal file
View File

@ -0,0 +1,20 @@
'use strict';
var test = require('tape');
var forEach = require('foreach');
var debug = require('object-inspect');
var isCodePoint = require('../../helpers/isCodePoint');
var v = require('es-value-fixtures');
test('isCodePoint', function (t) {
forEach(v.notNonNegativeIntegers.concat(0x10FFFF + 1), function (nonCodePoints) {
t.equal(isCodePoint(nonCodePoints), false, debug(nonCodePoints) + ' is not a Code Point');
});
forEach([-0, 0, 1, 7, 42, 0x10FFFF], function (codePoint) {
t.equal(isCodePoint(codePoint), true, debug(codePoint) + ' is a Code Point');
});
t.end();
});

View File

@ -0,0 +1,27 @@
'use strict';
var path = require('path');
var fs = require('fs');
var forEach = require('foreach');
var keys = require('object-keys');
module.exports = function runManifestTest(test, ES, edition) {
test('ES' + edition + ' manifest', { skip: !fs.readdirSync }, function (t) {
var files = fs.readdirSync(path.join(__dirname, '../../' + edition), 'utf-8');
var map = {
AbstractEqualityComparison: 'Abstract Equality Comparison',
AbstractRelationalComparison: 'Abstract Relational Comparison',
StrictEqualityComparison: 'Strict Equality Comparison'
};
forEach(files, function (file) {
var name = path.basename(file, path.extname(file));
var actual = ES[map[name] || name];
var expected = require(path.join(__dirname, '../../' + edition + '/', file)); // eslint-disable-line global-require
t.equal(actual, expected, 'ES["' + name + '"] === ' + file);
});
var actualCount = keys(ES).length;
t.equal(actualCount, files.length, 'expected ' + files.length + ' files, got ' + actualCount);
t.end();
});
};