es-abstract
Advanced tools
Comparing version 1.10.0 to 1.11.0
@@ -161,10 +161,10 @@ { | ||
"requireSpaceBeforeObjectValues": true, | ||
"requireSpaceBeforeDestructuredValues": true, | ||
"requireSpaceBeforeObjectValues": true, | ||
"requireSpaceBeforeDestructuredValues": true, | ||
"disallowSpacesInsideTemplateStringPlaceholders": true, | ||
"disallowArrayDestructuringReturn": false, | ||
"disallowArrayDestructuringReturn": false, | ||
"requireNewlineBeforeSingleStatementsInIf": false, | ||
"requireNewlineBeforeSingleStatementsInIf": false, | ||
@@ -171,0 +171,0 @@ "disallowUnusedVariables": true, |
@@ -1,3 +0,9 @@ | ||
1.9.0 / 2017-11-24 | ||
1.11.0 / 2018-03-21 | ||
================= | ||
* [New] `ES2015+`: add iterator abstract ops | ||
* [Dev Deps] update `eslint`, `nsp`, `object.assign`, `semver`, `tape` | ||
* [Tests] up to `node` `v9.8`, `v8.10`, `v6.13` | ||
1.10.0 / 2017-11-24 | ||
================= | ||
* [New] ES2015+: `AdvanceStringIndex` | ||
@@ -4,0 +10,0 @@ * [Dev Deps] update `eslint`, `nsp` |
@@ -8,2 +8,3 @@ 'use strict'; | ||
var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; | ||
var SymbolIterator = hasSymbols ? Symbol.iterator : null; | ||
@@ -432,2 +433,91 @@ var $isNaN = require('./helpers/isNaN'); | ||
// http://ecma-international.org/ecma-262/6.0/#sec-getiterator | ||
GetIterator: function GetIterator(obj, method) { | ||
if (!hasSymbols) { | ||
throw new SyntaxError('ES.GetIterator depends on native iterator support.'); | ||
} | ||
var actualMethod = method; | ||
if (arguments.length < 2) { | ||
actualMethod = this.GetMethod(obj, SymbolIterator); | ||
} | ||
var iterator = this.Call(actualMethod, obj); | ||
if (this.Type(iterator) !== 'Object') { | ||
throw new TypeError('iterator must return an object'); | ||
} | ||
return iterator; | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-iteratornext | ||
IteratorNext: function IteratorNext(iterator, value) { | ||
var result = this.Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); | ||
if (this.Type(result) !== 'Object') { | ||
throw new TypeError('iterator next must return an object'); | ||
} | ||
return result; | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete | ||
IteratorComplete: function IteratorComplete(iterResult) { | ||
if (this.Type(iterResult) !== 'Object') { | ||
throw new TypeError('Assertion failed: Type(iterResult) is not Object'); | ||
} | ||
return this.ToBoolean(this.Get(iterResult, 'done')); | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue | ||
IteratorValue: function IteratorValue(iterResult) { | ||
if (this.Type(iterResult) !== 'Object') { | ||
throw new TypeError('Assertion failed: Type(iterResult) is not Object'); | ||
} | ||
return this.Get(iterResult, 'value'); | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-iteratorstep | ||
IteratorStep: function IteratorStep(iterator) { | ||
var result = this.IteratorNext(iterator); | ||
var done = this.IteratorComplete(result); | ||
return done === true ? false : result; | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-iteratorclose | ||
IteratorClose: function IteratorClose(iterator, completion) { | ||
if (this.Type(iterator) !== 'Object') { | ||
throw new TypeError('Assertion failed: Type(iterator) is not Object'); | ||
} | ||
if (!this.IsCallable(completion)) { | ||
throw new TypeError('Assertion failed: completion is not a thunk for a Completion Record'); | ||
} | ||
var completionThunk = completion; | ||
var iteratorReturn = this.GetMethod(iterator, 'return'); | ||
if (typeof iteratorReturn === 'undefined') { | ||
return completionThunk(); | ||
} | ||
var completionRecord; | ||
try { | ||
var innerResult = this.Call(iteratorReturn, iterator, []); | ||
} catch (e) { | ||
// if we hit here, then "e" is the innerResult completion that needs re-throwing | ||
// if the completion is of type "throw", this will throw. | ||
completionRecord = completionThunk(); | ||
completionThunk = null; // ensure it's not called twice. | ||
// if not, then return the innerResult completion | ||
throw e; | ||
} | ||
completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does | ||
completionThunk = null; // ensure it's not called twice. | ||
if (this.Type(innerResult) !== 'Object') { | ||
throw new TypeError('iterator .return must return an object'); | ||
} | ||
return completionRecord; | ||
}, | ||
// http://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject | ||
@@ -434,0 +524,0 @@ CreateIterResultObject: function CreateIterResultObject(value, done) { |
{ | ||
"name": "es-abstract", | ||
"version": "1.10.0", | ||
"version": "1.11.0", | ||
"author": { | ||
@@ -58,13 +58,13 @@ "name": "Jordan Harband", | ||
"editorconfig-tools": "^0.1.1", | ||
"eslint": "^4.11.0", | ||
"eslint": "^4.19.0", | ||
"foreach": "^2.0.5", | ||
"jscs": "^3.0.7", | ||
"nsp": "^3.1.0", | ||
"nsp": "^3.2.1", | ||
"nyc": "^10.3.2", | ||
"object-is": "^1.0.1", | ||
"object.assign": "^4.0.4", | ||
"object.assign": "^4.1.0", | ||
"replace": "^0.3.0", | ||
"safe-publish-latest": "^1.1.1", | ||
"semver": "^5.4.1", | ||
"tape": "^4.8.0" | ||
"semver": "^5.5.0", | ||
"tape": "^4.9.0" | ||
}, | ||
@@ -71,0 +71,0 @@ "testling": { |
@@ -8,5 +8,5 @@ 'use strict'; | ||
// jscs:disable | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnNames', 'GetIterator', 'IteratorNext', 'IteratorComplete', 'IteratorValue', 'IteratorStep', 'IteratorClose', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnNames', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
// jscs:enable | ||
require('./tests').es2015(ES, ops, expectedMissing); |
@@ -8,5 +8,5 @@ 'use strict'; | ||
// jscs:disable | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnNames', 'GetIterator', 'IteratorNext', 'IteratorComplete', 'IteratorValue', 'IteratorStep', 'IteratorClose', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnNames', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
// jscs:enable | ||
require('./tests').es2016(ES, ops, expectedMissing); |
@@ -8,5 +8,5 @@ 'use strict'; | ||
// jscs:disable | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnProperties', 'GetIterator', 'IteratorNext', 'IteratorComplete', 'IteratorValue', 'IteratorStep', 'IteratorClose', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
var expectedMissing = ['CreateMethodProperty', 'DefinePropertyOrThrow', 'DeletePropertyOrThrow', 'Construct', 'SetIntegrityLevel', 'TestIntegrityLevel', 'CreateArrayFromList', 'CreateListFromArrayLike', 'OrdinaryHasInstance', 'EnumerableOwnProperties', 'CreateListIterator', 'thisNumberValue', 'thisTimeValue', 'thisStringValue', 'RegExpBuiltinExec', 'IsPromise']; | ||
// jscs:enable | ||
require('./tests').es2017(ES, ops, expectedMissing); |
@@ -1088,2 +1088,14 @@ 'use strict'; | ||
test('GetIterator', { skip: true }); | ||
test('IteratorNext', { skip: true }); | ||
test('IteratorComplete', { skip: true }); | ||
test('IteratorValue', { skip: true }); | ||
test('IteratorStep', { skip: true }); | ||
test('IteratorClose', { skip: true }); | ||
test('CreateIterResultObject', function (t) { | ||
@@ -1090,0 +1102,0 @@ forEach(v.nonBooleans, function (nonBoolean) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
151813
3049